开源项目
6-
Mini-Kanban
登录、用户 / 部门 / 项目 / 任务 CRUD、四列拖拽看板、附件上传、回收箱(软删除)与操作日志(含物理删除快照)。发布包只有一个可执行文件加一个 `web-dist/` 页面目录,同一进程、同一端口同时提供接口与页面,目标机不需要 Node 与 nginx;PostgreSQL 库需提前创建,Redis 可选(留空即关闭缓存)。
-
Panda Port Manager
用 C# WinForms(.NET 10)写的单文件桌面小工具:列出全部 TCP / UDP 端口占用与对应进程,支持实时筛选、排序与批量结束进程;还能识别 winnat 系统保留端口(Hyper-V / WSL / Docker 占用的「无主」端口)并一键释放。自带亮暗主题与三语界面,开箱即用。
-
Mini-IM
WebSocket 实时消息、离线消息补发、好友申请与黑名单、已读未读、异步落库;前端是原生 Vue2 + Axios 静态页,由后端直接托管、无需构建,一套页面响应式适配 PC 与手机。默认端口 8280,仓库只带配置模板 `config.example.yaml`(`config.yaml` 是本地文件、不入库),目录下没有它时先起一个初始化向导(`/setup`)引导填写数据库与 Redis,保存后由业务服务接管同一端口;演示账号开关打开后幂等写入七个两两互为好友的账号,名单可在 `config.yaml` 的 `seed.accounts` 里增删。
-
Go-WebSocket
浏览器带上 uid 连上来,服务端按报文里的 receiver 只发给指定用户;sender 由服务端按连接填写,客户端传什么都不作数。页面、静态资源与配置模板全部用 //go:embed 内嵌进二进制,clone 下来 go run . 就能跑,运行时不依赖任何外部文件。
-
Y-HTTP-Bench
单文件、开箱即用。可以压固定请求数或固定时长,支持全局限速、自定义方法与请求头;结束时输出延迟分位数、状态码分布与错误聚合,并能把每次请求的延迟流式导出成 CSV 自行画图。
-
Golocaldownload
用 Go + Gin 写的本地文件下载服务。页面模板与静态资源全部内嵌进二进制,发布出去就是一个可执行文件;配置有内嵌默认值,解压即用。适合把构建产物、素材包或内部资料挂到一个简单 URL 后面。
应用下载
2-
熊猫端口管理器
用 C# WinForms(.NET 10)写的单文件桌面小工具:列出全部 TCP / UDP 端口占用与对应进程,支持实时筛选、排序、批量结束进程(含子进程树)与自动刷新;还能识别 winnat 系统保留端口(Hyper-V / WSL / Docker 占用的「无主」端口)并一键释放。自带亮暗主题、三语界面与高 DPI 多屏适配,开箱即用。
-
熊猫存储工具
基于 Avalonia UI(.NET 10)的桌面应用:文件或整个文件夹拖进窗口就完成上传,之后像文件管理器那样逐级浏览、下载、重命名、批量删除,并顺手拿到可以直接分享的外链(raw / jsDelivr)。Windows / macOS / Linux 三平台,中英双语界面与亮暗主题;发布包是自包含单文件,免装 .NET 运行时,解压即用。
笔记
10-
目录穿越防护,以及容器里怎么还原宿主机路径
一个文件下载服务要回答两个「路径」问题:请求里那个路径不能越界,而页面上要显示的是宿主机上那个目录 —— 后者藏在 /proc/self/mountinfo 的第 4 个字段里。
-
把 GitHub 仓库当网盘:Contents API 的乐观并发与空目录
覆盖与删除都要带当前 SHA,所以写操作必须串行;而 Git 不存目录这件事,得靠每一级放一个 .gitkeep 来补。
-
PerMonitorV2 之后才是开始:跨屏 DPI 与 WinForms 暗色标题栏
打开 PerMonitorV2 只是拿到通知。真正的坑是框架会重复缩放:字号 10 → 5 → 2.5。解法是所有尺寸以 96 DPI 为基准做绝对重算。
-
端口被占用却查不到进程:winnat 保留端口与进程树终止
`netstat -ano` 给的 PID 可能是 0,也可能是一整棵进程树的父节点。前者要去问 netsh 的排除端口范围,后者要按进程树强杀。
-
固定内存算分位数:手写一个对数线性直方图
留全量样本算 P99,亿级请求内存就爆了。对数线性分桶把内存压到一个与请求量无关的常数(256KB),相对误差上限 0.1%。
-
压测工具的限速器不能用 time.Ticker
Windows 的系统定时器分辨率约 15.6ms,ticker 把吞吐死死卡在 60~90 req/s —— 设 5000 QPS 只跑出 88。改成「绝对时间表」后实测 4982。