feat: 添加央国企版简历 /soe 路由及独立样式
Deploy Resume / deploy (push) Successful in 20s

- 新增 soe/index.html、soe/resume.css(复制主简历及其样式,样式独立维护)
- nginx.conf 注册 /soe/ 路由
- Dockerfile 增加 COPY soe/

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
2026-09-23 20:01:05 +08:00
parent a6af277ac7
commit a8c884d23b
4 changed files with 630 additions and 0 deletions
+1
View File
@@ -9,6 +9,7 @@ COPY img/ /usr/share/nginx/html/img/
COPY resume/ /usr/share/nginx/html/resume/
COPY resume.txt /usr/share/nginx/html/resume.txt
COPY other/ /usr/share/nginx/html/other/
COPY soe/ /usr/share/nginx/html/soe/
# 暴露端口
EXPOSE 80
+6
View File
@@ -20,6 +20,12 @@ server {
try_files $uri $uri/ /resume/index.html;
}
# 央国企简历
location /soe/ {
alias /usr/share/nginx/html/soe/;
try_files $uri $uri/ /soe/index.html;
}
# 其他简历导航页
location /other/ {
alias /usr/share/nginx/html/other/;
+217
View File
@@ -0,0 +1,217 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>何朝晖 - 简历</title>
<link rel="stylesheet" href="resume.css">
</head>
<body>
<div class="page">
<!-- Header -->
<div class="header">
<div class="name">何朝晖</div>
<div class="contact-info">
<div class="contact-line">
<div class="contact-item">
<svg class="svg-icon" viewBox="0 0 24 24"><path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/></svg>
15671623703
</div>
<div class="contact-item">
<svg class="svg-icon" viewBox="0 0 24 24"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg>
hezhaohui0807@163.com
</div>
<div class="contact-item">
<svg class="svg-icon" viewBox="0 0 24 24"><path d="M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h-4V4h4v2z"/></svg>
<span style="color: #4478DF;">①</span> 全栈开发 <span style="color: #4478DF; margin-left: 8px;">②</span> 后端开发 <span style="color: #4478DF; margin-left: 8px;">③</span> 基础架构开发
</div>
<div class="contact-item">
<svg class="svg-icon" viewBox="0 0 24 24"><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"/></svg>
<span class="proj-tag" style="margin-right: 4px;">Go</span>
<span class="proj-tag" style="margin-right: 4px;">Java</span>
<span class="proj-tag" style="margin-right: 4px;">Vue</span>
<span class="proj-tag">React</span>
</div>
</div>
<div class="website-line">
线上简历:<a href="http://47.121.181.112:8080/resume" target="_blank" title="在线简历" style="color: #4478DF; text-decoration: none;">http://47.121.181.112:8080/resume</a>
<span style="margin-left: 12px;">代码仓库:</span><a href="http://47.121.181.112:3000/wonder" target="_blank" title="代码仓库" style="color: #4478DF; text-decoration: none;">http://47.121.181.112:3000/wonder</a>
<span style="margin-left: 12px;">CSDN:</span><a href="https://blog.csdn.net/cheer2333" target="_blank" title="CSDN博客" style="color: #4478DF; text-decoration: none;">链接</a>
<span style="margin-left: 12px;">文档站:</span><a href="http://47.121.181.112:20000/" target="_blank" title="文档站" style="color: #4478DF; text-decoration: none;">链接</a>
</div>
</div>
</div>
<!-- 教育经历 -->
<div class="section">
<div class="section-title">教育经历</div>
<div class="edu-header">
<div>
<span class="edu-school">武汉科技大学</span><span class="edu-badge">省部共建</span>
<span class="edu-major">计算机科学与技术 【国家级一流专业 | ESI 0.495%】</span>
<span class="edu-degree">本科</span>
</div>
<div class="edu-date">2023-09 ~ 2027-06</div>
</div>
<ul class="edu-items">
<li>2026-03 ~ 2026-05 <img src="../img/kingsoft.svg" class="company-logo" alt="金山办公"> 金山办公 WPS 菁英工程师训练营</li>
<li>2024-05 ~ 2026-05 <img src="../img/linghang.svg" class="company-logo" alt="领航工作室"> 武汉科技大学领航工作室</li>
<li>2025-01 ~ 2025-03 <img src="../img/bytedance.svg" class="company-logo" alt="字节跳动"> 字节跳动 MarsCode 青训营</li>
<li>2026-06 ~ 2026-07 <img src="../img/neusoft.svg" class="company-logo small" alt="东软集团"> 东软集团生产实习</li>
</ul>
</div>
<!-- 荣誉奖项 -->
<div class="section">
<div class="section-title">荣誉奖项</div>
<div class="honor-section">
<div class="honor-left">
<div class="honor-item">
<div class="honor-content">
<img src="../img/kingsoft.svg" class="company-logo" alt="金山办公">
<span class="honor-name">"金山杯"华中地区高校第十八届程序设计邀请赛</span>
<span class="honor-badge">三等奖</span>
</div>
<a href="http://47.121.181.112:40027/i/2026/05/28/6a17ca366d125.jpg" class="cert-link" target="_blank">证书</a>
</div>
<div class="honor-item">
<div class="honor-content">
<img src="../img/icpc.svg" class="company-logo icpc" alt="ICPC">
<span class="honor-name">国际大学生程序设计竞赛(ICPC)湖北省赛</span>
<span class="honor-badge">优秀奖</span>
</div>
<a href="http://47.121.181.112:40027/i/2026/05/28/6a17ca3666920.png" class="cert-link" target="_blank">证书</a>
</div>
</div>
<div class="honor-right">
<div class="honor-item">
<div class="honor-content">
<img src="../img/qiniu.svg" class="company-logo qiniu" alt="七牛云">
<span class="honor-name">七牛云 XEngineer 开源实训项目</span>
<span class="honor-badge">三等奖</span>
</div>
</div>
<div class="honor-item">
<div class="honor-content">
<img src="../img/lark.svg" class="company-logo" alt="飞书" style="height: 20px;">
<span class="honor-name">WaytoAGI 飞书全球黑客松(武汉站)</span>
<span class="honor-badge">创意奖</span>
</div>
</div>
</div>
</div>
</div>
<!-- 实习经历 -->
<div class="section">
<div class="section-title">实习经历</div>
<div class="exp-header">
<div class="exp-company"><img src="../img/qiniu.svg" class="company-logo qiniu" alt="七牛云"> 七牛云 | 上海七牛信息技术有限公司</div>
<span class="exp-position">产品研发部-基础架构部 全栈开发</span>
<a href="http://47.121.181.112:40027/i/2026/08/06/6a745822150dd.jpg" class="cert-link" target="_blank">实习证明</a>
<div class="exp-date">2026-07 ~ 2026-08</div>
</div>
<ul class="exp-items">
<li>构建基础架构平台,完善服务注册链路,集成网络探测、数据源自动注册、监控指标采集与日志接入,实现基础服务可观测。</li>
<li>构建多协议单点认证网关,从零实现 SAML 2.0 SP 加密断言解密 + OAuth2/OIDC Provider + JWT Claims 与 Redis 吊销。</li>
<li>设计 PostgreSQL HA 集群方案,基于 Patroni+etcd+HAProxy+Keepalived 实现 VIP 漂移、读写分离与 pgBackRest 冗余。</li>
<li>实现 Ansible MySQL 全生命周期自动化(11 个 Playbook),覆盖原子二进制安装、GTID 复制校验与 MHA 故障转移回调。</li>
</ul>
<div class="exp-header" style="margin-top: 10px;">
<div class="exp-company"><img src="../img/hust.svg" class="company-logo hust" alt="华中科技大学"> 国家网络安全人才与创新基地 | 武汉金银湖实验室</div>
<span class="exp-position">平台技术部 后端开发</span>
<a href="http://47.121.181.112:40027/i/2026/05/28/6a17cb367128b.jpg" class="cert-link" target="_blank">实习证明</a>
<div class="exp-date">2025-11 ~ 2026-03</div>
</div>
<ul class="exp-items">
<li>参与设计面向国家关键单位的网络安全 SaaS 平台,完善租户多维度隔离、用户混合权限模型、API 流式计费等模块。</li>
<li>完善构建组件漏洞知识图谱,基于金银湖安全大模型及供应链上游信息,统一评估组件安全风险,接入态势感知安全中心。</li>
<li>设计高性能 API 计费网关,支持按月固定/按调用量双模式,Redis HINCRBY 实时计数 + MongoDB 聚合账单,幂等写入。</li>
<li>实现 Redis 滑动窗口分布式限流中间件,MULTI 事务保证原子性,Header 注入 X-RateLimit,Redis 异常时降级保障可用性。</li>
</ul>
</div>
<!-- 项目经历 -->
<div class="section">
<div class="section-title">项目经历</div>
<div class="proj-header">
<div class="proj-title-line">
<span class="proj-name">Gen2D 游戏素材生成工具</span>
<span class="proj-role">全栈开发 【七牛云 XEngineer 开源项目 - 🥉三等奖】</span>
</div>
<div class="proj-date">2026-05 ~ 2026-06</div>
</div>
<div class="proj-link-line">
<div class="proj-tags">
<span class="proj-tag">Go(Gin)</span>
<span class="proj-tag">Eino Agent Graph</span>
<span class="proj-tag">GORM</span>
<span class="proj-tag">OSS</span>
<span class="proj-tag">React</span>
<span class="proj-tag">Zustand</span>
</div>
<a href="https://gitee.com/hezhaohui123/gen2d" class="proj-link" target="_blank">https://gitee.com/hezhaohui123/gen2d</a>
</div>
<div class="proj-intro">
<span class="proj-desc">AI 2D 游戏素材生成平台,用户输入文本提示词,自动生成风格一致的 Sprite、背景、UI 元素与动画帧流。
<br>支持用户提供世界观文本、参考图片、标签映射以及反馈信息,输出具备一致性的可用素材。
</span>
</div>
<div class="proj-work-title">主要工作:</div>
<ol class="proj-work-items">
<li>构建基于有向无环图的工作流,引入 critic 自省机制实现反馈增强,基于 ReAct 架构实现轮级思考,并支持 Agent 间通信。</li>
<li>在分布式限流方案的选择上,对比计数器、漏桶、窗口等多种限流机制,选用 go-redis 实现分布式的令牌桶算法限流。</li>
<li>为增强系统可观测性,基于 Gin 中间件以及自定义的任务协程池暴露指标,使用 Prometheus 收集,接入 Grafana 面板。</li>
<li>在不同部署方案(单机与多机)部署上,支持基于 RabbitMQ 的共享任务队列,支持基于内存的自定义单机任务队列。</li>
<li>对于用户偏好的多样性,支持基于渐进式披露的 skill 配置,用户反馈的动态注入,世界观文本 RAG 召回,实现上下文增强。</li>
</ol>
<div class="proj-header" style="margin-top: 12px;">
<div class="proj-title-line">
<span class="proj-name">ThumbUP 高并发点赞系统</span>
<span class="proj-role">后端开发 【哔哩哔哩技术团队《B站千亿级点赞系统服务架构设计》文章复现】</span>
</div>
<div class="proj-date">2025-10 ~ 2025-11</div>
</div>
<div class="proj-link-line">
<div class="proj-tags">
<span class="proj-tag">Spring Boot 3</span>
<span class="proj-tag">Redis</span>
<span class="proj-tag">Caffeine</span>
<span class="proj-tag">HeavyKeeper</span>
<span class="proj-tag">MyBatis-Plus</span>
</div>
<a href="http://47.121.181.112:3000/wonder/thumb-up" class="proj-link" target="_blank">http://47.121.181.112:3000/wonder/thumb-up</a>
</div>
<div class="proj-intro">
<span class="proj-desc">中台化的高并发点赞系统,支撑多业务场景的点赞交互与数据查询。
<br>应对亿级数据规模与万级QPS高并发流量,提供高可用、可扩展的基础服务。</span>
</div>
<div class="proj-work-title">主要工作:</div>
<ol class="proj-work-items">
<li>为避免缓存穿透,构建布隆过滤器与空值短缓存双重机制;为避免缓存击穿,将热点数据加互斥锁,确保单线程回源重建。</li>
<li>基于 Caffeine + Redis 构建二级缓存,热点 Key 提升至本地缓存,避免冷数据污染,降低 Redis 访问压力。</li>
<li>Lua 脚本保证点赞原子性,10 秒时间片分桶暂存增量,定时任务批量落库,补偿任务每日兜底,保障最终一致性。</li>
<li>对比CMS算法,采用HeavyKeeper实现Top-K探测,利用指数衰减淘汰冷Key,解决高频更新准确率问题,适配流量变化。</li>
<li>单机场景利用字符串常量池特性,以业务前缀+用户ID为锁对象;多机场景基于 Redis 实现分布式锁,保障多实例数据一致。</li>
</ol>
</div>
<!-- 专业技能 -->
<div class="section">
<div class="section-title">专业技能</div>
<ul class="skill-items">
<li>熟悉 Go/Java 的常用数据结构、中间件、并发模型、垃圾回收机制。能够使用 pprof、JFR 等工具进行性能排查。</li>
<li>熟悉分布式微服务架构,理解服务注册与发现、负载均衡、限流熔断、配置中心、幂等控制、分布式锁及分布式事务。</li>
<li>熟悉数据库系统,理解MySQL事务隔离、B+树索引优化及 MVCC 机制,理解 Redis 混合持久化策略、集群、哨兵机制。</li>
<li>熟悉缓存技术,理解多级缓存的设计,以及高并发场景下的缓存策略,如旁路缓存、读/写穿透、异步写回。</li>
<li>熟悉消息队列,理解主流中间件选型、路由、持久化原理、事务、死信队列机制、推拉结合模式、集群化部署。</li>
<li>熟悉多集群环境下的持续集成部署,理解 K8s 下的应用发布、弹性扩缩容、灰度发布、健康检查及可观测体系建设。</li>
<li>探索 AI 前沿工程实践,理解 Context Engineer 与 Harness Engineer,理解智能体架构、权限治理、可插拔配置等。</li>
</ul>
</div>
</div>
</body>
</html>
+406
View File
@@ -0,0 +1,406 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #ffffff;
color: #222222;
line-height: 1.4;
font-size: 12px;
}
.page {
width: 794px;
min-height: 1123px;
margin: 0 auto;
padding: 12px 22px;
background: #ffffff;
}
/* Header */
.header {
margin-bottom: 8px;
}
.name {
font-size: 28px;
font-weight: 800;
color: #222222;
margin-bottom: 3px;
letter-spacing: 1px;
}
.contact-info {
font-size: 12px;
color: #222;
line-height: 1.45;
}
.contact-line {
display: flex;
align-items: center;
gap: 18px;
margin-bottom: 1px;
}
.contact-item {
display: flex;
align-items: center;
}
.position-line {
display: flex;
align-items: center;
margin-top: 1px;
}
.website-line {
display: flex;
align-items: center;
margin-top: 1px;
}
/* Section */
.section {
margin-bottom: 6px;
}
.section-title {
font-size: 14px;
font-weight: 700;
color: #4478DF;
padding: 3px 10px;
border-left: 3px solid #4478DF;
background-color: #EEF3FF;
margin-bottom: 4px;
line-height: 1.3;
}
/* Education */
.edu-header {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: 3px;
}
.edu-school {
font-size: 14px;
font-weight: 700;
color: #222;
}
.edu-badge {
display: inline-block;
font-size: 10px;
color: #4478DF;
border: 1px solid #4478DF;
border-radius: 4px;
padding: 1px 5px;
margin-left: 6px;
vertical-align: middle;
line-height: 1.4;
}
.edu-major {
font-size: 13px;
color: #888;
margin-left: 10px;
}
.edu-degree {
font-size: 13px;
color: #888;
margin-left: 10px;
}
.edu-date {
font-size: 13px;
color: #888;
white-space: nowrap;
}
.edu-items {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2px 20px;
margin-left: 12px;
font-size: 13px;
color: #252525;
line-height: 1.45;
list-style: none;
}
.edu-items li {
margin-left: 0;
}
/* Honors */
.honor-section {
display: flex;
}
.honor-left {
width: 55%;
border-right: 1px dashed #ccc;
padding-right: 12px;
}
.honor-right {
width: 45%;
padding-left: 12px;
}
.honor-item {
display: flex;
align-items: baseline;
flex-wrap: wrap;
margin-bottom: 2px;
font-size: 13px;
line-height: 1.45;
}
.honor-content {
color: #222;
flex: 1;
min-width: 0;
}
.honor-right .honor-content {
display: flex;
align-items: center;
}
.honor-right .honor-name {
flex: 1;
}
.honor-name {
color: #222;
}
.honor-badge {
display: inline-block;
min-width: 52px;
text-align: right;
margin-left: 4px;
font-size: 12px;
color: #888;
white-space: nowrap;
}
.cert-link {
color: #4478DF;
text-decoration: none;
margin-left: 8px;
font-size: 13px;
white-space: nowrap;
}
.honor-item .cert-link {
margin-left: 4px;
}
.honor-date {
color: #888;
white-space: nowrap;
margin-left: 4px;
min-width: 56px;
text-align: right;
}
/* Experience */
.exp-header {
display: flex;
align-items: baseline;
margin-bottom: 1px;
}
.exp-company {
font-size: 14px;
font-weight: 700;
color: #222;
}
.exp-date {
font-size: 13px;
color: #888;
white-space: nowrap;
margin-left: 12px;
}
.exp-position {
font-size: 12px;
color: #888;
flex: 1;
margin-left: 10px;
}
.exp-items {
margin-left: 12px;
font-size: 13px;
color: #252525;
line-height: 1.45;
}
.exp-items li {
list-style-type: disc;
margin-left: 6px;
margin-bottom: 0px;
}
/* Project */
.proj-header {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: 1px;
}
.proj-title-line {
display: flex;
align-items: baseline;
gap: 8px;
}
.proj-name {
font-size: 14px;
font-weight: 700;
color: #222;
}
.proj-role {
font-size: 12px;
color: #888;
}
.proj-date {
font-size: 13px;
color: #888;
white-space: nowrap;
}
.proj-link-line {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
margin-bottom: 2px;
}
.proj-tags {
display: flex;
gap: 4px;
flex-wrap: wrap;
}
.proj-tag {
display: inline-block;
font-size: 10px;
color: #4478DF;
border: 1px solid #4478DF;
border-radius: 3px;
padding: 0px 4px;
line-height: 1.4;
}
.proj-link {
color: #4478DF;
text-decoration: none;
}
.proj-intro {
font-size: 13px;
color: #252525;
line-height: 1.45;
margin-bottom: 3px;
border: 1px dashed #b0b0b0;
border-radius: 4px;
padding: 4px 8px;
text-align: center;
}
.proj-desc {
color: #656464;
display: block;
text-indent: 24px;
}
.proj-work-title {
font-size: 13px;
font-weight: 700;
color: #222;
margin-bottom: 2px;
}
.proj-work-items {
margin-left: 12px;
font-size: 13px;
color: #252525;
line-height: 1.45;
}
.proj-work-items li {
list-style-type: decimal;
margin-left: 12px;
margin-bottom: 0px;
}
/* Skills */
.skill-items {
margin-left: 12px;
font-size: 13px;
color: #252525;
line-height: 1.45;
}
.skill-items li {
list-style-type: disc;
margin-left: 6px;
margin-bottom: 0px;
}
/* SVG Icons */
.svg-icon {
width: 14px;
height: 14px;
fill: #4478DF;
vertical-align: middle;
margin-right: 5px;
flex-shrink: 0;
}
/* Company Logo */
.company-logo {
height: 16px;
vertical-align: middle;
margin-left: 4px;
}
.company-logo.small {
height: 10px;
}
.company-logo.icpc {
height: 22px;
}
.company-logo.hust {
height: 22px;
}
.company-logo.qiniu {
height: 14px;
}
/* Print styles - force background colors to display */
@media print {
* {
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
color-adjust: exact !important;
}
}