svn 使用记录 设置忽略指定后缀文件, 例如忽略 .lc 后缀的文件, -R 是递归文件夹,path 为指定的起始目录。设置后需要提交属性修改,svn status 会发现 path 下面的每个文件夹都有修改。所以要更新 svn 版本的话,需要备份之前版本的 svn,以供旧工程使用。svn 更新版本后可能会导致之前版本下拉取的工程无法正常使用 svn。svn propget svn:ignore -R 查看忽略设置。还原某个文件到指定版本。
linux 安装/升级 svn /configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-lz4=internal --with-utf8proc=internal 编译成功。./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util 重新编译,报错,提示缺少 lz4 压缩库,只需要添加个选项即可。安装 apr-util。
安装/升级 gcc /configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-multilib 这回配置成功了。这里应该是选择是否支持对 32-bit 程序的编译支持,如果需要,则要添加 --enable-multilib 选项。./configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local 继续报错。
skynet 中 mongo 模块运作的底层原理解析 这篇文章总结 skynet 中 mongo 的接入流程,代码解析,读完它相信你对 skynet 中的 mongo 调用会更得心应手。在上一节中我们没有详细的拆解 bson_encode 和 bson_encode_order 两个函数,他们的作用已经介绍过,读者有兴趣可以自己细看一下代码,要读懂其中的序列化过程,需要参考文末的 BSON 官方文档。
Lua gc 机制版本迭代过程简述 这样在一方面的确是有不足,使得 Lua 的内存管理依赖具体操作系统环境的内存管理机制的性能好坏,但是另一方面,Lua 通常是和 c 或其他语言搭配使用,这样开发人员可以为应用使用一套分配机制,而不会导致在应用中存在两种分配机制,一种服务于 Lua,一种服务于另外的语言。Lua 选择的是垃圾回收的方案。设置元表的操作,Lua 5.4 中已经修改为当被设置元表的对象是黑色并且元表是白色的情况下,将元表颜色向前转换为灰色,这是因为元表通常会被分配给许多不同的对象,并且元表比其他对象更加稳定。
linux 创建一个线程的基础开销探讨 测试方法比较笨,每修改一次线程数,就重新编译一次,再运行。在程序运行过程中,查看到进程 pid,然后通过以下命令查看进程的运行状态信息输出到以线程数为名字的日志文件中,最后用 vimdiff 对比文件来查看内存上的差异。
pip 显示安装了软件,但是实际运行找不到命令 发现 flask 安装到 python 安装路径下了,没有自动 copy 到例如 /usr/local/bin 等全局命令路径。因为刚设置好软件安装位置,需要重新安装一下要用的软件,这里是 pip install flask。设置安装位置后系统会提示修改的内容写入到了配置文件,这里告诉了配置路径,以后想修改配置也可以直接编辑该文件。修改 pip 配置,将软件安装目录指定到 /usr/local/bin 等已经在 path 中的路径。将 /usr/local/python38/bin 添加到 path 中。
进程性能分析工具 pidstat 和用 python 的 matplotlib 库输出分析图表 pidstat 是sysstat 工具集的一员。专门用于统计进程的各项指标。yum install -y sysstat # 安装 systemctl enable --now sysstat # 启用-C name 表示采样进程的 Command 包含 name 字段(name 支持正则表达式),Command 为进程名字:-p pid 表示指定采样进程的 pid。使用该选项可以更精准的指定采样目标。-u 采样 cpu 使用率,包含了 cpu 百分比,分为内核占用,用户占用,总占用。
python3.8 安装 ssl 模块 和 _ctypes 模块 rpath 是 gcc 的一个编译选项,用于指定程序运行时动态链接库的搜索路径。当程序运行时需要动态链接库时,系统会在指定的路径中搜索动态链接库。其中,-L 选项指定编译器在编译时搜索库文件的路径,-l 选项指定需要链接的库文件名。-Wl,-rpath=/usr/local/lib 选项指定程序运行时搜索动态链接库的路径。这样,当程序 a.out 运行时,系统会在 /usr/local/lib 目录下搜索 libfoo.so 动态链接库。
GNU C 语言的常用扩展 GCC 的 C 编译器除了支持 ANSI C 标准之外,还对 C 语言进行了很多的扩充。这些扩充为代码优化、目标代码布局以及安全检查等提供了很强的支持,因此支持 GNU 扩展的 C 语言称为 GNU C 语言。Linux 内核采用 GCC 编译器,所以 Linux 内核的代码自然使用了 GCC 的很多新的扩充特性。本节将介绍 GCC C 语言一些扩充的新特性,希望读者在学习 Linux 内核时特别留意。
浅谈 LRU LRU(Least Recently Used) 一般翻译为"最近最少使用",是一种常见的缓存淘汰算法,在计算机底层和操作系统设计中被广泛应用。因为是缓存淘汰算法,所以可以理解为"淘汰最久(最远)未使用"的缓存。
内存快速检查工具AddressSanitizer机制简介 小结参考<<AddressSanitizer: A Fast Address Sanity Checker>>Konstantin Serebryany, Derek Bruening, Alexander Potapenko, Dmitry Vyukov Google{kcc,bruening,glider,dvyukov}@google.com