最近先写一个简单的,之后再写复杂的。 在初学C语言时,我们往往被告知C语言的编译过程是预处理、编译和链接,那么这些过程都是什么呢? 下面以Linux下常用的 gcc 编译器举例说明我们平时见到的这些过程都是什么。 gcc 原名GNU C C...
阅读全文Appearance
最近先写一个简单的,之后再写复杂的。 在初学C语言时,我们往往被告知C语言的编译过程是预处理、编译和链接,那么这些过程都是什么呢? 下面以Linux下常用的 gcc 编译器举例说明我们平时见到的这些过程都是什么。 gcc 原名GNU C C...
阅读全文原子计数、缓存争用与性能问题 操作系统会在什么时候进行线程切换 想必熟背八股的朋友们都知道,操作系统进行线程切换时无非是两种情况:线程时间片用尽和线程主动让出执行权。 线程主动让出执行权时包括等待锁、等待IO操作或者是单纯的sleep,这里...
阅读全文本文以Linux系统为例,简析栈究竟是什么东西。其中的部分思想也可以用于其他操作系统。 栈是什么 函数运行的栈是计算机内存中的一种数据结构,用于管理函数调用和执行过程中的局部变量、参数、返回地址以及执行上下文。 但无论在什么情况下,栈都是一...
阅读全文Redis为什么不能在Windows上工作 因为Redis虽然使用ANSI C编写,兼容所有编译器版本,但是其调用了只有 nix系统才存在的fork系统调用,而Windows上没有这个调用。 为什么Redis需要fork Redis作为非常...
阅读全文本文旨在记录Linux下C/C++常见的内存错误。 SIGSEGV 段错误,最常见的内存错误,是由于使用错误的方式访问内存导致的,常见的错误方式有下面几种。 1. 解引用空指针,这是最可能发生的段错误,在有core dump文件时也很容易定...
阅读全文什么是RSA 简单地说,RSA就是一种非对称加密算法,它组成了今天计算机网络安全的基石。每个人的浏览、消息、支付等背后,都有RSA的身影。虽然其有很多竞争者,但直到如今,RSA依然是主流的非对称加密方式。比如B站的证书就是基于RSA的。 本...
阅读全文Python字典是一种常用的数据结构,内部采用hashmap数据结构,利用元素的hash值作为索引。 字典实现 首先实现源码在 Github:Objects/dictobject.c 与Java的HashMap不同,Python字典解决冲突...
阅读全文流控是常见的功能,很多重要位置都有流控。 为什么进行流控 在实际生产中,我们的很多资源都是有限的,比如视频转码的CPU以及GPU资源、流量配额、邮件配额、数据库连接等,这些资源如果不提前预计分配,导致某一配额用光或队列爆满,就会导致服务暂时...
阅读全文Cloudflare引起的问题 在配置服务器上的Nginx时,发现无论怎么配置都无法分段下载,并且并没有返回错误,通过 curl I R "Range: byte=100 200" https://my.domain.com/files/x...
阅读全文为什么Python多进程入口需要用 if name == ' main ' 包裹呢? 实际上,如果在Linux上运行,通常情况下即使没有这行判断也并不会造成问题。 因为在类Unix系统中,程序可以通过fork创建自身的副本,这也是Pytho...
阅读全文