Java Collections工具类指南
一、Collections工具类概述
java.util.Collections
是Java集合框架中提供的工具类,包含大量静态方法用于操作和返回集合。这些方法主要分为以下几类:
- 排序操作
- 查找和替换
- 同步控制
- 不可变集合
- 特殊集合视图
- 其他实用方法
二、排序操作
1. 自然排序
List<String> list = new ArrayList<>(Arrays.asList("banana", "apple", "pear"));// 自然排序(升序)
Collections.sort(list);
System.out.println(list); // [apple, banana, pear]// 逆序排序
Collections.sort(list, Collections.reverseOrder());
System.out.println(list); // [pear, banana, apple]
2. 自定义排序
// 使用Comparator
Collections.sort(list, (s1, s2) -> s1.length() - s2.length());
System.out.println(list); // [pear, apple, banana]// Java 8+更简洁的写法
Collections.sort(list, Comparator.comparingInt(String::length));
3. 随机排序
Collections.shuffle(list);
System.out.println(list); // 随机顺序,如:[banana, pear, apple]
4. 旋转操作
List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));// 向右旋转2位
Collections.rotate(numbers, 2);
System.out.println(numbers); // [4, 5, 1, 2, 3]// 向左旋转1位
Collections.rotate(numbers, -1);
System.out.println(numbers); // [5, 1, 2, 3, 4]
三、查找和替换操作
1. 二分查找
List<Integer> sortedList = Arrays.asList(1, 3, 5, 7, 9);// 元素存在
int index = Collections.binarySearch(sortedList, 5);
System.out.println(index); // 2// 元素不存在
index = Collections.binarySearch(sortedList, 6);
System.out.println(index); // -4 (插入点为3,返回-3-1)
2. 极值查找
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9);// 最大值
Integer max = Collections.max(numbers);
System.out.println(max); // 9// 最小值(自定义比较器)
Integer min = Collections.min(numbers, Comparator.reverseOrder());
System.out.println(min); // 9(因为比较器反转)
3. 频率统计
int frequency = Collections.frequency(numbers, 1);
System.out.println(frequency); // 2
4. 替换操作
List<String> words = new ArrayList<>(Arrays.asList("apple", "banana", "apple"));// 替换所有匹配元素
Collections.replaceAll(words, "apple", "orange");
System.out.println(words); // [orange, banana, orange]// 填充元素
Collections.fill(words, "fruit");
System.out.println(words); // [fruit, fruit, fruit]
四、同步控制
1. 同步包装器
// 创建线程安全集合
List<String> syncList = Collections.synchronizedList(new ArrayList<>());
Map<String, Integer> syncMap = Collections.synchronizedMap(new HashMap<>());
Set<Integer> syncSet = Collections.synchronizedSet(new HashSet<>());// 使用示例
synchronized (syncList) { // 需要手动同步迭代操作Iterator<String> it = syncList.iterator();while (it.hasNext()) {System.out.println(it.next());}
}
2. 注意事项
- 同步集合的方法都是同步的
- 迭代操作需要额外同步
- Java 5+推荐使用
java.util.concurrent
包中的并发集合
五、不可变集合
1. 空集合
List<String> emptyList = Collections.emptyList();
Set<Integer> emptySet = Collections.emptySet();
Map<String, String> emptyMap = Collections.emptyMap();// 不可修改
// emptyList.add("item"); // 抛出UnsupportedOperationException
2. 单元素集合
List<String> singletonList = Collections.singletonList("one");
Set<Integer> singletonSet = Collections.singleton(2);
Map<String, Integer> singletonMap = Collections.singletonMap("key", 3);// 不可修改
// singletonList.add("two"); // 抛出UnsupportedOperationException
3. 不可修改视图
List<String> mutableList = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> unmodifiableList = Collections.unmodifiableList(mutableList);// 通过视图修改会抛出异常
// unmodifiableList.add("d"); // UnsupportedOperationException// 原始列表修改会影响视图
mutableList.add("d");
System.out.println(unmodifiableList); // [a, b, c, d]
六、特殊集合视图
1. 类型安全视图
List rawList = new ArrayList();
rawList.add("string");
rawList.add(1);// 创建类型安全视图
List<String> checkedList = Collections.checkedList(rawList, String.class);
// checkedList.add(2); // 抛出ClassCastException
2. 不可修改视图
List<String> immutableView = Collections.unmodifiableList(mutableList);
Set<Integer> immutableSetView = Collections.unmodifiableSet(new HashSet<>(numbers));
Map<String, Integer> immutableMapView = Collections.unmodifiableMap(new HashMap<>());
3. 单例视图
Set<String> singleton = Collections.singleton("unique");
List<Integer> singletonList = Collections.singletonList(42);
Map<String, String> singletonMap = Collections.singletonMap("key", "value");
七、其他实用方法
1. 反转顺序
List<Integer> nums = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.reverse(nums);
System.out.println(nums); // [5, 4, 3, 2, 1]
2. 交换元素
Collections.swap(nums, 0, 4);
System.out.println(nums); // [1, 4, 3, 2, 5]
3. 添加多个元素
Collections.addAll(nums, 6, 7, 8);
System.out.println(nums); // [1, 4, 3, 2, 5, 6, 7, 8]
4. 不相交检查
List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(4, 5, 6);
boolean disjoint = Collections.disjoint(list1, list2);
System.out.println(disjoint); // true
八、Java 8+增强功能
1. 新增方法
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");// 替换所有元素
names.replaceAll(String::toUpperCase);
System.out.println(names); // [ALICE, BOB, CHARLIE]// 删除满足条件的元素
names.removeIf(name -> name.length() > 4);
System.out.println(names); // [BOB]
2. 与Stream API结合
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9);// 转换为不可修改集合
List<Integer> immutable = Collections.unmodifiableList(numbers.stream().filter(n -> n > 2).sorted().collect(Collectors.toList())
);
System.out.println(immutable); // [3, 4, 5, 9]
九、性能考虑与最佳实践
1. 排序性能
Collections.sort()
使用优化的归并排序算法- 平均和最坏时间复杂度均为O(n log n)
- 对于小列表(元素数<7),使用插入排序
2. 同步集合选择
场景 | 推荐实现 |
---|---|
读多写少 | CopyOnWriteArrayList |
高并发Map | ConcurrentHashMap |
阻塞队列 | ArrayBlockingQueue /LinkedBlockingQueue |
简单同步 | Collections.synchronizedXXX |
3. 最佳实践
- 优先使用不可变集合:保证线程安全
- 避免频繁排序:大数据集考虑使用
TreeSet
/TreeMap
- 正确使用同步包装器:迭代操作需要额外同步
- 合理选择集合类型:根据访问模式选择实现类
十、实际应用案例
1. 实现多值Map
Map<String, List<String>> multiMap = new HashMap<>();// 使用computeIfAbsent简化操作
multiMap.computeIfAbsent("fruits", k -> new ArrayList<>()).add("apple");
multiMap.computeIfAbsent("fruits", k -> new ArrayList<>()).add("banana");// 使用Collections工具类创建空列表
multiMap.putIfAbsent("vegetables", Collections.emptyList());
2. 数据统计分析
List<Integer> scores = Arrays.asList(85, 92, 78, 90, 82, 95, 88);// 计算统计信息
int max = Collections.max(scores);
int min = Collections.min(scores);
double avg = scores.stream().mapToInt(i -> i).average().orElse(0);// 获取前3名
List<Integer> top3 = scores.stream().sorted(Collections.reverseOrder()).limit(3).collect(Collectors.toList());
3. 安全发布集合
public class DataHolder {private final List<String> data;public DataHolder(Collection<String> input) {// 防御性复制+不可变包装this.data = Collections.unmodifiableList(new ArrayList<>(input));}public List<String> getData() {return data; // 安全发布,外部无法修改}
}
十一、常见问题与解决方案
1. UnsupportedOperationException
List<String> fixedSize = Arrays.asList("a", "b", "c");
// fixedSize.add("d"); // 抛出异常// 解决方案:创建新ArrayList
List<String> mutable = new ArrayList<>(fixedSize);
mutable.add("d");
2. 并发修改异常
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));// 错误方式
for (String s : list) {if (s.equals("b")) {list.remove(s); // 可能抛出ConcurrentModificationException}
}// 正确方式1:使用迭代器
Iterator<String> it = list.iterator();
while (it.hasNext()) {if (it.next().equals("b")) {it.remove();}
}// 正确方式2:Java 8+ removeIf
list.removeIf(s -> s.equals("b"));
3. 性能陷阱
// 低效方式:频繁排序
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < 100000; i++) {numbers.add(random.nextInt());Collections.sort(numbers); // 每次添加都排序
}// 高效方式:批量添加后排序
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < 100000; i++) {numbers.add(random.nextInt());
}
Collections.sort(numbers); // 单次排序
十二、总结
Collections
工具类提供了丰富的静态方法来操作和返回集合,主要功能包括:
- 排序和查找:
sort()
,binarySearch()
,reverse()
等 - 同步控制:
synchronizedXXX()
方法创建线程安全集合 - 不可变集合:
emptyXXX()
,singletonXXX()
,unmodifiableXXX()
- 特殊视图:
checkedXXX()
类型安全视图 - 实用操作:
reverse()
,shuffle()
,swap()
等
最佳实践建议:
- 优先使用不可变集合保证线程安全
- 大数据集排序考虑使用
parallelSort()
- 多线程环境选择适当的同步策略
- Java 8+结合Stream API实现更简洁的操作
通过合理使用Collections
工具类,可以大大提高集合操作的效率和代码的可维护性。
相关文章:
Java Collections工具类指南
一、Collections工具类概述 java.util.Collections是Java集合框架中提供的工具类,包含大量静态方法用于操作和返回集合。这些方法主要分为以下几类: 排序操作查找和替换同步控制不可变集合特殊集合视图其他实用方法 二、排序操作 1. 自然排序 List&…...
BBRv2,v3 吞吐为什么不如 BBRv1
为什么 BBRv2/3 测试下来吞吐远不如 2016 年底的 BBRv1,这个事曾经提到过很多次,今天分析一下原理。注意三个事实: BBR 是一种拥塞控制算法;BBR 已经迭代到了 v3 版本;BBRv3 的 “性能” 远不如 BBRv1. 第二点有点不…...
Java集成【邮箱验证找回密码】功能
目录 1.添加依赖 2.选择一个自己的邮箱,作为发件人角色。 3.编写邮箱配置【配置发件人邮箱】 4.编写邮箱配置类 5.编写controller业务代码 6.演示效果 7.总结流程 8.注意 结语 1.添加依赖 <!--导入邮箱依赖--> <dependency><groupId>or…...
Java微服务架构设计与实践 - 面试实战
Java微服务架构设计与实践 - 面试实战 在互联网大厂的Java求职者面试中,微服务架构设计是一个常见的考察点。本文通过严肃的面试官和资深Java架构师马架构之间的对话,详细展示了如何回答SpringCloud相关的核心技术问题。 第一轮提问 面试官࿱…...
Java后端开发面试题(含答案)
在广州一个小公司(BOSS标注是20-99人,薪资2-3k左右),直接面试没有笔试,按流程自我介绍,然后直接拿着简历问项目场景,问题是结合场景题和八股文。废话不多说,直接分享面试题目个大家做参考。 1、…...
Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理
Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第九篇文章,将重点探讨 高可用性(High Availability, HA) 和 集群管理,包括数据库高可用方案、Sharding-JDBC 的故…...
Node.js 学习入门指南
Node.js 学习入门指南 Node.js 是一种流行的开源、跨平台的 JavaScript 运行时环境,它使开发者能够在服务器端运行JavaScript代码。本篇文章旨在帮助初学者快速入门并掌握Node.js的基础知识和常用技巧。 一、什么是Node.js? 定义 Node.js 是一个基于…...
数智视融合驱动未来,Al+数字孪生重塑价值|2025袋鼠云春季数智发布会回顾
4月16日,袋鼠云成功举办了“做DataAI的长期主义者——2025年袋鼠云春季数智发布会”,从智能分析决策平台到AI大模型应用,从数字孪生中枢到AI增强型数字世界,勾勒出企业数智化转型的进化图谱,真正实现AI赋能企业业务&am…...
nfs服务原理、搭建手册、安全配置建议及异常定位手段
一、NFS服务原理 NFS(Network File System)是一种基于TCP/IP协议的网络文件共享系统,允许客户端像访问本地文件一样访问远程服务器上的共享目录。其核心原理依赖于RPC(Remote Procedure Call)机制,具体流程…...
第十三届蓝桥杯 2022 C/C++组 修剪灌木
目录 题目: 题目描述: 题目链接: 思路: 核心思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: P8781 [蓝桥杯 2022 省 B] 修…...
MySQL:数据库设计
目录 一、范式 二、第一范式 二、第二范式 三、第三范式 四、设计 (1)一对一关系 (2)一对多关系 (3)多对多关系 一、范式 数据库的范式是一种规则(规范),如果我们…...
OpenManus与OWL部署及体验报告
OpenManus与OWL对任务的执行结果均不及Manus;二者比较,Owl达成率更高;二者使用过程中均会消耗大量tokens,单个问题成本高。 一、部署 OpenManus:https://github.com/mannaandpoem/OpenManus.git OWL:https…...
【Pandas】pandas DataFrame pow
Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...
Red:1靶场环境部署及其渗透测试笔记(Vulnhub )
环境介绍: 靶机下载: https://download.vulnhub.com/red/Red.ova 本次实验的环境需要用到VirtualBox(桥接网卡),VMware(桥接网卡)两台虚拟机(网段都在192.168.152.0/24࿰…...
【多源01BFS】Codeforce:Three States
题干 翻译 给定一个 nm 的网格地图,包含以下元素: .:表示荒地(可以修建道路)。 #:表示岩石(不可通行)。 数字 1、2、3:分别表示三个国家的位置。 目标:将…...
在深度学习中FLOPs和GFLOPs的含义及区别
在深度学习中,FLOPs和GFLOPs是衡量计算性能的关键指标,但两者的定义和应用场景不同: 1. 定义与区别 • FLOPs(Floating-point Operations) 表示模型或算法执行时所需的浮点运算总次数,用于衡量模型的计算复…...
SpringBoot入门实战(项目搭建、配置、功能接口实现等一篇通关)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 SpringBoot入门实战(项目搭建、配…...
昆仑万维开源SkyReels-V2,解锁无限时长电影级创作,总分83.9%登顶V-Bench榜单
昆仑万维开源了全球首个基于扩散强迫框架(Diffusion-forcing)的无限时长视频生成模型——SkyReels-V2。这一模型以总分83.9%的优异成绩登顶权威评测V-Bench1.0榜单,并在质量维度获得84.7%的评分,刷新了开源视频生成技术的天花板。…...
精选面试题
1、js中set和map的作用和区别? 在 JavaScript 中,Set 和 Map 是两种非常重要的集合类型 1、Set 是一种集合数据结构,用于存储唯一值。它类似于数组,但成员的值都是唯一的,没有重复的值。Set 中的值只能是唯一的,任何…...
【技术派后端篇】技术派中 Session/Cookie 与 JWT 身份验证技术的应用及实现解析
在现代Web应用开发中,身份验证是保障系统安全的重要环节。技术派在身份验证领域采用了多种技术方案,其中Session/Cookie和JWT(JSON Web Token)是两种常用的实现方式。本文将详细介绍这两种身份验证技术在技术派中的应用及具体实现…...
【CAPL实战:以太网】对IPv4报文的Payload部分进行分片并创建分片包
As we know,TCP/IP协议栈网络层接收到来自上层的数据时,并不是简单地添加报头发送出去,而是会受到来自网卡配置参数MTU的约束。也就是从网卡上发送出去的以太网帧报文的数据部分的长度不能大于MTU值。即网络层头部 + 有效载荷不能大于MTU。 所以网络层在发送上层的数据时,…...
Spring Security认证流程
认证是Spring Security的核心功能之一,Spring Security所提供的认证可以更好地保护系统的隐私数据与资源,只有当用户的身份合法后方可访问该系统的资源。Spring Security提供了默认的认证相关配置,开发者也可以根据自己实际的环境进行自定义身…...
Spring Security基础入门
本入门案例主要演示Spring Security在Spring Boot中的安全管理效果。为了更好地使用Spring Boot整合实现Spring Security安全管理功能,体现案例中Authentication(认证)和Authorization(授权)功能的实现,本案…...
Axure疑难杂症:母版菜单设置打开链接后菜单选中效果
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:菜单打开链接后子菜单选中效果 主要内容:母版设计、选中效果 应用场景:页面赋值 案例展示: 案例视频:...
4月份最新---Meta发明了一种很新的Transformer
在自然语言处理领域,当模型处理长上下文时,如何在纷繁的 Token 中精准捕捉关键信息、过滤无关干扰,始终是注意力机制优化的核心方向。标准多头注意力(Multi-Head Attention, MHA)通过查询 - 键 - 值(Q-K-V)的点积相似性计算注意力权重,虽能定位单个 Token 级别的语义关…...
Spring Boot知识点详解
打包部署 <!‐‐ 这个插件,可以将应用打包成一个可执行的jar包;‐‐> <build><plugins> <plugin> <groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐maven‐plugin</artifactId&g…...
基于 EFISH-SBC-RK3588 的无人机多光谱/红外热成像边缘计算方案
一、硬件架构设计 核心算力平台(EFISH-SBC-RK3588) 处理器性能:搭载 8 核 ARM 架构(4Cortex-A762.4GHz 4Cortex-A551.8GHz),集成 6 TOPS NPU 与 Mali-G610 GPU,支持多光谱图像实时融…...
字典与集合——测试界的黑话宝典与BUG追捕术
主题:“字典是测试工程师的暗号手册,集合是BUG的照妖镜” 一、今日目标 ✅ 掌握字典的「键值对暗号体系」与集合的「去重妖法」✅ 开发《测试工程师黑话词典》,让新人秒变老司机✅ 统计自动化测试结果中的高频BUG类型(附赠甩锅指…...
QT构建即时通讯应用--WebSocket全面解析与实战指南
概述 WebSocket协议因其低延迟和双向通信的能力而成为了现代Web和桌面应用程序的首选,Qt框架提供了强大的WebSocket支持,使得开发者可以轻松地集成这一技术到自己的项目中 WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许服务器主动向客户端推…...
复杂性决策-思维训练
思维训练 1.模式识别 观察、复杂、不确定、波动、模糊 –找出必要和非必要因素 –识别重大威胁和机遇 2.系统分析 为复杂情景构建系统心智模型 利用模型识别模式做出预测,指定有效策略 3.心智敏锐度 利用不同层次的分析探索挑战的能力,对其他利益相关方在…...
缓存集群技术深度解析:从原理到实战
缓存集群技术深度解析:从原理到实战 一、缓存集群核心定位与架构选型 1. 集群模式核心价值 缓存集群通过数据分片、高可用保障、水平扩展解决单节点瓶颈,核心能力包括: 数据分片:将数据分散到多个节点,突破单节点内…...
Qt C++/Go/Python 面试题(持续更新)
目录 1、封装、继承、多态是什么? 2、final标识符的作用是什么? 3、介绍一下虚函数 4、介绍一下智能指针 5、介绍一下左值、右值、左值引用、右值引用 6、指针和引用有什么区别? 7、define和const的区别是什么? 8、C程序的…...
Spring Cloud Alibaba VS Spring Cloud
Spring Cloud Alibaba 与 Spring Cloud 组件对比 服务发现与注册中心 功能Spring CloudSpring Cloud Alibaba对比说明核心组件EurekaNacosNacos 支持动态配置管理、健康检查更灵活,且提供 DNS 服务发现能力。健康检查…...
containerd 配置代理
1.systemd unit file 为 containerd 服务创建一个 systemd 插入目录 mkdir /etc/systemd/system/containerd.service.d/创建名为 /etc/systemd/system/containerd.service.d/http-proxy.conf 的文件 添加 HTTP_PROXY 环境变量 [Service] Environment"HTTP_PROXYhttp:/…...
专家系统的基本概念解析——基于《人工智能原理与方法》的深度拓展
一、什么是专家系统 (一)基本思想与定义 1. 核心思想:知识与推理的分离 迄今为止,关于专家系统还没有一个公认的严格定义,一般认为: (1)它是一个智能程序系统; &…...
什么是公链?公链项目有哪些?公链项目开发
公链技术全景解析:定义、生态与开发指南(2025年深度版) 一、公链的本质与核心特征 1.1 公链的定义 公链(Public Blockchain)是一种完全开放、无需许可的区块链网络架构,其核心特征在于去中心化、透明…...
如何解析商品详情页面
解析商品详情页面是爬虫开发中的一个重要环节。由于商品详情页面通常包含丰富的信息,如商品名称、价格、描述、图片等,因此需要仔细分析页面结构并提取所需数据。以下是一个详细的步骤指南,展示如何使用 Java 和 Jsoup 解析商品详情页面。 一…...
Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案
整个应用(包括 View 和 Compose 部分)的浅色/深色模式保持一致。以下是完整的解决方案: 全局配置方案 1. 基础主题设置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定义统一的主题: <!-- values/themes.x…...
三国杀专业分析面板,立志成为桌游界的stockfish
三国杀专业分析面板 (SGSFish) GitHub仓库: 本项目是一个基于 Python 实现的三国杀专业分析面板,旨在模拟玩家决策过程,通过量化评估动作实体(卡牌/技能)的价值、考虑它们之间的相互影响(包括基于作用域的…...
解析 select 函数
解析 select 函数 select 函数是 Unix/Linux 系统中用于多路复用的系统调用,主要用于在多个文件描述符(file descriptors)上等待事件的发生。它允许程序同时监视多个 I/O 通道,并在任意一个通道准备好进行 I/O 操作时通知程序&am…...
对话模型和补全模型区别
对话模型和补全模型区别 什么是对话模型、补全模型 什么是 Completion 最基本地说,文本模型是一个经过训练的大型数学模型,旨在完成一项单一任务:预测下一个 token 或字符。这个过程被称为 completion,在您的旅程中您会经常遇到这个术语。 例如,当使用 completion 文本…...
计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形
以下是使用Qt和OpenGL实现绘制彩色三角形并添加颜色选择按钮的步骤: 一、创建OpenGL绘制组件 继承QOpenGLWidget实现自定义绘制类: // myopenglwidget.h #include <QOpenGLWidget> #include <QOpenGLFunctions_3_3_Core> #include <QO…...
十分钟应急响应——自定义工具链整合实战
核心思路 结合群联AI云防护的API和自定义脚本,实现攻击检测、节点切换、日志分析的端到端自动化。 技术实现步骤 1. 实时攻击检测脚本 使用Python监听群联系统日志,识别攻击特征: # monitor_attack.py import json import subprocess from…...
SpringCloud微服务架构设计与实践 - 面试实战
SpringCloud微服务架构设计与实践 - 面试实战 第一轮提问 面试官:马架构,请问在SpringCloud微服务架构中,如何实现服务注册与发现? 马架构:在SpringCloud中,Eureka是常用的服务注册与发现组件。服务提供…...
每日算法——快乐数、两数之和
202. 快乐数 class Solution { public:bool isHappy(int n) {unordered_set<int> result_set;while(true){int sum 0;while(n>0){sum (n%10)*(n%10);n/10;}if(sum1){return true;}else{if(result_set.find(sum) ! result_set.end()){return false;}result_set.inser…...
反射,枚举,lambda表达式
目录 反射枚举的使用Lambda表达式函数式接口语法Lambda表达式语法精简 变量捕获Lambda在集合List中的使用 反射 作用:在Java代码中,让一个对象认识到自己 比如一个类的名字,里面的方法,属性等 让程序运行的过程,某个对…...
matlab 绘图
1.三维绘图 % 原始数据(按行输入:x y z) data [1 2 3 ;5 56 234 ;32 34 67 1 2 5 ];% 提取坐标并生成网格(适用于surf函数的网格格式) x data(:,1); % X坐标(行数对应Y轴) y data…...
AI日报 - 2025年04月25日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI o3模型展现行动能力,英国发布RepliBench评估AI自主复制风险,DeepMind CEO担忧AGI协调挑战。 模型能力向行动和自主性演进,安全与协调成为焦点。 ▎💼 商业动向…...
力扣面试150题--基本计算器
Day 31 题目描述 思路 (逆波兰表达式扩展) 初次思路:此题我遇到了几个难点 如何处理()如何处理-1和2-1中的负数还是减法问题 1-(-(12))如何处理多余的空格 我的做法如…...
各种各样的bug合集
一、连不上数据库db 1.可能是密码一大包东西不对; 2.可能是里面某个port和数据库不一样(针对于修改了数据库但是连不上的情况); 3.可能是git代码没拉对,再拉一下代码。❤ 二、没有这个包 可能是可以#注释掉。❤ …...