Linux Networking and HTTP
Linux Networking and HTTP NotesQuick Lookup 场景 命令 查看监听端口 ss -tulnp / netstat -tulnp 查看 TCP 连接 ss -ant / netstat -ant 查端口占用 `ss -ltnp 查看路由 ip route / netstat -rn 查看网卡地址 ip addr 测连通性 ping host 测 DNS dig domain / nslookup domain 调 HTTP 接口 curl -i URL 下载文件 curl -L -O URL / wget URL 跟踪网络系统调用 strace -e trace=network command 1. Network Model in Daily Debugging排查网络问题时,可以按层次缩小范围: 层次 常见问题 常用命令 本机进程 服务是否启动、是否监听端口 ps, ss -tulnp, pidof 本机网络 IP...
JavaScript Objects and Data Structures
JavaScript Objects and Data Structures结构总览 主题 关键问题 常用场景 Object 键值对、引用、拷贝、属性访问 配置对象、实体建模、接口数据 Array 有序集合及数组方法 列表渲染、批量转换、筛选、排序 Iterable for..of 与迭代协议 自定义可遍历对象、把类数组转数组 Map / Set 更明确的键值集合 / 去重集合 缓存、计数、去重、保留插入顺序 WeakMap / WeakSet 弱引用集合 与对象生命周期绑定的缓存/标记 Date 时间戳、日期读写、自动校准 时间展示、时间计算 JSON 对象与字符串互转 存储、网络传输、请求/响应 1. Object11. object11.1 属性对象用来存储键值对和更复杂的实体。 我们可以通过使用带有可选 属性列表 的花括号 {…} 来创建对象。一个属性就是一个键值对(“key:...
Linux Filesystem and Basic Commands
Linux Filesystem and Basic Commands快速索引 场景 命令 当前目录 pwd 复制 cp 删除 rm 查看小文件 cat 分页查看 less 查找文件 find 挂载存储设备 mount 归档压缩 tar Command Line Basics这一部分记录 Linux 命令行中最容易混淆、也最常用的文件系统基础。 Shell BasicsListing Files and DirectoriesFiltering Output with Wildcards 模式匹配: 问号(?)代表任意单个字符; 星号(*)代表零个或多个字符。 方括号代表单个字符位置并给出了该位置上的多个可能的选择。你可以将可能的字符逐一列出,也可以指定字符范围,比如字母范围[a–i]。 还可以使用惊叹号(!)将不需要的内容排除在外。 File OperationsCopying Files cp 命令可以完成文件和目录从文件系统的一个位置复制到另一个位置的操作。 cp 命令最基本的用法需要两个参数,即源对象和目标对象:cp...
Linux Text Processing Pipelines
Linux Text Processing and Pipelines常见组合1234567891011121314151617181920# 在一批文件中搜索文本,兼容空格文件名find . -type f -name '*.md' -print0 | xargs -0 grep -n 'pattern'# 排序后统计重复项sort access.log | uniq -c | sort -nr# 看日志最后 100 行,并继续追踪新增内容tail -n 100 -f app.log# 统计行数、单词数、字节数wc -l -w -c file.txt# 取 CSV 的第 1、3 列cut -d ',' -f 1,3 data.csv# 批量替换文本sed 's/old/new/g' file.txt# 按字段聚合统计awk '{count[$1]++} END {for (k in count) print k, count[k]}'...
Linux Processes Jobs Performance and Debugging
Linux Processes, Jobs, Performance, and Debugging快速索引 场景 命令 查看进程快照 ps, ps aux 实时查看资源 top 查看进程 PID pidof 查看命令耗时 time 查看/恢复 shell 作业 jobs, fg 跟踪系统调用 strace 查看二进制文件信息 objdump 关键组合123456789# 查看最占 CPU 的进程ps aux --sort=-%cpu | head# 后台作业回前台jobsfg %1# 跟踪程序启动失败原因strace -f -o trace.log ./program psps (Process Status) 命令用于显示当前系统中的进程状态。 基本语法ps 命令的选项有多种风格: UNIX 风格: 选项前需要加 -,可以组合 (例如 -ef)。 BSD 风格: 选项前不需要加 -,可以组合 (例如 aux)。 GNU 长选项: 选项前需要加 -- (例如 --forest)。 1ps [选项] 常用选项组合 ps...
C and Cpp Compilation
gcc 与 g++ 工具 常见用途 说明 gcc 编译 C 程序 也能根据后缀调用对应前端,但链接 C++ 程序时不如 g++ 省心 g++ 编译 C++ 程序 会自动链接 C++ 标准库 经验规则: C 文件:gcc main.c -o main C++ 文件:g++ main.cpp -o main 从源码到可执行文件的四个阶段C/C++ 源码变成可执行程序,一般分为四步:预处理、编译、汇编、链接。 123456789.c/.cpp 源码 ↓ 预处理 -E.i/.ii 预处理结果 ↓ 编译 -S.s 汇编代码 ↓ 汇编 -c.o 目标文件 ↓ 链接可执行文件 1. 预处理 Preprocessing12gcc -E file.c -o file.ig++ -E file.cpp -o file.ii 预处理会: 展开 #include 文件; 替换 #define 宏; 处理条件编译,如 #ifdef / #ifndef / #if。 输出结果是已经展开宏和头文件的文本文件。 2. 编译...
Counting Josephus and Big Integer
Counting, Josephus, and Big Integer Notes1. Boyer-Moore 多数投票算法代码123456789101112131415161718192021int BoyerMoore(int* array, int arraySize){ int candidate=array[0]; int count=0; for(int i=0;i<arraySize;i++) { if(count==0) { candidate=array[i]; } if(array[i]==candidate) { count++; } else { count--; } } return...
Cpp Competitive Programming Idioms
Cpp Competitive Programming Idioms1. C++ IO 提速常用写法: 123ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); 含义: ios::sync_with_stdio(0):关闭 C++ iostream 与 C stdio 的同步,提高 cin/cout 速度。 cin.tie(0):解除 cin 和 cout 的绑定,避免每次输入前自动刷新输出。 cout.tie(0):通常影响不大,可写可不写。 注意:关闭同步后,不建议混用 cin/cout 与 scanf/printf。 2. 变量定义习惯常见写法: 常用 long long 类型。 当数据范围可能超过 int 时,应使用 long long。尤其是乘法时,注意先提升类型: 123int a = 1e9;int b = 1e9;long long c = 1LL * a * b; 如果写成: 1long long c = a * b; 乘法可能先以 int 计算,溢出后再赋值给 long...
Cpp STL Containers
Cpp STL Containers Notes1. vectorvector 是一个顺序表,内存空间连续,支持自动扩容和自动内存管理。 1.1 初始化 写法 含义 示例 vector<T> v; 声明一个空向量,元素类型为 T vector<double> v; vector<int> v; 声明一个存储 int 的空向量 [] vector<int> v(n); 声明大小为 n 的向量,默认初值为 0 n=5 时 [0,0,0,0,0] vector<int> v(n, x); 声明大小为 n、初值为 x 的向量 n=5,x=3 时 [3,3,3,3,3] vector<int> v = {1,2,3}; 列表初始化 [1,2,3] 同一个向量中的元素类型必须一致。如果已确定所需数组大小,建议在声明时设定大小或使用 reserve(),避免频繁动态扩容。 1.2 常用操作表 方法 作用 时间复杂度 push_back(x) 将元素 x...
Cpp STL Algorithms
Cpp STL Algorithms Notes1. sort()sort() 是 C++ STL 中常用的排序函数,定义于 <algorithm>。它可以高效地对数组、vector、deque 等支持随机访问迭代器的范围排序。 1.1 基本用法默认从小到大: 1sort(vec.begin(), vec.end()); 自定义比较函数,例如降序: 123sort(vec.begin(), vec.end(), [](int a, int b) { return a > b;}); 1.2 复杂度、稳定性与适用容器 时间复杂度:O(n log n)。 sort() 不是稳定排序,相等元素的原始顺序可能改变。 如果需要稳定排序,使用 stable_sort()。 sort() 需要随机访问迭代器,适合数组、vector、deque,不适合 list 或 forward_list。 比较函数应满足严格弱序,不要写成 <=。 2. lower_bound() 与 upper_bound()lower_bound() 和...