Shanchuann.cn / 2023 — 2027 N 34.347°   E 108.939°   XI'AN
N° 02 — 023   ·   FOLIO   ·   SHOT ON A QUIET FIELD

OPEN-SOURCE engineered BY ZHANG BOKUN

MMXXVI   ·   XI'AN, CN   ·   FIRST PRINT, JUNE
SOFTWARE ENGINEERING XI'AN UNIVERSITY OF FINANCE AND ECONOMICS
Enter / 入场
SYSTEMS · BACKEND · AI
SINCE Q3 2023
/ Field studies · 2026.06.23 · 4 frames

Prologue / 序

把代码当成可以反复打磨的器物 —— 在底层系统的呼吸里,慢慢寻找一种自己的诚实。

Zhang Bokun · MMXXVI

这一页是我的"序"。下面是我做过的事、用过的工具、走过的弯路 —— 全都写在中文里,英文标题只是为了让排版有呼吸。

没有 PPT 风的成就罗列,也不打"AI 全栈"的标签。如果你正在面试我、招我、或者只是想看看一个本科生怎么写代码 —— 往下翻就行,慢一点没关系。

Zhang Bokun — a software engineering student, building one commit at a time.

About / 关于

A SOFTWARE ENGINEERING
STUDENT, BUILDING
HIGH-CONCURRENCY
C++ BACKENDS AND
AI-ASSISTED FULL-STACK
TOOLS — STITCHING THE
TWO TOGETHER.

一句话:写 C++ 服务端、用 AI 做趁手的工具,并把这两件事缝在一起。

在做的事 / In progress

我在西安财经大学读软件工程本科,正在做的事是高并发 C++ 服务端、AI 辅助的全栈工具, 以及把这两件事缝合在一起。

比起"颠覆"和"重塑",我更愿意把代码当成可以反复打磨的器物 —— 先把问题写清楚,再写代码;信任工具,但不让工具替我思考。

下午常常一个人在西安南郊的工位坐着,写 reactor、读 STL 源码、调日志库;晚上把当天的修补写成博客。 做的项目不一定大,但每一行都得能讲清楚为什么这么写。

How I Work — three rules I keep coming back to.

§ 02
01 Write the problem first 先把问题写清楚,再写代码。能写清楚的,往往已经做完一半。
02 Trust the tool, keep the judgment 信任工具,但不让工具替你思考 —— AI 给我节奏,我给它判断。
03 One thing at a time 一次只做一件事,做到能讲清楚为止。讲不清楚的,就还没做完。
04 Read before writing 动手前先把现有代码读一遍。在别人的逻辑上修补,比自己另起一摊要诚实得多。
05 Ship small, often 小步、频繁、可回滚。先让一条最窄的路跑通,再去拓宽 —— 比一次性铺好高速路靠谱得多。
06 Leave the place tidier 改动结束前,把顺手发现的小坑填一下。不是大重构,只是别让下一个看到这段代码的人骂出声。

Where the work takes me

a m a p   o f   paths.

从西安财经大学出发,这六条路把我带到了不同的工地。
Six paths · one origin.

XI'AN · BLOCK MAP / 块地图 06 NODES · CURSOR MAGNETIC N° 02 — 023 · 双语标注 MOVE TO LIFT / 鼠标移动吸附
西安财经大学 / XUFE · origin
C++ 系统编程 C++ Systems — 720 D RAII · STL · 并发原语
高并发后端 Backend at Scale — 450 D epoll · Reactor · μSvc
数据库 & 存储 Databases & Storage — 540 D MySQL · Redis · LSM-Tree
AI 工程 AI Engineering — 380 D Agent · RAG · 评测
算法 & 数据结构 Algorithms & DS — 820 D LeetCode · 图论 · DP
DevOps 与工具链 DevOps & Tooling — 300 D Docker · CMake · Git

    1000 公里以外的清华操作系统训练营 / 字节青训营,
也算同一张地图上的两座坐标。    

    每条线后面的"D"是这块地我大概翻了多少天 ——
数字会变,方向不会。    

Hold & Move

按住任意一格,把它拖到下一个时段 —— 三年里我从"打开终端要查命令"走到"自己写网络库"。
drag through three epochs · 2023 → 2024 → 2026

FRESHMAN YEAR · Q3 2023

那时候我刚学完 C 语言,对着 "Hello, World" 想象一座可以跑起来的城市。

  • LanguagesC · Python (basic)
  • ReadingCSAPP · K&R
  • BuiltCourse assignments
  • ToolsVS Code · Git (just learning)
SOPHOMORE YEAR · Q2 2024 · 过渡

从语法到工程的那段路 —— 第一次读 STL 源码,第一次明白"构建系统"到底是什么。

  • LanguagesC++ (learning) · Python · SQL
  • ReadingEffective C++ · STL 源码剖析
  • Built简易聊天室 · 课程数据库系统
  • ToolsVS Code · Git (流畅) · CMake (入门)
JUNIOR YEAR · Q2 2026 · 进行中

现在我在写自己的网络库,让 epoll 在事务里跑得安全;让 AI 帮我读日志,但不让它替我下结论。

  • LanguagesC++17/20 · Java · TS
  • Working onHyperTicket · ChronoLite
  • ShippedUQBank · Hexo Viz
  • ToolsClaude Code · GDB · CMake

— hold & drag / 按住拖动 —

Work.

04 / Selected projects
01

HyperTicket

高性能票务预约系统 · core developer · 2025.12 — 2026.06

在单机上把"几万个连接"压成"一个事件循环" —— 主从 Reactor + one loop per thread + 业务线程池;下单与取消放进事务里,靠 SELECT … FOR UPDATE 行锁根治超卖。已在 Linux 完成完整部署与压测。

真正学到的不是网络模型,是"读一遍 InnoDB 锁文档"和"用 wrk 压一晚上"的耐心 —— 这个项目教会我把每一条事务边界都写下来。

C++17epoll ReactorMySQLjsoncppChronoLiteReact · TS
02

Visualization for Hexo

博客可视化管理工具 · full-stack · 2026.01 — 2026.05

给 Hexo 装一张可视化的脸 —— Markdown 编辑与实时预览、Front Matter 表单化、Git 集成、Hexo 命令一键执行。内置多模型 AI 助手(DeepSeek / GLM / OpenAI)做摘要、对话编辑与逐行 Diff 审查。Material 3 无边框桌面端,GitHub Actions 打包发布。

这是我第一次为"自己每天都要用的工具"写代码。痛点很具体:忘记 front matter、忘记图床路径、忘记 commit 顺序 —— 工具的好坏,就看它替你少记多少。

C++17Qt 6 / QMLMaterial Design 3SQLiteMulti-LLM
03

ChronoLite

轻量级异步日志库 · solo · 2026.02 — 2026.04

为高并发服务端和资源受限环境写的日志库 —— 双缓冲交换 + 后台写线程,业务线程不等磁盘 IO;纳秒时间戳、文件大小与时间双重轮转、过期自动清理。printf 与流式两种 API;CMake 静态/动态库;已嵌进 HyperTicket 等项目当基础组件。

最早只是 HyperTicket 里的一个内部模块,发现"延迟刷盘"和"格式化代价"在压测里居然是大头之后,索性拆出来独立维护;从此每个项目都少写一份"打不出日志怎么办"。

C++11 / 17CMakeLinux / WindowsDouble-buffer
04

UQBank

通用题库组卷考试系统 · full-stack · 2025.11 — 2026.01 · live

开源考试平台 —— 题库、智能组卷、在线考试、RBAC、数据分析、自动化工作流;JWT 鉴权,Docker Compose 部署,预留 Ollama 接口为后续主观题批阅与难度分级铺路。线上版本:uqbank.shanchuann.cn。

第一次把"立项 → 上线 → 有人在用"这条全链路独立跑通的产品。后续围绕真实用户反馈做了三轮迭代,也是这次让我明白"上线"只是中间检查点,不是终点。

Java 17Spring BootVue 3 · TSPostgreSQLDockerOllama

Arsenal / 工具箱

What I reach for.

From 2023— 第一门语言 · still the one I trust most.

从 C 开始,然后 C++11/17/20。STL 容器、智能指针、移动语义、模板、lambda 这些我用着不慌。Linux 系统编程是顺着 C++ 这条线自然走过来的 —— 内核一直在问我答不上的问题,我得回去补课。最近的练手清单:用 std::ranges 重写一遍 STL 算法、用 coroutine 抽象 epoll、用 perf 看自己写的反应器到底慢在哪。

C++11 / 17 / 20 STL · RAII · Move semantics Templates · Lambda Linux · IPC · Signals · GDB
Since 2024— 项目真正落地的地方 · where my projects live.

Linux 下的进程/线程模型、IO 多路复用、事件驱动框架。TCP/IP 四层和 HTTP/HTTPS 都吃过亏才搞明白 —— 粘包、心跳、自定义协议这些是 HyperTicket 教我的。MySQL 的事务隔离与 InnoDB 锁也是这一路顺出来的。Redis 主要用来兜热点和做幂等键;这一块我还在补,缓存击穿/穿透/雪崩这些课本概念在生产里只是冰山一角。

Epoll · Reactor · Thread pool TCP/IP · HTTP/HTTPS MySQL · ACID · InnoDB locks Redis · Cache patterns
Since 2025— 每天用,慎用 · daily but cautiously.

Claude Code 是日常同事。LangChain 用来串调用与外部工具,Ollama 在本地跑小模型,Prompt 是当作"接口契约"在维护。我会让 AI 帮我读日志、复盘 bug、生成脚手架 —— 但所有架构决策和最终判断留给人。Hexo Viz 里的多模型助手就是按这个思路写的:不让 AI 替你提交,先让它写出 Diff,你逐行点头再走。

Claude Code · Copilot LangChain Ollama · Local LLMs Prompt engineering
Always— 决定项目能不能活下来的"无聊"部分。

Git 用得多就总会练顺。CMake、Gradle 跨平台搭项目;GitHub Actions 把构建、测试、发布串起来;Docker / Docker Compose 是给同事跑起来最稳的方式;GDB 是真正出问题时的伙伴。我习惯把每个项目的"一行起步指令"写进 README ——docker compose up 就能跑的项目,比贴十张架构图都有说服力。

Git · GitHub Actions CMake · Gradle Docker · Docker Compose GDB

Construction / 时间表

The build, in three phases.

Phase I · Q3 2023
Enrolled.

软件工程本科入学。系统读 CSAPP、操作系统、计算机网络、数据库原理这一线。打基础的两年 —— 现在回看,慢点反而值得:先把"为什么这样设计"搞明白,工程上才能少踩坑。

  • 课程CSAPP · OS · 网络 · 数据库
  • 状态打地基
Phase II · Q4 2025 →
First Open-Source Drops.

11 月开始 UQBank,12 月开始 HyperTicket;穿插 ChronoLite 和 Hexo Viz。数模竞赛拿到陕西赛区一等奖。这段时间最大的变化是开始用工程的方法做项目 —— 写 README、写测试、把仓库公开,让陌生人能复现我的工作。

  • 开源UQBank · HyperTicket · ChronoLite
  • 奖项数模 · 陕西赛区一等奖
Phase III · Q2 2027
Graduation.

毕业。在那之前要把 HyperTicket 跑完压测、把 ChronoLite 拆成独立 release、把本地小模型嵌进运维链路里。求职方向偏向 C++ / 后端 / Infra;如果有合适的实习机会愿意提前进入工业环境磨一段。

  • 压测HyperTicket · full bench
  • 分发ChronoLite · independent release
  • 实验本地小模型 · 嵌入运维链路

Open-source 开源项目

0

ACTIVE REPOS ON GITHUB 14 个活跃仓库 + 6 个教学仓库 · 共 20 个,公开维护中

Awards 省赛奖项 · 队长

1ST Math Modeling 2025 数学建模 · 陕西省一等奖
3RD Computer Design 计算机设计大赛 · 陕西省三等奖

SHAANXI · TEAM LEAD 两项省赛奖项 · 均为队长

Camps 训练营

0

THREE TRAINING PROGRAMS 清华 rCore OS · 字节青训营 · 携程前端训练营

Live 线上产品

0

IN REAL USE uqbank.shanchuann.cn · 正在被使用

School / 学校

Xi'an University of Finance and Economics

软件工程本科 · 2023.09 — 2027.06 · 本科在读。

财经类院校里的工科生:上午听别人讲计量经济学,下午自己读 CSAPP 的并发章节。 学校本身不是顶尖工程院校,但它给了我一个相对安静、能长期专注的环境 —— 剩下的"卷",靠自己卷。

基础课程是地基 —— 我在这里把操作系统、计算机网络、数据库原理一寸寸读厚。

课外把清华 rCore 训练营、字节青训营这两块外部材料补进来, 算是给"软工本科生该懂的东西"加了两根额外的钢筋。

04
Core courses
aced
02
External camps
(Tsinghua / ByteDance)
01
Regional 1st
prize · math modeling
Late nights
at the keyboard

Field notes / 博客近作

From the blog.

博客更像是把当天踩过的坑写成"以后能复用的笔记"。题材偏 C/C++、操作系统、网络、数据库、以及 AI 辅助开发的一些小观察 —— 基本都是中文,结构松散但足够诚实。

All posts / 全部文章 ↗
Get in touch / 联系 § 13

如果你看到了这里 —— 写邮件、提 issue、甚至打电话都行。回得不快,但一定回。
实习 / 校招 / 开源合作 / 技术讨论都欢迎;只要你愿意把问题写清楚,我就愿意花时间回。

Let's
build something.

Email

Phone & Channels

Location

Xi'an, Shaanxi · CN
Local time: — : —

Frequently asked

FAQ.

因为我先碰到了让我兴奋的问题。第一次看到 epoll 把"几万个连接"压成"一个事件循环"那一刻,我知道接下来几年得跟着这条路走下去。卷不卷是别人的事;我只想把眼前这个值得做的问题做完。

会,如果你把它当成"答案生成器"。我把 Claude Code 当一个比我快、比我没耐心、也比我没立场的同事 —— 它给我节奏,我给它判断。HyperTicket 的事务隔离、ChronoLite 的双缓冲设计,是我和它来回吵出来的,不是它单方面递给我的。

因为我在本科期间就用上了别人写的 jsoncpp、libevent、Hexo —— 我至少得还回去一点点。也因为开源是我目前唯一能拿出来给陌生人审查的"工作记录"。代码摆在那儿,谁都能验真,比履历上的形容词扎实得多。

短期:把 HyperTicket 跑完一轮认真的压测、把 ChronoLite 拆成独立 release。中期:把本地小模型嵌进运维链路里 —— 让 AI 帮我读日志、帮我做事后复盘,但所有决策权留给人。长期还没想明白,先把上面两件做扎实再说。

邮件 1537521192@qq.com 是我最常看的。技术问题直接在 GitHub issue 提,公开讨论对大家都好。电话 +86 130 0856 9663 留给真的紧急的事。我回复不快但一定回。

博客主体跑在 Hexo + Butterfly 上,这一页 about 是手写的单文件 HTML —— GSAP + Lenis 做动画,IntersectionObserver 处理懒加载与渐入,所有图片走 CDN 兜底。配色、字体、间距全部用 CSS 变量挂在 :root 上,方便回头一处改全局改。整页约 3000 多行,写的时候 Claude Code 是我的"对照同事" —— 但每一段标点都是我自己点头之后再合并的。

方向偏 C++ / 后端 / 系统软件 / Infra;对 AI 工程(Agent · 评测 · 本地化部署)也有持续投入。我做事偏慢、偏认真,不擅长把简历写得花里胡哨;但你能从 GitHub 上读到我每一个 commit 的"心智过程"。如果你的团队需要一个愿意自己读源码、自己写文档、自己复盘的本科生 —— 我大概率是个还不错的选项。