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

HashMap中put方法的执行流程

   在 Java 编程中,HashMap 是一种常用的集合类,它以键值对(Key-Value)的形式存储数据,它具有高效查找、插入和删除的优势。

一.HashMap底层数据结构

  • JDK 1.7:采用 数组 + 链表 的结构。
  • JDK 1.8:优化为 数组 + 链表 + 红黑树。当链表长度超过阈值(默认 8)且数组容量 ≥ 64 时,链表会转换为红黑树,将查询时间复杂度从 O(n)(链表)优化为 O(logn)扩容resize()时若节点数减少到 6 以下,红黑树会退化为链表(避免频繁树结构调整)。

  如图所示:

二.put方法源码分析

put执行流程图:

//1. 调用 putVal 方法并计算哈希值
public V put(K key, V value) {return putVal(hash(key), key, value, false, true);}/*该方法通过对 key 的哈希码进行位运算(右移和异或),优化了哈希值的分布,
减少了哈希冲突的概率,为HashMap 中键值对的高效存储和查找奠定了基础。
对 null 键的特殊处理(返回 0)也保证了 HashMap 对null 键的兼容性。*/static final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}final V putVal(int hash, K key, V value, boolean onlyIfAbsent,boolean evict) {Node<K,V>[] tab; Node<K,V> p; int n, i;// 2.在 putVal 中,首先检查 table 是否为空或未初始化。若为真,//  调用 resize() 初始化数组(默认容量 16,负载因子 0.75):(首次put)if ((tab = table) == null || (n = tab.length) == 0)n = (tab = resize()).length;//3.确定键值对存储位置//通过 (n - 1) & hash 计算键值对在数组中的索引 i。若该位置为空,直接创建新节点存入:if ((p = tab[i = (n - 1) & hash]) == null)tab[i] = newNode(hash, key, value, null);//4.处理hash冲突else {Node<K,V> e; K k;//4.1覆盖值if (p.hash == hash &&((k = p.key) == key || (key != null && key.equals(k))))e = p;//4.2 若节点是 TreeNode(红黑树),调用 putTreeVal 方法在树中插入或更新键值对else if (p instanceof TreeNode)e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);//4.3 遍历链表,若找到相同 key 则跳出循环(后续覆盖值);若到链表末尾无相同 key,则 //通过尾插法插入新节点。插入后检查链表长度,若 ≥ 8 且数组容量 ≥ 64,调用 //treeifyBin 将链表转为红黑树(若容量不足 64,优先扩容):else {for (int binCount = 0; ; ++binCount) {if ((e = p.next) == null) {p.next = newNode(hash, key, value, null);if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1sttreeifyBin(tab, hash);break;}if (e.hash == hash &&((k = e.key) == key || (key != null && key.equals(k))))break;p = e;}}//5.若遍历过程中找到匹配 key 的节点(e != null),则覆盖其 value(根据 // onlyIfAbsent标记判断是否覆盖):if (e != null) { // existing mapping for keyV oldValue = e.value;if (!onlyIfAbsent || oldValue == null)e.value = value;afterNodeAccess(e);return oldValue;}}/* 检查并扩容插入新节点后,size 自增。若 size 超过阈值(capacity × loadFactor),调用 resize() 对数组 进行扩容(容量翻倍):*/++modCount;if (++size > threshold)resize();afterNodeInsertion(evict);return null;}

总结流程
1.计算哈希:对 key 计算优化后的哈希值。
2.初始化数组:首次 put 时初始化 table。
3.定位存储位置:通过哈希值确定数组索引,无冲突则直接插入。
4.处理冲突:4.1若 key 已存在,覆盖 value。4.2若为红黑树,调用树插入逻辑。4.3若为链表,尾插新节点,满足条件时转红黑树。
5.检查扩容:元素数量超过阈值时,对数组扩容。 

三.HashMap 的基本特性

  • 非线程安全:HashMap 在多线程环境下可能出现数据不一致等问题(如扩容时的死锁风险),若需线程安全,可选用 ConcurrentHashMap 或通过 Collections.synchronizedMap 包装。

  线程不安全示例:

import java.util.HashMap;
import java.util.concurrent.CountDownLatch;/*** 两个线程同时向 HashMap 中插入 1000 个键值对。由于 HashMap 非线程安全,可能出现两个线程同时修改同一位置数据,* 导致最终 map.size()小于 2000(理想情况为 2000),体现了多线程下数据不一致的问题。*/
public class HashMapThreadUnsafeExample {public static void main(String[] args) throws InterruptedException {HashMap<Integer, Integer> map = new HashMap<>();CountDownLatch latch = new CountDownLatch(2);Runnable task = () -> {for (int i = 0; i < 1000; i++) {map.put(i, i);}latch.countDown();};Thread thread1 = new Thread(task);Thread thread2 = new Thread(task);thread1.start();thread2.start();latch.await();System.out.println("Map size: " + map.size()); // 可能小于 2000,因线程不安全导致数据覆盖或丢失}
}

  线程安全代码示例1(ConcurrentHashMap)

/*** ConcurrentHashMap 是 Java 并发包(java.util.concurrent)中提供的线程安全的哈希表实现,* 它通过更精细的锁机制(如 JDK 1.8 中的 CAS+ synchronized)来保证线程安全,同时具备较高的并发性能。*/import java.util.concurrent.ConcurrentHashMap;public class ConcurrentHashMapExample {public static void main(String[] args) {// 直接使用ConcurrentHashMapConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();// 多线程操作无需额外同步new Thread(() -> {map.put("key1", 1);}).start();new Thread(() -> {int value = map.get("key1");System.out.println("Value: " + value);  //1}).start();}
}

   线程安全代码示例2(synchronizedMap)

/*** 使用 Collections.synchronizedMap 包装通过 Collections.synchronizedMap* 方法将普通 HashMap 包装成线程安全的 Map。该方法返回一个同步的 Map 实现,内部通过* synchronized 关键字保证操作的原子性,但性能相对 ConcurrentHashMap 较差,因为锁的粒度较大。*/import java.util.Collections;
import java.util.HashMap;
import java.util.Map;public class SynchronizedMapExample {public static void main(String[] args) {HashMap<String, Integer> hashMap = new HashMap<>();// 包装成线程安全的MapMap<String, Integer> synchronizedMap = Collections.synchronizedMap(hashMap);// 多线程操作时,需手动同步访问(迭代等操作时)new Thread(() -> {synchronized (synchronizedMap) {synchronizedMap.put("key1", 1);}}).start();new Thread(() -> {synchronized (synchronizedMap) {int value = synchronizedMap.get("key1");System.out.println("Value: " + value); //1}}).start();}
}

  • 允许 null 键值:null 键在 HashMap 中仅有一个(唯一性),null 值则可多个。代码示例:
import java.util.HashMap;public class HashMapNullExample {public static void main(String[] args) {HashMap<Object, Object> map = new HashMap<>();map.put(null, "value1"); // null键map.put("key1", null);   // null值map.put(null, "value2"); // 再次put null键,会覆盖之前的value1System.out.println("Value for null key: " + map.get(null)); // 输出value2System.out.println("Value for key1: " + map.get("key1"));   // 输出null}
}

  • 无序性:HashMap 无法保证键值对的存储顺序,其顺序可能随哈希冲突、扩容等操作动态变化。若需有序,可考虑 LinkedHashMap。 代码示例:
import java.util.HashMap;
import java.util.LinkedHashMap;public class HashMapUnorderedExample {public static void main(String[] args) {HashMap<Integer, String> hashMap = new HashMap<>();hashMap.put(1, "One");hashMap.put(2, "Two");hashMap.put(3, "Three");System.out.println("HashMap order:");hashMap.forEach((k, v) -> System.out.println(k + ": " + v));LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();linkedHashMap.put(1, "One");linkedHashMap.put(2, "Two");linkedHashMap.put(3, "Three");System.out.println("\nLinkedHashMap order:");linkedHashMap.forEach((k, v) -> System.out.println(k + ": " + v));}
}

相关文章:

HashMap中put方法的执行流程

在 Java 编程中&#xff0c;HashMap 是一种常用的集合类&#xff0c;它以键值对&#xff08;Key-Value&#xff09;的形式存储数据&#xff0c;它具有高效查找、插入和删除的优势。 一.HashMap底层数据结构 JDK 1.7&#xff1a;采用 数组 链表 的结构。JDK 1.8&#xff1a;优…...

基于深度学习并利用时间信息在X射线血管造影中进行冠状动脉血管分割|文献速递-深度学习医疗AI最新文献

Title 题目 Deep learning based coronary vessels segmentation in X-ray angiographyusing temporal information 基于深度学习并利用时间信息在X射线血管造影中进行冠状动脉血管分割 01 文献速递介绍 有创冠状动脉造影&#xff08;ICA&#xff09;在冠状动脉疾病&#…...

JVM详解(曼波脑图版)

(✪ω✪)&#xff89; 好哒&#xff01;曼波会用最可爱的比喻给小白同学讲解JVM&#xff0c;准备好开启奇妙旅程了吗&#xff1f;(๑˃̵ᴗ˂̵)و &#x1f4cc; 思维导图 ━━━━━━━━━━━━━━━━━━━ &#x1f34e; JVM是什么&#xff1f;&#xff08;苹果式比…...

深度理解指针之例题

文章目录 前言题目分析与讲解涉及知识点 前言 对指针有一定了解后&#xff0c;讲一下一道初学者的易错题 题目分析与讲解 先定义一个数组跟一个指针变量 然后把数组名赋值给指针变量————也就是把首地址传到pulPtr中 重点是分析这一句&#xff1a; *&#xff08;pulPtr…...

Electricity Market Optimization(VI) - 机组组合问题的 GAMS 求解

根据之前的博客&#xff0c;我们考虑机组的启动成本只讨论考虑以下几种约束的机组组合问题&#xff1a; 功率平衡约束火电机组启停约束和爬坡约束备用容量约束 min ⁡ ∑ t 1 T ( C t g e n C t u c C t curt ) s.t. C t g e n ∑ i ∈ [ G ] c i ( p i , t c ) C t u c …...

【Leetcode 每日一题】2176. 统计数组中相等且可以被整除的数对

问题背景 给你一个下标从 0 0 0 开始长度为 n n n 的整数数组 n u m s nums nums 和一个整数 k k k&#xff0c;请你返回满足 0 ≤ i < j < n 0 \le i < j < n 0≤i<j<n&#xff0c; n u m s [ i ] n u m s [ j ] nums[i] nums[j] nums[i]nums[j] 且…...

赛灵思 XCVU3P‑2FFVC1517I XilinxFPGA Virtex UltraScale+

XCVU3P‑2FFVC1517I AMD Xilinx Virtex UltraScale 系列中的高端 FPGA&#xff0c;基于 TSMC 16 nm FinFET 工艺及第三代 3D IC 堆栈互连技术&#xff08;SSI&#xff09;&#xff0c;旨在为数据中心互连、高性能计算、网络加速和信号处理等苛刻应用提供领先的性能‑功耗比。…...

Rust 与 JavaScript 的 WebAssembly 互操作指南

1. Rust 中导入和导出 JS 函数 导入 JS 函数 Rust 代码中可以通过 extern 块导入 JavaScript 函数&#xff1a; #[link(wasm_import_module "mod")] // 指定 JS 模块名 extern { fn foo(); // 声明导入的 JS 函数 }如果没有指定 wasm_import_module&#xff0c;默…...

2025年特种设备安全管理 A 证考试全解析

对于想要获取特种设备安全管理 A 证的人员来说&#xff0c;了解考试的具体内容与形式是备考的关键。下面将为大家全面解析特种设备安全管理 A 证考试&#xff0c;助力大家顺利备考&#xff0c;成功取证。 特种设备安全管理 A 证考试内容丰富&#xff0c;涵盖多个重要领域。特种…...

TOA与AOA联合定位的高精度算法,三维、4个基站的情况,MATLAB例程,附完整代码

本代码实现了三维空间内目标的高精度定位,结合到达角(AOA) 和到达时间(TOA) 两种测量方法,通过4个基站的协同观测,利用最小二乘法解算目标位置。代码支持噪声模拟、误差分析及三维可视化,适用于无人机导航、室内定位等场景。订阅专栏后可获得完整代码 文章目录 运行结果…...

java 设计模式之策略模式

简介 策略模式&#xff1a;策略模式可以定制目标对象的行为&#xff0c;它尅通过传入不同的策略实现&#xff0c;来配置目标对象的行为。使用策略模式&#xff0c;就是为了定制目标对象在某个关键点的行为。 策略模式中的角色&#xff1a; 上下文类&#xff1a;持有一个策略…...

BH1750光照传感器---附代码

目录 BH1750简介BH1750指令集BH1750工作流程 BH1750简介 VCC-->电源正&#xff1b; ADDR-->地址端口&#xff1b; GND-->电源负&#xff1b; PA5-->SDA-->I2C数据线&#xff1b; PA3-->SCL-->I2C时钟线&#xff1b; DVI-->I2C端口参考电压&#xff1b…...

docker harbor私有仓库登录报错

docker harbor私有仓库登录报错如下&#xff1a; [rootsrv-1 ~]# docker login -u user1 -p pwd1 harbor.chinacloudapi.cn WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://harbor.chinacloudapi.…...

浔川AI翻译v7.0更新预告

亲爱的浔川AI翻译用户&#xff1a; 感谢您一直以来的支持&#xff01;浔川AI翻译自推出以来&#xff0c;已迭代6个版本&#xff0c;其中**v2.0和v4.0因技术问题&#xff08;翻译结果显示异常、注册失败、密码找回功能失效等&#xff09;**被迫下架。我们深知这些问题影响了您…...

Linux网络编程实战:从字节序到UDP协议栈的深度解析与开发指南

网路通信的三大要素&#xff1a;协议&#xff0c;端口和IP 知识点1【字节序】 多字节在主机中的存放数据 把多字节看成一个整体存储的顺序。 为什么我们在文件中没有这个概念呢&#xff1f; 因为文件是字节流&#xff08;流指针&#xff09;&#xff0c;流是以一个字节为操…...

Java基础知识面试题(已整理Java面试宝典pdf版)

什么是Java Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象理论…...

速盾:高防CDN访问多了会影响源站吗?

在当今数字化时代&#xff0c;内容分发网络&#xff08;CDN&#xff09;已经成为保障网站性能和用户体验的重要工具。特别是高防CDN&#xff0c;它不仅能够加速内容传输&#xff0c;还能有效抵御各种类型的网络攻击&#xff0c;确保业务的连续性和稳定性。然而&#xff0c;一些…...

Python(19)Python并发编程:深入解析多线程与多进程的差异及锁机制实战

目录 一、背景&#xff1a;Python并发编程的必要性二、核心概念对比2.1 技术特性对比表2.2 性能测试对比&#xff08;4核CPU&#xff09; 三、线程与进程的创建实战3.1 多线程基础模板3.2 多进程进阶模板 四、锁机制深度解析4.1 资源竞争问题重现4.2 线程锁解决方案4.3 进程锁的…...

赛灵思 XCVU440-2FLGA2892E XilinxFPGA Virtex UltraScale

XCVU440-2FLGA2892E 属于 Xilinx Virtex UltraScale 系列&#xff0c;是面向高端应用的旗舰 FPGA 器件。该系列产品以出色的高并行处理能力、丰富的逻辑资源和高速互联能力闻名&#xff0c;广泛用于 高性能计算、数字信号处理等对计算能力和带宽要求极高的场景。采用先进的 20n…...

UE5 相机裁剪面

UE5无法单独修改相机的裁剪面&#xff0c;不论是场景相机还是游戏相机都不可以 只能在配置里统一修改 项目设置里直接搜clip...

uniapp自定义底部导航栏,解决下拉时候顶部空白的问题

一、背景 最近使用uniapp开发微信小程序&#xff0c;因为使用了自定义的顶部导航栏&#xff0c;所以在ios平台上&#xff08;Android未测试&#xff09;测试的时候&#xff0c;下拉的时候会出现整个页面下拉并且顶部留下大片空白的问题 二、任务&#xff1a;解决这个问题 经…...

vue2 element-ui 中 el-radio 单选框点击事件失效问题

前情提要 点进这篇文章的小伙伴&#xff0c;应该和博主一样&#xff0c;都是遇到了这种单选框可点击取消的需求。也就只有这种不同寻常的需求&#xff0c;才能让我们发现element框架的缺陷点&#xff0c;话不多说&#xff0c;下面博主来提供一个解决思路。 click为什么无法触发…...

yolov8复现

Yolov8的复现流程主要包含环境配置、下载源码和验证环境三大步骤&#xff1a; 环境配置 查看电脑状况&#xff1a;通过任务管理器查看电脑是否有独立显卡&#xff08;NVIDIA卡&#xff09;。若有&#xff0c;后续可安装GPU版本的pytorch以加速训练&#xff1b;若没有&#xff0…...

提高Qt工作线程的运行速度

1. 使用线程池&#xff08;QThreadPool&#xff09;替代单一线程 做过&#xff0c;但是当时没想到。。。 目的&#xff1a;减少线程创建和销毁的开销&#xff0c;复用线程资源。 实现步骤&#xff1a; 创建自定义任务类&#xff1a;继承QRunnable&#xff0c;实现run()方法。…...

ZStack文档DevOps平台建设实践

&#xff08;一&#xff09;前言 对于软件产品而言&#xff0c;文档是不可或缺的一环。文档能帮助用户快速了解并使用软件&#xff0c;包括不限于特性概览、用户手册、API手册、安装部署以及场景实践教程等。由于软件与文档紧密耦合&#xff0c;面对业务的瞬息万变以及软件的飞…...

网络规划设计之广域网结构设计,6种架构模式对比

在数字化转型的浪潮中&#xff0c;网络基础设施的设计理念正在发生深刻变革。传统的基于点线拓扑的研究方法已无法满足现代复杂网络的需求&#xff0c;取而代之的是更具系统性的网络结构设计理念。本文将深入解析网络结构的定义特征&#xff0c;并重点剖析六种主流广域网架构的…...

FortiAI 重塑Fortinet Security Fabric全面智能化进阶

专注推动网络与安全融合的全球性综合网络安全解决方案供应商 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;&#xff0c;近日宣布&#xff0c;旗下 Fortinet Security Fabric 安全平台成功嵌入了 FortiAI 关键创新功能。这一举措将有效增强用户对各类新兴威胁的防护…...

uniapp h5接入地图选点组件

uniapp h5接入地图选点组件 1、申请腾讯地图key2、代码接入2.1入口页面 &#xff08;pages/map/map&#xff09;templatescript 2.2选点页面&#xff08;pages/map/mapselect/mapselect&#xff09;templatescript 该内容只针对uniapp 打包h5接入地图选点组件做详细说明&#x…...

Openfein实现远程调用的方法(实操)

文章目录 环境准备一、URL中接收参数二、接收一个参数三、接收多个参数四、传递对象五、传递JSON格式数据 环境准备 下面的配置&#xff0c;服务调用方加入即可。 依赖导入&#xff1a; <!-- openfeign依赖--><dependency><groupId>org.springframe…...

Matter如何终结智能家居生态割据,重构你的居住体验?

现阶段&#xff0c;Zigbee、Z-Wave、Thread、Wi-Fi与蓝牙等多种通信协议在智能家居行业中已得到广泛应用&#xff0c;但协议间互不兼容的通信问题仍在凸显。由于各协议自成体系、彼此割据&#xff0c;智能家居市场被迫催生出大量桥接器、集线器及兼容性软件以在不同生态的设备间…...

Thin-Agent服务(TAS)概述

### **Thin-Agent服务&#xff08;TAS&#xff09;概述** **Thin-Agent服务&#xff08;TAS&#xff09;** 是一种轻量级监控服务&#xff0c;通过 **BMC/IPMI**&#xff08;基板管理控制器/智能平台管理接口&#xff09;收集**硬件和操作系统特定数据**&#xff0c;为系统管…...

2025.4.17学习日记 初识JavaScript 以及Java和JavaScript有什么区别

Java 和 JavaScript 虽然名字相似&#xff0c;但实际上是两种不同的编程语言。 1. 语言背景和设计目的 Java&#xff1a;由 Sun Microsystems&#xff08;现被 Oracle 收购&#xff09;在 1995 年推出。设计初衷是为了实现 “一次编写&#xff0c;到处运行&#xff08;Write O…...

python学习—合并多个word文档

系列文章目录 python学习—合并TXT文本文件 python学习—统计嵌套文件夹内的文件数量并建立索引表格 python学习—查找指定目录下的指定类型文件 python学习—年会不能停&#xff0c;游戏抽签抽奖 python学习—循环语句-控制流 python学习—合并多个Excel工作簿表格文件 pytho…...

01、单片机简介

单片机简介 1、什么是单片机2、STM32F103ZET6介绍2.1、参数的含义2.2、存储器映射 3、外设寄存器介绍 1、什么是单片机 单片机(Single-Chip Microcomputer)是一种微型计算机&#xff0c;是一种集成电路芯片。把具有数据处理能力的中央处理器CPU、随机存储器RAM、闪存flash、多…...

常用UI设计工具及平台概览

在当今快速发展的数字世界中,UI设计平台成为设计师和开发者创建用户界面不可或缺的利器。这些平台不仅支持从简单原型到复杂交互设计的各种需求,而且许多还提供将设计直接转换为代码的功能,极大地提高了开发效率。下面将为您介绍几个主流的UI设计工具及其特点,帮助您根据项…...

考研单词笔记 2025.04.17

associate v联系&#xff0c;联想n同事&#xff0c;伙伴&#xff0c;朋友a副的&#xff0c;准的&#xff0c;非正式的 association n联系&#xff0c;联想&#xff0c;协会&#xff0c;社团&#xff0c;关系&#xff0c;交往 associative a联想的 bond n纽带&#xff0c;联系…...

MySQL常用SQL语句的示例

概述 MySQL 常用 SQL 语句的示例&#xff0c;涵盖数据定义、操作、查询等常见场景 一、数据库操作 创建数据库 CREATE DATABASE mydb;选择数据库 USE mydb;删除数据库 DROP DATABASE mydb;二、表操作 创建表 CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VAR…...

java 多线程之Worker Thread模式(Thread Pool模式)

Worker Thread模式 Worker的意思是工作的人&#xff0c;在Worker Thread模式中&#xff0c;工人线程Worker thread会逐个取回工作并进行处理&#xff0c;当所有工作全部完成后&#xff0c;工人线程会等待新的工作到来。 Worker Thread模式也被成为Background Thread&#xff…...

4月17日星期四今日早报简报微语报早读

4月17日星期四&#xff0c;农历三月二十&#xff0c;早报#微语早读。 1、国家统计局&#xff1a;一季度国内生产总值同比增长5.4%&#xff1b; 2、我国博士后已超40万人&#xff0c;2024年招收人数再创新高&#xff1b; 3、神舟二十号计划近日择机实施发射&#xff0c;船箭组…...

【最新版】芸众商城独立版源码 425+插件 全新后台框架

一.系统介绍 芸众商城系统最新版 已经更新425全插件版&#xff0c;一套系统支持各种新零售、商城、模式&#xff0c;天天美丽链动商城。不要相信那些外面的旧版本。旧版本等于是废品&#xff0c;无法小程序运营的&#xff0c;框架还是旧的&#xff01; 芸众系统最新版 服务器可…...

android liveData observeForever 与 observe对比

LiveData 是一个非常有用的组件,用于在数据变化时通知观察者。LiveData 提供了两种主要的观察方法:observe 和 observeForever。这两种方法在使用场景、生命周期感知以及内存管理等方面有所不同。 一、observe 方法​​ ​​1. 基本介绍​​ ​​生命周期感知​​:observe…...

定制化 Docsify 文档框架实战分享

&#x1f31f; 定制化 Docsify 文档框架实战分享 在构建前端文档平台时&#xff0c;我们希望拥有更友好的用户界面、便捷的搜索、清晰的目录导航以及实用的代码复制功能。借助 Docsify&#xff0c;我实现了以下几个方面的定制优化&#xff0c;分享给大家 &#x1f64c;。 &…...

蓝桥杯题目:二维前缀和

首先分析一下二维数组的差分。s[x2][y2]-s[x1][y1]s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]s[x1-1][y1-1] 因为对于二维数组x2y2-x1y1范围内的值需要通过x2y2减去从x1&#xff0c;y2-1的这段存储的前缀和以及减去x2-1&#xff0c;y1这两部分的前缀和&#xff0c;但是还有一个x1-1&a…...

数字孪生城市技术应用典型实践案例汇编(22个典型案例)(附下载)

近年来&#xff0c;数字孪生技术在我国从战略框架逐步向系统性落地推进&#xff0c;成为推动数字中国建设的重要技术引擎。随着《数字中国建设整体布局规划》《"十四五"数字经济发展规划》《深化智慧城市发展推进城市全域数字化转型的指导意见》等政策的实施&#xf…...

Linux——信号(1)信号的产生

我们在讲进程的多种状态时提到过&#xff0c;一个进程的退出有三种情况&#xff1a;正常退出&#xff0c;结果出错退出&#xff08;代码也执行完了&#xff09;&#xff0c;异常终止退出&#xff08;代码未执行完&#xff09;&#xff0c;其中最后一种退出相当于进程在运行时&a…...

【模型常见评价指标(分类)】

目录 常见指标 其他的评估指标 3.1 BLEU 3.2 ROUGE 3.3 困惑度PPL(perplexity) 常见指标 其他的评估指标 3.1 BLEU BLEU&#xff08;Bilingual Evaluation Understudy&#xff0c;双语评估替补&#xff09;分数是评估一种语言翻译成另一种语言的文本质量的指标。它将“质…...

个人博客系统后端 - 用户信息管理功能实现指南(上)

本文记录了如何实现用获取户信息&#xff0c;用户信息更新&#xff0c;用户头像上传三大基础功能 先上接口实现截图&#xff1a; 一、项目结构概览 先介绍一下 个人博客系统采用了标准的 Spring Boot 项目结构&#xff0c;用户功能相关的文件主要分布在以下几个目录&#xff1a…...

CyberAgentAILab 开源数字人项目TANGO,heygen的开源版来了~

简介 TANGO 是 CyberAgentAILab 开源的一项前沿研究成果&#xff0c;其初衷在于探索高效生成模型在实际应用场景中的表现。项目诞生于 CyberAgent 在整合创意与人工智能的实践中&#xff0c;旨在为数字内容生成、交互和实时渲染等领域提供一个高性能、模块化、可扩展的解决方案…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 上册期中同步测试卷 A 卷

上册期中同步测试卷A卷 一、单项选择题(本大题共5小题,每小题3分,总计15 分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分&#xff0c;总计30分) 11. …...

4.16 AT好题选做

文章目录 前言[ARC103D] Distance Sums(确定树的形态,trick)[AGC062B] Split and Insert(区间 d p dp dp)[AGC012E] Camel and Oases(状压&#xff0c;可行性dp转最优性dp)[ARC094D] Normalization(trick&#xff0c;转化)[ARC125F] Tree Degree Subset Sum(结论&#xff0c;a…...