【JAVA-Day04】Java关键字和示例:深入了解常用关键字的用法

news2024/11/18 21:44:18

Java关键字和示例:深入了解常用关键字的用法

  • 摘要
  • Java 关键字、标识符和命名规范
    • 一、Java 关键字
    • 常用关键字`DEMO`
      • 1. 示例代码使用 `if` 和 `else` 关键字:
      • 2. 示例代码使用 `for` 循环:
      • 3. 示例代码使用 `switch` 关键字:
      • 4. 示例代码使用 `while` 循环:
      • 5. 示例代码使用 `while` 循环读取用户输入:
      • 6. 示例代码使用 `for` 循环遍历数组:
      • 7. 示例代码使用 `try` 和 `catch` 处理异常:
      • 8. 示例代码使用 `static` 定义静态方法:
      • 9. 示例代码使用 `public`、`private` 和 `protected` 访问修饰符:
      • 10. 示例代码使用 `enum` 枚举类型:
      • 11. 示例代码使用 `try`、`catch` 和 `finally` 处理异常:
      • 12. 示例代码使用 `interface` 接口:
      • 13. 示例代码使用 `extends` 关键字继承类:
      • 14. 示例代码使用 `static` 关键字创建静态成员:
      • 15. 示例代码使用 `return` 语句返回值:
      • 16. 示例代码使用 `volatile` 关键字:
      • 17. 示例代码使用 `break` 和 `continue` 关键字:
      • 18. 示例代码使用 `assert` 关键字:
      • 19. 示例代码使用 `native` 关键字:
      • 16. 示例代码使用 `goto` 关键字:
      • 17. 示例代码使用 `strictfp` 关键字:
      • 18. 示例代码使用 `this` 关键字:
      • 19. 示例代码使用 `super` 关键字:
      • 20. 示例代码使用 `instanceof` 关键字:
    • 二、Java 标识符
    • 三、命名规范
      • 3.1 基本命名规范
      • 3.2 高级命名规范
        • 3.2.1 类名
        • 3.2.2 方法名
        • 3.2.3 变量名
        • 3.2.4 常量名
        • 3.2.5 包命名
        • 3.2.6 泛型命名
    • 结论

)

在这里插入图片描述

博主 默语带您 Go to New World.
个人主页—— 默语 的博客👦🏻
《java 面试题大全》
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨

🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥


在这里插入图片描述

摘要

本文深入探讨了Java编程语言中的常用关键字及其示例用法。我们从基本的数据类型声明开始,逐步介绍了控制流、异常处理、多线程、类继承等多个关键字的实际应用。通过详细的示例代码,读者将能够更好地理解这些关键字的功能和用法,为Java编程提供了坚实的基础。无论是新手还是有经验的开发人员,都可以从本文中获得有关Java关键字的重要知识和实用技巧。

Java 关键字、标识符和命名规范

在Java编程中,关键字、标识符和命名规范是构建清晰、可维护代码的关键因素。本文将深入探讨这些概念,并提供示例以帮助您更好地理解它们。

一、Java 关键字

Java关键字是具有特殊含义的保留单词,它们构成了Java编程语言的基础,开发人员不能重新定义这些关键字。下面是Java的一些关键字及其用途:

  • abstract:用于表明类或成员方法具有抽象属性,即不能被实例化的类或未完整实现的方法。
  • assert:主要用于调试目的,用来断言某个条件为真。如果条件不满足,将抛出AssertionError
  • boolean:声明布尔类型的关键字,表示真或假值。
  • break:用于跳出当前循环或switch语句。
  • byte:声明字节类型的关键字,用于存储小整数值。
  • case:用在switch语句中,表示一个分支的情况。
  • catch:用于异常处理,用来捕获并处理异常。
  • char:声明字符类型的关键字,用于存储单个字符。
  • class:声明一个类。
  • const:在Java中已被废弃,不再使用。
  • continue:用于结束当前循环的本次迭代,然后继续下一次迭代。
  • default:用在switch语句中,表示默认情况。
  • do:用于创建一个do-while循环结构,至少执行一次循环体。
  • double:声明双精度浮点数类型的关键字。
  • else:用在条件语句中,表示当条件不满足时执行的块。
  • enum:用于声明枚举类型,表示一组命名的常量。
  • extends:用于表示一个类是另一个类的子类,或者一个接口是另一个接口的子接口。
  • final:用于修饰类、方法或变量,表示它们不可继承、重写或修改。也用于定义常量。
  • finally:用于异常处理,声明的代码块通常会在trycatch块执行后执行,无论是否发生异常。
  • float:声明单精度浮点数类型的关键字。
  • for:用于创建for循环,重复执行一段代码。
  • goto:在Java中已被废弃,不再使用。
  • if:用于条件语句,根据条件执行不同的代码块。
  • implements:用于表示一个类实现了给定的接口。
  • import:用于导入其他类或包,以便在当前代码中使用。
  • instanceof:用于测试一个对象是否是指定类型的实例。
  • int:声明整数类型的关键字。
  • interface:用于声明接口,接口是一种抽象的、纯粹的规范。
  • long:声明长整数类型的关键字。
  • native:用于声明一个方法是由与计算机相关的本地语言实现的。
  • new:用于创建新的实例对象。
  • package:用于声明包,包是一种组织和管理类的方式。
  • private:用于指定私有访问控制方式,只能在类内部访问。
  • protected:用于指定受保护的访问控制方式,可以在同一包内或子类中访问。
  • public:用于指定公共访问控制方式,可以被任何类访问。
  • return:用于从成员方法中返回值。
  • short:声明短整数类型的关键字。
  • static:用于表示静态属性或方法,属于类而不是实例。
  • strictfp:用于声明单精度或双精度浮点数表达式遵循IEEE 754算术规范。
  • super:用于表示当前对象的父类型的引用或调用父类型的构造方法。
  • switch:用于创建分支语句结构,根据不同的条件执行不同的分支。
  • synchronized:用于表示一段代码需要同步执行,通常与多线程编程相关。
  • this:用于指向当前实例对象的引用。
  • throw:用于抛出异常。
  • throws:用于声明在当前定义的成员方法中可能抛出的异常。
  • transient:用于声明不需要序列化的成员域。
  • try:用于尝试执行可能抛出异常的代码块。
  • void:用于声明当前成员方法没有返回值。
  • volatile:用于表示两个或多个变量必须同步地发生变化,通常与多线程编程相关。
  • while:用于创建循环结构,根据条件反复执行一段代码。

此外,Java还有3个特殊直接量:truefalsenull,它们也不能用作标识符。

常用关键字DEMO

1. 示例代码使用 ifelse 关键字:

public class IfElseDemo {
    public static void main(String[] args) {
        int number = 10;

        // 使用 if 来判断条件是否成立
        if (number > 5) {
            System.out.println("Number is greater than 5.");
        } else {
            System.out.println("Number is not greater than 5.");
        }
    }
}

这个示例演示了如何使用 ifelse 来根据条件执行不同的代码块。

2. 示例代码使用 for 循环:

public class ForLoopDemo {
    public static void main(String[] args) {
        // 使用 for 循环打印数字 1 到 5
        for (int i = 1; i <= 5; i++) {
            System.out.println("Number: " + i);
        }
    }
}

这个示例展示了如何使用 for 循环来重复执行一段代码。

3. 示例代码使用 switch 关键字:

public class SwitchDemo {
    public static void main(String[] args) {
        int dayOfWeek = 3;

        // 使用 switch 来根据不同的值执行不同的分支
        switch (dayOfWeek) {
            case 1:
                System.out.println("Monday");
                break;
            case 2:
                System.out.println("Tuesday");
                break;
            case 3:
                System.out.println("Wednesday");
                break;
            default:
                System.out.println("Other day");
        }
    }
}

这个示例演示了如何使用 switch 来根据不同的值执行不同的分支代码,同时使用 break 来终止分支。

4. 示例代码使用 while 循环:

public class WhileLoopDemo {
    public static void main(String[] args) {
        int count = 0;

        // 使用 while 循环打印数字 0 到 4
        while (count < 5) {
            System.out.println("Count: " + count);
            count++;
        }
    }
}

这个示例展示了如何使用 while 循环来重复执行一段代码,直到条件不再满足。

5. 示例代码使用 while 循环读取用户输入:

import java.util.Scanner;

public class WhileInputDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input;

        // 使用 while 循环读取用户输入,直到用户输入 "exit"
        while (true) {
            System.out.print("请输入内容(输入 'exit' 退出): ");
            input = scanner.nextLine();
            
            if (input.equals("exit")) {
                System.out.println("退出循环。");
                break;
            }
            
            System.out.println("你输入的是: " + input);
        }
        
        scanner.close();
    }
}

这个示例演示了如何使用 while 循环来读取用户输入,直到用户输入 “exit” 为止。

6. 示例代码使用 for 循环遍历数组:

public class ForArrayDemo {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        // 使用 for 循环遍历数组并打印每个元素
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("Element at index " + i + ": " + numbers[i]);
        }
    }
}

这个示例展示了如何使用 for 循环来遍历数组并访问数组的元素。

7. 示例代码使用 trycatch 处理异常:

public class ExceptionHandlingDemo {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("Result: " + result);
        } catch (ArithmeticException e) {
            System.err.println("除法运算出错: " + e.getMessage());
        }
    }

    public static int divide(int a, int b) {
        if (b == 0) {
            throw new ArithmeticException("除数不能为零");
        }
        return a / b;
    }
}

这个示例演示了如何使用 trycatch 来处理异常,以避免程序崩溃。

8. 示例代码使用 static 定义静态方法:

public class StaticMethodDemo {
    public static void main(String[] args) {
        int sum = add(5, 3);
        System.out.println("Sum: " + sum);
    }

    public static int add(int a, int b) {
        return a + b;
    }
}

这个示例演示了如何定义和调用静态方法。

9. 示例代码使用 publicprivateprotected 访问修饰符:

public class AccessModifiersDemo {
    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        myClass.publicMethod();
        // myClass.privateMethod(); // 私有方法无法在外部访问
        // myClass.protectedMethod(); // 受保护方法无法在不同包的外部访问
    }
}

class MyClass {
    public void publicMethod() {
        System.out.println("这是一个公共方法");
    }

    private void privateMethod() {
        System.out.println("这是一个私有方法");
    }

    protected void protectedMethod() {
        System.out.println("这是一个受保护方法");
    }
}

这个示例演示了如何使用不同的访问修饰符来控制方法的访问权限。

10. 示例代码使用 enum 枚举类型:

public class EnumDemo {
    public static void main(String[] args) {
        DayOfWeek day = DayOfWeek.WEDNESDAY;

        switch (day) {
            case MONDAY:
                System.out.println("星期一");
                break;
            case TUESDAY:
                System.out.println("星期二");
                break;
            case WEDNESDAY:
                System.out.println("星期三");
                break;
            default:
                System.out.println("其他");
        }
    }
}

enum DayOfWeek {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

这个示例展示了如何使用 enum 枚举类型来表示一组命名的常量。

11. 示例代码使用 trycatchfinally 处理异常:

public class ExceptionHandlingFinallyDemo {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("Result: " + result);
        } catch (ArithmeticException e) {
            System.err.println("除法运算出错: " + e.getMessage());
        } finally {
            System.out.println("无论是否发生异常,都会执行这里的代码块");
        }
    }

    public static int divide(int a, int b) {
        if (b == 0) {
            throw new ArithmeticException("除数不能为零");
        }
        return a / b;
    }
}

这个示例演示了如何使用 trycatchfinally 来处理异常,确保无论是否发生异常,finally 中的代码都会执行。

12. 示例代码使用 interface 接口:

public class InterfaceDemo {
    public static void main(String[] args) {
        MyInterfaceImpl myObj = new MyInterfaceImpl();
        myObj.display();
        myObj.show();
    }
}

interface MyInterface {
    void display();
}

class MyInterfaceImpl implements MyInterface {
    public void display() {
        System.out.println("实现了 display() 方法");
    }

    void show() {
        System.out.println("自定义方法");
    }
}

这个示例演示了如何定义接口和实现接口,以及如何使用接口的方法。

13. 示例代码使用 extends 关键字继承类:

public class InheritanceDemo {
    public static void main(String[] args) {
        ChildClass child = new ChildClass();
        child.printMessage();
    }
}

class ParentClass {
    void printMessage() {
        System.out.println("这是父类的消息");
    }
}

class ChildClass extends ParentClass {
    @Override
    void printMessage() {
        System.out.println("这是子类的消息");
    }
}

这个示例演示了如何使用 extends 关键字来创建类的继承关系,子类可以覆盖父类的方法。

14. 示例代码使用 static 关键字创建静态成员:

public class StaticDemo {
    public static void main(String[] args) {
        Employee emp1 = new Employee("Alice");
        Employee emp2 = new Employee("Bob");
        Employee.displayTotalEmployees();
    }
}

class Employee {
    private static int totalEmployees = 0;
    private String name;

    public Employee(String name) {
        this.name = name;
        totalEmployees++;
    }

    public static void displayTotalEmployees() {
        System.out.println("总员工数: " + totalEmployees);
    }
}

这个示例展示了如何使用 static 关键字来创建静态成员变量和方法,静态成员与类相关联而不是实例。

15. 示例代码使用 return 语句返回值:

public class ReturnDemo {
    public static void main(String[] args) {
        int result = addNumbers(5, 3);
        System.out.println("和为: " + result);
    }

    public static int addNumbers(int a, int b) {
        return a + b;
    }
}

这个示例演示了如何使用 return 语句从方法中返回值。

16. 示例代码使用 volatile 关键字:

public class VolatileDemo {
    private static volatile boolean flag = false;

    public static void main(String[] args) {
        Thread writerThread = new Thread(() -> {
            flag = true;
            System.out.println("标志位已设置为 true");
        });

        Thread readerThread = new Thread(() -> {
            while (!flag) {
                // 等待标志位变为 true
            }
            System.out.println("标志位已变为 true");
        });

        writerThread.start();
        readerThread.start();
    }
}

这个示例演示了如何使用 volatile 关键字来保证多个线程之间的可见性。

17. 示例代码使用 breakcontinue 关键字:

public class BreakContinueDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                System.out.println("遇到 3,跳过");
                continue;
            }
            if (i == 4) {
                System.out.println("遇到 4,终止循环");
                break;
            }
            System.out.println("Number: " + i);
        }
    }
}

这个示例演示了如何使用 breakcontinue 关键字来控制循环的执行流程。

18. 示例代码使用 assert 关键字:

public class AssertDemo {
    public static void main(String[] args) {
        int age = 15;

        // 使用 assert 断言条件是否为真
        assert age >= 18 : "年龄必须大于等于 18";

        System.out.println("年龄合法");
    }
}

这个示例演示了如何使用 assert 关键字来进行断言检查,用于调试和验证条件是否成立。

19. 示例代码使用 native 关键字:

public class NativeDemo {
    public static native void nativeMethod();

    public static void main(String[] args) {
        System.loadLibrary("NativeLibrary"); // 加载本地库
        nativeMethod(); // 调用本地方法
    }
}

这个示例演示了如何使用 native 关键字来声明并调用本地方法,通常与本地库一起使用。

16. 示例代码使用 goto 关键字:

// Java 不支持 goto 关键字,这里提供一个示例以展示 Java 中的标签和 break 用法
public class GotoDemo {
    public static void main(String[] args) {
        outerLoop:
        for (int i = 1; i <= 3; i++) {
            for (int j = 1; j <= 3; j++) {
                if (i == 2 && j == 2) {
                    break outerLoop; // 使用标签和 break 模拟 goto
                }
                System.out.println("i=" + i + ", j=" + j);
            }
        }
    }
}

在 Java 中,没有 goto 关键字,但可以使用标签和 break 语句模拟跳转到指定位置。

17. 示例代码使用 strictfp 关键字:

public class StrictfpDemo {
    public strictfp static void main(String[] args) {
        double result = divide(10.0, 3.0);
        System.out.println("Result: " + result);
    }

    public strictfp static double divide(double a, double b) {
        return a / b;
    }
}

strictfp 关键字用于声明浮点数表达式必须遵循 IEEE 754 标准,以确保在不同平台上的一致性。

18. 示例代码使用 this 关键字:

public class ThisKeywordDemo {
    private String name;

    public ThisKeywordDemo(String name) {
        this.name = name; // 使用 this 关键字区分成员变量和构造函数参数
    }

    public void printName() {
        System.out.println("Name: " + this.name); // 使用 this 关键字访问成员变量
    }

    public static void main(String[] args) {
        ThisKeywordDemo obj = new ThisKeywordDemo("Alice");
        obj.printName();
    }
}

this 关键字用于区分成员变量和局部变量,以及在构造函数中引用当前对象。

19. 示例代码使用 super 关键字:

class Animal {
    void makeSound() {
        System.out.println("动物发出声音");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("狗发出汪汪声");
    }

    void display() {
        super.makeSound(); // 使用 super 关键字调用父类方法
    }
}

public class SuperKeywordDemo {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.makeSound(); // 调用子类方法
        dog.display(); // 调用子类中使用 super 调用的父类方法
    }
}

super 关键字用于调用父类的方法或访问父类的成员。

20. 示例代码使用 instanceof 关键字:

public class InstanceOfDemo {
    public static void main(String[] args) {
        Object obj = "Hello, Java";

        if (obj instanceof String) {
            System.out.println("obj 是 String 类型");
        } else {
            System.out.println("obj 不是 String 类型");
        }
    }
}

instanceof 关键字用于测试一个对象是否是指定类型的实例。

在这里插入图片描述

二、Java 标识符

标识符是由程序员定义的名称,用于表示类、方法、变量等。命名标识符时需要遵循一些规则:

  • 由字母、数字、下划线(_)和美元符号($)组成。
  • 不能以数字开头。
  • 区分大小写。
  • 不能使用Java关键字或保留字作为标识符。

以下是一些有效的标识符示例:

int age;
String firstName;
double accountBalance;

三、命名规范

3.1 基本命名规范

为了使代码清晰易读,我们应该遵循以下基本命名规范:

  • 类名和接口名:每个单词首字母大写,采用驼峰命名法,例如:StudentRecord
  • 包名:小写字母,多个单词用点分隔,例如:com.example.myapp
  • 变量名和方法名:采用驼峰命名法,首字母小写,例如:studentAge
  • 常量名:全大写字母,用下划线分隔多个单词,例如:PI_VALUE

以下是符合基本命名规范的示例:

class StudentRecord {
    int studentAge;
    final double PI_VALUE = 3.14159;
}

3.2 高级命名规范

高级命名规范是为了提高代码可读性和维护性而制定的,根据开发经验指定的,建议遵守。

3.2.1 类名

  • 通常使用名词,具有清晰的含义,采用驼峰命名法。
  • 避免使用中文缩写或不清晰的命名。

3.2.2 方法名

  • 通常使用动词或动词短语,采用驼峰命名法,首字母小写。
  • 常见的命名约定包括get前缀用于返回数据,set前缀用于设置数据,is前缀用于布尔值的方法等。
    通常情况下,我们采用见名知意的名词,并使用驼峰命名法,首字母小写。

  • 获取数据的方法通常以 “get” 作为前缀,例如 “getUserList”、“getMyData”。
  • 设置数据的方法通常以对应的动词作为前缀,例如 “addUser”、“updateUser”。
  • 查询数据的方法通常以 “select” 或 “find” 作为前缀。
  • 删除数据的方法通常以 “delete” 作为前缀,例如 “deleteUser”。
  • 具备条件的方法通常使用 “by” 作为前缀进行命名。
  • 具备判断性质的方法通常以 “is” 作为前缀进行命名。
  • 具备测试性质的方法通常以 “test” 作为前缀进行命名。
  • 在命名方法时,尽量使用具体而清晰的词汇,避免使用缩写或过于简略的命名,以确保代码的可理解性。
  • 如果一个方法用于验证或检查某些条件,可以使用 “check” 作为前缀,例如 “checkPermission”。
  • 对于涉及时间的操作,可以使用 “calculate” 作为前缀,例如 “calculateAge”。
  • 如果一个方法执行复杂的操作,可以使用描述性的动词,例如 “processData” 或 “generateReport”。
  • 在命名时,避免使用保留字或关键字,以免引发潜在的问题。

3.2.3 变量名

  • 使用有意义的名词,采用驼峰命名法。
  • 避免使用中文缩写或下划线作为连接符。

3.2.4 常量名

  • 使用全大写字母,用下划线分隔多个单词。
  • 常量名应具有清晰的含义。

3.2.5 包命名

  • 包名应使用小写字母,多层包之间用点分隔。
  • 通常采用域名倒写的方式进行命名,例如:com.example.myapp

3.2.6 泛型命名

泛型类型通常使用单个大写字母表示,例如:

  • T:通常表示类型。
  • K:通常表示键。
  • V:通常表示值,有时候会使用 US 表示通用类型。
  • ?:通常表示不确定的 Java 类型。
  • N:通常表示 Number,常用于表示数值类型。
  • T:通常表示 Type(类型),通常指代类。
  • K:通常表示 Key(键),常用于 Map 中。
  • V:通常表示 Value(值),常用于 Map 中,通常与 K 成对出现。
  • X:通常表示异常的类型。。

结论

遵守Java的关键字、标识符和命名规范是编写清晰、可维护代码的关键。通过正确使用这些概念,您可以提高代码的可读性和可维护性,从而更轻松地开发和维护Java应用程序。希望本文提供的信息对您有所帮助,让您更好地理解和应用Java编程中的这些基本概念。

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1001408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年第一界HiPChips解读

High Performance Chiplet and Interconnect Architectures&#xff0c;2022年6月19日&#xff0c;第一届会议&#xff08;连同第49界ISCA会议&#xff09;于美国纽约举行。 第一届会议议程及slice&#xff1a;(HiPChips Chiplet Workshop ISCA Conference)[https://www.open…

使用TCP方式拉取Canal数据

1 Canal对接Kafka联调 1.1 配置修改 canal.properties 修改 zk&#xff1a; canal.zkServers 10.51.50.219:2181instance.properties 开启配置项&#xff1a; canal.mq.dynamicTopic 是 Canal 的 MQ 动态 Topic 配置项&#xff1a; test_javaedge_01 是kafka 的 topicte…

混合云代表,青云科技QingCloud从此走向小而美之路

你有你的活法&#xff0c; 我有我的活法 只要活出自己&#xff0c; 活出个样子都是美事 【全球元观察 &#xff5c; 热点关注】 刚注意到青云科技QingCloud的最新发布2023年半年度报告&#xff0c;2023上半年同比减亏约7000万元&#xff0c;研发人员减少83人。从这两个数字…

贝wa儿歌(安卓)

本次贝wa儿歌为大家提供的是特殊版本的&#xff0c;软件需要注册登录才能才能使用VIP权限&#xff0c;安装好后&#xff0c;打开如果提示更新请点击取消&#xff0c;一定不要更新哦。 贝瓦儿歌不仅只是儿歌&#xff0c;其实有很多分类的&#xff0c;包括有国学&#xff0c;动画…

小米6/6X/米8/米9手机刷入鸿蒙HarmonyOS.4.0系统-刷机包下载-遥遥领先

小米手机除了解锁root权限&#xff0c;刷GSI和第三方ROM也是米粉的一大爱好&#xff0c;这不&#xff0c;在华为发布了HarmonyOS.4.0系统后不久&#xff0c;我们小米用户也成功将自己的手机干山了HarmonyOS.4.0系统。虽然干上去HarmonyOS.4.0系统目前BUG非常多&#xff0c;根本…

系统架构:软件工程速成

文章目录 参考第一章 概述软件工程概述软件过程 参考 软件工程速成(期末考研复试软考)均适用. 支持4K 第一章 概述 软件工程概述 定义&#xff1a;采用工程的概念、原理、技术和方法来开发与维护软件。 三要素&#xff1a; 方法&#xff1a;完成软件开发各项任务的技术方…

人工智能AI 全栈体系(二)

第一章 神经网络是如何实现的 上节描述的网络结构比较特殊&#xff0c;不具有一般性。比如前面我们讲过的权重都是1或者-1&#xff0c;这是很特殊的情况&#xff0c;实际上权重可以是任何数值&#xff0c;可以是正的&#xff0c;也可以是负的&#xff0c;也可以是带小数的。权…

网络安全岗位面试经验总结(附面试题)

思路流程: 信息收集 服务器的相关信息&#xff08;真实ip&#xff0c;系统类型&#xff0c;版本&#xff0c;开放端口&#xff0c;WAF等&#xff09; 网站指纹识别&#xff08;包括&#xff0c;cms&#xff0c;cdn&#xff0c;证书等&#xff09;&#xff0c;dns记录 whois信…

Linux工具——gcc

目录 一&#xff0c;gcc简介 二&#xff0c;C语言源文件的编译过程 1.预处理 2.编译 3.汇编 4.链接 5.动静态库 一&#xff0c;gcc简介 相信有不少的小白和我一样在学习Linux之前只听说过visual studio。其实这个gcc这个编译器实现的功能便是和visual studio一样的功能&…

纷享销客入选中国信通院《高质量数字化转型产品及服务全景图》

近期&#xff0c;在中国信息通信研究院主办的“2023数字生态发展大会”暨中国信通院“铸基计划”年中上&#xff0c;重磅发布了《高质量数字化转型产品及服务全景图&#xff08;2023&#xff09;》&#xff0c;纷享销客凭借先进的技术能力和十余年客户业务场景应用理解&#xf…

Linux fcntl函数

/*#include <unistd.h>#include <fcntl.h>int fcntl(int fd, int cmd, ... ); 参数&#xff1a;- fd&#xff1a;需要操作的文件描述符- cmd&#xff1a;表示对文件描述符如何操作- F_DUPFD:复制文件描述符&#xff0c;复制的是参数fd&#xff0c;得到一个新的文件…

LeetCode:2. 两数相加

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

Java学习笔记------抽象类和抽象方法

抽象方法 抽象方法&#xff1a;将共性的行为&#xff08;方法&#xff09;抽取到父类之后&#xff0c;由于每一个子类执行的内容是不一样的&#xff0c;所以&#xff0c;在父类中不能确定具体的方法体&#xff0c;该方法就可以定义为抽象方法抽象类&#xff1a;如果一个类中存…

d3.js 的使用

这篇文章相当于之前 svg 的补充。 因为 svg 代码肯定不是人为去专门写的。 在这里推荐制作 svg 的第三方库 - D3.js 用于定制数据可视化的JavaScript库 - D3 官网地址&#xff1a; D3 by Observable | The JavaScript library for bespoke data visualization 简单使用 画…

嵌入式基础知识-信息安全与加密

本篇来介绍计算机领域的信息安全以及加密相关基础知识&#xff0c;这些在嵌入式软件开发中也同样会用到。 1 信息安全 1.1 信息安全的基本要素 保密性&#xff1a;确保信息不被泄露给未授权的实体。包括最小授权原则、防暴露、信息加密、物理加密。完整性&#xff1a;保证数…

nginx-日志处理

access.log #正常请求的日志 error.log #访问错误日志&#xff0c;404&#xff0c;500等请求在这里 buffer&#xff1a;设置缓冲区&#xff0c;访问日志不会直接打到磁盘上&#xff0c;而是先积攒到缓冲区&#xff0c;缓冲区满了后在统一往…

H5打包APP和IOS实现免签,超级签,mam签,h5分发

博主技术笔记 博主开源微服架构前后端分离技术博客项目源码地址&#xff0c;欢迎各位star 微信公众号&#xff0c;每天给大家提供技术干货 http://yun.viphssp.top/root 打包出来的模板&#xff1a;https://yun.viphssp.top/mq/3/html/index.html

解决a标签内容中img标签和p标签垂直方向间隔太大的问题

现象如下&#xff1a; 对应的html结构&#xff1a; 解决办法&#xff1a;给a标签设置&#xff1a;display: inline-block和line-height属性。 然后问题解决&#xff1a; 具体原理如下&#xff08;由chatgpt回答&#xff09;&#xff1a; display: inline-block 可以减少垂直方…

java可以跨平台的原因是什么?

因为不同平台可以安装对应的JVM&#xff08;Java Virtual Machine&#xff09;&#xff0c;它是C/ C写的&#xff0c;JVM可以屏蔽所有和平台相关的信息&#xff0c;并帮助把Java文件经过编译后生成的和平台无关的class类文件&#xff08;也就是字节码&#xff09;从硬盘读取到内…

Java面试题(持续更新中)

一、Java基础集合多线程JVM 1.Java基础 1.1面向对象和面向过程的区别 面向过程&#xff1a;面向过程的性能比面向对象高。因为类调用时需要实例化&#xff0c;消耗比较大&#xff0c;比较消耗资源&#xff0c;所以当性能是最重要的考量因素的时候&#xff0c;比如单片机、Li…