- 博客(84)
- 收藏
- 关注
原创 系统性能优化-10 分布式系统
分布式系统性能优化可通过牺牲一致性提升性能,主要采用缓存和副本同步策略。AKF立方体提供X轴(水平复制)、Y轴(功能拆分)和Z轴(用户信息分区)三种扩展维度。一致性哈希算法降低扩缩容影响,NWR算法通过读写节点配置平衡性能与一致性。这些方法各有适用场景,需根据系统需求权衡选择。
2025-07-03 15:21:24
441
原创 系统性能优化-9 HTTP1.1
HTTP1.1优化可从三方面入手:缓存(客户端/代理缓存,利用Etag验证过期资源);减少请求次数(代理处理重定向、合并CSS/JS等小文件);压缩响应(无损压缩如gzip/br,有损压缩图片音视频)。
2025-07-01 17:18:37
877
原创 系统性能优化-8 TCP缓冲区与拥塞控制
TCP 的缓冲区该如何配置,如何减少小请求的传输次数,不同的拥塞控制算法有什么区别,基于测量的拥塞算法一定更好吗
2025-06-30 11:35:37
737
原创 系统性能优化-7 TCP 四次挥手
文章详细分析了 FIN-WAIT1、FIN-WAIT2、CLOSE-WAIT、LAST-ACK 和 TIME-WAIT 等状态及其参数配置,包括tcp_orphan_retries、tcp_max_orphans、tcp_fin_timeout、tcp_max_tw_buckets、tcp_tw_reuse 等参数,并给出调整建议。
2025-06-27 14:49:00
803
原创 系统性能优化-6 TCP 三次握手
TCP 三次握手中有哪些可以优化的地方,三次握手可能占据一个 Http 请求 10% 到 30% 的时间,该怎么优化?TFO 技术是什么?
2025-06-26 14:15:59
1061
原创 Redis 源码分析-Redis 中的事件驱动
select、poll、epoll 的实现是怎么样的,每个机制中的关键函数都有哪些参数以及参数的含义是什么,三者都有什么优缺点,Redis 是如何实现 IO 多路复用的
2025-06-23 16:57:10
921
原创 系统性能优化-3 内存池
C 库内存池通过预分配大空间提升内存申请速度,但 Ptmalloc2 在多线程环境下预分配 64MB/线程,可能消耗大量内存,可通过设置 MALLOC_ARENA_MAX 限制或替换为 TCMalloc 优化。栈内存分配比堆更快但容量有限,建议根据场景选择内存分配策略。
2025-06-19 15:43:33
925
原创 Nginx-4 Nginx 的7层反向代理
与正向代理(客户端配置)不同,反向代理对客户端透明。处理流程包括:接收请求→负载均衡→转发到上游服务器。通过合理配置中间的一些参数,可以优化代理性能,如启用 keepalive 减少TCP 握手,调整缓冲区大小平衡内存与效率等。
2025-06-18 16:53:24
920
原创 系统性能优化-2 CPU
本文探讨了CPU架构对系统性能的影响及优化方法。现代CPU采用多核架构,每个物理核拥有私有L1、L2缓存和共享L3缓存,缓存访问速度远快于内存。NUMA架构下远端内存访问会增加延迟。提升性能的关键在于提高缓存命中率:数据缓存可通过优化数据结构访问模式(如顺序遍历数组),指令缓存可借助分支预测优化条件判断。绑核技术能缓解NUMA问题,但需权衡资源竞争。实际案例展示了Nginx、Redis等系统如何利用CPU特性优化性能。
2025-06-18 08:36:48
621
原创 Redis 常用配置实践
文章主要解决以下常见问题:1: 使用 JSON 序列化替代默认 JDK 序列化,避免 redis-cli 查看数据出现乱码;2: 通过自定义 Key 前缀序列化器实现多项目共用 Redis 集群时的数据隔离;3: 利用 ApplicationRunner 在项目启动时预加载热点数据到 Redis
2025-06-16 14:46:15
321
原创 Nginx-2 详解处理 Http 请求
Nginx通过模块化设计高效处理 HTTP 请求,将流程划分为 11 个阶段,执行顺序由 ngx_modules.c 文件定义,每个阶段都有其特有功能和对应配置项,这种分层处理机制提供了高度灵活性和性能优化空间。
2025-06-15 15:40:56
1017
原创 【Bug】定时任务中 Jpa Save 方法失效
在多数据源配置的项目中,定时任务内调用 JPA 的 save 方法无效,但通过 Controller 调用正常
2025-05-29 17:33:27
954
原创 Nginx-1 初识 Nginx
摘要:本文介绍了Nginx的适用场景(静态资源托管、反向代理、API服务)和主要优点(高并发、高性能、可扩展性等)。详细讲解了Nginx的四个组成部分,并提供了从源码编译安装Nginx的具体步骤。文章还包含常用Nginx命令和使用方法,如启动服务、验证配置、热部署更新等操作指南。最后展示了如何在不中断服务的情况下进行 Nginx 版本升级的热部署过程。
2025-05-28 13:40:16
838
原创 软考-软件工程开发模型
软件工程开发模型是指导软件生命周期中各项任务有序进行的模型。常见的模型包括瀑布模型、原型化模型、螺旋模型、敏捷模型、构件组装模型、V模型、W模型和快速应用开发模型(RAD)。文章对各类模型的基础知识进行总结归纳,并指出了部分模型的适用场景。
2025-05-19 22:58:57
807
原创 Mybatis-Plus 适配联合主键
本文介绍了如何在Mybatis-Plus中适配联合主键,通过引入mybatisplus-plus(mpp)工具来解决Mybatis-Plus默认不支持联合主键的问题。首先,需要在项目中引入Mybatis-Plus和mpp的依赖,并确保版本匹配。接着,在实体类中使用@MppMultiId注解来标识联合主键字段,并在Mapper中继承MppBaseMapper。对于简单的持久化操作,可以直接使用MppBaseMapper提供的方法,如updateByMultiId。如果需要批量操作,可以定义Service并继承
2025-05-19 11:49:20
1580
2
原创 详解 Https 和加密、摘要、签名、数字证书
Https 的流程是怎么样的?Https 怎么结合对称加密和非对称加密来实现?和 数字证书 、签名、摘要有什么关系?
2025-04-09 10:26:55
999
原创 详解套接字 Socket 与网络 IO 模型演进
学 redis 要看网络模型,学 nginx 要看网络模型,学 tomcat 要看网络模型,学 netty 要看网络模型,网络模型里的 select、epoll、poll 都是什么呢?如何一步一步演进来的?
2025-03-21 15:20:06
970
原创 ARP 与 DHCP 协议详解与抓包分析
网络中的请求可以有下层没上层,但一定不会有上层没下层,ARP 协议就是用来解析 IP 地址获取更下层的 mac 地址的,那么 IP 地址是怎么来的?需要经过哪些步骤呢
2025-03-18 10:34:54
425
原创 Redis 源码分析-内部数据结构 quicklist
quicklist 是 Redis 对外暴露的 list 数据结构的内部实现,经常被当作队列或栈使用,最常用的操作就是在两端进行增删,那么如何优雅的使用链表来进行实现呢?链表中指向前驱节点和后向节点的指针能不能省略?如何兼顾内存碎片和查找性能呢?
2025-03-14 13:55:07
511
原创 Redis 源码分析-内部数据结构 ziplist
如果提到双向链表,我们应该很熟悉,那么 redis 如何实现双向链表呢,和普通的双向链表有什么区别呢,为什么说 redis 的 ziplist 充分体现了 redis 对内存的高效利用?
2025-03-13 15:41:21
889
原创 Redis 源码分析-内部数据结构 intset
intset 的结构是什么样的?什么时候使用 intset 什么时候使用 dict?和 ziplist 的比较?并、交、差集的计算?
2025-03-02 16:04:13
1041
原创 Redis 源码分析-内部数据结构 robj
redis 键值数据库中的值是怎么存储的?怎么表示不同数据类型?怎么表示同一数据类型的不同编码方式?为什么 embStr 的最大长度是44字节?少于44字节就一定是 embStr 编码方式吗?
2025-02-28 16:18:02
606
原创 Redis 源码分析-内部数据结构 SDS
C 语言里的字符串其实就是 char *,那 Redis 也是这样实现的吗?如果不是的话,Redis 为什么要单独设计数据结构来存储字符串呢?与原生的 C 语言字符串相比,Redis 中的 SDS 有哪些优势?怎么实现的?
2025-02-27 11:33:41
1060
原创 以 Tomcat 为例分析 Java 中的线程池
为什么会有池的概念?线程池为什么一定要根据需要自定义创建?Tomcat 如何实现线程池优先创建非核心线程而不是优先加入队列?为什么Tomcat使用无界队列还不担心OOM?线程池的最佳实践是什么?
2025-02-24 12:22:21
1072
原创 Java 常见 Bean 映射工具及使用
工作中,我们经常需要将对象转换成不同的形式以适应不同的api,或者在不同业务层中传输对象而不同分层的对象存在不同的格式,因此我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型。进行这种转换除了手动编写大量的get/set代码,还可以使用一些方便的类库。
2025-02-14 11:23:50
1107
原创 Java 中的日志系统
Java 中的日志是怎么工作的,SLF4J: Class path contains multiple SLF4J bindings,log4j-slf4j-impl cannot be present with log4j-to-slf4j,为什么会出现这样的错误,如何解决,日志系统中的桥接和适配是什么意思
2025-02-12 13:05:22
682
原创 Redis 源码分析-内部数据结构 dict
redis中的dict数据结构详解,redis初始化时ht的容量,什么是渐进式hash,redis如何解决hash冲突,redis中扩容的实现是怎么实现的
2025-01-09 16:29:51
1009
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人