zhuizhuhaomeng Blog

「记录下来,一切都会更容易理解」

使用软件包安装软件或者是通过拷贝的覆盖的方式安装软件

遇到麻烦 做开发的同学都知道,Makefile 会有一个 install 的目标。 我们通过源码安装软件的时候,经常使用 sudo make install 命令直接将软件安装到系统。 在软件开发的过程中,由于需要频繁修改代码并更新程序进行测试,因此也是使用 sudo make install 的方式来安装软件。 但是夜路走多了总会遇到 鬼。有经验的同学可能就会遇到 sudo make ...

OpenResty interacting with Redis from a script

问题 先向 Redis 服务器获取所有数据,然后在客户端操作过滤需要的数据这种方式显然是低效的。 缺点包过: 需要通过网络传输大量的数据 服务端需要编码大量的数据 客户端还需要解码大量的数据 客户端要自己执行行过滤逻辑 如果能让服务端执行过滤,那么上面的问题就可以解决。 这就是为什么 Redis 服务器提供了执行 Lua 脚本的功能。 可以参考 Redis 官方的...

Perl notes

文件开头 添加 strict 和 warnings 的检查,减少不必要的出错。 1 2 3 4 5 6 7 #!/usr/bin/env perl use v5.10.1; use strict; use warnings; #no warnings 'recursion'; #no warnings 'portable'; 正则表达式 \U 将所有匹配转换为大写...

自签名证书浏览器调试

来源 问题描述 在使用google浏览器时,有时访问某些网址时会显示网址不安全,查看后发现网络证书无效 解决方法 1、桌面找到google浏览器图标,右键,选择属性 2、在’‘目标’‘后空一格添加–ignore-certificate-errors –allow-running-insecure-content 3、重启即可 然而,有时还会出现问题,这是,需要在出现问题的网址上盲打...

多线程会产生多少额外的内存开销

默认情况下,Linux 系统为线程调用栈分配的内存大小为 8M。 我们可以通过 ulimit -s 指令调整调用栈大小。 我们也可以在编程时显示指定调用栈的大小,比如下面通过 pthread_attr_setstacksize 接口设置栈大小。 #include <pthread.h> #include <stdio.h> void* thread_...

为 OpenResty 编译 OpenTelemetry

使用 OTEL 官方的 nginx otel 模块,编译非常的麻烦,2023-05 以前一直编译不通过,不知道现在是否改善了。 目前 Nginx 官方的搞了 otel 模块,性能好而且编译更容易了。 编译步骤如下: 安装依赖 1 2 3 4 5 sudo apt-get install libc-ares2 libc-ares-dev sudo apt-get install ...

how does nginx http slice module work

我想分析一下 nginx_http_slice_module 的工作原理,因为自带的 OpenResty 不含该模块,因此需要自己编译。 在深入代码分析之前,我们需要先了解 HTTP bytes range 的请求 了解 HTTP bytes range 的原理 可以在点击 mozilla rnage request 查看详细的信息。 我们这里抽取一个请求响应的例子。 1 2 3 4 ...

Add gnu BuildID for Go program

我们可以使用 file 命令查看 ELF 文件的 BuildID。比如: 1 2 $ file /usr/bin/ls /usr/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l...

How to debug linux crash

总结 Linux 内核崩溃应该怎么调试呢?这篇文件挺好的,包含了分析的实例,https://wiki.whamcloud.com/display/LNet/Crash+course+on+Crash。 总结下来,关键的步骤就是: 要先配置 kdump 才能保存崩溃的现场。 需要安装 kernel-debuginfo 需要安装 crash 程序(当然也要 gdb) 使用...

Examples of Linux find command

1 2 3 4 5 6 7 #!/bin/bash for name in `find / -maxdepth 1 -type d -regex "/[0-9]+t-[a-z]"`; do for d in `find /16t-a/trace-pkg-db -maxdepth 2 -type d -regex ".*/\(rpms\|debs\)"`; do f...