自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 为什么 LayerNorm 的计算必须用 fp32

在混合精度训练中,LayerNorm层必须使用fp32精度,否则会因浮点数精度不足引发严重误差。以向量[100,101,...,107]为例,fp16在计算平方和时因上限仅65504而溢出为inf;更关键的是,方差计算涉及大数相减(如10717.5−10712.25=5.25),导致小数被“大数吃掉”,误差被放大2000倍以上。bf16虽避免溢出,但其8位尾数使刻度粗至64,进一步加剧舍入误差。核心原因在于:当均值远大于标准差时,误差放大倍数≈1+(均值/标准差)²,呈平方级增长。因此,为保证数值稳定性,L

2026-09-09 16:06:58 273

原创 Transformer 训练资源估算:以 CS336 GPT-2 XL 配置为例

本文以CS336作业中的GPT-2 XL配置为例,详细估算了Transformer训练过程中显存、FLOPs和训练时间的消耗。模型参数约为1.64B,显存需求主要包括模型参数(6.562GB)、梯度(6.562GB)、优化器状态(13.123GB)和激活值(约16.489B GB,B为batch size)。80GB显存下最大batch size为3,实际建议使用2以保证稳定性。FLOPs计算涵盖了注意力投影(8BTd²)、注意力矩阵乘法(4BT²d)和SwiGLU(6BTddff)等核心操作。该分析为大规

2026-08-24 20:21:14 332

原创 CS336,作业一,GPT-2 XL Transformer 资源开销分析

本文分析了GPT-2 XL模型的资源开销。计算显示该模型约有1.56B参数,FP32存储需要6.24GB内存。在1024上下文长度下,前向传播总计3.52 TFLOPs,其中SwiGLU FFN占比最高(57.53%)。随着模型规模扩大,FFN占比上升;当上下文增至16384时,总算力增长38倍,attention的二次计算成为主要瓶颈(占比61.73%)。研究表明,模型扩容时计算瓶颈会从FFN转向attention机制。

2026-08-22 19:19:54 365

原创 Karpathy nanoGPT 教程到底讲了什么

本文梳理了Andrej Karpathy的nanoGPT教程的核心知识链路,从神经网络基础(micrograd)逐步构建到GPT-2训练的全过程。教程通过bigram模型建立语言模型最小闭环,借助MLP任务深入讲解参数作用与训练诊断,强调BPE分词器的重要性,最终整合Transformer架构与训练工程细节。作者建议读者根据自身目标选择性重点学习:应用开发关注推理部分,模型微调侧重训练流程,预训练理解需要完整学习链路,训练优化则需深入工程实现细节。这套教程的价值在于系统性地揭示了大模型从底层原理到工程实践的

2026-08-19 15:46:50 404

原创 并行 BPE 训练 与 手写 `Tokenizer`

本文记录了实现并行BPE训练和Tokenizer类的过程,重点解决了两个核心问题:一是通过多进程优化BPE训练的预分词阶段,将文本预处理任务拆分给子进程完成;二是构建完整的Tokenizer类,处理编码/解码时遇到的类型转换、特殊token识别和流式输入边界问题。在并行化过程中,作者优化了子进程返回的数据结构,并处理了Windows多进程入口保护问题。在Tokenizer实现中,解决了str与bytes类型对齐、特殊token优先识别、以及bytes遍历时的类型转换等关键难点。整个实现过程表明,BPE算法的

2026-07-29 17:09:19 341

原创 从 Karpathy 手写 BPE 到 CS336 `train_bpe` 作业实现

这篇文章详细介绍了BPE(Byte Pair Encoding)分词器的实现过程,主要分为两个阶段: 核心BPE算法实现:基于Karpathy的讲解,实现了基础的BPE训练逻辑,包括统计相邻token对频率(get_stats)、合并最高频token对(merge)以及训练循环。 作业要求适配:根据CS336作业要求进行了多项改进: 支持特殊token处理 使用GPT-2风格的正则表达式进行预分词 维护vocab字典(int→bytes)确保tie-break规则正确 通过Counter优化和merge操作

2026-07-25 17:20:15 246

原创 工业级 RAG 系统落地实战:工程架构设计、核心指标量化与高频面试题深度拆解

文章摘要(149字) RAG(检索增强生成)是通过检索外部知识源获取证据后生成答案的技术方案,适用于知识频繁更新、需来源追溯的私域场景。其核心链路包含离线索引构建(数据解析、切块、元数据绑定)和在线检索生成(查询理解、召回排序)。关键指标涵盖检索效果(Recall@k、nDCG)、生成质量(正确率、幻觉率)及系统性能(延迟、成本)。相比微调或长上下文方案,RAG更聚焦动态知识接入与证据约束,需配合权限控制与评测机制保障可靠性。优化重点包括chunk策略、混合检索(dense+sparse)及排序融合(如RR

2026-06-03 15:11:39 408

原创 从傅里叶级数到傅里叶变换:详细的数学推导

本文介绍了傅里叶变换的基本原理,从周期函数的傅里叶级数展开出发,推导了复数形式的傅里叶级数表示。首先定义了正交函数系,并证明三角函数系的正交性。然后详细推导了周期函数的傅里叶级数展开式,给出了系数aₙ、bₙ的计算方法。通过欧拉公式将傅里叶级数转换为复数形式,统一用复指数函数表示,系数cₙ包含幅度和相位信息。最后讨论了如何从傅里叶级数过渡到非周期函数的傅里叶变换,当周期趋近于无穷大时,求和转变为积分,为理解连续傅里叶变换奠定基础。文章建议在PC端阅读以获得更好的公式显示效果。

2026-05-28 22:24:31 227

原创 图像理解:如何理解图像的频率?

图像频率描述了像素值在空间中的变化快慢,低频对应平滑区域(如渐变亮度),高频对应快速变化(如边缘纹理)。二维傅里叶变换将图像分解为不同方向、频率的波,通过复数权重(幅度和相位)量化其贡献:幅度反映频率强弱,相位决定结构位置。真实图像(如建筑照片)的频谱分析显示,低频集中于中心,高频分布与边缘细节相关,且方向性特征与图像结构一致。傅里叶变换的本质是将空间域图像转换为频率域表示,强调分解而非直接映射,为图像处理(滤波、压缩等)提供理论基础。关键结论:低频表轮廓,高频表细节;幅度定能量,相位定结构;变换即分解加权

2026-05-28 20:02:52 453

原创 大语言模型的采样参数与输出控制机制

摘要: 本文解析了大模型文本生成的采样机制与参数调优策略。核心采样参数包括Temperature(控制输出多样性)、Top-p/Top-k(动态/固定候选集截断)及Max Output Tokens/Stop Sequences(防循环)。不同厂商参数规范存在差异(如Gemini建议Temperature保持1.0)。强调任务建模(提示词设计、模型选型)优先于参数调优,采样参数仅作风格微调。常见误区包括过度依赖参数优化和忽视停止条件设计。面试高频问题涉及Temperature=0的局限性及参数组合影响。需根

2026-05-28 12:23:17 249

原创 大语言模型的推理机制与工程应用

摘要: 大模型推理涉及模型内部计算、Token生成解码和Agent架构执行三个层面。推理阶段在固定参数下计算输出,Reasoning模型通过额外计算预算提升分析深度。与普通模型相比,Reasoning模型适用于复杂任务但需权衡成本与延迟。工程实践中需区分显式推理文本、隐式计算和最终输出,并根据任务复杂度动态分配资源。常见误区包括混淆推理预算与智能水平,面试常涉及推理机制优化与适用场景选择。

2026-05-28 12:22:40 359

原创 万字硬核解析:从零看透 Transformer 与大语言模型(架构、数学与工程实践)

摘要 本文系统剖析了Transformer架构的核心原理及其在大语言模型中的工程实现。首先从语言建模的演进历程切入,指出Transformer通过自注意力机制解决了传统RNN/LSTM的并行计算瓶颈和长距离依赖问题。文章深入解析了三大核心组件:1) Embedding层将离散符号转化为连续向量空间;2) RoPE位置编码通过旋转角度建模相对位置关系;3) Self-Attention机制实现上下文感知的语义关联。特别强调了Transformer架构与GPU/TPU硬件的高度适配性,以及其在处理长上下文时面临

2026-05-27 15:06:51 510

原创 从旋转矩阵到 RoPE:为什么旋转位置编码天然表达相对位置

RoPE(旋转位置编码)是一种创新的位置编码方法,通过旋转操作将位置信息融入词向量。与传统绝对位置编码不同,RoPE利用旋转矩阵将位置编号转换为几何旋转角度,使注意力分数仅依赖于相对位置(m-n),而非绝对位置。这种方法通过多频旋转平面组合表示位置,既解决了长序列的位置表示问题,又保持了平移不变性。相比直接添加位置向量,RoPE能更自然地捕捉位置关系,为Transformer模型提供了更有效的位置感知能力。

2026-05-27 14:09:34 431

原创 系统设计入门学习指南:s09g 与 ByteByteGo

本文系统梳理了后端系统设计面试的核心要点与学习策略。首先指出系统设计面试重在考察从单机到分布式架构的演进推导能力,而非固定架构背诵。其次对比了ByteByteGo和s09g两类互补学习资源的特点:前者以高质量图解见长,适合建立知识全景;后者侧重实战场景与深度推导。文章提出了标准答题七步法,包括明确业务范围、确认约束、容量估算等关键环节。最后解析了五种高频架构模式(如异步处理、热点缓存等)和底层分布式理论(数据复制与分区机制),为面试者提供了系统化的准备框架。

2026-05-25 11:05:33 572

原创 Agent 记忆力机制设计学习路线:从主流项目中学习

适合理解如何评测记忆。LOCOMO:多会话对话记忆。LongMemEval:长期记忆问答。BEAM:更大规模真实记忆检索。ingest → search → answer → judge:评测流水线。top-k cutoff:检索窗口大小如何影响答案。retrieval audit:要看系统到底检索到了什么。的价值在于:它告诉你,不能只说“这个系统记忆更好”,必须拆成写入、检索、生成、裁判四个环节来验证。小白学习 Agent 记忆机制,最容易犯的错误是直接从向量库开始。

2026-05-24 12:13:34 475

原创 多目标优化:遗传算法详解

摘要:遗传算法(GA)是一种自适应概率搜索技术,通过编码、评价、选择、重组和扰动等步骤解决复杂优化问题。它不依赖梯度信息,适合处理不可导、多峰、约束复杂或搜索空间巨大的问题。在多目标优化中,GA能寻找Pareto最优解集而非单一解。本文系统阐述了GA的工作原理,包括编码转换、种群进化机制、选择压力与多样性的平衡,以及从单目标到多目标的扩展方法,揭示了GA如何在编码空间中积累信息并逼近高质量解集。

2026-05-23 18:05:09 599

原创 基于代数几何与投影理论的神经元偏置必要性及归一化影响分析

本文从数学角度系统分析了神经网络中偏置参数的作用机制。首先基于线性可分数据集假设,论证了神经元权重向量的几何意义——作为分类超平面的法向量。通过引入偏置参数,模型解空间从n维线性空间扩展到n+1维仿射空间,显著提升了表达能力。进一步推导表明,偏置使分类超平面可脱离原点约束,通过平移适应任意数据分布。最后,文章严格证明了在批归一化(Batch Normalization)技术下,偏置参数因代数相消而冗余。这一理论框架为神经网络结构设计提供了严谨的数学依据。

2026-05-22 15:45:38 414

原创 JVM 垃圾回收核心技术、演进全景与生产调优规范

JVM垃圾回收核心技术摘要 本文系统阐述了JVM垃圾回收的核心技术与演进路线。首先解析了对象存活判定机制,重点介绍了可达性分析算法和GC Roots界定标准。其次深入剖析了三大基础垃圾回收算法(标记-清除、标记-复制、标记-整理)的原理与适用场景。针对并发标记问题,详细讲解了漏标问题的数学判定条件(威尔逊公式)及解决方案(增量更新与SATB屏障)。最后对比分析了主流垃圾收集器架构,包括Serial组合、Parallel组合和CMS收集器的设计理念、触发机制与优缺点,为生产环境调优提供了理论基础。

2026-05-22 10:59:15 447

原创 从字节码分析:try-with-resources 与 try-catch-finally 的区别

本文从JVM字节码层面深入分析了try-catch-finally语句的缺陷及其解决方案。首先介绍了JVM栈帧结构和异常处理机制,指出finally块通过代码内联和异常表实现。然后详细剖析了try-catch-finally的两个核心问题:返回值覆盖(finally块返回值会覆盖try块返回值)和异常覆盖(finally块异常会覆盖try块异常),通过字节码指令流展示了覆盖发生的物理机制。最后介绍了Java7引入的try-with-resources语法,说明其通过编译器重组和Throwable.addSu

2026-05-21 10:42:34 401

原创 从GC标志位来看:垃圾回收器的性能演技与技术分析

摘要: Java垃圾回收器(GC)通过状态识别区分存活与垃圾对象,其演进核心在于降低回收过程对业务线程的干扰(Stop-The-World停顿)。GC标志位存储方式的改进推动了三阶段发展: 对象头标记(如Serial/Parallel回收器):GC标志位与对象头共享内存,需全局停顿以避免并发冲突,停顿时间与堆大小正相关。 外部位图标记(如G1/CMS):标志位独立存储于位图,支持并发标记,但对象转移时仍需停顿更新指针。 染色指针标记(如ZGC):将状态嵌入指针高位,结合多重内存映射和读屏障,实现并发标记与转

2026-05-20 12:40:20 369

原创 计算智能·遗传算法

无惧“不可导”与“难求导”的复杂黑盒函数:由于算法直接以目标函数值作为搜索信息 ,无论是面对不连续、不可导的复杂函数,还是缺乏明确解析式的黑盒模型,遗传算法处理起来都极为方便、得心应手。天然的并行计算能力与强大性能:遗传算法对于待优化的函数基本没有任何严格限制,应用范围极广。同时,由于种群中各个个体的适应度计算互不干扰,它具有天然的并行计算特点。这使得我们可以通过大规模并行计算大幅提升求解速度 ,算法整体架构计算简单、功能强大 ,是求解大规模、复杂系统优化问题的绝佳工具。

2026-05-19 21:13:47 444

原创 方法区内存回收机制与核心引用链深度剖析

摘要: Java虚拟机方法区的垃圾回收聚焦于废弃常量清理和类卸载,其中类卸载条件极为苛刻,需同时满足:所有实例被回收、类加载器被回收、Class对象无引用。类卸载本质是切断堆与方法区的物理指针和逻辑寻址路径。实践中,线程上下文类加载器(TCCL)泄漏、JNI全局引用未释放、动态代理全局缓存是阻碍卸载的三大主因,易导致元空间OOM。解决方案包括严格管理跨线程/跨语言资源生命周期,确保及时释放引用链,保障JVM内存稳定。

2026-05-19 12:27:37 368

原创 从字节码来看线程是如何调用方法的

本文解析了Java方法调用的底层机制。当线程执行Java方法时,JVM会在虚拟机栈中创建栈帧,其中动态链接指向当前类的运行时常量池。方法调用指令(如invokevirtual)通过常量池索引找到方法符号引用,JVM将其解析为直接引用完成调用。对于实例方法,还需根据对象实际类型确定最终执行的方法版本。整个过程涉及虚拟机栈、方法区和运行时常量池的协作,动态链接作为关键桥梁,连接栈帧与运行时常量池,实现方法的动态绑定和调用。

2026-05-18 11:38:38 221

原创 AI 对编程范式的颠覆:从逻辑指令到意图交付

本文探讨了软件工程从面向过程到面向对象,再到自然语言编程(Vibe Coding)的抽象层级演进历程。当前大语言模型(LLM)的发展正推动编程范式向“意图即接口”转变,但复杂系统交付仍面临架构规范缺失、语义断层等挑战。文章指出,AI的瓶颈本质是人类认知的边界,未来需将专家经验封装为标准化“Skill”,构建自动化意图编译框架。最终,软件工程可能突破语言限制,实现脑机接口级的纯粹意图编程,完成从代码编写到思维直接映射的终极跨越。(149字)

2026-05-15 23:11:49 448

原创 从扰动函数的变化,感受红黑树带来的性能提升

本文分析了JDK 1.7与1.8中HashMap扰动函数的演变及其性能优化。JDK 1.7采用复杂的9次位运算确保散列均匀性,并引入stringHash32算法防御Hash DoS攻击。而JDK 1.8简化扰动函数为仅2次运算,关键在于底层引入红黑树结构,将最坏查询时间复杂度从O(N)降至O(logN),从而降低了对扰动函数的依赖。这种设计转变体现了从算法防御到物理结构优化的范式升级,在保证安全性的同时显著提升了常态性能。

2026-05-15 14:45:01 368

原创 从 ConcurrentLinkedDeque 与 LinkedBlockingDeque 透视 Synchronized 与 CAS 的底层原理

摘要: Java并发容器LinkedBlockingDeque(LBD)和ConcurrentLinkedDeque(CLD)分别代表悲观锁与乐观锁两种并发控制范式。LBD基于ReentrantLock实现线程安全,通过AQS同步队列和条件变量协调线程阻塞与唤醒,确保强一致性和背压控制,但存在锁竞争的性能瓶颈。CLD采用无锁算法(CAS+volatile),通过延迟更新和自愈逻辑优化吞吐量,牺牲瞬时一致性换取高并发性能。两者的选择取决于场景需求:LBD适用于需强一致性和流量控制的场景(如线程池任务队列),而

2026-05-15 11:54:20 400

原创 Java 并发容器深度解析:从早期遗留类到现代高并发架构

本文系统梳理了Java并发容器的演进历程,分析了List、Set、Queue和Map的三种实现方案:早期遗留类(Vector/Hashtable)、同步包装类(Collections.synchronizedXxx)和JUC高性能工具类。重点对比了Vector与装饰器模式的实现差异,指出装饰器通过组合模式实现了同步逻辑与业务逻辑的解耦,支持更灵活的锁控制。文章深入剖析了装饰器模式的底层实现机制及其安全风险,并针对不同并发场景给出了技术选型建议:读多写少场景推荐CopyOnWriteArrayList,高频并

2026-05-14 12:10:53 372

原创 Java 注解底层原理、组合注解实现与 AOP 协同机制全解析

本文系统总结了Java注解底层原理与AOP协同工作机制。首先介绍了基于元注解的组合注解实现机制,包括核心元注解的作用及组合注解的设计价值,通过代码示例展示了如何构建组合注解。其次深入解析了注解的生命周期,包括编译期的字节码生成和运行期的动态代理实例化过程。最后阐述了注解与AOP的协同工作模式,强调二者职责分离的设计原则,并通过权限校验案例展示了"声明-应用-拦截"的标准实现流程。全文完整覆盖了从元注解构建到工程实践的核心技术要点。

2026-05-13 16:46:49 957

原创 Java 资源释放与堆外内存管理机制演进分析

摘要: Java 资源管理机制经历了从隐式到显式的演进过程。早期依赖 finalize() 方法存在执行延迟、内存溢出和异常静默等问题。Java 7 引入 try-with-resources 语法,通过 AutoCloseable 接口实现资源与作用域绑定,确保同步释放并完善异常处理。对于堆外内存等透明资源,Java 9 采用基于虚引用的 Cleaner 机制,通过专用线程异步释放资源,避免了对象复活风险。三种机制分别解决了不同场景下的资源管理问题,体现了 Java 在资源生命周期管理上的持续优化。

2026-05-13 11:55:50 247

原创 常见设计模式

工厂方法模式:复用上方的Button接口和两种实现类,将工厂解耦,这样添加商品时,只需要增加类,不需要修改旧类。抽象工厂模式:就是在工厂方法里面返回产品族。

2026-05-12 20:25:08 68

原创 Java 内部类结构与底层内存模型剖析

Java 的内部类机制不仅仅是语法的糖衣,它是 Java 语言实现“代码封装”、“高内聚”以及“闭包(Closure)”特性的核心基石。从宏观的语法分类,到微观的内存堆栈隔离,内部类的设计处处体现着 Java 对“安全性”和“性能”的严苛考量。

2026-05-12 15:01:42 410

原创 如何实现一个延迟队列?

任务包装:存入队列的每个元素必须包含一个绝对触发时间戳。排序规则:小顶堆的比较器(Comparator)严格依据该时间戳进行升序排列。物理存储:底层通常采用动态一维数组来实现这棵完全二叉树。

2026-05-11 15:31:18 358

原创 软件设计类 Skill:让 Coding Agent 先想清楚再写代码

不清楚需求就不实现。没有设计批准就不写代码。没有计划就不执行。没有失败测试就不写生产代码。没有根因就不修 bug。没有审查就不进入下一步。没有验证证据就不说完成。如果你的目标是快速生成一段代码,Superpowers 可能显得重。如果你的目标是让 Coding Agent 稳定参与真实项目开发,它的流程约束正是价值所在。实践上,不必一开始就全量采用。可以先从和开始,解决误报完成和猜修问题;再在新功能上使用和;最后在复杂任务上引入。

2026-05-11 14:53:01 729

原创 高并发架构下的 Kafka 与消息队列核心机制

最多一次 (At most once):对于消息丢失不敏感的场景。最少一次 (At least once):对于消息丢失敏感的场景,但可能产生重复消息。精确一次 (Exactly once):消息既不会丢失也不会重复,适用于对可靠性要求极高的场景。

2026-05-10 15:37:02 491

原创 深度剖析:AQS 底层原理与高并发实践

从以上的实践可以看出,AQS 完美地诠释了模板方法模式AQS 在底层的父类中,已经把极其复杂的队列管理、线程挂起、唤醒机制、CAS 状态流转等样板代码全部写好了。:如何独占式地获取状态(用于:如何独占式地释放状态(用于:如何共享式地获取状态(用于Semaphore、读写锁的读操作):如何共享式地释放状态(用于Semaphore、读写锁的读操作)通过对state赋予不同的业务意义,配合 AQS 强大的队列调度,Java 实现了一套极具扩展性、高性能的高并发基础设施。

2026-05-09 17:39:31 239

原创 从 synchronized 到 AQS 的演进

既然 Java 已经提供了基于底层对象监视器()的关键字来实现加锁,为什么还需要在 JDK 1.5 中引入 AQS 框架以及底层的机制?原因在于不可中断的阻塞等待:当线程尝试获取锁失败而进入排队队列时,其状态变为BLOCKED。处于该状态的线程对中断信号不做出响应操作,必须一直等待获取锁。这在处理死锁或需快速失败的场景中缺乏灵活性。AQS 基于可以响应中断并随时退出等待。缺乏非阻塞获取与超时机制只能进行阻塞式获取。AQS 提供了tryLock()(非阻塞尝试)以及(超时自动返回)的能力。缺乏公平锁机制。

2026-05-08 17:06:13 369

原创 Windows 上用 cc-connect 接入 Telegram + Codex:从零跑通与避坑指南

本文记录一次在 Windows 上把 Telegram Bot 接入本机 Codex 的完整流程。可以发给 AI 让它按步骤协助配置。

2026-05-08 13:26:41 1307

原创 JAVA的无锁编程:CAS

CAS 是 Compare And Swap,中文叫“比较并交换”。它的含义是:当且仅当内存中的当前值等于预期值时,才把它更新为新值;如果当前值不等于预期值,说明这个变量已经被其他线程修改过,本次更新失败。V:变量的内存位置,也就是要修改哪个值。E:Expected Value,预期值,也就是线程认为当前值应该是多少。N:New Value,新值,也就是线程想要写入的值。如果 V 当前值 == E:V = N更新成功否则:不修改 V更新失败比如共享变量count当前是10。

2026-05-08 10:41:08 365

原创 锁升级机制与重量锁底层原理

锁类型核心操作线程竞争时的行为优点缺点偏向锁对比 Thread ID撤销偏向锁,升级几乎无开销(只有一个线程时)如果锁竞争激烈,频繁撤销会有性能开销轻量级锁CAS 替换指针自旋尝试获取竞争失败不立即阻塞,响应快若自旋长时间拿不到锁,白白消耗 CPU重量级锁OS 互斥量阻塞,进入等待队列不消耗 CPU(线程挂起)线程上下文切换开销巨大重量级锁机制:在Java中,关键字的底层实现经历过重大的优化,引入了“锁升级”的机制(无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁)。

2026-05-06 17:23:39 374

原创 Java 线程实现方式

在 Java 中,,所谓的四种方式,本质上是**“定义任务逻辑”“管理线程”**的不同策略。

2026-05-06 14:39:42 372

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除