《Java 100 天进阶之路》第49篇:ConcurrentHashMap原理(2026版)

2026版Java高频面试题解析与实战技巧 Java作为企业级开发的主流语言,其技术栈深度与广度始终是面试考察的重点。从JVM内存模型到并发编程原理,再到分布式系统设计,掌握这些核心概念是开发者进阶的必经之路。JVM的GC机制通过分代回收算法管理内存生命周期,而并发编程中的AQS框架则奠定了Java锁机制的实现基础。在实际工程中,这些技术显著提升了系统吞吐量与稳定性,广泛应用于电商秒杀、金融交易等高并发场景。针对2026年技术趋势,本文特别解析Java 17新特性与Redis分布式锁的优化实践,帮助开发者高效备战面试。 阅读详情

第49篇:ConcurrentHashMap原理(2026版)

📌 系列导航:《Java 100 天进阶之路》完整目录 |
⬅️ 上一篇:第48篇:HashMap源码全解(下) |
➡️ 下一篇:第50篇:阻塞队列与并发容器



🗺️ 本文阅读地图(3 分钟速览)

前两篇彻底拿下了 HashMap 源码,但 HashMap 线程不安全。高并发下用什么?ConcurrentHashMap 给出了标准答案:

模块核心问题一句话回答
为什么需要它HashMap 并发有什么问题?JDK 7 扩容死循环、数据覆盖、size 不准
JDK 7 回顾分段锁怎么工作?(简要)Segment 数组,每个 Segment 一把锁,默认 16 段
JDK 8 实现为什么抛弃分段锁?改为 Node 数组 + CAS + synchronized,锁粒度细化到桶
并发扩容扩容时其他线程怎么办?多线程协助迁移,旧桶标记 ForwardingNode
计数方式size() 准确吗?弱一致性,用 baseCount + CounterCell 近似统计
面试最爱问高频考点有哪些?见文末 🎤 小节

一、核心知识点

  • 设计目标:高并发下的线程安全 Map,兼顾性能与安全
  • JDK 7 架构(简要):Segment 分段锁(继承 ReentrantLock)+ HashEntry 数组 + 链表
  • JDK 8 架构(重点):Node 数组 + 链表/红黑树 + CAS + synchronized 桶级锁
  • 并发扩容:多线程协助迁移,ForwardingNode 占位 + sizeCtl 状态控制
  • 计数机制:baseCount + CounterCell[](类似 LongAdder)
  • 弱一致性:size()、迭代器不保证强一致性

二、生活类比:从“小杂货铺”到“智能超市”

老王开了家店,一开始是 HashMap 小杂货铺:店里就 1 个货架(数组),商品按名字首字母放。问题很大——一旦有人整理货架(扩容),就得挂“暂停营业”的牌子(全局锁),顾客只能排队等。

后来升级成 ConcurrentHashMap 智能超市:

JDK 7 阶段(分区域管理):超市分成 3 个区域(Segment 数组),每个区域配 1 个保安(ReentrantLock 锁)。顾客买“苹果”,先算该去哪个区域,只需要这个区域的保安放行,其他区域完全不受影响。但同一区域的商品如果叠在一起(哈希冲突),拿“苹果”时还是会挡住“牛油果”。

JDK 8 阶段(精细化到货架层):去掉区域保安,直接把货架分成无数层(Node 数组),每一层都有自己的“小锁”(synchronized)。如果这一层没人,直接拿(CAS 无锁);如果有人正在拿,只锁这一层。如果某一层商品堆太多(链表 ≥ 8),自动改成“旋转货架”(红黑树),找商品更快。

在这里插入图片描述

一句话总结:锁粒度越来越小——从“全表锁 → 分段锁 → 桶级锁”,兼顾线程安全和效率。


三、JDK 7 回顾

💡 说明:JDK 7 在 2026 年已基本上退出生产环境,以下内容仅用于面试对比理解,不必深入实现细节。

3.1 核心结构

在这里插入图片描述

  • Segment 数组:核心锁容器,每个 Segment 继承 ReentrantLock,默认 16 个
  • HashEntry 数组:每个 Segment 内部维护一个 HashEntry 数组
  • 操作流程:put 定位 Segment → 获取锁 → 操作链表 → 释放锁;get 不加锁,依赖 volatile
3.2 JDK 7 的缺陷(为什么废弃?)
缺陷说明
内存开销大16 个 Segment 自带锁、计数、对象头,占用大量内存
并发度受限同一 Segment 内多桶无法并行,最大并发度 = Segment 数量(固定 16)
扩容效率低只能单 Segment 独立扩容,无法多线程协作
结构复杂三层嵌套(Segment → HashEntry → 链表),维护成本高

四、JDK 8:CAS + synchronized 桶级锁(重点)

4.1 为什么废弃分段锁?

JDK 8 彻底重构,核心原因:

  1. 内存开销大:16 个 Segment 自带锁、计数、对象头,占用大量内存
  2. 并发度受限:同一 Segment 内多桶无法并行,最大并发度被 Segment 数量限制
  3. synchronized 优化成熟:JDK 6+ 已升级为偏向锁→轻量级锁→重量级锁,由 JVM 托管,代码更简洁,性能不输 ReentrantLock
4.2 核心数据结构

在这里插入图片描述

核心字段:

  • Node<K,V>[] table:主哈希表(桶数组)
  • Node<K,V>[] nextTable:扩容时的新表
  • volatile int sizeCtl:核心,控制初始化、扩容阈值与状态
  • volatile int transferIndex:多线程扩容分工指针
  • CounterCell[] counterCells + baseCount:高并发计数(类似 LongAdder)

三种节点类型:

  • Node:链表节点,val 和 next 为 volatile
  • TreeNode:红黑树节点(链表过长时树化)
  • ForwardingNode:扩容占位标记,hash 值为 MOVED
4.3 put 流程(面试高频)
① 计算 hash,定位到桶
② 检查 table 是否初始化 → 未初始化则 CAS 初始化
③ 桶位为空 → CAS 直接插入(无锁快路径)
④ 桶位不为空 → 检查头节点 hash 是否为 MOVED
   ├─ 是 → 协助扩容
   └─ 否 → synchronized(头节点) 锁住该桶
         ├─ 链表:遍历替换或尾插
         └─ 红黑树:树节点插入
⑤ 链表长度 ≥ 8 且数组容量 ≥ 64 → 树化
⑥ 元素数量超过阈值 → 触发扩容

核心设计思想:

  • 桶为空 → CAS 无锁(最快路径,无竞争)
  • 桶不为空 → synchronized 只锁桶头(不同桶完全并行)
4.4 get 流程
  • 计算 hash,定位桶
  • 桶为空 → 返回 null
  • 桶不为空 → 遍历链表/红黑树查找
  • 全程无锁,依赖 volatile 保证可见性
4.5 并发扩容机制(JDK 8 最精妙设计)

触发条件:元素数量超过 容量 × 0.75

核心流程:

  1. 单线程创建新表:第一个检测到需要扩容的线程创建 nextTable(容量翻倍)
  2. 多线程协助迁移:其他读写线程遇到 ForwardingNode 会主动参与迁移
  3. 迁移标记:已迁移的旧桶放置 ForwardingNode(hash = MOVED)
  4. 数据迁移:每个桶的元素按 (hash & oldCap) 拆分为低位(原位)和高位(原索引 + oldCap)
  5. 完成:所有桶迁移完毕,替换 table 引用

ForwardingNode 的作用:

  • 表示该桶已迁移完成
  • 遇到它的线程会协助扩容(读写不阻塞)
  • 保证扩容期间其他线程仍可正常访问

并发扩容为什么高效:

  • 不是单线程苦力,而是多线程协作完成
  • 通过 CAS 控制 sizeCtl 协调分工
  • transferIndex 指针分配迁移任务
4.6 计数机制:size() 为什么是“弱一致”?
public int size() {
    long sum = baseCount;
    if (counterCells != null) {
        for (CounterCell cell : counterCells)
            sum += cell.value;  // 累加所有 CounterCell
    }
    return (int) Math.min(sum, Integer.MAX_VALUE);
}

设计原理:

  • baseCount:无竞争时直接 CAS 更新
  • CounterCell[]:竞争激烈时,每个线程更新自己的 CounterCell
  • 类似 LongAdder 的“分段计数”思路,避免全局计数器的竞争

弱一致性:

  • size() 返回近似值,不保证强一致
  • 调用期间可能有并发增删,结果瞬间过时
  • 这是为了性能而主动放弃强一致性

五、JDK 7 vs JDK 8 完整对比

维度JDK 7JDK 8
锁机制ReentrantLock(Segment 锁)CAS + synchronized(桶级锁)
数据结构Segment 数组 → HashEntry 数组 → 链表Node 数组 → 链表/红黑树
锁粒度Segment 级(默认 16 段)桶级(每个桶一把小锁)
扩容方式单 Segment 独立扩容多线程协助全局扩容
计数方式每个 Segment 单独维护 countbaseCount + CounterCell[]
查询复杂度最坏 O(n)(长链表)最坏 O(log n)(红黑树)
初始化时机构造时初始化懒加载(第一次 put 时 CAS 初始化)

六、与 HashMap / Hashtable 对比

对比维度HashMapHashtableConcurrentHashMap
线程安全❌ 不安全✅ synchronized 全表锁✅ 桶级锁 + CAS
null 键/值✅ 允许❌ 不允许❌ 不允许
并发度不适用极低(读也锁)极高(读无锁,写细粒度)
迭代器快速失败快速失败弱一致性
性能单线程最高最差接近 HashMap

七、生产级避坑清单

✅ ConcurrentHashMap 生产环境使用规范
1. 不要用 HashMap 做多线程共享 → 用 ConcurrentHashMap
2. 不要用 null 键/值 → 会直接抛 NPE
3. size() 不精确 → 不要用于精确计数(如金额统计)
4. 迭代器不保证强一致 → 遍历期间可能有增删
5. 复合操作(先 get 再 put)非原子 → 用 compute/merge 等方法
6. 批量操作(putAll)非原子 → 需要外部同步或分批次

八、面试高频考点

Q1:ConcurrentHashMap 和 Hashtable 的区别?

Hashtable 用 synchronized 锁整个方法(全表锁),并发度极低。ConcurrentHashMap JDK 7 用分段锁,JDK 8 用 CAS + 桶级 synchronized,读操作基本无锁,并发度远高于 Hashtable。Hashtable 是遗留类,新代码优先用 ConcurrentHashMap。

Q2:JDK 7 和 JDK 8 的 ConcurrentHashMap 核心区别?

锁机制:JDK 7 用 ReentrantLock 分段锁,JDK 8 用 CAS + synchronized 桶级锁。数据结构:JDK 7 是 Segment + HashEntry + 链表,JDK 8 是 Node + 链表/红黑树。扩容:JDK 7 单 Segment 扩容,JDK 8 多线程协助全局扩容。

Q3:ConcurrentHashMap 为什么不允许 null 键/值?

设计上有歧义——map.get(key) 返回 null 时,无法区分是 key 不存在还是 value 本身就是 null。在非并发场景下可用 containsKey 区分,但在并发环境中,两次调用之间数据可能已变化,这种区分失去意义。

Q4:size() 方法准确吗?

不准确,返回的是近似值。因为 baseCount 和 CounterCell 的累加过程中,仍有并发修改。这是为了性能主动放弃强一致性。

Q5:ConcurrentHashMap 如何实现线程安全?

JDK 8 核心设计:① CAS 无锁:桶为空时直接 CAS 插入;② synchronized 桶级锁:桶不为空时只锁桶头节点;③ 读操作无锁:依赖 volatile 保证可见性;④ 并发扩容:多线程协助迁移,ForwardingNode 占位。

Q6:扩容时其他线程可以读写吗?

可以。已迁移的旧桶放置 ForwardingNode(hash = MOVED),其他线程遇到该节点会协助扩容。扩容期间读写均不阻塞,只是可能触发额外的迁移工作。

Q7:ConcurrentHashMap 的迭代器是 fail-fast 还是 fail-safe?

两者都不是,是弱一致性迭代器。遍历期间其他线程的修改不会抛 ConcurrentModificationException,但迭代器也不保证能看到最新的修改。


🎤 面试官追问陷阱(加分题)

追问1:“JDK 8 为什么用 synchronized 而不是 ReentrantLock?”

synchronized 在 JDK 6+ 已经过锁升级优化(偏向→轻量→重量),由 JVM 自动管理锁的升级与释放,代码更简洁,无需手动 lock()/unlock()。在低竞争场景下性能不输 ReentrantLock。且 ConcurrentHashMap 的场景不需要公平锁——ReentrantLock 默认也是非公平锁,公平锁反而会降低吞吐量。核心原因是 JVM 对 synchronized 的深度优化(锁消除、锁粗化)以及代码简洁性。

追问2:“ConcurrentHashMap 的 put 流程中,CAS 失败后会怎样?”

CAS 失败说明有竞争,其他线程已抢先完成了该桶的初始化或插入。当前线程会自旋重试——重新定位桶位,再次检查状态,根据新状态走对应的分支(桶为空则再次 CAS、桶不为空则 synchronized、遇到 ForwardingNode 则协助扩容)。整个过程不会阻塞,通过自旋+重试实现轻量级并发控制。

追问3:“ConcurrentHashMap 的 size() 不精确,那如何获得精确大小?”

无法获得精确大小——这是 ConcurrentHashMap 的设计取舍。如果需要精确计数,可以用 AtomicLong 外部计数器配合 put/remove 同步更新,或使用 Collections.synchronizedMap(但会牺牲并发度)。实际项目中,99% 的场景只需要近似值做监控或统计,精确值需求往往可以通过业务设计规避。


九、练习题

  1. 对比分析:JDK 7 的分段锁和 JDK 8 的桶级锁有什么区别?为什么 JDK 8 废弃了分段锁?

  2. 源码推导:ConcurrentHashMap 扩容时,ForwardingNode 的作用是什么?为什么其他线程看到它要协助扩容?

  3. 场景设计:某系统使用 ConcurrentHashMap 作为缓存,需要统计缓存中元素个数,但发现 size() 返回的值经常与实际不符。为什么?如何解决?

  4. 代码分析:下面的代码在并发场景下有什么问题?如何优化?

    ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
    if (!map.containsKey(key)) {
        map.put(key, 1);
    } else {
        map.put(key, map.get(key) + 1);
    }
    

    💡 思路:containsKey + get + put 是复合操作,不是原子的。应使用 compute、merge 或 computeIfAbsent 等原子方法。


📊 你的学习进度

  • 当前:第49篇 / 共108篇 · 进阶篇:集合框架源码解析(第45~50篇)
  • ✅ 已完成:基础篇44篇 + 第45~49篇
  • 📖 正在学:第49篇
  • ⏳ 待学习:第50~108篇

👉 📚 完整目录 & 学习指南 | 🔥 订阅本专栏,不错过每一篇

👉 下一篇文章预告

🚀 下一篇:《第50篇:阻塞队列与并发容器》

内容简介:

  • ArrayBlockingQueue vs LinkedBlockingQueue vs SynchronousQueue
  • CopyOnWriteArrayList 读写分离原理
  • ConcurrentLinkedQueue CAS 无锁队列
  • 线程池中的阻塞队列选型

👉 看完第45~50篇,集合框架源码系列正式收官!

📌 《Java 100 天进阶之路 | 从入门到上岗就业》 每天一篇,建议收藏 + 关注,一起100天拿offer!
👉 点击关注我,更新后第一时间收到推送!

2026年Java后端面试3天速通:高频考点与实战策略 Java作为企业级应用开发的核心语言,其技术体系涵盖从基础语法到分布式架构的完整知识栈。理解Java虚拟机(JVM)内存模型和垃圾回收机制是性能优化的基础,而集合框架与并发编程则是构建高并发系统的关键技术。在数据库层面,MySQL的索引设计与事务隔离级别直接影响系统性能,Redis作为内存数据库则通过丰富的数据结构支持缓存、队列等场景。Spring框架通过IoC容器和AOP编程实现了组件解耦,其事务管理机制保障了数据一致性。随着分布式系统成为主流,CAP理论和分布式锁等概念成为面试高频考点。本文基于Hash 阅读详情

相关推荐

2026年Java面试八股文核心考点与实战技巧

Java作为企业级开发的主流语言,其底层原理和工程实践始终是面试的核心考察点。从JVM内存管理到并发编程,扎实的基础知识体系能帮助开发者快速定位性能瓶颈。以ZGC为代表的现代垃圾回收器,通过并发处理显著降低停顿时间,而ConcurrentHashMap等并发容器的优化则体现了Java在高性能场景下的持续演进。分布式系统中,Redis与Zookeeper的锁实现差异、Seata的AT模式事务方案,都是解决复杂业务问题的关键技术选型。掌握这些原理不仅能应对面试,更能指导实际项目中的架构设计,例如电商系统调优时合

weixin_34267123的博客 386

《2026全新 | Java 100 天进阶之路:从零基础到上岗就业,108篇完整学习地图》

摘要:不背八股文,不堆概念。44篇基础 + 64篇进阶(共108篇),100天助你达到Java就业水平,从容面对技术面试。 👉 零基础入门 / 校招社招突击 / 1-3年Java后端提升 / 想系统复盘全栈知识的开发者。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 9583

Java面试7天突击:从HashMap到Spring Boot的高频考点实战解析

在Java后端开发领域,数据结构与并发编程是构建高性能应用的核心基础。HashMap作为最常用的数据结构之一,其底层通过数组与链表(或红黑树)实现高效的键值存储,但在多线程环境下,由于缺乏同步机制,可能导致数据不一致甚至死循环,这体现了并发环境下线程安全的重要性。为解决此类问题,Java提供了ConcurrentHashMap等并发容器,它采用分段锁或CAS+synchronized的细粒度锁策略,在保证线程安全的同时兼顾性能,这在实际高并发场景如缓存系统、实时计算中具有重要价值。理解这些原理不仅能优化代码

weixin_33970449的博客 342

Java 100天进阶之路|集合框架源码通关总结(2026版)

摘要:第45~50篇集合专题正式收官!一张学习路线图 + 六张速查表 + 14道高频面试题 + 11条云原生避坑清单,系统覆盖 ArrayList 1.5倍扩容、LinkedList 内存开销、HashMap 红黑树树化条件、JDK7死循环、ConcurrentHashMap 桶级锁与协助扩容、BlockingQueue 双锁设计。新增 JDK 8+ 原子方法(compute/merge)、容器化环境无界队列 OOM 防护、LongAdder 伪共享规避等 2026 实战加分项。从“调用API”到“吃透源码

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 553

2026版Java面试八股文:从知识复述到场景决策的能力重构

Java面试正经历从‘概念复述’到‘工程决策’的根本性转变。随着JDK 17/21成为主流,虚拟线程、结构化并发、ZGC染色指针等新特性已深度融入云原生与AI工程化场景;传统JVM调优、并发机制、Spring生命周期等知识点,必须结合K8s内存限制、cgroup v2、GraalVM原生镜像、eBPF追踪等真实约束才能落地。技术价值不再体现为背诵能力,而在于能否基于具体版本(如OpenJDK 21.0.2)、具体环境(如Pod内存512MB)和具体工具链(如Arthas trace或bpftrace)完成可

weixin_33716941的博客 374

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

《Java 100 天进阶之路》第48篇:HashMap源码全解(下)(2026版)

摘要:上篇已掌握核心属性与put/get流程,本篇攻克剩余难点:树化机制(链表≥8且容量≥64→红黑树,容量<64→先扩容)、退链表(节点≤6退为链表)、JDK 7扩容死循环(头插法+多线程→环形链表,附步骤图解)、JDK 8修复(尾插法+高低位拆分)、split红黑树拆分(低位留原位,高位移oldCap)、computeIfAbsent陷阱(HashMap不保证原子性,非幂等函数可能导致重复扣款)、极端场景(所有key hash相同→链表O(n)/红黑树O(log n))。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 994

别再只盯着GPS了!手把手教你用Python仿真UWB定位,30厘米精度是怎么算出来的?

本文详细解析了UWB(超宽带)室内定位技术的原理与实现,通过Python代码演示如何从三边测量法到实现30厘米精度的定位。文章涵盖了UWB的核心数学模型、Python仿真环境搭建、误差分析及优化策略,为开发者提供了实用的技术指南和应用场景。

weixin_26873711的博客 248

《Java 100 天进阶之路》第52篇:synchronized深度解析(2026版)

摘要:多线程专题第二弹!从三种使用方式到对象头 Mark Word,从偏向锁→轻量级锁→重量级锁的升级全流程到可重入性原理,从字节码 monitorenter/monitorexit 到 ObjectMonitor 内核结构,从自适应自旋、锁消除、锁粗化等 JVM 优化到 JDK 15+ 偏向锁默认禁用,再到 synchronized vs ReentrantLock 完整对比。附完整锁升级流程图、生产避坑清单、面试高频考点与追问陷阱。从“会用”到“懂源码”,彻底吃透这把 Java 最核心的锁!

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 466

论文阅读 Quantum Convolutional neural network

在传统的局域序参量(如磁化强度 ⟨Xi⟩)无法有效区分某些拓扑相(如 Haldane 相)时,字符串序参量(SOP)提供了一种方法来识别这些相。字符串序参量的定义通常涉及多个远离的站点之间的长程关联,通常具有如下形式:Zi,Xk,Zj是泡利矩阵(Pauli operators)。指数项 eiπ∑k=ijXk表示一个相位因子。这意味着我们要计算两个远离站点 i,j 的Z 分量的关联,同时考虑它们之间的X 作用。这个非局域的字符串序参量可以用来检测对称保护拓扑(SPT)相。

m0_54373077的博客 1993

把MinerU集成到Dify

本文介绍了如何将本地部署的MinerU与Dify平台进行集成。首先需要确保Dify和MinerU在Docker环境中正常运行,并通过配置虚拟网络实现互联。然后详细说明了在Dify平台安装MinerU插件的步骤,包括从插件市场搜索安装、配置连接参数等关键操作。特别强调了要等待MinerU容器完全启动(healthy状态)后再进行Dify配置,否则会出现连接错误。通过简单的URL指向和API密钥设置,用户即可实现Dify平台与本地MinerU算力网络的对接,为后续的AI应用开发提供基础支持。

lyxerlau的博客 307

《Java 100 天进阶之路》第50篇:阻塞队列与并发容器(2026版)

摘要:集合框架源码系列收官之作!一文搞定并发场景下的队列与 List 容器。BlockingQueue 五大实现(ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue、PriorityBlockingQueue、DelayQueue)深度对比——Array 一把锁、Linked 两把锁、Sync 零容量手递手。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 473

GAN网络详解析

介绍目前常见的GAN网络,以及GAN网络的基本组成

wm199的博客 6499

《Java 100 天进阶之路》第47篇:HashMap源码全解(上)(2026版)

摘要:从哈希表底层原理到源码级实现,深入拆解 HashMap 核心机制。覆盖默认容量 16、负载因子 0.75、扰动函数(高16位与低16位异或)、索引计算 (n-1)&hash、put/get 完整流程、扩容机制(2倍扩容 + 高低位拆分)。对比 JDK 7 vs JDK 8 差异(红黑树、尾插法、扰动次数)。附带生活类比(储物柜+钥匙串)、代码验证、避坑清单、面试高频题(含 treeifyBin 容量≥64陷阱)。上篇聚焦核心流程,下篇攻克树化细节与并发陷阱。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 571

(HAL)stm32f407+freertos通过usb驱动移远4G模块-EC600U

文章记录了stm32cubemx+stm32f407+freertos+usb host实现移远4G模块EC600U的usb驱动的调试过程,usb host cdc库的使用和遇到的问题及解决办法。

gongrulin的博客 3889

图文详解秋叶ComfyUI整合包开启密码访问教程(附内网穿透实战经验) ComfyUI密码、ComfyUI-Login、ComfyUI内网穿透、秋叶整合包、ComfyUI安全防护

想远程访问 ComfyUI(跨设备或公网)不希望任何人随意使用或篡改服务需要给 ComfyUI 添加登录验证机制只要按照本文教程,安装插件,并设置好用户名密码,你就能把服务加上一道强力的门槛。📌配合ngrokfrp等内网穿透工具使用公网域名推荐启用 HTTPS(SSL证书可以用宝塔/ZeroSSL 申请)密码可以设置复杂一些,定期更换更安全📬如果你在配置过程中遇到问题,欢迎评论区留言交流,或者私信我,后续我也会更新更多 ComfyUI 插件教程、安全部署经验等内容。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2687

2026春招:Java后端高频面试题Top 100(全网最全,附详细答案)

2026年Java后端春招面试重点转向底层原理、场景解决和新技术应用。本文整理阿里、字节等大厂高频面试题Top 100,涵盖Java基础到进阶核心知识点。包括:面向对象特性、集合框架(HashMap/ConcurrentHashMap实现原理)、多线程(ThreadLocal内存泄漏)、IO模型(BIO/NIO)、JDK新特性(虚拟线程、Record类)等。特别强调JDK21云原生技术,提供完整版PDF下载,助力求职者高效备战。全文直击考点,适合面试前突击复习。

ai-codex-python博客 2131

ProgLoss+STAL 技术详解:YOLO26 小目标检测增强方案

本文提出了一种基于ProgLoss渐进式损失函数和STAL小目标感知标签分配的YOLO26增强方案。针对小目标检测中特征信息少、正负样本不平衡等难题,STAL通过尺度感知的标签分配策略动态调整候选样本数量和IoU阈值,为小目标分配更多正样本;ProgLoss则根据训练阶段动态调整分类和回归损失的权重,早期侧重定位能力,后期加强分类精度。实验表明,该组合方案显著提升了小目标检测性能,在COCO数据集上小目标AP达到38.2%,比基线提升6.5个百分点。该方法为遥感、监控等场景的小目标检测提供了有效解决方案。

一键难忘的博客 1269

hot100【acm版】【2026.7.15打卡-java版本】

安全(类加载、网络连接参数)、线程安全、字符串常量池复用、HashMap等容器的Key要求不可变保证hash不变。

m0_56136663的博客 248

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

hot100【acm版】【2026.7.24打卡-java版本】

corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue(阻塞队列)、threadFactory、handler(拒绝策略)。以后每天就按,秋招项目【java +agent】,科研,必做项目,算法,八股,锻炼身体来总结。:Serial、ParNew、Parallel Scavenge、CMS、G1(区域化,可预测停顿)、ZGC(低延迟)。支持多线程协助扩容。:堆(对象实例、数组)、方法区(元空间,类信息、常量、静态变量,JDK8 后移出永久代)。

m0_56136663的博客 197

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

2026年Java后端面试7天速成:核心考点与实战题库解析

Java作为企业级应用开发的核心语言,其技术生态涵盖从基础语法到分布式架构的完整体系。理解Java虚拟机(JVM)的内存管理和垃圾回收机制,掌握Spring框架的依赖注入和面向切面编程原理,是构建高可用系统的技术基础。在微服务和云原生架构趋势下,Java后端开发更注重并发编程、数据库优化和中间件集成能力。通过系统化的面试题库学习,开发者可以快速检验知识体系完整性,针对线程池配置、SQL性能调优等高频考点进行专项突破。本文基于2026年最新Java面试趋势,提供涵盖JVM调优、Spring Cloud微服务等

weixin_30607029的博客 545

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2026年Java后端面试3天高效突击:重点变化与实战指南

Java作为企业级应用开发的核心语言,其技术生态涵盖集合框架、并发编程、数据库优化等关键领域。理解这些技术的底层原理,如HashMap的并发安全机制、MySQL的B+树索引结构,是提升系统性能的基础。在分布式架构中,Redis的高可用方案和Spring的事务管理机制为系统稳定性提供重要保障。掌握这些技术价值在于能够应对高并发场景,如电商秒杀、实时数据处理等实际业务需求。本文基于2026年最新面试趋势,聚焦Java核心基础、数据库优化和框架应用三大热点,通过3天高效学习计划,帮助开发者将理论知识转化为项目实战

weixin_30596023的博客 406

44篇通关!Java基础篇终极总结:一张图、三张表,把全部知识点装进脑子(2026版)

Java基础篇44篇终极总结!一张学习路线图 + 三张速查表 + 面试题 + 避坑清单,帮你把零散知识串成体系。附PDF福利,进阶篇预告。收藏本文,面试前复习效率翻倍。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 704

2026年Java面试核心考点与实战解析

Java作为企业级开发的主流语言,其核心机制如JVM内存管理、并发编程和框架设计始终是面试重点。理解JVM原理能帮助开发者优化GC策略,尤其在云原生环境下,容器内存限制与元空间配置直接影响应用性能。并发编程方面,虚拟线程和响应式编程成为新趋势,正确使用并发容器可提升高并发场景吞吐量5-8倍。Spring框架深度考察Bean生命周期和响应式改造能力,而GraalVM原生镜像编译要求掌握静态分析与运行时行为的平衡。这些技术广泛应用于金融、电商等高并发系统,是Java工程师应对2026年技术挑战的关键能力。

weixin_30644369的博客 518

2026 Java面试不是背八股:从原理到场景构建核心知识体系

Java面试正在发生本质变化,从单纯的八股文记忆转向对知识体系与场景落地能力的综合考察。面试官不再满足于“HashMap底层是数组加链表加红黑树”这样的结论,而是连环追问扩容机制、并发问题等原理细节,甚至直接抛出秒杀防超卖、分布式锁等真实业务场景。理解线程池核心参数如何配合、事务传播行为在什么条件下失效,比死记硬背答案更能体现工程能力。掌握JVM内存模型、并发工具与Spring生命周期等基础概念,是深入解析原理的起点;而技术价值最终要落到分布式系统、缓存一致性等实际应用中去。面对2026年的面试趋势,将每个

weixin_30325971的博客 336

2026 Java面试突击:高频考点与场景化应答实战指南

Java作为企业级应用开发的核心语言,其技术体系涵盖内存管理、并发编程和框架设计等关键领域。理解JVM内存模型和垃圾回收机制是优化应用性能的基础,而并发编程中的线程安全、锁机制和线程池管理直接影响系统稳定性。这些技术原理在高并发、分布式场景下具有重要价值,如电商秒杀、金融交易等业务都需要可靠的Java技术栈支撑。本文聚焦HashMap实现原理、volatile关键字应用等高频考点,结合线程池配置实战和OOM排查案例,帮助开发者快速掌握面试核心要点。通过识别关键热词和建立知识点关联,提升技术表达和问题解决能力

weixin_34288121的博客 410
上一篇: 解析器的自我修养:从“什么都干”到“只做解析”
下一篇: 模板方法用组合还是继承?多平台电子面单的抉择
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值