|
| 1 | + |
| 2 | +<!DOCTYPE html> |
| 3 | +<htmllang="en"class="loading"> |
| 4 | +<head> |
| 5 | +<metacharset="UTF-8"/> |
| 6 | +<metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"/> |
| 7 | +<metaname="viewport"content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> |
| 8 | +<title>早起不吃虫</title> |
| 9 | +<metaname="apple-mobile-web-app-capable"content="yes"/> |
| 10 | +<metaname="apple-mobile-web-app-status-bar-style"content="black-translucent"> |
| 11 | +<metaname="google"content="notranslate"/> |
| 12 | +<metaname="keywords"content="coderhaotf,"> |
| 13 | + |
| 14 | +<metaname="author"content="haotf"> |
| 15 | +<linkrel="alternative"href="atom.xml"title="早起不吃虫"type="application/atom+xml"> |
| 16 | +<linkrel="icon"href="/img/favicon.png"> |
| 17 | +<linkhref="https://fonts.loli.net/css?family=Roboto+Mono|Rubik&display=swap"rel="stylesheet"> |
| 18 | + |
| 19 | +<linkrel="stylesheet"href="//at.alicdn.com/t/font_1429596_nzgqgvnmkjb.css"> |
| 20 | + |
| 21 | + |
| 22 | +<linkrel="stylesheet"href="//cdn.bootcss.com/animate.css/3.7.2/animate.min.css"> |
| 23 | + |
| 24 | + |
| 25 | +<linkrel="stylesheet"href="//cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/css/share.min.css"> |
| 26 | + |
| 27 | + |
| 28 | +<linkrel="stylesheet"href="//cdn.bootcss.com/codemirror/5.48.4/codemirror.min.css"> |
| 29 | + |
| 30 | + |
| 31 | +<linkrel="stylesheet"href="//cdn.bootcss.com/codemirror/5.48.4/theme/dracula.css"> |
| 32 | + |
| 33 | + |
| 34 | +<linkrel="stylesheet"href="/css/obsidian.css"> |
| 35 | + |
| 36 | + |
| 37 | +<linkrel="stylesheet"href="/css/ball-atom.min.css"> |
| 38 | + |
| 39 | +<metaname="generator"content="Hexo 4.2.0"></head> |
| 40 | + |
| 41 | + |
| 42 | +<bodyclass="loading"> |
| 43 | +<divclass="loader"> |
| 44 | +<divclass="la-ball-atom la-2x"> |
| 45 | +<div></div> |
| 46 | +<div></div> |
| 47 | +<div></div> |
| 48 | +<div></div> |
| 49 | +</div> |
| 50 | +</div> |
| 51 | +<spanid="config-title"style="display:none">早起不吃虫</span> |
| 52 | +<divid="loader"></div> |
| 53 | +<divid="single"class="page"> |
| 54 | +<divid="top"> |
| 55 | +<aclass="iconfont icon-left image-icon"href="#"diff-bfe0fbb110927fa222f1b8585d48110fbe58a164d0146980f5ae793a2d834f89-empty-56-0" data-selected="false" role="gridcell" tabindex="-1" valign="top"> | 56 | +</div> |
| 57 | +<divclass="clone-element"></div> |
| 58 | +<divclass="section dark-obsidian"> |
| 59 | +<divclass="article animated fadeIn"> |
| 60 | +<divclass="main animated fadeIn"> |
| 61 | +<divclass="content animated fadeIn"> |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +</div> |
| 66 | +</div> |
| 67 | +</div> |
| 68 | +</div> |
| 69 | +</div> |
| 70 | + |
| 71 | +<divid="back-to-top"class="animated fadeIn faster"> |
| 72 | +<divclass="flow"></div> |
| 73 | +<spanclass="percentage animated fadeIn faster">0%</span> |
| 74 | +<spanclass="iconfont icon-top02 animated fadeIn faster"></span> |
| 75 | +</div> |
| 76 | +</body> |
| 77 | +<footer> |
| 78 | +<pclass="copyright"id="copyright"> |
| 79 | + © 2020 |
| 80 | +<spanclass="gradient-text"> |
| 81 | + haotf |
| 82 | +</span>. |
| 83 | + Designed && Powerd by<ahref="http://hexo.io/"title="Hexo"target="_blank"rel="noopener">Hexo</a> |
| 84 | +<p>Copyright© 2018 早起不吃虫的博客 粤ICP备18104892号</p> |
| 85 | +<!-- Theme |
| 86 | + <span class="gradient-text"> |
| 87 | + <a href="https://github.com/TriDiamond/hexo-theme-obsidian" title="Obsidian" target="_blank" rel="noopener">Obsidian</a> |
| 88 | + </span> |
| 89 | + <small><a href="https://github.com/TriDiamond/hexo-theme-obsidian/blob/master/CHANGELOG.md" title="v1.4.3" target="_blank" rel="noopener">v1.4.3</a></small> --> |
| 90 | +</p> |
| 91 | +</footer> |
| 92 | + |
| 93 | +<scripttype="text/javascript"src="https://cdn.bootcss.com/mathjax/2.7.6/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> |
| 94 | +</script> |
| 95 | +<script> |
| 96 | +MathJax.Hub.Config({ |
| 97 | +"HTML-CSS":{ |
| 98 | +preferredFont:"TeX", |
| 99 | +availableFonts:["STIX","TeX"], |
| 100 | +linebreaks:{ |
| 101 | +automatic:true |
| 102 | +}, |
| 103 | +EqnChunk:(MathJax.Hub.Browser.isMobile ?10 :50) |
| 104 | +}, |
| 105 | +tex2jax:{ |
| 106 | +inlineMath:[ |
| 107 | +["$","$"], |
| 108 | +["\\(","\\)"] |
| 109 | +], |
| 110 | +processEscapes:true, |
| 111 | +ignoreClass:"tex2jax_ignore|dno", |
| 112 | +skipTags:['script','noscript','style','textarea','pre','code'] |
| 113 | +}, |
| 114 | +TeX:{ |
| 115 | +noUndefined:{ |
| 116 | +attributes:{ |
| 117 | +mathcolor:"red", |
| 118 | +mathbackground:"#FFEEEE", |
| 119 | +mathsize:"90%" |
| 120 | +} |
| 121 | +}, |
| 122 | +Macros:{ |
| 123 | +href:"{}" |
| 124 | +} |
| 125 | +}, |
| 126 | +messageStyle:"none" |
| 127 | +}); |
| 128 | +</script> |
| 129 | +<script> |
| 130 | +functioninitialMathJax(){ |
| 131 | +MathJax.Hub.Queue(function(){ |
| 132 | +varall=MathJax.Hub.getAllJax(), |
| 133 | +i; |
| 134 | +// console.log(all); |
| 135 | +for(i=0;i<all.length;i+=1){ |
| 136 | +console.log(all[i].SourceElement().parentNode) |
| 137 | +all[i].SourceElement().parentNode.className+=' has-jax'; |
| 138 | +} |
| 139 | +}); |
| 140 | +} |
| 141 | + |
| 142 | +functionreprocessMathJax(){ |
| 143 | +if(typeofMathJax!=='undefined'){ |
| 144 | +MathJax.Hub.Queue(["Typeset",MathJax.Hub]); |
| 145 | +} |
| 146 | +} |
| 147 | +</script> |
| 148 | + |
| 149 | + |
| 150 | + |
| 151 | + |
| 152 | +<linkrel="stylesheet"href="//cdn.bootcss.com/gitalk/1.5.0/gitalk.min.css"> |
| 153 | + |
| 154 | + |
| 155 | +<scriptsrc="//cdn.bootcss.com/gitalk/1.5.0/gitalk.min.js"></script> |
| 156 | + |
| 157 | + |
| 158 | + |
| 159 | +<scriptsrc="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> |
| 160 | +<scriptsrc="/js/plugin.js"></script> |
| 161 | +<scriptsrc="/js/obsidian.js"></script> |
| 162 | +<scriptsrc="/js/jquery.truncate.js"></script> |
| 163 | +<scriptsrc="/js/search.js"></script> |
| 164 | + |
| 165 | + |
| 166 | +<scriptsrc="//cdn.bootcss.com/typed.js/2.0.10/typed.min.js"></script> |
| 167 | + |
| 168 | + |
| 169 | +<scriptsrc="//cdn.bootcss.com/blueimp-md5/2.12.0/js/md5.min.js"></script> |
| 170 | + |
| 171 | + |
| 172 | +<scriptsrc="//cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/js/social-share.min.js"></script> |
| 173 | + |
| 174 | + |
| 175 | +<scriptsrc="https://cdn.bootcss.com/codemirror/5.48.4/codemirror.min.js"></script> |
| 176 | + |
| 177 | + |
| 178 | +<scriptsrc="//cdn.bootcss.com/codemirror/5.48.4/mode/javascript/javascript.min.js"></script> |
| 179 | + |
| 180 | + |
| 181 | + |
| 182 | +<scriptsrc="//cdn.bootcss.com/codemirror/5.48.4/mode/css/css.min.js"></script> |
| 183 | + |
| 184 | + |
| 185 | + |
| 186 | +<scriptsrc="//cdn.bootcss.com/codemirror/5.48.4/mode/xml/xml.min.js"></script> |
| 187 | + |
| 188 | + |
| 189 | + |
| 190 | +<scriptsrc="//cdn.bootcss.com/codemirror/5.48.4/mode/htmlmixed/htmlmixed.min.js"></script> |
| 191 | + |
| 192 | + |
| 193 | + |
| 194 | +<scriptsrc="//cdn.bootcss.com/codemirror/5.48.4/mode/clike/clike.min.js"></script> |
| 195 | + |
| 196 | + |
| 197 | + |
| 198 | +<scriptsrc="//cdn.bootcss.com/codemirror/5.48.4/mode/php/php.min.js"></script> |
| 199 | + |
| 200 | + |
| 201 | + |
| 202 | +<scriptsrc="//cdn.bootcss.com/codemirror/5.48.4/mode/shell/shell.min.js"></script> |
| 203 | + |
| 204 | + |
| 205 | + |
| 206 | +<scriptsrc="//cdn.bootcss.com/codemirror/5.48.4/mode/python/python.min.js"></script> |
| 207 | + |
| 208 | + |
| 209 | + |
| 210 | + |
| 211 | + |
| 212 | +<scriptsrc="/js/busuanzi.min.js"></script> |
| 213 | + |
| 214 | +<script> |
| 215 | +$(document).ready(function(){ |
| 216 | +if($('span[id^="busuanzi_"]').length){ |
| 217 | +initialBusuanzi(); |
| 218 | +} |
| 219 | +}); |
| 220 | +</script> |
| 221 | + |
| 222 | + |
| 223 | + |
| 224 | +<linkrel="stylesheet"href="//cdn.bootcss.com/photoswipe/4.1.3/photoswipe.min.css"> |
| 225 | +<linkrel="stylesheet"href="//cdn.bootcss.com/photoswipe/4.1.3/default-skin/default-skin.min.css"> |
| 226 | + |
| 227 | + |
| 228 | +<scriptsrc="//cdn.bootcss.com/photoswipe/4.1.3/photoswipe.min.js"></script> |
| 229 | +<scriptsrc="//cdn.bootcss.com/photoswipe/4.1.3/photoswipe-ui-default.min.js"></script> |
| 230 | + |
| 231 | + |
| 232 | +<!-- Root element of PhotoSwipe. Must have class pswp. --> |
| 233 | +<divclass="pswp"tabindex="-1"role="dialog"aria-hidden="true"> |
| 234 | +<!-- Background of PhotoSwipe. |
| 235 | + It's a separate element as animating opacity is faster than rgba(). --> |
| 236 | +<divclass="pswp__bg"></div> |
| 237 | +<!-- Slides wrapper with overflow:hidden. --> |
| 238 | +<divclass="pswp__scroll-wrap"> |
| 239 | +<!-- Container that holds slides. |
| 240 | + PhotoSwipe keeps only 3 of them in the DOM to save memory. |
| 241 | + Don't modify these 3 pswp__item elements, data is added later on. --> |
| 242 | +<divclass="pswp__container"> |
| 243 | +<divclass="pswp__item"></div> |
| 244 | +<divclass="pswp__item"></div> |
| 245 | +<divclass="pswp__item"></div> |
| 246 | +</div> |
| 247 | +<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. --> |
| 248 | +<divclass="pswp__ui pswp__ui--hidden"> |
| 249 | +<divclass="pswp__top-bar"> |
| 250 | +<!-- Controls are self-explanatory. Order can be changed. --> |
| 251 | +<divclass="pswp__counter"></div> |
| 252 | +<buttonclass="pswp__button pswp__button--close"title="Close (Esc)"></button> |
| 253 | +<buttonclass="pswp__button pswp__button--share"title="Share"></button> |
| 254 | +<buttonclass="pswp__button pswp__button--fs"title="Toggle fullscreen"></button> |
| 255 | +<buttonclass="pswp__button pswp__button--zoom"title="Zoom in/out"></button> |
| 256 | +<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR --> |
| 257 | +<!-- element will get class pswp__preloader--active when preloader is running --> |
| 258 | +<divclass="pswp__preloader"> |
| 259 | +<divclass="pswp__preloader__icn"> |
| 260 | +<divclass="pswp__preloader__cut"> |
| 261 | +<divclass="pswp__preloader__donut"></div> |
| 262 | +</div> |
| 263 | +</div> |
| 264 | +</div> |
| 265 | +</div> |
| 266 | +<divclass="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"> |
| 267 | +<divclass="pswp__share-tooltip"></div> |
| 268 | +</div> |
| 269 | +<buttonclass="pswp__button pswp__button--arrow--left"title="Previous (arrow left)"> |
| 270 | +</button> |
| 271 | +<buttonclass="pswp__button pswp__button--arrow--right"title="Next (arrow right)"> |
| 272 | +</button> |
| 273 | +<divclass="pswp__caption"> |
| 274 | +<divclass="pswp__caption__center"></div> |
| 275 | +</div> |
| 276 | +</div> |
| 277 | +</div> |
| 278 | +</div> |
| 279 | + |
| 280 | + |
| 281 | + |
| 282 | +<!-- Global site tag (gtag.js) - Google Analytics --> |
| 283 | +<scriptasyncsrc="//www.googletagmanager.com/gtag/js?id=UA-149874671-1"></script> |
| 284 | +<script> |
| 285 | +window.dataLayer=window.dataLayer||[]; |
| 286 | +functiongtag(){dataLayer.push(arguments);} |
| 287 | +gtag('js',newDate()); |
| 288 | + |
| 289 | +gtag('config','UA-149874671-1'); |
| 290 | +</script> |
| 291 | + |
| 292 | + |
| 293 | + |
| 294 | + |
| 295 | + |
| 296 | +<script> |
| 297 | +functioninitialTyped(){ |
| 298 | +vartypedTextEl=$('.typed-text'); |
| 299 | +if(typedTextEl&&typedTextEl.length>0){ |
| 300 | +vartyped=newTyped('.typed-text',{ |
| 301 | +strings:["Think like an artist, develop like an artisan","艺术家思维去思考问题,工匠创造精神去开发"], |
| 302 | +typeSpeed:90, |
| 303 | +loop:true, |
| 304 | +loopCount:Infinity, |
| 305 | +backSpeed:20, |
| 306 | +}); |
| 307 | +} |
| 308 | +} |
| 309 | + |
| 310 | +if($('.article-header')&&$('.article-header').length){ |
| 311 | +$(document).ready(function(){ |
| 312 | +initialTyped(); |
| 313 | +}); |
| 314 | +} |
| 315 | +</script> |
| 316 | + |
| 317 | + |
| 318 | + |
| 319 | + |
| 320 | +</html> |