Java-Collections、Map

目录

1.可变参数

2.Collections工具类

 

不同集合类型的排序方法比较

3.斗地主游戏

4.Map集合

4.1 Map集合概述

4.2 Map集合的常用方法

 4.3 Map集合的遍历方式

 4.4 Map集合案例—统计投票人数

4.5 HashMap

 4.6 LinkedHashMap

4.7 TreeMap

5.集合的嵌套


1.可变参数

import java.util.Arrays;public class Test {public static void main(String[] args) {// 目标:掌握可变参数的使用。// 需求:求任意个整数数据的和.sum(); // 可以不传输参数sum(10); // 可以传一个参数sum(20, 15, 32,100); // 可以传多个参数sum(new int[]{10, 20, 30, 40}); // 可以传一个数组}// 作用:接收数据非常灵活// 注意事项://    可变参数在形参列表中只能出现一个!//    可变参数必须放到形参列表的最后面!public static void sum(int...nums){// 本质:可变参数在方法内部本质就是一个数组。System.out.println("个数:" + nums.length);System.out.println("内容:" + Arrays.toString(nums));}
}

2.Collections工具类

package com.itheima.d2_collections;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;/*** 目标:掌握Collections集合工具类的使用。*/
public class CollectionsTest1 {public static void main(String[] args) {// 1、public static <T> boolean addAll(Collection<? super T> c, T...elements):为集合批量添加数据List<String> names = new ArrayList<>();Collections.addAll(names, "张无忌", "赵敏", "小昭", "殷素素");System.out.println(names);// 2、public static void shuffle(List<?> list):打乱List集合中的元素顺序Collections.shuffle(names);System.out.println(names);// 3、 public static <T> void sort(List<T> list):对List集合中的元素进行升序排序。List<Student> students = new ArrayList<>();Student s1 = new Student("赵敏", 19, 169.5);Student s2 = new Student("周芷若", 18, 171.5);Student s3 = new Student("周芷若", 18, 171.5);Student s4 = new Student("小昭", 17, 165.5);Collections.addAll(students, s1, s2, s3, s4);// 方式一:让对象的类实现Comparable接口,从写compare方法,指定大小比较规则Collections.sort(students);System.out.println(students);// 4、public static <T> void sort(List<T> list, Comparator<? super T> c):// 对List集合中元素,按照比较器对象指定的规则进行排序// 方式二:指定Comparator比较器对象,再指定比较规则。Collections.sort(students, ((o1, o2) -> Double.compare(o2.getHeight(), o1.getHeight())));System.out.println(students);}
}

 List集合是结合Collections工具类提供的sort方法进行比较,并不是自己带的比较器

有以下两种方式:

而TreeSet是自己带的比较器,并不是调用其他工具类的方法

天然有序,创建时指定排序规则

//        Set<Girl> set = new TreeSet<>(new Comparator<Girl>() {
//            @Override
//            public int compare(Girl o1, Girl o2) {
//                return Double.compare(o2.getHeight(),o1.getHeight());
//            }
//        });//排序,不重复,无索引//简化代码
Set<Girl> set = new TreeSet<>((o1, o2) -> Double.compare(o2.getHeight(),o1.getHeight()));

在Java中,对集合中的对象进行排序有两种方式

  • 实现比较器(Comparator),用匿名内部类来实现

eg:

public class Person implements Comparable<Person> {private int age;// 构造器、getter/setter略@Overridepublic int compareTo(Person other) {return this.age - other.age; // 按年龄升序排序}
}
  • 让类实现Comparable接口来实现

eg:

// 按年龄降序排序
Comparator<Person> ageDescComparator = (p1, p2) -> p2.getAge() - p1.getAge();

不同集合类型的排序方法比较

  • List集合(如ArrayList、LinkedList)

1.自然排序(在对象类中实现Comparable<对象类型>)

List<Person> personList = new ArrayList<>();
// 添加元素...
Collections.sort(personList); // 按Person的compareTo方法排序

2.定制排序(用匿名内部类写Comparator)

// 按姓名长度升序排序
Collections.sort(personList, (p1, p2) -> p1.getName().length() - p2.getName().length());// 多条件排序:先按年龄升序,年龄相同则按姓名降序
Collections.sort(personList, (p1, p2) -> {if (p1.getAge() != p2.getAge()) {return p1.getAge() - p2.getAge();} else {return p2.getName().compareTo(p1.getName());}
});
  • Array(数组)

1.基本类型数组(如int[ ]):直接使用Arrays.sort( )

int[] nums = {5, 2, 8, 1};
Arrays.sort(nums); // 结果:[1, 2, 5, 8]

 2.对象数组(如Person[ ]):

Person[] persons = new Person[3];
// 初始化数组...
Arrays.sort(persons, (p1, p2) -> p1.getName().compareTo(p2.getName())); // 按姓名升序
  • Set集合(如TreeSet、HashSet)

1.TreeSet:天然有序,创建时指定排血规则

// 按年龄升序排序
Set<Person> personSet = new TreeSet<>((p1, p2) -> p1.getAge() - p2.getAge());// 或在创建时传入Comparator
Set<Person> personSet = new TreeSet<>(Comparator.comparing(Person::getAge));

 2.HashSet:无序,若需排序需先转为 List 再排序

Set<Person> hashSet = new HashSet<>();
// 添加元素...
List<Person> sortedList = hashSet.stream().sorted(Comparator.comparing(Person::getAge)).collect(Collectors.toList());

3.斗地主游戏

Cards对象用来存储每一张牌的内容

package com.itheima.d3_collection_test;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;// Lombok : 使用注解简化get set 有参 无参构造器的写法
// IDEA >= 2022
// Lombok 是 30版本 不要用28
@Data
@NoArgsConstructor //无参构造器
@AllArgsConstructor //有参构造器
public class Card {private String number;private String color;private int size;@Overridepublic String toString() {return number + color;}
}
package com.itheima.d3_collection_test;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;//房间对象
public class Room {//1.准备一副牌private ArrayList<Card> allCards = new ArrayList<>();//2.初始化54张牌,用实例代码块初始化,创建房间对象时,为allCards集合初始化54张牌{//3.准备点数 : 个数确定,类型确定String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//4.准备花色 : 个数确定,类型确定String[] colors = {"♠", "♥", "♣", "♦"};//5.准备组装每一张牌对象int size = 0;for (String number : numbers) {size++;for (String color : colors) {//6.创建对象封装这张牌数据Card c = new Card(number,color,size);//7.加入到集合中去allCards.add(c);}}//8.单独加入大小王allCards.add(new Card("","小王",++size));allCards.add(new Card("","大王",++size));System.out.println("新牌是:" + allCards);}public void start() {//9.洗牌Collections.shuffle(allCards);System.out.println("洗牌后" + allCards);//10.发牌//定义三个玩家。List<Card> lhc = new ArrayList<>();List<Card> ryy = new ArrayList<>();List<Card> dfbb = new ArrayList<>();//发出去51张//allCards = [9♥, K♦, 8♣, 2♦, Q♦, 9♦, 8♠, 6♠, 3♠, 7♠, 4♥//            0    1   2   3   4   5   6...轮询算法for (int i = 0; i < allCards.size() - 3; i++) {Card c = allCards.get(i);if(i % 3 == 0){//请lhc接牌lhc.add(c);} else if (i % 3 == 1) {//请ryy接牌ryy.add(c);}else if (i % 3 == 2){//请dfbb接牌dfbb.add(c);}}//拿到最后三张底牌://subList截取子集合到新的集合中去List<Card> lastThreeCards = allCards.subList(allCards.size() - 3 ,allCards.size());//抢地主ryy.addAll(lastThreeCards);//11.对牌排序sortCards(lhc);sortCards(ryy);sortCards(dfbb);//12.看牌System.out.println("lhc" + lhc);System.out.println("ryy" + ryy);System.out.println("dfbb" + dfbb);}private void sortCards(List<Card> Cards) {Collections.sort(Cards, new Comparator<Card>() {@Overridepublic int compare(Card o1, Card o2) {return o2.getSize() - o1.getSize();}});}
}
package com.itheima.d3_collection_test;public class Test {public static void main(String[] args) {// 目标:完成斗地主案例的实现。'// "3","4","5","6","7","8","9","10","J","Q","K","A","2"// "♠", "♥", "♣", "♦"// 1、每张牌是一个对象,设计一个牌类。// 2、设计一个房间类,用于创建房间对象,开启游戏。Room r= new Room();r.start();}
}

4.Map集合

4.1 Map集合概述

 注意!!!集合和泛型都不支持基本类型,可以写包装类

package com.itheima.d4_map;import java.util.HashMap;
import java.util.Map;public class MapDemo1 {public static void main(String[] args) {// 目标:掌握Map集合的特点。// Map体系整体特点:HashMap : 按照键,无序,不重复,无索引。值不做要求,键和值都可以是nullMap<String, Integer> map = new HashMap<>(); // 多态 一行经典代码map.put("华为手表", 31);map.put("iphone15", 1);map.put("mete60", 10);map.put("Java入门到跑路", 2);map.put("iphone15", 31); // 后面重复的键会覆盖前面整个数据!map.put("娃娃", 1);map.put("雨伞", 10);map.put(null, null);// {Java入门到跑路=2, null=null, iphone15=31, 雨伞=10, mete60=10, 华为手表=31, 娃娃=1}System.out.println(map);}
}

 Map集合(如HashMap)的“无序”是指元素的存储顺序与插入顺序不一致:

  • 当向 Map 中添加键值对时,元素的存储位置由键的哈希值决定(通过哈希函数计算存储位置),而非插入顺序。
  • 遍历时,元素的输出顺序可能与插入顺序不同,甚至多次遍历的顺序也可能不一致。

4.2 Map集合的常用方法

为什么要先学习Map的常用方法?

  • Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用

package com.itheima.d4_map;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo2 {public static void main(String[] args) {// 目标:掌握Map集合的常用API(重点)Map<String, Integer> map = new HashMap<>();map.put("手表" ,2);map.put("iphone" ,31);map.put("huawei" ,365);map.put("iphone" ,1);map.put("娃娃", 31);map.put("Java入门",1);map.put(null,null);System.out.println(map);// map = {null=null, 手表=2, huawei=365, Java入门=1, 娃娃=31, iphone=1}// 1、获取集合的大小(元素个数)System.out.println(map.size()); // 6// 2、清空集合// map.clear();System.out.println(map);// 3、判断集合是否为空System.out.println(map.isEmpty());// 4、根据键获取对应的值(重点)System.out.println(map.get("手表"));System.out.println(map.get("手表2"));  // 如果没有这个键,返回null// 5、根据键删除整个数据,返回删除数据对应的值。(重点)System.out.println(map.remove("娃娃"));System.out.println(map);// 6、判断是否包含某个键(重点)'// map = {null=null, 手表=2, huawei=365, Java入门=1,iphone=1}System.out.println(map.containsKey("娃娃")); // falseSystem.out.println(map.containsKey("huawei")); // trueSystem.out.println(map.containsKey(null)); // trueSystem.out.println(map.containsKey("手表2")); // false// 7、判断是否包含某个值// map = {null=null, 手表=2, huawei=365, Java入门=1,iphone=1}System.out.println(map.containsValue(1)); // trueSystem.out.println(map.containsValue(365)); // trueSystem.out.println(map.containsValue("1")); // false// 8、获取Map集合的全部键,到一个Set集合中返回的// map = {null=null, 手表=2, huawei=365, Java入门=1,iphone=1}// public Set<K> keySet():Set<String> keys = map.keySet();for (String key : keys) {System.out.println(key);}// 9、获取Map集合的全部值:到一个Collection集合中返回的。Collection<Integer> values = map.values();for (Integer value : values) {System.out.println(value);}}
}

 4.3 Map集合的遍历方式

package com.itheima.d5_map_travesal;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo1 {public static void main(String[] args) {// 目标:掌握Map集合的遍历方式一:键找值Map<String, Integer> map = new HashMap<>(); // 一行经典代码map.put("iphone", 6);map.put("小米", 3);map.put("huawei", 3);map.put("诺基亚", 31);System.out.println(map);  // {huawei=3, 诺基亚=31, iphone=6, 小米=3}// 1、获取map集合的全部键Set<String> keys = map.keySet();// 2、根据键提取值for (String key : keys) {Integer value = map.get(key);System.out.println(key + "====>" + value);}}
}

 

package com.itheima.d5_map_travesal;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo2 {public static void main(String[] args) {// 目标:掌握Map集合的遍历方式二:键值对遍历(难度大点)Map<String, Integer> map = new HashMap<>();map.put("蜘蛛精", 1000);map.put("小龙女", 23);map.put("木婉清", 31);map.put("黄蓉", 35);System.out.println(map);// map = {蜘蛛精=1000, 小龙女=23, 黄蓉=35, 木婉清=31}// 1、一开始是想通过增强for直接遍历Map集合,但是无法遍历,因为键值对直接来看是不存在数据类型的。
//        for (元素类型 变量: map){
//
//        }// 2、调用Map集合的一个方法,把Map集合转换成Set集合来遍历/***    map = {蜘蛛精=1000, 小龙女=23, 黄蓉=35, 木婉清=31}*    ↓*    map.entrySet()*    ↓*    Set<Map.Entry<String, Integer>> entries = [(蜘蛛精=1000), (小龙女=23), (黄蓉=35), (木婉清=31)]*                                                    entry*/Set<Map.Entry<String, Integer>> entries = map.entrySet();for (Map.Entry<String, Integer> entry : entries) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + " ===> " + value);}}

 

package com.itheima.d5_map_travesal;import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;public class MapDemo3 {public static void main(String[] args) {// 目标:掌握Map集合的遍历方式三:LambdaMap<String, Integer> map = new HashMap<>();map.put("蜘蛛精", 1000);map.put("小龙女", 23);map.put("木婉清", 31);map.put("黄蓉", 35);System.out.println(map);// map = {蜘蛛精=1000, 小龙女=23, 黄蓉=35, 木婉清=31}map.forEach(new BiConsumer<String, Integer>() {@Overridepublic void accept(String key, Integer value) {System.out.println(key + "===>" + value);}});map.forEach((key, value) -> {System.out.println(key + "===>" + value);});}
}

 4.4 Map集合案例—统计投票人数

需要做一 一对应的数据时,我们就优先考虑用Map集合来做

package com.itheima.d5_map_travesal;import java.util.*;public class MapTest5 {//需求:统计各个景点想去的人数public static void main(String[] args) {//1.把80个学生可选择的景点造出来String[] locations = {"玉龙雪山", "伶仃岛", "三亚", "泰国"};//2.定义一个List集合,来存储80个学生所挑选的想去的景点List<String> data = new ArrayList<>();//3.用随机数来随机数组里的景点,模拟80个学生进行选择Random r = new Random();//4.遍历80个学生,每一次都像List集合中存入想去的景点for (int i = 0; i < 80; i++) {data.add(locations[r.nextInt(locations.length)]);}System.out.println(data);//5.定义一个Map集合,键存储景点,值存储想去的人数Map<String, Integer> map = new HashMap<>();//6.遍历data,向map中存入数据for (String s : data) {//7.判断map中存在data当前所遍历的景点键if (map.containsKey(s)) {//如果之前出现过,map值+1map.put(s,map.get(s) + 1);}else {//第一次添加map.put(s,1);}}map.forEach((s,n) -> System.out.println(s + "选择的人数是:" + n));}
}

4.5 HashMap

HasSet的底层就是基于HashMap实现的,HashSet中只展示键,不展示值

每次扩容为原来的两倍,关于哈希表的具体解释可以参考JAVA-异常、Collection-CSDN博客

package com.itheima.d6_map_impl;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data // Data自带了无参 + get + set + toString + hashCode + equals
@NoArgsConstructor
@AllArgsConstructor//写了有参之后data中的无参就会消失,所以写了有参就必须写无参
public class Movie implements Comparable<Movie>{private String name;private double score;private String actor;}
package com.itheima.d6_map_impl;import java.util.HashMap;
import java.util.Map;public class MapTest1 {public static void main(String[] args) {// 目标:掌握Map集合(键)去重复的机制。Map<Movie, String> map = new HashMap<>();map.put(new Movie("摔跤吧,爸爸", 9.5, "阿米尔汗"), "19:00");map.put(new Movie("三傻宝莱坞", 8.5, "阿米尔汗2"), "20:50");map.put(new Movie("三傻宝莱坞", 8.5, "阿米尔汗2"), "21:50");map.put(new Movie("阿甘正传", 7.5, "汤姆汉克斯"), "21:00");System.out.println(map);}
}

 4.6 LinkedHashMap

类似于LinkedHashSet

4.7 TreeMap

package com.itheima.d6_map_impl;import java.util.*;public class MapTest3 {public static void main(String[] args) {// 目标:了解TreeMap集合:按照你键升序排序,不重复,无索引。// 方式二:TreeMap集合肯定可以自带比较器对象指定比较规则Map<Movie, String> map = new TreeMap<>((m1, m2) -> Double.compare(m2.getScore(), m1.getScore()));// 方式一:Movie类实现Comparable接口指定比较规则map.put(new Movie("摔跤吧,爸爸", 9.5, "阿米尔汗"), "19:00");map.put(new Movie("三傻宝莱坞", 8.5, "阿米尔汗2"), "20:50");map.put(new Movie("三傻宝莱坞", 8.5, "阿米尔汗2"), "21:50");map.put(new Movie("阿甘正传", 7.5, "汤姆汉克斯"), "21:00");System.out.println(map);}
}
package com.itheima.d6_map_impl;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data // Data自带了无参 + get + set + toString + hashCode + equals
@NoArgsConstructor
@AllArgsConstructor//写了有参之后data中的无参就会消失,所以写了有参就必须写无参
public class Movie implements Comparable<Movie>{private String name;private double score;private String actor;@Overridepublic int compareTo(Movie o) {return Double.compare(this.score, o.score);}
}

5.集合的嵌套

package com.itheima.d6_map_impl;import java.util.*;public class MapTest4 {public static void main(String[] args) {// 目标:掌握集合的嵌套(重点)// 1、定义一个Map集合存储全部省份和城市信息。Map<String, List<String>> provinces = new HashMap<>();// 2、存入省份信息List<String> cities1 = new ArrayList<>();Collections.addAll(cities1, "南京市", "扬州市", "苏州市", "无锡市", "常州市");provinces.put("江苏省", cities1);List<String> cities2 = new ArrayList<>();Collections.addAll(cities2, "武汉市", "襄阳市", "孝感市", "十堰市", "宜昌市");provinces.put("湖北省", cities2);List<String> cities3 = new ArrayList<>();Collections.addAll(cities3, "石家庄市", "唐山市", "邢台市", "保定市", "张家口市");provinces.put("河北省", cities3);System.out.println(provinces);List<String> hbcities = provinces.get("湖北省");for (String hbcity : hbcities) {System.out.println(hbcity);}}
}

 

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

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

相关文章

开源界迎来重磅核弹!月之暗面开源了自家最新模型 K2

1. 模型简介 Kimi K2 是一款尖端专家混合&#xff08;MoE&#xff09;语言模型&#xff0c;激活参数量达320亿&#xff0c;总参数量突破1万亿。该模型采用Muon优化器训练&#xff0c;在前沿知识、推理和编程任务中展现出卓越性能&#xff0c;同时针对智能体能力进行了精细化优…

Grok-4 发布会图文总结

文章目录00:00 - Grok-4&#xff1a;以“全球最智能 AI”之名突破性登场06:41 - 推理能力的大幅飞跃&#xff1a;100 倍训练量铸就的“博士级”大脑13:25 - 工具使用能力的革新&#xff1a;从“原始”到深度整合20:06 - 直面强化学习的挑战与 AI 的终极测试26:45 - 应用演示&am…

AI产品经理面试宝典第1天:机器学习核心算法全景解析

面试官:请解释什么是监督学习?能否用生活案例说明其运作逻辑? 监督学习如同教孩子识字的过程。父母指着"苹果"图片反复说"这是苹果"(带标签的训练数据),孩子逐渐建立"红色圆形水果=苹果"的认知模型(算法生成)。当孩子看到新图片时,模型…

前端开发技术栈概览

前端开发技术栈概览 前端开发是创建Web页面或app等前端界面给用户的过程&#xff0c;从简单的静态页面到复杂的单页应用(SPA)&#xff0c;前端技术栈经历了快速的演进。以下是前端开发所需掌握的核心技术分类及相关知识点&#xff1a; 1. 基础层&#xff1a;HTML、CSS、JavaScr…

详解Kafka通过幂等性实现分区消息不重复的机制

一、核心机制&#xff1a;PID与序列号1. Producer ID (PID)唯一标识&#xff1a;每个生产者实例启动时&#xff0c;由Kafka Broker分配一个全局唯一的PID&#xff0c;用于标识消息来源。持久化存储&#xff1a;PID由Broker持久化保存&#xff0c;确保生产者重启后仍能追踪历史状…

压缩包方式在centos7版本上安装mysql8.0

使用tar命令解压 tar -zxvf mysql-8.0.32-el7-x86_64.tar.gz -C /usr/local/到/usr/local/修改解压后的文件名为mysql 创建mysql用户组和用户&#xff0c;自己在mysql下面创建data目录存储信息&#xff0c;把权限交给mysql这个用户 groupadd mysql useradd -r -g mysql mysql c…

使用ansible给被管理节点安装docker

在跳板机上安装ansible,再通过ansible的playbook,给被管理节点安装docker。 跳板机配置 实验环境 华为云上按需开两台2核2G的Ubuntu的ECS&#xff1b;2台公网IP为5Mbit/s&#xff0c;按需按流量&#xff1b;2台服务器在一个子网内;跳板机和被管理节点主机分别挂不通的安全组 在…

《Java EE与中间件》实验三 基于Spring Boot框架的购物车

目 录 一、实验目的和要求 二、实验实现思路及步骤 1、实验思路 2、实验步骤 3、实验方案 三、主要开发工具 四、实验效果及实现代码 1、购物车数据库构建实现 &#xff08;1&#xff09;建立javaee-project数据库 &#xff08;2&#xff09;建立t_cart数据表 &…

DAS3D: Dual-modality Anomaly Synthesis for 3D Anomaly Detection 论文精读

题目&#xff1a;DAS3D: Dual-modality Anomaly Synthesis for 3D Anomaly Detection 题目&#xff1a;DAS3D&#xff1a;用于三维异常检测的双模态异常合成 论文地址&#xff1a;ECCVW 2024 2410 Dual-modality 双模态 Anomaly Synthesis 异常合成 for 3D Anomaly Detection…

EasyCVR视频汇聚平台国标接入设备TCP主动播放失败排查指南

部分客户现场的下级平台通过国标级联接入安防监控系统EasyCVR后&#xff0c;只能通过TCP主动的播放方式进行播放&#xff08;并不是所有下级平台都支持tcp主动播放&#xff0c;模式需下级平台支持&#xff09;&#xff0c;但是有些平台刚接入的时候发现不能播放。核心原因分析&…

linux打包指令和移动指令

在Linux中&#xff0c;常用的文件夹打包命令是 tar&#xff0c;它可以将文件夹压缩打包成 .tar、.tar.gz、.tar.bz2 等格式的文件。以下是具体用法&#xff1a; 1. 基础打包&#xff08;不压缩&#xff0c;生成 .tar 文件&#xff09; 将文件夹 folder 打包为 folder.tar&#…

神经符号AI:结合深度学习和符号逻辑的下一代AI

神经符号AI&#xff1a;结合深度学习和符号逻辑的下一代AI当AI医生解释诊断时&#xff0c;它不仅能指出医学影像中的异常像素模式&#xff0c;还能引用临床指南中的第三条第二款&#xff0c;推演病理发展的逻辑链条——这正是神经符号AI赋予机器的“理性之光”。2025年初&#…

SpringBoot JWT

jsonwebtoken 引依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.12.3</version></dependency> 测试一下&#xff0c;jwt是2个带逗号的3段字符串 官网参考&#xff1a;JSON …

读取QPS 10万,写入QPS 1000,如何设计系统架构?

你是否也曾深陷在臃肿的领域模型&#xff08;Domain Model&#xff09;的泥潭&#xff0c;一个 User 或 Order 实体类&#xff0c;既要处理复杂的业务逻辑和数据校验&#xff0c;又要承载各种为前端展示而生的DTO转换&#xff0c;导致模型越来越胖&#xff0c;读写性能相互掣肘…

UE5 Rotate 3 Axis In One Material

首先没有用旋转矩阵&#xff0c;我用过旋转矩阵&#xff0c;传进去的角度旋转的角度和欧拉角传进去角度旋转出来的不一样&#xff0c;就没有用最后用的RotateAboutAxis&#xff0c;这个玩意儿研究老半天&#xff0c;只能转一个轴&#xff0c;角度和欧拉角的一样的最后研究出Rot…

计算机网络实验——访问H3C网络设备

一、实验目的1. 熟悉H3C路由器的开机界面&#xff1b;2. 通过Console端口实现对上电的H3C路由器的第一次本地访问&#xff1b;3. 掌握H3C设备命名等几个常用指令&#xff1b;4. 掌握如何将H3C设备配置为Telnet服务器&#xff1b;5. 掌握如何将H3C设备配置为Telnet客户端并实现访…

【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(四)

&#x1f525;个人主页&#xff1a;艾莉丝努力练剑 ❄专栏传送门&#xff1a;《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题 &#x1f349;学习方向&#xff1a;C/C方向 ⭐️人生格言&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为…

Vim 指令

Vim 是一款功能强大但学习曲线陡峭的文本编辑器&#xff0c;核心在于其模式化操作。掌握常用指令能极大提升效率。以下是指令分类整理&#xff1a;一、核心模式切换 (必须掌握&#xff01;)i&#xff1a;在光标前进入 插入模式 (Insert Mode)a&#xff1a;在光标后进入 插入模式…

vue2中使用xgplayer播放流视频

1、官网 2、安装后无法播放时&#xff0c;经测试&#xff0c;需要降低版本 "xgplayer-hls": "2.2.2","xgplayer": "2.31.6"改为以上版本可以正常播放 3、完整使用 &#xff08;1&#xff09;引入 import xgplayer import hlsjsPlayer…

Jmeter进阶篇(35)完美解决Jmeter转换HTML报告报错“Begin size 0 is not equal to fixed size 5”

今天博主在使用Jmeter运行完压测,使用生成的csv文件,运行以下命令: C:\apache-jmeter-5.2.1\bin>jmeter -g C:\res.csv -o C:\report生成HTML报告时,发现报错“Begin size 0 is not equal to fixed size 5”。 问题原因 原因是我:本地用的是JDK17,但Jmeter5.2.1仅支…