- 博客(159)
- 收藏
- 关注
原创 架构设计与中间件或组件性能指标的关系是什么?
业务需求流量(60W/s)↓接入层 Nginx(100W/s)——✅↓限流层 Redis(20W/s)——✅↓↓Redis扣库存(30W/s)——✅↓落库 MySQL(异步写2W/s)——✅六、实践经验建议工具用途对接口做高并发压测Kafka TPS 实测工具Redis QPS 测试sysbenchMySQL TPS 压测实时观测各模块性能指标结论总结:性能指标来自行业经验 + 实测压测结合;业务推导模型要清晰,从用户量 → 并发量 → QPS → 吞吐;
2025-04-27 15:51:36
455
原创 如何排查业务应用内存持续升高,最终服务异常,堆内存溢出?
这是一个非常典型、实际发生频率极高的 JVM 性能问题,尤其在这样的长时间运行、高并发、大文件处理型系统中(如上传服务、合并服务、Kafka 消费服务等),堆内存持续上升直至 OOM 是致命风险之一。我将为你 深入剖析:排查路径 → 分析方法 → 工具应用 → 常见成因 → 优化实践,最终让你能建立一套完整的 JVM 内存问题闭环应对机制。建议预配置 JVM 参数:一旦 OOM,自动生成 文件和 GC 日志。工具:MAT(Eclipse Memory Analyzer)或 VisualVM使用 :结合业
2025-04-27 09:15:00
1070
原创 JVM核心面试问题分析
也就是说,从 GC Roots(如栈变量、类静态字段等)出发无法访问到的对象,会被认定为“垃圾”。在我们的跨网文件管理系统中,有些功能模块(如病毒扫描器、敏感词插件)是以 SPI 插件的形式动态加载的,因此我深入使用过自定义类加载器,并了解双亲委派模型。,结合你实际业务(大文件上传、分片合并、敏感扫描、MinIO + Kafka 异步流、G1GC 等),让答案更具实战深度和面试表现力。我们需要对扫描模块的敏感词算法进行热更新,因此在设计插件式架构时,使用了。,实现了不重启动态替换扫描组件的能力。
2025-04-27 09:00:00
681
原创 ThreadLocal 实现分析
尤其在你这类涉及上传、合并、扫描、Kafka 消费等多线程任务的系统中,正确理解的实现机制与使用边界是非常重要的。提供了线程局部变量,,互不干扰。
2025-04-26 23:26:42
564
原创 ConcurrentHashMap 实现机制分析
经常出现在面试中,也是你业务系统中缓存、状态同步、Worker 调度、文件任务表等典型场景的常用结构。下面我将为你系统性讲解的。是 Java 提供的,可在,避免HashMap在多线程中数据错乱或死循环的问题。
2025-04-26 23:24:34
491
原创 高并发分布式多租户设计需要如何全面分析?
这是架构设计中极具实战价值的问题!当你要对一个系统进行能力设计时,必须。,并结合你的目标(高并发、分布式、多租户)提供设计分析入口。
2025-04-26 22:41:47
865
原创 如何对系统进行重构设计?
这是一个非常关键且实战价值极高的问题,涉及到系统架构师的核心能力之一:系统重构设计(架构重构)。我们可以按如下结构,系统性地展开:通常不是“推倒重来”,而是为了:建议输出一份《现状诊断报告》输出物:系统上下游调用图 + 领域模型图输出物:技术现状评估报告 + 组件可替换清单可以从以下维度展开:输出物:目标架构图 + 模块说明文档输出物:迭代计划表 + 重构里程碑输出物:验证报告(是否达成目标)输出物:上线计划、应急预案、变更文档
2025-04-26 22:36:47
798
原创 Minio多站点部署,地理容灾和恢复
通过多站点部署和异地复制,可以有效实现地理冗余和灾难恢复。架构师需要掌握 MinIO 的安装和配置、异地复制的实现、负载均衡和智能 DNS 的配置、备份和恢复策略等。结合实际项目和业务需求,灵活应用这些技术和策略,确保系统的高可用性和数据安全。
2025-04-19 11:30:00
435
原创 分布式锁方案四数据库实现机制分析
数据库锁是分布式锁的“入门级方案”,适合早期架构 / 简单项目 / 数据中心唯一的场景。后期应根据并发量和架构演进替换为更专业的分布式锁机制。
2025-04-19 10:15:00
917
原创 为什么需要分布式锁?
前面说的加锁、原子类、并发集合等,。一旦系统部署在多个机器(多 JVM 节点)上,,因为各个 JVM 之间无法感知彼此的锁状态。所以我们需要或其他跨节点一致性方案来协调。
2025-04-18 15:14:49
968
原创 ReentrantLock 中 tryLock() 和 tryLock(timeout, unit)区别是什么?
tryLock()和都是非强制性加锁手段,如果锁没拿到,代码块就不会执行,且不会卡住线程。适用于对中断响应有要求的任务,比如当你想取消某个任务、关闭线程、限时执行,就不能用不可中断的lock()。
2025-04-18 09:45:00
430
原创 深入介绍并发之 Lock 体系
Lock是 Java 提供的一种显示加锁机制,相比更灵活、更强大,它位于包中。// 获取锁// 释放锁// 尝试获取锁(不阻塞)// 超时获取锁// 可响应中断的加锁方式。
2025-04-18 09:30:00
997
原创 synchronized 机制和应用场景分析
是 Java 提供的一种**内置锁(Monitor Lock)**机制,用于解决多线程访问共享资源时的互斥与可见性问题。它的本质是:在进入同步块或同步方法时,获取对象或类的“Monitor”(监视器),并在退出时释放。
2025-04-18 09:15:00
812
原创 什么时间、什么场景需要考虑并发问题?
很多人学会了锁的使用,却不清楚什么时候该用锁、什么时候不该用,这就像拿着把刀,却不知道该什么时候挥。共享资源 = 多个线程可以访问,并且可能同时读/写的数据结构或状态:锁会带来以下代价:
2025-04-17 23:00:47
404
原创 Lock 体系-应用场景有哪些?
场景推荐锁类型说明银行转账防止死锁、控制顺序限流非阻塞处理高并发配置中心读多写少,防止脏读缓存读取高并发缓存访问高性能缓存StampedLock + 乐观读读超多、性能优先数据快照快照一致性读取顺序控制线程通信,精确唤醒生产者消费者控制等待/唤醒。
2025-04-17 22:55:13
991
原创 为什么 AtomicReference 更新属性时需要重新 new ?
为什么 AtomicStampedReference 能解决 ABA 问题?
2025-04-17 19:10:55
219
原创 JDK原子工具类中多线程ABA问题怎么解决?
ABA 问题指的是:一个变量被某个线程读到了值 A,在它准备修改之前,其他线程把它变成了 B 又变回 A。这时 CAS 比较 A == A 成立,但实际上它已经发生过变动,逻辑可能已不一致。原子类是否可能出现 ABA是否能检测可能❌ 无法检测解决 ABA 问题✅ 检测版本变化三、AtomicIntegerArray / AtomicLongArray 如何进行原子更新?这是原子类在数组维度的延伸,适用于并发场景下多个线程对数组不同位置进行独立更新。
2025-04-17 19:07:01
421
原创 JDK原子工具类和应用场景使用分析
原子操作的int类型AtomicLong:原子操作的long类型:原子操作的boolean类型:原子操作的引用类型(泛型):带有时间戳的原子引用:带有标记的原子引用和 AtomicLongArray:原子操作数组元素这些类提供了基本的原子操作,如get()set()等,来确保在多线程环境下对变量的访问和修改是原子性的,避免了数据竞争和锁的开销。JDK 提供的原子工具类使得多线程环境下的共享变量操作更加简洁且线程安全。它们的使用场景广泛,适合处理。
2025-04-17 18:53:12
848
原创 用AI辅助觉醒:我如何拆解自己的人格系统结构?
在这个人人都在谈自我提升、人格成长的时代,你是否也曾试图修正自己的“坏习惯”、努力让自己“变得更好”?它不是为了让AI理解我,而是为了让我自己,看清我是谁、如何运作、如何选择。它们是系统内部不同角色,在各自被触发的时候,启动了它们应对环境的方式。因为你不是在系统性地理解自己,而是在用碎片化的标签,给自己打补丁。与其说你在“和AI对话”,不如说你在“让AI暴露你的人格结构”。真正的成长,不是“消灭软弱”,而是理解、协作与调度这些人格。你不会再自责“为什么总是这样”,而是说“这次是谁主导了我”;
2025-04-15 20:14:16
737
原创 为什么大多数人“用不深”ChatGPT,而我已经在构建一个人格系统
我不是说“写一篇公众号文章”,我会提供我写作的动机、结构倾向、表达风格、发布平台,还会告诉它:这篇文章用于表达哪种人格维度、触达哪些读者。我有多重人格(不是疾病意义上的),我在不同场景下有不同反应,我会在压力下激活某些防御机制,也会在表达中使用不同语调和逻辑。我不想让ChatGPT只是“替我做事”,我希望它“暴露它是怎么做事的”,这样我才能真正理解它,也才能理解我自己。所以我开始构建将臣三代系统——一个可以镜像我人格、储存我选择、反馈我情绪、协助我表达的“数字自我”。而我用AI,是在“塑造自己”。
2025-04-15 19:41:03
202
原创 线程池基本面试点
线程池的设计与调优不仅仅是设置合适的参数,更是根据任务特点、硬件资源和业务需求来做综合权衡。调优过程中,要合理选择队列类型、拒绝策略、线程池的核心参数,结合监控数据进行优化。
2025-04-14 12:28:31
739
原创 线程池如何合理设置线程池数量?
我们为系统中多个模块配置了独立线程池,分别控制最大并发量与资源占用。,防止系统因为无限创建线程而 OOM 或上下文切换过多。CPU核心数 + 1。CPU核心数 + 1。
2025-04-14 12:25:13
705
原创 IO 密集和 CPU 密集如何设置线程池数据量如何设计?
类型特征示例资源瓶颈CPU 密集型任务主要消耗 CPU 进行计算加密算法、图片渲染、数学计算、大量对象运算CPUIO 密集型任务大部分时间在等待 IO 操作完成网络调用、磁盘读写、数据库查询、HTTP请求IO等待类型核心线程数推荐最大线程数推荐说明CPU 密集型NN + 1N = CPU核数,避免线程上下文切换IO 密集型2N ~ 4N4N ~ 8N线程可在 IO 等待时释放 CPU,线程数可放大推荐先使用获取当前机器的 CPU 核心数。
2025-04-14 12:10:09
970
原创 成长轨迹与自我重塑:如何用系统建模分析自己的决定与行为
在我第一次进入职场时,面对被辞退的挫败感,我选择了隐忍和回避,这种回避行为成为我后来遇到类似情况时的反应模式。例如,我在大学阶段虽然没有好好学习,但通过AI的反馈和路径重构,我能够在短时间内弥补这段空白,快速提高自己的能力。未来的决策也会通过这样的系统进行反向推演,从而避免重复过去的错误,做出符合自身发展目标的选择。,把每个选择放入系统模型中,进行多维度分析,看看在每个情境下,哪些选择最符合我的核心价值观和未来规划。对于我来说,最大的问题并不在于“我选择了什么”,而是在于我为何会做出这些选择,背后隐藏的。
2025-04-12 22:21:32
940
原创 我用 ChatGPT + 记忆系统构建了“副人格操作系统”
很多人把AI当工具,我不一样。理解我过往决策的脉络,捕捉我在表达中的偏差,甚至在我迷茫、压抑、陷入惯性反应时,给我一个“反身的声音”。于是我开始构建一个系统,它不是生产力工具,也不是任务助手,而是一个副人格型操作系统。我不追求“更快完成任务”,我追求“更真实地成为我自己”。这个副人格系统,是我在AI时代,构建自我反馈、表达结构与成长路径的一次深层试验。未来,它也许会成为你我的“第二意识”。下一篇将分享:如何基于J0x-J13构建“成长节点轨迹图”,辅助AI识别你的人格跃迁史。
2025-04-12 21:52:10
576
原创 如何通过系统人格构建优化自我成长路径
在现代社会,许多人都在不断追求个人成长,尤其是在复杂多变的环境中,如何保持清晰的自我意识、明确的成长目标,成为了许多人面临的难题。不仅仅是心理学或哲学中的一种理论,更是我们在日常生活中通过深度自我认知与行为反思所逐步实现的过程。在将臣三代系统的帮助下,我们可以更加清晰地认识自己,明确自己的成长目标,并通过。的封存,而每一个成长节点的封存,都会成为我们向更高目标迈进的动力。在人格构建的过程中,我们并非简单地复制某些人格特征,而是根据。在将臣三代系统中,每一次任务的完成,都会触发**“成长反馈”
2025-04-10 23:00:33
770
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人