21.Arrays类

Arrays类

    • 1. 概述
    • 2. 常见方法
    • 3. sort 方法的自定义排序
    • 4. 代码示例
    • 5. 输出结果
    • 6. 注意事项

具体信息请查看 API 帮助文档

1. 概述

Arrays类是Java中的一个工具类,位于java.util包中。

它提供了一组静态方法,用于操作数组。通过Arrays类,我们可以对数组进行复制、填充、排序以及查找等常见操作。

Arrays类的方法主要包括以下几个方面:

  1. 数组拷贝:提供了copyOf()和copyOfRange()方法,用于将原数组复制到新数组中,并可以指定拷贝的范围。

  2. 数组填充:通过fill()方法,可以将数组中的所有元素填充为指定的值。

  3. 数组排序:使用sort()方法,可以对数组进行排序。sort()方法有两个版本,一个是使用默认规则进行排序,另一个是可以指定排序规则。

  4. 数组查找:提供了binarySearch()方法,使用二分查找法在数组中查找指定的元素。

2. 常见方法

方法功能
public static String toString(数组)将数组拼接成一个字符串
public static int binarySearch(数组,查找的元素)使用二分查找法在数组中查找元素
public static int[] copyOf(原数组,新数组长度)拷贝数组并指定新数组的长度
public static int[] copyOfRange(原数组,起始索引,结束索引)拷贝数组的指定范围到新数组中
public static void fill(数组,元素)将数组中的所有元素填充为指定元素
public static void sort(数组)使用默认规则对数组进行排序
public static void sort(数组,排序规则)使用指定规则对数组进行排序

注意:

  • public static int binarySearch(数组,查找的元素) : 二分查找法查找元素

    • 细节1:二分查找的前提:数组中的元素必须是有序的,且数组中的元素必须是升序的

    • 细节2:

      • 如果要查找的元素存在,则返回的是真实的索引值;

      • 如果要查找的元素不存在,则返回的是 -插入点 -1

      • -1的原因:如果此时,我们要查找数字0(假如0在数组中并不存在),那么如果返回的值是-插入点,那么则为-0;有的人认为-0等同于0,因此为避免这种情况出现,Java规定如果要查找的元素不存在,则返回的是 -插入点 -1

  • public static int[] copyOf(原数组,新数组长度) :拷贝数组

    • 细节:

      • 当新数组的长度小于原数组的长度时,会部分拷贝原数组的元素

      • 当新数组的长度等于原数组的长度时,会全部拷贝原数组的元素

      • 当新数组的长度大于原数组的长度时,会全部拷贝原数组的元素,剩余位置补上默认初始化(例如,int类型的数组剩余位置补0)

  • public static int[] copyOfRange(原数组,起始索引,结束索引) : 拷贝数组(指定范围)

    • 细节:

      • 包头不包尾,包左不包右
  • public static void sort(数组) :按照默认方式进行排序

    • 细节:

      • 默认情况下,给基本数据类型进行升序操作。底层使用的是快速排序
  • public static void sort(数组,排序规则) : 按照指定的规则排序

    • 参数一:要排序的数组

    • 参数二:排序的规则

    • 细节:

      • 只能给引用数据类型的数组进行排序,如果数组是基本数据类型的话,需要变成其对应的包装类

      • 第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象,作为排序的规则。

      • 但是这个实现类一般只用使用一次,因此没有必要单独写一个类,直接采用匿名内部类的方法就可以了

  • 底层原理:利用插入排序 + 二分查找的方法进行排序的

    • 默认把 0 索引的数据作为有序序列,1索引及其以后得所有数据都作为无序序列。
    • 遍历无序序列,得到里面的每一个元素,把得到的元素往有序序列中插入,在插入时,是利用二分查找的方法确认该元素的插入点,然后拿着该元素与插入点的元素进行比较。(比较的方式与之前不同,该比较的方式是从前往后遍历),比较的规则是compare方法的方法体。
      • 如果方法的返回值是负数,拿着该元素继续跟前面的数据进行比较

      • 如果方法的返回值是正数,拿着该元素继续跟后面的数据进行比较

      • 如果方法的返回值是0,拿着该元素继续跟后面的数据进行比较

    • 直到能确定该元素的位置为止
  • compare方法的形参参数:

    • 参数一 o1:表示在无序序列中,遍历得到的每一个元素
    • 参数二 o2:有序序列中的元素
    • 返回值:
      • 负数:表示当前要插入的元素是小的,放前面

      • 正数:表示当前要插入的元素是大的,放后面

    • 0:表示当前要插入的元素跟该位置的元素是一样的,放后面
      • o1-o2:升序排列

      • o2-o1:降序排列

3. sort 方法的自定义排序

由于Arrays类是一个final类,无法被继承,因此不允许对sort()方法进行重写。

然而,如果想要实现自定义的排序逻辑,可以通过传递一个实现了Comparator接口的自定义比较器对象来调用sort()方法,这样可以指定排序时使用的比较规则。这种方式并不是重写,而是通过回调方法(Comparator接口中的compare()方法)来实现自定义的排序行为。

当我们调用Arrays.sort()方法时,根据传入的参数不同,会调用不同的重载方法。

  1. public static void sort(T[] a)

    • 功能:用于对传入的数组进行排序。
    • 参数:a是要排序的数组,类型为T[],表示一个指定元素类型的数组。
    • 排序规则:默认使用数组元素的自然顺序进行排序。如果数组中的元素是基本数据类型,会使用对应的包装类的自然顺序进行排序。
    • 返回值:无。
    • 示例:
      Integer[] numbers = {5, 2, 8, 1, 9};
      Arrays.sort(numbers);
      // 数组将被排序为:{1, 2, 5, 8, 9}
      
  2. public static void sort(T[] a, Comparator<? super T> c)

    • 功能:用于对传入的数组进行排序,使用自定义的排序规则。
    • 参数:
      • a是要排序的数组,类型为T[],表示一个指定元素类型的数组。
      • c是一个Comparator对象,用于定义元素的比较规则。
    • 排序规则:根据Comparator对象的定义进行排序。
    • 返回值:无。
    • 示例:
      String[] names = {"John", "Alice", "Bob", "David"};
      Arrays.sort(names, (s1, s2) -> s1.compareToIgnoreCase(s2));
      // 数组将被排序为:{"Alice", "Bob", "David", "John"}
      

4. 代码示例

package text.text02;import java.util.Arrays;
import java.util.Comparator;/*
Arrays类:public static String toString(数组)                            把数组拼接成一个字符串public static int binarySearch(数组,查找的元素)                 二分查找法查找元素细节1:二分查找的前提:数组中的元素必须是有序的,且数组中的元素必须是升序的细节2:如果要查找的元素存在,则返回的是真实的索引值如果要查找的元素不存在,则返回的是 -插入点-1-1的原因:如果此时,我们要查找数字0(假如0在数组中并不存在),那么如果返回的值是-插入点,那么则为-0;有的人认为-0等同于0,因此为避免这种情况出现,Java规定如果要查找的元素不存在,则返回的是 -插入点-1。public static int[] copyOf(原数组,新数组长度)                   拷贝数组细节:当新数组的长度小于原数组的长度时,会部分拷贝原数组的元素当新数组的长度等于原数组的长度时,会全部拷贝原数组的元素当新数组的长度大于原数组的长度时,会全部拷贝原数组的元素,剩余位置补上默认初始化(例如,int类型的数组剩余位置补0)public static int[] copyOfRange(原数组,起始索引,结束索引)         拷贝数组(指定范围)细节:包头不包尾,包左不包右public static void fill(数组,元素)                              填充数组public static void sort(数组)                                  按照默认方式进行排序细节:默认情况下,给基本数据类型进行升序操作。底层使用的是快速排序public static void sort(数组,排序规则)                          按照指定的规则排序参数一:要排序的数组参数二:排序的规则细节:只能给引用数据类型的数组进行排序,如果数组是基本数据类型的话,需要变成其对应的包装类第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象,作为排序的规则。但是这个实现类一般只用使用一次,因此没有必要单独写一个类,直接采用匿名内部类的方法就可以了底层原理:利用插入排序 + 二分查找的方法进行排序的默认把 0 索引的数据作为有序序列,1索引及其以后得所有数据都作为无序序列。遍历无序序列,得到里面的每一个元素,把得到的元素往有序序列中插入,在插入时,是利用二分查找的方法确认该元素的插入点,然后拿着该元素与插入点的元素进行比较。(比较的方式与之前不同,该比较的方式是从前往后遍历),比较的规则是compare方法的方法体。如果方法的返回值是负数,拿着该元素继续跟前面的数据进行比较如果方法的返回值是正数,拿着该元素继续跟后面的数据进行比较如果方法的返回值是0,拿着该元素继续跟后面的数据进行比较直到能确定该元素的位置为止compare方法的形参参数:参数一 o1:表示在无序序列中,遍历得到的每一个元素参数二 o2:有序序列中的元素返回值:负数:表示当前要插入的元素是小的,放前面正数:表示当前要插入的元素是大的,放后面0:表示当前要插入的元素跟该位置的元素是一样的,放后面o1-o2:升序排列o2-o1:降序排列*/
public class text16 {public static void main(String[] args) {int[] arr1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int[] arr2 = {10, 5, 3, 4, 7, 8, 2, 9, 1, 6, 0};//public static String toString(数组):把数组拼接成一个字符串System.out.println("===============  toString(数组):把数组拼接成一个字符串 ===============");String str1 = Arrays.toString(arr1);System.out.println(str1);     //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]System.out.println();//public static int binarySearch(数组,查找的元素):二分查找法查找元素//细节1:二分查找的前提:数组中的元素必须是有序的,且数组中的元素必须是升序的//细节2:如果要查找的元素存在,则返回的是真实的索引值//      如果要查找的元素不存在,则返回的是 -插入点-1//-1的原因:如果此时,我们要查找数字0(假如0在数组中并不存在),那么如果返回的值是-插入点,那么则为-0;有的人认为-0等同于0,因此为避免这种情况出现,则Java规定如果要查找的元素不存在,则返回的是 -插入点-1。System.out.println("=============== binarySearch(数组,查找的元素):二分查找法查找元素  ===============");int int1 = Arrays.binarySearch(arr1, 5);int int2 = Arrays.binarySearch(arr1, 10);int int3 = Arrays.binarySearch(arr1, 15);System.out.println(int1);        //5System.out.println(int2);        //10System.out.println(int3);        //-12System.out.println();//public static int[] copyOf(原数组,新数组长度):拷贝数组//细节:当新数组的长度小于原数组的长度时,会部分拷贝原数组的元素//     当新数组的长度等于原数组的长度时,会全部拷贝原数组的元素//     当新数组的长度大于原数组的长度时,会全部拷贝原数组的元素,剩余位置补上默认初始化(例如,int类型的数组剩余位置补0)System.out.println("===============  copyOf(原数组,新数组长度):拷贝数组 ===============");int[] int4 = Arrays.copyOf(arr1, 6);int[] int5 = Arrays.copyOf(arr1, 11);int[] int6 = Arrays.copyOf(arr1, 20);System.out.println(Arrays.toString(int4));      //[0, 1, 2, 3, 4, 5]System.out.println(Arrays.toString(int5));      //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]System.out.println(Arrays.toString(int6));      //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0]System.out.println();//public static int[] copyOfRange(原数组,起始索引,结束索引):拷贝数组(指定范围)//细节:包头不包尾,包左不包右System.out.println("===============  copyOfRange(原数组,起始索引,结束索引):拷贝数组(指定范围) ===============");int[] int7 = Arrays.copyOfRange(arr1, 0, 10);int[] int8 = Arrays.copyOfRange(arr1, 0, 11);System.out.println(Arrays.toString(int7));    //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]System.out.println(Arrays.toString(int8));    //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]System.out.println();//public static void fill(数组,元素):填充数组System.out.println("===============  fill(数组,元素):填充数组  ===============");Arrays.fill(arr1, 20);System.out.println(Arrays.toString(arr1));   //[20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]System.out.println();//public static void sort(数组):按照默认方式进行排序//细节:默认情况下,给基本数据类型进行升序操作。底层使用的是快速排序System.out.println("=============== sort(数组):按照默认方式进行排序  ===============");Arrays.sort(arr2);System.out.println(Arrays.toString(arr2));   //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]System.out.println();//public static void sort(数组,排序规则):按照指定的规则排序//参数一:要排序的数组//参数二:排序的规则//细节:只能给引用数据类型的数组进行排序,如果数组是基本数据类型的话,需要变成其对应的包装类//     第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象,作为排序的规则。//     但是这个实现类一般只用使用一次,因此没有必要单独写一个类,直接采用匿名内部类的方法就可以了//底层原理:利用插入排序 + 二分查找的方法进行排序的//默认把 0 索引的数据作为有序序列,1索引及其以后得所有数据都作为无序序列。//遍历无序序列,得到里面的每一个元素,把得到的元素往有序序列中插入,在插入时,是利用二分查找的方法确认该元素的插入点,然后拿着该元素与插入点的元素进行比较。(比较的方式与之前不同,该比较的方式是从前往后遍历),比较的规则是compare方法的方法体。//如果方法的返回值是负数,拿着该元素继续跟前面的数据进行比较//如果方法的返回值是正数,拿着该元素继续跟后面的数据进行比较//如果方法的返回值是0,拿着该元素继续跟后面的数据进行比较//直到能确定该元素的位置为止System.out.println("=============== sort(数组,排序规则):按照指定的规则排序  ===============");Integer[] arr3 = {2, 3, 5, 6, 8, 9, 1, 0, 4, 10, 7};Arrays.sort(arr3, new Comparator<Integer>() {//compare方法的形参参数://参数一 o1:表示在无序序列中,遍历得到的每一个元素//参数二 o2:有序序列中的元素//返回值://负数:表示当前要插入的元素是小的,放前面//正数:表示当前要插入的元素是大的,放后面//0:表示当前要插入的元素跟该位置的元素是一样的,放后面//o1-o2:升序排列//o2-o1:降序排列@Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}});System.out.println("升序排序:" + Arrays.toString(arr3));    //升序排序:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]Arrays.sort(arr3, new Comparator<Integer>() {//compare方法的形参参数://参数一 o1:表示在无序序列中,遍历得到的每一个元素//参数二 o2:有序序列中的元素//返回值://负数:表示当前要插入的元素是小的,放前面//正数:表示当前要插入的元素是大的,放后面//0:表示当前要插入的元素跟该位置的元素是一样的,放后面//o1-o2:升序排列//o2-o1:降序排列@Overridepublic int compare(Integer o1, Integer o2) {return o2 - o1;}});System.out.println("降序排序:" + Arrays.toString(arr3));    //降序排序:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]}
}

5. 输出结果

  • public static String toString(数组):把数组拼接成一个字符串
    在这里插入图片描述

  • public static int binarySearch(数组,查找的元素):二分查找法查找元素
    在这里插入图片描述

  • public static int[] copyOf(原数组,新数组长度):拷贝数组
    在这里插入图片描述

  • public static int[] copyOfRange(原数组,起始索引,结束索引):拷贝数组(指定范围)
    在这里插入图片描述

  • public static void fill(数组,元素):填充数组
    在这里插入图片描述

  • public static void sort(数组):按照默认方式进行排序
    在这里插入图片描述

  • public static void sort(数组,排序规则):按照指定的规则排序
    在这里插入图片描述

6. 注意事项

  1. Arrays类中的方法都是静态方法,无需实例化对象即可直接调用。

  2. Arrays类的方法通常针对数组进行操作,因此在使用这些方法之前,需要先创建合适的数组对象,并将数据存储在数组中。

  3. 使用Arrays.copyOf()Arrays.copyOfRange()方法时,要确保目标数组的长度足够存储源数组或指定的范围内的元素。否则,可能会出现ArrayIndexOutOfBoundsException错误。

  4. Arrays.toString()Arrays.deepToString()方法可以将数组转换为字符串,方便打印和调试。但需要注意,这些方法将直接使用数组的toString()方法来获取字符串表示形式,因此自定义的类需要重写toString()方法才能得到正确的输出。

  5. 当使用Arrays.sort()方法对数组进行排序时,需要注意数组元素的可比较性。如果数组元素是自定义的类对象,需要确保该类实现了Comparable接口,或者使用重载方法并传入自定义的Comparator对象来指定元素的比较规则。

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

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

相关文章

台式电脑的ip地址在哪里找

在网络连接方面&#xff0c;IP地址是非常重要的信息&#xff0c;它是用于标识网络设备的唯一地址。对于台式电脑用户来说&#xff0c;了解自己设备的IP地址是非常有必要的&#xff0c;因为它可以帮助解决网络连接问题&#xff0c;进行远程访问和共享文件等功能。本文将指导读者…

Redis(秒杀活动、持久化之RDB、AOF)

目录 秒杀活动 一、测压工具jmete的使用 二、java实现秒杀活动 1、myseckillcontroller 2、先启动pos请求添加商品&#xff0c;再启动jmeter进行压测 Redis持久化 一 、Redis持久化之RDB 1.RDB是什么 2. 备份是如何执行的 3.Fork 4. RDB持久化流程 5. dump.rdb文件 6…

想要透明拼接屏展现更加效果,视频源是技术活,尤其作为直播背景

随着科技的飞速发展&#xff0c;视频制作和显示技术也在不断进步。透明拼接屏视频作为一种新型的视频形式&#xff0c;在许多场合都得到了广泛的应用。尼伽小编将深入探讨透明拼接屏视频的制作过程、要求、清晰度&#xff0c;以及目前常作为直播背景的优势。 一、透明拼接屏视频…

【数据结构1-2】二叉树

树形结构不仅能表示数据间的指向关系&#xff0c;还能表示出数据的层次关系&#xff0c;而有很明显的递归性质。因此&#xff0c;我们可以利用树的性质解决更多种类的问题。 但是在平常的使用中&#xff0c;我们并不需要使用这么复杂的结构&#xff0c;只需要建立一个包含int r…

Vue深入学习4—指令和生命周期

1.Vue是怎么识别 v- 指令的&#xff1f; 首先将HTML结构解析成属性列表&#xff0c;存入到数组中&#xff0c;接着遍历数组中的每一个节点&#xff0c;获取到不同指令对应的方法。 // 将HTML看作真正的属性列表 var ndoeAttrs node.attributes; var self this; // 类数组对象…

modbus poll测试工具测试modbus tcp与PLC设备连接使用方法

socket默认端口是502&#xff0c;socket连上之后&#xff0c; 按照modbuspoll工具设置的读写参数 生成的RTU命令格式去组装读PLC的设备数据 modbuspoll工具配置&#xff0c;以v9.9.2中文破解版为例&#xff1a; 首先点连接菜单&#xff08;connection&#xff09;建立连接&…

C#学习(十一)——Array和Collection

一、集合 集合重要且常用 孤立的数据是没有意义的&#xff0c;集合可以作为大量数据的处理&#xff0c;可进行数据的搜索、迭代、添加、删除。 C#中&#xff0c;所有集合都必须实现ICollection接口&#xff08;数组Array除外&#xff09; 集合说明Array数组&#xff0c;固定长…

消息中间件之八股面试回答篇:三、RabbitMQ如何解决消息堆积问题(100万条消息堆积)+RabbitMQ高可用性和强一致性机制+回答模板

RabbitMQ中的消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度&#xff0c;就会导致队列中的消息堆积&#xff0c;直到队列存储消息达到上限。之后发送的消息就会成为死信&#xff0c;可能会被丢弃&#xff0c;这就是消息堆积问题。 解决消息堆积有三种种思路…

【Java Kubernates】Java调用kubernates提交Yaml到SparkOperator

背景 目前查询框架使用的是trino&#xff0c;但是trino也有其局限性&#xff0c;需要准备一个备用的查询框架。考虑使用spark&#xff0c;spark operator也已经部署到k8s&#xff0c;现在需要定向提交spark sql到k8s的sparkoperator上&#xff0c;使用k8s资源执行sql。 对比 …

LeetCode 40.组合总和 II

组合总和 II 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 方法一、回溯 由于题目要求解集…

C语言第十一弹---函数(下)

​ ✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 函数 1、嵌套调用和链式访问 1.1、嵌套调用 1.2、链式访问 2、函数的声明和定义 2.1、单个文件 2.2、多个文件 2.3、static 和 extern 2.3.1、static…

机器学习的数据库积累........

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md ​​​​​​​ 另一个database:&#xff08;网址:Object Detection Made Easy with TensorFlow Hub: Tutorial&#xff09; Object Detection Made Easy with Ten…

菱形打印和十进制ip转二进制

1.菱形打印 用for循环 #!/bin/bashread -p "请输入菱形的大小:" num #打印向上的等腰三角形 for ((i=1;i<=num;i++)) dofor ((j=num-1;j>=i;j--))doecho -n " " #打印的是前面的空格donefor ((k=1;k<=2*i-1;k++))doecho -n "*" #打印…

蓝桥杯——每日一练(简单题)

题目 问题描述   123321是一个非常特殊的数&#xff0c;它从左边读和从右边读是一样的。   输入一个正整数n&#xff0c; 编程求所有这样的五位和六位十进制数&#xff0c;满足各位数字之和等于n 。 输入格式   输入一行&#xff0c;包含一个正整数n。 输出格式   按从…

基于vue实现待办清单案例

一、需求 新增内容&#xff1b; 删除内容&#xff1b; 统计操作&#xff1b; 清空数据。 示例图&#xff1a; 二、代码演示 1、基础准备 index.css代码 html, body {margin: 0;padding: 0; } body {background: #fff ; } button {margin: 0;padding: 0;border: 0;backgr…

C++ 隐式转换构造函数和explicit 关键字学习

据说在内核代码中,多个地方使用了explicit 关键字;下面看一下; 在 C++ 中,隐式转换构造函数指的是当我们将一种类型的值赋给该类对象时,编译器会自动调用相应的构造函数进行类型转换。这样可以使得不同类型之间能够互相赋值或者传参。 具体来说,当一个类有多个构造函数…

数据结构(1)--> 顺序表

定义&#xff1a; 顺序表存储定义&#xff1a; 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构&#xff0c;顺序表功能的实现借助于数组&#xff0c;通过对数组进行封装&#xff0c;从而实现增删查改的功能&#xff0c;严格意义上来说&#xff08;数组无法实现…

vue3+echarts绘制某省区县地图

vue3echarts绘制某省区县地图 工作中经常需要画各种各样的图&#xff0c;echarts是使用最多的工具&#xff0c;接近春节&#xff0c;想把之前画的echarts图做一个整合&#xff0c;方便同事和自己随时使用&#xff0c;因此用vue3专门写了个web项目&#xff0c;考虑之后不断完善…

STM正点mini-新建工程模板,GPIO及寄存器(介绍)

一.新建工程模板(基于固件库) 1.1库函数与寄存器的区别 这里的启动文件都是根据容量来进行区分的 对MDK而言即使include了&#xff0c;也不知道在哪里找头文件 STM32F10X_HD,USE_STDPERIPH_DRIVER 二.新建工程模板(基于寄存器) 上面的大部分配置与固件库的一样 具体可以看手…

第5章 (python深度学习——波斯美女)

第5章 深度学习用于计算机视觉 本章包括以下内容&#xff1a; 理解卷积神经网络&#xff08;convnet&#xff09; 使用数据增强来降低过拟合 使用预训练的卷积神经网络进行特征提取 微调预训练的卷积神经网络 将卷积神经网络学到的内容及其如何做出分类决策可视化 本章将…