首页
小黑猫
取消

Linux环境配置加载分析

本文以 OS: Debian, Shell: bash 为环境写成,其它环境如 OS: RedHat; Shell: sh, zsh 可能与本文结论有所出入。 Shell环境配置加载分析 在研究shell环境配置文件加载流程前,需要先搞明白 Interactive Shell、Login Shell 的概念。 Interactive Shell 定义 man 说明如下: bash...

你真的搞懂优先级和结合性了吗?

颠覆认知 我们依据运算符的优先级和结合性来判断一个表达式的运算过程,但我们对于优先级和结合性的理解其实存在着广泛误解。 绝大多数教程都是告诉你: 优先级高的运算符先执行。 当出现多个优先级相同的运算符时,依据结合性判断运算符的执行顺序。 其实按照上面的说法,将有诸多无法解释的现象,比如: int main(void) { printf("%c", 'a') + ...

五险一金超详细整理

前言 本文正好成文于 2025 年社保新规前,所以有些内容可能刚整理出来就过时了。文中大多数内容均以浙江省政策为例。政策是会变化的,且各地政策不同,本文仅供学习参考。 五险 类别 缴纳 账户 养老(职工保险) 个人 + 单位 个人 + 统筹 ...

死机定位-内存不足死在vmalloc

定位过程 死机调用栈如下,推栈结果与 bt 结果大差不差。由一个终端程序一路调用到 vmalloc,最后死在其内部。注意到函数 out_of_memory,这表明可能是系统内存快耗尽了。 [0]kdb> bt Stack traceback for pid 693 0xffff880362416740 693 1 1 0 R 0xffff880...

用户态源码反汇编定位方法记录

前言 问题背景就是进程崩溃,产生了 core 文件。其实这次定位非常简单,bt, disassemble 就能直接看出来了。既然简单,就利用这次机会尝试了一下源码反汇编的定位方法。此前在别人的帮助下,运用该方法定位过内核态的问题,但都事发紧急,事后没能复盘,留下了遗憾。尽管存在差异,还是决定在用户态“模拟”一下。 定位过程 Program terminated with signal ...

gdb无-g调试实战记录

问题背景 设备外发日志的内容错乱,甚至产生 core 文件。版本是正常编译的发行版本,没有附带 -g 加入的调试信息。 我懒得加调试信息也不想加 -g 重新编译,二者在本人的开发环境中都十分麻烦。这种无 -g 调试的场景其实还蛮常见的,这次定位比较顺利,故记录之。 定位过程 从现象上看是日志内容错位了,但也不能排除是踩内存,出界内容被直接解析也能出现类似的现象。通过看代码,我高度怀疑...

简析HTTPS

写在前面 阅读《图解HTTP》,大致理解了 SSL/TLS 的握手过程和思想原理。然而作为入门书,它没有介绍基于 DH 算法的 TLS 握手过程,也没有介绍证书链相关的知识😡。我 Google 了不少资料,着重啃了几篇文章,结合抓包分析,本想“差不多得了”,却没料到入了大坑,疑问不减反增。 一筹莫展之际,AI 技术大火,救我狗命。受此鼓舞,借助 AI 解惑,又打起精神啃读了多个 RFC ...

真值与内存的相互转换

概念定义 > 真值 实际意义上的值,比如代码里直接书写的值。 > 内存值 这个词是笔者自己造的,用于特指存储在内存中的值。笔者对这个概念还有如下规定或结论: 内存值都是无符号的。 习惯称“n进制内存值”为“内存n进制”,比如称“二进制内存值”为“内存二进制”。 内存值与其对应的无符号真值是相等的。 > 内存值分布 这个词是笔者自己造的,用于...

C语言标准发展历史

对各种 C 标准进行简述。 参考资料:Standards (Using the GNU Compiler Collection (GCC)) ANSI C,ISO C89/90 ANSI C 是最初的 C 语言标准,在 1989 年获得批准,1990 年发布。 1990 年晚些时候,该标准成为了 ISO C89/90 标准。 这两个标准之间没有技术上的差异,可以当作就是一个标准。 ...

函数传参

传参分类 从传参类型上看 传参分为传值和传指针。 传指针本质上也是传值,只不过传的是指针值。由于传一般值和传指针值还是有点区别,所以分成两种说法。传值一般就指传一般值,传指针专门用于描述传指针值。 从传参行为上看 传参分为值复制和传自己。 传自己本质上也是值复制,只不过是取地址传无名指针,形参直接接上;而不是直接传有名指针。例如: // 函数调用 func1(i...

热门标签
热门标签