├── README.md ├── github-resume.css ├── images ├── image-20220127144756728.png ├── image-20220127144935660.png ├── image-20220127145315638.png ├── image6.png ├── image7.png └── logo.png └── resume-template.md /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |
4 |

5 | 6 | 7 | 8 |

9 |

10 | 11 | # markdown-resume 12 | 13 | typroa 简历主题, 保证导出 PDF 简历**刚好一页** 14 | 15 | ## 1. 功能 16 | 17 | * **简单**: 因为不用关心排版, 只需要关心内容 18 | * **面试加分**: 因为面试官也是程序员, 能给面试一定加分 19 | * **一页PDF**: 因为一页的简历更合适面试求职, 该样式会保证简历刚好一页 20 | 21 | 22 | ## 2. 效果 23 | 24 | ![image-20220127145801116](images/image7.png) 25 | 26 | # 快速开始 27 | 28 | ## 1. 安装 typora 29 | 30 | ### 1.1. 下载 31 | 32 | 官网地址: https://typora.io/ 33 | 34 | 中文地址: https://typora.cn/ 35 | 36 | ### 1.2. 安装 37 | 38 | 安装过程很简单, 就不赘述了 39 | 40 | 41 | ## 2. 将 github-resume.css 复制到 Typora 的主题文件夹 42 | 43 | 44 | 打开typroa-> 文件 -> 偏好配置 -> 外观 -> 打开主题文件夹 45 | 46 | ![image-20220127144756728](images/image-20220127144756728.png) 47 | 48 | ![image-20220127144935660](images/image-20220127144935660.png) 49 | 50 | 重启 typora 51 | 52 | ## 3. 更换 typroa 主题 53 | 54 | ![image-20220127145315638](images/image-20220127145315638.png) 55 | 56 | ## 4. 导出 HTML 57 | 58 | 修改本项目下的简历模板 resume-template.md 之后导出 HTML 59 | 60 | > 当然你也可以更加自己的喜好不使用 resume-template.md 模板, 自己写一份 61 | 62 | 文件 -> 导出 -> HTML 63 | 64 | ![Alt text](images/image6.png) 65 | 66 | ## 5. 打印 PDF 67 | 68 | * 使用浏览器打开导出的 HTML 69 | * Ctrl + P 打印, 选择打印机为 PDF 70 | 71 | 需要调整的内容! 72 | 73 | 1. **去掉页眉页脚** 74 | 2. **调整边距(建议最小)** 75 | 3. **调整缩放(刚好一页即可)** 76 | 77 | ![Alt text](images/image7.png) 78 | -------------------------------------------------------------------------------- /github-resume.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --side-bar-bg-color: #fafafa; 3 | --control-text-color: #777; 4 | } 5 | 6 | @include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext); 7 | 8 | /* open-sans-regular - latin-ext_latin */ 9 | @font-face { 10 | font-family: 'Open Sans'; 11 | font-style: normal; 12 | font-weight: normal; 13 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url('./github/open-sans-v17-latin-ext_latin-regular.woff2') format('woff2'); 14 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 15 | } 16 | /* open-sans-italic - latin-ext_latin */ 17 | @font-face { 18 | font-family: 'Open Sans'; 19 | font-style: italic; 20 | font-weight: normal; 21 | src: local('Open Sans Italic'), local('OpenSans-Italic'), url('./github/open-sans-v17-latin-ext_latin-italic.woff2') format('woff2'); 22 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 23 | } 24 | /* open-sans-700 - latin-ext_latin */ 25 | @font-face { 26 | font-family: 'Open Sans'; 27 | font-style: normal; 28 | font-weight: bold; 29 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url('./github/open-sans-v17-latin-ext_latin-700.woff2') format('woff2'); 30 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 31 | } 32 | /* open-sans-700italic - latin-ext_latin */ 33 | @font-face { 34 | font-family: 'Open Sans'; 35 | font-style: italic; 36 | font-weight: bold; 37 | src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url('./github/open-sans-v17-latin-ext_latin-700italic.woff2') format('woff2'); 38 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 39 | } 40 | 41 | html { 42 | font-size: 10px; 43 | -webkit-font-smoothing: antialiased; 44 | } 45 | 46 | body { 47 | font-family: "Open Sans","Clear Sans", "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif; 48 | color: rgb(51, 51, 51); 49 | line-height: 1; 50 | } 51 | 52 | #write { 53 | max-width: 2000px; 54 | margin: 0 auto; 55 | padding: 5px; 56 | padding-bottom: 50px; 57 | } 58 | 59 | @media only screen and (min-width: 1400px) { 60 | #write { 61 | max-width: 1350px; 62 | } 63 | } 64 | 65 | @media only screen and (min-width: 1800px) { 66 | #write { 67 | max-width: 1750px; 68 | } 69 | } 70 | 71 | #write > ul:first-child, 72 | #write > ol:first-child{ 73 | margin-top: 10px; 74 | } 75 | 76 | a { 77 | color: #4183C4; 78 | } 79 | h1, 80 | h2, 81 | h3, 82 | h4, 83 | h5, 84 | h6 { 85 | position: relative; 86 | margin-top: 1rem; 87 | margin-bottom: 1rem; 88 | font-weight: bold; 89 | line-height: 1; 90 | cursor: text; 91 | } 92 | h1:hover a.anchor, 93 | h2:hover a.anchor, 94 | h3:hover a.anchor, 95 | h4:hover a.anchor, 96 | h5:hover a.anchor, 97 | h6:hover a.anchor { 98 | text-decoration: none; 99 | } 100 | h1 tt, 101 | h1 code { 102 | font-size: inherit; 103 | } 104 | h2 tt, 105 | h2 code { 106 | font-size: inherit; 107 | } 108 | h3 tt, 109 | h3 code { 110 | font-size: inherit; 111 | } 112 | h4 tt, 113 | h4 code { 114 | font-size: inherit; 115 | } 116 | h5 tt, 117 | h5 code { 118 | font-size: inherit; 119 | } 120 | h6 tt, 121 | h6 code { 122 | font-size: inherit; 123 | } 124 | h1 { 125 | font-size: 1.5em; 126 | line-height: 1; 127 | border-bottom: 1px solid #eee; 128 | } 129 | h2 { 130 | font-size: 1.25em; 131 | line-height: 1; 132 | border-bottom: 1px solid #eee; 133 | } 134 | 135 | /*@media print { 136 | .typora-export h1, 137 | .typora-export h2 { 138 | border-bottom: none; 139 | padding-bottom: initial; 140 | } 141 | 142 | .typora-export h1::after, 143 | .typora-export h2::after { 144 | content: ""; 145 | display: block; 146 | height: 100px; 147 | margin-top: -96px; 148 | border-top: 1px solid #eee; 149 | } 150 | }*/ 151 | 152 | h3 { 153 | font-size: 1em; 154 | line-height: 1; 155 | } 156 | h4 { 157 | font-size: 1em; 158 | } 159 | h5 { 160 | font-size: 1em; 161 | } 162 | h6 { 163 | font-size: 1em; 164 | color: #777; 165 | } 166 | p, 167 | blockquote, 168 | ul, 169 | ol, 170 | dl, 171 | table{ 172 | margin: 0.8em 0; 173 | } 174 | li>ol, 175 | li>ul { 176 | margin: 0 0; 177 | } 178 | hr { 179 | height: 2px; 180 | padding: 0; 181 | margin: 16px 0; 182 | background-color: #e7e7e7; 183 | border: 0 none; 184 | overflow: hidden; 185 | box-sizing: content-box; 186 | } 187 | 188 | li p.first { 189 | display: inline-block; 190 | } 191 | ul, 192 | ol { 193 | padding-left: 30px; 194 | } 195 | ul:first-child, 196 | ol:first-child { 197 | margin-top: 0; 198 | } 199 | ul:last-child, 200 | ol:last-child { 201 | margin-bottom: 0; 202 | } 203 | blockquote { 204 | border-left: 4px solid #dfe2e5; 205 | padding: 0 15px; 206 | color: #777777; 207 | } 208 | blockquote blockquote { 209 | padding-right: 0; 210 | } 211 | table { 212 | padding: 0; 213 | word-break: initial; 214 | } 215 | table tr { 216 | border: 1px solid #dfe2e5; 217 | margin: 0; 218 | padding: 0; 219 | } 220 | table tr:nth-child(2n), 221 | thead { 222 | background-color: #f8f8f8; 223 | } 224 | table th { 225 | font-weight: bold; 226 | border: 1px solid #dfe2e5; 227 | border-bottom: 0; 228 | margin: 0; 229 | padding: 6px 13px; 230 | } 231 | table td { 232 | border: 1px solid #dfe2e5; 233 | margin: 0; 234 | padding: 6px 13px; 235 | } 236 | table th:first-child, 237 | table td:first-child { 238 | margin-top: 0; 239 | } 240 | table th:last-child, 241 | table td:last-child { 242 | margin-bottom: 0; 243 | } 244 | 245 | .CodeMirror-lines { 246 | padding-left: 4px; 247 | } 248 | 249 | .code-tooltip { 250 | box-shadow: 0 1px 1px 0 rgba(0,28,36,.3); 251 | border-top: 1px solid #eef2f2; 252 | } 253 | 254 | .md-fences, 255 | code, 256 | tt { 257 | border: 1px solid #e7eaed; 258 | background-color: #f8f8f8; 259 | border-radius: 3px; 260 | padding: 0; 261 | padding: 2px 4px 0px 4px; 262 | font-size: 0.9em; 263 | } 264 | 265 | code { 266 | background-color: #f3f4f4; 267 | padding: 0 2px 0 2px; 268 | } 269 | 270 | .md-fences { 271 | margin-bottom: 15px; 272 | margin-top: 15px; 273 | padding-top: 8px; 274 | padding-bottom: 6px; 275 | } 276 | 277 | 278 | .md-task-list-item > input { 279 | margin-left: -1.3em; 280 | } 281 | 282 | @media print { 283 | html { 284 | font-size: 10px; 285 | } 286 | table, 287 | pre { 288 | page-break-inside: avoid; 289 | } 290 | pre { 291 | word-wrap: break-word; 292 | } 293 | } 294 | 295 | .md-fences { 296 | background-color: #f8f8f8; 297 | } 298 | #write pre.md-meta-block { 299 | padding: 1rem; 300 | font-size: 85%; 301 | line-height: 1.45; 302 | background-color: #f7f7f7; 303 | border: 0; 304 | border-radius: 3px; 305 | color: #777777; 306 | margin-top: 0 !important; 307 | } 308 | 309 | .mathjax-block>.code-tooltip { 310 | bottom: .375rem; 311 | } 312 | 313 | .md-mathjax-midline { 314 | background: #fafafa; 315 | } 316 | 317 | #write>h3.md-focus:before{ 318 | left: -1.5625rem; 319 | top: .375rem; 320 | } 321 | #write>h4.md-focus:before{ 322 | left: -1.5625rem; 323 | top: .285714286rem; 324 | } 325 | #write>h5.md-focus:before{ 326 | left: -1.5625rem; 327 | top: .285714286rem; 328 | } 329 | #write>h6.md-focus:before{ 330 | left: -1.5625rem; 331 | top: .285714286rem; 332 | } 333 | .md-image>.md-meta { 334 | /*border: 1px solid #ddd;*/ 335 | border-radius: 3px; 336 | padding: 2px 0px 0px 4px; 337 | font-size: 0.9em; 338 | color: inherit; 339 | } 340 | 341 | .md-tag { 342 | color: #a7a7a7; 343 | opacity: 1; 344 | } 345 | 346 | .md-toc { 347 | margin-top:20px; 348 | padding-bottom:20px; 349 | } 350 | 351 | .sidebar-tabs { 352 | border-bottom: none; 353 | } 354 | 355 | #typora-quick-open { 356 | border: 1px solid #ddd; 357 | background-color: #f8f8f8; 358 | } 359 | 360 | #typora-quick-open-item { 361 | background-color: #FAFAFA; 362 | border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee; 363 | border-style: solid; 364 | border-width: 1px; 365 | } 366 | 367 | /** focus mode */ 368 | .on-focus-mode blockquote { 369 | border-left-color: rgba(85, 85, 85, 0.12); 370 | } 371 | 372 | header, .context-menu, .megamenu-content, footer{ 373 | font-family: "Segoe UI", "Arial", sans-serif; 374 | } 375 | 376 | .file-node-content:hover .file-node-icon, 377 | .file-node-content:hover .file-node-open-state{ 378 | visibility: visible; 379 | } 380 | 381 | .mac-seamless-mode #typora-sidebar { 382 | background-color: #fafafa; 383 | background-color: var(--side-bar-bg-color); 384 | } 385 | 386 | .md-lang { 387 | color: #b4654d; 388 | } 389 | 390 | /*.html-for-mac { 391 | --item-hover-bg-color: #E6F0FE; 392 | }*/ 393 | 394 | #md-notification .btn { 395 | border: 0; 396 | } 397 | 398 | .dropdown-menu .divider { 399 | border-color: #e5e5e5; 400 | opacity: 0.4; 401 | } 402 | 403 | .ty-preferences .window-content { 404 | background-color: #fafafa; 405 | } 406 | 407 | .ty-preferences .nav-group-item.active { 408 | color: white; 409 | background: #999; 410 | } 411 | 412 | .menu-item-container a.menu-style-btn { 413 | background-color: #f5f8fa; 414 | background-image: linear-gradient( 180deg , hsla(0, 0%, 100%, 0.8), hsla(0, 0%, 100%, 0)); 415 | } 416 | 417 | -------------------------------------------------------------------------------- /images/image-20220127144756728.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jarvanstack/markdown-resume/a9289deb97ae648d61cdd83eb2914bb81d542ebe/images/image-20220127144756728.png -------------------------------------------------------------------------------- /images/image-20220127144935660.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jarvanstack/markdown-resume/a9289deb97ae648d61cdd83eb2914bb81d542ebe/images/image-20220127144935660.png -------------------------------------------------------------------------------- /images/image-20220127145315638.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jarvanstack/markdown-resume/a9289deb97ae648d61cdd83eb2914bb81d542ebe/images/image-20220127145315638.png -------------------------------------------------------------------------------- /images/image6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jarvanstack/markdown-resume/a9289deb97ae648d61cdd83eb2914bb81d542ebe/images/image6.png -------------------------------------------------------------------------------- /images/image7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jarvanstack/markdown-resume/a9289deb97ae648d61cdd83eb2914bb81d542ebe/images/image7.png -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jarvanstack/markdown-resume/a9289deb97ae648d61cdd83eb2914bb81d542ebe/images/logo.png -------------------------------------------------------------------------------- /resume-template.md: -------------------------------------------------------------------------------- 1 | ## 邓嘉文 2 | 3 | `denxxxx5@gmail.com` | `wx: jarvanxxxx ` | `133xxxxxxxx` | `公众号: 邓嘉文Jarvan` 4 | 5 | `重庆邮电大学 2019-2023` | `软件工程专业` | `Golang` | `Java` | `计算机, 软件编程爱好者` 6 | 7 | ## 技术栈 8 | 9 | * **Golang**: 熟悉 Golang 以及常见标准库的使用, 了解 GMP , GC 三色标记算法以及 Golang 的性能分析优化 10 | * **Java**: 了解 Java 以及常见标准库, Spring全家桶的使用 11 | * **Web**: 了解 MYSQL 事务, 锁, 并发, 索引, InnoDB引擎, 性能测试, 性能优化; 了解 Redis 几种基本数据结构和使用; 12 | * **Linux**: 一般以 Linux 云服务器作为开发工具, 熟悉常见的 Linux 命令, shell 脚本, docker 等工具 13 | * **计算机基础**: 了解常见的操作系统, 计网, 数据结构和算法 14 | * **测试**: 编写测试用例和测试程序, 定位服务的 bug , 提交服务功能和性能的测试报告 15 | 16 | ## 项目经历 17 | 18 | * **关二爷科技后端负责(2021-9 至 2021-12):** 19 | 20 | `项目负责` `全栈开发`: 负责各个阶段主要的评审, 后台服务的设计和开发, 以及代码 review; 接入 CLB 的负载均衡; CLS 日志收集, 可视化,告警通知; Prometheus Metric 指标监控; 云原生 ETCD RPC服务的注册中心; Pulsar 消息队列进行削峰; k8s 滚动发布部署保证服务持续的高可用; 实现 LRU + 令牌桶算法限流接口, 防止服务盗刷, 同时减少资源的占用 21 | 22 | * **元象唯思YX游戏引擎后台研发(2021-5 至 2021-9): **12月31日到1月1日 TME跨年会上, 该引擎提供来自QQ音乐, 酷狗, 酷我, 全民k歌等平台共 110w UV, 高峰期近 10w 用户同时在线3D同屏互动服务 23 | 24 | `统一日志`: 日志模块封装; 统一收集, 展示, Metric 可视化 25 | 26 | `索引优化`: 测试 reids LRU 和 TcaplusDB 的功能和性能指标, 提交测试报告; 编写 Redis 和 TcapluDB 多级缓存通用库, 保证引擎的烘焙素材获取时间不超过 10ms 27 | 28 | `gokv`: 基于零拷贝和一致性hash 实现的 KV 数据库, 解决 redis big key 问题 29 | 30 | `技术分享`: "云原生监控 Prometheus Metric 应用到 YX游戏引擎在线平台" 的技术分享, 旨在解决公司目前基于 cls 日志监控的性能和成本问题, 目前公司所有 Metric 监控均由 CLS 迁移到云原生监控 Prometheus 31 | 32 | `用户模块和房间模块缓存层设计开发`: grpc, redis缓存 33 | 34 | * **HelloGitHub-团队成员(2020-10 至 2021-2):** 进入该团队的时候, 团队成员不到 10 人, 目前单个 HelloGithub 仓库 star 已达到 50K+ 35 | 36 | PR 并维护 HelloGithub 仓库; review 其他成员的 PR 37 | 38 | ## 校园经历 39 | 40 | * **极客勤奋蜂工作室后端组开发负责人(2020-11 至 2021-2):** 41 | 42 | `技术负责` `后端`: 完成刷题网站的项目的需求分析, 数据库设计, 接口设计, 项目搭建, 以代码模块化形式带领团队分工开发, 并解决其他成员遇到的问题, 代码 review, 该项目主要使用 MySQL, Redis 43 | 44 | * **NMID 重邮移动互联网应用研究中心后端开发(2020-4 至 2021-4):** 45 | 46 | `后端`: 独立完成语析笔记小程序后端接口设计, 数据库设计和接口实现, 使用 nginx + docker + shell 脚本部署服务 47 | 48 | 49 | ## 个人链接 50 | * **个人网站**: https://bmft.tech 51 | 52 | * **博客**: https://blog.csdn.net/jarvan5 53 | 54 | * **GitHub**: https://github.com/dengjiawen8955 55 | 56 | * **知乎**: https://www.zhihu.com/people/bmft.tech/posts 57 | 58 | * **公众号**: 邓嘉文Jarvan 59 | 60 | --- 61 | *
@2022-1 Made by 邓嘉文Jarvan
* 62 | *
简历下载 [PDF 下载](https://bmft.tech/resume/resume.pdf) / [Markdown 下载](https://bmft.tech/resume/resume.md)
* 63 | 64 | --------------------------------------------------------------------------------