笔记: javaSE day17天笔记

第十七天课堂笔记

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));  // -3System.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.0System.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.0System.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// 次方powSystem.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 > 0System.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);// 从新设置模式串applyPatterndecimalFormat.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");// 加addSystem.out.println("b1.add(b2) = " + b1.add(b2));// 减subtractSystem.out.println("b1.subtract(b2) = " + b1.subtract(b2));// 乘multiplySystem.out.println("b1.multiply(b2) = " + b1.multiply(b2));// 除divideSystem.out.println("b1.divide(b2) = " + b1.divide(b2));// 取余 remainderSystem.out.println("b1.remainder(b2) = " + b1.remainder(b2));// 大的小数BigDecimal d1 = new BigDecimal("1243676453213432545332143222.457644134532");BigDecimal d2 = new BigDecimal("1243676453414141343222.45764532");// 加addSystem.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 -> stringString 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));   // 小时 -> 12System.out.println("calendar.get(11) = " + calendar.get(Calendar.HOUR_OF_DAY));// 小时->24System.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.mzph.cn/news/793273.shtml

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

相关文章

LangChain Demo | Agent X ReAct X wikipedia 询问《三体》的主要内容

背景 LangChain学习中&#xff0c;尝试改了一下哈里森和吴恩达课程当中的问题&#xff0c;看看gpt-3.5-turbo在集成了ReAct和wikipedia后&#xff0c;如何回答《三体》的主要内容是什么这个问题&#xff0c;当然&#xff0c;主要是为了回答这问题时LangChain内部发生了什么。所…

基于大型语言模型的智能体(Agent)研究综述--人大

内容概述 论文地址&#xff1a;https://arxiv.org/pdf/2308.11432.pdf 这篇综述内容有35页&#xff0c;内容很多&#xff0c;俗话说一图胜千言&#xff0c;作者提供了5张精美的图片和3个表格&#xff0c;把这些搞明白后对这篇综述也就理解差不多了。文章的总体结构如下由6部分…

基于GaN的半导体光学放大器SOA

摘要 基于GaN的材料可覆盖很宽的光谱范围&#xff0c;以紫外、紫、蓝、绿和红波发射的激光二极管已经商业化。基于GaN的半导体光学放大器&#xff08;SOA&#xff09;具有提高激光二极管输出功率的能力&#xff0c;因此SOA将有很多潜在应用。未来需要利用短波、超快脉冲特性的…

常见的四种限流算法及基础实现

常见的四种限流算法及基础实现 什么是限流有哪些限流算法&#xff1f;限流算法固定窗口滑动窗口漏桶算法令牌算法 什么是限流 限流是对某一时间窗口内的请求数进行限制&#xff0c;保持系统的可用性和稳定性&#xff0c;防止因流量暴增而导致的系统运行缓慢或宕机。 在高并发…

用kimichat批量识别出图片版PDF文件中的文字内容

图片版的PDF文件&#xff0c;怎么才能借助AI工具来提取其中全部的文字内容呢&#xff1f; 第一步&#xff1a;将PDF文件转换成图片格式 具体方法参见文章&#xff1a;《零代码编程&#xff1a;用kimichat将图片版PDF自动批量分割成多个图片》 第二步&#xff1a;识别图片中的…

Dynamo之雪花分形(衍生式设计)

你好&#xff0c;这里是BIM的乐趣&#xff0c;我是九哥~ 今天简单分享一些我收集的Dynamo的雪花分形案例吧&#xff0c;不过多讲解了&#xff0c;有兴趣的小伙伴&#xff0c;可以私信“雪花分形”获取案例文件&#xff0c;下面基本以分享为主&#xff1a; ******多图预警****…

GD32F470_GY-SHT31-D 数字温湿度传感器模块移植

2.11 SHT30温湿度传感器 2.11.1 模块来源 采购链接&#xff1a; GY-SHT31-D 数字温湿度传感器模块 资料下载链接&#xff1a; https://pan.baidu.com/s/1kisMJspcV6Qdr1ye9ElOlQ 2.11.2 规格参数 工作电压&#xff1a;2.4-5.5V 工作电流&#xff1a;0.2~1500uA 温度测量范围&a…

构建未来交通:香橙派OPI Airpro上的智能交通监管系统

引言&#xff1a; 随着城市化进程的加速&#xff0c;交通管理变得越来越复杂。 传统的交通监管系统往往无法有效应对日益增长的车辆数量和复杂的交通状况。因此&#xff0c;我们需要一种更加智能和自适应的解决方案来提高交通效率并减少事故发生率。 香橙派OPI Airpro以其强大的…

ComfyUI ClipSeg插件报错- resize_image出错应该怎么办

上一篇刚介绍了这个插件&#xff0c;结果emm..很快发现事情并不简单...结果又报错了。 后台报错信息&#xff1a; Unused or unrecognized kwargs: padding. !!! Exception during processing !!! Traceback (most recent call last): File "F:\ComfyUI-aki\execution.p…

Open-Sora环境搭建推理测试

引子 Sora&#xff0c;2024年2月15日&#xff0c;OpenAI发布的人工智能文生视频大模型。支持60秒视频生成&#xff0c;震荡了国内国际学术圈、广告圈、AI教培圈。Sora最主要有三个优点&#xff1a;第一&#xff0c;“60s超长视频”&#xff0c;之前文本生成视频大模型一直无法真…

数据库重点知识(个人整理笔记)

目录 1. 索引是什么&#xff1f; 1.1. 索引的基本原理 2. 索引有哪些优缺点&#xff1f; 3. MySQL有哪几种索引类型&#xff1f; 4. mysql聚簇和非聚簇索引的区别 5. 非聚簇索引一定会回表查询吗&#xff1f; 6. 讲一讲前缀索引&#xff1f; 7. 为什么索引结构默认使用B…

【Visual Studio】将项目下的文件夹所有文件随编译自动复制输出到运行目录

要将项目根目录下的文件夹内容输出到运行目录&#xff0c;去处理其中的子文件夹和文件&#xff0c;逐个手动设置文件属性或进行复制显然不是一个可行的方法&#xff0c;因为这既繁琐又低效&#xff0c;那有没有更加高效的方式呢 文章目录 选择文件夹修改配置文件输出文件夹 这里…

FreeRtos入门-3 信号量(计数值、二进制、互斥量、递归锁)

信号量 计数量 二进制 互斥量 递归锁 创建 xSemCalc xSemaphoreCreateCounting(10, 0);//计数最大值10&#xff0c;初始值0 xSemUart xSemaphoreCreateBinary(); xSemUART xSemaphoreCreateMutex(); xSemUART xSemaphoreCreateRecursiveMutex(); 释放 xSemaphore…

Linux集群(一)Nginx搭建

目录 一、Nginx介绍 1.什么是Nginx 2.Nginx的特点 二、Nginx配置 1.jdk的安装 1.1检查jdk版本 1.2上传并安装jdk 2.安装Tomcat 3.下载Nginx 3.1安装依赖包 ​编辑 3.2安装Nginx 3.3运行 三、Nginx中的常用命令​编辑 一、Nginx介绍 1.什么是Nginx Nginx&#xff08;…

Coursera上Learning Linux for LFCA Certification专项课程01:Linux Fundamentals 学习笔记

Linux Fundamentals Course Certificate 本文是 Linux Fundamentals 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Linux FundamentalsWeek 01: Linux Operating SystemLearning Objectives Specialization OverviewHistory of LinuxQuiz: Hist…

软件设计师27--规范化理论

软件设计师27--规范化理论 考点1&#xff1a;规范化理论基本概念函数依赖规范化理论--Amstrong公理体系候选键主属性与非主属性例题&#xff1a; 考点2&#xff1a;范式判断规范化理论规范化理论 - 范式例题&#xff1a; 考点3&#xff1a;范式分解保持函数依赖分解无损分解模式…

第14章 数据结构与集合源码

一 数据结构剖析 我们举一个形象的例子来理解数据结构的作用&#xff1a; 战场&#xff1a;程序运行所需的软件、硬件环境 战术和策略&#xff1a;数据结构 敌人&#xff1a;项目或模块的功能需求 指挥官&#xff1a;编写程序的程序员 士兵和装备&#xff1a;一行一行的代码 …

基于opencv的猫脸识别模型

opencv介绍 OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发&#xff0c;以BSD许可证授权发行&#xff0c;可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及…

【前端面试3+1】11 http和https有何不同及https的加密过程、数组有哪些方法及作用、tcp三次握手四次挥手、【分发饼干】

一、http和https有何不同&#xff1f;https的加密过程 1、不同&#xff1a; HTTP和HTTPS的主要区别在于安全性。HTTP是超文本传输协议&#xff0c;是一种用于传输数据的协议&#xff0c;但是传输的数据是明文的&#xff0c;容易被窃听和篡改。而HTTPS是在HTTP基础上加入了SSL/T…

【ORB-SLAM3】Ubuntu20.04 使用 RealSense D435i 运行 ORB-SLAM3 时遇到的一些 Bug

【ORB-SLAM3】使用 RealSense D435i 跑 ORB-SLAM3 时遇到的一些 Bug 1 hwmon command 0x80( 5 0 0 0 ) failed (response -7 HW not ready)2 No rule to make target /opt/ros/noetic/lib/x86_64-linux-gnu/librealsense2.so, needed by ../lib/libORB_SLAM3.so 1 hwmon comman…