<!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta name="keywords" content="CrazyBun"> <meta name="description" content=""> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <meta name="renderer" content="webkit|ie-stand|ie-comp"> <meta name="mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-93893895-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-93893895-1'); </script> <title>CrazyBun</title> <link rel="icon" type="image/png" href="/favicon.png"> <link rel="stylesheet" type="text/css" href="/libs/awesome/css/all.css"> <link rel="stylesheet" type="text/css" href="/libs/materialize/materialize.min.css"> <link rel="stylesheet" type="text/css" href="/libs/aos/aos.css"> <link rel="stylesheet" type="text/css" href="/libs/animate/animate.min.css"> <link rel="stylesheet" type="text/css" href="/libs/lightGallery/css/lightgallery.min.css"> <link rel="stylesheet" type="text/css" href="/css/matery.css"> <link rel="stylesheet" type="text/css" href="/css/my.css"> <script src="/libs/jquery/jquery.min.js"></script> <meta name="generator" content="Hexo 6.3.0"> <style>.github-emoji { position: relative; display: inline-block; width: 1.2em; min-height: 1.2em; overflow: hidden; vertical-align: top; color: transparent; } .github-emoji > span { position: relative; z-index: 10; } .github-emoji img, .github-emoji .fancybox { margin: 0 !important; padding: 0 !important; border: none !important; outline: none !important; text-decoration: none !important; user-select: none !important; cursor: auto !important; } .github-emoji img { height: 1.2em !important; width: 1.2em !important; position: absolute !important; left: 50% !important; top: 50% !important; transform: translate(-50%, -50%) !important; user-select: none !important; cursor: auto !important; } .github-emoji-fallback { color: inherit; } .github-emoji-fallback img { opacity: 0 !important; }</style> <link rel="alternate" href="/atom.xml" title="CrazyBun" type="application/atom+xml"> </head> <style> body{ background-image: url(https://cdn.jsdelivr.net/gh/Tokisaki-Galaxy/res/site/medias/background.jpg); background-repeat:no-repeat; background-size:cover; background-attachment:fixed; } </style> <body> <header class="navbar-fixed"> <nav id="headNav" class="bg-color nav-transparent"> <div id="navContainer" class="nav-wrapper container"> <div class="brand-logo"> <a href="/" class="waves-effect waves-light"> <img src="/medias/logo.png" class="logo-img" alt="LOGO"> <span class="logo-span">CrazyBun</span> </a> </div> <a href="#" data-target="mobile-nav" class="sidenav-trigger button-collapse"><i class="fas fa-bars"></i></a> <ul class="right nav-menu"> <li class="hide-on-med-and-down nav-item"> <a href="/" class="waves-effect waves-light"> <i class="fas fa-home" style="zoom: 0.6;"></i> <span>首页</span> </a> </li> <li class="hide-on-med-and-down nav-item"> <a href="/tags" class="waves-effect waves-light"> <i class="fas fa-tags" style="zoom: 0.6;"></i> <span>标签</span> </a> </li> <li class="hide-on-med-and-down nav-item"> <a href="/categories" class="waves-effect waves-light"> <i class="fas fa-bookmark" style="zoom: 0.6;"></i> <span>分类</span> </a> </li> <li class="hide-on-med-and-down nav-item"> <a href="/archives" class="waves-effect waves-light"> <i class="fas fa-archive" style="zoom: 0.6;"></i> <span>归档</span> </a> </li> <li class="hide-on-med-and-down nav-item"> <a href="/about" class="waves-effect waves-light"> <i class="fas fa-user-circle" style="zoom: 0.6;"></i> <span>关于</span> </a> </li> <li class="hide-on-med-and-down nav-item"> <a href="/contact" class="waves-effect waves-light"> <i class="fas fa-comments" style="zoom: 0.6;"></i> <span>留言板</span> </a> </li> <li class="hide-on-med-and-down nav-item"> <a href="/friends" class="waves-effect waves-light"> <i class="fas fa-address-book" style="zoom: 0.6;"></i> <span>友情链接</span> </a> </li> <li> <a href="#searchModal" class="modal-trigger waves-effect waves-light"> <i id="searchIcon" class="fas fa-search" title="搜索" style="zoom: 0.85;"></i> </a> </li> </ul> <div id="mobile-nav" class="side-nav sidenav"> <div class="mobile-head bg-color"> <img src="/medias/logo.png" class="logo-img circle responsive-img"> <div class="logo-name">CrazyBun</div> <div class="logo-desc"> Never really desperate, only the lost of the soul. </div> </div> <ul class="menu-list mobile-menu-list"> <li class="m-nav-item"> <a href="/" class="waves-effect waves-light"> <i class="fa-fw fas fa-home"></i> 首页 </a> </li> <li class="m-nav-item"> <a href="/tags" class="waves-effect waves-light"> <i class="fa-fw fas fa-tags"></i> 标签 </a> </li> <li class="m-nav-item"> <a href="/categories" class="waves-effect waves-light"> <i class="fa-fw fas fa-bookmark"></i> 分类 </a> </li> <li class="m-nav-item"> <a href="/archives" class="waves-effect waves-light"> <i class="fa-fw fas fa-archive"></i> 归档 </a> </li> <li class="m-nav-item"> <a href="/about" class="waves-effect waves-light"> <i class="fa-fw fas fa-user-circle"></i> 关于 </a> </li> <li class="m-nav-item"> <a href="/contact" class="waves-effect waves-light"> <i class="fa-fw fas fa-comments"></i> 留言板 </a> </li> <li class="m-nav-item"> <a href="/friends" class="waves-effect waves-light"> <i class="fa-fw fas fa-address-book"></i> 友情链接 </a> </li> </ul> </div> </div> </nav> </header> <div class="bg-cover pd-header post-cover" style="background-image: url('/medias/featureimages/0.jpg')"> <div class="container" style="right: 0px;left: 0px;"> <div class="row"> <div class="col s12 m12 l12"> <div class="brand"> <h1 class="description center-align post-title"></h1> </div> </div> </div> </div> </div> <main class="post-container content"> <link rel="stylesheet" href="/libs/tocbot/tocbot.css"> <style> #articleContent h1::before, #articleContent h2::before, #articleContent h3::before, #articleContent h4::before, #articleContent h5::before, #articleContent h6::before { display: block; content: " "; height: 100px; margin-top: -100px; visibility: hidden; } #articleContent :focus { outline: none; } .toc-fixed { position: fixed; top: 64px; } .toc-widget { width: 345px; padding-left: 20px; } .toc-widget .toc-title { padding: 35px 0 15px 17px; font-size: 1.5rem; font-weight: bold; line-height: 1.5rem; } .toc-widget ol { padding: 0; list-style: none; } #toc-content { padding-bottom: 30px; overflow: auto; } #toc-content ol { padding-left: 10px; } #toc-content ol li { padding-left: 10px; } #toc-content .toc-link:hover { color: #42b983; font-weight: 700; text-decoration: underline; } #toc-content .toc-link::before { background-color: transparent; max-height: 25px; position: absolute; right: 23.5vw; display: block; } #toc-content .is-active-link { color: #42b983; } #floating-toc-btn { position: fixed; right: 15px; bottom: 76px; padding-top: 15px; margin-bottom: 0; z-index: 998; } #floating-toc-btn .btn-floating { width: 48px; height: 48px; } #floating-toc-btn .btn-floating i { line-height: 48px; font-size: 1.4rem; } </style> <div class="row"> <div id="main-content" class="col s12 m12 l9"> <!-- 文章内容详情 --> <div id="artDetail"> <div class="card"> <div class="card-content article-info"> <div class="row tag-cate"> <div class="col s7"> <div class="article-tag"> <span class="chip bg-color">无标签</span> </div> </div> <div class="col s5 right-align"> </div> </div> <div class="post-info"> <div class="post-date info-break-policy"> <i class="far fa-calendar-minus fa-fw"></i>发布日期: 2023-04-03 </div> <div class="post-date info-break-policy"> <i class="far fa-calendar-check fa-fw"></i>更新日期: 2023-04-03 </div> <div class="info-break-policy"> <i class="far fa-file-word fa-fw"></i>文章字数: 1.6k </div> <div class="info-break-policy"> <i class="far fa-clock fa-fw"></i>阅读时长: 5 分 </div> </div> </div> <hr class="clearfix"> <!-- 是否加载使用自带的 prismjs. --> <link rel="stylesheet" href="/libs/prism/prism.css"> <div class="card-content article-card-content"> <div id="articleContent"> <p><font class="work name">包俊杰</font><font style="font-size:18px"> /男/ 1991</font></p> <style type="text/css"> .work { font-family: Georgia, 微软雅黑; } .work.name { font-weight: bold; font-size: 26px; } .work.com { font-weight: bold; font-size: 20px; } .work.mid { margin-left: 50px; } .work.right { font-weight: normal; font-size:16px; color:#666666; float:right; } .work.project { font-weight: normal; font-size: 18px; } table { margin:0 auto; } </style> <ul> <li>电话: <a href="tel:17610052250">17610052250</a></li> <li>邮箱: <a href="mailto:crazybunqnq@gmail.com">crazybunqnq@gmail.com</a><!--- 微信: [+18056662914](http://wx4.sinaimg.cn/mw690/a6e9cb00ly1fzhhakwifxj20ar0armyv.jpg)--></li> <li>本科/学士/北京石油化工学院/计算机科学与技术</li> <li>工作年限: 4 年</li> <li>期望职位: Java 后台开发</li> <li>期望薪资: 税前月薪 16k, 特别喜欢的公司例外</li> <li>期望城市: 北京</li> <li>现居住地: 北京市丰台区成寿寺路</li> </ul> <h2 id="技能清单"><a href="#技能清单" class="headerlink" title="技能清单"></a>技能清单</h2><ol> <li>本科学历, 具有 4 年的 Java 实际开发经验, 熟悉企业级应用项目开发流程、规范, 具有项目独立开发能力</li> <li>熟悉 Spring, SpringMVC, Mybatis, Hibernate 等主流框架</li> <li>熟悉 Javascript 编程、jQuery 框架, 了解 Vue.js</li> <li>熟悉 MySQL, Oracle 数据库, 具有一定的 SQL 和数据库优化能力, 了解 Redis 非关系型数据库</li> <li>熟悉 SVN、Git 版本管理工具和 Maven、Gradle 项目管理和构建工具;</li> <li>熟悉 Linux 系统和、常用命令和 Vim 编辑器, 能够搭建环境和项目部署并写一些 Shell 脚本</li> <li>熟练使用 Chrome、Charles、Wireshark 等抓包工具, 熟练使用 IDEA Http Client 和 Postman 接口测试工具</li> <li>了解 ActiveMQ 消息中间件、Shiro 权限管理</li> <li>了解 Freemarker、Velocity 静态化模版引擎, 实现模版静态化功能</li> <li>了解 Spring Boot 微服务架构技术和 Dubbo 服务中间件、Zookeeper 服务治理中心以及 Jenkins 自动构建自动部署</li> <li>了解 Python、Bat 和 Golang 等脚本语言</li> <li>具有良好的沟通能力和团队合作意识, 具有一定的抗压能力</li> </ol> <h2 id="工作经历"><a href="#工作经历" class="headerlink" title="工作经历"></a>工作经历</h2><p><font class="work com">北京宇信科技集团股份有限公司</font><font class="work mid">中级软件工程师</font><font class="work right">2019-01 ~ 至今</font></p> <p><font class="work project">中信银行全生命周期项目管理平台</font><font class="work mid"></font><code>Java``MySQL``Hibernate``工作流</code></p> <ul> <li>配合项目经理完成系统需求的分析、设计、开发、测试、上线等工作</li> <li>参与项目功能的设计讨论, 积极提供设计、需求改进方面的建议</li> <li>负责 CI/CD 工作流核心代码的编写</li> <li>负责一些与其他系统同步数据的定时任务编写</li> <li>协助测试人员测试, 修改项目中出现的 bug</li> <li>为提高效率而通过业余时间编写提高效率的脚本和工具</li> </ul> <p><font class="work com">太极计算机股份有限公司</font><font class="work mid">Java 工程师</font><font class="work right">2017-08 ~ 2018-11</font></p> <p><font class="work project">榆能横山煤电厂一体化项目</font><font class="work mid"></font><code>Java``Liferay``Oracle``Mybatis</code></p> <ul> <li>该项目是使用 Liferay 框架做的门户网站</li> <li>负责会议室预约、通讯录、工作流功能后台接口开发</li> <li>负责编写单元测试</li> </ul> <p><font class="work project">工银亚洲核心融资比率 (Core Funding Ratio) 自动化报表</font><font class="work mid"></font><code>Java``Oracle``Shell</code></p> <ul> <li>负责编写 <code>Oracle</code> 存储过程, 每日编制和监察核心融资比率的报表, 以维持适当的比率, 避免逾期或逾期通知</li> <li>负责编写报表展示和导出页面, 以及 6 张参数表的上传、参数分析和报表导出, 并受到客户点名表扬</li> <li>另外参与工银亚洲快速支付 (Faster Payment System) 项目第一期的开发</li> </ul> <p><font class="work project">华润新能源大屏监控项目</font><font class="work mid"></font><code>Java``Spring``Hibernate``Oracle</code></p> <ul> <li>负责新功能风电机组故障管理、风电机组可靠性管理、风电机组设备健康评估、预警管理和油品分析子模块开发(增删改查)</li> <li>学习和使用百度语音 API 实现语音警报</li> </ul> <p><font class="work com">北京大唐高鸿数据网络技术有限公司</font><font class="work mid">Android 开发</font><font class="work right">2015-02 ~ 2016-07</font></p> <p><font class="work project">高鸿彩票:彩鸿 App</font><font class="work mid"></font><code>Android</code></p> <ul> <li>负责新项目高鸿彩票店家版功能开发, 是三个主要开发人员之一. 独立完成了照片显示、上传功能以及大部分安卓前端界面代码和功能逻辑代码的编写与测试</li> <li>负责原有项目高鸿彩票彩民版新功能的开发和维护, 主要是与店家版相关的功能</li> </ul> <p><font class="work project">高鸿商城</font><font class="work mid"></font><code>Java``Struts``Spring``Hibernate``Freemarker</code></p> <ul> <li>学习并参与高鸿商城网站功能的修改和维护</li> </ul> <h2 id="个人介绍"><a href="#个人介绍" class="headerlink" title="个人介绍"></a>个人介绍</h2><p>本人对编程有着浓厚的兴趣, 有好奇心, 喜欢思考、尝试、折腾, 经常会有一些想法并将想办法将其用代码写出来. 我喜欢寻找或编写能提高效率的工具, 喜欢分享, 分享我的收获或我写出的程序, 在 Github 上比较活跃, 参与过 <a target="_blank" rel="noopener" href="https://github.com/xfslove/alfred-google-translate/graphs/contributors">Alfred 3 谷歌翻译工作流</a>, <a target="_blank" rel="noopener" href="https://github.com/Jack-Cherish/python-spider/graphs/contributors">Jack-Cherish/python-spider</a> 开源项目. 经常会写一些工作上能用到的提高效率脚本, 例如 Firefly 转 Git、自动生成部署资源、代码生成器等简化重复操作的脚本, 在家中也有一台树莓派作通过 FRP 内网穿透作为服务器, 搭建我自己的博客、服务, 以及一些尝试. 我有很好的编码习惯和团队合作能力, 沟通能力与执行力也不错</p> <p>期望能找到适合我的团队、能够共同成长的团队</p> <h2 id="开源项目和作品"><a href="#开源项目和作品" class="headerlink" title="开源项目和作品"></a>开源项目和作品</h2><p><font class="work project"><a target="_blank" rel="noopener" href="https://github.com/CrazyBunQnQ/CrazyTranslate">iOS 划词翻译脚本</a></font><font class="work mid"></font><strong><code>JavaScript</code></strong></p> <ul> <li>iOS 自带的翻译虽然有很多字典但是只能查一个词. 各家翻译软件又总是要切换 app 才能看到查询结果, 步骤繁杂</li> <li>这是一个运行在 <a target="_blank" rel="noopener" href="https://jsboxbbs.com/">JSBox</a> app 的 <strong><code>JavaScript</code></strong> 应用, 可以通过划词共享快速翻译, 并可以显示英文解释单词的意思, 更深刻的理解单词含义</li> </ul> <p><font class="work project"><a target="_blank" rel="noopener" href="https://github.com/CrazyBunQnQ/GeetestCrack">破解 Geetest 滑块验证码</a></font><font class="work mid"></font><code>Python</code></p> <ul> <li>通过 Python Selenium 自动化破解 Geetest 滑块验证码</li> </ul> <p><font class="work project"><a target="_blank" rel="noopener" href="https://github.com/CrazyBunQnQ/multimarkdown">破解 Markdown Navigator</a></font><font class="work mid"></font><code>Java</code></p> <ul> <li>查看 Markdown Navigator 插件的源码</li> <li>破解该插件后将破解方法分享出来</li> </ul> <h2 id="技术文章"><a href="#技术文章" class="headerlink" title="技术文章"></a>技术文章</h2><ul> <li><a target="_blank" rel="noopener" href="https://crazybunqnq.github.io/2018/11/11/BuildingDistributedEnvironment/">VM 虚拟机(CentOS)搭建 Dubbo、Zookeeper 分布式环境</a></li> <li><a target="_blank" rel="noopener" href="https://crazybunqnq.com/2018/09/02/PythonSeleniumCrackGeetest/">python selenium 破解 Geetest 滑块验证码</a></li> </ul> <blockquote> <p>业余时间我会在<a href="http://blog.crazybunqnq.com/">个人博客</a>上写一些我的学习、实践和解决问题的过程, 其中会参考一些网络资料, 但都是根据自己的理解和实践后原创的文章. 欢迎面试官查看并指出我理解、处理不对的的地方</p> </blockquote> <h2 id="致谢"><a href="#致谢" class="headerlink" title="致谢"></a>致谢</h2><p>感谢您花时间阅读我的简历, 期待能有机会与您共事.</p> <h2 id="附:二维码及链接"><a href="#附:二维码及链接" class="headerlink" title="附:二维码及链接"></a>附:二维码及链接</h2><p>|<img src="http://wx3.sinaimg.cn/mw690/a6e9cb00ly1fzhixicgxgj208r08rdgs.jpg" alt="Github 主页-w144">|<img src="https://wx4.sinaimg.cn/mw690/a6e9cb00ly1gcgpmn1nhdj208q08qta5.jpg" alt="个人博客-w144">|<img src="http://wx2.sinaimg.cn/mw690/a6e9cb00ly1fzhij7vhpdj207r07r3zg.jpg" alt="个人邮箱-w144">|<br>|:-:|:-:|:-:|:-:|<br>|<a target="_blank" rel="noopener" href="https://github.com/CrazyBunQnQ">Github 主页</a>|<a href="http://blog.crazybunqnq.com/">个人博客</a>|<a href="mailto:crazybunqnq@gmail.com">邮件我</a>|</p> </div> <hr/> <div class="reprint" id="reprint-statement"> <div class="reprint__author"> <span class="reprint-meta" style="font-weight: bold;"> <i class="fas fa-user"> 文章作者: </i> </span> <span class="reprint-info"> <a href="https://blog.crazybunqnq.com" rel="external nofollow noreferrer">CrazyBunQnQ</a> </span> </div> <div class="reprint__type"> <span class="reprint-meta" style="font-weight: bold;"> <i class="fas fa-link"> 文章链接: </i> </span> <span class="reprint-info"> <a href="https://blog.crazybunqnq.com/README.html">https://blog.crazybunqnq.com/README.html</a> </span> </div> <div class="reprint__notice"> <span class="reprint-meta" style="font-weight: bold;"> <i class="fas fa-copyright"> 版权声明: </i> </span> <span class="reprint-info"> 本博客所有文章除特別声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc/4.0/deed.zh" rel="external nofollow noreferrer" target="_blank">CC BY-NC 4.0</a> 许可协议。转载请注明来源 <a href="https://blog.crazybunqnq.com" target="_blank">CrazyBunQnQ</a> ! </span> </div> </div> <script async defer> document.addEventListener("copy", function (e) { let toastHTML = '<span>复制成功,请遵循本文的转载规则</span><button class="btn-flat toast-action" onclick="navToReprintStatement()" style="font-size: smaller">查看</a>'; M.toast({html: toastHTML}) }); function navToReprintStatement() { $("html, body").animate({scrollTop: $("#reprint-statement").offset().top - 80}, 800); } </script> <div class="tag_share" style="display: block;"> <div class="post-meta__tag-list" style="display: inline-block;"> <div class="article-tag"> <span class="chip bg-color">无标签</span> </div> </div> <div class="post_share" style="zoom: 80%; width: fit-content; display: inline-block; float: right; margin: -0.15rem 0;"> <link rel="stylesheet" type="text/css" href="/libs/share/css/share.min.css"> <div id="article-share"> <div class="social-share" data-sites="weibo,wechat,qq,qzone,twitter" data-wechat-qrcode-helper="<p>微信扫一扫即可分享!</p>"></div> <script src="/libs/share/js/social-share.min.js"></script> </div> </div> </div> <style> #reward { margin: 40px 0; text-align: center; } #reward .reward-link { font-size: 1.4rem; line-height: 38px; } #reward .btn-floating:hover { box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2), 0 5px 15px rgba(0, 0, 0, 0.2); } #rewardModal { width: 320px; height: 350px; } #rewardModal .reward-title { margin: 15px auto; padding-bottom: 5px; } #rewardModal .modal-content { padding: 10px; } #rewardModal .close { position: absolute; right: 15px; top: 15px; color: rgba(0, 0, 0, 0.5); font-size: 1.3rem; line-height: 20px; cursor: pointer; } #rewardModal .close:hover { color: #ef5350; transform: scale(1.3); -moz-transform:scale(1.3); -webkit-transform:scale(1.3); -o-transform:scale(1.3); } #rewardModal .reward-tabs { margin: 0 auto; width: 210px; } .reward-tabs .tabs { height: 38px; margin: 10px auto; padding-left: 0; } .reward-content ul { padding-left: 0 !important; } .reward-tabs .tabs .tab { height: 38px; line-height: 38px; } .reward-tabs .tab a { color: #fff; background-color: #ccc; } .reward-tabs .tab a:hover { background-color: #ccc; color: #fff; } .reward-tabs .wechat-tab .active { color: #fff !important; background-color: #22AB38 !important; } .reward-tabs .alipay-tab .active { color: #fff !important; background-color: #019FE8 !important; } .reward-tabs .reward-img { width: 210px; height: 210px; } </style> <div id="reward"> <a href="#rewardModal" class="reward-link modal-trigger btn-floating btn-medium waves-effect waves-light red">赏</a> <!-- Modal Structure --> <div id="rewardModal" class="modal"> <div class="modal-content"> <a class="close modal-close"><i class="fas fa-times"></i></a> <h4 class="reward-title">你的赏识是我前进的动力</h4> <div class="reward-content"> <div class="reward-tabs"> <ul class="tabs row"> <li class="tab col s6 alipay-tab waves-effect waves-light"><a href="#alipay">支付宝</a></li> <li class="tab col s6 wechat-tab waves-effect waves-light"><a href="#wechat">微 信</a></li> </ul> <div id="alipay"> <img src="/medias/reward/alipay.png" class="reward-img" alt="支付宝打赏二维码"> </div> <div id="wechat"> <img src="/medias/reward/wechat.png" class="reward-img" alt="微信打赏二维码"> </div> </div> </div> </div> </div> </div> <script> $(function () { $('.tabs').tabs(); }); </script> </div> </div> <article id="prenext-posts" class="prev-next articles"> <div class="row article-row"> <div class="article col s12 m6" data-aos="fade-up" data-aos="fade-up"> <div class="article-badge left-badge text-color"> <i class="far fa-dot-circle"></i> 本篇 </div> <div class="card"> <a href="/README.html"> <div class="card-image"> <img src="/medias/featureimages/0.jpg" class="responsive-img" alt=""> <span class="card-title"></span> </div> </a> <div class="card-content article-content"> <div class="summary block-with-text"> </div> <div class="publish-info"> <span class="publish-date"> <i class="far fa-clock fa-fw icon-date"></i>2023-04-03 </span> <span class="publish-author"> <i class="fas fa-user fa-fw"></i> CrazyBunQnQ </span> </div> </div> </div> </div> <div class="article col s12 m6" data-aos="fade-up"> <div class="article-badge right-badge text-color"> 本篇 <i class="far fa-dot-circle"></i> </div> <div class="card"> <a href="/README.html"> <div class="card-image"> <img src="/medias/featureimages/0.jpg" class="responsive-img" alt=""> <span class="card-title"></span> </div> </a> <div class="card-content article-content"> <div class="summary block-with-text"> </div> <div class="publish-info"> <span class="publish-date"> <i class="far fa-clock fa-fw icon-date"></i>2023-04-03 </span> <span class="publish-author"> <i class="fas fa-user fa-fw"></i> CrazyBunQnQ </span> </div> </div> </div> </div> </div> </article> </div> <script> $('#articleContent').on('copy', function (e) { // IE8 or earlier browser is 'undefined' if (typeof window.getSelection === 'undefined') return; var selection = window.getSelection(); // if the selection is short let's not annoy our users. if (('' + selection).length < Number.parseInt('40')) { return; } // create a div outside of the visible area and fill it with the selected text. var bodyElement = document.getElementsByTagName('body')[0]; var newdiv = document.createElement('div'); newdiv.style.position = 'absolute'; newdiv.style.left = '-99999px'; bodyElement.appendChild(newdiv); newdiv.appendChild(selection.getRangeAt(0).cloneContents()); // we need a <pre> tag workaround. // otherwise the text inside "pre" loses all the line breaks! if (selection.getRangeAt(0).commonAncestorContainer.nodeName === 'PRE') { newdiv.innerHTML = "<pre>" + newdiv.innerHTML + "</pre>"; } var url = document.location.href; newdiv.innerHTML += '<br />' + '来源: CrazyBun<br />' + '文章作者: CrazyBunQnQ<br />' + '文章链接: <a href="' + url + '">' + url + '</a><br />' + '本文章著作权归 CrazyBunQnQ 所有,任何形式的转载都请注明出处。'; selection.selectAllChildren(newdiv); window.setTimeout(function () {bodyElement.removeChild(newdiv);}, 200); }); </script> <!-- 代码块功能依赖 --> <script type="text/javascript" src="/libs/codeBlock/codeBlockFuction.js"></script> <!-- 代码语言 --> <script type="text/javascript" src="/libs/codeBlock/codeLang.js"></script> <!-- 代码块复制 --> <script type="text/javascript" src="/libs/codeBlock/codeCopy.js"></script> <!-- 代码块收缩 --> <script type="text/javascript" src="/libs/codeBlock/codeShrink.js"></script> </div> <div id="toc-aside" class="expanded col l3 hide-on-med-and-down"> <div class="toc-widget card" style="background-color: white;"> <div class="toc-title"><i class="far fa-list-alt"></i> 目录</div> <div id="toc-content"></div> </div> </div> </div> <!-- TOC 悬浮按钮. --> <div id="floating-toc-btn" class="hide-on-med-and-down"> <a class="btn-floating btn-large bg-color"> <i class="fas fa-list-ul"></i> </a> </div> <script src="/libs/tocbot/tocbot.min.js"></script> <script> $(function () { tocbot.init({ tocSelector: '#toc-content', contentSelector: '#articleContent', headingsOffset: -($(window).height() * 0.4 - 45), collapseDepth: Number('0'), headingSelector: 'h2, h3, h4' }); // modify the toc link href to support Chinese. let i = 0; let tocHeading = 'toc-heading-'; $('#toc-content a').each(function () { $(this).attr('href', '#' + tocHeading + (++i)); }); // modify the heading title id to support Chinese. i = 0; $('#articleContent').children('h2, h3, h4').each(function () { $(this).attr('id', tocHeading + (++i)); }); // Set scroll toc fixed. let tocHeight = parseInt($(window).height() * 0.4 - 64); let $tocWidget = $('.toc-widget'); $(window).scroll(function () { let scroll = $(window).scrollTop(); /* add post toc fixed. */ if (scroll > tocHeight) { $tocWidget.addClass('toc-fixed'); } else { $tocWidget.removeClass('toc-fixed'); } }); /* 修复文章卡片 div 的宽度. */ let fixPostCardWidth = function (srcId, targetId) { let srcDiv = $('#' + srcId); if (srcDiv.length === 0) { return; } let w = srcDiv.width(); if (w >= 450) { w = w + 21; } else if (w >= 350 && w < 450) { w = w + 18; } else if (w >= 300 && w < 350) { w = w + 16; } else { w = w + 14; } $('#' + targetId).width(w); }; // 切换TOC目录展开收缩的相关操作. const expandedClass = 'expanded'; let $tocAside = $('#toc-aside'); let $mainContent = $('#main-content'); $('#floating-toc-btn .btn-floating').click(function () { if ($tocAside.hasClass(expandedClass)) { $tocAside.removeClass(expandedClass).hide(); $mainContent.removeClass('l9'); } else { $tocAside.addClass(expandedClass).show(); $mainContent.addClass('l9'); } fixPostCardWidth('artDetail', 'prenext-posts'); }); }); </script> </main> <footer class="page-footer bg-color"> <div class="container row center-align" style="margin-bottom: 15px !important;"> <div class="col s12 m8 l8 copy-right"> Copyright © <span id="year">2016-2023</span> <span id="year">2016</span> <a href="/about" target="_blank">CrazyBunQnQ</a> | Powered by <a href="https://hexo.io/" target="_blank">Hexo</a> | Theme <a href="https://github.com/blinkfox/hexo-theme-matery" target="_blank">Matery</a> <br> <span id="busuanzi_container_site_pv"> | <i class="far fa-eye"></i> 总访问量: <span id="busuanzi_value_site_pv" class="white-color"></span> 次 </span> <span id="busuanzi_container_site_uv"> | <i class="fas fa-users"></i> 总访问人数: <span id="busuanzi_value_site_uv" class="white-color"></span> 人 </span> <br> <span id="sitetime">载入运行时间...</span> <script> function siteTime() { var seconds = 1000; var minutes = seconds * 60; var hours = minutes * 60; var days = hours * 24; var years = days * 365; var today = new Date(); var startYear = "2016"; var startMonth = "10"; var startDate = "20"; var startHour = "0"; var startMinute = "0"; var startSecond = "0"; var todayYear = today.getFullYear(); var todayMonth = today.getMonth() + 1; var todayDate = today.getDate(); var todayHour = today.getHours(); var todayMinute = today.getMinutes(); var todaySecond = today.getSeconds(); var t1 = Date.UTC(startYear, startMonth, startDate, startHour, startMinute, startSecond); var t2 = Date.UTC(todayYear, todayMonth, todayDate, todayHour, todayMinute, todaySecond); var diff = t2 - t1; var diffYears = Math.floor(diff / years); var diffDays = Math.floor((diff / days) - diffYears * 365); var diffHours = Math.floor((diff - (diffYears * 365 + diffDays) * days) / hours); var diffMinutes = Math.floor((diff - (diffYears * 365 + diffDays) * days - diffHours * hours) / minutes); var diffSeconds = Math.floor((diff - (diffYears * 365 + diffDays) * days - diffHours * hours - diffMinutes * minutes) / seconds); if (startYear == todayYear) { document.getElementById("year").innerHTML = todayYear; document.getElementById("sitetime").innerHTML = "本站已安全运行 " + diffDays + " 天 " + diffHours + " 小时 " + diffMinutes + " 分钟 " + diffSeconds + " 秒"; } else { document.getElementById("year").innerHTML = startYear + " - " + todayYear; document.getElementById("sitetime").innerHTML = "本站已安全运行 " + diffYears + " 年 " + diffDays + " 天 " + diffHours + " 小时 " + diffMinutes + " 分钟 " + diffSeconds + " 秒"; } } setInterval(siteTime, 1000); </script> <br> </div> <div class="col s12 m4 l4 social-link social-statis"> <a href="https://github.com/CrazyBunQnQ" class="tooltipped" target="_blank" data-tooltip="访问我的GitHub" data-position="top" data-delay="50"> <i class="fab fa-github"></i> </a> <a href="mailto:crazybunqnq@gmail.com" class="tooltipped" target="_blank" data-tooltip="邮件联系我" data-position="top" data-delay="50"> <i class="fas fa-envelope-open"></i> </a> <a href="tencent://AddContact/?fromId=50&fromSubId=1&subcmd=all&uin=494225231" class="tooltipped" target="_blank" data-tooltip="QQ联系我: 494225231" data-position="top" data-delay="50"> <i class="fab fa-qq"></i> </a> <a href="https://weibo.com/2800339712" class="tooltipped" target="_blank" data-tooltip="关注我的微博: https://weibo.com/2800339712" data-position="top" data-delay="50"> <i class="fab fa-weibo"></i> </a> <a href="/atom.xml" class="tooltipped" target="_blank" data-tooltip="RSS 订阅" data-position="top" data-delay="50"> <i class="fas fa-rss"></i> </a> </div> </div> </footer> <div class="progress-bar"></div> <!-- 搜索遮罩框 --> <div id="searchModal" class="modal"> <div class="modal-content"> <div class="search-header"> <span class="title"><i class="fas fa-search"></i> 搜索</span> <input type="search" id="searchInput" name="s" placeholder="请输入搜索的关键字" class="search-input"> </div> <div id="searchResult"></div> </div> </div> <script type="text/javascript"> $(function () { var searchFunc = function (path, search_id, content_id) { 'use strict'; $.ajax({ url: path, dataType: "xml", success: function (xmlResponse) { // get the contents from search data var datas = $("entry", xmlResponse).map(function () { return { title: $("title", this).text(), content: $("content", this).text(), url: $("url", this).text() }; }).get(); var $input = document.getElementById(search_id); var $resultContent = document.getElementById(content_id); $input.addEventListener('input', function () { var str = '<ul class=\"search-result-list\">'; var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/); $resultContent.innerHTML = ""; if (this.value.trim().length <= 0) { return; } // perform local searching datas.forEach(function (data) { var isMatch = true; var data_title = data.title.trim().toLowerCase(); var data_content = data.content.trim().replace(/<[^>]+>/g, "").toLowerCase(); var data_url = data.url; data_url = data_url.indexOf('/') === 0 ? data.url : '/' + data_url; var index_title = -1; var index_content = -1; var first_occur = -1; // only match artiles with not empty titles and contents if (data_title !== '' && data_content !== '') { keywords.forEach(function (keyword, i) { index_title = data_title.indexOf(keyword); index_content = data_content.indexOf(keyword); if (index_title < 0 && index_content < 0) { isMatch = false; } else { if (index_content < 0) { index_content = 0; } if (i === 0) { first_occur = index_content; } } }); } // show search results if (isMatch) { str += "<li><a href='" + data_url + "' class='search-result-title'>" + data_title + "</a>"; var content = data.content.trim().replace(/<[^>]+>/g, ""); if (first_occur >= 0) { // cut out 100 characters var start = first_occur - 20; var end = first_occur + 80; if (start < 0) { start = 0; } if (start === 0) { end = 100; } if (end > content.length) { end = content.length; } var match_content = content.substr(start, end); // highlight all keywords keywords.forEach(function (keyword) { var regS = new RegExp(keyword, "gi"); match_content = match_content.replace(regS, "<em class=\"search-keyword\">" + keyword + "</em>"); }); str += "<p class=\"search-result\">" + match_content + "...</p>" } str += "</li>"; } }); str += "</ul>"; $resultContent.innerHTML = str; }); } }); }; searchFunc('/search.xml', 'searchInput', 'searchResult'); }); </script> <!-- 回到顶部按钮 --> <div id="backTop" class="top-scroll"> <a class="btn-floating btn-large waves-effect waves-light" href="#!"> <i class="fas fa-arrow-up"></i> </a> </div> <script src="/libs/materialize/materialize.min.js"></script> <script src="/libs/masonry/masonry.pkgd.min.js"></script> <script src="/libs/aos/aos.js"></script> <script src="/libs/scrollprogress/scrollProgress.min.js"></script> <script src="/libs/lightGallery/js/lightgallery-all.min.js"></script> <script src="/js/matery.js"></script> <!-- Baidu Analytics --> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?864d5a7534ed5364589f82c39b9c4e07"; var baiduSite = document.createElement("meta"); baiduSite.name = "baidu-site-verification"; baiduSite.content = "codeva-7NYmMaNfam"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(baiduSite, s); s.parentNode.insertBefore(hm, s); })(); </script> <!-- Baidu Push --> <script> (function () { var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> <script src="/libs/others/clicklove.js" async="async"></script> <script async src="/libs/others/busuanzi.pure.mini.js"></script> <div style="position:fixed;bottom:125px;right:9px;cursor: pointer;"> <a title="兔小巢" target="_blank" rel="noopener" href="https://support.qq.com/products/498631"><img src="/medias/contact.png"></a> </div> <script src="/libs/instantpage/instantpage.js" type="module"></script> </body> </html>