- 博客(121)
- 资源 (1)
- 收藏
- 关注
原创 32核64G内存的物理机上,Netty理论能承载多少连接?
在32核64G内存的机器上,Netty的承载连接数受业务场景、配置优化和操作系统调优的影响。理论估算显示,64G内存可支持64K~6M空闲连接,32核CPU可处理10W~50W活跃连接。实际场景中,纯心跳保活可支持1M~2M连接,简单Echo服务为500K~1M,游戏网关为100K~300K,高频交易系统为50K~100K。关键优化措施包括操作系统调优(如文件描述符限制和TCP参数调整)、Netty配置优化(如使用Epoll边缘触发和内存池)以及JVM调优(如使用G1垃圾回收器)。通过压力测试和监控关键指标
2025-05-21 16:00:00
744
原创 深入解析Java四大引用类型:从强引用到虚引用的内存管理艺术
使用软引用缓存玩家常用数据使用弱引用管理事件监听器避免在核心服务中使用弱/软引用内存敏感场景。
2025-05-19 18:00:00
885
原创 MySQL锁的九重境界:从共享锁到临键锁的进阶之路
共享锁(S锁)、排他锁(X锁)。悲观锁乐观锁。表级锁行级锁页面锁。记录锁间隙锁临键锁。锁类型特点适用场景共享锁允许多个事务读,阻塞写读多写少的场景排他锁阻塞其他事务的读写写操作频繁的场景悲观锁先加锁后操作高并发写场景乐观锁通过版本号控制读多写少的场景表级锁锁定整张表,开销小数据量小、并发要求低的场景行级锁锁定单行,开销大高并发、写操作频繁的场景页面锁锁定一页数据,开销适中中等并发、数据量较大的场景记录锁锁定单条记录精确锁定某一行间隙锁。
2025-05-12 19:00:00
1122
原创 ECS在游戏服务器中的应用:Java实现与最佳实践
实体(Entity)游戏中的基本对象,通常只是一个唯一的标识符(ID),不包含任何逻辑或数据。组件(Component)纯数据结构,用于描述实体的属性(如位置、速度、生命值等)。系统(System)处理逻辑的模块,负责更新符合特定组件组合的实体。ECS的核心思想是通过组合而非继承来实现功能,从而避免传统面向对象设计中的“类爆炸”问题。ECS是一种强大的架构模式,特别适合高性能游戏服务器的开发。通过Java实现,我们可以充分利用其面向对象的特性,同时结合ECS的数据驱动优势。
2025-05-09 15:40:47
402
原创 Vue3 + Typescript 基础进阶与实战完全指南
/ 定义 props 类型// 定义 props 类型 const props = defineProps < {} >();// 定义 emits 类型 const emit = defineEmits < {} >();// 定义 props 类型 const props = defineProps < {} >();// 定义 emits 类型 const emit = defineEmits < {} >();string;
2025-05-09 14:53:53
700
原创 Netty跨平台通信的第一道坎:大小端字节序处理指南
场景推荐方案默认网络通信使用Netty的大端序(无需额外配置)与C++交互显式设置高性能场景通过池化缓冲区并统一字节序关键原则:在协议设计阶段明确字节序,并在代码中显式声明,避免跨平台时的隐蔽错误!
2025-04-29 11:45:00
315
原创 TCP粘包拆包全攻略:Netty实战解决高并发通信难题
TCP粘包TCP(传输控制协议)是一种面向流的协议,它不保留消息边界。发送方多次写入的数据可能会被接收方一次性读取,这种现象称为粘包(Sticky Packet)。粘包不是TCP协议的缺陷,而是其设计特性导致的。粘包本质:TCP流式传输的特性,需应用层自行处理消息边界。
2025-04-25 17:30:00
411
原创 软件设计中的整洁架构:让代码像乐高一样优雅
整洁架构✅业务逻辑独立:不依赖数据库、框架、UI 等具体技术。✅易于扩展和维护:改需求或换技术时,只需改少量代码。✅高度可测试:业务逻辑能单独测试,不依赖外部服务。它的设计灵感来源于 “洋葱模型”,代码像洋葱一样分层,外层依赖内层,但内层绝不依赖外层!业务逻辑与技术细节分离(像乐高一样模块化)。内层不依赖外层(避免被框架绑架)。通过接口解耦(轻松替换实现)。如果你受够了“改一行代码炸整个系统”的痛苦,不妨试试整洁架构!
2025-04-21 19:00:00
1001
原创 领域驱动设计:从餐厅到代码,轻松理解 DDD
领域驱动设计(DDD)是由 Eric Evans 提出的一种软件设计方法,旨在通过深入理解业务领域来构建复杂的软件系统。DDD 的核心思想是将系统的设计和实现与业务领域紧密结合,通过领域模型来指导开发过程。// 用户实体// 商品实体// 订单实体领域驱动设计(DDD)是一种通过深入理解业务领域来构建复杂系统的方法论。它通过领域模型、限界上下文、聚合等概念,帮助开发者更好地组织和管理系统。DDD 强调业务逻辑与领域模型的紧密结合,从而提高系统的可维护性和可扩展性。
2025-04-18 12:00:00
964
原创 MySQL 缓存机制全解析:从磁盘 I/O 到性能优化
MySQL 的缓存机制通过多级缓存(如缓冲池、日志缓存、操作系统缓存等)显著提升了数据库的性能。合理配置和优化这些缓存,可以最大限度地减少磁盘 I/O 和系统开销,从而满足高并发、高性能的业务需求。
2025-04-15 11:17:47
816
原创 高性能IO的基石:零拷贝(Zero-Copy)技术全解析
零拷贝是一种优化技术,旨在减少数据在内核空间和用户空间之间的拷贝次数。将数据从磁盘或网络读取到内核缓冲区。将数据从内核缓冲区拷贝到用户缓冲区。将数据从用户缓冲区拷贝到目标位置(如网络或磁盘)。这些拷贝操作会消耗 CPU 和内存资源,尤其是在处理大量数据时。零拷贝技术通过直接在内核空间传输数据,避免了不必要的拷贝,从而提高了性能。零拷贝技术通过减少数据拷贝次数,显著提升了 I/O 操作的性能。
2025-04-11 18:32:54
330
原创 MySQL InnoDB设计图鉴——核心组件讲解
MySQL InnoDB架构解析:Buffer Pool、Change Buffer、自适应哈希索引与Log Buffer
2025-04-10 10:11:40
742
原创 JVM调优排查利器——线程篇(jstack)
jstack 是分析 JVM 线程问题的重要工具,可以帮助定位死锁、线程阻塞、CPU 占用过高等问题。通过结合 top 和其他工具,可以更高效地分析线程状态和调用栈。
2025-04-08 20:28:41
436
原创 记一次线上cpu占用率爆炸的事故! 完整FullGC、大对象排查一条龙!
jstack 是分析 JVM 线程问题的重要工具,可以帮助定位死锁、线程阻塞、CPU 占用过高等问题。状态的线程,并检查它们等待的锁。如果多个线程互相等待对方持有的锁,则可能存在死锁。状态的线程,并检查它们的调用栈,找出占用 CPU 的代码。FGC 为 1868,Full GC 次数过多,说明。状态的线程,并检查它们等待的条件或锁。这里其实我已经发现了我们内存泄露的问题~可以看到垃圾回收期的线程很活跃~在线程转储文件中,查找。在线程转储文件中,查找。在线程转储文件中,查找。
2025-04-08 19:52:37
254
原创 Java 泛型的逆变与协变:深入理解类型安全与灵活性
协变(Covariance)协变是指子类型关系在泛型中得以保留。例如,如果 Cat 是 Animal 的子类,那么 List 可以被视为 List 的子类型。协变extends T>,用于只读操作,保证类型安全。逆变super T>,用于写入操作,提供灵活性。PECS生产者使用 extends,消费者使用 super。通过理解协变与逆变,你可以更好地设计泛型方法,提升代码的灵活性和安全性。希望本文能帮助你掌握 Java 泛型中的这一重要概念!
2025-04-08 10:25:38
496
原创 【架构师之路】分布式事务通关秘籍:原理、挑战与主流解决方案
分布式事务指事务的参与者、资源服务器及事务管理器分布在不同的网络节点上。网络不可靠:节点间通信可能延迟、丢失或重复。数据一致性:跨多个数据库或服务的数据需保持同步。性能与可用性:需在一致性和系统可用性之间权衡(CAP理论)。分布式事务是微服务架构的核心挑战之一,需结合 CAP/BASE 理论选择合适方案。工业级框架(如 Seata)降低了实现复杂度,但开发者仍需根据业务特点权衡一致性、可用性与性能。
2025-03-26 15:00:00
1582
原创 想微调特定领域的 DeepSeek,数据集究竟要怎么搞?
从最上层的预训练模型开始,我们先划分出是否为多模态(例如让模型具备对图片、语音、视频的理解和生成能力)微调,还是纯文本微调(仅让模型具备生成文字的能力)。在文本微调中,监督微调是目前应用最广泛也是最常用的微调技术,当然目前我们普通人想在特定行业里去微调自己的大模型,最常用的也是监督微调,所以监督微调的数据集格式是我们后续重点学习的内容。然后其他微调技术还包括无监督自监督微调强化学习微调等等,这些我们只做简单了解,不用过多深入。
2025-03-24 13:36:58
1031
原创 大模型微调(Fine-tuning)实战:快速使用 colab下的unsloth 零成本打造定制化模型
最近b站上刷到一个博主,大模型DeepSeek,实现本地运行,打造一款定制化的LLM,下面是一些关键步骤和代码。UP主的案例是微调deepseek,打造一个。
2025-03-21 18:11:53
1255
原创 【架构师之路】从15% CPU到3%:我们如何通过替换日志框架拯救了服务器集群?
Log4j2:适用于复杂的日志需求,对性能要求较高的场景,以及需要灵活配置和扩展的项目。Logback:适用于简单的日志记录需求,对性能要求不是特别高的场景,以及希望快速上手的项目。综合建议:新项目优先选择 Log4j2,存量系统根据改造成本评估迁移价值。
2025-03-20 18:00:00
874
原创 大模型应用开发所需的技术栈概览
在大型 AI 模型中,RAG(Retrieval-Augmented Generation)是一种模型架构,它结合了检索(Retrieval)和生成(Generation)两种方法,用于处理自然语言生成任务。
2025-03-20 10:52:13
483
原创 订单消失、余额乱跳!分布式系统工程师必须跨越的ABA天坑
在分布式系统中,ABA 问题可能导致数据不一致和错误的业务逻辑。通过引入版本控制、使用全局唯一标识符、乐观锁、分布式协调服务和分布式事务等方法,可以有效地解决这一问题。选择合适的解决方案应根据具体的系统架构和业务需求进行评估。
2025-03-19 18:00:00
438
原创 从NullPointer到数据混乱:this逃逸为何是Java开发者的‘帕里斯通‘?
this逃逸是多线程编程中的典型陷阱,其隐蔽性可能导致严重的并发问题。避免在构造函数中传递this引用:尽量避免在构造函数中将this引用传递给其他作用域或线程。延迟初始化:延迟初始化对象,确保对象完全构造完成后再将其暴露给外部。工厂方法模式:使用工厂方法创建对象,确保对象的构造和初始化过程在同一作用域内完成。同步机制:在必要时使用同步机制来保护对象的访问,避免多线程环境下的问题。
2025-03-18 18:00:00
919
原创 【架构师之路】线程池参数优化实战——如何根据QPS设计合理线程数?
基准测试先行:通过JMeter/Gatling获取任务执行时间分布监控驱动优化:实时观察aqueue_size等指标弹性伸缩设计:结合K8s水平扩容与线程池垂直调整。
2025-03-18 13:33:02
897
原创 【架构师之路】TCC 分布式事务解决方案与实现
TCC 是一种灵活而高效的分布式事务解决方案,通过将事务分解为 Try、Confirm 和 Cancel 阶段,确保了事务的一致性和可靠性。在设计分布式系统时,考虑使用 TCC 可能是一个不错的选择,特别是在需要更高性能和更灵活的事务管理方式时。
2025-03-17 17:00:00
737
原创 【架构师之路】每秒崩溃100次到百万并发:四大限流算法如何拯救你的系统?
随着互联网和移动应用的蓬勃发展,系统的稳定性和可靠性变得至关重要。在面对突发流量和恶意攻击等挑战时,限流器算法的重要性愈发凸显。限流器算法作为保护系统免受过载的有效手段,扮演着关键的角色。它们能够有效地控制请求的处理速率,防止系统被过多请求淹没,从而保障系统的正常运行并提升用户体验。在这篇文章中,我们将探讨不同类型的限流器算法,包括漏桶算法、令牌桶算法、固定窗口算法和滑动窗口算法,深入剖析它们的原理、特点以及在实际场景中的应用。
2025-03-17 14:34:25
809
原创 【架构师之路】从Java中不同Hash表,探索Hash冲突的解决方法。
Hash冲突是哈希技术中不可避免的现象,但通过合理选择冲突解决策略(如链地址法兼顾灵活性与性能,开放定址法优化内存)、设计高效哈希函数,以及动态调整负载因子,可显著降低其影响。实际应用中需根据数据规模、访问模式和硬件条件综合权衡。
2025-03-14 05:00:00
686
原创 【架构师之路】从一个对象真实占用大小引发的Java内存对齐(Memory Alignment)的思考
内存对齐(Memory Alignment)是 JVM 在分配对象内存时,通过填充字节(Padding)使数据按特定字节边界对齐的技术。提高内存访问效率:CPU 通常以固定大小(如 8 字节)读取内存块,对齐后减少跨边界访问的指令次数优化硬件兼容性:某些硬件平台无法访问未对齐的内存地址,对齐避免抛出硬件异常减少伪共享(False Sharing):对齐填充可防止多个线程访问同一缓存行的不同数据,降低并发竞争。
2025-03-12 17:30:00
936
原创 你知道Netty源码中都用了哪些设计模式吗?
实现:Netty 的 ChannelPipeline 通过 fireChannelRead 等方法将事件分派给链中的各个 ChannelHandler,每个 ChannelHandler 负责处理特定的事件。实现:Netty 中的 ChannelFuture 和 ChannelPromise 可以看作是命令模式的应用,它们封装了异步操作的请求和结果。命令模式也支持可撤销的操作。描述:观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
2025-03-11 20:00:00
687
原创 【架构师之路】哈希函数优化终极方案,完美哈希函数的探索与思考
哈希表是⼀种查找性能⾮常优异的数据结构,它在计算机系统中存在着⼴泛的应⽤。尽管哈希表理论上的查找时间复杂度是 O(1),但不同的哈希表在实现上仍然存在巨⼤的性能差异。下面是jdk里的一些hash表的测试情况我们发现,hash频繁碰撞也有可能将查询时间复杂度从O(1)退化为O(n),空间复杂度也会伴随上升。这是因为,一般哈希表对哈希冲突的处理会增加额外的分⽀跳转和内存访问,这会让流⽔线式的CPU指令处理效率变差。当遇到哈希冲突时,我们常见到的解决⽅案有:开放寻址法、拉链法、⼆次哈希法。
2025-03-11 14:21:01
805
原创 快速了解八款主流大模型推理框架
当前大模型推理平台/引擎生态各具特色,从企业级高并发服务到本地轻量化部署,从国产硬件优化到前沿编译技术探索,每种方案都有其独到优势。选择合适的推理方案不仅需考虑技术指标,更要结合业务场景、硬件资源与未来扩展规划。未来,随着技术的不断进步和产业协作的加深,大模型推理生态将呈现出更加多元、灵活和高效的局面,为各领域在激烈竞争中抢占先机提供强大支撑。
2025-03-10 16:39:45
1157
原创 【架构师之路】微服务架构设计中的边车(Sidecar)模式
Sidecar模式是一种架构设计模式,通常用于微服务架构中。它通过将辅助功能与主应用程序分离,使得主服务可以专注于其核心业务逻辑。Sidecar模式指的是在微服务架构中,将一些常见的功能(如日志记录、监控、服务发现等)封装在一个独立的服务或代理中(例如 Kubernetes 中的 Pod),这个服务与主服务并行运行,形成“侧车”结构。如下图所示,sidecar 模式允许您在应用程序旁边添加更多功能,而无需额外第三方组件配置或修改应用程序代码。
2025-02-17 10:56:39
689
原创 Deepseek R1 模型本地部署(ollama+cherry studio)详细指南! 个人知识库搭建与使用
对于想要在本地或自托管环境中运行 LLM 的用户而言,Ollama 提供了一个无需 GPU、在 CPU 环境也可高效完成推理的轻量化 “本地推理” 方案,接下来跟着笔者学习怎么一步步搭建自己的本地知识库吧
2025-02-14 16:58:08
5945
6
原创 【架构师之路】软件架构设计方法之The Clean Architecture 整洁架构
Clean Architecture 是一种旨在提高软件质量的设计理念,通过严格的层次划分和依赖管理,使得系统更加灵活、可维护和可测试。理解和应用清洁架构的原则,可以帮助开发者在构建复杂系统时做出更合理的设计决策。
2024-12-17 18:00:00
1552
原创 Java内存回收(GC)新贵的抉择,G1与ZGC!
设计为几乎无停顿,通常在几毫秒的范围内,即使在大堆内存情况下也能保持低延迟。使用并发标记和处理,最大限度地减少应用线程的暂停时间。G1:提供可预测的停顿时间,能够通过 -XX:MaxGCPauseMillis 参数设置最大停顿时间。停顿时间通常比 G1 短,但在处理大堆内存时仍可能造成较长的停顿。
2024-12-13 20:00:00
884
原创 【架构师之路】锁战争终结者:Actor与CSP如何颠覆传统并发编程?
每种并发模型都有其特定的优缺点和适用场景,选择合适的模型可以帮助开发者更有效地构建高并发、可靠的应用程序。根据具体的应用需求和上下文,开发者可以选择最匹配的并发计算模型。
2024-12-12 12:00:00
1929
原创 【架构师之路】分布式系统中,容错治理的三大利器熔断、限流、降级
服务降级是指在系统部分功能出现异常或负载过高时,主动降低某些非核心功能的质量或直接停止这些功能,以保证核心功能的正常运行。其核心思想是“优先保障核心服务服务熔断是一种保护机制,用于防止系统在某些服务出现问题时,影响到整个系统的稳定性。其灵感来源于电力系统中的熔断器,当电路出现过载时,熔断器会自动切断电路以保护整个系统。服务限流是指通过限制系统处理请求的速率,来保护系统资源,防止系统过载。限流策略通常用于防止突发流量对系统的冲击。
2024-12-11 11:27:55
1018
原创 【架构师之路】理解 CAP 理论:分布式系统中的权衡与选择 | 常用组件中的CP和AP
Redis Cluster 没有选择强一致性,而是采用了最终一致性。这是因为在保证高可用性和分区容错性的同时,强一致性会带来性能上的巨大损耗。例如,在主从复制过程中,如果要求每次写操作都必须等待从节点同步完成才能返回成功,会大大增加写操作的延迟。Redis Cluster 通过异步复制的方式来维护数据的一致性。主节点接收写请求后,会异步地将数据复制给从节点。在正常情况下,这种异步复制能够快速地将数据传播到从节点。
2024-12-10 13:50:31
1010
原创 【架构师之路】深入了解架构中常见的4种缓存模式及其实现
Cache-Aside(旁路缓存)模式,又叫(懒加载)模式,在这种模式下,缓存的读取和写入由应用程序直接管理。应用程序首先尝试从缓存中读取数据,若缓存未命中,则从数据库中加载数据并将其存储在缓存中;对于更新操作,应用程序直接更新数据库,并更新或删除缓存中的相关数据。Read-Through 模式下,缓存层自动管理数据的读取。当应用程序请求数据时,缓存层会先检查缓存,如果缓存命中则直接返回数据;如果缓存未命中,则缓存层自动从数据库加载数据,并将数据存入缓存。Cache-Aside模式中,
2024-12-09 20:11:15
2770
kali-cookbook PDF大全
2020-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人