素槿
Published on 2025-08-22 / 2 Visits
0

杂七杂八-随记

strcpy 和 strncpy

strcpystrncpy 复制字符串时,如果字符串中间有'\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

  1. 安装工具
$ sudo apt install pandoc texlive-xetex
  1. 将windows中后缀为ttf的中文字体复制到Linux
$ sudo cp *.ttf /usr/share/fonts/windows/
  1. 更新字体缓存
$ fc-cache -fv
  1. 查看支持的字体
$ fc-list :lang=zh
  1. 转换
$ 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