java 运算符 选择语句
1:运算符
运算符:对字面量或者变量进行操作的符号
表达式:用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
举例说明:**
int a = 10;
int b = 20;
int c = a + b;
+ :是运算符,是算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
1.1 算术运算符
Java中的算术运算符有如下几种:

了解了Java中的算术运算符之后,下面我们到IDEA中去使用一下:
/*算术运算符*/
public class OperatorDemo {public static void main(String[] args) {//定义两个int类型的变量int a = 6;int b = 4;System.out.println(a + b);//10System.out.println(a - b);//2System.out.println(a * b);//24System.out.println(a / b);//1.5? 1System.out.println(a % b);//2//整数相除只能得到整数,要想得到小数,必须有浮点数的参与System.out.println(6.0 / 4);}
}j
注意事项:

1.2 案例数值拆分
需求:定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台
什么意思呢?
举例:int number = 123;
在控制台输出结果:
个位是:3
十位是:2
百位是:1
知道了要做什么后,下面我们来分析一下如何获取个位,十位,百位:
分析:
① 个位的计算:数值 % 10
123 除以 10(商12,余数为3)
② 十位的计算:数值 / 10 % 10
123 除以 10 (商12,余数为3,整数相除只能得到整数)
12 除以 10 (商1,余数为2)
③ 百位的计算:数值 / 10 / 10 % 10
123 / 10 / 10 % 10(123 / 10 得到12,12 / 10 得到1,1 % 10 得到 1)
分析完毕之后,下面我们到IDEA中去实现一下:
/*需求:定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台*/
public class OperatorTest {public static void main(String[] args) {//定义一个三位数int number = 123;//获取个,十,百位数据int ge = number % 10;int shi = number / 10 % 10;int bai = number / 100 % 10;//输出结果System.out.println("个位是:" + ge);System.out.println("十位是:" + shi);System.out.println("百位是:" + bai);}
}
1.3 +操作的三种情况
1.3.1 数字相加(类型转换)
在Java程序中,数据参与运算,要求类型一致。这里就涉及到了数据的类型转换。而类型转换又分为两种:
-
隐式转换
-
强制转换
隐式转换:把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量

强制转换:把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
格式:数据类型 变量名 = (目标数据类型)(数值或者变量)
IDEA中代码演示如下:
/*数字相加*/
public class OperatorDemo01 {public static void main(String[] args) {int a = 10;double b = 13.14;System.out.println(a + b);int c = (int)(a + b);System.out.println(c);
// double d = a + b;short s = 10;int i = 20;int j = s + i;
// short ss = s + i;short ss = (short) (s + i);}
}
1.3.2 字符相加
来,继续啊,这里我们再来说一下字符参与+操作。
先到IDEA中去讲解,然后再回来总结。
IDEA中代码演示如下:
/*字符相加*/
public class OperatorDemo02 {public static void main(String[] args) {//定义两个变量int i = 10;char ch = 'A';//'A'的值是65ch = 'a';//'a'的值是97ch = '0';//'0'的值是48System.out.println(i + ch);}
}
代码演示完毕后,回到资料总结:
字符参与+操作,其实就是拿字符在计算机底层对应的数值来进行计算的,这里我们了解一下英文大小写字符和数字字符对应的数据值:
-
‘A’ 65 A-Z是连续的
-
‘a’ 97 a-z是连续的
-
‘0’ 48 0-9是连续的
常用的字符及其对应的数值关系:

1.3.3 字符串相加
/*字符串相加*/
public class OperatorDemo03 {public static void main(String[] args) {System.out.println("it" + "heima");System.out.println("itheima" + 666);System.out.println(666 + "itheima");System.out.println("itheima" + 6 + 66);System.out.println(1 + 99 + "年itheima");}
}
代码演示完毕后,回到资料总结:
-
当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算
-
“zhongguo”+ 666
-
-
当连续进行“+”操作时,从左到右逐个执行
-
1 + 9999 + “岁zhongguo”
-
1.4 赋值运算符
Java中的赋值运算符有如下几种:

了解了Java中的赋值运算符之后,下面我们到IDEA中去使用一下:
/*赋值运算符*/
public class OperatorDemo {public static void main(String[] args) {int a = 10;System.out.println("a:" + a);// += : 把左边和右边的数据相加,最后把结果赋值给左边
// a += 20;a = a + 20;System.out.println("a:" + a);//注意:扩展的赋值运算符底层隐含了强制类型转换short s = 1;
// s += 2;s = (short) (s + 2);System.out.println("s:" + s);}
}
注意事项:

2:选择语句
来,继续啊,为了控制程序的执行流程,Java 就提供了一些流程控制语句,我们先来举例说明一下:
顺序结构:从上往下,依次执行

选择结构:
QQ界面的登录,填写账号和密码正确,展示好友列表界面。填写账号或者密码有误,提示:你输入的账号或密码不正确。
这就是通过选择结构来实现的,实际开发中,类似这种逻辑判断的情况非常常见。

循环结构:
比如说,京东商城中,查询手机数据,京东就会返回给你一堆符合你查询要求的数据。
假如,每一部手机数据的展示需要5行代码,如果最终返回了1000部手机,你就需要编写5000行代码来实现数据展示。
这样就太麻烦了,那么,有没有一种流程语句,能够简化这种操作呢?答案肯定是有的,就是我们的循环结构,它就可以通过一个比较简单的结构来控制我们的手机展示1000次。
比如说,带着这样写就可以了,这就是循环结构。

2.1 顺序结构
顺序结构:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行
执行流程图:

/*顺序结构语句*/
public class OrderDemo {public static void main(String[] args) {System.out.println("开始");System.out.println("语句A");System.out.println("语句B");System.out.println("语句C");System.out.println("结束");}
}
2.2 Debug的基本使用
Debug:是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序
它的两大作用,查看程序执行流程,调试程序。由于目前我们每个程序的代码内容还比较少,
所以,今天重点掌握查看程序执行流程,当代码复杂的时候,我们需要通过debug来调试程序。那么,debug操作的流程是什么样子的呢?
在讲解操作流程前,我们来说一下:
Debug,又被称为断点调试,断点其实是一个标记,告诉我们从哪里开始查看
知道了Debug被称为断点调试后,我们来讲一下Debug的操作流程:
① 如何加断点
选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可。如图

② 如何运行加了断点的程序
在代码区域右键Debug执行

③ 看哪里
看Debugger窗口,看Console窗口

④ 点哪里
点(Step Over F8) 开始,点(Stop)结束

⑤ 如何删除断点
选择要删除的断点,单击鼠标左键即可。也就是把第一步的动作,再做一次即可。
总结一下,Debug的使用流程:
①如何加断点:选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可
②如何运行加了断点的程序:在代码区域右键Debug执行
③看哪里:看Debugger窗口,看Console窗口
④点哪里:点(Step Over F8) 开始,点(Stop)结束
⑤如何删除断点:选择要删除的断点,单击鼠标左键即可
通过Debug的方式看一下,如下代码的执行流程:
/*Debug查看程序执行流程*/
public class DebugDemo {public static void main(String[] args) {//定义一个int类型的变量,用来表示价格int price = 998;//输出变量System.out.println(price);//修改变量的值price = 888;//再次输出变量的值System.out.println(price);}
}
2.3 选择语句之if
选择语句有两种结构:
-
if语句
-
switch语句
if语句,它会根据判定的结果(真或假)决定执行某个分支的代码
举例说明一下:

无人驾驶的核心就是需要编写大量的判断逻辑,让车辆的行驶变得更加安全。
了解了交通信号灯的基本逻辑后,下面呢,我们通过if语句来实现过马路的信号灯判断,而if语句呢,有三种格式,这里我们首先来学习第一种格式
2.3.1 if语句格式1
格式:

范例:

执行流程:

/*if语句格式1*/
public class IfDemo01 {public static void main(String[] args) {//定义一个变量,用来表示绿灯的状态boolean isGreen = true;isGreen = false;if(isGreen) {System.out.println("绿灯行");}}
}
2.3.2 if语句格式2和格式3
/*if语句格式2*/
public class IfDemo02 {public static void main(String[] args) {//定义一个变量,用来表示绿灯的状态boolean isGreen = true;isGreen = false;if (isGreen) {System.out.println("绿灯行");} else {System.out.println("不是绿灯,不允许行使");}}
}
if语句格式2:
格式:

范例:

执行流程:

public class IfDemo03 {public static void main(String[] args) {//定义三个变量,表示交通信号灯的三种状态boolean isRed = true;boolean isGreen = true;boolean isYellow = true;if (isRed) {System.out.println("红灯停");}if (isGreen) {System.out.println("绿灯行");}if (isYellow) {System.out.println("黄灯亮了等一等");}}
}
很明显,这是不合理的,因为我们把三种状态都设置为true了,而实际生活中,只会有一种状态为true,怎么解决呢多种情况的判断呢?
/*if语句格式3*/
public class IfDemo03 {public static void main(String[] args) {//定义三个变量,表示交通信号灯的三种状态boolean isRed = true;boolean isGreen = true;boolean isYellow = true;//红灯
// isGreen = false;
// isYellow = false;//绿灯
// isRed = false;
// isYellow = false;//黄灯
// isRed = false;
// isGreen = false;//出现了故障,信号灯都不亮了isRed = false;isGreen = false;isYellow = false;if(isRed) {System.out.println("红灯停");}else if(isGreen) {System.out.println("绿灯行");}else if(isYellow) {System.out.println("黄灯亮了等一等");} else {System.out.println("交通信号灯故障,请在保证安全的情况下通行");}}
}
if语句格式3:
格式:

执行流程:

2.3.3 案例1(交通信号灯)
需求:交通信号灯由红灯、绿灯、黄灯组成,请通过程序实现不同的信号灯给出不同的提示。
提示信息:红灯停、绿灯行、黄灯亮了等一等

分析:
① 用哪种类型来表示信号灯的三种状态呢?
用int类型来表示信号灯的三种状态(1表示红灯,2表示绿灯,3表示黄灯)
② 用if语句的哪种格式来实现该需求呢?
一般来说:1种情况的判断用if格式1,2种情况的判断用if格式2,多种情况的判断用if格式3
③ if语句判断的表达式该怎么写呢?
int light = 1;
if(light == 1) {…}
==:是关系运算符,用来判断两个数据是否相等,如果相等,结果为true,否则为false
分析完毕后,我们来说一下实现步骤:
实现步骤:
① 定义一个int类型的变量用来表示信号灯的状态(1表示红灯,2表示绿灯,3表示黄灯)
② 用if语句格式3进行多种情况的判断
③ 根据不同的情况给出不同的提示信息
知道了实现步骤,下面我们到IDEA中去实现一下:
/*需求:交通信号灯由红灯、绿灯、黄灯组成,请通过程序实现不同的信号灯给出不同的提示。提示信息:红灯停、绿灯行、黄灯亮了等一等*/
public class IfTest01 {public static void main(String[] args) {//1:定义一个int类型的变量用来表示信号灯的状态(1表示红灯,2表示绿灯,3表示黄灯)int light = 1;light = 2;light = 3;light = 4;//2:用if语句格式3进行多种情况的判断//3:根据不同的情况给出不同的提示信息if (light == 1) {System.out.println("红灯停");} else if (light == 2) {System.out.println("绿灯行");} else if (light == 3) {System.out.println("黄灯亮了等一等");} else {System.out.println("交通信号灯故障,请在保证安全的情况下通行");}}
}
2.3.4 关系运算符
Java中的关系运算符有如下几种:

/*关系运算符*/
public class OperatorDemo01 {public static void main(String[] args) {//定义三个int类型的变量int i = 10;int j = 20;int k = 10;//等于:==System.out.println(i == j);//falseSystem.out.println(i == k);//trueSystem.out.println("--------");//不等于:!=System.out.println(i != j);//trueSystem.out.println(i != k);//falseSystem.out.println("--------");//大于:>System.out.println(i > j);//falseSystem.out.println(i > k);//falseSystem.out.println("--------");//大于等于:>=System.out.println(i >= j);//falseSystem.out.println(i >= k);//trueSystem.out.println("--------");//千万不要把==写成了=System.out.println(i = j); //20}
}
注意事项:

2.3.5 案例2(奇偶数)
需求:给定一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
提示:偶数是能够被2整除的整数
首先,我们来简单的分析一下:
分析:
① 如何判断一个整数是奇数还是偶数?
整数对2进行取余,余数为0是偶数,否则为奇数
② 用if语句的哪种格式来实现该需求呢?
该整数要么是偶数,要么是奇数,2种情况,所以用if语句格式2
分析完毕后,我们来说一下实现步骤:
实现步骤:
① 定义一个int类型的整数
② 用if语句格式2进行判断
③ 根据是否是偶数给出不同的提示信息
/*需求:给定一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数*/
public class IfTest02 {public static void main(String[] args) {//1:定义一个int类型的整数int number = 10;number = 9;//2:用if语句格式2进行判断//3:根据是否是偶数给出不同的提示信息if (number % 2 == 0) {System.out.println(number + "是偶数");} else {System.out.println(number + "是奇数");}}
}
2.3.6 案例3(手机以旧换新)
需求:张三想买一台7988元的新手机,他的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新优惠,把他旧手机交给店家,新手机就能够打8折优惠。
为了更省钱,要不要以旧换新?请通过程序告诉张三
首先,我们来简单的分析一下:
分析:
① 计算不使用以旧换新的花费
7988 - 1500
② 计算使用以旧换新的花费
7988 * 0.8
③ 用if语句的哪种格式来实现该需求呢?
if语句格式2
分析完毕后,我们来说一下实现步骤:
实现步骤:
① 定义变量(money1)纪录不使用以旧换新的花费
② 定义变量(money2)纪录使用以旧换新的花费
③ 用if语句格式2进行判断 money1是否大于money2
④ 根据判断结果,给出相应的提示
/*需求:张三想买一台7988元的新手机,他的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新优惠,把他的旧手机交给店家,新手机就能够打8折优惠。为了更省钱,要不要以旧换新?请通过程序告诉张三*/
public class IfTest03 {public static void main(String[] args) {//1:定义变量(money1)纪录不使用以旧换新的花费int money1 = 7988 - 1500;//2:定义变量(money2)纪录使用以旧换新的花费double money2 = 7988 * 0.8;//3:用if语句格式2进行判断 money1是否大于money2//4:根据判断结果,给出相应的提示if (money1 > money2) {System.out.println("使用以旧换新更省钱");} else {System.out.println("不使用以旧换新更省钱");}}
}
2.3.7 案例4(你是青年人吗)
需求:给出你的年龄,通过程序判断你是否属于青年人?
提示:世界卫生组织,经过对全球人体素质和平均寿命进行测定,对年龄划分标准作出了新的规定

首先,我们来简单的分析一下:
分析:
① 如何判断一个年龄是否属于青年人?
年龄要大于等于18,并且小于等于65
② 在Java中如何表示并且的关系呢?
age >=18 && age<=65
&&:是逻辑运算符,用来连接两个结果为boolean类型的表达式,都为true,结果为true,否则为false
分析完毕后,我们来说一下实现步骤:
实现步骤:
① 定义一个int类型的变量来表示你的年龄
② 用if语句格式2进行判断看你是否属于青年人
③ 根据是否是青年人给出不同的提示信息
知道了实现步骤,下面我们到IDEA中去实现一下:
/*需求:给出你的年龄,通过程序判断你是否属于青年人?提示:青年人的年龄范围 18~65*/
public class IfTest04 {public static void main(String[] args) {//1:定义一个int类型的变量来表示你的年龄int age = 22;age = 100;//2:用if语句格式2进行判断看你是否属于青年人//3:根据是否是青年人给出不同的提示信息if(age>=18 && age<=65) {System.out.println("你是青年人");} else {System.out.println("你不是青年人");}}
}
2.3.8 逻辑运算符
Java中常用的逻辑运算符有如下几种:

/*逻辑运算符*/
public class OperatorDemo02 {public static void main(String[] args) {//定义变量int i = 10;int j = 20;int k = 30;//逻辑与:&&System.out.println((i>j) && (i>k));//false && falseSystem.out.println((i<j) && (i>k));//true && falseSystem.out.println((i>j) && (i<k));//false && trueSystem.out.println((i<j) && (i<k));//true && trueSystem.out.println("-----------------------");//逻辑或:||System.out.println((i>j) || (i>k));//false || falseSystem.out.println((i<j) || (i>k));//true || falseSystem.out.println((i>j) || (i<k));//false || trueSystem.out.println((i<j) || (i<k));//true || trueSystem.out.println("-----------------------");//逻辑非:!System.out.println(!(i>j));//!falseSystem.out.println(!!(i>j));//!!falseSystem.out.println(!!!(i>j));//!!!falseSystem.out.println(!!!!(i>j));//!!!!false}
}
2.3.9 三元运算符
格式:关系表达式 ?表达式1 :表达式2;
范例:a > b ? a : b;
执行流程:
-
首先计算关系表达式的值
-
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果
了解了三元运算符的执行流程后,下面我们到IDEA中去使用一下:
/*三元运算符*/
public class OperatorDemo03 {public static void main(String[] args) {int a = 10;int b = 20;int max = a > b ? a : b;System.out.println("较大的值是:" + max);}
}
2.3.10 三元运算符和if语句格式2的区别
总结:
/*三元运算符和if语句格式2的区别*/
public class OperatorTest {public static void main(String[] args) {//定义两个int类型的变量int a = 10;int b = 20;//需求:获取两个数中的较大值//if语句实现
// int max;
// if (a > b) {
// max = a;
// } else {
// max = b;
// }
// System.out.println("较大的值是:" + max);if(a > b) {System.out.println("较大的值是:" + a);}else {System.out.println("较大的值是:" + b);}//三元运算符实现int max = a > b? a: b;System.out.println("较大的值是:" + max);}
}
总结:
-
如果if语句控制的内容:是用变量纪录数据值,可以通过三元运算符改进
-

-
如果if语句控制的内容是:是通过输出语句直接输出数据值,无法通过三元运算符改进
-

2.4 选择语句之switch
格式:

格式说明:

执行流程:

了解完switch语句后,下面我们到IDEA中去使用一下:
/*switch语句*/
public class SwitchDemo {public static void main(String[] args) {//定义一个int类型的变量用来表示信号灯的状态(1表示红灯,2表示绿灯,3表示黄灯)int light = 1;
// light = 2;
// light = 3;
// light = 4;//用switch语句实现交通信号灯案例switch (light) {case 1:System.out.println("红灯停");break;case 2:System.out.println("绿灯行");break;case 3:System.out.println("黄灯亮了等一等");break;default:System.out.println("交通信号灯故障,请在保证安全的情况下通行");break;}}
}
注意事项:
注意:在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象,在不判断下一个case值的情况下,向下运行,直到遇到break,或者整个switch语句结束
相关文章:
java 运算符 选择语句
1:运算符 运算符:对字面量或者变量进行操作的符号 表达式:用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。 举例说明:** int a 10; int b 20; in…...
CNN:Convolutional Neural Network(上)
目录 1 为什么使用 CNN 处理图像 2 CNN 的整体结构 2.1 Convolution 2.2 Colorful image 3 Convolution v.s. Fully Connected 4 Max Pooling 5 Flatten 6 CNN in Keras 原视频:李宏毅 2020:Convolutional Neural Network 1 为什么使用…...
将Android应用修改为鸿蒙应用的工作
将Android应用修改为鸿蒙(HarmonyOS)应用需要进行一系列主要的工作。以下是在进行这一转换过程中可能需要进行的主要工作,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.项目…...
03 Strategy策略
抽丝剥茧设计模式 之 Strategy策略 - 更多内容请见 目录 文章目录 一、Strategy策略二、Comparable和Comparator源码分析使用案例Arrays.sort源码Collections.sort源码Comparable源码Comparator源码 一、Strategy策略 策略模式是一种设计模式,它定义了一系列的算法…...
Python实现分位数回归模型(quantreg算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 分位数回归是简单的回归,就像普通的最小二乘法一样,但不是最小化平方误差的总和…...
【ROS2简单例程】基于python的发布订阅实现
1、自定义消息类型Student 1.1 创建base_interfaces_demo包 1.2 创建Student.msg文件 string name int32 age float64 height 1.2 在cmakeLists.txt中增加如下语句 #增加自定义消息类型的依赖 find_package(rosidl_default_generators REQUIRED) # 为接口文件生成源代码 ro…...
【期末考试】数据库综合复习宝典
目录 第一章 数据库系统概述 第二章 关系代数 第四章 关系数据库理论 第五章 数据库设计 第六章 数据库管理系统 第八章 事务管理 第一章 数据库系统概述 1.1三级模式 ①外模式:它为特定的应用程序或用户群体提供了一个数据视图,这个视图是独立于…...
OpenHarmony南向之LCD显示屏
OpenHarmony南向之LCD显示屏 概述 LCD(Liquid Crystal Display)驱动,通过对显示器上下电、初始化显示器驱动IC(Integrated Circuit)内部寄存器等操作,使其可以正常工作。 HDF Display驱动模型 LCD器件驱…...
核心笔记-短篇
接口管理平台:yapi 对象拷贝:Spring Bean 提供的 BeanUtils;hutool-core 提供的 BeanUtil 获得用户设备的信息:导入 UserAgentUtils 依赖;创建 UserAgent 对象使用 加密工具:DigestUtils,Spring Core 提供,静态方法:md5DigestAsHex(byte[]) 客户端编程工具包:HttpCli…...
系统学习Python——警告信息的控制模块warnings:为新版本的依赖关系更新代码
分类目录:《系统学习Python》总目录 在默认情况下,主要针对Python开发者(而不是Python应用程序的最终用户)的警告类别,会被忽略。 值得注意的是,这个“默认忽略”的列表包含DeprecationWarning(…...
爬虫的基本原理
基本原理 可以把网页与网页之间的链接关系比作节点中的连线,爬虫可以根据网页中的关系获取后续的网页,当整个网站涉及的页面全部被爬虫访问到后,网站的数据就被访问下来了。 1.爬虫概述 简单点讲,爬虫就是获取网页并提取和保存信…...
MySQL核心SQL
一.结构化查询语言 SQL是结构化查询语言(Structure Query Language),它是关系型数据库的通用语言。 SQL 主要可以划分为以下 3 个类别: DDL(Data Definition Languages)语句 数据定义语言,这…...
关于 setData 同步异步的问题
小程序官方文档中的回答解释: 所以大概意思就是: 1.setData在逻辑层的操作是同步,因此this.data中的相关数据会立即更新,比如下面的例子: const a 1 this.setData({b: a ? a : , }) console.log(that.data.b) // 1 2. setData在视图层的操作是异步,…...
Centos创建一个Python虚拟环境
在 CentOS 上创建一个 Python 虚拟环境,可以使用 virtualenv 工具。以下是创建和激活虚拟环境的基本步骤: 1.安装virtualenv 如果还没有安装 virtualenv,可以使用以下命令安装: sudo yum install python3-virtualenv请注意&…...
怎么使用好爬虫IP代理?爬虫代理IP有哪些使用技巧?
在互联网时代,爬虫技术被广泛应用于数据采集和处理。然而,在使用爬虫技术的过程中,经常会遇到IP被封禁的问题,这给数据采集工作带来了很大的困扰。因此,使用爬虫IP代理成为了解决这个问题的有效方法。本文将介绍如何使…...
C#,字符串匹配算法(模式搜索)Z算法的源代码与数据可视化
Z算法也是模式搜索(Pattern Search Algorithm)的常用算法。 本文代码的运算效果: 一、Z 算法 线性时间模式搜索算法的Z算法,在线性时间内查找文本中模式的所有出现。 假设文本长度为 n,模式长度为 m,那么…...
强化学习actor-critic
...
使用推测解码 (Speculative Decoding) 使 Whisper 实现 2 倍的推理加速
Open AI 推出的 Whisper 是一个通用语音转录模型,在各种基准和音频条件下都取得了非常棒的结果。最新的 large-v3 模型登顶了 OpenASR 排行榜,被评为最佳的开源英语语音转录模型。该模型在 Common Voice 15 数据集的 58 种语言中也展现出了强大的多语言性…...
pi gpio 内存映射
树霉pi gpio内存映射 #include <stdio.h> #include <fcntl.h> #include <sys/mman.h> #include <unistd.h> #include <stdlib.h>#define BCM2835_PERI_BASE 0x20000000 #define GPIO_BASE (BCM2835_PERI_BASE 0x200000) #define PAGE_SIZE…...
[NAND Flash 6.2] NAND 初始化常用命令:复位 (Reset) 和 Read ID 和 Read UID 操作和代码实现
依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< 把下文中的字母和数字用`包起来, 中文不变。 全文 4400 字,主要内容 复位的目的和作用? NAND Reset 种类:FFh, FCh, FAh, FDh 区别 Reset 操作步骤 和…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
