Skip to content

Instantly share code, notes, and snippets.

View CandyMi's full-sized avatar

CandyMi CandyMi

View GitHub Profile
@CandyMi
CandyMi / README.md
Created July 1, 2026 19:33
各平台获取CPU核心数

各平台获取CPU核心数

Linux

cat /proc/cpuinfo | grep processor | wc -l

MacOS | FreeBSD

@CandyMi
CandyMi / README.md
Created June 15, 2026 04:20
ccmap vs Linux rbtree vs FreeBSD-rbtree

ccmap vs Linux rbtree vs FreeBSD rbtree 对比分析

三种 C 语言红黑树(及类红黑树)实现的全面对比。

  • ccmapinclude/ccmap.h,ccalg 项目的一部分
  • Linux rbtreeinclude/linux/rbtree.h + lib/rbtree.c
  • FreeBSD rbtreesys/sys/tree.hRB_* 宏族)

@CandyMi
CandyMi / README.md
Created June 10, 2026 11:10
Skip List vs Treap — 排行榜场景评估

Skip List vs Treap — 排行榜场景评估

面向 Leaderboard(排行榜/排名系统),对比两种支持有序遍历的数据结构。

操作复杂度

操作 Treap Skip List (基本) Skip List (带 rank 表)
Insert O(log n) O(log n) O(log n)
Find O(log n) O(log n) O(log n)
@CandyMi
CandyMi / README.md
Created June 9, 2026 08:39
字符串匹配算法一览

字符串匹配算法一览

算法 核心思想 预处理时间 预处理空间 匹配时间复杂度(最好/平均/最坏) 算法难度 优势 劣势
朴素 (Naïve) 从左到右逐字符比较,失败后右移一位 O(1) O(1) O(n) / O(n+m) / O(nm) 极低 实现极其简单,无额外空间,短串时常因缓存友好而很快 最坏情况极慢(如文本和模式均为"aaaaa..."),无法利用任何跳过信息
KMP 前缀函数(π表)避免文本回溯 O(m) O(m) O(n) / O(n) / O(n) 中等 严格线性时间,最坏情况下也有保证;文本指针永不回溯,适合流式处理 需要O(m)额外空间;平均性能往往不如BM/Horspool等跳跃算法
Boyer‑Moore (BM) 从右向左比较,坏字符 + 好后缀双规则跳跃 O(m+σ) O(m+σ) O(n/m) / O(n/m) / O(nm) 复杂 平均性能极佳(尤其是大字母表、长模式串),跳跃步长很大 预处理较复杂,空间较大(σ表),最坏情况可能退化为O(nm);对短模式串优势不明显
Horspool (BMH) BM的简化版,仅使用坏字符规则,且每次看窗口最后一个字符 O(m+σ) O(σ) O(n) / 通常接近O(n/m) / O(nm) 简单 实现简单,跳跃效果依然很好,实际应用中常比完整BM更快 最坏情况下仍可能退化为O(nm);对于某些重复模式跳跃不如好后缀规则
Sunday 借鉴BM,但失败时看窗口下一个字符决定跳跃 O(m+σ) O(σ) O(n) / 通常接近O(n/m) / O(nm) 简单 跳跃更激进,平均性能甚至优于Horspool,短串表现优异 同样存在最坏退化;对大字母表需要构建跳转表
Two‑Way 关键分解 + 周期性跳跃,匹配时先扫右侧再扫左侧 O(m) O(1) O(n) / O(n) / O(n) 中等偏难 O(n)最坏时间 + O(1)空间,完美平衡,被glibc/musl等标准库采用 实现比KMP复杂;平均跳跃不如BM系列激进;长模式串预处理稍慢
Rabin‑Karp 滚动哈希(如Rabin指纹)比较数值 O(m) O(1) O(n) / O(n+m) / O(nm)(哈希冲突时) 中等 适合多模式匹配(一次扫描匹配多个模式),可扩展至二维模式(矩阵)
@CandyMi
CandyMi / README.md
Created May 31, 2026 07:24
yeast 算法 编码解码

yeast 算法 的 Lua 版 实现

local yeast = require "yeast"

local ts = 1780208984973

local ystr = yeast.encode(ts)
print(ystr)
@CandyMi
CandyMi / README.md
Last active May 30, 2026 00:35
Salsa20 算法

Salsa20 算法

salsa(128/256) 算法实现

测试结果

[candy@MacBookPro:~/salsa20] $ cc -std=c99 -O2 -o test_salsa20 test_salsa20.c salsa20.c && ./test_salsa20
Salsa20 test suite
==================
@CandyMi
CandyMi / README.md
Last active June 8, 2026 03:26
Benchmark: fcntl vs fstat for fd validity check

介绍

环境压测数据工具

编译运行

  • bench_fd_verify.c - 验证stat和fcntl 验证 fd有效性 只读性能数据

  • bench_pipe.c - pipe 与 sockpair 的 读/写 吞吐与延迟 性能数据

@CandyMi
CandyMi / README.md
Created May 10, 2026 17:17
我让 DeepSeek 实现的 C++ aoi 算法库.

ccaoi — C++ AOI (Area of Interest) 模块

概述

二维地图实体视野管理,C++11 单头文件,零依赖(仅 STL)。提供两种实现:

实现 算法 适用场景
ccaoi_normal 全表扫描 O(N) N < 300, 简单场景
ccaoi_grid 九宫格 O(1) N ≥ 300, 生产环境
@CandyMi
CandyMi / README.md
Last active March 4, 2025 03:39
用于美化输出`Lua Table`

用法

utils.lua文件拷贝到你能引用到的位置后导入, 成功后即可在全全局使用var_dump函数.

测试

使用var_dump输出_G的内容

Luajit 输出

@CandyMi
CandyMi / bbr.ps1
Created October 11, 2024 10:28
Windows 11 开启 BBR 的 PowerShell 脚本
# 变更为BBR2
netsh int tcp set supplemental Template=Internet CongestionProvider=bbr
netsh int tcp set supplemental Template=Datacenter CongestionProvider=bbr
netsh int tcp set supplemental Template=Compat CongestionProvider=bbr
netsh int tcp set supplemental Template=DatacenterCustom CongestionProvider=bbr
netsh int tcp set supplemental Template=InternetCustom CongestionProvider=bbr
# 恢复为CUBIC
# netsh int tcp set supplemental Template=Internet CongestionProvider=cubic
# netsh int tcp set supplemental Template=Datacenter CongestionProvider=cubic