系统性能优化之磁盘篇 系统性能优化之磁盘篇磁盘作为计算机中速度最慢的硬件之一,常常是系统的性能瓶颈,优化磁盘一般能得到明显的提升~ 文章前部分以如何高效的传输文件来讨论针对磁盘的优化技术,如零拷贝、直接 IO、异步 IO等,后部分介绍 SSD 和 HDD 的区别,探讨如何编写对 SSD 友好的程序。 最简单的网络传输 最简单的方式的当然是找到文件存储的路径,创建一个固定的大小的缓冲区,每次读取缓冲区大小的文件内容, 2026-04-27 性能优化 > 通用 #性能优化 #磁盘
Netty如何高效使用内存 Netty 如何高效使用内存系统性能优化之内存篇 中提到了如何更好的使用内存,本篇以 netty 为例赏析 netty 中的内存使用技巧。 基本类型 vs 包装类Java 中的对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。在64位虚拟机中对象头就需要占用64bit的空间,比一些基本类型(byte、short、 2026-04-27 源码分析 > Netty #源码分析 #Netty #内存
数字证书与HTTPS 数字证书与HTTPS我们知道网络包是可以被截获的,那么如果涉及到敏感信息的发送,例如各种密码,就不能明文在网络上传输了,因此需要进行加密,即在网络上传输密文,到服务端后服务端经过解密进行后续操作。 加密加密分为两种 对称加密,双方使用相同的秘钥或者算法来进行加密解密,例如异或操作,客户端发送 111 给服务端,使用全 1 字符串进行异或操作,得到 000,服务端收到 000 后,使用全 1 字符 2026-04-26 #计算机网络 #HTTPS
系统性能优化之HTTP1.1篇 系统性能优化之HTTP1.1篇由于 HTTP 头部使用 ASCII 编码方式,这造成它往往达到几 KB,而且滥用的 Cookie 头部进一步增大了体积。与此同时,REST 架构的无状态特性还要求每个请求都得重传 HTTP 头部,这就使消息的有效信息比重难以提高。 在不升级协议的情况下,有 3 种优化思路:首先是通过缓存避免发送 HTTP 请求;其次,如果不得不发起请求,那么就得思考如何才能减少请求 2026-04-25 性能优化 > 通用 #计算机网络 #性能优化 #HTTP
系统性能优化之内存篇 系统性能优化之内存篇绝大部分的高级语言都是用 C 语言编写的,包括 Java,申请内存(堆外内存)必须经过 C 库,而C 库会通过预分配更大的空间作为内存池,来加快后续申请内存的速度,同时这种池化技术有很多优点,例如 内存池中可以利用享元模式将常用的对象一直保留着,减少重复申请导致的性能的顺耗等。但预分配更大的空间也可能导致 Java 进程的内存占用超出 Xmx 的限制。 隐藏的内存池当代码申请内 2026-04-24 性能优化 > 通用 #内存 #性能优化
系统性能优化之CPU篇 系统性能优化之CPU篇其实除了 CPU 的频率,多核架构以及多 CPU 架构对系统运行的性能也是很大影响的,那么该如何充分利用 CPU 呢? CPU 架构首先介绍一下当前主流的 CPU 架构,现在的系统基本都是多 CPU,一个 CPU 处理器中一般有多个运行核心,我们把一个运行核心称为一个物理核,每个物理核都可以运行应用程序。每个物理核都拥有私有的一级缓存(Level 1 cache,简称 L1 2026-04-23 性能优化 > 通用 #性能优化 #CPU
Oauth2的4种许可模式 Oauth2的4种许可模式Oauth 即 Open auth ,一种开放授权协议,通过为每个第三方软件和每个用户的组合分别生成对受保护资源具有受限的访问权限的凭据,也就是访问令牌,来代替之前的用户名和密码。而生成访问令牌之前的登录操作,又是在用户跟平台之间进行的,第三方软件根本无从得知用户的任何信息,使第三方软件调用大量 API 的时候,不再传输用户名和密码,从而减少网络安全的攻击面。 假如你是一 2026-04-22 #Oauth2
Linux-JDK-NIO源码分析 Linux JDK NIO 源码分析引言多路复用是一种模型,而实现这种模型有 select、poll 和 epoll,在 linux 下 NIO 的实现默认是 epoll 当一个 Socket 成功建立,客户端向服务端发数据,内核是最先知道这个 Socket 是可读的,但是业务层也想知道这个事情,那么怎么做呢? 借鉴观察者模式的思想,当这个事情发生了,内核就开始通知这个事情的监听者,也就是 epo 2026-04-21 源码分析 #IO模型 #源码分析
MybatisPlus配置联合主键 MybatisPlus配置联合主键背景是这样的,最近着手修改一个老项目,平时其他项目用的都是 JPA、倒不是不会用 Mybatis,只是这个项目是用来解析 xml 为对象并进行存储的,而且有的类字段特别多,觉得写 mapper 和 sql 太麻烦了,于是想到了 mybatis-plus(以下简称mp)。 本来以为很好解决的事情,没想到默认的 mp 不支持联合主键,于是查询了一些资料,有一个 myb 2026-04-21 #MybatisPlus #配置
云原生部署常见服务 云原生部署常见服务在开发过程中,经常需要自己进行一些小小的测试,亦或是简单的验证一些功能,简单功能使用公司的业务库还好,若是公司的业务库小众,或者测试的功能有危险情况,一般都希望能在隔离环境测试,虚拟机对于此场景太重了,用 Docker 轻量的启动一些服务非常方便。 该博客并非科普向,因此不再赘述 Docker、容器、Kubernetes 基础知识。 镜像拉取内网环境一般公司会自行搭建 Harbo 2026-04-20 云原生 #Kubernetes #Redis #Docker