当前位置: 首页 > news >正文

Java基础-判断和循环

1 流程控制语句

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。

1.1 流程控制语句分类

​ 顺序结构

​ 判断和选择结构(if, switch)

​ 循环结构(for, while, do…while)

1.2 顺序结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

顺序结构执行流程图:

1545615769372

2 判断语句:if语句

2.1 if语句格式1

格式:
if (关系表达式) {语句体;	
}

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体

③如果关系表达式的值为false就不执行语句体

④继续执行后面的语句内容

1545616039363

示例:

package com.iflytek.day04;public class _01_If {public static void main(String[] args) {System.out.println("开始");//定义两个变量int a = 10;int b = 20;//需求:判断a和b的值是否相等,如果相等,就在控制台输出:a等于bif(a == b) {System.out.println("a等于b");}//需求:判断a和c的值是否相等,如果相等,就在控制台输出:a等于cint c = 10;if(a == c) {System.out.println("a等于c");}System.out.println("结束");}
}

练习1:老丈人选女婿

需求:

​ 键盘录入女婿的酒量,如果大于2斤,老丈人给出回应,否则没有任何回应

代码示例:

package com.iflytek.day04;import java.util.Scanner;/*** 键盘录入女婿的酒量,如果大于2斤,老丈人给出回应,否则没有任何回应*/
public class _02_IfPractice01 {public static void main(String[] args) {//1.键盘录入女婿的酒量Scanner sc = new Scanner(System.in);System.out.println("请输入女婿的酒量");int wine = sc.nextInt();//5//2.对酒量进行一个判断即可if(wine > 2) {System.out.println("不错哟,小伙子!");}}
}

练习2:考试奖励

需求:

​ 键盘录入一个整数,表示小明的考试名次,如果名次为1,小红可以当小明的女朋友了。

代码示例:

package com.iflytek.day04;import java.util.Scanner;/*** 键盘录入一个整数,表示小明的考试名次,如果名次为1,小红可以当小明的女朋友了。*/
public class _03_IfPractice02 {public static void main(String[] args) {//1.键盘录入一个整数,表示小明的考试名次Scanner sc = new Scanner(System.in);System.out.println("请输入小明的名次");int rank = sc.nextInt();//2.对小明的考试成绩进行判断即可if(rank == 1){System.out.println("小红成为了小明的女朋友");}}
}

第一种格式的细节:

  1. 如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。

  2. 如果大括号中的语句体只有一条,那么大括号可以省略不写

    如果大括号省略了,那么if只能控制距离他最近的那一条语句。

    **建议:**自己不要省略大括号,如果别人这么写了,你要能看懂即可。

2.2 if语句格式2

格式:
if (关系表达式) {语句体1;	
} else {语句体2;	
}

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

1545616221283

示例:

package com.iflytek.day04;public class _04_IfElse {public static void main(String[] args) {System.out.println("开始");//定义两个变量int a = 10;int b = 20;//需求:判断a是否大于b,如果是,在控制台输出:a的值大于b,否则,在控制台输出:a的值不大于bif(a > b) {System.out.println("a的值大于b");} else {System.out.println("a的值不大于b");}System.out.println("结束");}
}

练习1:吃饭

需求:

​ 键盘录入一个整数,表示身上的钱。

​ 如果大于等于100块,就是网红餐厅。

​ 否则,就吃经济实惠的沙县小吃。

代码示例:

package com.iflytek.day04;import java.util.Scanner;/***  键盘录入一个整数,表示身上的钱。*      如果大于等于100块,就是网红餐厅。*      否则,就吃经济实惠的沙县小吃。*/
public class _05_IfElsePractice01 {public static void main(String[] args) {//1.键盘录入一个整数。表示身上的钱。Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数表示身上的钱");int money = sc.nextInt();//2.对钱进行判断if(money >= 100){System.out.println("吃网红餐厅");}else{System.out.println("福建大酒店");}}
}

练习2:影院选座

需求:

​ 在实际开发中,电影院选座也会使用到if判断。

​ 假设某影院售卖了100张票,票的序号为1~100。

​ 其中奇数票号坐左侧,偶数票号坐右侧。

​ 键盘录入一个整数表示电影票的票号。

​ 根据不同情况,给出不同的提示:

​ 如果票号为奇数,那么打印坐左边。

​ 如果票号为偶数,那么打印坐右边。

代码示例:

package com.iflytek.day04;import java.util.Scanner;/**假设某影院售卖了100张票,票的序号为1~100。其中奇数票号坐左侧,偶数票号坐右侧。键盘录入一个整数表示电影票的票号。根据不同情况,给出不同的提示:如果票号为奇数,那么打印坐左边。如果票号为偶数,那么打印坐右边。*/
public class _06_IfElsePractice02 {public static void main(String[] args) {//1.键盘录入票号Scanner sc = new Scanner(System.in);System.out.println("请输入票号");int ticket = sc.nextInt();if(ticket >= 1 && ticket <= 100){//合法//2.对票号进行判断if (ticket % 2 == 0) {//偶数System.out.println("坐右边");} else {//奇数System.out.println("坐左边");}}else{//票号不合法System.out.println("票号不合法");}}
}

2.3 if语句格式3

格式:
if (关系表达式1) {语句体1;	
} else if (关系表达式2) {语句体2;	
}else {语句体n+1;
}

执行流程:

①首先计算关系表达式1的值

②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

④…

⑤如果没有任何关系表达式为true,就执行语句体n+1。

1545616667104

练习1:考试奖励

需求:

​ 小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,

假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。

分析:

​ ①小明的考试成绩未知,可以使用键盘录入的方式获取值

​ ②由于奖励种类较多,属于多种判断,采用if…else…if格式实现

​ ③为每种判断设置对应的条件

​ ④为每种判断设置对应的奖励

代码示例:

package com.iflytek.day04;import java.util.Scanner;public class _07_IfElseIfPractice01 {public static void main(String[] args) {//1.键盘录入一个值表示小明的分数Scanner sc = new Scanner(System.in);System.out.println("请输入小明的成绩");int score = sc.nextInt();//2.对分数的有效性进行判断if(score >= 0 && score <= 100){//有效的分数//3.对小明的分数进行判断,不同情况执行不同的代码if(score >= 95 && score <= 100){System.out.println("送自行车一辆");}else if(score >= 90 && score <= 94){System.out.println("游乐场玩一天");}else if(score >= 80 && score <= 89){System.out.println("变形金刚一个");}else{System.out.println("胖揍一顿");}}else{//无效的分数System.out.println("分数不合法");}}
}

3 switch语句

3.1 格式

switch (表达式) {case 1:语句体1;break;case 2:语句体2;break;...default:语句体n+1;break;
}

3.2 执行流程:

  • 首先计算出表达式的值
  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。
  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

练习:运动计划

需求:

键盘录入星期数,显示今天的减肥活动。

  • 周一:跑步

  • 周二:游泳

  • 周三:慢走

  • 周四:动感单车

  • 周五:拳击

  • 周六:爬山

  • 周日:好好吃一顿

代码示例:

package com.iflytek.day04;import java.util.Scanner;public class _08_Switch01 {public static void main(String[] args) {//1.键盘录入一个整数表示星期Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数表示星期");int week = sc.nextInt();//2.书写一个switch语句去跟week进行匹配switch (week) {case 1:System.out.println("跑步");break;case 2:System.out.println("游泳");break;case 3:System.out.println("慢走");break;case 4:System.out.println("动感单车");break;case 5:System.out.println("拳击");break;case 6:System.out.println("爬山");break;case 7:System.out.println("好好吃一顿");break;default:System.out.println("输入错误,没有这个星期");break;}}
}

3.3 switch的扩展知识:

  • default的位置和省略情况

    default可以放在任意位置,也可以省略

  • case穿透

    不写break会引发case穿透现象

  • switch在JDK12的新特性

int number = 10;
switch (number) {case 1 -> System.out.println("一");case 2 -> System.out.println("二");case 3 -> System.out.println("三");default -> System.out.println("其他");
}
  • switch和if第三种格式各自的使用场景

当我们需要对一个范围进行判断的时候,用if的第三种格式

当我们把有限个数据列举出来,选择其中一个执行的时候,用switch语句

比如:

​ 小明的考试成绩,如果用switch,那么需要写100个case,太麻烦了,所以用if简单。

​ 如果是星期,月份,客服电话中0~9的功能选择就可以用switch

练习:休息日和工作日

需求:

键盘录入星期数,输出工作日、休息日。

(1-5) 工作日,(6-7)休息日。

代码示例:

package com.iflytek.day04;import java.util.Scanner;public class _09_SwitchPractice02 {public static void main(String[] args) {//1.键盘录入星期数Scanner sc = new Scanner(System.in);System.out.println("请输入星期");int week = sc.nextInt();//3//2.利用switch进行匹配switch (week){case 1:case 2:case 3:case 4:case 5:System.out.println("工作日");break;case 6:case 7:System.out.println("休息日");break;default:System.out.println("没有这个星期");break;}}
}

4 循环结构

4.1 for循环结构(掌握)

​ 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形 成死循环。

4.1.1 for循环格式:

for (初始化语句;条件判断语句;条件控制语句) {循环体语句;
}

格式解释:

  • 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样
  • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
  • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情
  • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去

执行流程:

①执行初始化语句

②执行条件判断语句,看其结果是true还是false

​ 如果是false,循环结束

​ 如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

for循环书写技巧:

  • 确定循环的开始条件
  • 确定循环的结束条件
  • 确定循环要重复执行的代码

代码示例:

//1.确定循环的开始条件
//2.确定循环的结束条件
//3.确定要重复执行的代码//需求:打印5次HelloWorld
//开始条件:1
//结束条件:5
//重复代码:打印语句for (int i = 1; i <= 5; i++) {System.out.println("HelloWorld");
}

for循环练习-输出数据

  • 需求:在控制台输出1-5和5-1的数据
  • 示例代码:
package com.iflytek.day04;public class _10_ForPractice01 {public static void main(String[] args) {//需求:输出数据1-5for(int i=1; i<=5; i++) {System.out.println(i);}System.out.println("--------");//需求:输出数据5-1for(int i=5; i>=1; i--) {System.out.println(i);}}
}

for循环练习-求和

  • 需求:求1-5之间的数据和,并把求和结果在控制台输出
  • 示例代码:
package com.iflytek.day04;public class _11_ForPractice02 {public static void main(String[] args) {//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0int sum = 0;//从1开始到5结束的数据,使用循环结构完成for (int i = 1; i <= 5; i++) {//将反复进行的事情写入循环结构内部// 此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中sum = sum + i;/*sum += i;	sum = sum + i;第一次:sum = sum + i = 0 + 1 = 1;第二次:sum = sum + i = 1 + 2 = 3;第三次:sum = sum + i = 3 + 3 = 6;第四次:sum = sum + i = 6 + 4 = 10;第五次:sum = sum + i = 10 + 5 = 15;*/}//当循环执行完毕时,将最终数据打印出来System.out.println("1-5之间的数据和是:" + sum);}
}
  • 本题要点:
    • 今后遇到的需求中,如果带有求和二字,请立即联想到求和变量
    • 求和变量的定义位置,必须在循环外部,如果在循环内部则计算出的数据将是错误的

for循环练习-求偶数和

  • 需求:求1-100之间的偶数和,并把求和结果在控制台输出
  • 示例代码:
package com.iflytek.day04;public class _12_ForPractice03 {public static void main(String[] args) {//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0int sum = 0;//对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同for(int i=1; i<=100; i++) {//对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数if(i%2 == 0) {//sum += i;sum = sum + i;}}//当循环执行完毕时,将最终数据打印出来System.out.println("1-100之间的偶数和是:" + sum);}
}

for循环练习-统计次数

需求:

​ 键盘录入两个数字,表示一个范围。

​ 统计这个范围中。

​ 既能被3整除,又能被5整除数字有多少个?

代码示例:

package com.iflytek.day04;import java.util.Scanner;public class _13_ForPractice04 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入起始值:");int start = sc.nextInt();System.out.println("请输入结束值:");int end = sc.nextInt();int count = 0;for (int i = start; i < end; i++) {if (i % 3 == 0 && i % 5 == 0) {System.out.print(i + "\t");count++;// 每5个换行输出if (count % 5 == 0) {System.out.println();}}}System.out.println("\n总个数:" + count);}
}

4.2 while循环

4.2.1 格式:

初始化语句;
while(条件判断语句){循环体;条件控制语句;
}

练习1:打印5次HelloWorld

package com.iflytek.day04;public class _14_WhilePractice01 {public static void main(String[] args) {int i = 1;while(i <= 5){System.out.println("HelloWorld");i++;}System.out.println(i);}
}

练习2:珠穆朗玛峰

需求:计算一张纸(厚度:0.1mm)对折多少次可以达到喜马拉雅的高度(8848m)。

package com.iflytek.day04;public class _15_WhilePractice02 {public static void main(String[] args) {//1.定义一个变量表示珠穆朗玛峰的高度int height = 8844430;//2.定义一个变量表示纸张的厚度double paper = 0.1;//定义一个计数器(变量),用来统计折叠的次数int count = 0;//3.循环折叠纸张//只有纸张的厚度 < 穆朗玛峰的高度 循环才继续,否则循环就停止//坑:只有判断为真,循环才会继续while(paper < height){//折叠纸张paper = paper * 2;count++;}//4.打印一下纸张的厚度System.out.println(count);//27}
}

4.3 do…while循环

本知识点了解即可

格式:

初始化语句;
do{循环体;条件控制语句;
}while(条件判断语句);

特点:

​ 先执行,再判断。

package com.iflytek.day04;public class _16_DoWhilePractice03 {public static void main(String[] args) {int a = 1;int b = 2;do {System.out.println("先输出,再判断");} while (a == b);while (a == b) {System.out.println("先判断,再输出");}}
}

4.4 三种格式的区别:

  • ​ for和while循环,是先判断,再执行。

  • ​ do…while是先执行,再判断。

​ 当知道循环次数或者循环范围的时候,用for循环。

​ 当不知道循环次数,也不知道循环范围,但是知道循环的结束条件时,用while循环。


while(paper < height){
//折叠纸张
paper = paper * 2;
count++;
}

    //4.打印一下纸张的厚度System.out.println(count);//27
}

}


## 4.3 do...while循环本知识点了解即可格式:```java
初始化语句;
do{循环体;条件控制语句;
}while(条件判断语句);

特点:

​ 先执行,再判断。

package com.iflytek.day04;public class _16_DoWhilePractice03 {public static void main(String[] args) {int a = 1;int b = 2;do {System.out.println("先输出,再判断");} while (a == b);while (a == b) {System.out.println("先判断,再输出");}}
}

4.4 三种格式的区别:

  • ​ for和while循环,是先判断,再执行。

  • ​ do…while是先执行,再判断。

​ 当知道循环次数或者循环范围的时候,用for循环。

​ 当不知道循环次数,也不知道循环范围,但是知道循环的结束条件时,用while循环。

相关文章:

Java基础-判断和循环

1 流程控制语句 在一个程序执行的过程中&#xff0c;各条语句的执行顺序对程序的结果是有直接影响的。所以&#xff0c;我们必须清楚每条语句的执行流程。而且&#xff0c;很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 ​ 顺序结构 ​ 判…...

ESP32 FreeRTOS学习总结

2023.5.11 FreeRTOS中文数据手册&#xff1a;https://www.freertos.org/zh-cn-cmn-s/RTOS.html 感谢以下两位B站UP主的教程&#xff1a;孤独的二进制、Michael_ee 1.Task 创建任务常用API&#xff1a; 任务函数描述xTaskCreate()使用动态的方法创建一个任务xTaskCreatePinne…...

uniapp打包ios保姆式教程【最新】

uniapp打包 打包方式ios打包一、前往官网登录二、添加证书 三、添加标识符(Identifiers)四、添加安装ios测试机(Devices)五、获取证书profile文件六、生成并下载p12文件七、开始打包 打包方式 安卓打包直接使用公共测试证书即可打包成功&#xff0c;简单方便&#xff0c;这里我…...

Thread线程学习(2) Linux线程的创建、终止和回收

目录 1.首先要了解什么是线程ID&#xff0c;以及它的作用是什么 2.创建线程 3.终止线程 4.回收线程 5.总结 在Linux系统中&#xff0c;线程是轻量级的执行单元&#xff0c;能够在同一个进程中并发执行。本文将介绍如何在Linux环境下创建、终止和回收线程&#xff0c;并提供…...

linux-项目部署软件安装

安装jdk 操作步骤&#xff1a; 1、使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux jdk-8u171-linux-x64.tar.gz 2、解压安装包&#xff0c;命令为tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local 3、配置环境变量&#xff0c;使用vim命令修改/etc/profile文…...

Vue3-黑马(三)

目录&#xff1a; &#xff08;1&#xff09;vue3-基础-计算属性 &#xff08;2&#xff09; vue3-基础-xhr-基本使用 &#xff08;3&#xff09;vue3-基础-xhr-promise改造 &#xff08;1&#xff09;vue3-基础-计算属性 上面有重复的代码&#xff0c;用计算属性&#xff0…...

标准C库函数fprintf(),sprintf(),snprintf()的函数使用方法(往文件中写入数据,将变量的值转换成字符串输出)

前言 如果&#xff0c;想要深入的学习标准C库中函数fprintf()&#xff0c;sprintf()&#xff0c;snprintf()&#xff0c;还是需要去自己阅读Linux系统中的帮助文档。 具体输入命令&#xff1a; man 3 fprintf/sprintf/snprintf即可查阅到完整的资料信息。 fprintf 函数 fprin…...

不到1分钟,帮你剪完旅行vlog,火山引擎全新 AI「神器」真的这么绝?

旅行时&#xff0c;想在社交平台发布一支精美的旅行 vlog&#xff0c;拍摄剪辑需要花费多长时间&#xff1f; 20 分钟&#xff1f;一小时&#xff1f;半天&#xff1f; 在火山引擎算法工程师眼里&#xff0c;可能 1 分钟都用不了&#xff0c;因为会有 AI 替你完成。 没错&#…...

MySQL的概念、编译安装,以及自动补全

一.数据库的基本概念 1、数据&#xff08;Data&#xff09; • 描述事物的符号记录 • 包括数字&#xff0c;文字&#xff0c;图形&#xff0c;图像&#xff0c;声音&#xff0c;档案记录等 • 以“记录”形式按统一的格式进行存储 2、表 • 将不同的记录组织在一起 • …...

Jmeter常见问题和工作中遇到的问题解决方法汇总

一、标题Jmeter常见问题解决 1.1 Jmeter如何针对https协议进行接口测试&#xff1f; 解决方法&#xff1a; 协议更改为&#xff1a;https&#xff0c;端口号更改为443&#xff1b;Jmeter默认的是&#xff1a;http协议&#xff0c;端口号是&#xff1a;80 1.2 Jmeter如何解决默…...

蓝牙单连接和多连接知识

蓝牙单连接和多连接知识 生活中蓝牙连接多路蓝牙的情况越来越多&#xff0c;下面介绍下单连接和多连接的知识&#xff0c;供大家参考 一&#xff1a;蓝牙单连接 蓝牙单连接也称为Point-to-Point 点对点连接&#xff0c;是最常见的蓝牙连接场景,如手机<–>车载蓝牙。&…...

Mongodb—查询数据报错 Sort operation used more than the maximum 33554432 bytes of RAM

线上服务的MongoDB中有一个很大的表数据有十几万条。然后报了下面这个错误: “exception”:”org.springframework.data.mongodb.UncategorizedMongoDbException”, “message”:”Query failed with error code 96 and error message ‘Executor error during find command:…...

Java内存异常和垃圾回收机制

内存溢出异常 Java会存在内存泄漏吗&#xff1f;请简单描述 内存泄漏是指不再被使用的对象或者变量一直被占据在内存中。理论上来说&#xff0c; Java是有GC垃圾回收机制 的&#xff0c;也就是说&#xff0c;不再被使用的对象&#xff0c;会被GC自动回收 掉&#xff0c;自动…...

linux系统挂载逻辑卷和扩展逻辑卷组

fdisk /dev/vdb fdisk /dev/vdc在分区后需要修改分区类型为 8e&#xff0c;操作过程类似&#xff1a; [rootlocal ~] $ fdisk /dev/xvdb #### 选择磁盘 Command (m for help): m #### 帮助 Command actiona tog…...

WPF:WPF原生布局说明

前言 WPF在国内讨论度很小&#xff0c;我在这里记录一下WPF简单的原生控件是如何使用的&#xff0c;顺便回忆一下WPF的基础知识&#xff0c;有些忘记的比较厉害了 WPF简介 WPF是微软推出的桌面UI软件&#xff0c;是我觉得最早实现MVVM&#xff08;数据驱动事务&#xff09;&…...

SpringMVC常用注解用法

Spring MVC是基于Servlet API构建的原始Web框架。 MVC是Model View Controller的缩写即视图模型控制器&#xff0c;是一种思想&#xff0c;而Spring MVC是对该思想的具体实现。关于SpringMVC的学习我们需要掌握用户和程序的连接、获取参数以及返回数据三大部分。而这三大功能的…...

Liunx find locate 命令详解

文章目录 find补充说明语法选项参数实例根据文件或者正则表达式进行匹配否定参数根据文件类型进行搜索基于目录深度搜索根据文件时间戳进行搜索根据文件大小进行匹配删除匹配文件根据文件权限/所有权进行匹配借助-exec选项与其他命令结合使用搜索但跳过指定的目录find其他技巧收…...

JAVA并发专题(1)之操作系统底层工作的整体认识

一、分诺依曼计算机模型 现代计算机模型是基于-冯诺依曼计算机模型&#xff0c;计算机在运行时&#xff0c;先从内存中取出第一条指令&#xff0c;通过控制器的译码&#xff0c;按指令的要求&#xff0c;从存储器中取出数据进行指定的运算和逻辑操作等加工&#xff0c;然后再按…...

WiFi(Wireless Fidelity)基础(七)

目录 一、基本介绍&#xff08;Introduction&#xff09; 二、进化发展&#xff08;Evolution&#xff09; 三、PHY帧&#xff08;&#xff08;PHY Frame &#xff09; 四、MAC帧&#xff08;MAC Frame &#xff09; 五、协议&#xff08;Protocol&#xff09; 六、安全&#x…...

Agilent安捷伦33522B任意波形发生器

Agilent安捷伦33522B任意波形发生器30兆赫 2通道 为您最苛刻的测量生成全方位信号的无与伦比的能力 具有 5 倍低谐波失真的正弦波&#xff0c;可提供更纯净的信号 脉冲频率高达 30 MHz&#xff0c;抖动减少 10 倍&#xff0c;可实现更精确的计时 具有排序功能的逐点任意波形功能…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

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…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...