02-Java基础编程
Java基础编程
- Java 基础语法
- Java 标识符
- 变量
- 变量的类型
- Java 基本数据类型
- 基本数据类型转换
- 运算符
- 常见运算符
- 运算符的优先级
- 程序流程控制
- 分支语句
- 循环结构
- 常用的循环结构
- 循环的嵌套
- break 和 continue 关键字
- 数组
- 一维数组
- 多维数组的使用
- Arrays 工具类的使用
- 数组中常见的异常
Java 基础语法
Java 标识符
Java 对各种变量、方法和类等要素命名时使用的字符序列称为 标识符,定义合法标识符规则如下:
- 由 26 个英文字母大小写、0-9、_ 或 $ 组成
- 数字不可以开头
- 不可以使用关键字和保留字,但能包含关键字和保留字
- Java 中严格区分大小写,长度无限制
- 标识符不能包含空格
Java 中的名称命名规范如下:
- 包名使用多单词组成时所有字母都小写(
xxxyyyzzz) - 类名、接口名使用多单词组成时,所有单词的首字母大写(
XxxYyyZzz) - 变量名、方法名使用多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(
xxxYyyZzz) - 常量名的所有字母都要大写,多单词时每个单词用下划线连接(
XXX_YYY_ZZZ) - 为了提高阅读性,要见名知意
- 不建议使用汉字命名
关于 Java 关键字和保留字
(一)Java 关键字
- 用于定义数据类型的关键字:
class、interface、enum、byte、short、int、long、float、double、char、boolean、void- 用于定义流程控制的关键字:
if、else、switch、case、default、while、do、for、break、continue、return- 用于定义访问权限修饰符的关键字:
private、protected、public- 用于定义类、函数、变量修饰符的关键字:
abstract、final、static、synchronized- 用于定义类与类之间关系的关键字:
extends、implements- 用于定义建立实例及引用实例,判断实例的关键字:
new、this、super、instanceof- 用于异常处理的关键字:
try、catch、finally、throw、throws- 用于包的关键字:
package、import- 其他修饰符关键字:
native、strictfp、transient、volatile、assert- 用于定义数据类型值的字面值:
true、false、null(二)Java 保留字
Java 保留字是现有 Java 版本尚未使用,但以后版本可能会作为关键字使用,命名标识符时要避免使用这些保留字:goto、const。
变量
变量的类型
变量是程序中最基本的存储单元(包含变量类型、变量名和存储的值),用于在内存中保存数据。Java 中使用变量时需要注意:
- Java 中每个变量必须先声明后使用
- 使用变量名来访问这块区域的数据
- 变量的作用域在其定义所在的一对
{ }内 - 变量只有在其作用域内才有效
- 同一个作用域内不能定义重名的变量
对于每一种数据都定义了明确的数据类型(强类型语言),在内存中分配了不同大小的内存空间:

按照变量声明的位置不同,可以分为:成员变量和局部变量:

Java 基本数据类型
整数类型包括:byte、short、int 和 long,使用案例如下:
// byte: -128 ~ 127
byte b = 125;
// short:-2^15 ~ 2^15-1
short s = 126;
// int: 默认的整型,-2^31 ~ 2^31-1
int i = 129;
// long -2^63 ~ 2^63-1
long l = 1258L;
浮点型包括:float、double,使用案例如下:
// float 4字节 -3.403E38 ~ 3.403E38
float f = 12.34f;
// double 8字节 -1.798E308 ~ 1.798E308 默认类型
double d = 12.34;
字符型包括:char,使用案例如下:
/*
* char 可以有三种表现形式
*/
// 1. 单个字符
char c1 = 'a';
// 2. 转义字符
char c2 = '\n';
// 3. Unicode值
char c3 = '\u000f';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
布尔类型包括:boolean,一般用来判断逻辑条件:
// 注意:Java 中的 boolean 类型只能取值 true 和 false
boolean isMan = false;
基本数据类型转换
(一)自动类型转换
自动类型转换是指容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:

- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
byte、short、char之间不会相互转换,它们三者在计算时首先转换为int类型boolean类型不能与其它数据类型运算- 当把任何基本数据类型的值和字符串进行连接运算时(
+),基本数据类型的值将自动转化为字符串类型
// 全部提升为double类型
byte b1 = 12;
byte b2 = 22;
// 下面的代码报错,因为byte和byte运算也会自动转换为 int
// byte b3 = b1 + b2;
int i = b1 + b2;
(二)强制类型转换
强制类型转换是自动类型转换的逆过程,能够将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 () ,但可能造成精度降低或溢出,需要格外要注意。
int number = (int)12.23;
通常字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型:
int number = Integer.parseInt("123");
boolean 类型不可以转换为其它的数据类型。
运算符
常见运算符
(一)算术运算符
常见的算术运算符如下:
| 运算符 | 运算 | 案例 | 结果 |
|---|---|---|---|
| + | 正号 | +3 | 3 |
| - | 负号 | b=4;-b | -4 |
| + | 加 | 5+5 | 10 |
| - | 减 | 6-4 | 2 |
| * | 乘 | 3*4 | 12 |
| / | 除 | 5/5 | 1 |
| % | 取模(取余) | 7%5 | 2 |
| ++ | 自增(前):先运算后取值 | a=2;b=++a; | a=3;b=3 |
| ++ | 自增(后):先取值后运算 | a=2;b=a++; | a=3;b=2 |
| – | 自减(前):先运算后取值 | a=2;b=–a; | a=1;b=1 |
| – | 自减(后):先取值后运算 | a=2;b=a–; | a=1;b=2 |
| + | 字符串连接 | “He” + “llo” | “Hello” |
算术运算符需要注意的问题
- 如果对负数取模可以把模数的负号忽略不记(如:
5 % -2 = 1),但被模数是负数则不可忽略(如:-5 % -2 = -1);此外,取模运算的结果不一定总是整数- 对于除号
/,它的整数除和小数除是有区别的:整数之间做除法时只保留整数部分而舍弃小数部分+除字符串相加功能外,还能把非字符串转换成字符串
(二)赋值运算符
赋值运算符是= ,当 = 两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理(支持连续赋值)。此外,赋值运算符还包括下面的扩展赋值运算符:+=、-=、*=、/=、%= 。
(三)比较运算符(关系运算符)
| 运算符 | 运算 | 案例 | 结果 |
|---|---|---|---|
| == | 相等于 | 4==3 | false |
| != | 不等于 | 4!=3 | true |
| < | 小于 | 4<3 | false |
| > | 大于 | 4>3 | true |
| <= | 小于等于 | 4<=3 | false |
| >= | 大于等于 | 4>=3 | true |
| instanceof | 检查是否是类的对象 | “Hello” instanceof String | true |
注意
- 比较运算符的结果都是
boolean型- 比较运算符
==不能误写成=
(四)逻辑运算符
| a | b | a&b | a&&b | a|b | a||b | !a | a^b |
|---|---|---|---|---|---|---|---|
| true | true | true | true | true | true | false | false |
| true | false | false | false | true | true | false | true |
| false | true | false | false | true | true | true | true |
| false | false | false | false | false | false | true | false |
& 和 && 的区别
- 单
&时,左边无论真假,右边都进行运算- 双
&时,如果左边为真,右边参与运算;如果左边为假,那么右边不参与运算|和||的区别同理,||表示当左边为真,右边不参与运算。int a = 20; // ++a > 10 不会执行 if (false && ++a > 10) {} System.out.println(a); // 20 // ++a > 10 会执行 if (false & ++a > 10) {} System.out.println(a); // 21 // ++a > 10 不会执行 if (true || ++a > 10) {} System.out.println(a); // 21 // ++a > 10 会执行 if (false | ++a > 10) {} System.out.println(a); // 22
(五)位运算符
| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| << | 左移 | 3 << 2 | 12 |
| >> | 右移 | 3 >> 1 | 1 |
| >>> | 无符号右移 | 3 >>> 1 | 1 |
| & | 与运算 | 6 & 3 | 2 |
| | | 或运算 | 6 | 3 | 7 |
| ^ | 异或运算 | 6 ^ 3 | 5 |
| ~ | 取反运算 | ~6 | -7 |
位运算符是直接对整数的二进制进行的运算。
| 运算符 | 说明 |
|---|---|
| << | 空位补0,被移除的高位丢弃,空缺位补0 |
| >> | 被移位的二进制最高位是0,右移后空缺位补0;最高位是1,空缺位补1 |
| >>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补 |
| & | 二进制位进行&运算,只有1&1时结果是1,否则是0 |
| | | 二进制位进行 | 运算,只有 0|0 时的结果是0,否则是1 |
| ^ | 相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1 |
| ~ | 正数取反,各二进制码按补码各位取反;负数取反,各二进制码按补码各位取反 |
(六)三元运算符
三元运算符的格式如下 (条件表达式?表达式1:表达式2),当条件表达式为 true 的时候运算结果是表达式 1,否则是表达式2:
int number = 3 > 2 ? 3 : 2;
运算符的优先级
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如图,上一行运算符总优先于下一行:

程序流程控制
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。流程控制方式采用结构化程序设计中规定的三种基本流程结构:顺序结构、分支结构和循环结构。
分支语句
(一)if-else 语句
import java.util.Scanner;public class HelloWorld {public static void main(String[] args) {int ticket = (int)(Math.random() * 90 + 10);Scanner sc = new Scanner(System.in);System.out.print("请输入彩票号码(两位数):");int number = sc.nextInt();String tStr = "" + ticket;String nStr ="" + number;System.out.println("彩票号码:" + ticket);System.out.println("输入的号码:" + number);if (tStr.equals(nStr)) {System.out.println("奖金 10000 美元");} else if (tStr.charAt(0) == nStr.charAt(1) && tStr.charAt(1) == nStr.charAt(0) ) {System.out.println("奖金 3000 美元");} else if (tStr.charAt(0) == nStr.charAt(0) || tStr.charAt(1) == nStr.charAt(1) ) {System.out.println("奖金 1000 美元");} else if (tStr.charAt(0) == nStr.charAt(1) || tStr.charAt(1) == nStr.charAt(0) ) {System.out.println("奖金 500 美元");} else {System.out.println("毛都没有");}}
}
if-else 使用说明
- 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
- 语句块只有一条执行语句时,一对
{}可以省略,但建议保留if-else语句结构根据需要可以嵌套使用- 当
if-else结构是多选一时,最后的else是可选的,根据需要可以省略- 当多个条件是互斥关系时,条件判断语句及执行语句间顺序无所谓;当多个条件是包含关系时,需要遵循 小上大下 / 子上父下
int score = 80; if (score >= 90) {System.out.println("优秀"); } else if (score >= 80) {System.out.println("良好"); } else if (score >= 60) {System.out.println("及格"); } else {System.out.println("不及格"); }
(二)switch-case 语句
import java.util.Scanner;public class HelloWorld {public static void main(String[] args) {// 根据用于指定月份,打印该月份所属的季节// 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季Scanner sc = new Scanner(System.in);System.out.print("请输入月份:");int month = sc.nextInt();switch (month) {case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;case 12:case 1:case 2:System.out.println("冬季");break;default:System.out.println("出入月份不对");break;}}
}
switch-case 使用说明
switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举,Stringcase子句中的值必须是常量,不能是变量名或不确定的表达式值- 同一个
switch语句,所有case子句中的常量值互不相同break语句用来在执行完一个case分支后使程序跳出switch语句块。如果没有break,程序会顺序执行到switch结尾default子句是可任选的,其位置也是灵活的,当没有匹配的case时执行defaultswitch 和 if 语句的对比
- 如果判断的具体数值不多,而且符合
byte、short、char、int、String、枚举等几种类型,虽然两个语句都可以使用,但建议使用swtich语句,因为效率稍高- 其他情况,如:对区间判断、对结果为
boolean类型判断等,则使用if,因为if的使用范围更广也就是说,使用
switch-case的,都可以改写为if-else,反之不成立。
循环结构
常用的循环结构
循环结构能够实现在某些条件满足的情况下反复执行特定代码的功能,一般循环语句由四个部分组成:初始化部分(init_statement)、循环条件部分(test_exp)、循环体部分(body_statement)和迭代部分(alter_statement)

(一)for 循环
public class HelloWorld {public static void main(String[] args) {int sum = 0;for (int i = 0; i < 100; i++) {if (i % 2 == 0) {sum += i;}}System.out.println("100 以内的偶数的和是:" + sum);}
}
(二)while 循环
public class HelloWorld {public static void main(String[] args) {int sum = 0;int i = 0;while (i < 100) {if (i % 2 == 0) {sum += i;}i++;}System.out.println("100 以内的偶数的和是:" + sum);}
}
(三)do-while 循环
public class HelloWorld {public static void main(String[] args) {int sum = 0;int i = 0;do {if (i % 2 == 0) {sum += i;}i++;} while (i < 100);System.out.println("100 以内的偶数的和是:" + sum);}
}
循环的嵌套
循环是可以嵌套的,将一个循环放在另一个循环体内就形成了嵌套循环:
public class HelloWorld {public static void main(String[] args) {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(i + "*" + j + "=" + (i * j) + "\t");}System.out.println();}}
}
break 和 continue 关键字
break 语句用于终止某个语句块的执行:
public class HelloWorld {public static void main(String[] args) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 10; j++) {if (j % 2 == 0) {System.out.print(j + "\t");break;}}System.out.println();}}
}
break 语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块:
public class HelloWorld {public static void main(String[] args) {out: for (int i = 0; i < 3; i++) {for (int j = 0; j < 10; j++) {if (j % 2 == 0) {System.out.print(j + "\t");break out;}}System.out.println();}}
}
continue 语句用于跳过其所在循环语句块的一次执行,继续下一次循环(continue 只能使用在循环结构中):
public class HelloWorld {public static void main(String[] args) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 10; j++) {if (j % 2 == 0) {System.out.print(j + "\t");continue;}}System.out.println();}}
}
continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环:
public class HelloWorld {public static void main(String[] args) {out: for (int i = 0; i < 3; i++) {for (int j = 0; j < 10; j++) {if (j % 2 == 0) {System.out.print(j + "\t");continue out;}}System.out.println();}}
}
特殊流程控制语句说明
break只能用于switch语句和循环语句中continue只能用于循环语句中continue是终止本次循环,break是终止本层循环break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句- 标号语句必须紧接在循环的头部,标号语句不能用在非循环语句的前面
return并非专门用于结束循环的,它的功能是结束一个方法,当一个方法执行到一个return语句时,这个方法将被结束- 与
break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内
数组
数组(Array)是多个相同类型数据按一定顺序排列的集合,使用一个名字命名,并通过编号的方式对这些数据进行统一管理:
- 数组本身是 引用数据类型,而数组中的元素可以是 任何数据类型(包括:基本数据类型和引用数据类型)
- 创建数组对象会在内存中开辟一整块 连续的空间,而数组名中引用的是这块连续空间的 首地址
- 数组的 长度一旦确定,就不能修改
- 可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快
- 数组的分类:
- 按照维度:一维数组、二维数组、三维数组、…
- 按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组
一维数组
数组的初始化方式如下:
// 方法一
int arr1[];
arr1 = new int[3];// 方法二
int arr2[] = new int[3];// 方法三
int arr3[] = new int[] {1, 2, 3};// 方法四
int arr4[] = {1, 2, 3, 4};
arr4[0] = 1;
System.out.println(arr4[0]);
关于数组的几点说明
- 定义并用运算符
new为之分配空间后,才可以引用数组中的每个元素- 数组元素的引用方式:
数组名[数组元素下标]- 每个数组都有一个属性
length指明它的长度(数组一旦初始化,其长度是不可变的)
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化:
- 对于基本数据类型而言,默认初始化值各有不同
- 对于引用数据类型而言,默认初始化值为
null
| 数组元素类型 | 元素默认初始值 |
|---|---|
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0L |
| float | 0.0F |
| double | 0.0 |
| char | 0 或 ‘\u0000’ |
| boolean | false |
| 引用类型 | null |
多维数组的使用
Java 语言里提供了支持多维数组的语法,但是从数组底层的运行机制来看,其实没有多维数组:
// 方法一
int[][] arr1 = new int[3][2];// 方法二
int[][] arr2 = new int[3][];// 方法三
int[][] arr3 = new int[][]{{3,8,2},{2,7},{9,0,1,6}
};
Arrays 工具类的使用
java.util.Arrays 类是操作数组的工具类,包含了用来操作数组(比如:排序和搜索)的各种方法:
| 方法 | 说明 |
|---|---|
| boolean equals(int[] a, int[] b) | 判断两个数组是否相等 |
| String toString(int[] a) | 输出数组信息 |
| void fill(int[] a, int val) | 将指定值填充到数组之中 |
| void sort(int[] a) | 对数组进行排序 |
| int binarySearch(int[] a, int key) | 对排序后的数组进行二分法检索指定的值 |
public class HelloWorld {public static void main(String[] args) {int[] array = {2,4,1,2,7,9,5,6,7};System.out.println(Arrays.toString(array));Arrays.sort(array);System.out.println(Arrays.toString(array));}
}
数组中常见的异常
// 数组脚标越界异常(ArrayIndexOutOfBoundsException)
// 访问到了数组中的不存在的脚标时发生
int[] arr = new int[2];
System.out.println(arr[2]);
System.out.println(arr[-1]);// 空指针异常(NullPointerException)
// arr引用没有指向实体,却在操作实体中的元素时。
int[] arr = null;
System.out.println(arr[0]);
相关文章:
02-Java基础编程
Java基础编程 Java 基础语法Java 标识符变量变量的类型Java 基本数据类型基本数据类型转换 运算符常见运算符运算符的优先级 程序流程控制分支语句循环结构常用的循环结构循环的嵌套break 和 continue 关键字 数组一维数组多维数组的使用Arrays 工具类的使用数组中常见的异常 J…...
武忠祥老师每日一题||定积分基础训练(十)
已知f(x)连续 ∫ 0 x t f ( x − t ) d t 1 − cos x , 求 ∫ 0 π 2 f ( x ) d x 的值。 \int_{0}^{x}tf(x-t)\,{\rm d}t1-\cos x,求\int_{0}^{\frac{\pi}{2}}f(x)dx的值。 ∫0xtf(x−t)dt1−cosx,求∫02πf(x)dx的值。 已知一个关于f的变上限积分等式,&…...
C/C++趣味程序设计百例(41~50)
C/C语言经典、实用、趣味程序设计编程百例精解(5) 41.马克思手稿中的数学题 马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个…...
论文阅读-2-DeepSMOTE Fusing Deep Learning and SMOTE for Imbalanced Data
文章目录 Abstract1. Introduction2. Learning From Imbalanced Data1. 数据级2. 算法级3. 集成方法 3. Deep Learning From Imbalanced Data基于深度神经网络的实例生成损失函数适应长尾识别 4. DeepSMOTEA. 动机B. 描述C. encoder-decoder框架D. 增强的损失函数E. 人工图像生…...
三种方法教你让模糊照片秒变高清图
现在随着数字相机和智能手机的普及,我们拍摄的照片数量越来越多,但是有些照片可能因为环境或技术等原因导致模糊不清,这时候我们就需要使用一些软件或工具来让照片变得清晰,以满足我们的需求。 下面介绍三种常用的照片变清晰的方…...
PyTorch深度学习实战 | 基于线性回归、决策树和SVM进行鸢尾花分类
鸢尾花数据集是机器学习领域非常经典的一个分类任务数据集。它的英文名称为Iris Data Set,使用sklearn库可以直接下载并导入该数据集。数据集总共包含150行数据,每一行数据由4个特征值及一个标签组成。标签为三种不同类别的鸢尾花,分别为&…...
服务端接口优化方案
一、背景 针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗时过长的问题,就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 二、接口优化方案总结 1. 批处理 批量思想:批量操作数据…...
【并发基础】Happens-Before模型详解
目录 一、Happens-Before模型简介 二、组成Happens-Before模型的八种规则 2.1 程序顺序规则(as-if-serial语义) 2.2 传递性规则 2.3 volatile变量规则 2.4 监视器锁规则 2.5 start规则 2.6 Join规则 一、Happens-Before模型简介 除了显示引用vo…...
Kubernetes系列---Kubernetes 理论知识 | 初识
Kubernetes系列---Kubernetes 理论知识 | 初识 1.K8s 是什么?2.K8s 特性3.小拓展(业务升级)4.K8s 集群架构与组件①架构拓扑图:②Master 组件③Node 组件 五 K8s 核心概念六 官方提供的三种部署方式总结 1.K8s 是什么?…...
KingbaseES 原生XML系列三--XML数据查询函数
KingbaseES 原生XML系列三--XML数据查询函数(EXTRACT,EXTRACTVALUE,EXISTSNODE,XPATH,XPATH_EXISTS,XMLEXISTS) XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的一种公共语言。在不同平台下产生的信息,可以很容易加载XML数据到程序…...
【51单片机】点亮一个LED灯(看开发板原理图十分重要)
🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The Right Path】 🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔基础内容 🏳…...
数据可视化工具 - ECharts以及柱状图的编写
1 快速上手 引入echarts 插件文件到html页面中 <head><meta charset"utf-8"/><title>ECharts</title><!-- step1 引入刚刚下载的 ECharts 文件 --><script src"./echarts.js"></script> </head>准备一个…...
【AI绘画】——Midjourney关键词格式解析(常用参数分享)
目前在AI绘画模型中,Midjourney的效果是公认的top级别,但同时也是相对较难使用的,对小白来说比较难上手,主要就在于Mj没有webui,不能选择参数,怎么找到这些隐藏参数并且触发它是用好Mj的第一步。 今天就来…...
操作符知识点大全(简洁,全面,含使用场景,演示,代码)
目录 一.算术操作符 1.要点: 二.负数原码,反码,补码的互推 1.按位取反操作符:~(二进制位) 2.原反补互推演示 三.进制位的表示 1.不同进制位的特征: 2.二进制位表示 3.整型的二进制表…...
华工研究生语音课
这门课讲啥 语音蕴含的信息、语音识别的目的 语音的准平稳性、分帧、预加重、时域特征分析(能量和过零率)、端点检测(双门限法) 语音的基频及检测(主要是自相关法、野点的处理) 声音的产生过程…...
KingbaseES 原生XML系列二 -- XML数据操作函数
KingbaseES 原生XML系列二--XML数据操作函数(DELETEXML,APPENDCHILDXML,INSERTCHILDXML,INSERTCHILDXMLAFTER,INSERTCHILDXMLBEFORE,INSERTXMLAFTER,INSERTXMLBEFORE,UPDATEXML) XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的一种公共语言。…...
【Flink】DataStream API使用之源算子(Source)
源算子 创建环境之后,就可以构建数据的业务处理逻辑了,Flink可以从各种来源获取数据,然后构建DataStream进项转换。一般将数据的输入来源称为数据源(data source),而读取数据的算子就叫做源算子(…...
树莓派硬件介绍及配件选择
目录 树莓派Datasheet下载地址: Raspberry 4B 外观图: 技术规格书: 性能介绍: 树莓派配件选用 电源的选用: 树莓派外壳选用: 内存卡/U盘选用 树莓派Datasheet下载地址: Raspberry Pi …...
O2OA (翱途) 平台 V8.0 发布新增数据台账能力
亲爱的小伙伴们,O2OA (翱途) 平台开发团队经过几个月的持续努力,实现功能的新增、优化以及问题的修复。2023 年度 V8.0 版本已正式发布。欢迎大家到 O2OA 的官网上下载进行体验,也希望大家在藕粉社区里多提宝贵建议。本篇我们先为大家介绍应用…...
数控解锁怎么解 数控系统解锁解密
Amazon Fargate 在中国区正式落地,因 数控解锁使用 Serverless 架构,更加适合对性能要求不敏感的服务使用,Pyroscope 是一款基于 Golang 开发的应用程序性能分析工具,Pyroscope 的服务端为无状态服务且性能要求不敏感,…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
