好文集锦-他山之石

1、Linux内核

1.1 进程调度

CPU内部组成结构及指令执行过程

浅析Linux的共享内存与tmpfs文件系统

一个多线程程序挂起问题解决(futex系统调用介绍)

Linux Applications Debugging Techniques/Deadlocks(死锁定位)

LINUX 命令行编辑

Bash命令分隔符 空格和分号的区别

模拟说明du与df 结果不一致的问题

谨慎使用多线程中的fork

Linux 多线程应用中如何编写安全的信号处理函数

Linux异步信号处理函数引发的死锁及解决方法

无锁编程与有锁编程的性能对比与分析

透过 Linux 内核看无锁编程

再谈Linux内核中的RCU机制

Linux RCU机制详解 (透彻)

Linux内核原理-pid namespace

计算机底层知识拾遗

【内核】进程切换 switch_to 与 __switch_to

进程切换(进程上下文和中断上下文)详解

linux工具参考

Linux命令拾遗-%iowait指标代表了什么?

linux 系统性能分析的60,000毫秒

1.2 中断与信号

Linux内核-中断-中断响应和返回

1.3 内存

Linux内核的内存屏障

Memory Barriers in .NET

内存详解

/PROC/MEMINFO之谜

vm内核参数之内存水位min_free_kbytes和保留内存lowmem_reserve_ratio

Linux系统的swap机制

多核心Linux内核路径优化的不二法门之-slab与伙伴系统

jemalloc内存泄漏分析

TLSF 内存分配算法详解

1.4 文件系统

认真分析mmap:是什么 为什么 怎么用

mmap详解
从内核文件系统看文件读写过程

文件系统之块设备文件

关于文件写入的原子性讨论

Linux文件系统中元数据的加锁机制与组织方式

从文件 I/O 看 Linux 的虚拟文件系统

Page Cache的落地问题(异步刷新时机)

linux 系统调用open(四篇)

1.5 设备、磁盘外设

磁盘性能指标–IOPS、吞吐量及测试

sysfs、udev 和 它们背后的 Linux 统一设备模型

linux设备驱动模型

进程分配内存的两种方式–brk() 和mmap()(不设计共享内存)

1.6 动态追踪技术

了解systemtap

用户空间的SystemTap探测是怎么工作的

动态追踪技术漫谈

Linux内核kprobe机制

函数原理_bcc之基于uprobe探测用户态函数实现原理分析

1.7 系统调用

dmesg的时间戳转换为对应的时间

64位Linux下的系统调用

VDSO与vsyscall

Linux 内核系统调用:vsyscalls 和 vDSO

Linux内核相关-术道经纬-兰新宇

1.8 测量

详解服务器内存带宽计算和使用情况测量

2、GCC/GDB/GLIBC

2.1 GCC

GCC源码分析

GCC源码分析(一)——介绍与安装

GCC源码分析(二)——前端

GCC源码分析(三)——中间语言

GCC源码分析(四)——优化

GCC源码分析(五)——指令生成

GCC 中的编译器堆栈保护技术

gcc新旧版本ABI在项目中兼容性问题

GCC 内联汇编(GCC内嵌ARM汇编规则)

gcc编译器预编译输出文件格式详解

动态库加载路径之RPATH与RUNPATH(有备注评论)

LINUX静态库与动态库符号冲突问题分析与解决

strip,eu-strip 及其符号表,gdb调试strip过的程序

linux中的dmesg和addr2line命令在没有core文件时定位core dump段错误 (核心已转储) 问题

2.2 GDB

多线程调试必杀技 - GDB的non-stop模式

GDB-Non-Stop Mode

int 3中断与软件调试

Linux 技巧:重定向 stderr 和 stdout 输出到 gdb 窗口

gdb 调试时指定跳到第几行

使用linux的GDB打印STL

2.3 GLIBC

静态库共享库的全局变量double-free的问题

你一定要搞明白的C函数调用方式与栈原理

Linux虚拟内存介绍,以及malloc_stats和malloc_info 监控查看内存情况

glibc源码分析(一)系统调用

Glibc 线程资源—__thread & pthread_key_t

Glibc 线程资源分配与释放-----线程栈

glibc内存管理那些事儿

【C++拾遗】 从内存布局看C++虚继承的实现原理

Glibc内存管理–ptmalloc2源代码分析

3、问题排查秘籍

内存泄漏的定位与排查:Heap Profiling 原理解析

jemalloc内存泄漏分析

4、编译原理

【译】Python Lex Yacc手册

语法制导的翻译

使用FLEX BISON 和LLVM编写自己的编译器

5、存储

5.1 MySQL

MySQL查询优化器源码分析

详细分析MySQL事务日志(redo log和undo log)

MySQL frm 文件详解

Mysql半同步参数- after_sync vs after_commit

一文搞懂MySQL XA如何实现分布式事务

MySQL redo log及recover过程浅析

MySQL字符集专题(字符集,校对,乱码)

为什么MySQL数据库索引选择使用B+树?

MySQL Explain详解

详解 MySql InnoDB 中意向锁的作用

MySQL Optimizer的子查询优化行为

MYSQL 表锁与存储引擎交互

关于innodb中查询的定位方法(二分查找)

InnoDB 内核阅读笔记(九)- B+树索引

何登成技术

读 MySQL 源码再看 INSERT 加锁流程

从源码看MySQL(INNODB)的加锁规则

深入理解SELECT … LOCK IN SHARE MODE和SELECT … FOR UPDATE

浅析InnoDB的query graph实现

解析innodb表的索引结构

MySQL RC级别下并发insert锁超时问题 - 现象分析和解释(RC级别出现GAP锁分析)

MySQL RC级别下并发insert锁超时问题 - 源码分析

【MySQL源码分析】MDL之LF_HASH

MariaDB · 特性分析 · 基于GTID的复制分析

5.2 redis

Redis watch机制的分析

Redis 源码分析之 key 过期

Redis 设计与实现

redis主从复制

深入Redis 主从复制原理

深入学习Redis之Redis Cluster

Redis集群化方案对比:Codis、Twemproxy、Redis Cluster

Redis源码解读

5.3 ROCKSDB

Rocksdb实现及优化分析——JoinBatchGroup

RocksDB WriteImpl 流程

RocksDB Version管理概述

TiDB VS CockroachDB

Rocksdb(z_stand)

5.4 Hadoop

HDFS HA Using QJM原理解析

5.5 消息队列

5.5.1 Apache Pulsar

Pulsar工作原理

深入解析 BookKeeper 多副本协议

5.6 图数据库

社交网络场景下大规模图存储实践——Facebook TAO

6、网络

6.1 内核网络协议

UDP怎么会返回Connection refused错误

DNS消息格式

为什么多 TCP 连接分块下载比单连接下载快?

字节序(byte order)和位序(bit order)

linux 惊群问题

SO_REUSEADDR和SO_REUSEPORT区别

TCP 接收窗口自动调节

浅析TCP中时间戳选项timestamp

告知你不为人知的 UDP:连接性和负载均衡

告知你不为人知的 UDP:疑难杂症和使用

关于TCP 半连接队列和全连接队列

Linux内核协议栈

linux协议栈pf_packet相关分析

从ip addr add和ifconfig的区别看linux网卡ip地址的结构

基于NAT、IP隧道、直接路由三种方式实现虚拟服务器技术及比较

IPv4地址介绍、子网划分

6.2 应用层网络协议

深入 ProtoBuf - 序列化源码解析

Http协议之Content-Length

TLS协议分析与现代加密通信协议设计

6.3 web服务框架

Nginx的http配置结构体的组织结构

Nginx漫谈

brpc源码解析

gRPC服务发现&负载均衡

7、编程语言

7.1 C++

Boost.Interprocess使用手册翻译

玩转Google开源C++单元测试框架Google Test系列(gtest)

【C++】研发基本功 - GTest / GMock 单元测试实践手册

C++ 用libcurl库进行http通讯网络编程

Linux 多线程 ”一写多读” 模式下的无锁设计

Effective Modern C++笔记汇总

boost pool, object_pool实现

c++ 全局变量初始化的一点总结

探究 C++ Singleton(单例模式)

Data alignment(数据、内存对齐)漫谈

宏展开顺序分析

C预处理器之宏展开顺序

为什么多线程读写 shared_ptr 要加锁?

由FileDescriptorTables::~FileDescriptorTables看静态库共享库的全局变量double-free的问题

泛化之美–C++11可变模版参数的妙用

C++中的RTTI机制

C++11 thread_local 用法

Linux线程局部存储 Thread Local Storage

7.2 GO编程

Go 项目中代码组织的两种模式

Go 语言设计与实现

golang 逃逸分析详解

Go 中slice, map, chan, strcuct 是值传递么?

一看就懂系列之Golang的pprof

7.3 Make、CMake

CMake 两种变量原理

7.3 Python编程

教你如何将Python程序打包成Linux可执行文件

8、分布式系统

8.1 分布式概念

一文读懂分布式架构知识体系(内含超全核心知识大图)

分布式与集群是什么 ? 区别是什么?

缓存一致性(Cache Coherency)入门

8.2 分布式协议

8.2.1 Paxos

微信自研生产级paxos类库PhxPaxos实现原理介绍

Paxos算法1-算法形成理论

Paxos算法2-算法过程

PaxosLease

8.2.2 Raft

一致性协议浅析:从逻辑时钟到Raft

Raft 一致性算法论文译文

分布式一致性算法:Raft 算法(论文翻译)

uRaft算法赏析R

Raft 集群成员变更

Raft的PreVote实现机制

8.2 分布式系统

8.2.1 ZooKeeper

服务化体系之-配置中心,在ZK或etcd之外

zookeeper之监听事件总结

Zookeeper系列

深入解读zookeeper一致性原理

ZooKeeper的顺序一致性属于强一致性?

【分布式】Zookeeper的Leader选举

8.2.2 Docker系列

Docker系列

IPVS从入门到精通kube-proxy实现原理

Kubernetes的三种外部访问方式:NodePort、LoadBalancer 和 Ingress

9、算法导论/算法/数据结构

树的高度和深度以及结点的高度和深度

编程之美读书笔记

高效地安排见面会扩展问题

寻求数组中的最大值和最小值

旋转卡壳算法

数组分割 扩展问题

只考加法的面试题

如何判断单链表中是否有环路,如何求环路入口位置

gzip压缩算法

gzip原理与实现

gzip格式介绍

基数树(Radix Tree) ​​​​​​​

后缀树

ptmalloc VS tcmalloc VS jemalloc 原理及对比测试

ptmalloc、tcmalloc与jemalloc对比分析

TLSF 内存分配算法详解

jemalloc安装和使用

jemalloc内存泄漏分析

内存分配奥义·jemalloc

使用jeprof定位内存泄漏

一看就懂系列之Golang的pprof

String 中的代码点和代码单元

10、数学公式

(1)同余公式与性质

(2)全排列生成算法

(3)热门智力题 过桥问题和倒水问题

11、常用工具安装指引

[Linux]Centos6 Vim 从 7.4 升级到 8.1

Vim插件YouCompleteMe安装记录(号称最难装的Vim插件?)

vim linux下查找显示^M并且删除

shell脚本–sed的用法

解决SSH免密登录配置成功后不生效问题

CMake手册详解

Git Submodule使用完整教程

12、杂项

细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4

简体中文与繁体中文互转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值