第02章-变量与运算符
1 关键字
关键字:被Java语言赋予了特殊含义,用作专门用途的字符串(或单词)。如class、public、static、void等,这些单词都被Java定义好了,称为关键字。

- 特点:关键字都是小写字母;
- 官方地址:Java Language Keywords (The Java™ Tutorials > Learning the Java Language > Language Basics)
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
2 标识符
标识符:Java中变量、方法、类等要素命名时使用的字符序列,称为标识符。简单的说凡是可以自己命名的地方法都是标识符,如类名、方法名、变量名等等。
标识符命名规则:必须遵守,不遵守会报错
- 由26个英文字母大小写,0-9,_或$组成;
- 不能包含空格,不能以数字开头;
- 不能与关键字或保留字相同;
- 严格区分大小写,长度不限;
- 定义标识符时要“见名知意”。

标识符命名规范:建议遵守,不遵守也可以,但遵守了显得更专业
- 包名:多单词组成时所有字母都小写:xxxyyyzzz。如java.lang
- 类名、接口名:多单词组成时所有字母的首字母大写:XxxYyyZzz。如Hello
- 变量名、方法名:多单词组成时第一个单子首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz。如bookName
- 常量名:所有字母都大写,多单词组成时每个单词之间用下划线链接:XXX_YYY_ZZZ。如MAX_VALUE
3 变量
变量:内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。
- 变量三要素:数据类型、变量名、存储的值
- Java中变量声明的格式:数据类型 变量名 = 变量值;
- 变量的作用:在内存中保存数据
- 变量都有作用域,只在作用域内生效,同一作用域内变量不能重名
class VariableTest{public static void main(String[] args) {//变量的声明//分步式:先声明,再初始化char gender;gender = '男';//一步式:声明同时初始化int age = 18;//变量的使用,直接调用变量名System.out.println(gender+""+age);}
}
4 数据类型

表数范围计算公式

整型
- 整数类型包括byte、short、int、long;
- 注意:
1. 声明整型变量时遵守保小不保大,数据类型能小则小;
2. 整型常量默认为int占用空间更小,声明long型常量须后加l或L;
- 各整数类型有固定的表数范围和占用存储空间:

浮点型
- 整数类型包括float、double;
- float:单精度,尾数可以精确到7位有效数字;
- double:双精度,精度是float的两倍;
- 注意: 浮点型型常量默认为double精度更高,声明float型常量须后加f或F;
- 浮点型表数范围和占用空间:

- 浮点型常量的两种表示形式:
- 十进制形式。如5.12 512.0f .512(必须有小数点)
- 科学计数法形式。如5.12e2 512E2 100E-2
关于浮点型精度的说明:
- 不是所有小数都可以精确的使用二进制浮点数表示。二进制浮点不能精确的表示0.1、0.01、0.001这样10的负次幂。
- 浮点型float、double的数据不适合在不容许舍入误差的金融计算领域,如果需要精确数字计算或保留指定位数的精度,需要使用BigDecimal类。
- 浮点在机器中存放的形式,浮点数=符号位+指数位+尾数位。浮点数float超出存储空间的值会被丢掉
- 演示:
// 1.float精度不高,超出存储范围的部分会被丢掉
float num1 = 2.1234567851f;
double num2 = 2.1234567851f;
System.out.println("float=" + num1 + "\ndouble=" + num2);
// 2.二进制浮点数不能准确的表示0.1、0.01、0.001等10的负次幂的数
System.out.println(0.1 + 0.2);
// 3.浮点型使用陷阱
double num3= 2.7;
double num4=8.1/3;
System.out.println(num3 == num4);
float f1 = 123123123f;
float f2 = f1+1;
System.out.println(f1);
System.out.println(f2);
System.out.println(f1== f2);
应用案例:
案例1:定义圆周率并赋值为3.14,现在3个圆的半径分别为1.2、2.5、6,求他们的面积
/*** @author shbzhao* @version 1.0* @date 2023/8/26-0:34* @description 定义圆周率并赋值为3.14,现在3个圆的半径分别为1.2、2.5、6,求他们的面积*/
public class FloatDoubleExer {public static void main(String[] args) {double PI = 3.14; //圆周率double radius1 = 1.2;double radius2 = 2.5;double radius3 = 6;System.out.println("第1个圆的面积=" + PI * radius1 * radius1);System.out.println("第2个圆的面积=" + PI * radius2 * radius2);System.out.println("第3个圆的面积=" + PI * radius3 * radius3);}
}
案例2:将华氏温度转为摄氏温度(℃):℃=(℉ - 32) / 1.8
/*** @author shbzhao* @version 1.0* @date 2023/8/26* 将华氏温度转为摄氏温度(℃):℃=(℉ - 32) /1.8*/
public class FloatDoubleExer02 {public static void main(String[] args) {double hua = 80.0;double she = (hua-32)/1.8;System.out.println("华氏度"+hua+"℉=摄氏度"+she+"℃");}
}
字符型
- char类型数据用来表示通常意义上“字符”(占2字节)
- 字符型变量的三种表现形式:
- 形式1:使用单引号('')括起来的单个字符。如:char c1 = 'a'; char c2 = '男'; char c3 = 9;
- 形式2:直接使用Unicode值来表示字符常量:‘\uXXXX’。其中,XXXX表示一个十六进制整数。如:\u0023 表示'#'。
- Java中还允许使用转义字符'\',来将其后的字符转变为特殊字符型常量。如:char c4 = '\n';,'\n'表示换行符
- char类型是可以进行运算的,它都对应有Unicode码,可以看作是一个数值,ASCII码值。
- 演示:
/*** @author shbzhao* @version 1.0* @date 2023/8/26*/
public class CharBooleanTest {public static void main(String[] args) {//1.字符类型 char(2字节)//2.表示形式//2.1 使用单引号('')括起来的单个字符char c1 = 'a';char c2 = '1';char c3 = '男';char c4 = '@';//2.2 直接使用Unicode值来表示字符常量:'\'uXXXX'。其中,XXXX表示一个十六进制整数。char c5 = '\u0036'; //表示后买你System.out.println(c5);//2.3使用转义字符'\',来将其后的字符转变为特殊字符型常量。char c6 = '\n';//2.4char类型是可以进行运算的,它都对应有Unicode码,可以看作是一个数值,ASCII码值char c7 = 97;System.out.println(c7);}
}
布尔型

- 布尔类型(boolean),只有两个值true、false;
- 常用于逻辑条件的判断,如条件判断、分支结构、循环结构等;
-
演示:
// 布尔类型(boolean) 1字节
// 1.只有两个值true和false
boolean b1 = true;
boolean b2 = false;
// 不能使用0和1代替true和false
// boolean b3 = 0; //编译不通过// 常用于条件判断或循环语句中
boolean isStudent = true;
if (isStudent){System.out.println("是学生");
}else{System.out.println("不是学生");
}
5 数据类型之间的转换
自动类型提升

- 自动类型转换:数据类型表数范围的自动提升
- 类型转换规则:
- 容量较小的类型自动转换为容量大的数据类型(容量是指表数范围的大小);
- byte、short、char之间运算后为int类型;
- char不能与short、int转换。
- 演示:
/*** @author shbzhao* @version 1.0* @date 2023/8/27* 演示基本数据类型之间的类型转换* 包括:* 1.自动 类型转换(数据类型的精度\表数提升)* 2.强制 类型转换* 类型转换规则:容量是指数据类型(表数范围)的大小* 1.容量较小的类型赋值给容量较大的类型时,结果自动转换为容量大的数据类型* byte ---> short ---> int ---> long ---> float ---> double* 2.byte、short char之间运算后为int类型:(特殊情况1)* byte + short ---> int,byte + byte---> int,short + short ---> int* 3.char不能与short、int转换(特殊情况2)*/
public class BasicDataSwitch {public static void main(String[] args) {// 容量是指表数范围的大小// 如long型占8字节,float型占4字节,但是表述范围float更大long l1 = 115431543L;float f1 = l1;float f2 = 2.45465412f;//long l2 = f2; // 编译报错// byte ---> int okbyte b1 = 1;int i1 = b1 + b1;// int ---> byte//byte b2 = i1 + i1; // 编译报错// 特殊情况1:byte + short ---> intbyte b3 = 11;short s1 = 12;//short s2 = s1+b3; // 编译报错int i2 = s1 + b3;// 特殊情况2:char不能与byte、short进行类型转换char c1 = 10;//byte b4 = c1; // 编译报错//short s2 = c1; // 编译报错}
}
强制类型转换
- 强制类型转换:将取值范围(或容量)大的类型强制转换为取值范围小(或容量小的类型)。
- 强制类型转换符:"()",在小括号内指定要转换为的数据类型。
- 强制类型转换可能会导致精度损失。
- 演示:
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 演示强制类型转换的使用* 规则:* 1.如果需要将容量大的赋值给容量小的类型,需要进行强制类型转换* 2.强制类型转换符:"()",在小括号内指定要转换为的数据类型* 3.强制类型转换可能会导致精度损失*/
public class ForceTypeSwitch {public static void main(String[] args) {// 自动类型提升 int ---> doubledouble d1 = 12;// 尝试double ---> int,编译错误//int i1 = d1;int i2 = (int) d1;System.out.println(i2);long l1 = 666;short s1 = (short) l1;System.out.println(l1);// 精度损失double d2 = 12.3;int i3 = (int) d2;System.out.println(i3);int i4 = 128;byte b1 = (byte) i4;System.out.println(b1);}
}
6 基本数据类型与String类型转换
- 基本数据类型-->String类型:使用包装类的parse方法。
- String类型-->基本数据类型:使用双引号""拼接。
- 注意:String类型-->基本数据类型时,String数据的格式必须是能够转换的基本数据类型
- 演示:
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 演示String与基本数据类型之间的转换* 1.基本数据类型-->String类型(使用包装类的parse方法)* 2.String类型-->基本数据类型(使用双引号""拼接)*/
public class StringToBasic {public static void main(String[] args) {// 基本数据类型-->String类型(使用包装类的parse方法)int n1 = 100;float f1 = 1.1f;double d1 = 4.5;boolean b1 = true;String s1 = n1 + "BasicToString";String s2 = f1 + "BasicToString";String s3 = d1 + "BasicToString";String s4 = b1 + "BasicToString";System.out.println(s1);System.out.println(s2);System.out.println(s3);System.out.println(s4);// String类型-->基本数据类型(使用双引号""拼接)// 需要通过基本数据的包装类调用parseXX方法String byteStr = "127";byte b2 = Byte.parseByte(byteStr);String shortStr = "123";short sh2 = Short.parseShort(shortStr);String intStr = "321";int int2 = Integer.parseInt(intStr);String longStr = "321123321";long long2 = Long.parseLong(longStr);String floatStr = "12.3";float float2 = Float.parseFloat(floatStr);String doubleStr = "12.3";double double2 = Double.parseDouble(doubleStr);//char类型调用charAt(0)方法String charStr = "12.3";char char2 = charStr.charAt(0);String booleanStr = "true";boolean boolean2 = Boolean.parseBoolean(booleanStr);System.out.println(b2 + " " + sh2 + " " + int2 + " " + long2 + " " + float2 + " " + double2 + " " + char2 + " " +boolean2);}
}
7 进制运算
进制的分类
- 十进制(decimal)
- 数字组成:0-9
- 进位规则:满10进1
- 二进制(bindary):以0b或0B开头
- 数字组成:0-1
- 进位规则:满2进1
- 八进制(octal):很少使用,以数字0开头
- 数字组成:0-7
- 进位规则:满8进1
- 十六进制(bindary):以0x或0X开头
- 数字组成:0-9和a-f。a-f不区分大小写
- 进位规则:满16进1
- 演示:
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 演示二进制数* 用四种进制表示数字20*/
public class BinaryTest {public static void main(String[] args) {// 十进制int num1 = 20;// 二进制int num2 = 0b10100;// 八进制int num3 = 024;// 十六进制int num4 = 0x14;System.out.println(num1);System.out.println(num2);System.out.println(num3);System.out.println(num4); }
}
进制的转换
| 十进制 | 二进制 | 八进制 | 十六进制 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 3 | 3 |
| 4 | 100 | 4 | 4 |
| 5 | 101 | 5 | 5 |
| 6 | 110 | 6 | 6 |
| 7 | 111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | a |
| 11 | 1011 | 13 | b |
| 12 | 1100 | 14 | c |
| 13 | 1101 | 15 | d |
| 14 | 1110 | 16 | e |
| 15 | 1111 | 17 | f |
| 16 | 10000 | 20 | 10 |
其它进制转十进制:
- 二进制转十进制:从最低位(右边)开始,将每一位上的数提取出来,乘以2的(位数-1)次方。位数是指从右边数第几位。如0b1011=1*2^(4-1) + 0*2^(3-1) + 1*2^(2-1) + 1*2^(1-1)。
- 八进制转十进制:从最低位(右边)开始,将每一位上的数提取出来,乘以8的(位数-1)次方。
- 十六进制转十进制:从最低位(右边)开始,将每一位上的数提取出来,乘以16的(位数-1)次方。
十进制转其它进制:将十进制连续除以其它进制数,直到商为0,取每步的余数倒置就是对应的进制数。
- 十进制转二进制:十进制数连续除以2,直到商为0,取每步的余数倒置
- 十进制转八进制:十进制数连续除以8,直到商为0,取每步的余数倒置
- 十进制转十六进制:十进制数连续除以16,直到商为0,取每步的余数倒置
二进制转八、十六进制:
- 二进制转八进制:将二进制数的每3位为一组(从右开始个位数的值分别是4、2、1),每一组对应转换为一个8进制数。
- 二进制转十六进制:将十六进制的每4位为一组(从右开始个位数的值分别是8、4、2、1),每一组对应转换为一个16进制数。
8 运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等等。
运算符的分类:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符。
| 分类 | 运算符 |
| 算术运算符(7个) | + - * / % ++ -- |
| 赋值运算符(12个) | = += -= *= /= %= >>= <<= >>>= &= |= ^= |
| 比较(或关系)运算符(6个) | > >= < <= == != |
| 逻辑运算符(6个) | & | ^ ! && || |
| 位运算符(7个) | & | ^ - << >> >>> |
| 条件运算符(1个)三元运算符 | 条件表达式?表达式1:表达式2; |
| Lambda运算符(1个) | ->(Java新特性章节讲解) |
算术运算符
| 运算符 | 功能 | 范例 | 结果 |
| + | 正号 | +3 | 3 |
| - | 负号 | b=4; -b; | -4 |
| + | 加 | 5+5 | 10 |
| - | 减 | 6-4 | 2 |
| * | 乘 | 3*4 | 12 |
| / | 除 | 5/5 | 1 |
| % | 取模(取余) | 7%5 | 2 |
| ++i | 自增(前):先自增,后赋值 | a=2;b=++a; | a=3;b=3 |
| i++ | 自增(后):先赋值,后自增 | a=2;b=a++ | a=3;b=2 |
| --i | 自减(前):先自减,后赋值 | a=2;b=--a | a=1;b=1 |
| i-- | 自减(后):先赋值,后自减 | a=2;b=a-- | a=1;b=2 |
| + | 字符串拼接 | "Hello"+"world" | "Helloworld" |
赋值运算符
赋值运算符是将某个运算后的值赋给指定的变量。
- 基本赋值运算符:"=",如int n = 1;;
- 当"="两边数据类型不一致时,可以使用自动类型提升或强制类型转换进行处理;
- 复合赋值运算符:+=、-+、*=、/=、%=,如n += 3;等价于n = n + 3;;
- 注意:复合赋值运算符会进行类型转换,底层具有强制类型转换符。
- 演示:
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 演示赋值运算符*/
public class SetValueTest {public static void main(String[] args) {int n = 10;// 1.当"`=`"两边数据类型不一致时,可以使用`自动类型提升`或`强制类型转换`进行处理long l1 = n; // 自动类型提升byte b1 = (byte) n; // 强制类型转换// 2.允许连续赋值int a, b;a = b = 100;// 3.复合赋值运算符会进行`类型转换`,底层具有`强制类型转换符`byte n1 = 12;n1 += 3; // 等价于n1=(byte)(n1+3),强制类型转换为intSystem.out.println(n1);}
}
- 练习1:
int n = 10;
n += (n++) + (++n); // 等价于n = n + (n++) + (++n)
// num = 10 + 10 + 12,先计算n++和++n
System.out.println(n);
关系运算符
关系运算符的结果都是boolean类型true或false。
- 关系运算符:>、>=、<、<=、==、!=;
- ==和!=适用于基本数据类型和引用数据类型,其它只适用于基本数据类型;
- 注意:=是赋值运算符,==是关系运算符
| 运算符 | 功能 | 范例 | 结果 |
| == | 等于 | 8 == 7 | false |
| != | 不等于 | 8 != 7 | true |
| > | 大于 | 8 > 7 | true |
| >= | 大于等于 | 8 >= 7 | true |
| < | 小于 | 8 < 7 | false |
| <= | 小于等于 | 8 <= 7 | false |
| A instanceof B | 检测A是否为B类的对象 | "ahhlt" instanceof String | true |
逻辑运算符
逻辑运算符只对boolean类型进行操作,结果也是boolean类型的值。
| 运算符 | 功能 |
| &和&& | 表示"且"关系,符号两边同时为true时,结果为true。助记:同1为1,1为true,0为fasle |
| |和|| | 表示"或"关系,符号两边只要有一个为true,结果为true。助记:有1为1 |
| ! | 表示"非"关系,变量的值为true时,结果为false。助记:取反 |
| ^ | 表示"异或"关系,符号两边的值不同时,结果为true。助记:有同为0,不同为1 |
逻辑运算与短路运算的区别:
- 短路与(&&)和逻辑与(&):
- 短路与(&&):条件1 && 条件2,若条件1为false,则不再判断条件2。
- 逻辑与(&):条件1 & 条件2,若条件1为false,继续判断条件2。
- 注意:开发中一般使用短路与,除非特定情况才使用逻辑与。
- 短路或(||)和逻辑或(|):
- 短路或(||):条件1 || 条件2,若条件1为true,则不再判断条件2。
- 逻辑或(|):条件1 | 条件2,若条件1为true,继续判断条件2。
三元运算符
- 语法格式:(条件表达式)?表达式1:表达式2
- 运算规则:如果条件表达式的值为true,运算结果为表达式1,否则为表达式2
- 表达式1和表达式2必须是可以赋给接收变量的类型(可以自动转换或语法强转)
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 条件表达式的使用*/
public class ConditionTest {public static void main(String[] args) {int a = 10;int b = 99;int result = (a > b) ? a++ : b--;// a > b为false,返回第二个表达式b--,先将b的值返回,b再自减System.out.println("result= " + result);System.out.println("b= " + b);// 表达式类型与接收变量类型不同时,必须满足类型自动转换或者强制转换int c = a > b ? (int)1.1 : (int)2.2;}
}
位运算符
位运算
- 计算机进行运算时,都是对补码进行运算,显示运算结果时将计算后的补码转为原码;
- 正数的原码、反码、补码都相同,称三码合一;
- 负数的三码:
- 反码:原码除符号位不变,其它位取反
- 补码:反码+1。相应的:负数的反码= 补码-1
- 符号位:二进制的最高位(最左边)为符号位,0代表正数,1代表负数
位运算符
以二进制补码进行运算
| 运算符 | 功能 |
| & | 按位与,全1为1 |
| | | 按位或,有1为1 |
| ^ | 按位异或,不同为1,相同为0 |
| ~ | 按位取反,每位都取相反值 |
| << | 左移,符号位不变,低位补0。左移n位相当于乘2的n次方 |
| >> | 右移,符号位不变,用符号位补高位空缺。右移n位相当于除2的n次方 |
| >>> | 无符号右移,低位溢出,高位补0 |
演示:
/*** @author shbzhao* @version 1.0* @date 2023/8/28*/
public class BitOperatorTest {public static void main(String[] args) {/** 1.按位与(&):2 & 3* 正数的原码、反码、补码都相同* 2的三码:00000000 00000000 00000000 00000010* 3的三码:00000000 00000000 00000000 00000011* 2 & 3: 00000000 00000000 00000000 00000010* 结果为2** 2.按位或(&):* */System.out.println(2 & 3);}
}
运算符优先级
| 优先级 | 运算符说明 | Java运算符 |
| 1 | 括号 | ()、[]、{} |
| 2 | 正负号 | +、- |
| 3 | 单元运算符 | ++、--、~、! |
| 4 | 乘、除、取余 | *、/、% |
| 5 | 加、减 | +、- |
| 6 | 位移运算符 | <<、>>、>>> |
| 7 | 关系运算符 | >、>=、<、<=、==、!=、instanceof |
| 8 | 按位与 | & |
| 9 | 按位异或 | ^ |
| 10 | 按位或 | | |
| 11 | 短路与 | && |
| 12 | 短路或 | || |
| 13 | 三元运算符 | 条件表达式?表达式1:表达式2; |
| 14 | 赋值运算符 | =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^= |
相关文章:
第02章-变量与运算符
1 关键字 关键字:被Java语言赋予了特殊含义,用作专门用途的字符串(或单词)。如class、public、static、void等,这些单词都被Java定义好了,称为关键字。 特点:关键字都是小写字母;官…...
SpringBoot数据响应、分层解耦、三层架构
响应数据 ResponseBody 类型:方法注解、类注解位置:Controller方法、类上作用:将方法返回值直接响应,如果返回值类型是 实体对象/集合 ,将会转换为json格式响应说明:RestController Controller Respons…...
go测试库之apitest
📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…...
K8S删除资源后一直处于Terminating状态无法删除解决方法
原因 使用kubectl delete 删除某命名空间是一直处于Terminating状态无法删除,首先排查了该命名空间下是否还存在deployment pod等资源发现没有后,等了很久还是无法删除后发现是因为该名称空间的“finalizers”字段有值导致 Finalizer(终结器…...
jvm实践
说一下JVM中的分代回收 堆的区域划分 1.堆被分为了两份:新生代和老年代[1:2] 2.对于新生代,内部又被分为了三个区域。Eden区,幸存者区survivor(分成from和to)[8:1:1] 对象回收分代回收策略 1.新创建的对象,都会先分配到eden区 2.当伊园内存…...
redis-plus-plus访问REDIS集群
编程语言:C 开源库:redis-plus-plus 接口类:RedisCluster 初始化需要输入任意一个结点的IP和端口,如果设置了密码,还需要密码的明文并使用ConnectionOptions类。 初始化完成后可以直接进行读/写操作。 RedisClust…...
python把Word题库转成Excle题库
又到了一年一度的背题时刻,但是收到的题库是Word版的,页数特别多 话不多说,上代码,有图有真相,代码里面备注的很详细 # 导入所需库 import csv import os import refrom docx import Document from win32com import c…...
算法通关村第六关-白银挑战树
大家好我是苏麟 , 今天聊聊树 . 大纲 树的概念二叉树满二叉树完全二叉树 树的性质树的定义与存储方式树的遍历通过序列构造二叉树前中序列遍历 树的概念 树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物&…...
【Java对象】一文读懂 Java 对象庐山真面目及指针压缩
文章目录 版本及工具介绍Java 对象结构对象头mark word 标记字mark word 标记字解析Lock Record class point 类元数据指针 实例数据对齐填充为什么需要对齐填充 常见 Java 数据类型对象分析ArrayListLongStringByteBoolean 其它指针压缩前置知识:32位操作系统为什么…...
leetcode做题笔记210. 课程表 II
现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。 例如,想要学习课程 0 ,你需要先完成课程 1…...
【深度学习 AIGC】stable diffusion webUI 使用过程,参数设置,教程,使用方法
文章目录 docker快速启动vae.ckpt或者.safetensorsCFG指数/CFG Scale面部修复/Restore facesRefinerTiled VAEClip Skipprompt提示词怎么写 docker快速启动 如果你想使用docker快速启动这个项目,你可以按下面这么操作(显卡支持CUDA11.8)。如…...
论文阅读 - Detecting Social Bot on the Fly using Contrastive Learning
目录 摘要: 引言 3 问题定义 4 CBD 4.1 框架概述 4.2 Model Learning 4.2.1 通过 GCL 进行模型预训练 4.2.2 通过一致性损失进行模型微调 4.3 在线检测 5 实验 5.1 实验设置 5.2 性能比较 5.5 少量检测研究 6 结论 https://dl.acm.org/doi/pdf/10.1145/358…...
PaddleMIX学习笔记(1)
写在前面 之前对HyperLedger的阅读没有完全结束,和很多朋友一样,同时也因为工作的需要,最近开始转向LLM方向。 国内在大模型方面生态做的最好的,目前还是百度的PaddlePaddle,所以自己也就先从PP开始看起了。 众所周知…...
【网络协议】聊聊HTTPS协议
前面的文章,我们描述了网络是怎样进行传输数据包的,但是网络是不安全的,对于这种流量门户网站其实还好,对于支付类场景其实容易将数据泄漏,所以安全的方式是通过加密,加密方式主要是对称加密和非对称加密。…...
2023.11.2事件纪念
然而造化又常常为庸人设计,以时间的流逝,来洗涤旧迹,仅以留下淡红的血色和微漠的悲哀。 回顾这次事件,最深的感触就是什么是团队的力量! 当我们看到希望快要成功的时候,大家洋溢出兴奋开心的表情,一起的欢声笑语;但看…...
Scala和Play WS库编写的爬虫程序
使用Scala和Play WS库编写的爬虫程序,该程序将爬取网页内容: import play.api.libs.ws._ import scala.concurrent.ExecutionContext.Implicits.global object BaiduCrawler {def main(args: Array[String]): Unit {val url ""val proxy…...
佳易王配件进出库开单打印进销存管理系统软件下载
用版配件进出库开单打印系统,可以有效的管理:供货商信息,客户信息,进货入库打印,销售出库打印,进货明细或汇总统计查询,销售出库明细或汇总统计查询,库存查询,客户往来账…...
【深度学习基础】专业术语汇总(欠拟合和过拟合、泛化能力与迁移学习、调参和超参数、训练集、测试集和验证集)
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
【C语言:函数栈帧的创建与销毁】
文章目录 前言一、前期准备1.寄存器2.汇编指令3.测试代码 二、解开函数栈帧的神秘面纱1.栈帧大体轮廓2.main函数栈帧的创建3.main函数内执行有效代码4.烫烫烫5.函数参数的传递6.add函数栈帧的创建7.add函数内执行有效代码8.add是如何获得参数的9. add函数栈帧的销毁10.main函数…...
怎么在C++中实现云端存储变量
随着云计算技术的快速发展,现在我们可以将数据存储在云端,以便于在不同设备和地点访问。在C中,我们也可以通过一些方法来实现这个功能。本文将详细介绍如何在C中实现云端存储变量。 首先,我们需要理解,C本身并没有直接…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
