自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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) + 所有独家支配的子对象总和 = 96B​​String (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关注的人

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