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

集合框架--Set集合详解

set集合

set 系列集合特点:

  • 无序:存或取的元素的顺序可能是一致的,也可能不是

  • 不重复:集合中不能存储重复的元素,我们可以利用这个特性去重

  • 无索引:我们不可以通过索引获得set中的每一个元素

  • Set接口没有在Collection接口之外添加新方法,只是改变了一些方法的行为语义。例如,add方法对于已存在的元素将返回false

    • HashSet:无序,不重复,无索引

    • LinkedHashSet:有序,不重复,无索引

    • TreeSet:排序、不重复、无索引

    根据源码得:HashSet底层利用了HashMapTreeSet底层用了TreeMapLinkedHashSet底层用了LinkedHashMap

代码展示:

 package com.lyc.test;​import java.util.HashSet;import java.util.LinkedHashSet;import java.util.Set;import java.util.TreeSet;​public class SetTest {public static void main(String[] args) {//创建一个set对象 无序,不重复,无索引Set<Integer> set = new HashSet<>();//一行经典代码,在开发中用得较多getSet(set);System.out.println(set);System.out.println("========================");//创建一个LinkedSet对象 有序,不重复,有索引Set<Integer> linkedSet = new LinkedHashSet<>();getSet(linkedSet);System.out.println(linkedSet);System.out.println("========================");//创建一个TreeSet对象 排序,不重复,无索引,默认升序排序Set<Integer> treeSet = new TreeSet<>();getSet(treeSet);System.out.println(treeSet);}public static void getSet(Set<Integer> set){set.add(111);set.add(222);set.add(322);set.add(444);set.add(322);set.add(345);}}

注:Set要用到的常用方法,基本上就是collection提供的,自己几乎没有额外的新增功能

HsahSet集合的底层原理

问题引入

  • 为什么添加的元素无序不重复无索引

  • 增删改查数据有什么特点?适合什么场景?

前置知识点:哈希值

  • 就是一个int类型的数值,每个Java对象都有一个哈希值

  • Java所有的对象,都可以调用Object类提供的hashCode方法,返回对象自己的hash值

    public int hashCode():返回对象的哈希值

对象哈希值的特点

  • 同一个对象多次调用hashCode()方法返回的哈希值是相同的。

  • 不同的对象,他们的哈希值一般不相同,有极小概率相同哈希碰撞

代码展示:

package com.lyc.test;​import com.lyc.pojo.Student;​public class HsahCodeTest {public static void main(String[] args) {Student s1 = new Student("张三", 18);Student s2 = new Student("lisi", 18);System.out.println(s1.hashCode());System.out.println(s2.hashCode());System.out.println(s1.equals(s2));}}
HashSet集合的底层原理
  • 基于哈希表实现

  • 哈希表是一种给增删改查数据,性能都较好的数据结构

哈希表

JDK8以前:哈希表 = 数组+链表

JDK8之后:哈希表=数组+链表+红黑树

JDK8以前HashSet集合的底层原理,基于哈希表:数组+链表

  • 创建一个默认长度16的数组,默认加载因子为0.75,数组名 table

  • 使用元素的哈希值数组长度求余计算出应存入的位置 (无序的原因

  • 判断当前位置是否为null,如果是null直接存入

    • 如果不为null,表示有元素,则调用equals方法比较 相等,则不存(不重复的原因),不相等,则存入数组(JDK8之前,新元素存入数组,占老元素位置,老元素挂下面      JDK8开始之后,新元素直接挂老元素下面)

无序就不支持索引

哈希表是一种增删改查数据性能都较好的结构。 原因:可以直接跟据哈希值来获取元素位置,进行增删改查

HashSet则继承了哈希表这种特性

问题思考:

  • 如果数组快占满了,会出现什么问题?应该怎么做?

数组快占满会让链表过长,会导致查询性能降低!

解决方法:哈希表扩容:将底层的数组长度扩大,再将原来的数据迁移进去,让其分散开来,让链表的长度短些,这样性能就得到了优化,

注:加载因子: 16 x 0.75 = 12,哈希表会在数组元素超过12的时候,哈希表就会扩容成原来的数组的两部,再将原来的数组元素转移

  • 就算是扩容了,那链表的长度还是有可能过长,该怎么解决呢?

解:JDK8开始,当链表长度超过8时,且数组长度>=64时,自动将链表转成红黑树

小结:JDK8开始后,哈希表中引入了红黑树后,进一步提高了操作数据的性能。且红黑树的左右两边,由哈希值来确定,哈希值小的在左边,哈希值大的在右边

拓展知识:数据结构(树)

二叉树:

  • 度:每一个节点的子节点数量 二叉树中,任一结点的度<=2

  • 树高:树的总层数

  • 根节点:最顶层的节点

  • 左子节点

  • 右子节点

  • 左子树

  • 右子树

常用二叉树:二叉查找树二叉排序树) 规则:小的存左边,大的存右边 ,一样的不存

  • 二叉查找树存在的问题

    • 当数据已经是排好序的,导致查询的性能与单链表一样,查询速度变慢!

  • 解决方法:平衡二叉树

    • 在满足查找二叉树的大小规则下,让树尽量矮小,以此提高查找数据的性能

    • 性质:它是一颗空树或者它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树

红黑树:就是一张可以自平衡的二叉树

红黑树是一种增删改查数据性能相对都较好的结构,(二分查找)

拓展:深入理解HashSet集合去重复的机制

HashSet集合默认不能对内容一样的两个不同对象去重复!

比如内容一样的两个学生对象存入到HashSet集合中,HashSet集合是不能去重复的

代码展示:

 
package com.lyc.test;​import com.lyc.pojo.Student;​import java.util.HashSet;import java.util.Set;​public class HashSetTest {public static void main(String[] args) {Set<Student> students = new HashSet<>();Student s1 = new Student("张三", 18);Student s2 = new Student("张三", 18);Student s3 = new Student("里斯", 18);Student s4 = new Student("王五", 18);System.out.println(s1.hashCode() == s2.hashCode());students.add(s1);students.add(s2);students.add(s3);students.add(s4);System.out.println(students);}}

如何让HashSet集合能够实现对内容一样的两个不同对象也能去重复?

只需要重写hashcode()方法,与equals()方法

代码展示:

 @Overridepublic boolean equals(Object o) {if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}​@Overridepublic int hashCode() {return Objects.hash(name, age);}

LinkedHashset集合的底层原理

特点:有序、不重复,无索引

代码展示:

 package com.lyc.test;​import java.util.LinkedHashSet;import java.util.Set;​//测试LinkedHashSet集合public class LinkedHashSetTest {public static void main(String[] args) {Set<Integer> set = new LinkedHashSet<>();set.add(111);set.add(233);set.add(444);set.add(333);set.add(222);System.out.println(set);}}

LinkedHashSet底层原理

  • 依然是基于哈希表(数组+链表+红黑树)实现的

  • 但是,它的每一个元素都额外的多了一个双链表的机制记录他前后元素的位置

过程解析:当存入第一个元素时,依旧是使用哈希值去求余数组长度,但找到位置之后,因为它的每一个元素都多了一个双链表记录机制,所以现在他的首地址和尾地址都是指向它自己的,

当第二个元素存储进来后,第二个元素会将自己的地址送给第一个元素,这样我们第一个元素就指向了第二个元素,同时第一个元素的地址也被拿到第二个元素中,接着第二个元素就变成了最后一个元素,同时也拿到了尾地址变量,

当第三个元素存储进来后,会通过尾地址变量来找到第二个元素,将自己的地址与第二个元素的地址进行交换,这样,第三个元素成为了最后一个元素,拿到了尾地址变量,以此类推,

这样,再查询数据的时候,就会按照双链表的顺序查找,所以LinkedHashSet是有序

因为还是基于哈希表实现的,所以LinkedHashSet的增删改查性能也是不错的

缺点:因为LinkedHashSet的每一个元素除了要记住自己的地址,还需要去记住上一个元素与下一个元素的地址,里面记录的信息特别多,所以占用的内存较大,它是通过占用内存来实现自己有序这一特点的

TreeSet集合的底层原理

TreeSet

  • 特点:排序(默认升序排序,按照元素的大小,由大到小排序),不重复,无索引

  • 底层是基于红黑树实现的排序

代码展示:

 Set<Integer> treeSet = new TreeSet<>();getSet(treeSet);public static void getSet(Set<Integer> set){set.add(111);set.add(222);set.add(322);set.add(444);set.add(322);set.add(345);}

注意:

  • 对于数值类型:Integer,Double,默认按照数值本身的大小来进行升序排序

  • 对于字符串类型:默认按照首字符的编号升序排序

  • 对于自定义类型对象,TreeSet默认是无法直接排序的

代码展示:

 public class TreeSetTest {public static void main(String[] args) {TreeSet<Movie> treeSet = new TreeSet<>();treeSet.add(new Movie("《三傻大闹宝莱坞》", 1995, "罗三佑"));treeSet.add(new Movie("《大傻大闹宝莱坞》", 1996, "罗二佑"));treeSet.add(new Movie("《二傻大闹宝莱坞》", 1997, "罗大佑"));System.out.println(treeSet);}}

效果:报错: java.lang.ClassCastException

说明我们要自定义排序规则,这样TreeSet可以按照我们的排序规则来为我们排序

自定义排序规则:

  • TreeSet集合存储自定义类型的对象时,必须指定排序规则,支持如下两种方式来制定比较规则

    • 方式一:让自定义的类实现Comparable接口,重写里面的compareTo方法来制定比较规则

    • 方式二:通过调用TreeSet集合有参构造器,可以设置Compareto对象(比较器对象,用于指定比较规则)

    方式一代码展示:

     public class Movie implements Comparable<Movie>{private String name;private int date;private String actor;​@Overridepublic int compareTo(Movie o) {//如果认为左边对象大于右边对象,返回正整数//如果认为左边对象小于右边对象,返回负整数//如果认为左边对象等于右边对象,返回0return this.getDate()-o.getDate();}}​​public static void main(String[] args) {TreeSet<Movie> treeSet = new TreeSet<>();treeSet.add(new Movie("《三傻大闹宝莱坞》", 1995, "罗三佑"));treeSet.add(new Movie("《大傻大闹宝莱坞》", 1996, "罗二佑"));treeSet.add(new Movie("《二傻大闹宝莱坞》", 1997, "罗大佑"));System.out.println(treeSet);}

方式二代码展示:

     public static void main(String[] args) {//        Set<Movie> treeSet = new TreeSet<>(new Comparator<Movie>() {//            @Override//            public int compare(Movie o1, Movie o2) {//                //按照日期进行排序//                return o2.getDate()-o1.getDate();
//                o1-o2为升序,o2-o1为降序//            }////        });//lambda表达式简化Set<Movie> treeSet = new TreeSet<>((o1,o2)->o2.getDate()-o1.getDate());treeSet.add(new Movie("《三傻大闹宝莱坞》", 1995, "罗三佑"));treeSet.add(new Movie("《大傻大闹宝莱坞》", 1996, "罗二佑"));treeSet.add(new Movie("《二傻大闹宝莱坞》", 1997, "罗大佑"));System.out.println(treeSet);}}
 

两种方式中,关于返回值得规则:

  • 如果认为第一个元素>第二个元素 返回正整数

  • 如果认为第一个元素<第二个元素 返回负整数

  • 如果认为第一个元素=第二个元素 返回0,此时TreeSet集合只会保留同一个元素,认为两者重复

注:如果类本身有实现Comparable接口,TreeSet集合同时也自带比较器,默认使用集合自带的比较器排序

以上就是关于set集合我自己的理解,希望对大家有所帮助!

相关文章:

集合框架--Set集合详解

set集合 set 系列集合特点&#xff1a; 无序&#xff1a;存或取的元素的顺序可能是一致的&#xff0c;也可能不是 不重复&#xff1a;集合中不能存储重复的元素&#xff0c;我们可以利用这个特性去重 无索引&#xff1a;我们不可以通过索引获得set中的每一个元素 Set接口没…...

git -- 对远程仓库的操作 -- 查看,添加(与clone对比),抓取和拉取,推送(注意点,抓取更新+合并的三种方法,解决冲突,对比),移除

目录 对远程仓库的操作 介绍 查看 (git remote) 介绍 查看详细信息 添加(git remote add) 介绍 与 git clone对比 从远程仓库中抓取与拉取 抓取(git fetch) 拉取(git pull) 推送(git push) 介绍 注意 抓取更新合并的方法 git fetch git merge 解决冲突 git …...

Hadoop的三大结构及其作用

Hadoop 的三大核心结构及其作用如下&#xff1a; 1. 分布式文件系统&#xff08;HDFS&#xff0c;Hadoop Distributed File System&#xff09; 作用&#xff1a; 海量数据存储&#xff1a;提供高吞吐量、高容错性的分布式存储能力&#xff0c;支持存储 TB/PB 级的大规模数据…...

Java学习笔记--多态:多态的介绍,多态的基本使用,多态的条件下成员的访问特点,多态的好处

目录 1.多态的介绍 2.多态的基本使用 ​编辑 3.多态的条件下成员的访问特点 3.1成员变量 3.2成员方法 4.多态的好处(为什么学多态) 1.问题描述: 2.多态方式和原始方式new对象的优缺点: 一.多态的介绍 1.前提:a.必须有子父类继承或者接口实现关系b.必须有方法的重写(没…...

使用Python设置Excel单元格边框

在数据驱动的业务场景中&#xff0c;自动化设置Excel单元格边框成为提升数据处理效率的关键环节。通过程序化控制边框样式&#xff0c;不仅能确保海量报表格式的统一性&#xff0c;还能通过粗细、虚实等视觉元素强化数据逻辑层次。当面对动态更新的分析报告时&#xff0c;代码驱…...

ES中常用的Query和查询作用,以及SpringBoot使用实例

ES中常用的Query和查询作用&#xff0c;以及 SpringBoot 使用实例 文章目录 ES中常用的Query和查询作用&#xff0c;以及 SpringBoot 使用实例MatchAllQueryTermQueryBoolQueryRangeQueryMatchQueryMultiMatchQueryTermsQueryPrefixQueryWildcardQueryRegexpQueryFuzzyQueryDis…...

美信监控易告警:功能强大

美信监控易是一款功能强大的运维管理软件&#xff0c;其告警功能在保障系统稳定运行方面发挥着重要作用。 一、运维行业背景 随着信息技术的快速发展&#xff0c;企业的信息化程度越来越高&#xff0c;对 IT 系统的依赖也日益增强。IT 系统的稳定运行直接关系到企业的业务正常…...

字符串系列一>最长回文子串

目录 题目&#xff1a;解析&#xff1a;代码&#xff1a; 题目&#xff1a; 链接: link 解析&#xff1a; 代码&#xff1a; class Solution {public String longestPalindrome(String s) {char[] ss s.toCharArray();int n ss.length;int begin 0;//返回结果的起始字符串…...

CAPL编程系列_02

1_CAPL 中的运算符 在CAPL&#xff08;CANoe/CANalyzer Programming Language&#xff09;中&#xff0c;运算符用于执行各种运算操作&#xff0c;类似于其他编程语言。CAPL中的运算符可以分为以下几类&#xff1a; 1. 算术运算符 算术运算符 加法运算符 - 减法运算符*乘法运…...

AI Agents系列之构建多智能体系统

&#x1f9e0; 向所有学习者致敬&#xff01; “学习不是装满一桶水&#xff0c;而是点燃一把火。” —— 叶芝 我的博客主页&#xff1a; https://lizheng.blog.csdn.net &#x1f310; 欢迎点击加入AI人工智能社区&#xff01; &#x1f680; 让我们一起努力&#xff0c;共创…...

FPGA学习——DE2-115开发板上设计波形发生器

1. 实验目的 掌握直接数字频率合成&#xff08;DDS&#xff09;技术的基本原理和应用。使用DE2-115开发板实现正弦波和方波的生成。使用SignalTap II嵌入式逻辑分析仪测试输出波形的离散数据。 2. 实验原理 DDS技术&#xff1a;通过相位累加器生成相位信息&#xff0c;结合波…...

51单片机实验二:数码管静态显示

目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.单个数码管显示 2.六个数码管依次从0~F变换显示 3.proteus仿真 一、实验环境与实验器材 环境&#xff1a;Keli&#xff0c;STC-ISP烧写软件,Proteus. 器材&#xff1a;TX-1C单片机&#xff08;STC89C52RC…...

JavaScript性能优化实战指南

1. 引言 JavaScript作为现代Web开发的核心技术&#xff0c;为网页带来了丰富的交互性和动态功能。然而&#xff0c;随着Web应用日益复杂&#xff0c;JavaScript代码的性能成为影响用户体验的关键因素。性能不佳的JavaScript可能导致页面加载缓慢、交互卡顿、甚至浏览器无响应&…...

POSIX 信号量(Semaphore)

一、POSIX 信号量基础 1. 什么是信号量&#xff1f; 信号量 是一种同步机制&#xff0c;用于控制对共享资源的访问。它通过一个整数值表示可用资源的数量&#xff0c;支持两种原子操作&#xff1a; P操作&#xff08;Wait&#xff09;&#xff1a;尝试减少信号量值&#xff0…...

深度学习驱动下的字符识别:挑战与创新

一、引言 1.1 研究背景 深度学习在字符识别领域具有至关重要的地位。随着信息技术的飞速发展&#xff0c;对字符识别的准确性和效率要求越来越高。字符识别作为计算机视觉领域的一个重要研究方向&#xff0c;其主要目的是将各种形式的字符转换成计算机可识别的文本信息。近年…...

DOM TreeWalker API 详解

DOM TreeWalker API 详解 TreeWalker API 是 DOM 中一个强大但相对较少使用的功能&#xff0c;它提供了一种有效遍历文档树的方式。它比手动递归或使用简单的节点导航方法更加灵活和高效。 TreeWalker 基本概念 TreeWalker 对象可以让你按照指定的过滤条件&#xff0c;以特定…...

深度学习| Deep Snake环境配置+训练+预测评估(超全面)

前言:Deep Snake是一个比较经典结合了轮廓的深度学习分割方法,但是去实际运行Deep Snake项目的时候遇到了很多问题。这篇文章把Deep Snake从环境配置、训练到预测评估,都做了详细的教程,还补充了一些相关的知识点。 Deep Snake配置和运行 Deep Snake信息数据集COCOMask-&g…...

NHANES指标推荐:CMI

文章题目&#xff1a;Association between cardiometabolic index and biological ageing among adults: a population-based study DOI&#xff1a;10.1186/s12889-025-22053-3 中文标题&#xff1a;成年人心脏代谢指数与生物衰老之间的关系&#xff1a;一项基于人群的研究 发…...

非比较排序——计数排序

计数排序 计数排序是非比较排序 void CountSort(int *a,int n) {//找范围int mina[0],maxa[0];for(int i0;i<n;i){if(a[i]<min){mina[i];}if(a[i]>max){mina[i];}}int rangemax-min1;//创建计数用的数组int *count(int *) malloc(range* sizeof(int));//计数数组的元…...

spring cloud gateway前面是否必须要有个nginx

在 **"客户端 → Nginx (前置限流) → Spring Cloud Gateway → 微服务(Sentinel 熔断限流)"** 的架构中&#xff0c;**Spring Cloud Gateway 前面并不强制要求必须有 Nginx**&#xff0c;是否需要取决于具体场景。以下是详细分析&#xff1a; 一、必须使用 Nginx 的…...

复现SCI图像增强(Toward fast, flexible, and robust low-light image enhancement.)

运行train.py报错 > File "/home/uriky/桌面/SCI-main/SCI-main/train.py", line 105, in main > train_queue torch.utils.data.DataLoader( File "/home/uriky/anaconda3/envs/AA/lib/python3.8/site-packages/torch/utils/data/dataloader.py&q…...

Linux 进程

文章目录 1. 冯诺依曼体系结构1.1 什么是冯诺依曼体系结构1.2 为什么选择冯诺依曼结构 2. 操作系统2.1 操作系统是什么2.2 操作系统如何对硬件资源进行管理2.3 计算机的层状体系结构 3. 进程3.1 进程是什么3.2 进程的相关属性3.3 在Linux中了解进程3.3.1 查看进程3.3.2 子进程由…...

TVM计算图分割--Collage

1 背景 为满足高效部署的需要&#xff0c;整合大量优化的tensor代数库和运行时做为后端成为必要之举。现在的深度学习后端可以分为两类&#xff1a;1&#xff09;算子库(operator kernel libraries)&#xff0c;为每个DL算子单独提供高效地低阶kernel实现。这些库一般也支持算…...

Liunx知识点

1./dev&#xff1a;是系统设备文件存放位置 /home&#xff1a;是普通用户存放目录 /etc&#xff1a;大部分配置文件的存放目录 /mnt&#xff1a;挂载服务需要的目录 /tmp&#xff1a;存放临时文件 /boot&#xff1a;启动文件 /root&#xff1a;root用户存放目录 /var&am…...

全栈架构设计图

以下是针对Vue前端、服务端、管理后台及数据库的架构图和交互流程设计&#xff0c;采用分层结构和模块化设计思路&#xff1a; 一、系统整体架构图 #mermaid-svg-vAtZ3R6d5Ujm6lYT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}…...

【SAP ME 42】SAP ME 性能改进

性能问题症状 可观察到以下症状:com.sap.me.production$SfcStartService#startSfc - 此 API 方法具有来自 RESOURCE_TYPE_RESOURCE 表的 SQL 查询的运行速度较慢。 com.sap.me.production$CreateSfcService#createSfc - 对于每个创建的车间作业控制,检查在计划标准配置中是否…...

《GPT-4.1深度解析:AI进化新标杆,如何重塑行业未来?》

一、GPT-4.1:AI 领域的 “全能战士” 降临 1.1 发布背景与战略意义 在 OpenAI 的技术迭代版图中,GPT-4.1 被赋予了 “承前启后” 的关键角色。它不仅是 GPT-4o 的全面升级版,更被视为向 GPT-5 过渡的重要桥梁。2025 年 4 月 15 日的发布会上,OpenAI 宣布 GPT-4.1 系列模型…...

node.js 基础

模块导入和导出 形式1 function get_jenkins(){return "jenkins....." }function test_cc(){return "4444444" }export {get_jenkins,test_cc}// 主函数 import { get_jenkins, test_cc } from ./module.js;console.log(get_jenkins()); console.log(tes…...

数据结构中的宝藏秘籍之广义表

广义表&#xff0c;也被称作列表&#xff08;Lists&#xff09;&#xff0c;是一种递归的数据结构。它就像一个神秘的盒子&#xff0c;既可以装着单个元素&#xff08;原子&#xff09;&#xff0c;也可以嵌套着其他的盒子&#xff08;子列表&#xff09;。比如广义表 (a (b c)…...

电流模式控制学习

电流模式控制 电流模式控制&#xff08;CMC&#xff09;是开关电源中广泛使用的一种控制策略&#xff0c;其核心思想是通过内环电流反馈和外环电压反馈共同调节占空比。相比电压模式控制&#xff0c;CMC具有更快的动态响应和更好的稳定性&#xff0c;但也存在一些固有缺点。 …...

汽车免拆诊断案例 | 2011款雪铁龙世嘉车刮水器偶尔自动工作

故障现象 一辆2011款雪铁龙世嘉车&#xff0c;搭载1.6 L 发动机&#xff0c;累计行驶里程约为19.8万km。车主反映&#xff0c;该车刮水器偶尔会自动工作&#xff0c;且前照灯偶尔会自动点亮。 故障诊断 接车后试车发现&#xff0c;除了上述故障现象以外&#xff0c;当用遥控器…...

#去除知乎中“盐选”付费故事

添加油猴脚本&#xff0c;去除知乎中“盐选”付费故事 // UserScript // name 盐选内容隐藏脚本 // namespace http://tampermonkey.net/ // version 0.2 // description 自动隐藏含有“盐选专栏”或“盐选”文字的回答卡片 // author YourName // mat…...

github 项目迁移到 gitee

1. 查看远程仓库地址 git remote -v 2. 修改远程仓库地址 确保 origin 指向你的 Gitee 仓库&#xff0c;如果不是&#xff0c;修改远程地址。 git remote set-url origin https://gitee.com/***/project.git 3. 查看本地分支 git branch 4. 推送所有本地分支 git p…...

2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(五级)答案 + 解析

青少年软件编程(Python)等级考试试卷(五级) 分数:100 题数:38 一、单选题(共25题,共50分) 1. 以下哪个选项不是Python中的推导式?( ) A. 列表推导式 B. 字典推导式 C. 集合推导式 D. 元组推导式 正确答案:D 答案解析:Python中的推导式包括列表推导式、字典推导式…...

[Unity]-[UI]-[Prefab] 关于UGUI UI Prefab的制作技巧

从上到下&#xff0c;从外到里&#xff0c;多用空物体套壳 这个意思就是说在使用ugui时制作prefab时&#xff0c;要遵循“从上到下&#xff0c;从外到里&#xff0c;多用空物体套壳”的原则&#xff0c;好处就是后面好修改&#xff0c;并且可以复用不同的prefab子模块。且在布…...

【Reading Notes】(8.3)Favorite Articles from 2025 March

【March】 雷军一度登顶中国首富&#xff0c;太厉害了&#xff08;2025年03月02日&#xff09; 早盘&#xff0c;小米港股一路高歌猛进&#xff0c;暴涨4%&#xff0c;股价直接飙到52港元的历史新高。这一波猛如虎的操作&#xff0c;直接把雷军的身家拉到了2980亿元&#xff0c…...

2021-11-09 C++倍数11各位和为13

缘由c函数题找数字的-编程语言-CSDN问答 void 倍数11各位和为13(int n, int& b, int* h) {//缘由https://ask.csdn.net/questions/7559803?spm1005.2025.3001.5141b !(n % 11);while(n)*h n % 10, n / 10; }int a 1, b 1, c 0, d 0;while (a < 100){倍数11各位和…...

2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(六级)真题

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;六级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 答案解析&#xff1a;https://blog.csdn.net/qq_33897084/article/details/147341458 一、单选题(共25题&#xff0c;共50分) 1. 在tkinter的…...

Linux简介

一、Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff0c;是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CP…...

每天学一个 Linux 命令(22):pwd

​​可访问网站查看,视觉品味拉满: http://www.616vip.cn/22/index.html pwd 命令用于打印当前工作目录(Print Working Directory)的绝对路径,帮助用户快速确认自己在文件系统中的位置。虽然简单,但它是终端操作中不可或缺的基础命令,尤其在处理相对路径或脚本编写时尤为…...

Windows 11设置开机自动运行 .jar 文件

Windows 11设置开机自动运行 .jar 文件 打开启动文件夹&#xff1a; 按下 Win R&#xff0c;输入 shell:startup&#xff0c;回车。 此路径为当前用户的启动文件夹&#xff1a; C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup创…...

西门子 博途 软件 崩溃

西门子 博途 软件 编译/仿真 崩溃 是因为项目中OPC UA的接口问题 解决拌饭见 https://support.industry.siemens.com/cs/document/109971630/tia-portal-%E5%9C%A8%E7%BC%96%E8%AF%91-plc-%E6%97%B6%E5%B4%A9%E6%BA%83?dti0&dlzh&lcen-WW...

12芯束装光纤不同包层线颜色之间的排列顺序

为什么光纤线必须按照以下颜色顺序进行排序&#xff1f;这其实是为了防止光污染的问题&#xff0c;不同颜色在传递光时从包层表皮漏光传感到梳妆的其它纤芯上&#xff0c;会有光污染的问题&#xff0c;而为了减少并防止光污染的现象&#xff0c;所以在光通信之中&#xff0c;需…...

数据驱动、精准协同:高端装备制造业三位一体生产管控体系构建

开篇引入 鉴于集团全面推行生产运营体建设以及对二级单位生产过程管控力度逐步加强&#xff0c;某高端装备制造企业生产部长王总正在开展新的一年企业生产管控规划工作&#xff0c;为了能够更好地进行体系规划与建设应用&#xff0c;特邀请智能制造专家小智来进行讨论交流。 王…...

HAL详解

一、直通式HAL 这里使用一个案例来介绍直通式HAL&#xff0c;选择MTK的NFC HIDL 1.0为例&#xff0c;因为比较简单&#xff0c;代码量也比较小&#xff0c;其源码路径&#xff1a;vendor/hardware/interfaces/nfc/1.0/ 1、NFC HAL的定义 1&#xff09;NFC HAL数据类型 通常定…...

RAG知识库中引入MCP

MCP(Memory, Context, Planning)是一种增强AI系统认知能力的框架。将MCP引入RAG知识库可以显著提升系统的性能和用户体验。下面我将详细介绍如何实现这一整合。 MCP框架概述 MCP框架包含三个核心组件: Memory(记忆):存储和管理历史交互和知识Context(上下文):理解当…...

再读bert(Bidirectional Encoder Representations from Transformers)

再读 BERT&#xff0c;仿佛在数字丛林中邂逅一位古老而智慧的先知。初次相见时&#xff0c;惊叹于它以 Transformer 架构为罗盘&#xff0c;在预训练与微调的星河中精准导航&#xff0c;打破 NLP 领域长久以来的迷雾。而如今&#xff0c;书页间跃动的不再仅是 Attention 机制精…...

C# 单例模式

创建一个类 在类中定义方法 internal class Config {// 实现单利模式private static Config instance null;private Config() { }private static object Locker new object(); // 定义lock锁// 通过公有的方法 返回实力public static Config GetInstance(){// 空的自己构造…...

mainwidget.cpp:1741:21: error: use of undeclared identifier ‘mainTab‘

这个错误表明在你的代码中&#xff0c;mainTab 这个变量没有被正确声明或定义。这通常是因为以下原因之一&#xff1a; 变量未声明&#xff1a;mainTab 可能没有在类的成员变量中声明。 变量未初始化&#xff1a;mainTab 可能没有在构造函数中正确初始化。 作用域问题&#x…...

OpenCV day6

函数内容接上文&#xff1a;OpenCV day4-CSDN博客 , OpenCV day5-CSDN博客 目录 平滑&#xff08;模糊&#xff09; 25.cv2.blur()&#xff1a; 26.cv2.boxFilter(): 27.cv2.GaussianBlur()&#xff1a; 28.cv2.medianBlur(): 29.cv2.bilateralFilter()&#xff1a; 锐…...