- 博客(12)
- 收藏
- 关注
原创 Flutter Riverpod原理
实现跨 Widget 状态共享的核心在于“状态与 UI 分离”和“状态集中管理”。它将状态从 Widget 树中抽离出来,由一个独立的、全局可访问的容器进行托管和调度。这种方式不仅解决了状态共享的问题,还带来了出色的可测试性和类型安全。
2025-11-06 11:29:45
786
原创 Kafka Rebalance策略
策略工作原理优点缺点适用场景Range按主题逐个分配,计算n/consumer实现简单容易负载不均,尤其多主题时默认场景,主题和分区数较少所有分区全局轮询负载最均衡要求消费者订阅主题相同所有消费者订阅完全相同的主题Sticky追求均衡且最小化变更均衡且大幅减少Rebalance开销算法复杂生产环境首选,尤其频繁启停消费者时你可以实现。
2025-09-16 18:06:12
631
原创 联合索引下一些Mysql中容易理解错误的概念
最左匹配原则(Leftmost Prefix Principle)是数据库联合索引(多字段索引)的核心工作机制,指,不连续或跳过左侧字段的条件无法利用索引,直接影响查询效率。
2025-09-16 14:37:11
625
原创 堆存储文件分析
字段Shallow Size 计算逻辑Retained Size 计算逻辑对象头(12B) + 引用字段(6 * 4B=24B) + 填充(4B) = 40B自身(40B) + 所有独家支配的子对象总和 = 96BString (sn)固定结构:对象头+字段(hash,value引用,coder等)=24B自身(24B) + 其独家支配的byte[3]byte[3]对象头(12B)+长度(4B)+数据(3B)+填充(5B)=24B。
2025-09-15 19:01:01
1661
原创 Java对象内存布局全解析
若对象头 + 实例数据总大小不是 8 的倍数,则需填充至最近倍数。子类会包含父类的所有字段(包括私有字段),父类字段优先排列。数组对象额外包含 4 字节存储数组长度(即使关闭压缩指针)。高频创建的小对象(如 Kafka 消息)应尽量轻量化;指向方法区中对象的类元数据(Class 信息)。),将引用指针从 8 字节压缩至 4 字节。对象的所有成员变量(包括父类继承的字段)。头(12) + 字段 + 填充(8对齐)头(12) + 引用(4) + 填充。(大于 21 的最小 8 倍数)
2025-09-15 17:16:26
720
原创 Mysql中的char和varchar
特性CHAR(n)VARCHAR(n)长度类型固定长度可变长度空间占用始终占用n字符空间(有填充)占用:实际字符数 + 1~2字节(长度记录)空格填充存储时填充空格到指定长度n不填充空格尾部空格处理读取/比较时 通常去除 尾部空格尾部空格保留并参与比较存储效率长度固定不变时高;变化大时浪费大长度变化大时显著节省空间性能理论上固定位置操作可能快一点现代优化后差异极小。
2025-09-01 10:45:39
703
原创 原始快照(SATB)和增量更新(Incremental Update)
在垃圾回收(尤其是并发标记阶段)中,“漏标” 指的是并发标记过程中因应用线程修改对象引用,导致部分存活对象未被标记,最终被错误回收的问题。解决漏标的核心是跟踪并发标记期间的引用变化,确保所有存活对象都被正确标记。拦截引用修改操作,结合后续的补充标记阶段解决漏标问题,只是跟踪的侧重点不同,分别适应不同垃圾收集器的设计目标(如低延迟、高吞吐量)。SATB 是 G1、ZGC 等垃圾收集器采用的策略,核心思想是。,确保快照中的存活对象都被标记,即使后续引用发生变化。,确保新引用指向的对象被重新标记。
2025-08-21 10:41:43
1719
原创 G1垃圾收集器回收过程
G1 通过 “Region 划分”“并发标记”“收益优先的筛选回收” 实现了高吞吐量与低延迟的平衡,核心是在控制停顿时间的前提下,优先回收垃圾最多的 Region。其过程结合了新生代回收和混合回收,通过 Remembered Set 和 SATB 机制优化了标记效率,是 JDK 9 及以上默认的垃圾收集器,适用于大堆内存(如 8GB 以上)的应用场景。避免 Full GC 的长时间停顿,分批次回收老年代垃圾(如每次回收 10% 的高收益 Region)。(默认 200ms)调整回收策略,适应实时系统需求。
2025-08-21 10:30:20
1556
原创 G1会产生浮动垃圾吗
G1必然产生浮动垃圾:根源在于并发标记阶段用户线程的活动及SATB的保守策略。优化建议根据业务负载调整-XX:InitiatingHeapOccupancyPercent,避免堆占用过高;合理设置-XX:MaxGCPauseMillis,利用G1的软实时特性平衡吞吐量与停顿;监控Full GC频率,避免退化(如增大堆空间或降低阈值)。浮动垃圾是G1为实现低延迟付出的必要代价,但通过增量回收和动态调优,其影响远低于CMS,更适应高并发场景。
2025-08-20 23:17:26
666
原创 CMS为什么会产生浮动垃圾
根本原因:用户线程在并发标记和清理阶段持续运行,新产生的对象/垃圾无法被当前回收周期覆盖影响:可能导致空间不足和Concurrent Mode Failure优化方向:降低触发阈值(如),预留更多空间;或升级至G1/ZGC等支持全并发整理的收集器简言之,CMS的并发设计在减少STW的同时,牺牲了对"动态新垃圾"的实时处理能力,这是其追求低延迟的典型权衡。
2025-08-20 23:11:47
407
原创 Redis事务
Redis事务提供轻量级的原子操作,适合简单批量命令,但缺乏回滚和复杂逻辑支持;高并发或需条件判断的场景应优先选择Lua脚本。结合WATCH的乐观锁可有效解决超卖等并发问题,但需注意错误处理和数据补偿。
2025-08-20 22:45:58
327
原创 实现单例的几种方式
单例模式(Singleton Pattern)是一种创建型设计模式,其核心目标是确保一个类在整个应用程序生命周期中只有一个实例存在,并提供全局访问点。这种模式在需要控制资源访问、共享配置信息或管理全局状态时尤为重要。
2025-08-20 22:11:08
234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅