news 2026/4/29 4:08:37

dLocalMap 内部使用 Entry 数组

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
dLocalMap 内部使用 Entry 数组

一、核心原理
1. 数据存储结构
// 每个 Thread 对象内部都有一个 ThreadLocalMap
ThreadLocal.ThreadLocalMap threadLocals = null;

// ThreadLocalMap 内部使用 Entry 数组,Entry 继承自 WeakReference<ThreadLocal<?>>
static class Entry extends WeakReference<ThreadLocal<?>> {
Object value;
Entry(ThreadLocal<?> k, Object v) {
super(k); // 弱引用指向 ThreadLocal 实例
value = v; // 强引用指向实际存储的值
}
}
AI写代码

2. 关键设计
线程隔离:每个线程有自己的 ThreadLocalMap 副本
哈希表结构:使用开放地址法解决哈希冲突
弱引用键:Entry 的 key(ThreadLocal 实例)是弱引用
延迟清理:set / get 时自动清理过期条目
二、源码分析
1. set() 方法流程
public void set(T value) {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null) {
map.set(this, value); // this指当前ThreadLocal实例
} else {
createMap(t, value);
}
}

ThreadLocal 是强大的线程隔离工具,但需要谨慎使用。在 Web 应用和线程池场景中,必须在 finally 块中调用 remove(),这是避免内存泄漏的关键。

面试回答
关于 ThreadLocal,我从原理、场景和内存泄漏三个方面来说一下我的理解。

1. 首先,它的核心原理是什么?
简单来说,ThreadLocal 是一个线程级别的变量隔离工具。它的设计目标就是让同一个变量,在不同的线程里有自己独立的副本,互不干扰。

底层结构:每个线程(Thread对象)内部都有一个自己的 ThreadLocalMap(你可以把它想象成一个线程私有的、简易版的HashMap)。
怎么存:当我们调用 ThreadLocal.set(value) 时,实际上是以当前的 ThreadLocal 实例自身作为 Key,要保存的值作为 Value,存入当前线程的那个 ThreadLocalMap 里。
怎么取:调用 ThreadLocal.get() 时,也是用自己作为 Key,去当前线程的 Map 里查找对应的 Value。
打个比方:就像去银行租保险箱。Thread 是银行,ThreadLocalMap 是银行里的一排保险箱,ThreadLocal 实例就是你手里那把特定的钥匙。你用这把钥匙(ThreadLocal实例)只能打开属于你的那个格子(当前线程的Map),存取自己的东西(Value),完全看不到别人格子的东西。不同的人(线程)即使用同一款钥匙(同一个ThreadLocal实例),打开的也是不同银行的格子,东西自然隔离了。
2. 其次,它的典型使用场景有哪些?
正是因为这种线程隔离的特性,它特别适合用来传递一些需要在线程整个生命周期内、多个方法间共享,但又不能(或不想)通过方法参数显式传递的数据。最常见的有两个场景:

场景一:保存上下文信息(最经典)
比如在 Web 应用 或 RPC 框架 中处理一个用户请求时,这个请求从进入系统到返回响应,全程可能由同一个线程处理。我们会把一些信息(比如用户ID、交易ID、语言环境)存到一个 ThreadLocal 里。这样,后续的任何业务方法、工具类,只要在同一个线程里,就能直接 get() 到这些信息,避免了在每一个方法签名上都加上这些参数,代码会简洁很多。
场景二:管理线程安全的独享资源
典型例子是 数据库连接 和 SimpleDateFormat。
像 SimpleDateFormat 这个类,它不是线程安全的。如果做成全局共享,就要加锁,性能差。用 ThreadLocal 的话,每个线程都拥有自己的一个 SimpleDateFormat 实例,既避免了线程安全问题,又因为线程复用了这个实例,减少了创建对象的开销。
类似的,在一些需要保证数据库连接线程隔离(比如事务管理)的场景,也会用到 ThreadLocal 来存放当前线程的连接。
3. 最后,关于它的内存泄漏问题
ThreadLocal 如果使用不当,确实可能导致内存泄漏。它的根源在于 ThreadLocalMap 中 Entry 的设计。

问题根源:
ThreadLocalMap 的 Key(也就是 ThreadLocal 实例)是一个 弱引用。这意味着,如果外界没有强引用指向这个 ThreadLocal 对象(比如我们把 ThreadLocal 变量设为了 null),下次垃圾回收时,这个 Key 就会被回收掉,于是 Map 里就出现了一个 Key 为 null,但 Value 依然存在的 Entry。
这个 Value 是一个强引用,只要线程还活着(比如用的是线程池,线程会复用,一直不结束),这个 Value 对象就永远无法被回收,造成了内存泄漏。
如何避免:
良好习惯:每次使用完 ThreadLocal 后,一定要手动调用 remove() 方法。这不仅是清理当前值,更重要的是它会清理掉整个 Entry,这是最有效、最安全的做法。

https://www.zhihu.com/zvideo/1993464490088481666
https://www.zhihu.com/zvideo/1993464490088481666/
https://www.zhihu.com/zvideo/1993464494400247024
https://www.zhihu.com/zvideo/1993464494400247024/
https://www.zhihu.com/zvideo/1993464544698335259
https://www.zhihu.com/zvideo/1993464544698335259/
https://www.zhihu.com/zvideo/1993464498351273160
https://www.zhihu.com/zvideo/1993464498351273160/
https://www.zhihu.com/zvideo/1993464502356841014
https://www.zhihu.com/zvideo/1993464502356841014/
https://www.zhihu.com/zvideo/1993464514818110074
https://www.zhihu.com/zvideo/1993464514818110074/
https://www.zhihu.com/zvideo/1993464519297615109
https://www.zhihu.com/zvideo/1993464519297615109/
https://www.zhihu.com/zvideo/1993464510695108722
https://www.zhihu.com/zvideo/1993464510695108722/
https://www.zhihu.com/zvideo/1993464506286896266
https://www.zhihu.com/zvideo/1993464506286896266/
https://www.zhihu.com/zvideo/1993464556899570617
https://www.zhihu.com/zvideo/1993464556899570617/
https://www.zhihu.com/zvideo/1993464523470959246
https://www.zhihu.com/zvideo/1993464523470959246/
https://www.zhihu.com/zvideo/1993464527858201206
https://www.zhihu.com/zvideo/1993464527858201206/
https://www.zhihu.com/zvideo/1993464531901494428
https://www.zhihu.com/zvideo/1993464531901494428/
https://www.zhihu.com/zvideo/1993464536225842802
https://www.zhihu.com/zvideo/1993464536225842802/
https://www.zhihu.com/zvideo/1993464540663398925
https://www.zhihu.com/zvideo/1993464540663398925/
https://www.zhihu.com/zvideo/1993464548775194765
https://www.zhihu.com/zvideo/1993464548775194765/
https://www.zhihu.com/zvideo/1993464552789139724
https://www.zhihu.com/zvideo/1993464552789139724/
https://www.zhihu.com/zvideo/1993464560905109682
https://www.zhihu.com/zvideo/1993464560905109682/
https://www.zhihu.com/zvideo/1993464564952605369
https://www.zhihu.com/zvideo/1993464564952605369/
https://www.zhihu.com/zvideo/1993464569033680498
https://www.zhihu.com/zvideo/1993464569033680498/
https://www.zhihu.com/zvideo/1993464571344729466
https://www.zhihu.com/zvideo/1993464571344729466/
https://www.zhihu.com/zvideo/1993464573882299066
https://www.zhihu.com/zvideo/1993464573882299066/
https://www.zhihu.com/zvideo/1993464576352752750
https://www.zhihu.com/zvideo/1993464576352752750/
https://www.zhihu.com/zvideo/1993464600809731668
https://www.zhihu.com/zvideo/1993464600809731668/
https://www.zhihu.com/zvideo/1993464578764477338
https://www.zhihu.com/zvideo/1993464578764477338/
https://www.zhihu.com/zvideo/1993464581293634732
https://www.zhihu.com/zvideo/1993464581293634732/
https://www.zhihu.com/zvideo/1993464595835278749
https://www.zhihu.com/zvideo/1993464595835278749/
https://www.zhihu.com/zvideo/1993464586519717166
https://www.zhihu.com/zvideo/1993464586519717166/
https://www.zhihu.com/zvideo/1993464607952615064
https://www.zhihu.com/zvideo/1993464607952615064/
https://www.zhihu.com/zvideo/1993464588755296399
https://www.zhihu.com/zvideo/1993464588755296399/
https://www.zhihu.com/zvideo/1993464591137658265
https://www.zhihu.com/zvideo/1993464591137658265/
https://www.zhihu.com/zvideo/1993464593394185560
https://www.zhihu.com/zvideo/1993464593394185560/
https://www.zhihu.com/zvideo/1993464583537567415
https://www.zhihu.com/zvideo/1993464583537567415/
https://www.zhihu.com/zvideo/1993464598330906148
https://www.zhihu.com/zvideo/1993464598330906148/
https://www.zhihu.com/zvideo/1993464603221460164
https://www.zhihu.com/zvideo/1993464603221460164/
https://www.zhihu.com/zvideo/1993464613006775484
https://www.zhihu.com/zvideo/1993464613006775484/
https://www.zhihu.com/zvideo/1993464610683127153
https://www.zhihu.com/zvideo/1993464610683127153/
https://www.zhihu.com/zvideo/1993464605519938183
https://www.zhihu.com/zvideo/1993464605519938183/
https://www.zhihu.com/zvideo/1993464615317825280
https://www.zhihu.com/zvideo/1993464615317825280/
https://www.zhihu.com/zvideo/1993464617859560829
https://www.zhihu.com/zvideo/1993464617859560829/
https://www.zhihu.com/zvideo/1993464621240172916
https://www.zhihu.com/zvideo/1993464621240172916/
https://www.zhihu.com/zvideo/1993464626264950494
https://www.zhihu.com/zvideo/1993464626264950494/
https://www.zhihu.com/zvideo/1993464628672472773
https://www.zhihu.com/zvideo/1993464628672472773/
https://www.zhihu.com/zvideo/1993464623681279293
https://www.zhihu.com/zvideo/1993464623681279293/
https://www.zhihu.com/zvideo/1993464631033894874
https://www.zhihu.com/zvideo/1993464631033894874/
https://www.zhihu.com/zvideo/1993464636549395114
https://www.zhihu.com/zvideo/1993464636549395114/
https://www.zhihu.com/zvideo/1993464634045395867
https://www.zhihu.com/zvideo/1993464634045395867/
https://www.zhihu.com/zvideo/1993464641481896717
https://www.zhihu.com/zvideo/1993464641481896717/
https://www.zhihu.com/zvideo/1993464644203999797
https://www.zhihu.com/zvideo/1993464644203999797/
https://www.zhihu.com/zvideo/1993464649484636393
https://www.zhihu.com/zvideo/1993464649484636393/
https://www.zhihu.com/zvideo/1993464653553111424
https://www.zhihu.com/zvideo/1993464653553111424/
https://www.zhihu.com/zvideo/1993464657936143777
https://www.zhihu.com/zvideo/1993464657936143777/
https://www.zhihu.com/zvideo/1993464639191807758
https://www.zhihu.com/zvideo/1993464639191807758/
https://www.zhihu.com/zvideo/1993464662101095004
https://www.zhihu.com/zvideo/1993464662101095004/
https://www.zhihu.com/zvideo/1993464675761935261
https://www.zhihu.com/zvideo/1993464675761935261/
https://www.zhihu.com/zvideo/1993464666702243484
https://www.zhihu.com/zvideo/1993464666702243484/
https://www.zhihu.com/zvideo/1993464680098842478
https://www.zhihu.com/zvideo/1993464680098842478/
https://www.zhihu.com/zvideo/1993464671274025952
https://www.zhihu.com/zvideo/1993464671274025952/
https://www.zhihu.com/zvideo/1993464684242834767
https://www.zhihu.com/zvideo/1993464684242834767/
https://www.zhihu.com/zvideo/1993464697568121296
https://www.zhihu.com/zvideo/1993464697568121296/
https://www.zhihu.com/zvideo/1993464688915285888
https://www.zhihu.com/zvideo/1993464688915285888/
https://www.zhihu.com/zvideo/1993464722041874270
https://www.zhihu.com/zvideo/1993464722041874270/
https://www.zhihu.com/zvideo/1993464693134738507
https://www.zhihu.com/zvideo/1993464693134738507/
https://www.zhihu.com/zvideo/1993464702307700951
https://www.zhihu.com/zvideo/1993464702307700951/
https://www.zhihu.com/zvideo/1993464706896270599
https://www.zhihu.com/zvideo/1993464706896270599/
https://www.zhihu.com/zvideo/1993464724462015305
https://www.zhihu.com/zvideo/1993464724462015305/
https://www.zhihu.com/zvideo/1993464710885045257
https://www.zhihu.com/zvideo/1993464710885045257/
https://www.zhihu.com/zvideo/1993464719374312269
https://www.zhihu.com/zvideo/1993464719374312269/
https://www.zhihu.com/zvideo/1993464715234517903
https://www.zhihu.com/zvideo/1993464715234517903/
https://www.zhihu.com/zvideo/1993464731588121197
https://www.zhihu.com/zvideo/1993464731588121197/
https://www.zhihu.com/zvideo/1993464726848562152
https://www.zhihu.com/zvideo/1993464726848562152/
https://www.zhihu.com/zvideo/1993464729335772450
https://www.zhihu.com/zvideo/1993464729335772450/
https://www.zhihu.com/zvideo/1993464736675800306
https://www.zhihu.com/zvideo/1993464736675800306/
https://www.zhihu.com/zvideo/1993464739079144203
https://www.zhihu.com/zvideo/1993464739079144203/
https://www.zhihu.com/zvideo/1993464734050182878
https://www.zhihu.com/zvideo/1993464734050182878/
https://www.zhihu.com/zvideo/1993464741507658719
https://www.zhihu.com/zvideo/1993464741507658719/
https://www.zhihu.com/zvideo/1993464743747417407
https://www.zhihu.com/zvideo/1993464743747417407/
https://www.zhihu.com/zvideo/1993464756418413097
https://www.zhihu.com/zvideo/1993464756418413097/
https://www.zhihu.com/zvideo/1993464789201080334
https://www.zhihu.com/zvideo/1993464789201080334/
https://www.zhihu.com/zvideo/1993464753914406634
https://www.zhihu.com/zvideo/1993464753914406634/
https://www.zhihu.com/zvideo/1993464749111915301
https://www.zhihu.com/zvideo/1993464749111915301/
https://www.zhihu.com/zvideo/1993464776936929088
https://www.zhihu.com/zvideo/1993464776936929088/
https://www.zhihu.com/zvideo/1993464766719598706
https://www.zhihu.com/zvideo/1993464766719598706/
https://www.zhihu.com/zvideo/1993464751452361317
https://www.zhihu.com/zvideo/1993464751452361317/
https://www.zhihu.com/zvideo/1993464761829053160
https://www.zhihu.com/zvideo/1993464761829053160/
https://www.zhihu.com/zvideo/1993464781756190796
https://www.zhihu.com/zvideo/1993464781756190796/
https://www.zhihu.com/zvideo/1993464774063845651
https://www.zhihu.com/zvideo/1993464774063845651/
https://www.zhihu.com/zvideo/1993464746595344806
https://www.zhihu.com/zvideo/1993464746595344806/
https://www.zhihu.com/zvideo/1993464784235026224
https://www.zhihu.com/zvideo/1993464784235026224/
https://www.zhihu.com/zvideo/1993464786629990156
https://www.zhihu.com/zvideo/1993464786629990156/
https://www.zhihu.com/zvideo/1993464779357058692
https://www.zhihu.com/zvideo/1993464779357058692/
https://www.zhihu.com/zvideo/1993464771756959164
https://www.zhihu.com/zvideo/1993464771756959164/
https://www.zhihu.com/zvideo/1993464769127130019
https://www.zhihu.com/zvideo/1993464769127130019/
https://www.zhihu.com/zvideo/1993464759153079464
https://www.zhihu.com/zvideo/1993464759153079464/
https://www.zhihu.com/zvideo/1993464764270146963
https://www.zhihu.com/zvideo/1993464764270146963/
https://www.zhihu.com/zvideo/1993464797061207944
https://www.zhihu.com/zvideo/1993464797061207944/
https://www.zhihu.com/zvideo/1993464824571639254
https://www.zhihu.com/zvideo/1993464824571639254/
https://www.zhihu.com/zvideo/1993464816313049855
https://www.zhihu.com/zvideo/1993464816313049855/
https://www.zhihu.com/zvideo/1993464820649988864
https://www.zhihu.com/zvideo/1993464820649988864/
https://www.zhihu.com/zvideo/1993464807014281532
https://www.zhihu.com/zvideo/1993464807014281532/
https://www.zhihu.com/zvideo/1993464791755420253
https://www.zhihu.com/zvideo/1993464791755420253/
https://www.zhihu.com/zvideo/1993464799707807802
https://www.zhihu.com/zvideo/1993464799707807802/
https://www.zhihu.com/zvideo/1993464812378821780
https://www.zhihu.com/zvideo/1993464812378821780/
https://www.zhihu.com/zvideo/1993464794708193782
https://www.zhihu.com/zvideo/1993464794708193782/
https://www.zhihu.com/zvideo/1993464828552032332
https://www.zhihu.com/zvideo/1993464828552032332/
https://www.zhihu.com/zvideo/1993464801934988645
https://www.zhihu.com/zvideo/1993464801934988645/
https://www.zhihu.com/zvideo/1993464841411788834
https://www.zhihu.com/zvideo/1993464841411788834/
https://www.zhihu.com/zvideo/1993464836848387159
https://www.zhihu.com/zvideo/1993464836848387159/
https://www.zhihu.com/zvideo/1993464849573905475
https://www.zhihu.com/zvideo/1993464849573905475/
https://www.zhihu.com/zvideo/1993464832847025441
https://www.zhihu.com/zvideo/1993464832847025441/
https://www.zhihu.com/zvideo/1993464845627065185
https://www.zhihu.com/zvideo/1993464845627065185/
https://www.zhihu.com/zvideo/1993464853524914880
https://www.zhihu.com/zvideo/1993464853524914880/
https://www.zhihu.com/zvideo/1993464857492742768
https://www.zhihu.com/zvideo/1993464857492742768/
https://www.zhihu.com/zvideo/1993464862018398198
https://www.zhihu.com/zvideo/1993464862018398198/
https://www.zhihu.com/zvideo/1993464867777165313
https://www.zhihu.com/zvideo/1993464867777165313/
https://www.zhihu.com/zvideo/1993464915168604757
https://www.zhihu.com/zvideo/1993464915168604757/
https://www.zhihu.com/zvideo/1993464910189973881
https://www.zhihu.com/zvideo/1993464910189973881/
https://www.zhihu.com/zvideo/1993464872323813719
https://www.zhihu.com/zvideo/1993464872323813719/
https://www.zhihu.com/zvideo/1993464900765360995
https://www.zhihu.com/zvideo/1993464900765360995/
https://www.zhihu.com/zvideo/1993464895228905139
https://www.zhihu.com/zvideo/1993464895228905139/
https://www.zhihu.com/zvideo/1993464884705375372
https://www.zhihu.com/zvideo/1993464884705375372/
https://www.zhihu.com/zvideo/1993464929701873003
https://www.zhihu.com/zvideo/1993464929701873003/
https://www.zhihu.com/zvideo/1993464903101609569
https://www.zhihu.com/zvideo/1993464903101609569/
https://www.zhihu.com/zvideo/1993464889600131956
https://www.zhihu.com/zvideo/1993464889600131956/
https://www.zhihu.com/zvideo/1993464887075160861
https://www.zhihu.com/zvideo/1993464887075160861/
https://www.zhihu.com/zvideo/1993464876404844062
https://www.zhihu.com/zvideo/1993464876404844062/
https://www.zhihu.com/zvideo/1993464880578180362
https://www.zhihu.com/zvideo/1993464880578180362/
https://www.zhihu.com/zvideo/1993464945984152897
https://www.zhihu.com/zvideo/1993464945984152897/
https://www.zhihu.com/zvideo/1993464892833956707
https://www.zhihu.com/zvideo/1993464892833956707/
https://www.zhihu.com/zvideo/1993464937645896881
https://www.zhihu.com/zvideo/1993464937645896881/
https://www.zhihu.com/zvideo/1993464905462982354
https://www.zhihu.com/zvideo/1993464905462982354/
https://www.zhihu.com/zvideo/1993464942951694621
https://www.zhihu.com/zvideo/1993464942951694621/
https://www.zhihu.com/zvideo/1993464925083949031
https://www.zhihu.com/zvideo/1993464925083949031/
https://www.zhihu.com/zvideo/1993464953882034701
https://www.zhihu.com/zvideo/1993464953882034701/
https://www.zhihu.com/zvideo/1993464958600638548
https://www.zhihu.com/zvideo/1993464958600638548/
https://www.zhihu.com/zvideo/1993464922277957977
https://www.zhihu.com/zvideo/1993464922277957977/
https://www.zhihu.com/zvideo/1993464932210074176
https://www.zhihu.com/zvideo/1993464932210074176/
https://www.zhihu.com/zvideo/1993464917559365652
https://www.zhihu.com/zvideo/1993464917559365652/
https://www.zhihu.com/zvideo/1993464920080134606
https://www.zhihu.com/zvideo/1993464920080134606/
https://www.zhihu.com/zvideo/1993464907652436909
https://www.zhihu.com/zvideo/1993464907652436909/
https://www.zhihu.com/zvideo/1993464912803025178
https://www.zhihu.com/zvideo/1993464912803025178/
https://www.zhihu.com/zvideo/1993464927462115321
https://www.zhihu.com/zvideo/1993464927462115321/
https://www.zhihu.com/zvideo/1993464934781166732
https://www.zhihu.com/zvideo/1993464934781166732/
https://www.zhihu.com/zvideo/1993464940321862042
https://www.zhihu.com/zvideo/1993464940321862042/
https://www.zhihu.com/zvideo/1993464960878129208
https://www.zhihu.com/zvideo/1993464960878129208/
https://www.zhihu.com/zvideo/1993464956176323269
https://www.zhihu.com/zvideo/1993464956176323269/
https://www.zhihu.com/zvideo/1993464948773376783
https://www.zhihu.com/zvideo/1993464948773376783/
https://www.zhihu.com/zvideo/1993464963080143926
https://www.zhihu.com/zvideo/1993464963080143926/
https://www.zhihu.com/zvideo/1993464951461938802
https://www.zhihu.com/zvideo/1993464951461938802/

设计保障:ThreadLocal 本身也做了一些努力,比如在 set()、get()、remove() 的时候,会尝试去清理那些 Key 为 null 的过期 Entry。但这是一种“被动清理”,不能完全依赖。
代码层面:尽量将 ThreadLocal 变量声明为 static final,这样它的生命周期就和类一样长,不会被轻易回收,减少了产生 null Key 的机会。但这并不能替代 remove(),因为线程池复用时,上一个任务的值可能会污染下一个任务。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 4:08:01

Nginx作用以及应用场景

一、Nginx 的作用 1. HTTP 服务器 Nginx 最初是作为一个 HTTP 服务器开发的&#xff0c;并且它仍然在这个领域中扮演着非常重要的角色。作为 HTTP 服务器&#xff0c;Nginx 主要用于静态内容的服务&#xff0c;如 HTML 文件、图像、视频和其他资源。与传统的 Apache HTTP 服务器…

作者头像 李华
网站建设 2026/4/29 4:09:22

MATLAB实现局部敏感哈希(LSH)学习算法详解

局部敏感哈希(LSH)学习算法在MATLAB中的实现与解析 局部敏感哈希(Locality-Sensitive Hashing,简称LSH)是一种经典的无监督哈希方法,广泛应用于大规模近似最近邻搜索任务。其核心优势在于实现极其简单、无需复杂优化,却能提供理论上的碰撞概率保证:原始空间中距离较近…

作者头像 李华
网站建设 2026/4/23 15:55:48

基于STM32MP157的工业网关实战:Modbus RTU转MQTT协议转换器设计

文章目录摘要一、项目架构设计硬件连接示意图二、开发环境搭建三、Modbus驱动实现文件&#xff1a;modbus_driver.c四、MQTT客户端开发文件&#xff1a;mqtt_client.c五、协议转换核心逻辑数据映射表示例文件&#xff1a;gateway_main.c六、系统测试方案压力测试结果七、完整技…

作者头像 李华
网站建设 2026/4/24 1:28:30

从零实现:基于vTaskDelay的灯光节拍控制

用好一个延时函数&#xff0c;让灯光跟着心跳跳动&#xff1a;深入理解 FreeRTOS 中的vTaskDelay你有没有试过在单片机上写一个简单的 LED 闪烁程序&#xff1f;可能第一反应就是&#xff1a;while (1) {HAL_GPIO_TogglePin(LED_PORT, LED_PIN);HAL_Delay(500); }看起来没问题&…

作者头像 李华
网站建设 2026/4/28 0:28:59

STC15系列与Keil C51结合的PWM输出全面讲解

深入掌握STC15单片机PWM输出&#xff1a;从寄存器配置到Keil实战调优在嵌入式控制的世界里&#xff0c;PWM&#xff08;脉宽调制&#xff09;是一项看似基础却极为关键的技术。无论是调节LED亮度、驱动直流电机&#xff0c;还是实现数字电源的闭环稳压&#xff0c;背后都离不开…

作者头像 李华
网站建设 2026/4/28 6:03:55

vivado安装包版本选择:核心要点一文说清

Vivado安装包版本怎么选&#xff1f;搞懂这几点&#xff0c;告别环境踩坑你有没有遇到过这样的情况&#xff1a;刚接手一个老项目&#xff0c;打开工程时弹出“Project file corrupted”&#xff1b;或者辛辛苦苦写完代码&#xff0c;综合到一半报错“Part not found”&#xf…

作者头像 李华