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

Java集合框架深度解析:HashMap、HashSet、TreeMap、TreeSet与哈希表原理详解

一、核心数据结构总览

1. 核心类继承体系

graph TDMap接口 --> HashMapMap接口 --> TreeMapSet接口 --> HashSetSet接口 --> TreeSetHashMap --> LinkedHashMapHashSet --> LinkedHashSetTreeMap --> NavigableMapTreeSet --> NavigableSet

2. 核心特性对比表

特性HashMapTreeMapHashSetTreeSet
底层实现数组+链表/红黑树红黑树HashMap包装TreeMap包装
元素顺序无序自然顺序/自定义无序自然顺序/自定义
插入/删除/查找时间O(1)平均O(log n)O(1)平均O(log n)
线程安全非线程安全非线程安全非线程安全非线程安全
允许null值Key/Value均可Key不允许允许不允许

二、哈希表原理与HashMap实现

1. 哈希表核心机制

// HashMap核心存储结构
transient Node<K,V>[] table; // 哈希桶数组static class Node<K,V> implements Map.Entry<K,V> {final int hash;    // 哈希值final K key;V value;Node<K,V> next;    // 链表结构
}
关键参数:
  • 初始容量:默认16

  • 负载因子:默认0.75(扩容阈值 = 容量 * 负载因子)

  • 树化阈值:链表长度≥8时转为红黑树

  • 退化阈值:红黑树节点≤6时退化为链表

2. 哈希冲突解决方案

// Java 8树化逻辑
final void treeifyBin(Node<K,V>[] tab, int hash) {if (tab == null || (n = tab.length) < MIN_TREEIFY_CAPACITY)resize(); // 先尝试扩容else if ((e = tab[index = (n - 1) & hash]) != null) {TreeNode<K,V> hd = null, tl = null;do { // 转换为TreeNode链表TreeNode<K,V> p = replacementTreeNode(e, null);if (tl == null)hd = p;else {p.prev = tl;tl.next = p;}tl = p;} while ((e = e.next) != null);if ((tab[index] = hd) != null)hd.treeify(tab); // 树化操作}
}

3. 扩容机制

final Node<K,V>[] resize() {int oldCap = (oldTab == null) ? 0 : oldTab.length;int newCap = oldCap << 1; // 双倍扩容Node<K,V>[] newTab = (Node<K,V>[])new Node[newCap];// 重新哈希分布元素for (int j = 0; j < oldCap; ++j) {Node<K,V> e;if ((e = oldTab[j]) != null) {oldTab[j] = null;if (e.next == null)newTab[e.hash & (newCap - 1)] = e;else if (e instanceof TreeNode)((TreeNode<K,V>)e).split(this, newTab, j, oldCap);else { // 链表优化重哈希Node<K,V> loHead = null, loTail = null;Node<K,V> hiHead = null, hiTail = null;do {if ((e.hash & oldCap) == 0) {if (loTail == null)loHead = e;elseloTail.next = e;loTail = e;}else {if (hiTail == null)hiHead = e;elsehiTail.next = e;hiTail = e;}} while ((e = e.next) != null);if (loTail != null) {loTail.next = null;newTab[j] = loHead;}if (hiTail != null) {hiTail.next = null;newTab[j + oldCap] = hiHead;}}}}return newTab;
}

三、TreeMap红黑树实现

1. 红黑树核心规则

  1. 每个节点是红色或黑色

  2. 根节点是黑色

  3. 叶子节点(NIL)是黑色

  4. 红色节点的子节点必须为黑色

  5. 任意节点到叶子节点的路径包含相同数量黑色节点

2. TreeMap节点结构

static final class Entry<K,V> implements Map.Entry<K,V> {K key;V value;Entry<K,V> left;Entry<K,V> right;Entry<K,V> parent;boolean color = BLACK;
}

3. 排序实现原理

public V put(K key, V value) {Entry<K,V> t = root;if (t == null) {compare(key, key); // 检查Comparatorroot = new Entry<>(key, value, null);size = 1;return null;}int cmp;Entry<K,V> parent;Comparator<? super K> cpr = comparator;if (cpr != null) { // 使用自定义比较器do {parent = t;cmp = cpr.compare(key, t.key);if (cmp < 0)t = t.left;else if (cmp > 0)t = t.right;elsereturn t.setValue(value);} while (t != null);}else { // 使用自然顺序if (key == null)throw new NullPointerException();Comparable<? super K> k = (Comparable<? super K>) key;do {parent = t;cmp = k.compareTo(t.key);if (cmp < 0)t = t.left;else if (cmp > 0)t = t.right;elsereturn t.setValue(value);} while (t != null);}Entry<K,V> e = new Entry<>(key, value, parent);if (cmp < 0)parent.left = e;elseparent.right = e;fixAfterInsertion(e); // 红黑树平衡调整size++;return null;
}

四、HashSet与TreeSet实现

1. HashSet实现原理

// HashSet内部使用HashMap存储
private transient HashMap<E,Object> map;// 虚拟对象用于填充Value
private static final Object PRESENT = new Object();public boolean add(E e) {return map.put(e, PRESENT)==null;
}

2. TreeSet实现原理

// TreeSet内部使用NavigableMap存储
private transient NavigableMap<E,Object> m;public boolean add(E e) {return m.put(e, PRESENT)==null;
}

五、关键使用场景与最佳实践

1. 数据结构选型指南

场景需求推荐结构原因说明
快速查找,不要求顺序HashMapO(1)时间复杂度
需要有序遍历TreeMap自然顺序或自定义排序
去重集合,快速存在性检查HashSet基于HashMap的高效实现
需要有序唯一集合TreeSet基于红黑树的排序特性
保持插入顺序LinkedHashMap维护插入顺序链表

2. 哈希函数最佳实践

// 自定义对象作为Key的示例
class Employee {String id;String name;@Overridepublic int hashCode() {return Objects.hash(id, name); // 使用Java 7+的哈希工具}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Employee employee = (Employee) o;return Objects.equals(id, employee.id) &&Objects.equals(name, employee.name);}
}

3. 性能优化技巧

// HashMap初始化优化
int expectedSize = 100000;
float loadFactor = 0.75f;
int initialCapacity = (int) (expectedSize / loadFactor) + 1;
Map<String, Integer> optimizedMap = new HashMap<>(initialCapacity, loadFactor);// TreeMap自定义排序
Comparator<String> reverseComparator = Comparator.reverseOrder();
Map<String, Integer> sortedMap = new TreeMap<>(reverseComparator);

六、高级特性与注意事项

1. 并发处理方案

// 同步包装器
Map<String, Integer> syncMap = Collections.synchronizedMap(new HashMap<>());// 并发容器
ConcurrentHashMap<String, Integer> concurrentMap = new ConcurrentHashMap<>();// 并发NavigableMap
ConcurrentSkipListMap<String, Integer> concurrentSortedMap = new ConcurrentSkipListMap<>();

2. 视图集合操作

Map<String, Integer> map = new HashMap<>();
Set<String> keySet = map.keySet();
Collection<Integer> values = map.values();
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();// 遍历优化
map.forEach((k, v) -> System.out.println(k + ": " + v));

3. 故障排查案例

// 内存泄漏示例
public class LeakDemo {private Map<Object, Object> map = new HashMap<>();public void add(Object key) {map.put(key, new byte[1024*1024]); // 1MB}public static void main(String[] args) {LeakDemo demo = new LeakDemo();for(int i=0; i<1000; i++) {demo.add(new Object()); // 每次new导致Key不同}}
}
// 解决方案:使用WeakHashMap或确保Key可回收

七、底层原理深度对比

1. HashMap vs TreeMap

对比维度HashMapTreeMap
数据结构数组+链表/红黑树红黑树
顺序性无序按键排序
null处理允许null键值键不能为null
性能特点平均O(1)的查找O(log n)的查找
内存占用较高(数组+链表结构)较低(树结构)

2. HashSet vs TreeSet

对比维度HashSetTreeSet
底层实现HashMapTreeMap
元素顺序无序自然顺序或Comparator定义
性能特点平均O(1)的添加/查询O(log n)的添加/查询
内存占用较高(存储Entry对象)较低(树节点结构)

八、总结与扩展方向

1. 核心要点总结

  • 选择依据:根据顺序性需求、性能要求和数据特性选择合适结构

  • 哈希表关键:良好的哈希函数设计和合理的初始参数设置

  • 线程安全:并发场景使用并发容器或同步包装器

  • 内存管理:警惕自定义对象作为Key导致的内存泄漏

2. 扩展学习方向

  • 并发容器:研究ConcurrentHashMap的分段锁机制

  • 缓存设计:结合LinkedHashMap实现LRU缓存

  • 持久化存储:探索TreeMap的磁盘存储优化

  • 性能调优:使用JOL工具分析对象内存布局

通过深入理解这些核心集合类的实现原理和使用场景,开发者可以更好地根据业务需求选择合适的数据结构,并能够针对性地进行性能优化和问题排查。Java集合框架的设计体现了计算机科学数据结构的经典理论,值得持续深入研究和实践。

相关文章:

Java集合框架深度解析:HashMap、HashSet、TreeMap、TreeSet与哈希表原理详解

一、核心数据结构总览 1. 核心类继承体系 graph TDMap接口 --> HashMapMap接口 --> TreeMapSet接口 --> HashSetSet接口 --> TreeSetHashMap --> LinkedHashMapHashSet --> LinkedHashSetTreeMap --> NavigableMapTreeSet --> NavigableSet 2. 核心…...

【深度学习】张量计算:爱因斯坦求和约定|tensor系列03

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; Yaoyao2024往期回顾&#xff1a;【深度学习】详解矩阵乘法、点积&#xff0c;内积&#xff0c;外积、哈达玛积极其应用|tensor系列02每日一言&#x1f33c;: “岱宗夫如何&…...

OpenHarmony-Risc-V上运行openBLAS中的benchmark

OpenHarmony-Risc-V上运行openBLAS中的benchmark 文章目录 OpenHarmony-Risc-V上运行openBLAS中的benchmark前言一、编译openBLAS1.源码下载2.工具链下载3.编译并安装openBLAS 二、编译open BLAS中的benchmark三、上设备运行总结 前言 参考https://zhuanlan.zhihu.com/p/18825…...

CCF CSP 第36次(2024.12)(2_梦境巡查_C++)

CCF CSP 第36次&#xff08;2024.12&#xff09;&#xff08;2_梦境巡查_C&#xff09; 解题思路&#xff1a;思路一&#xff1a; 代码实现代码实现&#xff08;思路一&#xff09;&#xff1a; 时间限制&#xff1a; 1.0 秒 空间限制&#xff1a; 512 MiB 原题链接 解题思路…...

windows下安装mcp servers

以sequential-thinking为例 macos下安装就像github readme中那样安装即可&#xff1a; {"mcpServers": {"sequential-thinking": {"command": "npx","args": ["-y","modelcontextprotocol/server-sequenti…...

OpenGauss 数据库介绍

OpenGauss 数据库介绍 OpenGauss 是华为基于 PostgreSQL 开发的企业级开源关系型数据库&#xff0c;现已成为开放原子开源基金会的项目。以下是 OpenGauss 的详细介绍&#xff1a; 一 核心特性 1.1 架构设计亮点 特性说明优势多核并行NUMA感知架构充分利用现代CPU多核性能行…...

Web3区块链网络中数据隐私安全性探讨

在这个信息爆炸的时代&#xff0c;Web3 的概念如同一股清流&#xff0c;以其去中心化、透明性和安全性的特点&#xff0c;为数据隐私保护提供了新的解决方案。本文将探讨 Web3 区块链网络中数据隐私的安全性问题&#xff0c;并探索如何通过技术手段提高数据隐私的保护。 Web3 …...

linux驱动之poll

驱动中 poll 实现 在用户空间实现事件操作的一个主要实现是调用 select/poll/epoll 函数。那么在驱动中怎么来实现 poll 的底层呢&#xff1f; 其实在内核的 struct file_operations 结构体中有一个 poll 成员&#xff0c;其就是底层实现的接口函数。 驱动中 poll 函数实现原…...

【最后203篇系列】028 FastAPI的后台任务处理

说明 今天偶然在别的文章里看到这个功能&#xff0c;突然觉得正好。 CeleryWorker已经搭好了&#xff0c;但是我一直想在用户请求时进行额外的处理会比较影响处理时间&#xff0c;用这个正好可以搭配上。 我设想的一个场景&#xff1a; 1 用户发起请求2 接口中进行关键信息…...

微信小程序中,将搜索组件获取的值传递给父页面(如 index 页面)可以通过 自定义事件 或 页面引用 实现

将搜索组件获取的值传递给父页面&#xff08;如 index 页面&#xff09;可以通过 自定义事件 或 页面引用 实现 方法 1&#xff1a;自定义事件&#xff08;推荐&#xff09; 步骤 1&#xff1a;搜索组件内触发事件 在搜索组件的 JS 中&#xff0c;当获取到搜索值时&#xff0c…...

深入理解分布式缓存 以及Redis 实现缓存更新通知方案

一、分布式缓存简介 1. 什么是分布式缓存 分布式缓存&#xff1a;指将应用系统和缓存组件进行分离的缓存机制&#xff0c;这样多个应用系统就可以共享一套缓存数据了&#xff0c;它的特点是共享缓存服务和可集群部署&#xff0c;为缓存系统提供了高可用的运行环境&#xff0c…...

C#核心笔记——(六)框架基础

我们在编程时所需的许多核心功能并不是由C#语言提供的,而是由.NET Framework中的类型提供的。本节我们将介绍Framework在基础编程任务(例如虚的等值比较、顺序比较以及类型转换)中的作用。我们还会介绍Framework中的基本类型,例如String、DateTime和Enum. 本章中的绝大部分…...

C# 点击导入,将需要的参数传递到弹窗的页面

点击导入按钮&#xff0c;获取本页面的datagridview标题的结构&#xff0c;并传递到导入界面。 新增一个datatable用于存储datagridview的caption和name&#xff0c;这里用的是devexpress组件中的gridview。 DataTable dt new DataTable(); DataColumn CAPTION …...

java面向对象编程【基础篇】之基础概念

目录 &#x1f680;前言&#x1f914;面向过程VS面向对象&#x1f4af;面向过程编程&#xff08;POP&#xff09;&#x1f4af;面向对象编程&#xff08;OOP&#xff09;&#x1f4af;两者对比 &#x1f31f;三大特性&#x1f4af;封装性&#x1f4af;继承性&#x1f4af;多态性…...

Oceanbase单机版上手示例

本月初Oceanbase单机版发布&#xff0c;作为一个以分布式起家的数据库&#xff0c;原来一个集群动辄小十台机器&#xff0c;多着十几台几十台甚至更多&#xff0c;Oceanbase单机版的发布确实大大降低了硬件部署的门槛。 1.下载安装介质 https://www.oceanbase.com/softwarece…...

深度学习基础--CNN经典网络之InceptionV3详解与复现(pytorch)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 InceptionV3是InceptionV1的升级版&#xff0c;虽然加大了计算量&#xff0c;但是当时效果是比VGG效果要好的。本次任务是探究InceptionV3结构并进行复…...

VOIP通信中的错误码

cancle报文 Reason: SIP;cause200;text"Call completed elsewhere" Reason: Q.850;cause26表示取消的原因是呼叫在其他地方已经完成表示Q.850标准中的原因码26&#xff0c;通常对应于“呼叫被取消”&#xff08;Call Cancelled&#xff09;487 Request Terminated Re…...

C++ STL编程-vector概念、对象创建

vector 概念&#xff1a;是常见的一种容器&#xff0c;被称为“柔性数组”。 在vector中&#xff0c;front()是数组中的第一个元素&#xff0c;back()是数组的最后一个元素。begin()是是指向第一个元素&#xff0c;end()是指向back()的后一个元素 vector的对象创建&#xff0…...

easyexcel使用模板填充excel坑点总结

1.单层map设置值是{属性}&#xff0c;那使用两层map进行设置值&#xff0c;是不是可以使用{属性.属性}&#xff0c;以为取出map里字段只用{属性}就可以设置值&#xff0c;那再加个.就可以从里边map取出对应属性&#xff0c;没有两层map写法 填充得到的文件打开报错 was empty (…...

C#学习第16天:聊聊反射

什么是反射&#xff1f; 定义&#xff1a;反射是一种机制&#xff0c;允许程序在运行时获取关于自身的信息&#xff0c;并且可以动态调用方法、访问属性或创建实例。用途&#xff1a;常用于框架设计、工具开发、序列化、代码分析和测试等场景 反射的核心概念 1. 获取类型信息…...

【Unity】使用Cinemachine+CharacterController实现第三人称视角下的角色视角、移动和跳跃控制

1.初始配置 安装Cinemachine插件给角色添加CharacterConroller创建Cinemachine-->Free Look Camera在Free Look Camera中调整参数&#xff0c;Y Axis勾选Inver&#xff0c;X Axis取消勾选InverFree Look Camera要看向角色 跟随角色&#xff08;自行设置&#xff0c;我就不…...

如何通俗的理解transformer架构编码器和解码器干的活

我们可以用生活中的比喻来理解Transformer的编码器和解码器&#xff0c;以及解码器中两种注意力的作用&#xff1a; 一、编码器&#xff08;Encoder&#xff09;&#xff1a;理解信息的「分析师团队」 想象你要翻译一句话&#xff0c;比如把中文“今天天气很好”翻译成英文。编…...

React 受控表单绑定基础

React 中最常见的几个需求是&#xff1a; 渲染一组列表绑定点击事件表单数据与组件状态之间的绑定 受控表单绑定是理解表单交互的关键之一。 &#x1f4cd;什么是受控组件&#xff1f; 在 React 中&#xff0c;所谓“受控组件”&#xff0c;指的是表单元素&#xff08;如 &l…...

UMG:ListView

1.创建WEB_ListView,添加Border和ListView。 2.创建Object,命名为Item(数据载体&#xff0c;可以是其他类型)。新增变量name。 3.创建User Widget&#xff0c;命名为Entry(循环使用的UI载体).添加Border和Text。 4.设置Entry继承UserObjectListEntry接口。 5.Entry中对象生成时…...

实验五 内存管理实验

实验五 内存管理实验 一、实验目的 1、了解操作系统动态分区存储管理过程和方法。 2、掌握动态分区存储管理的主要数据结构--空闲表区。 3、加深理解动态分区存储管理中内存的分配和回收。 4、掌握空闲区表中空闲区3种不同放置策略的基本思想和实现过程。 5、通过模拟程…...

初识 Firebase 与 FPM

Firebase 是什么 ? Firebase 是 Google 旗下面向 iOS、Android、Web 与多端框架&#xff08;Flutter、Unity 等&#xff09;的应用开发平台&#xff0c;提供从「构建 → 发布与运维 → 增长」全生命周期的一站式后端即服务&#xff08;BaaS&#xff09;。它把实时数据库、托管…...

探索C++中的数据结构:栈(Stack)的奥秘

引言 栈是计算机科学中最基础且重要的数据结构之一&#xff0c;它像一摞盘子一样遵循"后进先出"&#xff08;LIFO&#xff09;的原则。无论是函数调用、表达式求值&#xff0c;还是浏览器前进后退功能&#xff0c;栈都扮演着关键角色。本文将深入解析栈的C实现及其应…...

vue3 nprogress 使用

nprogress 介绍与作用 1.nprogress 是一个轻量级的进度条组件&#xff0c;主要用于在页面加载或路由切换时显示一个进度条&#xff0c;提升用户体验。它的原理是通过在页面顶部创建一个 div&#xff0c;并使用 fixed 定位来实现进度条的效果 2.在 Vite Vue 3 项目中&#xf…...

MCP(Model Context Protocol 模型上下文协议)科普

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;是由人工智能公司 Anthropic 于 2024年11月 推出的开放标准协议&#xff0c;旨在为大型语言模型&#xff08;LLM&#xff09;与外部数据源、工具及服务提供标准化连接&#xff0c;从而提升AI在实际…...

韩媒专访CertiK创始人顾荣辉:黑客攻击激增300%,安全优先的破局之路

4月17日&#xff0c;韩国知名科技媒体《韩国IT时报》(Korea IT Times)发布了对CertiK联合创始人兼CEO顾荣辉教授的专访。双方围绕CertiK一季度《HACK3D》安全报告&#xff0c;就黑客攻击手法的迭代和安全防御技术的创新路径等&#xff0c;展开深度对话。 顾荣辉认为&#xff0…...

华为openEuler操作系统全解析:起源、特性与生态对比

华为openEuler操作系统全解析&#xff1a;起源、特性与生态对比 一、起源与发展历程 openEuler&#xff08;欧拉操作系统&#xff09;是华为于2019年开源的Linux发行版&#xff0c;其前身为华为内部研发的服务器操作系统EulerOS。EulerOS自2010年起逐步发展&#xff0c;支持华…...

从零实现Git安装、使用

一、git安装 Git官方下载 1.下载exe程序 2.双击安装&#xff0c;一直点击next&#xff0c;默认安装 安装完成后&#xff0c;在任意文件夹右键&#xff0c;出现下图所示&#xff0c;即为安装成功。 3.【Git Bash Here】调出命令窗口&#xff0c;设置用户名和 email 地址。 gi…...

leetcode刷题日记——单词规律

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 题目要求判断字符串 s 中的单词是否按照 pattern 这种模式排列具体思路和 205. 同构字符串基本一致&#xff0c;可以通过 hash 存储来实现思路二&#xff0c;通过字符串反推 pattern&#xff0c;如果一致&#xff0c;则遵循相…...

Ubuntu 修改语言报错Failed to download repository information

1.进入文件(ps:vim可能出现无法修改sources.list文件的问题&#xff09; sudo gedit /etc/apt/sources.list2.修改(我是直接增添以下内容在其原始源前面&#xff0c;没有删原始内容)文件并保存&#xff0c;这里会替换原文件 deb http://mirrors.aliyun.com/ubuntu/ focal mai…...

烹饪与餐饮管理实训室数字课程开发方案

烹饪与餐饮管理专业需要具有餐饮产品设计、研发的能力&#xff1b; 具有饮食美学、科学配餐与高端宴席设计的能力&#xff1b; 具有餐饮企业、中央厨房运营管理的能力&#xff1b; 具有餐饮信息化系统应用、数字化运营的能力&#xff0c;这些能力的培养&#xff0c;需要烹饪与餐…...

关于模拟噪声分析的11个误区

目录 1. 降低电路中的电阻值总是能改善噪声性能 2. 所有噪声源的噪声频谱密度可以相加&#xff0c;带宽可以在最后计算时加以考虑 3. 手工计算时必须包括每一个噪声源 4. 应挑选噪声为ADC 1/10的ADC驱动器 5. 直流耦合电路中必须始终考虑1/f噪声 6. 因为1/f噪声随着频率降…...

基于 S2SH 架构的企业车辆管理系统:设计、实现与应用

在企业运营中&#xff0c;车辆管理是一项重要工作。随着企业规模的扩大&#xff0c;车辆数量增多&#xff0c;传统管理方式效率低下&#xff0c;难以满足企业需求。本文介绍的基于 S2SH 的企业车辆管理系统&#xff0c;借助现代化计算机技术&#xff0c;实现车辆、驾驶员和出车…...

51单片机实验七:EEPROM AT24C02 与单片机的通信实例

目录 一、实验环境与实验器材 二、实验内容及实验步骤 三、proteus复位电路 1.改电阻的阻值&#xff08;方法一&#xff09; 2.改电阻的属性&#xff08;方法2&#xff09; 一、实验环境与实验器材 环境&#xff1a;Keli&#xff0c;STC-ISP烧写软件,Proteus. …...

【TeamFlow】 1 TeamFlow 去中心化生产协同系统架构

总体架构设计 采用四层混合架构&#xff0c;结合分层设计与去中心化网络&#xff1a; #mermaid-svg-qBgw9wMd8Gi0gOci {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qBgw9wMd8Gi0gOci .error-icon{fill:#552222;}…...

第 8 期:条件生成 DDPM:让模型“听话”地画图!

本期关键词&#xff1a;Conditional DDPM、Class Embedding、Label Control、CIFAR-10 条件生成 什么是条件生成&#xff08;Conditional Generation&#xff09;&#xff1f; 在标准的 DDPM 中&#xff0c;我们只是“随机生成”图像。 如果我想让模型生成「小狗」怎么办&…...

树莓派超全系列教程文档--(32)config.txt常用音频配置

config.txt常用音频配置 板载模拟音频&#xff08;3.5mm耳机插孔&#xff09;audio_pwm_modedisable_audio_ditherenable_audio_ditherpwm_sample_bits HDMI音频 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 板载模拟音频&#xff08;3.5mm耳机…...

Perf学习

重要的能解决的问题是这些&#xff1a; perf_events is an event-oriented observability tool, which can help you solve advanced performance and troubleshooting functions. Questions that can be answered include: Why is the kernel on-CPU so much? What code-pa…...

量子神经网络编译器开发指南:从理论突破到产业落地全景解析

本文深度剖析IBM Qiskit 5.0量子经典混合编译器的技术架构&#xff0c;详解如何基于含噪量子处理器实现MNIST手写数字分类任务&#xff08;准确率达89%&#xff09;。结合本源量子云、百度量子等国内平台免费配额政策&#xff0c;系统性阐述量子神经网络开发的技术路线与资源获…...

守护者进程小练习

守护者进程含义 定义&#xff1a;守护进程&#xff08;Daemon&#xff09;是运行在后台的特殊进程&#xff0c;独立于控制终端&#xff0c;周期性执行任务或等待事件触发。它通常以 root 权限运行&#xff0c;名称常以 d 结尾&#xff08;如 sshd, crond&#xff09;。 特性&a…...

研究生面试常见问题

研究生面试是考研复试的重要环节&#xff0c;面试表现直接关系到录取结果。以下从面试流程、常见问题分类及回答技巧等方面为您整理了相关内容&#xff0c;帮助您更好地准备面试。 一、研究生面试的基本流程 自我介绍&#xff1a;通常需要准备1分钟左右的中文或英文自我介绍&a…...

极狐GitLab 登录限制如何设置?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 登录限制 (BASIC SELF) 您可以使用登录限制自定义 Web 界面以及基于 HTTP(S) 的 Git 的身份验证限制。 设置 要访问登录限…...

AI驱动商业变革:零售行业的智能化跃迁

引言&#xff1a;AI技术迈入黄金时代 2024年成为生成式AI&#xff08;Gen AI&#xff09;全面落地的关键年。据麦肯锡《技术趋势展望》报告&#xff0c;生成式AI相关投资同比增长​7倍​​&#xff0c;其经济价值预计达​​2.6-4.4万亿美元​​[1]。在零售领域&#xff0c;该技…...

初始图像学(6)

Camera类 我们之前学了很多的图形学知识和相关的程序&#xff0c;现在我们停下脚步&#xff0c;来好好整理一下我们学习的内容&#xff0c;我们将之前的视口代码和渲染代码合并到一个新的单类camera.h&#xff0c;这个类主要负责两项任务&#xff1a; 构建并发射光线到世界中 …...

【React】通过 fetch 发起请求,设置 proxy 处理跨域

fetch 基本使用跨域处理 fetch 基本使用 在node使用原生ajax发请求&#xff1a;XMLHttpRequest()1.获取xhr对象 2.注册回调函数 3.设置参数&#xff0c;请求头 4.发起连接原生ajax没有带异步处理 promise&#xff1b;原生ajax封装一下&#xff0c;以便重复调用jQuery&#…...

好数对的数目

题目描述 给你一个整数数组 nums。 如果一组数字 (i, j) 满足 nums[i] nums[j] 且 i < j&#xff0c;就可以认为这是一组 好数对。 返回 好数对 的数目。 示例 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,1,1,3] 输出&#xff1a;4 解释&#xff1a; 有 4 组好…...