笔记: javaSE day17天笔记

news2024/11/24 4:19:27

第十七天课堂笔记

Java常用类

数学类★★★

math
  • java.lang.Math , 数学类

  • round(x) : 四舍五入 , 把 x加0.5 后向下取整

  • ceil(x) : 返回大于等于x的最小整数 , 向上取整

  • floor(x) : 返回小于等于x的最大整数 , 向下取整

  • sqrt(x) : 平方根

  • cbrt(x): 立方根

  • pow(a , b) : a的b次方

  • random: 返回[0 , 1) 返回内的随机数

  • max(a , b) , min(a , b) : 返回两个数中最大/最小值

  • 代码如下:

    public static void main(String[] args) {
            // random生成[0 , 1) 的随机数
            double random = Math.random();
            System.out.println("random = " + random);
            // 生成 [ min , max) 中的随机数
            int max = 10, min = 5;
            System.out.println("Math.random() * (max - min) + min = " + (Math.random() * (max - min) + min));
    
            // max(a,b) 返回较大值
            System.out.println("Math.max(123453, 543261) = " + Math.max(123453, 543261));
    
            // min(a , b) 返回较小数
            System.out.println("Math.min(123, 523) = " + Math.min(123, 523));
    
            // round(x) 四舍五入, x加上0.5后向下取整
            System.out.println("Math.round(3.5) = " + Math.round(3.5));
            System.out.println("Math.round(3.2) = " + Math.round(3.2));
            System.out.println("Math.round(-3.5) = " + Math.round(-3.5));  // -3
            System.out.println("Math.round(-3.9) = " + Math.round(-3.9));  // -4
    
            // ceil(x) 向上取整 : 返回大于等于x的最小整数
            System.out.println("Math.ceil(4.13) = " + Math.ceil(4.13));  // 5.0
            System.out.println("Math.ceil(-3.1) = " + Math.ceil(-3.1));  // -3.0
    
            // floor(x) 向下取整 : 返回小于等于x的最大整数
            System.out.println("Math.floor(3.6) = " + Math.floor(3.6));  // 3.0
            System.out.println("Math.floor(-3.6) = " + Math.floor(-3.6)); // -4.0
    
            // sqrt(a) 平方根
            System.out.println("Math.sqrt(100) = " + Math.sqrt(100)); // 10
            // cbrt(b) 立方根
            System.out.println("Math.cbrt(1000) = " + Math.cbrt(1000)); // 10
            // 次方pow
            System.out.println("Math.pow(2, 10) = " + Math.pow(2, 10)); // 1024
    
        }
    
random
  • java.util.Random : 随机数类

  • Random rnd = new Random() 创建随机数对象

  • rmd.nextInt() : 随机整数

  • rmd.nextDouble(): 随机小数

  • rmd.nextInt(limit) : [0 , limit) 的随机数 , limit > 0

  • jdk17新增方法

    • nextInt(a , b) : [a , b)的随机数
    • nextDouble(a . b): [a , b)随机小数
  • 代码如下:

    public static void main(String[] args) {
            // 创建随机数对象
            Random random = new Random();
            // 生成随机整数 nextInt()
            System.out.println("random.nextInt() = " + random.nextInt());
            // 生成随机小数 nextDouble()
            System.out.println("random.nextDouble() = " + random.nextDouble());
    
            // 生成[0 , bound) 的整数, 且 limit > 0
            System.out.println("random.nextInt(20) = " + random.nextInt(20));
    
            // 生成[0 , bound) 随机小数
            System.out.println("random.nextDouble(30) = " + random.nextDouble(30));
    
            // jdk17新增方法 , 生成[origin , bound)之间的随机数
            System.out.println("random.nextInt(10 , 20) = " + random.nextInt(10, 20));
        }
    
decimalformat
  • java.text : 把小数 转换 为指定格式字符串

  • 常见格式 :

    • 0 : 数字 , 不够四位自动补零 , 够了四舍五入

    • #: 数字

    • , : 千位

    • . : 小数点

    image-20240401112921748

  • 构造: 调用构造方法创建 , new DecimalFormat(“###,###.0000”);

  • 方法

    • format(double) : 把 小数 根据定义的格式 转换为 字符串 : 小数 -> 格式化字符串
    • applyPattern(“格式”) : 重新设置 模式串
  • 代码如下:

    public static void main(String[] args) {
            // 调用,根据构造方法创建格式
            DecimalFormat decimalFormat = new DecimalFormat("###,###.0000");
    
            // 进行格式转换 , 0不够四位自动补零
            String format = decimalFormat.format(124322.445);
            System.out.println("format = " + format);
    
            // 从新设置模式串applyPattern
            decimalFormat.applyPattern("000,000.###");
            System.out.println("decimalFormat.format(1234.56) = " + decimalFormat.format(1234.56));
    
            System.out.println("decimalFormat.format(45678912.456789) = " + decimalFormat.format(45678912.456789));
        }
    
biginteger/bigdecimal
  • 大的整数类/大的小数类

  • 应用于 精度要求比较高的场景

  • 由于 int , long 整数取值受限 , 小数采用近似值保存不准确 => 采用有string参数的构造方法创建对象

  • 方法

    • add() 加

    • subtract() 减

    • multiply() 乘

    • divide() 除

      • 在大的小数的类中, 两个大的小数进行除操作, 当除不断的时候 , 会存在 java . lang.arithmeticException 算术异常
      • 故需要调用的是 divisor(除数 , scale保留小数的位数 , roundingMode尾数的处理方式) 这个重载的方法
    • remainder() 取余

    • 代码如下:

          public static void main(String[] args) {
              // 小数采用的近似值保存,不准确
              System.out.println(2 - 1.1);
      
              BigInteger b1 = new BigInteger("3124325452345543545265622524145415");
              BigInteger b2 = new BigInteger("54235346522451515154454");
      
              // 加add
              System.out.println("b1.add(b2) = " + b1.add(b2));
              // 减subtract
              System.out.println("b1.subtract(b2) = " + b1.subtract(b2));
              // 乘multiply
              System.out.println("b1.multiply(b2) = " + b1.multiply(b2));
              // 除divide
              System.out.println("b1.divide(b2) = " + b1.divide(b2));
              // 取余 remainder
              System.out.println("b1.remainder(b2) = " + b1.remainder(b2));
      
              // 大的小数
              BigDecimal d1 = new BigDecimal("1243676453213432545332143222.457644134532");
              BigDecimal d2 = new BigDecimal("1243676453414141343222.45764532");
              // 加add
              System.out.println("d1.add(d2) = " + d1.add(d2));
              System.out.println("d1.subtract(d2) = " + d1.subtract(d2));
              System.out.println("d1.multiply(d2) = " + d1.multiply(d2));
      //        System.out.println("d1.divide(d2) = " + d1.divide(d2)); //.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
              System.out.println("d1.divide(d2, 10, RoundingMode.CEILING) = " + d1.divide(d2, 10, RoundingMode.CEILING));
              System.out.println("d1.remainder(d2) = " + d1.remainder(d2));
          }
      

枚举:

  • 一组 常量的 组合 , 引用数据类型

  • 使用情况: 当某个类型的 变量取值范围 只有几个 离散值时

  • 使用 enum关键字 定义枚举类型

  • 赋值 : 只能赋值枚举常量 , 枚举名.常量;

  • 定义枚举类型后, 系统自动添加两个静态方法

    • values() : 获得 该枚举类中 所有的枚举常量
    • valueOf() : 将字符串 转换为 枚举常量
  • 代码如下:

    public static void main(String[] args) {
            Season spring = Season.SPRING;
            System.out.println("spring = " + spring);
    
            // 获取所有的枚举常量
            Season[] values = Season.values();
            for (Season value : values) {
                System.out.println(value);
            }
            // 将字符串类型转换成枚举常量
            String str = "WINTER";
            spring = Season.valueOf(str);
            spring = Season.SUMMER;
            System.out.println(spring);
        }
    
        // 定义一个枚举类型 , 定义季节枚举类型的常量值
        enum Season {
            SPRING, SUMMER, AUTUMN, WINTER;
        }
    
  • 数据类型的作用

    • 决定数据类型的存储方式
    • 决定数据类型的取值范围
    • 决定数据允许的操作

日期类★★★

Date
  • Java.util.Date 日期类 , 是线程不安全

  • Date(long millis) : 根据毫秒值获取从1970-1-1年开始对应的时间

    • CST: 中国标准时间
    • millis 为 负值时 : 获取的是从1970-1-1年开始 往前 对应的时间
  • getTime() : 获得date对象 从1970-1-1年开始 对应的毫秒数

  • 时间戳:

    • System.currentTimeMillis()
    • new Date().getTime()
  • 转换

    • 时间对象 转换成 指定格式 字符串 : SimpleDateFormat类
      • 先通过SimpleDateFormat(String pattern) 创建个对象并指定日期格式串
        • y年, M月 , d日 , H时 , m分 , s秒 , S毫秒
      • 调用 该对象 的 format( date )方法 , 将date对象时间 返回成一个字符串
    • 字符串 解析成 时间对象
      • 首先也是通过SimpleDateFormat(String pattern) 创建对象 并指定日期格式串
      • 调用该对象的parse( string ) 方法 , 将字符串 安装格式 解析成一个date对象
      • parse方法会存在parseException 解析异常 , 因为string的格式 必须跟指定的日期格式串的格式保持一致
  • 代码如下:

    public static void main(String[] args) throws ParseException {
            // 创建date对象,返回当前时间
            Date date = new Date();
            System.out.println("date = " + date);
    
            // 通过date(long millis)构造方法 构造指定从1970年经过millis毫秒数的时间
            Date date1 = new Date(123445324543L);
            System.out.println("date1 = " + date1);
    
            // 负毫秒值情况 , 从1970年1月1向前查询毫秒值对应的时间
            Date date2 = new Date(-14353564543L);
            System.out.println("date2 = " + date2);
    
            // 获取时间对应的毫秒数 : getTime()
            System.out.println("date.getTime() = " + date.getTime());
            System.out.println("date1.getTime() = " + date1.getTime());
            System.out.println("date2.getTime() = " + date2.getTime());
    
            // 时间戳, 获取当前时间距离1970-1-1 00:00:00 经过的毫秒数
            long millis = System.currentTimeMillis();
            System.out.println("millis = " + millis);
            System.out.println("new Date().getTime() = " + new Date().getTime());
    
            // 格式化时间格式, 返回成指定的字符串 , y年, M月,d日, H小时,m分钟,s秒,S毫秒
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            // format() , 将时间转换成字符串打印 =  date -> string
            String formatDate = simpleDateFormat.format(date);
            System.out.println("formatDate = " + formatDate);
    
            // string -> date , 字符串解析date对象
            String strDate = "2024-04-01 11:19:20";
            // 使用parse(字符串)解析
            // Unhandled exception: java.text.ParseException 抛出处理
            // 当给定字符串格式 不符合定义格式java.text.ParseException: Unparseable date: "2024-04-01 11:19:20"
            Date date3Parse = simpleDateFormat.parse(strDate);
            System.out.println("date3Parse = " + date3Parse);
    
            // 当字符串没有该时间情况 , 会自动将时间往后顺延为合理时间
            String strDate1 = "2086-15-16 10:28:56";
            Date parse = simpleDateFormat.parse(strDate1);
            System.out.println("parse = " + parse);
        }
    
Calendar
  • Java.util.calendar日历类 , 是一个抽象类 , 故无法通过构造方法创建对象

  • 创建对象: 通过**调用静态方法getInstance()**方法实现 -> Calendar.getInstance();

  • get(int field ): 返回指定字段值

    • field可以为 : 1-> 年 , 2 -> 月 . 5 -> 日 , 11 -> 小时 , 12 -> 分钟 . 13 -> 秒

    • 同时, 也可以为Calendar提供的 静态常量获取如

      public static final int YEAR = 1;
      public static final int MONTH = 2;
      public static final int DATE = 5;
      public static final int HOUR = 10;
      public static final int HOUR_OF_DAY = 11;
      public static final int MINUTE = 12;
      public static final int SECOND = 13;
      
  • 代码如下:

        public static void main(String[] args) {
            // Calendar是一个抽象类, 'Calendar' is abstract; cannot be instantiated
            //需要通过调用它的静态方法getInstance() 创建它的对象 ,->createCalendar(defaultTimeZone(aLocale), aLocale);
            Calendar calendar = Calendar.getInstance();
            // get方法 , 返回指定字段值
            System.out.println("calendar.get(1) = " + calendar.get(1)); // 1 -> 年
            System.out.println("calendar.get(2) = " + calendar.get(2)); // 2 -> 月 // 月字段是从0开始的
            System.out.println("calendar.get(5) = " + calendar.get(5)); // 日
            System.out.println("calendar.get(11) = " + calendar.get(11));// 小时
            System.out.println("calendar.get(12) = " + calendar.get(12));//分钟
            System.out.println("calendar.get(13) = " + calendar.get(13));//秒
    
            System.out.println("calendar.get(1) = " + calendar.get(Calendar.YEAR)); // 1 -> 年
            System.out.println("calendar.get(2) = " + calendar.get(Calendar.MONTH)); // 2 -> 月 // 月字段是从0开始的
            System.out.println("calendar.get(5) = " + calendar.get(Calendar.DATE)); // 日
            System.out.println("calendar.get(10) = " + calendar.get(Calendar.HOUR));   // 小时 -> 12
            System.out.println("calendar.get(11) = " + calendar.get(Calendar.HOUR_OF_DAY));// 小时->24
            System.out.println("calendar.get(12) = " + calendar.get(Calendar.MINUTE));//分钟
            System.out.println("calendar.get(13) = " + calendar.get(Calendar.SECOND));//秒
        }
    
LocalDateTime
  • jdk8 新增的 线程安全 的 日期类

  • 创建LocalDateTime对象

    • 由于LocalDateTime类的构造方法是 private 私有的, 不能直接 new 对象 ,
    • 调用该类的静态方法 now() 创建对象
    • 也可以调用该类的静态方法 of(year , month , day , hour , minute , second) 创建对象
  • 返回指定字段 , 可以通过该对象内设的getXXX()方法去获取指定的字段

    now.getYear();
    public int getYear() {
            return date.getYear();
        }
    now.getMonthValue();
    public int getMonthValue() {
            return date.getMonthValue();
        }
    now.getDayOfMonth();
    public int getDayOfMonth() {
            return date.getDayOfMonth();
        }
    now.getHour();
        public int getHour() {
            return time.getHour();
        }
    now.getMinute();
        public int getMinute() {
            return time.getMinute();
        }
    now.getSecond();
        public int getSecond() {
            return time.getSecond();
        }
    
  • 转换 :

    • 定义格式 dateTimeFormatter , 该类不是public 修饰的, 故需要调用它的静态方法 ofPattern来设置
    • 时间 -> string : 设置格式 format( datetimeformatter )返回一个字符串
    • 字符串 -> 解析成时间 : 调用prase(s , datetimeformatter ) 方法解析 , 返回一个时间对象
  • 代码如下:

        public static void main(String[] args) {
            // 创建 localdatetime 对象, localdatetime类的构造方法是private,不能直接new对象,需要调用它的静态方法 now()创建对象
            LocalDateTime now = LocalDateTime.now();
            System.out.println("now = " + now);  //now = 2024-04-01T12:40:33.341786800
    
            // 或者调用静态方法 of(year , month , day , hour , minute , second) 创建对象
            LocalDateTime of = LocalDateTime.of(2021, 6, 7, 8, 30);
            System.out.println("of = " + of);  //of = 2021-06-07T08:30
    
            // 返回指定字段
            System.out.println("now.getYear() = " + now.getYear());
            System.out.println("now.getMonthValue() = " + now.getMonthValue());
            System.out.println("now.getDayOfMonth() = " + now.getDayOfMonth());
            System.out.println("now.getHour() = " + now.getHour());
            System.out.println("now.getMinute() = " + now.getMinute());
            System.out.println("now.getSecond() = " + now.getSecond());
    
            // 定义格式 : datetimeformatter , DateTimeFormatter不是 public 修饰的, 故需要调用它的静态方法 ofPattern来设置
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
            // 时间 -> string
            // 设置格式 format( datetimeformatter ) , 返回成为一个字符串
            String s = now.format(dtf);
            System.out.println("s = " + s);
    
            // 字符串 解析成 localdatetime对象
            String text = "2086年04月01日 11:52:15";
            // 调用parse(s ,datetimeformatter )方法解析 , 返回一个时间对象
            LocalDateTime parse = LocalDateTime.parse(text, dtf);
            System.out.println("parse = " + parse);
        }
    

包装类★★★

  • 目的 : 为了编程方便 , Java为每个基本类型提供了一个包装类

  • Java是面向对象的程序设计语言 给每一个包装类提供了一个基本类型

  • 创建包装类对象

    • 其实就是把数 保存到对象的 value 属性
    • 根据对应基本类型数据创建包装类对象
    • 除了character字符类型外, 其他包装类都可以根据string字符串创建
    • 包装类的构造方法从 jdk9开始标记为 @Deprecated已弃用 -> 故建议通过静态方法创建包装类对象 valueOf( )方法
  • 包装类的常用方法

    • xxxValue()方法 => 拆箱操作

      • 使用包装类
      • 包装类底层 都有 一个 value属性 存储 包装类对象 对应的 基本数据类型
      • 通过调用 包装类对象的 xxxValue方法 把 包装类对象的value属性值 -> 基本数据类型 来实现自动拆箱过程
    • static int compare(double d1 , double d2) 比较两个基本类型的大小

      • 前面大 : return 正数
      • 前面小 : return 负数
      • 相等 : return 0
    • int compareTo(Double anotherDouble) : 比较两个包装类对象的大小

      • 所有包装类都实现了 Comparable接口 ,
      • 比较两个包装类对象的大小 ==> 其实比较的是两个包装类对象的value属性值的大小 (隐含了自动拆箱的过程)
    • static double parseDouble(string s) ; 把字符串 解析为 基本数据类型

      • character 字符类型不能 使用该方法 将字符串解析
      • 注意, 字符串 要符合相应的基本类型格式 , 否则会报 Java.lang.numberformatException异常
      • parseBoolean(string s) : 要么为true, 其他非true的都为false
        • 底层源码为 “true”.equalsIgnoreCase(s);
    • 将基本数据类型 转换为 字符串 : 通过字符串类中的 String.valueOf(value)方法实现

    • 装箱 : 调用包装类中静态的valueOf()方法实现的

      • static Double valueOf(double d) : 根据基本类型创建
      • static Double valueOf(String s) : 根据字符串给你创建 , 不包括Character
    • 不同包装类的特有方法

      • Double 中 : static long doubleToLongBits(double value) : 可以把double小数的二进制转换为long整数
      • Integer类中:
        • static string toBinaryString(int i): 把十进制整数 转换为 二进制
        • static string toHexString(int i) : 把十进制整数转换为十六进制
    • 小数是否相等的比较方式

      • 1>. x - y < 0.00000001 就认为x与y相等
      • 2>. 比较小数的 二进制位 是否完全一样 , 调用Double.doubleToLongBitys(x) 方法返回值 与Double.doubleToLongBitys(y) 返回值 比较是否相等
      • 3>. Double.compare(x , y) 看返回值是否为0
    • 把小数转换为二进制分析流程

      image-20240401161413711

  • 自动装箱和拆箱

    • Java可以自动装箱 \ 自动拆箱
    • 装箱 : 基本数据类型 -> 包装类对象 => valueOf()
    • 拆箱: 包装类对象 -> 基本数据类型 => xxxValue()
    • -128 ~ 127范围内的整数自动装箱保存在 缓存 当中, 采用享元模式

类与类之间的关系★★★

  • 两个类中间产生了 使用
  • 关系有 : 继承 , 实现 , 关联 , 依赖
  • 使用类图来描述 -> UML图 为 统一建模语言
    • 在分析,设计阶段, 使用UML图 以可视化的形式 描述类或者对象的关系\状态
    • 常用的UML图: 用例图 , 类图 , 时序图 , 状态图
    • 常用的软件 : Star UML , Rational Rose

ToLongBitys(y) 返回值 比较是否相等
* 3>. Double.compare(x , y) 看返回值是否为0

  • 把小数转换为二进制分析流程

    [外链图片转存中…(img-JaRbPOfV-1712033162760)]

  • 自动装箱和拆箱

    • Java可以自动装箱 \ 自动拆箱
    • 装箱 : 基本数据类型 -> 包装类对象 => valueOf()
    • 拆箱: 包装类对象 -> 基本数据类型 => xxxValue()
    • -128 ~ 127范围内的整数自动装箱保存在 缓存 当中, 采用享元模式

类与类之间的关系★★★

  • 两个类中间产生了 使用
  • 关系有 : 继承 , 实现 , 关联 , 依赖
  • 使用类图来描述 -> UML图 为 统一建模语言
    • 在分析,设计阶段, 使用UML图 以可视化的形式 描述类或者对象的关系\状态
    • 常用的UML图: 用例图 , 类图 , 时序图 , 状态图
    • 常用的软件 : Star UML , Rational Rose

0401 类与类之间的关系

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

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

相关文章

App应用的服务器如何增加高并发能力

大家好&#xff01;我是你们的好朋友咕噜铁蛋&#xff01;近年来&#xff0c;随着移动互联网的蓬勃发展&#xff0c;各类App应用如雨后春笋般涌现&#xff0c;用户量呈现爆发式增长。然而&#xff0c;随之而来的高并发访问问题也开始频繁出现&#xff0c;给服务器带来了极大的挑…

ecology9.0通过自定义按钮给明细表某字段赋值

功能&#xff1a;把主表字段赋值给明细表字段 核心代码&#xff1a; <script>jQuery(document).ready(function(){$(#setcgy).click(function(){var cgy_txt WfForm.getBrowserShowName("field1207");debuggervar cgy WfForm.getFieldValue("field1207…

java(5)之数组

1、什么是数组 数组就是用来储存相同数据类型的数据集合&#xff0c;可使用共同的名称来引用数组中的数据&#xff0c;数组的类型有很多种&#xff0c;但是指定了数组的类型就只能存储这一类数据。 2、数组的特点 1、既能存储原始数据也能催出对象类型 2、长度一旦确定就不…

MySQL进阶-----SQL提示与覆盖索引

目录 前言 一、SQL提示 1.数据准备 2. SQL的自我选择 3.SQL提示 二、覆盖索引 前言 MySQL进阶篇的索引部分基本上要结束了&#xff0c;这里就剩下SQL提示、覆盖索引、前缀索引以及单例联合索引的内容。那本期的话我们就先讲解SQL提示和覆盖索引先&#xff0c;剩下的内容就…

ssm 设备采购管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm 设备采购管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

使用 Docker Compose 部署邮件服务器

使用 Docker Compose 部署邮件服务器 很多时候为了方便&#xff0c; 我们都直接使用第三方邮箱进行收发邮件。 但第三方邮箱有些要求定期修改密码&#xff0c;有些限制发邮箱的次数&#xff0c; 对于一些个人和企业来说&#xff0c; 有自己的域名和服务器为什么不自己搭建一个邮…

PEFT-LISA

LISA是LoRA的简化版&#xff0c;但其抓住了LoRA微调的核心&#xff0c;即LoRA侧重更新LLM的底层embedding和顶层head。 根据上述现象&#xff0c;LISA提出两点改进&#xff1a; 始终更新LLM的底层embedding和顶层head随机更新中间层的hidden state 实验结果 显存占用 毕竟模型…

ZKP价值链路的垂直整合

1. ZKP proof生命周期 从ZKP&#xff08;zero-knowledge proof&#xff09;生命周期&#xff0c;先看围绕ZKP的价值链路形成&#xff1a; 1&#xff09;User intent用户意图&#xff1a;以某用户意图为起点&#xff0c;如想要在某zk-rollup上swap某token、证明其身份、执行某…

HarmonyOS 和 OpenHarmony

HarmonyOS 和 OpenHarmony 支持的 shell 命令不同&#xff0c;因此有时候需要做一做区分&#xff0c;目前有些文档上没有标注&#xff0c;因此可能产生歧义。 HarmonyOS 支持 getprop&#xff1a; getprop hw_sc.build.os.apiversion # 查看API版本OpenHarmony 上支持 param…

华为ensp中ospf多区域管理 原理及配置命令(详解)

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; ————前言———— OSPF 多区域的主要作用是缩小链路状态数据库和路由表的规模&#xff0c;减少路由更新的频率&#xff0c;提高网络的可扩展性&#xff0c;实现路由过滤和路由汇总&#xff0…

Java多线程实战-从零手搓一个简易线程池(三)线程工厂,核心线程与非核心线程逻辑实现

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

使用ARCore深度API实现点云采集

一、深度API 本小节内容摘自ARCore官方文档。 ARCore 深度API Depth API 可助力实现对象遮挡、提升沉浸感和新颖的互动体验&#xff0c;从而增强 AR 体验的真实感。 在下图中&#xff0c;右侧画面是采用深度API进行遮挡后的效果&#xff0c;与左侧图相比更加真实。 深度值 给…

【热门话题】WebKit架构简介

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 WebKit架构简介一、引言二、WebKit概览1. 起源与发展2. 模块化设计 三、WebCore…

补充知识

补充知识1 内存的本质是对数据的临时存储 内存与磁盘进行交互时&#xff0c; 最小单位是4kb叫做页框(内存)和页帧(磁盘) 也就是&#xff0c; 如果我们要将磁盘的内容加载到内存中&#xff0c; 可是文件大小只有1kb&#xff0c; 我们也要拿出4kb来存他&#xff0c; 多余的就直…

element-ui card 组件源码分享

今日简单分享 card 组件源码&#xff0c;主要从以下两个方面&#xff1a; 一、card 组件页面结构 二、card 组件属性 2.1 header 属性&#xff0c;设置 header&#xff0c;也可以通过 slot#header 传入 DOM&#xff0c;类型 string&#xff0c;无默认值。 组件使用部分&#…

Redis.配置文件

基础篇Redis 6.1.2 .配置文件 spring:redis:host: 192.168.150.101port: 6379password: 123321lettuce:pool:max-active: 8 #最大连接max-idle: 8 #最大空闲连接min-idle: 0 #最小空闲连接max-wait: 100ms #连接等待时间6.1.3.测试代码 SpringBootTest class RedisDemo…

Android 360度全景图功能

方法一&#xff1a;OpenGL ES 1.在build.gradle文件中添加依赖 allprojects {repositories {maven { url https://jitpack.io }} } 高版本AS中settings.gradle.kts&#xff1a; dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_RE…

增强Java技能:使用OkHttp下载www.dianping.com信息

在这篇技术文章中&#xff0c;我们将探讨如何使用Java和OkHttp库来下载并解析www.dianping.com上的商家信息。我们的目标是获取商家名称、价格、评分和评论&#xff0c;并将这些数据存储到CSV文件中。此外&#xff0c;我们将使用爬虫代理来绕过任何潜在的IP限制&#xff0c;并实…

构建第一个JS应用(FA模型)

创建JS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发&#xff08;本文以应用开发为例&#xff0c;Atomic Service对…

Mybatis——一对多关联映射

一对多关联映射 一对多关联映射有两种方式&#xff0c;都用到了collection元素 以购物网站中用户和订单之间的一对多关系为例 collection集合的嵌套结果映射 创建两个实体类和映射接口 package org.example.demo;import lombok.Data;import java.util.List;Data public cla…