Tcpdump安装与使用 Tcpdumptcpdump 是什么1988 年,劳伦斯伯克利国家实验室的四位工程师编写出了 tcpdump 这个殿堂级的工具。它可以工作在各种 Unix 类的操作系统上,包括 Linux、FreeBSD、macOS、Solaris 等,也是目前使用最为广泛的抓包工具之一。不过 tcpdump 要过滤报文的话,还要依赖一个底层能力:BPF。 BPF 全称是 Berkeley Packet Filt 2026-06-23 #Tcpdump #监控
如何进行数据库调优 如何进行数据库调优平时提到数据库调优,绝大多数人都会想到建索引,但影响数据库性能的不仅仅是索引,还有一些其它的方向,例如:表的设计、缓冲池和锁。 表的设计业务系统可以分为 OLTP(事务型) 和 OLAP(分析型),OLAP 的分析可能非常缓慢,执行的成本相当昂贵,在 OLTP 数据库上运行分析型 SQL 会直接影响其他用户的性能,分析型系统可以通过显著增加冗余字段减少分析时的连表性能损耗。 在 2026-06-14 数据库 #性能优化 #Mysql
数据检索与索引 数据检索与索引 在最基础的层面上,数据库需要做两件事:当你给它一些数据时,它应该存储这些数据;当你之后再询问时,它应该把数据返回给你。 如果真的要说数据的存储与检索,就不得不提一下磁盘的结构,磁盘有柱面、盘面、扇区的概念,用(柱面号、盘面号、扇区号)可以定位任意一个 “磁盘块”,读取磁盘块需要移动磁头和旋转扇区,所以一次查询读取磁盘块的次数(IO次数)对性能有很大影响。 假设一个磁盘块 512B 2026-06-12 数据库 #Mysql #数据库
Mysql的日志体系 Mysql的日志体系提起 redo log、binlog、undo log,使用 Mysql 的人一般都能说上一些内容,诸如:两阶段提交,事务的隔离性,但可能会对 WAL(Write-Ahead Log 预写日志) 本身有些陌生。 Mysql 中的索引数据(主键索引包含数据)按照 B+ 树存储,当一个更新的 sql 语句需要改动数十万行数据,不妨思考一下该如何实现? 最简单的方案是:首先根据更新语 2026-06-11 数据库 #Mysql #数据库
坎坷的 PaddlePaddle 旧版本安装 坎坷的 PaddlePaddle 旧版本安装近期接手了一个老项目,Python3.7、PaddlePaddle2.4.2、Paddlets1.1.0。 Python3.7 姑且不提,Paddlets1.1.0 的最新版本是 2022 年底的,距今已经 3.5 年没更新了;PaddlePaddle2.4.2 常见的镜像源如: 阿里云镜像源、清华镜像源 均已无对应版本,Paddle官网 提供的安装方法 2026-06-10 Agent与模型 #Python #PaddlePaddle
Redis源码分析之QuickList篇 Redis源码分析之QuickList篇quicklist 是 Redis 对外暴露的 list 数据结构的内部实现,经常被当作队列或栈使用,我们可以从常用的一些 api 上先思考一下它的结构 最常用的就是 lpush、lpop、rpush、rpop,同时它也支持 lindex 查询某元素在 list 中的索引,linsert 在指定元素旁边插入新元素。 从头、尾节点的 push、pop 来看,这 2026-05-28 源码分析 > Redis #源码分析 #Redis
Redis源码分析之intset篇 Redis源码分析之intset篇intset 是用于实现集合 (set) 这种对外的数据结构。它包含的元素无序,且不能重复。当插入的元素都是整形,底层使用 intset 存储,否则使用 dict。 intset 结构体定义如下: 123456// intset 结构体typedef struct intset { uint32_t encoding; // 数据编码,表 2026-05-27 源码分析 > Redis #源码分析 #Redis
线程安全与锁优化 线程安全与锁优化锁可以用来保证线程安全,线程安全却未必一定需要锁。 线程安全简单来说:如果多线程访问一个对象时,无需进行额外的同步或协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。 Brian Goetz(Java 并发编程实战的作者)将 Java 语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 不可变如果一个对象是 f 2026-05-26 经典图书 > 深入理解Java虚拟机 #Java #并发
Java内存模型与线程模型 Java内存模型与线程模型在现代的多核架构机器中,每颗 cpu 都有自己的高速缓存,它们又共享主内存的数据,因此多 cpu 并发时需要处理缓存一致性(Cache Coherence)的问题,例如多处理器都写回时以谁的为准。为了解决这个问题,各个处理器访问缓存时都会遵循一些协议,在读写时要根据协议来进行操作,这类协议有 MSI、MESI(Illinois Protocol)、MOSI、 Synaps 2026-05-25 经典图书 > 深入理解Java虚拟机 #Java #Happens-Before #并发
JVM编译体系 JVM编译体系 从计算机程序出现的第一天起,对效率的追逐就是程序员天生的坚定信仰,这个过程犹如一场没有终点、永不停歇的 F1 方程式竞赛,程序员是车手,技术平台则是在赛道上飞驰的赛车。 Java 程序到执行一般要经过两个步骤,一个步骤是指从 .java 变为 .class 文件的过程,另一个是运行期把字节码转变成本地机器码的过程。随着提前编译器(AOT,Ahead Of Time Compile 2026-05-24 经典图书 > 深入理解Java虚拟机 #JVM #Java #编译