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

Java关键字及保留字总结

文章目录

  • Java关键字及保留字总结(按首字母字母顺序所排列)
    • 1.abstract
    • 2.boolean
    • 3.break
    • 4.byte
    • 5.case
    • 6.catch
    • 7.char
    • 8.class
    • 9.continue
    • 10.default
    • 11.do
    • 12.double
    • 13.else
    • 14.enum
    • 15.extends
    • 16.final
    • 17.finally
    • 18.float
    • 19.for
    • 20.if
    • 21.implements
    • 22.import
    • 23.instanceof
    • 24.int
    • 25.interface
    • 26.long
    • 27.native
    • 28.new
    • 29.null
    • 30.package
    • 31.private
    • 32.protected
    • 33.public
    • 34.return
    • 35.short
    • 36.static
    • 37.strictfp
    • 38.super
    • 39.switch
    • 40.synchronized
    • 41.this
    • 42.throw
    • 43.throws
    • 44.transient
    • 45.try
    • 46.void
    • 47.volatile
    • 48.while
    • 49.goto(保留字)
    • 50.const(保留字)

Java关键字及保留字总结(按首字母字母顺序所排列)

本文来源二哥的Java进阶之路-5000字速通Java的48个关键字及2个保留字,这本教材我个人是十分喜欢的,抛弃了一些旧的技术,大大的节省了我们的时间成本。有学习Java的伙伴,可以看看这本书,真的不错,强推👍。

1.abstract

用于声明抽象类以及抽象方法。

abstract class Animal {abstract void makeSound();public void sleep() {System.out.println("The animal is sleeping.");}
}class Dog extends Animal {void makeSound() {System.out.println("The dog barks.");}
}

在这个示例中,我们创建了一个名为 Animal 的抽象类,其中包含一个抽象方法 makeSound() 和一个具体方法 sleep()

2.boolean

Java 中的一种基本数据类型,表示布尔值,即真(true)或假(false)。boolean 数据类型常用于判断条件、循环控制和逻辑运算等场景。

boolean isStudent = true;if (isStudent) {System.out.println("This person is a student.");
} else {System.out.println("This person is not a student.");
}

在这个示例中,我们定义了一个 boolean 变量:isStudent。通过 if 语句,我们可以根据这些变量的值进行不同的操作。

3.break

用于跳出循环结构(如 for、while 和 do-while 循环)或 switch 语句。当遇到 break 语句时,程序将立即跳出当前循环或 switch 语句,继续执行紧跟在循环或 switch 语句后面的代码。

for (int i = 0; i < 10; i++) {if (i == 5) {break;}System.out.println("i: " + i);
}
System.out.println("Loop ended.");

在这个示例中,我们使用 for 循环遍历 0 到 9 的整数。当 i 等于 5 时,我们使用 break 语句跳出循环。

4.byte

用于表示一个 8 位(1 字节)有符号整数。它的值范围是 -128(-2^7)到 127(2^7 - 1)。

由于 byte 类型占用的空间较小,它通常用于处理大量的数据,如文件读写、网络传输等场景,以节省内存空间。

byte minByte = -128;
byte maxByte = 127;

在这个示例中,我们声明了两个 byte 类型的变量:minByte、maxByte,并分别赋予了不同的值。

5.case

通常与 switch 语句一起使用。switch 语句允许根据某个变量的值来选择执行不同的代码块。在 switch 语句中,case 用于标识每个可能的值和对应的代码块。

例子我们直接放到 switch 中一起讲。

6.catch

用于捕获 try 语句中的异常。在 try 块中可能会抛出异常,而在 catch 块中可以捕获这些异常并进行处理。catch 块可以有多个,每个 catch 块可以捕获特定类型的异常。在 catch 块中,可以根据需要进行异常处理,例如输出错误信息、进行日志记录、恢复程序状态等。

try {int num = Integer.parseInt("abc");
} catch (NumberFormatException e) {System.out.println("Invalid number format");
}

这个程序使用 try-catch 语句捕获 NumberFormatException 异常。在 try 块中,尝试将字符串 “abc” 转换为整数类型,由于这个字符串不是有效的数字格式,将会抛出 NumberFormatException 异常。在 catch 块中,捕获到了这个异常,并输出一条错误信息。

7.char

用于声明一个字符类型的变量。char 类型的变量可以存储任意的Unicode 字符,可以使用单引号将字符括起来来表示。

char c = 'A';

这个程序创建了一个 char 类型的变量 c,并将其赋值为大写字母 A。

8.class

用于声明一个类。

public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public void sayHello() {System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");}
}

9.continue

用于继续下一个循环,可以在指定条件下跳过其余代码。

for (int i = 1; i <= 10; i++) {if (i % 2 == 0) {continue;}System.out.println(i);
}

10.default

用于指定 switch 语句中除去 case 条件之外的默认代码块。这个我们放到 switch 里一起演示。

11.do

通常和 while 关键字配合使用,do 后紧跟循环体。

int i = 1;
do {System.out.println(i);i++;
} while (i <= 10);

do-while 循环与 while 循环类似,不同之处在于 do-while 循环会先执行循环体中的代码,然后再检查循环条件。因此,do-while 循环至少会执行一次循环体中的代码。

12.double

用于声明一个双精度浮点类型的变量。

double a = 3.14;
double b = 2.0;
double c = a + b;

13.else

用于指示 if 语句中的备用分支。

int score = 75;
if (score >= 60) {System.out.println("及格了");
} else {System.out.println("挂科了");
}

14.enum

用于定义一组固定的常量(枚举)。

public enum PlayerType {TENNIS,FOOTBALL,BASKETBALL
}

15.extends

用于指示一个类是从另一个类或接口继承的。

class Animal {public void eat() {System.out.println("动物正在吃东西");}
}class Dog extends Animal {public void bark() {System.out.println("狗在汪汪叫");}
}public class ExtendsDemo {public static void main(String[] args) {Dog dog = new Dog();dog.eat();dog.bark();}
}

Animal 类中有一个 eat() 方法,输出字符串 “动物正在吃东西”。Dog 类继承自 Animal 类,并定义了一个 bark() 方法,输出字符串 “狗在汪汪叫”。

16.final

用于表示某个变量、方法或类是最终的,不能被修改或继承。

  • final 变量:表示一个常量,一旦被赋值,其值就不能再被修改。这在声明不可变的值时非常有用。
final double PI = 3.14159265359;
  • final 方法表示一个不能被子类重写的方法。这在设计类时,确保某个方法的实现不会被子类修改时非常有用。
class Animal {final void makeSound() {System.out.println("动物发出声音.");}
}class Dog extends Animal {// 错误: 无法覆盖来自 Animal 的 final 方法// void makeSound() {//     System.out.println("狗吠叫.");// }
}public class Main {public static void main(String[] args) {Dog dog = new Dog();dog.makeSound();}
}
  • final 类表示一个不能被继承的类。这在设计类时,确保其不会被其他类继承时非常有用。(String类就是final类型)
final class Animal {void makeSound() {System.out.println("动物发出声音.");}
}// 错误: 类型 Dog 无法继承 final 类 Animal
// class Dog extends Animal {
//     void makeSound() {
//         System.out.println("狗吠叫.");
//     }
// }public class Main {public static void main(String[] args) {Animal animal = new Animal();animal.makeSound();}
}

17.finally

try-catch 配合使用,表示无论是否处理异常,总是执行 finally 块中的代码。

try {int x = 10 / 0;  // 抛出异常
} catch (Exception e) {System.out.println("发生了异常:" + e.getMessage());
} finally {System.out.println("finally 块被执行");
}

18.float

表示单精度浮点数。

float f1 = 3.14f;   // 注意要在数字后面加上 f 表示这是一个 float 类型
float f2 = 1.23e-4f;   // 科学计数法表示小数

在 Java 中,浮点数默认是 double 类型,如果要使用 float 类型的数据,需要在数字后面加上一个 f 或者 F,表示这是一个 float 类型的字面量。另外,也可以使用科学计数法表示浮点数,例如 1.23e-4 表示 0.000123。

19.for

用于声明一个 for 循环,如果循环次数是固定的,建议使用 for 循环。

int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {System.out.println("arr[" + i + "] = " + arr[i]);
}

20.if

用于指定条件,如果条件为真,则执行对应代码。

int n = -3;
if (n > 0) {System.out.println(n + " 是正数");
} else if (n < 0) {System.out.println(n + " 是负数");
} else {System.out.println(n + " 是零");
}

21.implements

用于实现接口。下面是一个实现了 Runnable 接口的类的示例:

public class MyThread implements Runnable {public void run() {// 线程执行的代码}
}

22.import

用于导入对应的类或者接口。例如,如果要使用 Java 标准库中的 ArrayList 类,可以这样写:

import java.util.ArrayList;

23.instanceof

用于判断对象是否属于某个类型(class)。

//例如,假设有一个 Person 类和一个 Student 类,Student 类继承自 Person 类,可以使用 instanceof 运算符来判断一个对象是否为 Person 类或其子类的实例:
Person p = new Student();
if (p instanceof Person) {System.out.println("p is an instance of Person");
}
if (p instanceof Student) {System.out.println("p is an instance of Student");
}

24.int

用于表示整数值。

int x;           // 声明一个 int 类型的变量 x
x = 10;          // 将整数值 10 赋给变量 x
int y = 20;     // 声明并初始化一个 int 类型的变量 y,赋值为整数值 20

25.interface

用于声明接口。会定义一组方法的签名(即方法名、参数列表和返回值类型),但没有方法体。其他类可以实现接口,并提供方法的具体实现。

public interface MyInterface {void method1();int method2(String param);
}

26.long

用于表示长整数值。

long x;           // 声明一个 long 类型的变量 x
x = 10000000000L; // 将长整数值 10000000000 赋给变量 x,需要在数字后面加上 L 或 l 表示这是一个 long 类型的值
long y = 20000000000L; // 声明并初始化一个 long 类型的变量 y,赋值为长整数值 20000000000

27.native

用于声明一个本地方法。本地方法是指在 Java 代码中声明但在本地代码(通常是 C 或 C++ 代码)中实现的方法,它通常用于与操作系统或其他本地库进行交互

public native void nativeMethod();

28.new

用于创建一个新的对象。

以下是使用 new 关键字创建对象实例的基本语法:

ClassName obj = new ClassName();

以下是使用 new 关键字创建数组实例的基本语法:

int[] arr = new int[10];

29.null

如果一个变量是空的(什么引用也没有指向),就可以将它赋值为 null,和空指针异常息息相关。

String str = null; // 声明一个字符串引用,初始化为 null
MyClass obj = null; // 声明一个 MyClass 类型的引用,初始化为 null

30.package

用于声明类所在的包。

package com.example.mypackage;

31.private

一个访问权限修饰符,表示方法或变量只对当前类可见。

public class MyClass {private int x; // 私有属性 x,只能在当前类的内部访问private void foo() {// 私有方法 foo,只能在当前类的内部调用}
}

在这个示例中,MyClass 类有一个私有属性 x 和一个私有方法 foo()。这些成员只能在 MyClass 类的内部访问和调用,对其他类不可见。

32.protected

一个访问权限修饰符,表示方法或变量对同一包内的类和所有子类可见。

package com.example.mypackage;public class MyBaseClass {protected int x; // 受保护的属性 x,可以被子类和同一包中的其他类访问protected void foo() {// 受保护的方法 foo,可以被子类和同一包中的其他类调用}
}package com.example.mypackage;public class MySubClass extends MyBaseClass {public void bar() {x = 10; // 可以访问 MyBaseClass 中的受保护属性 xfoo(); // 可以调用 MyBaseClass 中的受保护方法 foo}
}

在这个示例中,MyBaseClass 类有一个受保护的属性 x 和一个受保护的方法 foo()。这些成员可以被子类和同一包中的其他类访问和调用。MySubClass 类继承自 MyBaseClass 类,并可以访问和修改 MyBaseClass 中的受保护成员。

33.public

一个访问权限修饰符,除了可以声明方法和变量(所有类可见),还可以声明类。main() 方法必须声明为 public。

public class MyClass {public int x; // 公有属性 x,可以被任何类访问public void foo() {// 公有方法 foo,可以被任何类调用}
}

在这个示例中,MyClass 类有一个公有属性 x 和一个公有方法 foo()。这些成员可以被任何类访问和调用,无论这些类是否在同一个包中。

34.return

用于从方法中返回一个值或终止方法的执行。return 语句可以将方法的计算结果返回给调用者,或者在方法执行到某个特定条件时提前结束方法。

public int add(int a, int b) {int sum = a + b;return sum; // 返回 sum 的值,并结束方法的执行
}

此外,return 语句还可以用于提前结束方法的执行。例如,假设我们要编写一个方法,用于判断一个整数是否为偶数:

public static boolean isEven(int number) {if (number % 2 == 0) {return true;}return false;
}

在这个示例中,我们定义了一个名为 isEven 的方法,该方法接收一个整数参数 number。如果 number 是偶数,我们使用 return 语句提前返回 true。否则,方法执行将继续,最后返回 false。

35.short

用于表示短整数,占用 2 个字节(16 位)的内存空间。

short x = 10; // 声明一个 short 类型的变量 x,赋值为 10
short y = 20; // 声明一个 short 类型的变量 y,赋值为 20

36.static

表示该变量或方法是静态变量或静态方法。

public class MyClass {public static int x; // 静态变量 x,属于类的成员public static void foo() {// 静态方法 foo,属于类的成员}
}

在这个示例中,MyClass 类有一个静态变量 x 和一个静态方法 foo()。这些成员属于类的成员,可以通过类名直接访问,不需要创建对象。

37.strictfp

strict floating-point,并不常见,通常用于修饰一个方法,用于限制浮点数计算的精度和舍入行为。当你在类、接口或方法上使用 strictfp 时,该范围内的所有浮点数计算将遵循 IEEE 754 标准的规定,以确保跨平台的浮点数计算的一致性。

不同的硬件平台和 JVM 实现可能对浮点数计算的精度和舍入行为有差异,这可能导致在不同环境中运行相同的浮点数计算代码产生不同的结果。使用 strictfp 关键字可以确保在所有平台上获得相同的浮点数计算结果,避免计算结果的不一致问题。

但请注意,使用 strictfp 可能会对性能产生影响,因为可能需要更多的计算和转换来确保遵循 IEEE 754 标准。因此,在使用 strictfp 时,需要权衡精度和一致性与性能之间的关系。

public strictfp class MyClass {public static void main(String[] args) {double a = 0.1;double b = 0.2;double result = a + b;System.out.println("Result: " + result);}
}>>>Result: 0.30000000000000004

在这个示例中,MyClass 类被声明为 strictfp,因此类中的所有浮点数计算都将遵循 IEEE 754 标准。

在大多数现代操作系统上,使用 strictfp 可能不会产生显著差异,因为大家都遵循 IEEE 754 标准,除非是一些较旧的硬件平台。

IEEE 754 标准(IEEE Standard for Floating-Point Arithmetic)是一个定义浮点数表示和运算的国际标准。由国际电气和电子工程师协会(IEEE)制定,首次发布于1985年。

IEEE 754 标准主要规定了以下几个方面:

浮点数表示:标准定义了两种浮点数格式,单精度(32位)和双精度(64位)。这两种格式分别由符号位、指数位和尾数位组成,用于表示浮点数的大小和精度。

四舍五入和舍入模式:标准定义了多种舍入模式,例如向最接近的数舍入(Round to Nearest, Ties to Even)、向零舍入(Round toward Zero)、向正无穷舍入(Round toward +∞)和向负无穷舍入(Round toward -∞)等。这些模式指导了浮点数计算过程中如何处理精度损失和舍入误差。

特殊值:标准定义了一些特殊的浮点数值,如正无穷(+∞)、负无穷(-∞)和非数值(NaN)。这些特殊值用于表示浮点数计算中可能出现的溢出、下溢和未定义结果等情况。

浮点数运算:标准规定了浮点数的基本运算(加、减、乘、除)和比较运算(等于、不等于、大于、小于、大于等于、小于等于)的行为和结果。这些运算需要遵循标准中规定的表示、舍入和特殊值处理规则。

public class Ieee754Demo {public static void main(String[] args) {float a = 0.1f;float b = 0.2f;float c = a + b;System.out.println("a = " + a);System.out.println("b = " + b);System.out.println("c = a + b = " + c);double x = 1.0 / 0.0;double y = -1.0 / 0.0;double z = 0.0 / 0.0;System.out.println("x = 1.0 / 0.0 = " + x);System.out.println("y = -1.0 / 0.0 = " + y);System.out.println("z = 0.0 / 0.0 = " + z);}
}

image-20240801122045768

我们可以看到 IEEE 754 标准中的浮点数表示和运算:

  • 单精度浮点数的加法:变量 a 和 b 分别存储了 0.1 和 0.2,它们的和 c 等于 0.3。由于浮点数表示的精度限制,c 的实际值可能与理论值略有误差。
  • 特殊值:变量 x、y 和 z 分别存储了正无穷(+∞)、负无穷(-∞)和非数值(NaN)。这些特殊值是由除法运算产生的,当被除数为 0 或结果无法表示时,会返回相应的特殊值。

38.super

可用于调用父类的方法或者字段。

class Animal {protected String name;public Animal(String name) {this.name = name;}public void eat() {System.out.println(name + " is eating.");}
}public class Dog extends Animal {public Dog(String name) {super(name); // 调用父类的构造方法}public void bark() {System.out.println(name + " is barking.");}public void eat() {super.eat(); // 调用父类的方法System.out.println(name + " is eating bones.");}
}

39.switch

用于根据某个变量的值选择执行不同的代码块。switch 语句通常与 case 和 default 一起使用。每个 case 子句表示一个可能的值和对应的代码块,而 default 子句用于处理不在 case 子句中的值。

public class Main {public static void main(String[] args) {int dayOfWeek = 3;switch (dayOfWeek) {case 1:System.out.println("Monday");break;case 2:System.out.println("Tuesday");break;case 3:System.out.println("Wednesday");break;case 4:System.out.println("Thursday");break;case 5:System.out.println("Friday");break;case 6:System.out.println("Saturday");break;case 7:System.out.println("Sunday");break;default:System.out.println("Invalid day");break;}}
}

在这个示例中,我们定义了一个名为 dayOfWeek 的整数变量,并赋予了一个值。然后,我们使用 switch 语句根据 dayOfWeek 的值来输出对应的星期几。每个 case 子句表示 dayOfWeek 可能的值,后面紧跟着要执行的代码。使用 break 语句跳出 switch 语句,避免执行其他 case 子句的代码。如果 dayOfWeek 的值不在 case 子句中,default 子句将被执行。

40.synchronized

用于指定多线程代码中的同步方法、变量或者代码块。

public class MyClass {private int count;public synchronized void increment() {count++; // 同步方法}public void doSomething() {synchronized(this) { // 同步代码块// 执行一些需要同步的操作}}
}

41.this

可用于在方法或构造方法中引用当前对象。

public class MyClass {private int num;public MyClass(int num) {this.num = num; // 使用 this 关键字引用当前对象的成员变量}public void doSomething() {System.out.println("Doing something with " + this.num); // 使用 this 关键字引用当前对象的成员变量}public MyClass getThis() {return this; // 返回当前对象本身}
}

在这个示例中,MyClass 类有一个私有成员变量 num,并定义了一个构造方法、一个方法和一个返回当前对象的方法。在构造方法中,使用 this 关键字引用当前对象的成员变量,并将传入的参数赋值给该成员变量。在方法 doSomething() 中,使用 this 关键字引用当前对象的成员变量,并输出该成员变量的值。在方法 getThis() 中,直接返回当前对象本身。

42.throw

主动抛出异常。

public class MyClass {public void doSomething(int num) throws Exception {if (num < 0) {throw new Exception("num must be greater than zero"); // 手动抛出异常}// 执行一些操作}
}

43.throws

用于声明异常。

public class MyClass {public void doSomething(int num) throws Exception {if (num < 0) {throw new Exception("num must be greater than zero"); // 手动抛出异常}// 执行一些操作}
}

44.transient

修饰的字段不会被序列化。

public class MyClass implements Serializable {private int id;private String name;private transient String password;public MyClass(int id, String name, String password) {this.id = id;this.name = name;this.password = password;}// 省略 getter 和 setter 方法@Overridepublic String toString() {return "MyClass{" +"id=" + id +", name='" + name + '\'' +", password='" + password + '\'' +'}';}
}

在这个示例中,MyClass 类实现了 Serializable 接口,表示该类的对象可以被序列化。该类有三个成员变量,分别是 id、name 和 password。其中,password 成员变量被标记为 transient,表示在序列化过程中忽略这个成员变量。

45.try

用于包裹要捕获异常的代码块。

try {// 可能抛出异常的代码int result = 1 / 0;
} catch (Exception e) {// 异常处理代码e.printStackTrace();
}

46.void

用于指定方法没有返回值。

public void doSomething() {// 方法体
}

47.volatile

保证不同线程对它修饰的变量进行操作时的可见性,即一个线程修改了某个变量的值,新值对其他线程来说是立即可见的。

public class MyThread extends Thread {private volatile boolean running = true;@Overridepublic void run() {while (running) {// 线程执行的代码}}public void stopThread() {running = false;}
}

在这个示例中,MyThread 类继承了 Thread 类,重写了 run() 方法。MyThread 类有一个成员变量 running,被标记为 volatile,表示这个变量是共享的,可能会被多个线程同时访问。在 run() 方法中,使用 while 循环检查 running 变量的值,如果 running 为 true,就继续执行循环体中的代码。在另一个方法 stopThread() 中,将 running 变量的值设置为 false,表示需要停止线程。

48.while

如果循环次数不固定,建议使用 while 循环。

int i = 0;
while (i < 10) {System.out.println(i);i++;
}

Java中的关键字常用的就是这48个,除了这48个关键字,Java中还有两个非常特殊的保留字(goto 和 const),它们不能在程序中使用。具体介绍如下:

49.goto(保留字)

goto 在 C语言中叫做‘无限跳转’语句,在 Java 中,不再使用 goto 语句,因为无限跳转会破坏程序结构。但 Java 中确实可以使用标签(label)与 break 和 continue 语句结合来实现类似 goto 的跳转功能。以下是一个简单的示例:

public class LabelDemo {public static void main(String[] args) {outerLoop:for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (i == 1 && j == 1) {System.out.println("跳过 outerLoop 中的当前迭代");continue outerLoop;}System.out.println("i: " + i + ", j: " + j);}}System.out.println("结束");}
}

在这个示例中,我们使用了两层嵌套循环。外层循环有一个名为 outerLoop 的标签。当 i 等于 1 且 j 等于 1 时,我们使用 continue outerLoop 语句跳过外层循环中的当前迭代。这与 goto 的行为类似。

image-20240802112926365

尽管可以使用标签实现类似 goto 的跳转功能,但这种用法在 Java 中仍然较少见,因为过度使用可能导致代码难以理解和维护。通常建议尽可能使用其他控制结构(如 if、for 和 while 语句)来组织代码。

以下是一个使用 if 和 for 语句替代标签跳转的示例。在这个示例中,我们使用了一个布尔变量 skipIteration 来决定是否跳过外层循环的当前迭代:

public class IfForDemo {public static void main(String[] args) {for (int i = 0; i < 3; i++) {boolean skipIteration = false;for (int j = 0; j < 3; j++) {if (i == 1 && j == 1) {System.out.println("跳过外层循环中的当前迭代");skipIteration = true;break;}System.out.println("i: " + i + ", j: " + j);}if (skipIteration) {continue;}}}
}

在这个示例中,当 i 等于 1 且 j 等于 1 时,我们将 skipIteration 设置为 true,然后使用 break 语句跳出内层循环。在外层循环中,我们检查 skipIteration 变量的值,如果为 true,则跳过外层循环的当前迭代。

50.const(保留字)

const在C语言中是声明常量的关键字,在 Java 中可以使用 public static final 三个关键字的组合来达到常量的效果。

public class Circle {public static final double PI = 3.14159;public static double calculateArea(double radius) {return PI * radius * radius;}
}

在这个示例中,我们使用 public static final 关键字组合定义了一个名为 PI 的常量。因为它是 public 的,所以其他类可以访问这个常量。因为它是 static 的,所以它与类关联,而不是类的实例。因为它是 final 的,所以它的值不能被更改。

😃😃😃

相关文章:

Java关键字及保留字总结

文章目录 Java关键字及保留字总结&#xff08;按首字母字母顺序所排列&#xff09;1.abstract2.boolean3.break4.byte5.case6.catch7.char8.class9.continue10.default11.do12.double13.else14.enum15.extends16.final17.finally18.float19.for20.if21.implements22.import23.i…...

【PGCCC】PostgreSQL 14 小版本分析,有那个版本不建议使用#PG中级

以下是对 PostgreSQL 14 各个小版本的详细分析&#xff0c;包括每个版本的主要变化、修复的 bug 和潜在的问题&#xff1a; PostgreSQL 14.0 发布日期&#xff1a;2021 年 9 月 30 日 主要变化&#xff1a; 增加了并行查询的改进&#xff0c;提升了性能。增强了 JSON 数据类…...

B树在数据库中的应用:理论与实践

B树在数据库中的应用&#xff1a;理论与实践 B树&#xff08;B-tree&#xff09;是一种自平衡的树数据结构&#xff0c;广泛应用于数据库系统中&#xff0c;特别是用于实现索引和文件系统中的关键字查找。B树的设计目标是保持数据有序并允许高效的查找、插入和删除操作。本文将…...

网络编程 -------- 3、TCP_UDP_UNIX

1、基于TCP的套接字编程流程 Server.c socket bind &#xff08;服务器的ip端口&#xff09; listen accept recv / send close Client.c socket connect &#xff08;服务器的ip端口&#xff09; …...

口袋奇兵:游戏辅助教程!陆军搭配阵容推荐,平民必备!

《口袋奇兵》是一款策略类手游&#xff0c;玩家需要在游戏中组建和指挥自己的军队&#xff0c;进行各种战斗和任务。为了在游戏中取得更好的成绩&#xff0c;合理搭配英雄和使用辅助工具是非常重要的。本攻略将为大家介绍一种强力的陆军搭配阵容&#xff0c;以及如何利用VMOS云…...

Spring Boot 集成参数效验 Validator

为什么需要参数效验? 在业务开发中,为了防止非法参数对业务造成影响,所以需要对用户输入的正确性、数据完整性、安全性、业务规则的执行做效验,靠代码对接口参数做if判断的话就太繁琐了,代码冗余且可读性差(主要是不够优雅)。 Validator效验框架遵循了JSR-303验证规范…...

63、ELK安装和部署

一、ELK日志系统 1.1、ELK平台的定义 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch、Logstash和Kiabana 三个开源工具配合使用&#xff0c;完成更强大的用户对日志的查询、排序、统计需求 E:elasticsearch ES分布式索引型非关系数据库&#xff0c;存…...

【Dash】简单的直方图

一、Visualizing Data The Plotly graphing library has more than 50 chart types to choose from. In this example, we will make use of the histogram chart. # Import packages from dash import Dash, html, dash_table, dcc import pandas as pd import plotly.expre…...

【CTF-Crypto】格密码基础(例题较多,非常适合入门!)

格密码相关 文章目录 格密码相关格密码基本概念&#xff08;属于后量子密码&#xff09;基础的格运算&#xff08;行列式运算&#xff09;SVP&#xff08;shortest Vector Problem&#xff09;最短向量问题CVP&#xff08;Closet Vector Problem&#xff09;最近向量问题 做题要…...

Java对象流

对象流 对象输入流 java.io.ObjectInputStream使用对象流可以进行对象反序列化 构造器 ObjectInputStream(InputStream in) 将当前创建的对象输入流链接在指定的输入流上 方法 Object readObject() 进行对象反序列化并返回。该方法会从当前对象输入流链接的流中读取若干…...

问界M7是不是换壳东风ix7? 这下有答案了

文 | AUTO芯 作者 | 谦行 终于真相大白了 黑子们出来挨打啊 问界M7是换壳的东风ix7&#xff1f; 你们没想到&#xff0c;余大嘴会亲自出来正面回应吧 瞧瞧黑子当时乐的 问界你可以啊&#xff01;靠改名字造车呢&#xff1f; 还有更过分的&#xff0c;说M7是东风小康ix7…...

mybatis多条件in查询拓展

背景 最近碰上有个业务&#xff0c;查询的sql如下&#xff1a; select * from table where (sku_id,batch_no) in ((#{skuId},#{batchNo}),...); 本来也没什么&#xff0c;很简单常见的一种sql。问题是我们使用的是mybatis-plus&#xff0c;然后写的时候又没有考虑到后面的查…...

<Rust><iced>基于rust使用iced构建GUI实例:一个CRC16校验码生成工具

前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本文是专栏第五篇实例,是一个CRC16校验码转换程序。 本篇内容: 1、CRC16校验码生成 代码介绍 本文的crc16校验码生成工具,主要设计两个方面,一个是crc16 modbus…...

动态规划与0/1背包问题:深入解析

目录 一、动态规划简介 二、0/1背包问题概述 三、动态规划解决0/1背包问题 1. 定义子问题 2. 确定状态 3. 初始条件和边界情况 4. 计算最终结果 5. 代码实现 6. 空间优化 四、例题讲解 例题1&#xff1a;基础例题 例题2&#xff1a;路径恢复 例题3&#xff1a;扩展…...

Python爬虫:下载人生格言

Python爬虫:下载人生格言 爬取网页 将这些格言下载存储到本地 代码: import requests #导入requests库&#xff0c;用于提取网页 from lxml import etree#导入lxml库&#xff0c;用于Xpath数据解析#请求头 header{ user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) A…...

使用注意力机制的seq2seq

一、背景 1、机器翻译中&#xff0c;每个生成的词可能相关于源句子中不同的词&#xff0c;但是之前用的是最后一个RNN层出来的context。 2、加入注意力 &#xff08;1&#xff09;假设输入序列中有&#x1d447;个词元&#xff0c; 解码时间步&#x1d461;′的上下文变量是…...

我们的前端开发逆天了!1 小时搞定了新网站,还跟我说 “不要钱”

大家好&#xff0c;我是程序员鱼皮。前段时间我们上线了一个新软件 剪切助手 &#xff0c;并且针对该项目做了一个官网&#xff1a; 很多同学表示官网很好看&#xff0c;还好奇是怎么做的&#xff0c;其实这个网站的背后还有个有趣的小故事。。。 鱼皮&#xff1a;我们要做个官…...

.NET 相关概念

.NET 和 .NET SDK .NET 介绍 .NET 是一个由 Microsoft 开发和维护的广泛用于构建各种类型应用程序的开发框架。它是一个跨平台、跨语言的开发平台&#xff0c;提供了丰富的类库、API和开发工具&#xff0c;支持开发者使用多种编程语言&#xff08;如C#、VB.NET、F#等&#xf…...

Kubernetes 从集群中移除一个节点(Node)

目录 1. 移除工作节点(Worker Node)1.1 确定工作节点名称1.2 驱逐工作节点上的Pod1.3 删除工作节点1.4 重置该工作节点 2. 移除控制平面节点(Control Plane Node)2.1 确定控制平面节点名称2.2 驱逐控制平面节点上的Pod2.3 更新 etcd 集群2.4 从集群中删除控制平面节点2.5 重置移…...

高德地图离线版 使用高德地图api的方法

高德离线包我已经存至Gitee&#xff08;自行下载即可&#xff09;&#xff1a;高德地图离线解决方案: 高德地图离线解决方案 然因为高德地图的瓦片地图太大&#xff0c;所以要让后端部署下 前端直接调用 如果本地 直接找到瓦片图路径就可以 initMap () {const base_url "…...

springboot 集成私有化Ollama大模型开源框架,搭建AI智能平台

Ollama是一个用于大数据和机器学习的平台&#xff0c;它可以帮助企业进行数据处理、分析和决策制定。 &#xff11;、在Spring Boot项目pom.xml中添加Ollama客户端库依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-a…...

6.key的层级结构

redis的key允许多个单词形成层级结构&#xff0c;多个单词之间用:隔开&#xff0c;格式如下&#xff1a; 项目名:业务名:类型:id 这个格式并非固定的&#xff0c;可以根据自己的需求来删除或添加词条。 例如&#xff1a; taobao:user:1 taobao:product:1 如果value是一个java对…...

LogonTracer图形化事件分析工具

LogonTracer这款工具是基于Python编写的&#xff0c;并使用Neo4j作为其数据库&#xff08;Neo4j多用于图形数据库&#xff09;&#xff0c;是一款用于分析Windows安全事件登录日志的可视化工具。它会将登录相关事件中的主机名&#xff08;或IP地址&#xff09;和帐户名称关联起…...

【云原生】Prometheus监控Docker指标并接入Grafana

目录 一、前言 二、docker监控概述 2.1 docker常用监控指标 2.2 docker常用监控工具 三、CAdvisor概述 3.1 CAdvisor是什么 3.2 CAdvisor功能特点 3.3 CAdvisor使用场景 四、CAdvisor对接Prometheus与Grafana 4.1 环境准备 4.2 docker部署CAdvisor 4.2.2 docker部署…...

搭建日志系统ELK(二)

搭建日志系统ELK(二) 架构设计 在搭建以ELK为核心的日志系统时&#xff0c;Logstash作为日志采集的核心组件&#xff0c;负责将各个服务的日志数据采集、清洗、过滤。然而缺点也很明显&#xff1a; 占用较多的服务器资源。配置复杂&#xff0c;学习曲线陡峭。处理大数据量时…...

常用排序算法的实现与介绍

常用排序算法的实现与介绍 在计算机科学中&#xff0c;排序算法是非常基础且重要的一类算法。本文将通过C语言代码实现&#xff0c;介绍几种常见的排序算法&#xff0c;包括冒泡排序、选择排序、插入排序和快速排序。以下是这些排序算法的具体实现和简要介绍。 1. 冒泡排序&am…...

仓颉语言 -- 宏

使用新版本 &#xff08;2024-07-19 16:10发布的&#xff09; 1、宏的简介 宏可以理解为一种特殊的函数。一般的函数在输入的值上进行计算&#xff0c;然后输出一个新的值&#xff0c;而宏的输入和输出都是程序本身。在输入一段程序&#xff08;或程序片段&#xff0c;例如表达…...

Nginx代理minIO图片路径实现公网图片访问

1、网络部署情况 VUE前端项目Nginx部署在公司内网&#xff0c;端口7790 后台接口项目部署在公司内网&#xff0c;端口7022 minIO服务部署在公司内网&#xff0c;端口9000 公网IP设备将80端口映射到7790端口&#xff08;具体映射方式不详&#xff09;&#xff0c;实现通过互…...

从零开始掌握tcpdump:参数详解

Linux tcpdump命令详解 1. 语法 tcpdump [-adeflnnNOpqStvxX] [-c <数据包数目>] [-dd] [-ddd] [-F <表达文件>] [-i <网络界面>] [-r <数据包文件>] [-s <数据包大小>] [-tt] [-T <数据包类型>] [-vv] [-w <数据包文件>] [输出数…...

漏洞挖掘 | edusrc记一次某中学小程序渗透测试

一、搜集渗透目标 现在的EDU挖web端的上分效率远不如小程序&#xff0c;因此这篇文章浅浅记录一次小程序的挖掘吧。如果各位大牛想要快速出洞&#xff0c;不妨跳过大学&#xff0c;学院等小程序&#xff0c;而重点关注小学、中学、幼儿园等&#xff0c;这些小程序的出洞率还是…...

电商分销系统/优化公司治理结构

最近看别人的项目发现有些语法不能理解&#xff0c;所以百度进行了学习。现在总结一下。 ref 有两种用法 1.ref 加在普通的元素上&#xff0c;用this.ref.name 获取到的是dom元素 2.ref 加在子组件上&#xff0c;用this.ref.name 获取到的是组件实例&#xff0c;可以使用组件的…...

制作动态网站用什么软件/南宁seo外包要求

修改uni-app 或者 小程序 的复选框和单选框的大小 在写表单的时候 总会遇到使用单选框或者复选框的时候 不管是uni-app 还是小程序 自带的总是太大了 对此我们可以修改其的css属性 修改其大小 1. 原始大小 复选框太大 页面整体不协调 2. 添加css 修改其大小 .size {transform:…...

成都网站网络建设/成都网络营销搜索推广

好的&#xff0c;您已经阅读了Dan Webb的新功能文章“ 使用原型实现无痛JavaScript ”&#xff0c;您会感到无所不能。 现在怎么办&#xff1f; 碰巧&#xff0c;乔纳森斯努克&#xff08;Jonathan Snook&#xff09;有答案。 在花了几个小时弄清楚它是如何工作之后&#xff0c…...

做跨境的网站/营销软件

前一段写了一篇“使用Windows Mobile 6.5访问Exchange2010邮箱”&#xff0c;看到大家很感兴趣&#xff0c;并有朋友询问如何使用手机版的OC,今天整好有时间&#xff0c;把这段内容给补充上&#xff0c;希望能给朋友们帮上忙。当然如果想用手机和公司的OC通信&#xff0c;我们需…...

网站开发建设准备工作/精准客户运营推广

echo【功能说明】&#xff1a;echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。【语法格式】&#xff1a;echo [-ne][字符串]echo [--help][--version]【选项参数】&#xff1a;-n 不要在最后自动换行-e 若字符串中出现以下字符&#xf…...

东莞网站建设 信科网络/如何查看百度搜索指数

https://leetcode-cn.com/problems/lru-cache/ 思路&#xff1a;使用双向链表模拟队列&#xff0c;当执行获取或者写入操作时&#xff0c;将对应的节点放到头节点之后(队头)。为了做到O(1)O(1)O(1)获取数据、O(1)O(1)O(1)写入数据&#xff0c;我们还需要一个哈希表&#xff0c…...