((byte) 128 & (byte) 128) == 128

((byte) 128 & (byte) 128) == 128 ? (byte) 1 : (byte) 0;这个是bug修复前的,
((byte) 128 & (byte) 128) == (byte)128 ? (byte) 1 : (byte) 0;,这个是bug修复后的。

3个回答

不知道题主想问什么,尴尬。答案的话显然就是1了。下面仔细解释下自己对这行代码的理解:
首先,计算机系统中数值编码方式一律为补码。
整型的128补码为0000 0000 0000 0000 0000 0000 1000 0000,强制类型转换为byte后为补码:1000 0000,表示的是-128.
1000 000&1000 000显然等于1000 000,也就是(byte)128,所以答案显然是1.
public class my {
public static void main(String[] args){
byte i = (byte)128;

    System.out.println(i);

    System.out.println(((byte) 128 & (byte) 128) == (byte)128 ? (byte) 1 : (byte) 0);
}

}


m0_37608723
m0_37608723 (byte)128 int向下转型为byte,4字节转为1字节,丢失精度,对应二进制为10000000,所以(byte)128对应的十进制是-128 (int)(byte)128 将(byte)128向上转型为int,由于为负数,所以高位补1,其实byte转型为int不会发生数值的变化,只是内存中的字节数会发生变化。
一年多之前 回复
m0_37608723
m0_37608723 我的理解是:对于byte转型为int时,正数直接高位补0,数值不变;对于负数,高位补1。此例中,(byte)128对应10000000,表示-128,然后将(byte)-128转型为int时,由于是负数,高位补1,即为24个1+100000000,这个4b的二进制数为补码,转换成十进制为-128。不知道这么理解对不对。
一年多之前 回复
m0_37608723
m0_37608723 我的理解是:对于byte转型为int时,正数直接高位补0,数值不变;对于负数,高位补1。此例中,(byte)128将128
一年多之前 回复
m0_37608723
m0_37608723 其实我知道运行结果,您说的我也知道。我主要想问的是((byte) 128 & (byte) 128) == 128的运行过程。这行代码等价于(byte) 128 == (int)128,然后byte128与int进行运算时会强制转型为int,我主要是想知道(byte)128(二进制码10000000)强制转型为int的过程及结果。感谢
一年多之前 回复

((byte) 128 & (byte) 128) == 128具体发生了什么啊?我的理解是:等号左边的与运算是结果是 “10000000",byte类型,然后进行equality运算。这个equality
运算是byte==int,这期间具体发生了什么?

对于有符号的数,128溢出了。
(byte)128 = 0

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
((byte) 128 & (byte) 128) == 128
((byte) 128 & (byte) 128) == 128 ? (byte) 1 : (byte) 0;这个是bug修复前的, ((byte) 128 & (byte) 128) == (byte)128 ? (byte) 1 : (byte) 0;,这个是bug修复后的。
bety的数据溢出问题!
byte128等于-128.byte值在-128到127之间,那么130等于-126,那么-130等于多少
关于java中byte 超出表示范围了
String s = Integer.toHexString(number); byte b = Byte.parseByte(s,16); 但是java中byte的范围不是-128~127吗, 请问怎么表示比如128
python3.6.9版本的编码方式已经是'utf-8'了,为什么仍然会报SyntaxError: 'ascii' codec can't decode byte 0xe4 in position 5: ordinal not in range(128) 的错误?
![图片说明](https://img-ask.csdn.net/upload/201912/25/1577256856_538713.png) 这边显示python3.6.9版本的编码方式已经是'utf-8'了,为什么仍然会报 SyntaxError: 'ascii' codec can't decode byte 0xe4 in position 5: ordinal not in range(128) 的错误?
JAVA INT BYTE 的问题
问1: 1个INT是4个字节,那意思是byte[4] 可以代表一个INT对吗 问2: 如果byte[4]可以代表一个INT,那一个byte是8位可以存储-128-127的数字(第一位是符号位) 那这样的话,INT最大值应该是:01111111011111110111111101111111=2139062143咯 但是用Integer.MAX_VALUE得出2147483647=01111111111111111111111111111111 所以我迷茫了,这个byte第一位是符号位到底怎么解释呀,为啥INT最大值(2147483647)第一位是0呀?
java类型转化之int转换为byte[]
小白想请问一个问题: java中将int转换为byte[]数组时,我参考网上的代码如下: public byte[] int2bytes(int Num){ byte[] bytes = new byte[4]; bytes[0] = (byte)(Num & 0xff); bytes[1] = (byte)((Num >> 8) & 0xff ); bytes[2] = (byte)((Num >> 16) & 0xff); bytes[3] = (byte)((Num >> 24) & 0xff); return bytes; } ``` ``` 我想问的是,之后的0xff的作用到底是什么。 我的疑惑如下: ①网上的说法是:0xff的二进制第一个字节11111111,其他三个字节均是0,按位与之后,将位运算之后的int低8位之外的24位清零,可是int强制转换为byte是只取了最后的低8位吧,那么前面的是不是0是有什么关系呢。如下: 原数据int: 00000000 00101001 00001010 00010110 位运算>>8: 00000000 00000000 00101001 00001010 & 0xff : 00000000 00000000 00000000 00001010 转换byte : 00001010 按照这样的流程,如果不进行& 0xff操作,直接将位运算之后强制转换,结果应该如下: 原数据int: 00000000 00101001 00001010 00010110 位运算>>8: 00000000 00000000 00101001 00001010 转换byte : 00001010 既然网上的代码都是这样写,肯定有其中的道理,那么我的理解错误点在哪里呢? ②我将此段代码,传参-1024调用,并循环输出byte[4]的元素发现返回结果是一样的 有&0xff:0 -4 -1 -1 无&0xff:0 -4 -1 -1 还请指点,非常感谢。 更新:我后来想了下。觉得这应该是从别的语言里面借鉴过来的写法。 在java中byte的取值范围是127~-128,而int为4个byte,那么可能在位运算之后,不进行& 0xff按位与之后可能存在int的第一个字节和第二个字节均不为零的情况,那么此时int的值实际上是超过了byte的取值范围,在别的语言里可能会造成溢出。 但是,我刚试验过了。java中实际上这种转换不会抛出错误,比如直接将280转换成byte,则直接砍掉前面的14位,只取后面8位。
RSA加密字节改变,String与byte转出问题
代码如下,byte[] bb = bbb.getBytes(); 这个地方,数组bb与mi内容不一致了,导致解密失败 很多字节变为了63 请问怎么解决这个问题? try { byte[] tb = ts.getBytes(); //将字符串变为字节数组 byte[] mi = null; for(int i =0;i<tb.length;i+=64){ //因为不支持117字节以上加密,所以进行分段加密 byte[] doFinal=RSATools.encryptByPublicKey(ArrayUtils.subarray(tb,i,i+64),gy); mi = ArrayUtils.addAll(mi, doFinal); } System.out.println("RSA加密后------------"+new String(mi)); String aaa = encryptBASE64(mi); System.out.println("\n加密后----" + aaa); String bbb = new String(decryptBASE64(aaa)); System.out.println("\n"+bbb); byte[] bb = bbb.getBytes(); byte[] ming = null; for(int i=0;i<bb.length;i+=128){ byte[] doFinal=RSATools.decryptByPrivateKey(ArrayUtils.subarray(bb, i, i+128), sy); ming = ArrayUtils.addAll(ming, doFinal); } System.out.println("解密后----" + new String(ming)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } ``` ```
java中16进制转byte的问题
一个byte用8位表示其中第一位为符号位, 因此最多表示-128-127。 我要将16进制转成byte,如果小于0X7F可以用一个字节表示. 但是大于0X7F用一个字节会导致溢出。 我想知道两个16进制位到底是用几个字节表示。 java是如果保存16进制的数据的。
wav文件头44byte 出错!
wav格式文件,其文件头如下所示: byte[] header = { 0x52, 0x49, 0x46, 0x46, 0x24, 0x71, 0x02,0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6D, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x40, 0x1F, 0x00, 0x00, **(byte)0x80, 0x3E, 0x00,0x00** , 0x02, 0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x71,0x02, 0x00}; 其中加粗部分(地址1CH-1FH),是设置每秒播放字节数的,0x80只能强制转换为byte类型,使用ultraedit打开生成的wav文件查看头部,没有0x80,而是变成了别的字符,最后头部是这样的: 52, 49, 46, 46, 24, 71, 02,00, 57, 41, 56, 45, 66, 6D, 74, 20, 10, 00, 00, 00, 01, 00, 01, 00, 40, 1F, 00, 00, **EF,BF,BD,3E ,00,00** ,02, 00, 10, 00, 64, 61, 74, 61, 00, 71,02, 00 这里没办法贴图啊?大神我qq2414057159 虚心求教,请加我,搞了两周的语音识别,再做不出来要死定了! 可是我在网上看到的有人是可以在头部写入0x88的为啥我0x80都不可以,我知道byte只能表示-128~127的数据,可是我必须要写入0x80啊。具体问题描述见http://bbs.csdn.net/topics/390865150
The time of a day 的算法实现
Problem Description There are no days and nights on byte island, so the residents here can hardly determine the length of a single day. Fortunately, they have invented a clock with several pointers. They have N pointers which can move round the clock. Every pointer ticks once per second, and the i-th pointer move to the starting position after i times of ticks. The wise of the byte island decide to define a day as the time interval between the initial time and the first time when all the pointers moves to the position exactly the same as the initial time. The wise of the island decide to choose some of the N pointers to make the length of the day greater or equal to M. They want to know how many different ways there are to make it possible. Input There are a lot of test cases. The first line of input contains exactly one integer, indicating the number of test cases. For each test cases, there are only one line contains two integers N and M, indicating the number of pointers and the lower bound for seconds of a day M. (1 <= N <= 40, 1 <= M <= 263-1) Output For each test case, output a single integer denoting the number of ways. Sample Input 3 5 5 10 1 10 128 Sample Output Case #1: 22 Case #2: 1023 Case #3: 586
java.util.ArrayList cannot be cast to byte[]
类型不能强制转换,但是我这个并没看出来哪里需要转换,请大家帮忙看一看哪里出问题了。 我在一个activity将bitmap转为byte[]类型,装入List里面,通过gson把这个list变为json类型,再传到另一个activity,解析json数据再转为List。 代码比较长,我就不全列出了。就用log来提供内容吧。 private List<byte[]> mBitmaps = new ArrayList<byte[]>(); ...... Log.i(TAG, "getView: "+mBitmaps.get(i)); Log.i(TAG, "getView: "+mBitmaps); Log.i(TAG, "getView: "+mBitmaps.getClass()); if (mBitmaps != null) { Glide.with(mContext).load(mBitmaps.get(i)).into(viewHolder.imageView); } 打印的内容就是 getview:[... , ...] getview:[[... , ...] getView: class java.util.ArrayList 报错就是在Glide那一行, ...就省略了就是-128到128一堆数字。 如果还需要什么信息就说一下。
AVR单片机 驱动SS1306 SPI模式点不亮屏幕
网上到处都是51 和stm32的例程,AVR的完全找不到,移植了51的例程, 但是就是点不亮oled。主芯片是atmega128 走的是spi模式。程序代码如下,不用库单独画点都完全没反应,实在找不出是啥子原因。跪求解答 ``` #include <iom128.h> #include <delay.h> #include <oledfont.h> //8位LED灯控制端口定义,连接在PE口,灌电流模式 #define LED PORTE //PE口接8个LED灯 #define LEDDDR DDRE //PE口方向寄存器 #define LED4_0 PORTE &= ~(1<<PE3) //D4亮 #define LED4_1 PORTE |= (1<<PE3) //D4灭 #define u8 unsigned char #define u32 unsigned int #define OLED_CMD 0 //写命令 #define OLED_DATA 1 //写数据 #define OLED_RST_Clr() PORTE &= ~(1 << PE6) #define OLED_RST_Set() PORTE |= (1 << PE6) #define OLED_DC_Clr() PORTE &= ~(1 << PE5) #define OLED_DC_Set() PORTE |= (1 << PE5) #define OLED_SCLK_Clr() PORTB &= ~(1 << PB1) #define OLED_SCLK_Set() PORTB |= (1 << PB1) #define OLED_SDIN_Clr() PORTB &= ~(1 << PB2) #define OLED_SDIN_Set() PORTB |= (1 << PB2) #define SIZE 16 #define XLevelL 0x02 #define XLevelH 0x10 #define Max_Column 128 #define Max_Row 64 #define Brightness 0xFF #define X_WIDTH 128 #define Y_WIDTH 64 u8 OLED_GRAM[8][128]; //8页 128列 void OLED_WR_Byte(u8 dat,u8 cmd); void OLED_Set_Pos(unsigned char x, unsigned char y) ; void OLED_Set_Pos(unsigned char x, unsigned char y) ; void OLED_Display_On(void); void OLED_Display_Off(void); void OLED_Clear(void); void OLED_DrawPoint(u8 x,u8 y,u8 t); void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot); void OLED_ShowChar(u8 x,u8 y,u8 chr); void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size2); void OLED_ShowString(u8 x,u8 y, u8 *p); void OLED_Set_Pos(unsigned char x, unsigned char y); void OLED_ShowCHinese(u8 x,u8 y,u8 no); void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]); void OLED_Init(void); void system_init(); void Print_Point(u8 x, u8 y,u8 checkedState); void system_init() { LEDDDR=0xff; //设置PE口为输出 LED=0xff; //初始状态为高,关闭8个LED灯 } //向SSD1306写入一个字节单位 //dat:要写入的数据/命令 //cmd:数据/命令标志 0命令 1数据 void OLED_WR_Byte(u8 dat,u8 cmd) { u8 i; if(cmd) OLED_DC_Set(); else OLED_DC_Clr(); //OLED_CS_Clr(); for(i=0;i<8;i++) { OLED_SCLK_Clr(); if(dat&0x80) { OLED_SDIN_Set(); } else OLED_SDIN_Clr(); OLED_SCLK_Set(); dat<<=1; } //OLED_CS_Set(); OLED_DC_Set(); } void OLED_Set_Pos(unsigned char x, unsigned char y) //坐标位置 { OLED_WR_Byte(0xb0+y,OLED_CMD);//页 OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);//高四位 OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD); //低四位 } //开启OLED显示 void OLED_Display_On(void) { OLED_WR_Byte(0X8D,OLED_CMD); //电荷泵设置 OLED_WR_Byte(0X14,OLED_CMD); //打开电荷泵 OLED_WR_Byte(0XAF,OLED_CMD); //开启显示 } //关闭OLED显示 void OLED_Display_Off(void) { OLED_WR_Byte(0X8D,OLED_CMD); OLED_WR_Byte(0X10,OLED_CMD);//关 A2 OLED_WR_Byte(0XAE,OLED_CMD); } //清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!! void OLED_Clear(void) { u8 i,n; for(i=0;i<8;i++) { OLED_WR_Byte (0xb0+i,OLED_CMD); //设置页地址(0~7) OLED_WR_Byte (0x00,OLED_CMD); //设置显示位置—列低地址 OLED_WR_Byte (0x10,OLED_CMD); //设置显示位置—列高地址 for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA); } //更新显示 } //在指定位置显示一个字符,包括部分字符 //x:0~127 //y:0~63 //mode:0,反白显示;1,正常显示 //size:选择字体 16/12 void OLED_ShowChar(u8 x,u8 y,u8 chr) { unsigned char c=0,i=0; c=chr-' ';//得到偏移后的值 if(x>Max_Column-1){x=0;y=y+2;} if(SIZE ==16) { OLED_Set_Pos(x,y); for(i=0;i<8;i++) OLED_WR_Byte(F8X16[c*16+i],OLED_DATA); OLED_Set_Pos(x,y+1); for(i=0;i<8;i++) OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA); } else { OLED_Set_Pos(x,y+1); for(i=0;i<6;i++) OLED_WR_Byte(F6x8[c][i],OLED_DATA); } } //m^n函数 u32 oled_pow(u8 m,u8 n) { u32 result=1; while(n--)result*=m; return result; } //显示2个数字 //x,y :起点坐标 //len :数字的位数 //size:字体大小 //mode:模式 0,填充模式;1,叠加模式 //num:数值(0~4294967295); void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size2) { u8 t,temp; u8 enshow=0; for(t=0;t<len;t++) { temp=(num/oled_pow(10,len-t-1))%10; if(enshow==0&&t<(len-1)) { if(temp==0) { OLED_ShowChar(x+(size2/2)*t,y,' '); //OLED_ShowChar(x+(size2/2)*t,y,' ',size2);//IIC程序中的 continue; }else enshow=1; } OLED_ShowChar(x+(size2/2)*t,y,temp+'0'); } } //显示一个字符号串 void OLED_ShowString(u8 x,u8 y,u8 *chr) { unsigned char j=0; while (chr[j]!='\0') { OLED_ShowChar(x,y,chr[j]); x+=8; if(x>120){x=0;y+=2;} j++; } } //显示汉字 void OLED_ShowCHinese(u8 x,u8 y,u8 no) { u8 t,adder=0; OLED_Set_Pos(x,y); for(t=0;t<16;t++) { OLED_WR_Byte(Hzk[2*no][t],OLED_DATA); adder+=1; } OLED_Set_Pos(x,y+1); for(t=0;t<16;t++) { OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA); adder+=1; } } /***********功能描述:显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/ void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]) { unsigned int j=0; unsigned char x,y; if(y1%8==0) y=y1/8; else y=y1/8+1; for(y=y0;y<y1;y++) { OLED_Set_Pos(x0,y); for(x=x0;x<x1;x++) { OLED_WR_Byte(BMP[j++],OLED_DATA); } } } void Print_Point(u8 x, u8 y,u8 checkedState) { OLED_Set_Pos(x,y); if(checkedState == 1) { OLED_WR_Byte(0xC0,OLED_DATA); OLED_WR_Byte(0xC0,OLED_DATA); } else { OLED_WR_Byte(0x00,OLED_DATA); OLED_WR_Byte(0x00,OLED_DATA); } } //初始化SSD1306 void OLED_Init(void) { //OLED_CS_Set(); OLED_RST_Set(); delay_ms(100); OLED_RST_Clr(); delay_ms(100); OLED_RST_Set(); OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel OLED_WR_Byte(0x00,OLED_CMD);//---set low column address低列地址 OLED_WR_Byte(0x10,OLED_CMD);//---set high column address高列地址 OLED_WR_Byte(0x40,OLED_CMD);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)起始行地址 OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register对比度 OLED_WR_Byte(0xCF,OLED_CMD); // Set SEG Output Current Brightness对比度/亮度值 OLED_WR_Byte(0xA1,OLED_CMD);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常 OLED_WR_Byte(0xC8,OLED_CMD);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常 OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display A6:正常/A7:反相 OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)驱动路数 OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty驱动路数值 OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)设置显示偏移 OLED_WR_Byte(0x00,OLED_CMD);//-not offset设置显示偏移值 OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency 设置时钟分频因子,震荡频率 OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period设置预充电周期 OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration设置COM硬件引脚配置 OLED_WR_Byte(0x12,OLED_CMD); OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh设置VCOMH倍率 //OLED_WR_Byte(0x30,OLED_CMD);//Set VCOM Deselect Level OLED_WR_Byte(0x40,OLED_CMD);//Set VCOM Deselect Level OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)设置内存地址模式 OLED_WR_Byte(0x02,OLED_CMD);//[1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10; OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable电荷泵设置///////////手册上没找到 OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disablebit2,开启/关闭 OLED_WR_Byte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏) OLED_WR_Byte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7) 设置显示方式;bit0:1,反相显示;0,正常显示 OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel开启显示 OLED_WR_Byte(0xAF,OLED_CMD); /*display ON*/ OLED_Clear(); //OLED_Set_Pos(0,0); } int main(void) { // u8 t; system_init(); OLED_Init(); // OLED_Clear(); // OLED_ShowString(30,0,"OLED TEST"); // OLED_ShowString(8,2,"ZHONGJINGYUAN"); // OLED_ShowString(20,4,"2014/05/01"); // OLED_ShowString(0,6,"ASCII:"); // OLED_ShowString(63,6,"CODE:"); // t=' '; OLED_Display_On(); delay_ms(10000); while(1) { Print_Point(3,5,1); LED = 0xFF; PORTE &= ~(1<<PE3); OLED_Clear(); OLED_ShowCHinese(0,0,0);//中 OLED_ShowCHinese(18,0,1);//景 OLED_ShowCHinese(36,0,2);//园 OLED_ShowCHinese(54,0,3);//电 OLED_ShowCHinese(72,0,4);//子 OLED_ShowCHinese(90,0,5);//科 OLED_ShowCHinese(108,0,6);//技 } } ```
使用kali的hashcat工具破解office2007密码,总是不成功,终端显示如下
通过虚拟机做的实验,1.txt存储hash值,/usr/share/wordlists/password.txt 是字典,一共才3位,字典没有问题,执行完毕没有生成2.txt,弄了半天,不知道什么原因,求各位大佬给把脉 下面是执行时终端的显示 root@wsw:~/john-1.8.0-jumbo-1/run# hashcat -m 9400 1.txt /usr/share/wordlists/password.txt -o 2.txt --force hashcat (v5.1.0) starting... OpenCL Platform #1: The pocl project ==================================== * Device #1: pthread-Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz, 1024/2943 MB allocatable, 1MCU Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Applicable optimizers: * Zero-Byte * Single-Hash * Single-Salt * Slow-Hash-SIMD-LOOP Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 Watchdog: Hardware monitoring interface not found on your system. Watchdog: Temperature abort trigger disabled. * Device #1: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=2 -D VENDOR_ID=64 -D CUDA_ARCH=0 -D AMD_ROCM=0 -D VECT_SIZE=8 -D DEVICE_TYPE=2 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=4 -D KERN_TYPE=9400 -D _unroll' Dictionary cache hit: * Filename..: /usr/share/wordlists/password.txt * Passwords.: 1000 * Bytes.....: 4000 * Keyspace..: 1000 Approaching final keyspace - workload adjusted. Session..........: hashcat Status...........: Exhausted Hash.Type........: MS Office 2007 Hash.Target......: $office$*2007*20*128*16*702f915f20215bfe6cd028bd9e8...ad0dc3 Time.Started.....: Tue Feb 11 12:00:50 2020 (3 secs) Time.Estimated...: Tue Feb 11 12:00:53 2020 (0 secs) Guess.Base.......: File (/usr/share/wordlists/password.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 330 H/s (3.71ms) @ Accel:512 Loops:128 Thr:1 Vec:8 Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts Progress.........: 1000/1000 (100.00%) Rejected.........: 0/1000 (0.00%) Restore.Point....: 1000/1000 (100.00%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:49920-50000 Candidates.#1....: 512 -> 999 Started: Tue Feb 11 12:00:48 2020 Stopped: Tue Feb 11 12:00:55 2020
我有md5加密工具类了,但是不会去调用,要在哪个层去调用?
![图片说明](https://img-ask.csdn.net/upload/201909/18/1568792334_186753.png) ``` package com.easy.demo.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Arrays; /*这是一个非常好用的使用MD5+salt加密的工具类。使用这个工具类,非常简单, 从前台拿到密码password,直接HexUtil.getEncryptedPwd(password)就可以返回一个长度为56的字符串, 可以用来保存到数据库中,相反,登录的时候,因为MD5加密是不可逆的运算,只能拿用户输入的密码走一遍MD5+salt加密之后, 跟数据库中的password比较,看是否一致,一致时密码相同,登录成功,通过调用HexUtil.validpassword(String password,String dbpassword)方法, 就可以了,不用再做其他事。*/ public class MD5Util { private final static String HEX_NUMS_STR = "0123456789ABCDEF"; private final static Integer SALT_LENGTH = 12; /** * 将16进制字符串转换成数组 * * @return byte[] * @author jacob * */ public static byte[] hexStringToByte(String hex) { /* len为什么是hex.length() / 2 ? * 首先,hex是一个字符串,里面的内容是像16进制那样的char数组 * 用2个16进制数字可以表示1个byte,所以要求得这些char[]可以转化成什么样的byte[],首先可以确定的就是长度为这个char[]的一半 */ int len = (hex.length() / 2); byte[] result = new byte[len]; char[] hexChars = hex.toCharArray(); for (int i = 0; i < len; i++) { int pos = i * 2; result[i] = (byte) (HEX_NUMS_STR.indexOf(hexChars[pos]) << 4 | HEX_NUMS_STR .indexOf(hexChars[pos + 1])); } return result; } /** * 将数组转换成16进制字符串 * * @return String * @author jacob * * */ public static String byteToHexString(byte[] salt){ StringBuffer hexString = new StringBuffer(); for (int i = 0; i < salt.length; i++) { String hex = Integer.toHexString(salt[i] & 0xFF); if(hex.length() == 1){ hex = '0' + hex; } hexString.append(hex.toUpperCase()); } return hexString.toString(); } /** * 密码验证 * @param password 用户输入密码 * @param dbpassword 数据库保存的密码 * @return * @throws NoSuchAlgorithmException * @throws UnsupportedEncodingException */ public static boolean validpassword(String password, String dbpassword) throws NoSuchAlgorithmException, UnsupportedEncodingException{ byte[] pwIndb = hexStringToByte(dbpassword); //定义salt byte[] salt = new byte[SALT_LENGTH]; System.arraycopy(pwIndb, 0, salt, 0, SALT_LENGTH); //创建消息摘要对象 MessageDigest md = MessageDigest.getInstance("MD5"); //将盐数据传入消息摘要对象 md.update(salt); md.update(password.getBytes("UTF-8")); byte[] digest = md.digest(); //声明一个对象接收数据库中的口令消息摘要 byte[] digestIndb = new byte[pwIndb.length - SALT_LENGTH]; //获得数据库中口令的摘要 System.arraycopy(pwIndb, SALT_LENGTH, digestIndb, 0,digestIndb.length); //比较根据输入口令生成的消息摘要和数据库中的口令摘要是否相同 if(Arrays.equals(digest, digestIndb)){ //口令匹配相同 return true; }else{ return false; } } /** * 获得md5之后的16进制字符 * @param password 用户输入密码字符 * @return String md5加密后密码字符 * @throws NoSuchAlgorithmException * @throws UnsupportedEncodingException */ public static String getEncryptedPwd(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{ //拿到一个随机数组,作为盐 byte[] pwd = null; SecureRandom sc= new SecureRandom(); byte[] salt = new byte[SALT_LENGTH]; sc.nextBytes(salt); //声明摘要对象,并生成 MessageDigest md = MessageDigest.getInstance("MD5"); //计算MD5函数 md.update(salt); //password.getBytes("UTF-8")将输入密码变成byte数组,即将某个数装换成一个16进制数 md.update(password.getBytes("UTF-8")); //计算后获得字节数组,这就是那128位了即16个元素 byte[] digest = md.digest(); pwd = new byte[salt.length + digest.length]; System.arraycopy(salt, 0, pwd, 0, SALT_LENGTH); System.arraycopy(digest, 0, pwd, SALT_LENGTH, digest.length); return byteToHexString(pwd); } } ```
这是一个MD5加密工具类,登陆始终是失败的,我用相同的密码123456多次注册发现加密后的密码字符串都是不同的,是不是工具类有错误的原因?
``` package com.easy.demo.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Arrays; /*这是一个非常好用的使用MD5+salt加密的工具类。使用这个工具类,非常简单, 从前台拿到密码password,直接HexUtil.getEncryptedPwd(password)就可以返回一个长度为56的字符串, 可以用来保存到数据库中,相反,登录的时候,因为MD5加密是不可逆的运算,只能拿用户输入的密码走一遍MD5+salt加密之后, 跟数据库中的password比较,看是否一致,一致时密码相同,登录成功,通过调用HexUtil.validpassword(String password,String dbpassword)方法, 就可以了,不用再做其他事。*/ public class MD5Util { private final static String HEX_NUMS_STR = "0123456789ABCDEF"; private final static Integer SALT_LENGTH = 12; /** * 将16进制字符串转换成数组 * * @return byte[] * @author jacob * */ public static byte[] hexStringToByte(String hex) { /* len为什么是hex.length() / 2 ? * 首先,hex是一个字符串,里面的内容是像16进制那样的char数组 * 用2个16进制数字可以表示1个byte,所以要求得这些char[]可以转化成什么样的byte[],首先可以确定的就是长度为这个char[]的一半 */ int len = (hex.length() / 2); byte[] result = new byte[len]; char[] hexChars = hex.toCharArray(); for (int i = 0; i < len; i++) { int pos = i * 2; result[i] = (byte) (HEX_NUMS_STR.indexOf(hexChars[pos]) << 4 | HEX_NUMS_STR .indexOf(hexChars[pos + 1])); } return result; } /** * 将数组转换成16进制字符串 * * @return String * @author jacob * * */ public static String byteToHexString(byte[] salt){ StringBuffer hexString = new StringBuffer(); for (int i = 0; i < salt.length; i++) { String hex = Integer.toHexString(salt[i] & 0xFF); if(hex.length() == 1){ hex = '0' + hex; } hexString.append(hex.toUpperCase()); } return hexString.toString(); } /** * 密码验证 * @param password 用户输入密码 * @param dbpassword 数据库保存的密码 * @return * @throws NoSuchAlgorithmException * @throws UnsupportedEncodingException */ public static boolean validpassword(String password, String dbpassword) throws NoSuchAlgorithmException, UnsupportedEncodingException{ byte[] pwIndb = hexStringToByte(dbpassword); //定义salt byte[] salt = new byte[SALT_LENGTH]; System.arraycopy(pwIndb, 0, salt, 0, SALT_LENGTH); //创建消息摘要对象 MessageDigest md = MessageDigest.getInstance("MD5"); //将盐数据传入消息摘要对象 md.update(salt); md.update(password.getBytes("UTF-8")); byte[] digest = md.digest(); //声明一个对象接收数据库中的口令消息摘要 byte[] digestIndb = new byte[pwIndb.length - SALT_LENGTH]; //获得数据库中口令的摘要 System.arraycopy(pwIndb, SALT_LENGTH, digestIndb, 0,digestIndb.length); //比较根据输入口令生成的消息摘要和数据库中的口令摘要是否相同 if(Arrays.equals(digest, digestIndb)){ //口令匹配相同 return true; }else{ return false; } } /** * 获得md5之后的16进制字符 * @param password 用户输入密码字符 * @return String md5加密后密码字符 * @throws NoSuchAlgorithmException * @throws UnsupportedEncodingException */ public static String getEncryptedPwd(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{ //拿到一个随机数组,作为盐 byte[] pwd = null; SecureRandom sc= new SecureRandom(); byte[] salt = new byte[SALT_LENGTH]; sc.nextBytes(salt); //声明摘要对象,并生成 MessageDigest md = MessageDigest.getInstance("MD5"); //计算MD5函数 md.update(salt); //password.getBytes("UTF-8")将输入密码变成byte数组,即将某个数装换成一个16进制数 md.update(password.getBytes("UTF-8")); //计算后获得字节数组,这就是那128位了即16个元素 byte[] digest = md.digest(); pwd = new byte[salt.length + digest.length]; System.arraycopy(salt, 0, pwd, 0, SALT_LENGTH); System.arraycopy(digest, 0, pwd, SALT_LENGTH, digest.length); return byteToHexString(pwd); } } //controller层实现登陆的代码 @RequestMapping(value={"/login"}, method=RequestMethod.GET) public boolean login(HttpServletRequest request, @Param(value = "number")String number, @Param(value = "password")String password) throws UnsupportedEncodingException, NoSuchAlgorithmException { password = HexUtil.getEncryptedPwd(password); User user = userMapper.loginUser(number,password); if(user != null){ return true; }else{ return false; } } ``` 密码输入多遍始终登陆失败,尝试注册相同密码发现,每次注册123456加密后的密码都不一样,是不是MD5工具类有错误?
java小白用read方法读取txt中的一个存在负数的byte数组,结果出现了很多过万的数,为什么?
如图,写入一个byte数组到一个txt文件里,这个数组里有-128~127的数字。然后用read方法读取出来,运行的时候发现,只要是原数组里的负数,输出的结果都是上万的数,像65536之类的,而且在负数之后的那一个数字也消失了,就好像两个数合并输出了一样。 ![图片说明](https://img-ask.csdn.net/upload/201705/14/1494748209_208224.png) ![图片说明](https://img-ask.csdn.net/upload/201705/14/1494748274_343270.png) ![图片说明](https://img-ask.csdn.net/upload/201705/14/1494748283_821986.png) ![图片说明](https://img-ask.csdn.net/upload/201705/14/1494748294_915362.png)
openstack创建实例成功但是启动实例报错
以下是nova报错详情: ``` /var/log/nova/nova-compute.log:2020-02-11 08:43:18.893 1327 ERROR nova.virt.libvirt.guest [req-ecfa9ec9-82fd-42dd-838f-ff5938af32e7 a7756266208f439bbb8324fb22853932 e7af6fe8f68647ab8010beaa7cb440ed - - -] Error launching a defined domain with XML: <domain type='kvm'> /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [req-ecfa9ec9-82fd-42dd-838f-ff5938af32e7 a7756266208f439bbb8324fb22853932 e7af6fe8f68647ab8010beaa7cb440ed - - -] [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] Instance failed to spawn /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] Traceback (most recent call last): /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2218, in _build_resources /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] except Exception: /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2064, in _build_and_run_instance /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] # saved in that function to prevent races. /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 2779, in spawn /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] block_device_info=block_device_info) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 4923, in _create_domain_and_network /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] xml, pause=pause, power_on=power_on) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 4854, in _create_domain /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] guest.launch(pause=pause) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 142, in launch /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] self._encoded_xml, errors='ignore') /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] self.force_reraise() /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] six.reraise(self.type_, self.value, self.tb) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 137, in launch /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] return self._domain.createWithFlags(flags) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 186, in doit /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] result = proxy_call(self._autowrap, f, *args, **kwargs) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 144, in proxy_call /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] rv = execute(f, *args, **kwargs) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 125, in execute /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] six.reraise(c, e, tb) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 83, in tworker /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] rv = meth(*args, **kwargs) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1110, in createWithFlags /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] if ret == -1: raise libvirtError ('virDomainCreateWithFlags() failed', dom=self) /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] libvirtError: 内部错误:qemu unexpectedly closed the monitor: 2020-02-11T00:43:18.668387Z qemu-kvm: -drive file=/var/lib/nova/instances/a26fb462-a721-45eb-8eaa-776ec5da3b23/disk,format=qcow2,if=none,id=drive-virtio-disk0,cache=none: Could not open '/var/lib/nova/instances/a26fb462-a721-45eb-8eaa-776ec5da3b23/disk': Permission denied /var/log/nova/nova-compute.log:2020-02-11 08:43:18.895 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] /var/log/nova/nova-compute.log:2020-02-11 08:43:19.145 1327 ERROR nova.compute.manager [req-ecfa9ec9-82fd-42dd-838f-ff5938af32e7 a7756266208f439bbb8324fb22853932 e7af6fe8f68647ab8010beaa7cb440ed - - -] [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] Unexpected build failure, not rescheduling build. /var/log/nova/nova-compute.log:2020-02-11 08:43:19.145 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] Traceback (most recent call last): /var/log/nova/nova-compute.log:2020-02-11 08:43:19.145 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 1926, in _do_build_and_run_instance /var/log/nova/nova-compute.log:2020-02-11 08:43:19.145 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] /var/log/nova/nova-compute.log:2020-02-11 08:43:19.145 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2116, in _build_and_run_instance /var/log/nova/nova-compute.log:2020-02-11 08:43:19.145 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] exception.ImageNotActive, /var/log/nova/nova-compute.log:2020-02-11 08:43:19.145 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128) /var/log/nova/nova-compute.log:2020-02-11 08:43:19.145 1327 ERROR nova.compute.manager [instance: a26fb462-a721-45eb-8eaa-776ec5da3b23] ``` dashboard报错: ![图片说明](https://img-ask.csdn.net/upload/202002/11/1581385833_715215.png) ![图片说明](https://img-ask.csdn.net/upload/202002/11/1581385890_574951.png) 网上说了很多办法都没有用,个人初学小白,有没有路过的大神指点一二。万分感谢!
求教在java中使用高并发执行XA事务的xid一些问题?
实现xid接口后,xid的构造方法为public MyXid(int formatId, byte gtrid[], byte bqual[])。 这三个参数中,formatId无需变化,gtrid和bqual需要全局唯一。 尝试在生成xid的时候,尝试随机数的形式,即 n = r01.nextIntI(999999999); m = r02.nextIntI(999999999); mysqlXid = new MyXid(0,new byte[(byte)m*01],new byte[(byte)n*01]) 暂时不考虑在高并发状态下随机数出现重复问题。几率很低。 但因为两个参数为byte,则在高并发执行状态下,将int强转到byte只有-128到127. 所以很容易重复,则报错xid already exists。 在跑一段时间就会出现全局事务状态active。我的理解是之前的事务因xid存在未释放,导致一直active。 感觉自己对这方面理解可能存在偏差和误区,求大家指点,谢谢。
求大神帮忙!现有一个字节数组,想跳过这个字节数组的头128字节。如何实现啊???
Java中 读取了一个二进制文件,然后转为了byte数组,但是这个文件当中的头文件是128字节 头文件是没有必要读出来,选择直接跳过,怎么实现啊????
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻,初学数据结构和算法的时候,在忍着枯燥看完定义原理,之后想实现的时候,觉得它们的过程真的是七拐八绕,及其难受。 在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star!【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。欢迎 Star!)。 另外推荐一篇原创:终极推荐!可能是最适合你的Java学习路线 方法 网站 书籍推荐! Java 并发基础常见面试题总结 1. 什么是线程和进程? 1.1. 何为进程? 进程是程...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
神经⽹络可以计算任何函数的可视化证明
《Neural Networks and Deep Learning》读书笔记第四篇本章其实和前面章节的关联性不大,所以大可将本章作为小短文来阅读,当然基本的深度学习基础还是要有的。主要介绍了神经⽹络拥有的⼀种普遍性,比如说不管目标函数是怎样的,神经网络总是能够对任何可能的输入,其值(或者说近似值)是网络的输出,哪怕是多输入和多输出也是如此,我们大可直接得出一个结论:不论我们想要计算什么样的函数,...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
互联网公司的裁员,能玩出多少种花样?
裁员,也是一门学问,可谓博大精深!以下,是互联网公司的裁员的多种方法:-正文开始-135岁+不予续签的理由:千禧一代网感更强。95后不予通过试用期的理由:已婚已育员工更有责任心。2通知接下来要过苦日子,让一部分不肯同甘共苦的员工自己走人,以“兄弟”和“非兄弟”来区别员工。3强制996。员工如果平衡不了工作和家庭,可在离婚或离职里二选一。4不布置任何工作,但下班前必须提交千字工作日报。5不给活干+...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
活到老,学到老,程序员也该如此
全文共2763字,预计学习时长8分钟 图片来源:Pixabay 此前,“网传阿里巴巴要求尽快实现P8全员35周岁以内”的消息闹得沸沸扬扬。虽然很快被阿里辟谣,但苍蝇不叮无缝的蛋,无蜜不招彩蝶蜂。消息从何而来?真相究竟怎样?我们无从而知。我们只知道一个事实:不知从何时开始,程序猿也被划在了“吃青春饭”行业之列。 饱受“996ICU”摧残后,好不容易“头秃了变强了”,即将步入为“高...
Vue快速实现通用表单验证
本文开篇第一句话,想引用鲁迅先生《祝福》里的一句话,那便是:“我真傻,真的,我单单知道后端整天都是CRUD,我没想到前端整天都是Form表单”。这句话要从哪里说起呢?大概要从最近半个月的“全栈工程师”说起。项目上需要做一个城市配载的功能,顾名思义,就是通过框选和拖拽的方式在地图上完成配载。博主选择了前后端分离的方式,在这个过程中发现:首先,只要有依赖jQuery的组件,譬如Kendoui,即使使用...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
【图解】记一次手撕算法面试:字节跳动的面试官把我四连击了
字节跳动这家公司,应该是所有秋招的公司中,对算法最重视的一个了,每次面试基本都会让你手撕算法,今天这篇文章就记录下当时被问到的几个算法题,并且每个算法题我都详细着给出了最优解,下面再现当时的面试场景。看完一定让你有所收获 一、小牛试刀:有效括号 大部分情况下,面试官都会问一个不怎么难的问题,不过你千万别太开心,因为这道题往往可以拓展出更多有难度的问题,或者一道题看起来很简单,但是给出最优解,确实很...
关于裁员几点看法及建议
最近网易裁员事件引起广泛关注,昨天网易针对此事,也发了声明,到底谁对谁错,孰是孰非?我们作为吃瓜观众实在是知之甚少,所以不敢妄下定论。身处软件开发这个行业,近一两年来,对...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
相关热词 c# 时间比天数 c# oracle查询 c# 主动推送 事件 c# java 属性 c# 控制台 窗体 c# 静态类存值 c#矢量作图 c#窗体调用外部程式 c# enum是否合法 c# 如何卸载引用
立即提问