blog review 第十期
看tag知内容 尴尬,每月总结也有todo了,todo越欠越多
[toc]
MongoDB管理: 如何让mongod产生core文件
让SIGSEGV的处理函数保持不变
ulimit -c 设置好core文件大小限制
设置好/proc/sys/kernel/core_pattern,保证进程有权限存储core文件
How we built a forever-free serverless SQL database
CRDB serverless了,怎么做的
Todo
## Strings, arrays, recursion, and parsing JSON: Exploring PL/pgSQL
pg内置函数更像个脚本语言了
Linux Kernel 代码艺术——编译时断言
/* Force a compilation error if condition is true, but also produce a
result (of value 0 and type size_t), so the expression can be used
e.g. in a structure initializer (or where-ever else comma expressions
aren't permitted). */
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
#define BUILD_BUG_ON_NULL(e) ((void *)sizeof(struct { int:-!!(e); }))
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
#define BUILD_BUG_ON_NOT_POWER_OF_2(n) \
BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0))
奇技淫巧。看个乐
The Design of the NetBSD IO Subsystems
Todo
Gmock cookbook
居然有了新文档
Control Planes vs Data Planes
Marc的博客非常不错,文章挨个读读
这篇就是服务组件设计,控制面和数据面,两者拆开
修改系统时间,导致sem_timedwait函数一直阻塞的问题解决和分析
sem_timedwait存在的缺陷的理由:
假设当前系统时间是
1565000000(2019-08-05 18:13:20)
,sem_timedwait
传入的阻塞等待的时间戳是1565000100(2019-08-05 18:15:00)
,那么sem_timedwait
就需要阻塞1分40秒(100秒)
,若在sem_timedwait
阻塞过程中,中途将系统时间往前修改成1500000000(2017-07-14 10:40:00)
,那么sem_timedwait
此时就会阻塞2年多! 这就是sem_timedwait
存在的缺陷
业务代码用到了这个破玩意,往这个方向考虑了一下,不过最终确认不是这个问题
A different take on the NUMA OOM killer story
作者遇到个问题,16G机器用了6G进程被杀了,配置了numa,仔细一看,还配置了memkind,这个限制导致如果内存分配不够会去系统分配,系统发起oom杀进程,结果把这个进程杀了?这是不是memkind的bug啊
A good old-fashioned Perl log analyzer
2021年还有人写perl
perl还是有很多好用的工具的,比如
use Regexp::Log::Common;
use Date::WeekNumber 'iso_week_number';
Why I Use Nim instead of Python for Data Processing
我也在关注nim,这个博主给的例子,nim的性能吊锤python,编译语言比动态语言优势太大
语法也类似,不过需要实现类似的轮子来把生态同步过来
比较的代码
gc = 0
total = 0
for line in open("orthocoronavirinae.fasta"):
if line[0] == '>': # ignore comment lines
continue
for letter in line.rstrip():
if letter == 'C' or letter == 'G':
gc += 1
total += 1
print(gc / total)
var gc = 0
var total = 0
for line in lines("orthocoronavirinae.fasta"):
if line[0] == '>': # ignore comment lines
continue
for letter in line:
if letter == 'C' or letter == 'G':
gc += 1
total += 1
echo(gc / total)
Program | Time | Relative to Nim |
---|---|---|
Python 3.9 | 23.43 s | 30.6x |
PyPy 7.3 | 2.54 s | 3.3x |
Nim 1.4 (with-d:danger --gc:orc flags) |
0.765 s | 1.0x |