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

Java 入门 (超级详细)

一、什么是Java

Java是一种高级编程语言,由Sun Microsystems公司于1995年推出。Java具有跨平台性、面向对象、健壮性、安全性、可移植性等特点,被广泛应用于企业级应用开发、移动应用开发、大数据处理、云计算等领域。Java程序可以在不同的操作系统上运行,只需编译一次,就可以在任何支持Java虚拟机(JVM)的平台上运行。Java还提供了丰富的库和框架,可以加快开发过程,提高开发效率。

二、Java的优点

1. 面向对象:Java是一种面向对象的编程语言,支持封装、继承和多态等面向对象的特性,使得代码更易于理解、维护和重用。 
2. 跨平台性:Java应用程序可以在不同的操作系统上运行,只需编译一次,就可以在任何支持Java虚拟机(JVM)的平台上运行。 
3. 强大的生态系统:Java拥有庞大而活跃的开源社区,提供了丰富的库和框架,可以加快开发过程,提高开发效率。 
4. 内存管理:Java提供了自动的垃圾回收机制,开发者不需要手动管理内存,减少了内存泄漏和野指针等问题。 
5. 安全性:Java具有强大的安全性特性,包括沙箱安全模型、字节码验证和安全类加载等机制,可以防止恶意代码的执行。 
6. 多线程支持:Java内置了对多线程的支持,可以方便地创建和管理多线程应用程序,提高程序的并发性能。 
7. 广泛应用:Java广泛应用于企业级应用开发、移动应用开发、大数据处理、云计算等领域,具有良好的可扩展性和稳定性。 

三、第一个Java程序

首先安装好 JDK

Java 开发工具 JDK8 和 JDK17 介绍及安装 (超级详细)_#看心情的博客-CSDN博客

  1. 新建一个 A.java 文件

2. 使用记事本打开,输入:

public class A{public static void main(String[] args){System.out.println("Hello World");}
}

   注意:java中的代码是严格区分大小写
              java中的标点符号必须是英文状态下输入,不能是中文状态
              java中的路径,文件名都不要使用中文

3. 在文件夹上目录上输入 cmd 回车


 4. 输入  javac A.java 编译Java文件

5. 编译完后会产生一个A.class 文件

5. 输入 java A 运行Java文件

编译:A.java -> jdk -> A.class

运行:A.class

Java开发工具IDEA安装(2023)-CSDN博客CSDN

四、Java 中的注释

1. 单行注释://

2. 多行注释:/* */

3. 文档注释::/** **/

五、数据类型

Java 基本数据类型

序号数据类型解释位数默认值举例说明
1byte80byte b = 10;
2short短整型160short s = 10;
3int整数320int i = 10;
4long长整型640long l = 10l;
5float单精度320.0float f = 10.0f;
6double双精度640.0double d = 10.0d;
7char字符16char c = 'c';
8boolean布尔8flaseboolean b = true;

注意:String 是对象,不属于8大基本数据类型!!!

数据类型转换

1. 自动转换(隐式转换):小范围 -> 大范围

// 将 int 转换成 double (小范围 -> 大范围)
int a = 10;
double b = a;  // 10.00

2. 强制转换(显示转换): 大范围 -> 小范围

// 将 double 转换成 int (大范围 -> 小范围)
double a = 11.11;
int b = (int) a;    // 11

五、变量

为什么要使用变量?

1. 存储数据:变量用于存储数据,可以是数字、文本、布尔值等。通过给变量赋值,我们可以在程序中保存和操作数据。 
2. 数据共享:变量允许我们在程序中共享数据。通过将数据存储在变量中,我们可以在不同的代码块中访问和使用相同的数据。 
3. 数据处理:变量使得数据处理更加灵活和方便。我们可以对变量进行计算、操作和转换,从而实现各种功能和逻辑。 
4. 代码可读性:使用变量可以增加代码的可读性和可维护性。通过给变量取一个有意义的名称,可以更清晰地表达代码的意图,使代码更易于理解和修改。 
5. 代码重用:通过使用变量,我们可以在不同的地方重复使用相同的数据。这样可以减少代码的冗余,提高代码的复用性和效率。 

什么是变量?

变量是计算机程序中用于存储数据的一种数据类型。它是一个名称,代表了一个值或一个对象,可以在程序中多次使用。在程序中,我们可以给变量赋值,修改变量的值,以及使用变量来进行各种计算和操作。

声明变量的三要素

1. 变量名:用于标识变量的名称,必须符合一定的命名规则。

2. 变量类型:用于指定变量的数据类型,例如整数、浮点数、布尔值、字符串等。

3. 变量值:存储在变量中的具体数值或对象。

声明变量的四种方式

/*第一种: 声明变量并且赋值变量类型 变量名 = 值;
*/
int a = 10;/*第二种: 先声明变量,再赋值变量类型 变量名;变量名 = 值;
*/
int b;
b = 10;/*第三种: 同一种类型的变量,一行声明多个变量类型 变量名1,变量名2,变量名3;变量名1 = 值;变量名2 = 值;变量名3 = 值; 
*/
int c1, c2, c3;
c1 = 10;
c2 = 20;
c3 = 30;/*第四种: 同一种类型的变量,一行声明多个并且赋值变量类型 变量名1 = 值1, 变量名2 = 值2, 变量名3 = 值3;
*/
int d1 = 1, d2 = 2, d3 = 3;

变量交换

int a = 10;
int b = 20;
int c = a;  // 将 a 的值赋值给 c
a = b; // 将 b 的值赋值给 a (原值会覆盖)
b = c; // 将 c (原 a 的值) 赋值给 bSystem.out.println("a: " + a + ", b: " + b);  // a: 20, b: 10

变量命名规则

1. 首字母:  字母, _, $, 中文(不推荐使用)
2. 首字母后面:  首字母, 数字, 也可以没有
注意:  不能是java中的关键字

六、运算符

1. 算术运算符

加法(+)

int a = 10, b = 20;
System.out.println(a + b);  // 10 + 20 = 30// 如果一个数字加一个字符串,则会进行拼接
int c = 123;
String d = "hello";
System.out.println(c + d);  // 123 + hello = 123hello

减法(-)

int a = 20, b = 10;
System.out.println(a - b); // 20 - 10 = 10

乘法(*)

int a = 2, b = 5;
System.out.println(a * b); // 2 * 5 = 10

除法(/)

int a = 10;
int b = 2;
System.out.println(a / b); // 5int c = 5;
int d = 2;
System.out.println(c / d); // 2

取模(%)

int a = 5;
int b = 2;
System.out.println(a % b); // 1int c = 6;
int d = 2;
System.out.println(c % d); // 0

递增(++)

// 第一种先加在赋值
int a = 1;
System.out.println(++a); // 2;// 第二种先赋值在加
int b = 1;
System.out.println(b++); // 1

 递减(--)

// 第一种先减在赋值
int a = 1;
System.out.println(--a); // 0;// 第二种先赋值在减
int b = 1;
System.out.println(b--); // 1

2. 赋值运算符

赋值(=)

// 给 a 和 b 同时赋值
int a = 10, b = 20;
System.out.println("a: " + a + ", b: " + b);  // a: 10, b: 20// 字符串类型也可以进行 加法赋值
String a = "hello", b = " world";
a += b;
System.out.println(a);  // hello world

加法赋值(+=)

// 将第一个数字加与第二个数字
int a = 10, b = 20;
a+=b;
System.out.println(a); // 30

减法赋值(-=)

// 将第一个数字减与第二个数字
int a = 10, b = 20;
a-=b;
System.out.println(a); // -10

乘法赋值(*=)

// 将第一个数字乘与第二个数字
int a = 10, b = 20;
a*=b;
System.out.println(a); // 200

除法赋值(/=)

// 将第一个数字除与第二个数字
int a = 100, b = 20;
a/=b;
System.out.println(a); // 5

 取模赋值(%=)

// 将第一个数字模与第二个数字
int a = 5, b = 2;
a%=b;
System.out.println(a); // 1

3. 比较运算符

比较运算返回的结果是一个boolean值不是true就是false;

等于(==)

// 比较两个数是否相等
int a = 5, b = 2;
System.out.println(a==b); // false// 比较两个字符串是否相等
String a = "hello", b = "hello";
System.out.println(a==b); // true

不等于(!=)

// 比较第一个数是否不等于第二个数
int a = 5, b = 2;
System.out.println(a!=b); // true// 比较第一个字符串是否不等于第二个字符串
String a = "hello", b = "hello";
System.out.println(a!=b); // false

大于(>)

// 比较第一个数是否大于第二个数
int a = 5, b = 2;
System.out.println(a>b); // true

小于(<)

// 比较第一个数是否小于第二个数
int a = 5, b = 2;
System.out.println(a<b); // false

大于等于(>=)

// 比较第一个数是否大于或者等于第二个数
int a = 5, b = 2;
System.out.println(a>=b); // true

小于等于(<=)

// 比较第一个数是否小于或者等于第二个数
int a = 5, b = 2;
System.out.println(a<=b); // false

4. 逻辑运算符

逻辑运算的前提是需要两个表达式,返回的是boolean值。

与(&&)  

两个表达式同时为true时返回true,否则返回false

// 判断a 等于 b 并且 c 等于 d
int a = 5, b = 2;
int c = 10, d = 10;
System.out.println(a == b && c == d); // false

或(||)

有一个表达式为true时返回true,两个表达式都为false返回false

// 判断 a 等于 b  或者 c 等于 d
int a = 5, b = 2;
int c = 10, d = 10;
System.out.println(a == b || c == d); // true

非(!)

// 取反
boolean b = true;
System.out.println(!b); // false// 结合表达式使用
int a = 10, b = 10;
System.out.println(!(a == b)); // false

5. 位运算符

按位与(&)

将两个操作数的对应位进行按位与操作,只有在对应位都为 1 时,结果位才为 1。

int a = 5; // 二进制表示为 0101
int b = 3; // 二进制表示为 0011
int result = a & b; // 二进制结果为 0001,即 1
System.out.println(result);  // 1

按位或(|)

将两个操作数的对应位进行按位或操作,只要对应位中有一个为 1,结果位就为 1。

int a = 5; // 二进制表示为 0101
int b = 3; // 二进制表示为 0011
int result = a | b; // 二进制结果为 0111,即 7
System.out.println(result);   // 7

按位异(^)

将两个操作数的对应位进行按位异或操作,当对应位不同时,结果位为 1;当对应位相同时,结果位为 0。

int a = 5; // 二进制表示为 0101
int b = 3; // 二进制表示为 0011
int result = a ^ b; // 二进制结果为 0110,即 6
System.out.println(result);  // 6

取反(~)

对操作数进行按位取反操作,将 0 变为 1,将 1 变为 0。取反操作是针对二进制补码表示的。

int a = 5; // 二进制表示为 0000 0000 0000 0000 0000 0000 0000 0101
int result = ~a; // 二进制结果为 1111 1111 1111 1111 1111 1111 1111 1010,即 -6
System.out.println(result);  // -6

左移(<<)

将操作数的所有位向左移动指定的位数,右侧用 0 填充。

int a = 5; // 二进制表示为 0000 0000 0000 0000 0000 0000 0000 0101
int result = a << 2; // 二进制结果为 0000 0000 0000 0000 0000 0000 0001 0100,即 20
System.out.println(result); // 20

右移(>>)

将操作数的所有位向右移动指定的位数,左侧用原有的最高位填充(保持符号位不变)。

int a = -10; // 二进制表示为 1111 1111 1111 1111 1111 1111 1111 0110
int result = a >> 2; // 二进制结果为 1111 1111 1111 1111 1111 1111 1111 1101,即 -3
System.out.println(result); // -3

6. 三元运算符

根据条件选择不同类型的值相当于if-else,形式为:条件 ? 值1 : 值2

int a = 10, b = 5;
String result = a > b ? "a 大于 b":"a 小于 b";
System.out.println(result); // a 大于 b

7. instanceof 运算符

instanceof 运算符用于检查一个对象是否属于某个类或其子类的实例

// 动物类
class Animal{}// 狗类 继承 动物类
class Dog extends Animal{}public class Test {public static void main(String[] args) {// Dog 是 Animal 的子类,所以返回 trueSystem.out.println(new Dog() instanceof Animal); // true// Animal 不是 Dog 的子类,所以返回 falseSystem.out.println(new Animal() instanceof Dog);  // false}}

8. 运算符优先级

从高到低

1. 一元运算符(如 ++、--、+、-、!)

2. 乘法和除法(*、/、%)

3. 加法和减法(+、-)

4. 移位运算符(<<、>>、>>>)

5. 比较运算符(<、<=、>、>=、instanceof)

6. 相等运算符(==、!=)

7. 位与(&)

8. 位异或(^)

9. 位或(|)

10. 逻辑与(&&)

11. 逻辑或(||)

12. 条件运算符(? :)

13. 赋值运算符(=、+=、-=、*=、/= 等)

七、条件判断 if-else

If-else 语句是 Java 中用于根据条件执行代码的一种结构。它由一个条件、一个 then 子句和一个 else 子句组成。条件是一个布尔表达式,它可以是 true 或 false。如果条件为 true,则执行 then 子句。如果条件为 false,则执行 else 子句。

/* 第一种 if 单独使用if(条件){条件满足执行}*/
if (i > 100) {System.out.println("i 大于 100 时执行");
}/* 第二种 if else 结合使用if(条件){条件满足执行}else{条件不满足执行}*/
if (i > 100) {System.out.println("i 大于 100 时执行");
} else {System.out.println("i 小于 100 时执行");
}// 简写 省略大括号
if (i > 100) System.out.println("i 大于 100 时执行");else System.out.println("i 小于 100 时执行");// 简写 使用三元运算符
String str = (i > 100) ? "i 大于 100 时执行":"i 小于 100 时执行";
System.out.println(str);/* 第三种 多重if
if(条件1){满足条件1执行
} else if(条件2){满足条件2执行
} else if(条件3){满足条件3执行
}else{都不满足执行
}*/
if (i > 10) {System.out.println("i 大于 10");
} else if (i < 10) {System.out.println("i 小于 10");
} else {System.out.println("i 等于 10");
}/* 第四种 嵌套if
if(条件1){if(条件2){满足条件1,满足条件2执行}else{满足条件1,不满足条件2执行}
} else {if(条件3){不满足条件1,满足条件3执行}else{不满足条件1,不满足条件3执行}
}*/
if (i >= 100) {if (i >= 120) {System.out.println("i 大于等于 120 执行");} else {System.out.println("i 大于等于 100 小于 120 执行");}
} else {if (i >= 80) {System.out.println("i 在执行");} else {System.out.println("i 小于 80 执行");}
}

八、switch

switch 语句是根据一个表达式的值执行不同的代码块的一种结构。switch 语句由一个关键字 switch、一个表达式和一个或多个 case 语句组成。表达式必须是一个整数、字符或字符串。case 语句由一个关键字 case 和一个常量组成。每个 case 语句后面跟着一个冒号,然后是该 case 语句要执行的代码块。

// 猜拳游戏: 1-石头,2-剪刀,3-布
int i = 1;
String str;
switch (i) {case 1:str = "石头";break;case 2:str = "剪刀";break;case 3:str = "布";break;default:str = "其他";break;
}System.out.println("你出的是:" + str);// 简写
String str = switch (i) {case 1 -> "石头";case 2 -> "剪刀";case 3 -> "布";default -> "其他";
};

九、Scanner 和 Random 的使用

1. 扫描器 scanner

// 创建一个 Scanner 对象
Scanner scanner = new Scanner(System.in);// 接受用户输入的整数
System.out.println("输入一个整数");
int i = scanner.nextInt();
System.out.println("输入的整数为:" + i);// 接受用户输入的字符
System.out.println("输入一个字符串");
String str = scanner.next();
System.out.println("输入的字符串为:"+str);

2. 随机数  random

// 创建一个 Random 对象
Random random = new Random();// 生成一个随机数
int i = random.nextInt();System.out.println("生成的数为: " + i);

生成指定范围的随机数

// 创建一个 Random 对象
Random random = new Random();// 生成 25-55之间的随机数,公式:(最大值-最小值+1) + 最小值
int i = random.nextInt(31) + 25;
System.out.println("生成数为:" + i);

十、循环

1. while 循环

循环3要素
1.  变量初始化
2.  循环的条件
3.  变量改变

语法:

变量初始化
while(循环的条件){循环体(变量改变)
}

 示例:

// 打印1-10
int i = 0;          // 变量初始化
while (i < 10) {    // 循环条件i++;            // 变量改变System.out.println(i);
}

2. do...while 循环

语法:

变量初始化
do{循环体(变量改变)
}while(循环的条件);

 示例:

// 打印1-10
int i = 0;          // 变量初始化
do {i++;            // 变量改变System.out.println("do...while 循环打印:" + i);
}while (i < 10);    // 循环条件

3. for 循环

语法:

for(变量初始化; 循环条件;  变量改变){循环体
}

 示例:

// 打印1-10
for (int i = 1; i <= 10; i++) {System.out.println("for 循环打印:" + i);
}

 4. 循环使用场景

       1. 知道具体的循环次数,优先使用for循环

        2. while是先判断循环条件,在执行循环体

        3. do...while是执行一次的循环体,在判断循环条件

        4. do...while至少会执行一次

5. 循环嵌套

// 打印九九乘法表
for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(i + "X" + j + "= " + i * j + "\t");}System.out.println();
}

6. 跳出 break

终止当前循环

// 如果输出的数为 4 则终止循环
for (int i = 0; i < 10; i++) {if(i == 4){break;}System.out.println(i);
}

 

7. 继续 continue

终止当次循环,进入下一次循环

// 跳过 4
for (int i = 0; i < 10; i++) {if(i == 4){continue;}System.out.println(i);
}

 

8. 返回 return

终止所有循环,直接返回

// 如果输出的数为4终止所有循环
for (int i = 0; i < 10; i++) {if(i == 4){return;}System.out.println(i);
}

相关文章:

Java 入门 (超级详细)

一、什么是Java Java是一种高级编程语言&#xff0c;由Sun Microsystems公司于1995年推出。Java具有跨平台性、面向对象、健壮性、安全性、可移植性等特点&#xff0c;被广泛应用于企业级应用开发、移动应用开发、大数据处理、云计算等领域。Java程序可以在不同的操作系统上运…...

计算机基础面试(数据结构)

1. 数组和链表的区别是什么&#xff1f;各自的优缺点是什么&#xff1f; 专业解答&#xff1a; 数组内存连续&#xff0c;支持随机访问&#xff0c;但插入删除效率低&#xff1b;链表内存离散&#xff0c;插入删除高效&#xff0c;但访问需遍历。 初中生版&#xff1a; 数组像…...

DBGPT安装部署使用

简介 DB-GPT是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents)。 目的是构建大模型领域的基础设施&#xff0c;通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Mul…...

【蓝桥杯单片机】第十二届省赛

一、真题 二、模块构建 1.编写初始化函数(init.c) void Cls_Peripheral(void); 关闭led led对应的锁存器由Y4C控制关闭蜂鸣器和继电器 由Y5C控制 2.编写LED函数&#xff08;led.c&#xff09; void Led_Disp(unsigned char ucLed); 将ucLed取反的值赋给P0 开启锁存器…...

开源嵌入式实时操作系统NuttX介绍

一、NuttX RTOS的发展历程&#xff1a;从个人项目到Apache顶级开源项目 NuttX 是一款轻量级、可扩展的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;其发展历程堪称开源社区的经典案例。 起源与初创&#xff08;2003-2007&#xff09; NuttX 由 Gregory Nutt 于2003…...

阿里云服务器部署项目笔记 实操 centos7.9

阿里云服务器部署项目笔记 实操 centos7.9 springboot vue elementUImysqlredis 相关的redis,mysql,nginx镜像,jdk 通过网盘分享的文件&#xff1a;docker镜像 链接: https://pan.baidu.com/s/15VwcWBP4Jy07xADuvylgQw?pwdm2g9 提取码: m2g9 配置环境 连接云服务器 安装…...

Java-实现PDF合同模板填写内容并导出PDF文件

可用于公司用户合同导出pdf文件 效果图 一、导入所需要jar包 <!--生成PDF--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency&…...

Docker安装Grafana数据可视化平台

介绍 Grafana是一个开源的监控和数据可视化平台&#xff0c;主要用于展示和分析时间序列数据。提供功能强大且灵活的数据可视化和监控工具&#xff0c;适用于多种场景&#xff0c;它广泛应用于DevOps、IT运维、物联网&#xff08;IoT&#xff09;和业务分析等领域。 Grafana的主…...

MyBatis-Plus 自动填充功能

MyBatis-Plus&#xff08;MP&#xff09; 提供了一个非常强大的功能——自动填充功能。该功能可以在执行插入或更新操作时&#xff0c;自动为某些字段赋值&#xff0c;免去手动设置这些字段的麻烦。常见的应用场景包括 创建时间 和 更新时间 字段的自动填充&#xff0c;帮助开发…...

解决redis lettuce连接池经常出现连接拒绝(Connection refused)问题

一.软件环境 windows10、11系统、springboot2.x、redis 6 7 linux&#xff08;centos&#xff09;系统没有出现这问题&#xff0c;如果你是linux系统碰到的&#xff0c;本文也有一定大参考价值。 根本思路就是&#xff1a;tcp/ip连接的保活(keepalive)。 二.问题描述 在spr…...

武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司举行校企联培座谈会

2025年2月21日下午&#xff0c;武汉大学生命科学学院与谱度众合&#xff08;武汉&#xff09;生命科技有限公司&#xff08;以下简称“谱度众合”&#xff09;在学院学术厅举行校企联培专业学位研究生合作交流会。武汉大学生命科学学院副院长刘星教授、生命科学学院周宇教授、产…...

4.网络技术与应用

一、计算机网络基础 1. 网络基本原理 通信模型&#xff1a; OSI七层模型&#xff1a; 物理层&#xff08;传输比特流&#xff0c;如网线、光纤&#xff09;数据链路层&#xff08;MAC地址&#xff0c;交换机&#xff09;网络层&#xff08;IP地址&#xff0c;路由器&#xff0…...

Kafka 主题 retention.ms 配置修改及深度问题排查指南

文章目录 Kafka 主题 retention.ms 配置修改及深度问题排查指南版本背景查看 Kafka 主题当前状态修改 retention.ms 配置的正确方式为什么不能使用 kafka-topics.sh&#xff1f;使用 kafka-configs.sh 动态更新配置 深入解析 retention 配置retention.ms 与 retention.bytes 的…...

React实现无缝滚动轮播图

实现效果&#xff1a; 由于是演示代码&#xff0c;我是直接写在了App.tsx里面在 文件位置如下&#xff1a; App.tsx代码如下&#xff1a; import { useState, useEffect, useCallback, useRef } from "react"; import { ImageContainer } from "./view/ImageC…...

deepseek+mermaid【自动生成流程图】

成果&#xff1a; 第一步打开deepseek官网(或百度版&#xff08;更快一点&#xff09;)&#xff1a; 百度AI搜索 - 办公学习一站解决 第二步&#xff0c;生成对应的Mermaid流程图&#xff1a; 丢给deepseek代码&#xff0c;或题目要求 生成mermaid代码 第三步将代码复制到me…...

分布式锁的简单实现

1. 什么是分布式锁&#xff1f; 在分布式系统中&#xff0c;也会涉及到多个节点访问同一个公共资源的情况&#xff0c;和 Java 中多线程的锁不一样&#xff0c;由于分布式系统中涉及到多个进程多个主机&#xff0c;所以说 Java 中 synchronized 就不合适了。 2. 分布式锁的简…...

C语言(19)----------->函数(2)

本文介绍了C语言的return语句及其它在C语言函数中的作用&#xff0c;以及介绍了二维数组和一维数组传参时的一些注意事项和使用数组传参时的方法。 若没有学习过C语言的一维数组和二维数组&#xff0c;建议参考如下文章&#xff1a; C语言&#xff08;15&#xff09;--------…...

动态扩缩容引发的JVM堆内存震荡:从原理到实践的GC调优指南

目录 一、典型案例&#xff1a;系统发布后的GC雪崩事件 &#xff08;一&#xff09;故障现象 1. 刚刚启动时 GC 次数较多 2. 堆内存锯齿状波动 3. GC日志特征&#xff1a;Allocation Failure &#xff08;二&#xff09;问题定位 二、原理深度解析&#xff1a;JVM内存弹…...

为何在用户注销时使用 location.href 而非 Vue Router 的 router.push

在开发 Web 应用时&#xff0c;用户注销功能的设计看似简单&#xff0c;但背后隐藏着对状态管理、安全性和用户体验的深层考量。以下将详细探讨为何许多项目在注销跳转时选择 location.href&#xff08;强制刷新页面&#xff09;而非 Vue Router 的 router.push&#xff08;单页…...

开源工具推荐:Uptime Kuma监控

1. 概述 Github&#xff1a;louislam/uptime-kuma: A fancy self-hosted monitoring tool Uptime Kuma is an easy-to-use self-hosted monitoring tool. Uptime Kuma 是一款开源的监控工具&#xff0c;可以帮助你实时监测网站或服务的状态&#xff0c;并在发生故障时及时通…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...