当前位置: 首页 > news >正文

Java 集合:泛型、Set 集合及其实现类详解

参考资料:java入门到飞起

Java;泛型;Set 集合;TreeSet;HashSet;数据结构

一、引言

在 Java 编程中,集合框架是一个重要的组成部分,它提供了丰富的数据结构和算法来存储和操作数据。泛型与 Set 集合及其实现类在 Java 集合框架中占据着关键位置,对于提高代码的类型安全性、优化数据存储和检索具有重要意义。

二、泛型

2.1 泛型概述

2.1.1 泛型的介绍

泛型是 JDK 5 中引入的重要特性,它为 Java 语言增添了编译时类型安全检测机制。通过使用泛型,程序员可以在编译阶段就发现类型不匹配的错误,而不是在运行时才出现难以调试的错误,从而提高了程序的稳定性和可靠性。

2.1.2 泛型的好处
  1. 提前检测问题:将原本在运行时期可能出现的类型问题提前到编译期间,大大降低了运行时错误的发生概率,提高了程序的健壮性。
  2. 避免强制类型转换:使用泛型后,代码在获取和操作集合元素时无需进行显式的强制类型转换,使代码更加简洁、易读,同时也减少了因强制类型转换不当而引发的ClassCastException异常。
2.1.3 泛型的定义格式
  1. 单类型格式<类型>用于指定一种类型,尖括号内通常使用单个字母表示,常见的如<E>(表示元素类型,Element 的缩写)、<T>(表示一般类型,Type 的缩写)。例如,List<E>表示一个存储E类型元素的列表。
  2. 多类型格式<类型1,类型2…>用于指定多种类型,不同类型之间用逗号隔开,如<E,T><K,V>(常用于表示键值对中的键类型K和值类型V)。例如,Map<K, V>表示一个存储键值对的映射,其中键的类型为K,值的类型为V

三、Set 集合

3.1Set 集合概述和特点【应用】

Set 集合是 Java 集合框架中的一种重要类型,具有以下显著特点:

  1. 不允许重复元素:Set 集合中不能存储重复的元素,这使得 Set 集合在需要确保元素唯一性的场景中非常有用,例如去重操作。
  2. 无索引:Set 集合没有索引,这意味着无法像列表那样通过索引来访问元素,也不能使用普通的 for 循环进行遍历。

3.2Set 集合的使用【应用】

以下代码展示了如何使用 Set 集合存储字符串并进行遍历:

public class MySet1 {public static void main(String[] args) {//创建集合对象Set<String> set = new TreeSet<>();//添加元素set.add("ccc");set.add("aaa");set.add("aaa");set.add("bbb");//Set集合是没有索引的,所以不能使用通过索引获取元素的方法//遍历集合Iterator<String> it = set.iterator();while (it.hasNext()) {String s = it.next();System.out.println(s);}// 如果需要删除元素,可以使用 iterator.remove()// 注意:不能直接使用 set.remove(),否则会抛出 ConcurrentModificationException// 示例:删除 "aaa"iterator = set.iterator(); // 重新获取迭代器while (iterator.hasNext()) {String s = iterator.next();if (s.equals("aaa")) {iterator.remove(); // 安全删除}}System.out.println("-----------------------------------");for (String s : set) {System.out.println(s);}}
}

在上述代码中,首先创建了一个TreeSet对象(TreeSetSet接口的一个实现类),然后向集合中添加了一些字符串元素,其中包含重复的元素 “aaa”。通过Iterator迭代器和增强 for 循环两种方式对集合进行遍历,输出集合中的元素。可以看到,重复元素 “aaa” 只出现了一次,体现了 Set 集合不允许重复元素的特性。

Iterator迭代器介绍

Iterator(迭代器)是Java集合框架中的一个重要接口,用于遍历集合中的元素。它提供了一种统一的方式来访问集合元素,而不需要暴露集合的内部表示。核心方法如下:

  • boolean hasNext():判断是否还有下一个元素
  • E next():返回下一个元素
  • void remove():删除上次调用next()返回的元素(可选操作)

关键点​

  1. Set 的迭代器只能单向遍历(hasNext() + next()),不能反向遍历。
  2. 删除元素必须用 iterator.remove(),直接使用 set.remove() 会抛出 ConcurrentModificationException
  3. Set 是无序的​(除非使用 LinkedHashSet 或 TreeSet),所以遍历顺序可能与插入顺序不同。
  4. 增强 for 循环底层也是用 Iterator,但不能在遍历时删除元素(除非用 Iterator)。

四、TreeSet 集合

4.1 TreeSet 集合概述和特点【应用】

TreeSetSet接口的一个实现类,除了具备 Set 集合的基本特点(不允许重复元素、无索引)外,还具有以下特性:

  1. 元素排序TreeSet可以将存储的元素按照特定规则进行排序。
    • 自然排序:通过TreeSet()无参构造方法创建的集合,会根据元素的自然排序进行排序。所谓自然排序,是指元素所属的类实现Comparable接口,并在其中定义比较规则。
    • 比较器排序:通过TreeSet(Comparator comparator)带参构造方法创建的集合,会根据指定的比较器进行排序。比较器是一个实现了Comparator接口的对象,在其compare(T o1, T o2)方法中定义元素的比较规则。

4.2 TreeSet 集合基本使用【应用】

以下代码展示了如何使用TreeSet集合存储Integer类型的整数并进行遍历:

public class TreeSetDemo01 {public static void main(String[] args) {//创建集合对象TreeSet<Integer> ts = new TreeSet<Integer>();//添加元素ts.add(10);ts.add(40);ts.add(30);ts.add(50);ts.add(20);ts.add(30);//遍历集合for (Integer i : ts) {System.out.println(i);}}
}

在上述代码中,创建了一个TreeSet集合对象ts,并向其中添加了一些Integer类型的整数,包括重复的数字 30。通过增强 for 循环遍历集合时,输出的元素按照从小到大的顺序排列,体现了TreeSet集合的排序特性,并且重复元素只保留了一个。

4.3 自然排序 Comparable 的使用【应用】

4.3.1 案例需求

存储学生对象并遍历,使用TreeSet集合的无参构造方法,要求按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序。

4.3.2 实现步骤
  1. 创建 TreeSet 集合:使用空参构造创建TreeSet集合,因为无参构造方法使用自然排序对元素进行排序。
  2. 实现 Comparable 接口:自定义的Student类需要实现Comparable接口,通过重写compareTo(T o)方法来定义元素的比较规则。
  3. 重写 compareTo 方法:在重写方法时,要按照指定的主要条件(年龄从小到大)和次要条件(年龄相同时按姓名字母顺序)编写比较逻辑。
4.3.3 代码实现

学生类

快速构建构造方法:快捷键:Alt+Insert

public class Student implements Comparable<Student>{private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Student o) {//按照对象的年龄进行排序//主要判断条件: 按照年龄从小到大排序int result = this.age - o.age;//次要判断条件: 年龄相同时,按照姓名的字母顺序排序result = result == 0? this.name.compareTo(o.getName()) : result;return result;}
}
PS:Comparable是干嘛的?

Comparable 是 Java 提供的一个 ​泛型接口,定义在 java.lang 包中,它只有一个方法:

public interface Comparable<T> {int compareTo(T o);  // 比较当前对象与参数对象 o 的大小
}

​为什么 Student 类要实现 Comparable<Student>?​​

如果 Student 类实现了 Comparable<Student>,那么:

  1. ​可以调用 Collections.sort() 或 Arrays.sort() 对 Student 对象列表进行排序​:
    List<Student> students = new ArrayList<>();
    // 添加学生对象...
    Collections.sort(students);  // 自动调用 compareTo 方法排序
  2. ​可以在 TreeSet 或 TreeMap 中自动排序​(因为它们依赖 Comparable 或 Comparator 进行排序)。
  3. ​可以方便地进行对象比较,例如在 if (student1.compareTo(student2) > 0) 这样的逻辑中使用。

​如何实现 Comparable<Student>?​​

你需要在 Student 类中 ​重写 compareTo() 方法,定义如何比较两个 Student 对象。例如:

public class Student implements Comparable<Student> {private String name;private int age;private double score;// 构造方法、getter/setter 省略...@Overridepublic int compareTo(Student other) {// 按分数升序排序return Double.compare(this.score, other.score);// 或者按姓名升序排序(字符串比较)// return this.name.compareTo(other.name);// 或者按年龄降序排序(注意负号)// return Integer.compare(other.age, this.age);}
}

​示例说明​:

  • Double.compare(this.score, other.score):比较两个学生的分数(升序)。
  • this.name.compareTo(other.name):按姓名字典序排序(升序)。
  • Integer.compare(other.age, this.age):按年龄降序排序(因为 other.age - this.age 是降序逻辑)。

测试类

public class MyTreeSet2 {public static void main(String[] args) {//创建集合对象TreeSet<Student> ts = new TreeSet<>();//创建学生对象Student s1 = new Student("zhangsan", 28);Student s2 = new Student("lisi", 27);Student s3 = new Student("wangwu", 29);Student s4 = new Student("zhaoliu", 28);Student s5 = new Student("qianqi", 30);//把学生添加到集合ts.add(s1);ts.add(s2);ts.add(s3);ts.add(s4);ts.add(s5);//遍历集合for (Student student : ts) {System.out.println(student);}}
}

在上述代码中,Student类实现了Comparable接口,并在compareTo方法中定义了排序规则。在测试类中,创建了TreeSet集合并添加了多个学生对象,遍历集合时,学生对象按照年龄从小到大排序,年龄相同的按照姓名字母顺序排序。

4.4 比较器排序 Comparator 的使用【应用】

4.4.1 案例需求

存储老师对象并遍历,创建TreeSet集合使用带参构造方法,要求按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序。

4.4.2 实现步骤
  1. 使用带参构造创建 TreeSet 集合TreeSet集合的带参构造方法使用比较器排序对元素进行排序。
  2. 实现 Comparator 接口:让集合构造方法接收一个实现了Comparator接口的对象,在其compare(T o1, T o2)方法中定义元素的比较规则。
  3. 重写 compare 方法:按照指定的主要条件和次要条件编写比较逻辑。
4.4.3 代码实现

老师类

public class Teacher {private String name;private int age;public Teacher() {}public Teacher(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Teacher{" +"name='" + name + '\'' +", age=" + age +'}';}
}

测试类

public class MyTreeSet4 {public static void main(String[] args) {//创建集合对象TreeSet<Teacher> ts = new TreeSet<>(new Comparator<Teacher>() {@Overridepublic int compare(Teacher o1, Teacher o2) {//o1表示现在要存入的那个元素//o2表示已经存入到集合中的元素//主要条件int result = o1.getAge() - o2.getAge();//次要条件result = result == 0? o1.getName().compareTo(o2.getName()) : result;return result;}});//创建老师对象Teacher t1 = new Teacher("zhangsan", 23);Teacher t2 = new Teacher("lisi", 22);Teacher t3 = new Teacher("wangwu", 24);Teacher t4 = new Teacher("zhaoliu", 24);//把老师添加到集合ts.add(t1);ts.add(t2);ts.add(t3);ts.add(t4);//遍历集合for (Teacher teacher : ts) {System.out.println(teacher);}}
}

在上述代码中,测试类通过TreeSet的带参构造方法传入一个匿名内部类,该内部类实现了Comparator接口,并在compare方法中定义了老师对象的比较规则。在创建老师对象并添加到集合后,遍历集合时老师对象按照年龄和姓名的指定规则进行排序。

4.5 两种比较方式总结

  1. 自然排序:自定义类实现Comparable接口,重写compareTo方法,集合根据该方法的返回值进行排序。这种方式适用于类本身具有自然的比较顺序,并且在多个地方都需要使用相同排序规则的情况。
  2. 比较器排序:创建TreeSet对象时传递一个实现了Comparator接口的对象,重写compare方法,集合依据此方法的返回值进行排序。当自然排序不能满足特定需求,或者需要针对不同场景使用不同排序规则时,比较器排序更为灵活。
  3. 使用选择:在实际使用中,通常优先考虑自然排序。当自然排序无法满足需求时,必须使用比较器排序来实现自定义的排序逻辑。

相关文章:

Java 集合:泛型、Set 集合及其实现类详解

参考资料:java入门到飞起 Java&#xff1b;泛型&#xff1b;Set 集合&#xff1b;TreeSet&#xff1b;HashSet&#xff1b;数据结构 一、引言 在 Java 编程中&#xff0c;集合框架是一个重要的组成部分&#xff0c;它提供了丰富的数据结构和算法来存储和操作数据。泛型与 Set…...

前端基础之《Vue(8)—内置组件》

一、Vue2.0中的内置组件 1、<slot> 插槽 2、<keep-alive> 动态组件 被keep-alive所包裹的组件&#xff1a; &#xff08;1&#xff09;不会被销毁。 &#xff08;2&#xff09;还会多两个生命周期钩子&#xff1a;activated()、deactivated()。 &#xff08;3&a…...

Zookeeper是什么?基于zookeeper实现分布式锁

zookeeper听的很多&#xff0c;但实际在应用开发中用的不错&#xff0c;主要是作为中间件配合使用的&#xff0c;例如&#xff1a;Kafka。 了解zk首先需要知道它的数据结构&#xff0c;可以想象为树、文件夹目录。每个节点有基本的信息&#xff0c;例如&#xff1a;创建时间、…...

计算机网络 第二章:应用层(四)

2.6 视频流和内容分发网 对如何在因特网中实现流行的视频流服务进行概述。它们的实现方式是使用应用层协议和以像高速缓存那样方式运行的服务器。 2.6.1 因特网视频 在流式存储视频应用中&#xff0c;基础的媒体是预先录制的视频&#xff0c;例如电影、电视节目、录制好的体育…...

什么是数据库的DDL和DML,有什么区别?

数据库中的 DDL 和 DML 是两类不同的 SQL 语言&#xff0c;用于不同的数据库操作目的。以下是它们的定义、区别和具体说明&#xff1a; 1. DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09; 作用&#xff1a;定义或修改数据库的结构&#xff08;…...

HCIP实验二(OSPF网络配置与优化)

一.拓扑图与题目 1.R5为ISP&#xff0c;其上只能配置IP地址; R5与其他所有直连设备间均使用公有IP;环回地址为100.1.1.1/3 2.R4设备为企业出口路由器 3.整个0SPF环境IP基于172.16.0.0/16划分 4.所有设备均可访问R5的环回; 5.减少LSA的更新里&#xff0c;加快收敛&#xff0…...

第十六讲、isaaclab中使用任务空间(task-space)控制

0 前言 官方教程&#xff1a;https://isaac-sim.github.io/IsaacLab/main/source/tutorials/05_controllers/run_diff_ik.html IsaacsimIsaaclab安装&#xff1a;https://blog.csdn.net/m0_47719040/article/details/146389391?spm1001.2014.3001.5502 在之前的教程中我们利…...

无人船 | 图解基于PID控制的路径跟踪算法(以欠驱动无人艇Otter为例)

目录 1 PID控制的三大组成1.1 比例控制作用1.2 积分控制作用1.3 微分控制作用 2 基于欠驱动运动学的PID控制3 跟踪效果分析 1 PID控制的三大组成 PID控制律的定量表达请参考无人船 | 图解基于PID控制的路径跟踪算法(以全驱动无人艇WAMV为例)&#xff0c;本文进一步介绍PID每个…...

【C++】13.list的模拟实现

首先&#xff0c;我们需要把链表管理起来&#xff0c;也就是把一个个节点管理起来&#xff0c;但是每个节点的信息我们也需要管理&#xff0c;例如节点的前驱指针和后驱指针&#xff0c;以及节点的值&#xff0c;所以我们这里先封装两个类来管理节点和链表。 namespace Ro {te…...

Springfox + Swagger 的完整配置及同类框架对比的详细说明

以下是 Springfox Swagger 的完整配置及同类框架对比的详细说明&#xff1a; 一、Springfox Swagger 配置详解 1. 添加依赖 在 pom.xml 中添加以下依赖&#xff1a; <!-- Springfox Swagger 2 --> <dependency><groupId>io.springfox</groupId>…...

实现支付宝沙箱环境搭建

1.介绍 在业务开发的过程中&#xff0c;有时会涉及到一些支付相关的功能&#xff0c;这个时候就需要接入第三方支付接口&#xff0c;而由于开发中需要不断进行测试&#xff0c;使用真实的账号进行支付就有些不值得&#xff0c;所以支付宝为我们提供了第三方SDK&#xff0c;供我…...

element-ui transfer 组件源码分享

transfer 穿梭框组件源码简单分享&#xff0c;主要从以下几个方面&#xff1a; 1、transfer 组件页面结构。 2、transfer 组件属性。 3、transfer 组件方法。 4、transfer 组件事件。 5、transfer slot 挂载。 一、组件页面结构。 二、组件属性。 2.1 value / v-model 绑…...

【最新版】沃德代驾源码全开源+前端uniapp

一.系统介绍 基于ThinkPHPUniapp开发的代驾软件。系统源码全开源&#xff0c;代驾软件的主要功能包括预约代驾、在线抢单、一键定位、在线支付、车主登记和代驾司机实名登记等‌。用户可以通过小程序预约代驾服务&#xff0c;系统会估算代驾价格并推送附近代驾司机供用户选择&…...

【无标题】spark安装部署

Spark 4种部署模式的另外2种&#xff0c;分别是Yarn、windows模式。 二、 实验准备工作&#xff1a; 1. 三台linux虚拟机 2. spark的压缩包 三、 实验步骤 Spark-yarn 1. 解压缩文件&#xff0c;并重命名为spark-yarn。 tar zxvf spark-3.0.0-bin-hadoop3.2.tgz mv spar…...

【异常解决】Spring Boot 返回排序后的 Map 但前端接收顺序不对的解决方案

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

中兴云电脑W102D_晶晨S905X2_2+16G_mt7661无线_安卓9.0_线刷固件包

中兴云电脑W102D_晶晨S905X2_216G_mt7661无线_安卓9.0_线刷固件包 准备工作&#xff1a; 工具和设备在开始刷机之前&#xff0c;确保你已经准备好以下物品&#xff1a;双公头USB线&#xff1a;选择一根30-50厘米长的USB线&#xff0c;长度适中&#xff0c;方便操作&#xff0c;…...

深度学习激活函数与损失函数全解析:从Sigmoid到交叉熵的数学原理与实践应用

目录 前言一、sigmoid 及导数求导二、tanh 三、ReLU 四、Leaky Relu五、 Prelu六、Softmax七、ELU八、极大似然估计与交叉熵损失函数8.1 极大似然估计与交叉熵损失函数算法理论8.1.1 伯努利分布8.1.2 二项分布8.1.3 极大似然估计总结 前言 书接上文 PaddlePaddle线性回归详解…...

Kotlin中实现静态

实现“类似静态” class Util {fun action1() {}//使用companion object关键字会在类的内部创建一个伴生类&#xff0c;每个类都允许有一个伴生类//而action2作为伴生类中的方法&#xff0c;可以直接通过类名进行调用&#xff0c;实现类似“静态”的效果companion object {fun…...

Android 回显

//执行 private void playRunTime(String cmd) throws Exception { Process p Runtime.getRuntime().exec(cmd); InputStream is p.getInputStream(); BufferedReader reader new BufferedReader(new InputStreamReader(is)); String l…...

基于大模型的胃食管反流病全周期预测与诊疗方案研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、胃食管反流病概述 2.1 疾病定义与分类 2.2 流行病学特征 2.3 发病机制 三、大模型技术原理与应用基础 3.1 大模型简介 3.2 适用于胃食管反流病预测的大模型类型 3.3 数据收集与预处理 四、大模型在胃食…...

class文件(二)

字段表集合&#xff1a; 用于描述接口或类中声明的变量 包括类级变量以及实例级变量&#xff0c;不包括方法内部声明的局部变量 字段的修饰符包括&#xff1a; 作用域&#xff1a;public、private、protected修饰符 实例还是类变量&#xff1a;static 可变性&#xff1a;fin…...

Django 实现电影推荐系统:从搭建到功能完善(附源码)

前言&#xff1a;本文将详细介绍如何使用 Django 构建一个电影推荐系统&#xff0c;涵盖项目的搭建、数据库设计、视图函数编写、模板渲染以及用户认证等多个方面。&#x1f517;软件安装、环境准备 ❤ 【作者主页—&#x1f4da;阅读更多优质文章、获取更多优质源码】 目录 一…...

UML2.0中的14种图简介,并借助AI生成UML图

UML2.0中的14种图简介&#xff0c;并借助AI生成UML图 绘制流程结构图&#xff08;Structure Diagrams&#xff09;1. 类图&#xff08;Class Diagram&#xff09;&#xff1a;2. 对象图&#xff08;Object Diagram&#xff09;&#xff1a;3. 组件图&#xff08;Component Diag…...

Jsoup、Selenium 和 Playwright 的含义、作用和区别

文章目录 一、Jsoup1. 含义2. 作用3. 核心特性4. 适用场景 二、Selenium1. 含义2. 作用3. 核心特性4. 适用场景 三、Playwright1. 含义2. 作用3. 核心特性4. 适用场景 四、Jsoup、Selenium 和 Playwright 的区别五、适用场景对比六、总结 Jsoup、Selenium 和 Playwright 都是用…...

服务器如何修复SSL证书错误?

修复服务器上的SSL证书错误需要根据具体错误类型逐步排查和解决。以下是常见的步骤和解决方案&#xff1a; --- ### **1. 确认错误类型** 首先检查浏览器或工具&#xff08;如OpenSSL&#xff09;报错的具体信息&#xff0c;常见错误包括&#xff1a; - **证书过期**&#xf…...

AD9253链路训练

传统方式 参考Xilinx官方文档xapp524。对于AD9253器件 - 125M采样率 - DDR模式&#xff0c;ADC器件的DCO采样时钟(500M Hz)和FCO帧时钟是中心对齐的&#xff0c;适合直接采样。但是DCO时钟不能直接被FPGA内部逻辑使用&#xff0c;需要经过BUFIO和BUFR缓冲后&#xff0c;得到s_b…...

VAE-LSTM异常检测模型复刻报告

VAE-LSTM异常检测模型复刻报告 复刻背景 本报告记录了我复刻VAE-LSTM异常检测模型的完整过程。原论文提出了一种结合变分自编码器(VAE)和长短期记忆网络(LSTM)的异常检测方法&#xff0c;用于时间序列数据。 环境配置 复刻过程中使用的环境配置如下&#xff1a; Python 3.…...

有哪些信誉良好的脂多糖供应商推荐?

一般描述 Sigma-Aldrich的脂多糖 (LPS) 是糖脂&#xff0c;由连接单个或多个脂肪酸的碳水化合物单元组合而成&#xff0c;存在于革兰氏阴性菌细胞壁中。LPS是外膜的重要组成部分&#xff0c;结构由脂质A、葡萄糖胺基磷脂、短核寡糖和O-抗原&#xff08;远端多糖&#xff09;组…...

初识分布式事务原理

事务是指符合ACID特性的操作就是事务&#xff0c;在同一个数据库中&#xff0c;如果要分别对表A和表B进行插入和删除操作&#xff0c;如果其中一个操作执行失败&#xff0c;可以对当前数据库进行回滚&#xff0c;使其回滚到执行操作前的状态&#xff0c;但是现有的系统架构都是…...

文件上传过程中出现EOFException的解决方案

文件上传过程中出现EOFException的解决方案 项目场景&#xff1a; 项目是一个考试测评系统&#xff0c;包含学生答题截图上传功能。学生通过前端界面提交答题截图&#xff0c;后端服务接收并处理这些图片文件&#xff0c;存储到MinIO对象存储中。 问题描述 前端调用’提交答…...

智能文档解析系统架构师角色定义

&#xff08;根据专业写作类任务要求&#xff0c;以系统架构师角色定义范式进行结构化呈现&#xff09; 智能文档解析系统架构师角色定义 核心技能模块 1. 多模态语义解析引擎 支持中英双语对齐的异构数据解码遵循ISO/IEC 30140标准的JSON语法校验体系 ├─ 智能字段补全机…...

翻倍缠论系统+拐点多空雷达,组合指标的使用操盘技术

如上图&#xff0c;单独从副图指标信号来说&#xff0c;在标记①的位置&#xff0c;开始出现副图指标【拐点多空雷达】转多的买点&#xff0c;红柱开始出现就是跟进做多的第一买点。 在标记②的位置&#xff0c;副图指标出现红柱持续&#xff0c;而黑色的柱线开始出现&#xf…...

Linux脏页相关参数

参数 以下是Linux内核中与脏页&#xff08;Dirty Page&#xff09;相关的各个参数及其含义的详细说明&#xff1a; 1. vm.dirty_background_bytes 含义&#xff1a;系统内存中脏页数量的绝对字节阈值&#xff08;单位为字节&#xff09;&#xff0c;当脏页达到此值时&#x…...

C++20 module下的LVGL模拟器

ARM GCC&#xff1a;14.2 Toolchain&#xff1a;MSVC 前篇&#xff1a;使用SDL2搭建简易LVGL模拟器_lvgl sdl-CSDN博客 故事 从前 我所用的单片机工程本身是为了电赛设计的&#xff0c;由于电赛的特性&#xff0c;需要使用同一个实验平台通过不同外设的“排列组合”来实现不…...

Go全栈_Golang、Gin实战、Gorm实战、Go_Socket、Redis、Elasticsearch、微服务、K8s、RabbitMQ全家桶

Go全栈全家桶包含&#xff1a; 1、【零基础入门】Go语言核心编程零基础入门实战&#xff0c;B站学习地址分享&#xff1a; 【2025年新版】Go语言教程 2、GolangGinGorm仿小米商城企业级项目实战 3、Golang仿小米商城高并发微服务实战 4、Golang RabbitMQ高并发秒杀、抢购、预约…...

STM32提高篇: 蓝牙通讯

STM32提高篇: 蓝牙通讯 一.蓝牙通讯介绍1.蓝牙技术类型 二.蓝牙协议栈1.蓝牙芯片架构2.BLE低功耗蓝牙协议栈框架 三.ESP32-C3中的蓝牙功能1.广播2.扫描3.通讯 四.发送和接收 一.蓝牙通讯介绍 蓝牙&#xff0c;是一种利用低功率无线电&#xff0c;支持设备短距离通信的无线电技…...

Linux系统编程---精灵进程与守护进程

1、前言 精灵进程又称守护进程、后台进程&#xff0c;在英文中称为 daemon 进程。精灵进程是运行在一个相对干净的环境、不受终端影响、常驻内存的进程&#xff0c;和神话中的精灵一样&#xff0c;拥有不死不灭的特性&#xff0c;长期稳定提供某种功能或服务。 在Linux系统中&a…...

《让机器人读懂你的心:情感分析技术融合奥秘》

机器人早已不再局限于执行简单机械的任务&#xff0c;人们期望它们能像人类伙伴一样&#xff0c;理解我们的喜怒哀乐&#xff0c;实现更自然、温暖的互动。情感分析技术&#xff0c;正是赋予机器人这种“理解人类情绪”能力的关键钥匙&#xff0c;它的融入将彻底革新机器人与人…...

科技项目必须进行验收测试吗?项目验收测试服务机构有哪些?

在现代科技迅猛发展的背景下&#xff0c;各类科技项目层出不穷&#xff0c;从智能硬件到软件系统&#xff0c;乃至工业自动化解决方案&#xff0c;项目的质量直接关系到企业的信誉、用户体验和市场竞争力。那么科技项目必须进行验收测试吗? 简短且明确的回答是&#xff1a;必…...

7.7 Axios+Redux+JWT全链路实战:打通前后端API通信最佳实践

Axios+Redux+JWT全链路实战:打通前后端API通信最佳实践 连接前端与后端 API:全链路数据交互设计指南 关键词:前后端通信架构设计、RESTful API 开发、Axios 请求拦截、Redux 状态管理、JWT 认证集成 1. 前后端通信架构设计原则 我们采用分层架构实现前后端解耦,通过 RES…...

零基础入门 Verilog VHDL:在线仿真与 FPGA 实战全流程指南

摘要 本文面向零基础读者,全面详解 Verilog 与 VHDL 两大主流硬件描述语言(HDL)的核心概念、典型用法及开发流程。文章在浅显易懂的语言下,配合多组可在线验证的示例代码、PlantUML 电路结构图,让你在 EDA Playground 上动手体验数字电路设计与仿真,并深入了解从 HDL 编写…...

[蓝桥杯 2025 省 Python B] 最多次数

import sysdef max_times() -> int:s sys.stdin.readline().strip()checked {l,q,b} # set()&#xff0c;不存在键值对&#xff0c;识别为set&#xff08;&#xff09;n len(s)time 0i 0while i < n - 2:sec s[i:i3]if set(sec) checked:i 3time 1else:i 1sys.…...

HTTP相关

目录 一、HTTP状态码 1XX信息性状态码 2XX成功状态码 3XX重定向状态码 4XX客户端错误状态码 5XX服务器错误状态码 二、GET/POST/PUT/DELETE请求 2.1GET 2.2POST 2.3PUT 2.4DELETE 2.5RESTful API例子 三、RESTful API 3.1什么是RESTful API 3.2RESTful API中的关…...

使用rclone迁移minio文件

文章目录 一、rclone简介1、工具说明2、核心特点2.1、跨平台支持2.2、多存储支持2.3、加密与安全2.4、增量同步与断点续传2.5、高性能 3、适用场景3.1、云存储迁移3.2、备份与同步3.3、跨云协作3.4、数据加密归档 二、常用命令1、基础操作2、文件传输3、文件管理4、高级功能5、…...

基于Java与MAVLink协议的多无人机(Cube飞控)集群控制与调度方案问题

基于Java与MAVLink协议的多无人机&#xff08;Cube飞控&#xff09;集群控制与调度方案问题 背景需求&#xff1a; 我们目前有一个基于Cube飞控的无人机系统&#xff0c;需实现以下核心功能&#xff1a; 多机通信&#xff1a;通过MAVLink协议同时连接并控制多架无人机&#x…...

Super-Vlan和MUX-Vlan的原理、配置、区别

Super-Vlan 原理 Super-Vlan也叫Aggregate-Vlan。 一般的三层交换机中&#xff0c;通常是采用一个VLAN对应一个vlanif接口的方式实现广播域之间的互通&#xff0c;这在某些情况下导致了IP地址的浪费。因为一个VLAN对应的子网中&#xff0c;子网号、子网定向广播地址、子网缺…...

数据一致性问题剖析与实践(二)——单机事务的一致性问题

一、前言 我们一般讲到单机事务&#xff0c;离不开的就是数据库&#xff0c;其最重要的定义就是&#xff0c;要么全部成功执行&#xff0c;要么全部不执行&#xff0c;保证安全的状态转化。 之前我们讨论了几种场景的一致性问题 冗余数据存储中的一致性问题分布式共识中的一…...

VUE Element-ui Message 消息提示组件自定义封装

为了让message 信息提示的更加方便快捷&#xff0c;减少不同地方的调用&#xff0c;避免代码的重复&#xff0c;特意再官方message 组件的基础上二次封装&#xff0c;使代码更加的优雅和高效。 实现效果&#xff1a; 代码组件&#xff1a; 封装成 message.js 文件&#xff0c;…...

HSTL详解

一、HSTL的基本定义 HSTL&#xff08;High-Speed Transceiver Logic&#xff09; 是一种针对高速数字电路设计的差分信号接口标准&#xff0c;主要用于高带宽、低功耗场景&#xff08;如FPGA、ASIC、高速存储器接口&#xff09;。其核心特性包括&#xff1a; 差分信号传输&…...

【PCB工艺】运放电路中的负反馈机制

通过运算方法器电路设计详细解释负反馈机制&#xff08;Negative Feedback&#xff09; 负反馈 是控制系统、电子电路、神经系统等多个领域中非常核心的概念。特别在运算放大器&#xff08;Op-Amp&#xff09;电路中&#xff0c;负反馈是实现精确控制和高稳定性的关键机制。 …...