strcpy 和 strncpy
strcpy
和 strncpy
复制字符串时,如果字符串中间有'\0', 将会使字符串复制提前终止,
这种情况下,最好使用 memcpy
代替.
指针数组和数组指针
[]
的优先级高于 *
指针数组:int *p[8] -- 数组元素为指针的数组,本质为数组。
数组指针:int (*p)[8] -- 指向数组首元素的地址的指针,本质为指针。
npm 加速
设置源为国内的淘宝源
# npm config set registry https://registry.npm.taobao.org
内核并发管理
信号量:asm/semaphore.h struct semaphore
读写信号量:linux/rwsem.h struct rw_semaphore
条件变量:linux/completion.h struct completion
自旋锁:linux/spinlock.h spinlock_t
读写自旋锁:linux/spinlock.h rwlock_t
原子变量:asm/atomic.h atomic_t
原子位操作:asm/bitops.h
seqlock 锁:linux/seqlock.h
RCU:linux/rcupdate.h
内存屏障:linux/kernel.h void barrier(void) asm/system.h void rmb(void);
阻塞/非阻塞,同步/异步
阻塞和非阻塞的主体是被调函数。
阻塞:调用我(函数),我(函数)没有接受完收据或着没有得到结果之前,我不会返回。
非阻塞:调用我(函数),我立即返回,通过select通知调用者。
同步和异步的主体是主调函数。
同步:我调用一个函数,该函数没有结束前,我死等结果。
异步:我调用一个函数,现在不需要知道函数的结果,函数有结果后通知我。
输出C++类结构
$ g++ -fdump-lang-class main.cc
查看编译器所支持的全部指令集
$ gcc -c -Q -march=native --help=target
其中 -march=native 选项将使用 CPUID 指令获取编译机器的 CPU 信息。
UBUNTU添加测试仓库
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
apt 签名验证失败无法update等,gpg不可用时:
source.list deb后加上:[trusted=yes]
Windows 语言包 ttf-mscorefonts-installer
tmux色彩支持
将以下配置信息添加到 ~/.tmux.conf
文件
setw -g mouse on
set -g default-terminal "screen-256color"
MD转PDF
- 安装工具
$ sudo apt install pandoc texlive-xetex
- 将windows中后缀为ttf的中文字体复制到Linux
$ sudo cp *.ttf /usr/share/fonts/windows/
- 更新字体缓存
$ fc-cache -fv
- 查看支持的字体
$ fc-list :lang=zh
- 转换
$ pandoc apreface-chinese.md --pdf-engine=xelatex -o out.pdf -V CJKmainfont="SimHei"
dpkg
删除已卸载软件的配置文件:sudo dpkg -l | grep "^rc" | awk '{print $2}' | xargs sudo apt -y purge
Asan 代码分析, gcc错误高亮, 预定于宏
使用ASan时,只需gcc选项加上-fsanitize=address选项
gcc错误高亮:-fdiagnostics-color
输出预定义宏:gcc -dM -E - < /dev/null
PySide6 in WSLg
$ sudo apt install libopengl0 libegl1 libxkbcommon0 libwayland-dev