Java阶段一Day15

Java阶段一Day15

文章目录

  • Java阶段一Day15
    • 集合及相关接口
    • Collection的常用方法
    • 集合的遍历及新循环
    • 集合中的泛型
      • 集合和数组转换
  • 教师总结
    • 回顾:
    • 精华笔记:
    • 笔记:
    • 补充:

集合及相关接口

什么是集合:和数组一样可以保存一组数据,并且提供了操作数组元素的相关方法,使用更加方便

集合里存放的是元素的引用

//集合里存放的是元素的引用
ArrayList<Object> cc = new ArrayList<>();
Point pp = new Point(1, 2);
cc.add(pp); // 将pp添加到cc中   将 pp 元素的引用装到 cc 中
System.out.println("pp:" + pp);	//(1,2)
System.out.println("cc:" + cc);	//(1,2)

pp.setX(100);
System.out.println("pp:" + pp);	//(100,2)
System.out.println("cc:" + cc);	//(100,2)

图例解释

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wEezilhD-1680516434819)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230403110537501.png)]

装的是对象的引用
在这里插入图片描述

修改对象属性值

在这里插入图片描述

相关接口

  • java.util.Collection接口:是所有集合的顶级接口,封装了所有集合共有的方法,下面有很多实现类
  • Collection接口下面有两个常见子接口:ListSet
    • java.util.List:线性表,是可以重复集合,并且有序
    • java.util.Set:不可重复集合,大部分实现类是无序的

Collection的常用方法

方法介绍
add()向集合中添加一个元素,成功添加则返回true,否则返回false
size()返回当前集合的元素个数
isEmpty()判断当前集合是否为空集,当且仅当size()为0时返回true
clear()清空集合
contains()判断集合是否包含某元素(equals()相等即为true)
remove()从集合中删除给定元素(equals()相等即为true),成功删除则返回true
addAll()将参数集合中的元素添加到当前集合中,添加后当前集合发生改变则返回true
containsAll()判断当前集合中是否包含参数集合中的所有元素
retainAll()取交集(交集元素留着)
removeAll()删交集(交集元素删除)

集合的遍历及新循环

Collection接口提供了统一的遍历集合的方式:迭代器模式

通过 iterator() 方法可以获取一个用于遍历当前集合元素的迭代器(Iterator接口);

java.util.lterator接口:定义了迭代器遍历集合的相关操作,不同的集合都实现了用于遍历自身元素的迭代器实现类,但我们无需记住它们的名字,从多态的角度把它们看成lterator即可。

迭代器常用方法

迭代器遍历遵循的步骤为:问(hasNext())、取(next())、删(remove)),但删除并不是必要操作

  • hasNext():询问集合是否还有下一个元素可供迭代

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nnkStJlJ-1680516434824)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230403143745089.png)]

  • next():取 迭代器向后移动位置来指向集合的下一个元素,并将其获取

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n9ZSqqnL-1680516434826)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230403144150228.png)]

jdk1.5时推出了一个特性:增强型for循环,也称为新循环,使用相同语法遍历集合和数组

内部是通过Iterator实现的,所以不能动态增删元素

for(元素类型 变量名∶集合或数组){
	循环体
}

集合中的泛型

JDK1.5时推出了一个特性:泛型

泛型也称为参数化类型,允许我们在使用一个类时,传入某个类型来规定其内部的属性、方法参数或返回值类型,使得我们使用时更加方便。

泛型在集合中被广泛使用,用来指定集合中元素的类型

  • 若不指定泛型的具体类型,则默认为Object
  • 若指定了泛型的具体类型,则在获取泛型的值时,编译器会自动补充强转操作

集合和数组转换

  • 集合转换成数组

    Collection<String> c = new ArrayList<>();
    c.add("one");
    c.add("two");
    c.add("three");
    c.add("four");
    c.add("five");
    System.out.println(c);
    
    //若参数数组元素个数==集合元素个数,那就正常转换
    //若参数数组元素个数<集合元素个数,那也正常转换(按照集合大小给数组)
    //若参数数组元素个数>集合元素个数,那也正常转换(在末尾补默认值)
    String[] array = c.toArray(new String[7]);
    System.out.println(Arrays.toString(array));
    
  • 数组转换成集合

    String[] array = {"a", "b", "c", "d", "e", "f"};
    System.out.println("array:" + Arrays.toString(array));
    
    List<String> list = Arrays.asList(array);
    //asList()方法会返回内部的ArrayList,内部直接引用给定数组array
    System.out.println("list:" + list);
    //对数组元素的数据操作后,集合也会相应改变
    array[1] = "hello";
    System.out.println("array:" + Arrays.toString(array));
    System.out.println("list:" + list);
    //反之同理
    list.set(2, "world");
    System.out.println("array:" + Arrays.toString(array));
    System.out.println("list:" + list);
    
    list.add("123");
    //给集合添加、删除元素相当于给数组添加删除元素,但数组是定长的,不会自动扩容、缩容
    //会发生 不支持操作异常   UnsupportedOperationException
    

教师总结

回顾:

  1. 正则表达式:
    • 验证字符串格式是否符合要求
  2. String支持的正则表达式的方法:
    • matches():验证匹配
    • replaceAll():替换
    • split():拆分
  3. Object:是所有类的顶级超类,万物皆对象,为了多态
    • 输出引用类型变量时,默认调用Object类的toString()方法,输出格式为:类的全称@hashcode,但是没有参考意义,所以常常重写toString()来返回对象的属性值
    • Object类的equals()方法默认比较的还是==(即比较地址),但是没有参考意义,所以常量重写equals()来比较对象属性的值是否相同
  4. 包装类:
    • 给8种基本类型套了个壳,使基本类型可以通过包装类的形式存在,直接参与面向对象的开发
    • jdk1.5提供了自动拆装箱特性,当基本类型与包装类型之间赋值时,会自动触发拆装箱,但本质上自动补齐代码

精华笔记:

  1. 什么是集合:

    • 集合和数组一样,可以保存一组数据,并且提供了操作数组元素的相关方法,使用用更加方便
  2. 集合框架中的相关接口:

    • java.util.Collection接口:是所有集合的顶级接口,封装了所有集合所共有的方法,下面有很多实现类,因此我们可以有更多的数据结构来选择。
    • Collection接口下面有两种常见的子接口:-----------------------明天详细介绍
      • java.util.List:线性表,是可以重复集合,并且有序
      • java.util.Set:不可重复集合,大部分实现类是无序的
  3. Collection的常用方法:

    • add():向集合中添加一个元素,成功添加则返回true,否则返回false
    • size():返回当前集合的元素个数
    • isEmpty():判断当前集合是否为空集,当且仅当size()为0时返回true
    • clear():清空集合
    • contains():判断集合是否包含某元素(equals()相等即为true)
    • remove():从集合中删除给定元素(equals()相等即为true),成功删除则返回true
    • addAll():将参数集合中的元素添加到当前集合中,添加后当前集合发生改变则返回true
    • containsAll():判断当前集合中是否包含参数集合中的所有元素
    • retainAll():取交集(交集元素留着)
    • removeAll():删交集(交集元素删除)
    • iterator():获取一个用于遍历当前集合元素的迭代器
    • toArray():将集合转换为数组
  4. 集合的遍历:

    • Collection接口提供了统一的遍历集合的方式:迭代器模式。通过iterator()方法可以获取一个用于遍历当前集合元素的迭代器(Iterator接口)
    • java.util.Iterator接口:定义了迭代器遍历集合的相关操作,不同的集合都实现了用于遍历自身元素的迭代器实现类,但我们无需记住它们的名字,从多态的角度把它们看成Iterator即可。
    • 迭代器遍历遵循的步骤为:问(hasNext())、取(next())、删(remove()),但删除并不是必要操作
  5. 增强for循环/新循环:

    • jdk1.5时推出了一个特性:增强型for循环,也称为新循环,让我们使用相同的语法遍历集合和数组。它的内部是通过Iterator实现的,所以不能动态的增删元素。

    • 语法:

      for(元素类型 变量名 : 集合或数组){
          循环体
      }
      
  6. 泛型:

    • JDK1.5时推出了一个特性:泛型
    • 泛型也称为参数化类型,允许我们在使用一个类时,传入某个类型来规定其内部的属性、方法参数或返回值类型,使得我们使用时更加方便。
      • 泛型在集合中被广泛使用,用来指定集合中元素的类型
      • 若不指定泛型的具体类型,则默认为Object
      • 若指定了泛型的具体类型,则在获取泛型的值时,编译器会自动补充强转操作
  7. 集合与数组的互转:

    • 集合转换为数组:
    • 数组转换为集合:

笔记:

  1. 什么是集合:

    • 集合和数组一样,可以保存一组数据,并且提供了操作数组元素的相关方法,使用用更加方便
  2. 集合框架中的相关接口:

    • java.util.Collection接口:是所有集合的顶级接口,封装了所有集合所共有的方法,下面有很多实现类,因此我们可以有更多的数据结构来选择。
    • Collection接口下面有两种常见的子接口:-----------------------明天详细介绍
      • java.util.List:线性表,是可以重复集合,并且有序
      • java.util.Set:不可重复集合,大部分实现类是无序的
  3. Collection的常用方法:

    • add():向集合中添加一个元素,成功添加则返回true,否则返回false

    • size():返回当前集合的元素个数

    • isEmpty():判断当前集合是否为空集,当且仅当size()为0时返回true

    • clear():清空集合

    • contains():判断集合是否包含某元素(equals()相等即为true)

    • remove():从集合中删除给定元素(equals()相等即为true),成功删除则返回true

      public class CollectionDemo {
          public static void main(String[] args) {
              Collection c = new ArrayList();
              c.add(new Point(1,2));
              c.add(new Point(3,4));
              c.add(new Point(5,6));
              c.add(new Point(7,8));
              c.add(new Point(9,0));
              c.add(new Point(1,2));
              //[元素1.toString(), 元素2.toString(), 元素3.toString(), ......]
              System.out.println(c); //[(1,2), (3,4), (5,6), (7,8), (9,0), (1,2)]
      
              /*
                boolean contains(Object o):
                判断当前集合是否包含给定元素o
                判断依据是给定元素是否与当前集合存在equals()比较为true的情况
               */
              Point p = new Point(1,2);
              boolean contains = c.contains(p);
              System.out.println("是否包含:"+contains); //true
      
              /*
                boolean remove(Object o):-----一般都不接收boolean结果
                从当前集合中删除与给定元素o的equals()比较为true的元素
                若存在重复元素则只删除一次
               */
              c.remove(p);
              System.out.println(c);
      
      
              //集合中存放的是元素的引用
              Collection cc = new ArrayList();
              Point pp = new Point(1,2);
              cc.add(pp); //将pp添加到cc中-----------将pp的引用装到了cc中
              System.out.println("pp:"+pp); //(1,2)
              System.out.println("cc:"+cc); //[(1,2)]
      
              pp.setX(100);
              System.out.println("pp:"+pp); //(100,2)
              System.out.println("cc:"+cc); //[(100,2)]
      
              /*
              Collection c = new ArrayList();
              c.add("one");
              c.add("two");
              c.add("three");
              c.add("four");
              c.add("five");
              //集合重写了Object的toString()方法,返回格式如下:
              //[元素1.toString(), 元素2.toString(), 元素3.toString(), ......]
              System.out.println(c); //[one, two, three, four, five]
      
              System.out.println("size:"+c.size()); //5,输出集合的元素个数
              //isEmpty()判断集合是否为空集(size()为0表示空集)
              System.out.println("是否为空集"+c.isEmpty()); //false
      
              c.clear(); //清空集合
              System.out.println("集合已清空");
              System.out.println(c); //[]
              System.out.println("size:"+c.size()); //0
              System.out.println("是否为空集:"+c.isEmpty()); //true
              */
          }
      }
      
    • addAll():将参数集合中的元素添加到当前集合中,添加后当前集合发生改变则返回true

    • containsAll():判断当前集合中是否包含参数集合中的所有元素

    • ratainAll():取交集(交集元素留着)

    • removeAll():删交集(交集元素删除)

      public class CollectionOperDemo {
          public static void main(String[] args) {
              Collection c1 = new ArrayList();
              c1.add("java");
              c1.add("c++");
              c1.add(".net");
              System.out.println("c1:"+c1); //c1:[java, c++, .net]
      
              Collection c2 = new ArrayList();
              c2.add("android");
              c2.add("ios");
              c2.add("java");
              System.out.println("c2:"+c2); //c2:[android, ios, java]
      
              c1.addAll(c2); //将c2添加到c1中
              System.out.println("c1:"+c1); //c1:[java, c++, .net, android, ios, java]
              System.out.println("c2:"+c2); //c2:[android, ios, java]
      
              Collection c3 = new ArrayList();
              c3.add("c++");
              c3.add("android");
              c3.add("php");
              System.out.println("c3:"+c3); //[c++, android, php]
      
              boolean contains = c1.containsAll(c3); //判断c1中是否包含c3中的所有元素
              System.out.println("是否包含:"+contains); //false
      
              /*
              //取交集:c1中仅保留与c3所共有的元素,而c3不变
              c1.retainAll(c3);
              System.out.println("c1:"+c1); //c1:[c++, android]
              System.out.println("c3:"+c3); //c3:[c++, android, php]
              */
      
              //删交集:将c1中与c3共有的元素删除,c3不变
              c1.removeAll(c3);
              System.out.println("c1:"+c1); //c1:[java, .net, ios, java]
              System.out.println("c3:"+c3); //c3:[c++, android, php]
          }
      }
      
    • iterator():获取一个用于遍历当前集合元素的迭代器

    • toArray():将集合转换为数组

  4. 集合的遍历:

    • Collection接口提供了统一的遍历集合的方式:迭代器模式。通过iterator()方法可以获取一个用于遍历当前集合元素的迭代器(Iterator接口)

    • java.util.Iterator接口:定义了迭代器遍历集合的相关操作,不同的集合都实现了用于遍历自身元素的迭代器实现类,但我们无需记住它们的名字,从多态的角度把它们看成Iterator即可。

    • 迭代器遍历遵循的步骤为:问(hasNext())、取(next())、删(remove()),但删除并不是必要操作

      public class IteratorDemo {
          public static void main(String[] args) {
              Collection c = new ArrayList();
              c.add("one");
              c.add("#");
              c.add("two");
              c.add("#");
              c.add("three");
              c.add("#");
              c.add("four");
              c.add("#");
              c.add("five");
              System.out.println(c); //[one, #, two, #, three, #, four, #, five]
      
              /*
                迭代器的常用方法:
                1)boolean hasNext()----------问(必要操作)
                  询问集合是否还有"下一个"元素可供迭代
                  注意:迭代器默认开始位置在集合第1个元素之前
                       无论调用了多少次的hasNext(),迭代器的位置都不会改变
                2)Object next()--------------取(必要操作)
                  迭代器向后移动一个位置来指向集合的下一个元素并将其获取
                3)void remove()--------------删(删除并非必要操作)
                  删除next()方法所获取的元素
               */
              Iterator it = c.iterator(); //获取集合c的迭代器
              while(it.hasNext()){ //若有下一个元素
                  String str = (String)it.next(); //获取下一个元素并强转为String类型
                  System.out.println(str);
                  if("#".equals(str)){
                      //c.remove(str); //迭代器遍历过程中不允许通过集合的方式来增删元素,否则会报异常
                      it.remove(); //删除next()方法所获取的元素
                  }
              }
              System.out.println(c);
          }
      }
      
  5. 增强for循环/新循环:

    • jdk1.5时推出了一个特性:增强型for循环,也称为新循环,让我们使用相同的语法遍历集合和数组。它的内部是通过Iterator实现的,所以不能动态的增删元素。

    • 语法:

      for(元素类型 变量名 : 集合或数组){
          循环体
      }
      
      public class NewForDemo {
          public static void main(String[] args) {
              String[] array = {"one","two","three","four","five"};
              for(int i=0;i<array.length;i++){
                  System.out.println(array[i]);
              }
              for(String str : array){ //str表示的就是数组中的每个元素
                  System.out.println(str);
              }
      
              Collection c = new ArrayList();
              c.add("one");
              c.add("two");
              c.add("three");
              c.add("four");
              c.add("five");
              Iterator it = c.iterator();
              while(it.hasNext()){
                  String str = (String)it.next();
                  System.out.println(str);
              }
              for(Object obj : c){ //obj代表集合中的每个元素
                  String str = (String)obj;
                  System.out.println(str);
              }
      
          }
      }
      
  6. 泛型:

    • JDK1.5时推出了一个特性:泛型

    • 泛型也称为参数化类型,允许我们在使用一个类时,传入某个类型来规定其内部的属性、方法参数或返回值类型,使得我们使用时更加方便。

      • 泛型在集合中被广泛使用,用来指定集合中元素的类型
      • 若不指定泛型的具体类型,则默认为Object
      • 若指定了泛型的具体类型,则在获取泛型的值时,编译器会自动补充强转操作
      public class GenericDemo {
          public static void main(String[] args) {
              Collection<Point> c = new ArrayList<>();
              c.add(new Point(1,2));
              c.add(new Point(3,4));
              c.add(new Point(5,6));
              c.add(new Point(7,8));
      
              Iterator<Point> it = c.iterator();
              while(it.hasNext()){
                  Point p = it.next();
                  System.out.println(p);
              }
      
              for(Point p : c){
                  System.out.println(p);
              }
      
              /*
              Collection<String> c = new ArrayList<>(); //泛型集合
              c.add("one");
              c.add("two");
              c.add("three");
              c.add("four");
              c.add("five");
              //c.add(123); //编译错误,123的类型违背了集合c所指向的泛型的实际类型String
      
              //迭代器所指定的泛型应当与其遍历的集合的泛型一致
              Iterator<String> it = c.iterator();
              while(it.hasNext()){
                  String str = it.next();
                  System.out.println(str);
              }
      
              for(String str : c){
                  System.out.println(str);
              }
               */
          }
      }
      
  7. 集合与数组的互转:

    • 集合转换为数组:

      public class CollectionToArray {
          public static void main(String[] args) {
              Collection<String> c = new ArrayList<>();
              c.add("one");
              c.add("two");
              c.add("three");
              c.add("four");
              c.add("five");
              System.out.println(c); //[one, two, three, four, five]
      
              //若参数数组元素个数==集合元素个数,那就正常转换
              //若参数数组元素个数<集合元素个数,那也正常转换(按照集合大小给数组)
              //若参数数组元素个数>集合元素个数,那也正常转换,同时在末尾补默认值
              String[] array = c.toArray(new String[5]);
              System.out.println(Arrays.toString(array)); //[one, two, three, four, five]
      
          }
      }
      
    • 数组转换为集合:

      public class ArrayToList {
          public static void main(String[] args) {
              String[] array = {"one", "two", "three", "four", "five"};
              System.out.println("array:"+ Arrays.toString(array)); //[one, two, three, four, five]
      
              //asList()方法会返回内部的ArrayList,内部直接引用给定数组array
              List<String> list = Arrays.asList(array);
              System.out.println("list:"+list); //[one, two, three, four, five]
      
              //对数组操作后,集合也会相应的改变
              array[1] = "six";
              System.out.println("array:"+ Arrays.toString(array));
              System.out.println("list:"+list);
      
              //对集合操作后,数组也会做相应的改变
              list.set(2,"seven"); //将集合的第3个元素修改为seven
              System.out.println("array:"+ Arrays.toString(array));
              System.out.println("list:"+list);
      
              //给集合添加/删除元素相当于给数组添加/删除元素
              //而数组是定长的,不会自动扩容/缩容,因此发生不支持操作异常
              list.add("!!!!"); //运行时会发生不支持操作异常
          }
      }
      

补充:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SuperMap GIS基础产品三维GIS FAQ集锦(1)

SuperMap GIS基础产品三维GIS FAQ集锦&#xff08;1&#xff09; 【WebGL】交通仿真示例代码中&#xff0c;动态图层中加载带有透明度的S3M模型&#xff0c;遮挡了其他不带有透明度的S3M模型&#xff0c;怎么办&#xff1f; 【问题原因】加载url模型信息时&#xff0c;如带有…

Cannot read properties of undefined (reading ‘uri‘)

Cannot read properties of undefined (reading ‘uri’) 问题描述 Cursor更新后遇到如标题那样的问题&#xff0c;我直接百度没发现解决方法&#xff0c;遂到github的issue看了看&#xff01; 解决方法 有网友给了解决方法&#xff0c;如下图&#xff1a; 如果对你有帮助…

怎么将图文、视频生成一个二维码?多内容在线生成二维码的方法

现在很多幼儿园在招生、宣传时经常会使用二维码的方式来让家长快速了解幼儿园的信息&#xff0c;那么大多采用的方式也是通过文字、图片、视频等类型的内容来做宣传推广&#xff0c;那么如何将这些类型的内容同时放到一个二维码中呢&#xff1f;怎么快速在线生成二维码&#xf…

[Netty] Selector选择器以及Reactor实现 (七)

文章目录1.Nio中的Selector介绍1.1 Selector1.2 SelectionKey1.3 ServerSocketChannel1.4 SocketChannel2.Netty中NioEventLoop的选择器3.Netty对Reactor的实现1.Nio中的Selector介绍 通过Selector多路复用器实现IO的多路复用, Selector可以监听多个连接的Channel事件, 同事可…

Pycharm创建自定义代码片段

简介 PyCharm允许您创建自定义代码片段&#xff0c;也称为代码模板&#xff0c;以提高您的开发效率 实现步骤 1.添加代码模板 打开PyCharm并导航到File->Settings&#xff0c;或者按快捷键ctrl alt s 打开设置 ​ 按照如下序号步骤进行点击&#xff0c;点击“”按钮以…

Sentinel1.8.6规则持久化到Nacos2.2.0集群记录

环境准备&#xff1a; Nacos2.2.0集群搭建 版本说明&#xff1a;https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 本次记录修改好的控制台代码&#xff0c;需要的话自取&#xff1a;Gitee、Github 1. 下载源代码 Sentinel1.8.6&#xff1a;https://github.c…

ES 聚合查询(四)-cnblog

我于黑夜中相信自己&#xff0c;相信自己一定能一往无前&#xff0c;即使我没有钱. 上一章简单介绍了 ES的复杂查询(三) , 如果没有看过,请观看上一章 这一篇&#xff0c;老蝴蝶带着大家学习一下聚合查询的相应操作. 聚合允许使用者对 es 文档进行统计分析&#xff0c;类似与…

Linux0.11 内核体系结构(八)

系列文章目录 Linux 0.11启动过程分析&#xff08;一&#xff09; Linux 0.11 fork 函数&#xff08;二&#xff09; Linux0.11 缺页处理&#xff08;三&#xff09; Linux0.11 根文件系统挂载&#xff08;四&#xff09; Linux0.11 文件打开open函数&#xff08;五&#xff09…

【AUTOSAR】【Lin通信】LinTrcv

目录 一、概述 二、功能说明 2.1 LIN收发器驱动程序操作模式 2.2 LIN收发器硬件操作模式 2.3 LIN收发器唤醒类型 2.4 LIN收发器唤醒模式 2.5 错误分类 2.5.1 开发错误 三、API接口 3.1 API定义 一、概述 该规范规定了模块LIN收发器驱动程序的功能、API和配置。它负责…

Linux基础操作 常用命令 Centos

Linux 1.Linux的引言 Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展&#xff0c;Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器操作系统方面保持…

C++编程大师之路:从入门到精通-通讯录管理系统

文章目录前言主要内容通讯录管理系统1、系统需求2、创建项目2.1 创建项目2.2添加文件3、菜单功能4、退出功能5、添加联系人5.1 设计联系人结构体5.2 设计通讯录结构体5.3 main函数中创建通讯录5.4 封装添加联系人函数5.5 测试添加联系人功能6、显示联系人6.1 封装显示联系人函数…

SpringBoot——SB整合mybatis案例(残缺版本)第四集(真*大结局)

基础登录功能 要求输入用户名和密码然后从对应的数据库员工表当中查询是否存在对应员工: 查询成功 查看接口文档 响应数据中有一个JWT令牌。 实现思路 新建一个LoginController用于接收登录请求&#xff0c;然后调用EmpService中的借口进行查询操作。 三层架构的代码 Pos…

Edge集锦没有同步按钮 - 待解决

问题 日期&#xff1a;2023年4月6日 2023年2月份左右&#xff0c;更新Edge后&#xff0c;集锦的同步选项消失了&#xff0c;右键标签页也没有添加到集锦的选项&#xff0c;如下图。 详细说明此问题&#xff0c;Edge一旦登录个人账号&#xff0c;集锦同步选项就会消失&#…

JVM内存区域面试详解

JVM 组成 JVM&#xff08;Java Virtual Machine&#xff0c;Java 虚拟机&#xff09;是 Java 程序的运行环境&#xff0c;它负责将字节码转换为机器码并执行。JVM 由以下三部分组成&#xff1a; Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;包含以…

tftp与ftp的异同

tftp与ftp的异同 TFTP&#xff08;Trivial File Transfer Protocol&#xff09;和FTP&#xff08;File Transfer Protocol&#xff09;都是用于文件传输的协议&#xff0c;但是它们有一些不同之处。 异同点&#xff1a; 功能&#xff1a;FTP提供了比TFTP更多的功能&#xff…

队列(Queue)与双端队列 (Deque)

目录 1.队列(Queue) 1.1 概念 1.2 队列的使用 1.3 队列模拟实现 1.4 循环队列 2. 双端队列 (Deque) 1.队列(Queue) 1.1 概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In …

pdf压缩文件怎么压缩最小?办公常备软件

PDF文件的大小有时会让人感到困扰&#xff0c;特别是在网络上传输和存储方面。为了解决这个问题&#xff0c;我们需要将PDF文件压缩至最小。 在进行压缩之前&#xff0c;需要检查PDF文件的分辨率和图形质量。通过降低分辨率和图形质量&#xff0c;可以显著减小文件的大小。此外…

考研数二第十二讲 复合函数、反函数、隐函数及参数方程所确定的函数的微分法与一阶微分形式的不变性

复合函数 设函数yf(u)的定义域为Du&#xff0c;值域为Mu&#xff0c;函数ug(x&#xff09;的定义域为Dx&#xff0c;值域为Mx&#xff0c;如果Mx∩Du≠&#xff0c;那么对于Mx∩Du内的任意一个x经过u&#xff1b;有唯一确定的y值与之对应&#xff0c;则变量x与y之间通过变量u形…

WT588D-32L 应用电路

1、WT588D-32L 按键控制 PWM 输出应用电路 软件设置&#xff1a; 按键控制模式。 I/O 口定义&#xff1a; 选取 I/O 口 P00、P01、P02、P03、P04、P05、P06、P07、P10、P11 作为触发口&#xff0c;在编辑 WT588D 语音工程时&#xff0c;把触发口的按键定义为可触发播放的触发方…

2000-2020年地级市进出口总额数据

2000-2020年300多个地级市进出口总额/城市进出口数据 1、来源&#xff1a;首先根据城市NJ进行整理&#xff0c;对缺失的值查找单个城市NJ、城市统计GB和各省NJ进行填补 2、指标&#xff1a;地级市进出口总额 3、单位&#xff1a;万美元 4、范围&#xff1a;300个地级市 5、缺失…
最新文章