1<!DOCTYPE html> 2 3 4 5 6<html class="theme-next muse" lang="zh-Hans"> 7<head> 8 <meta charset="UTF-8"/> 9<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 10<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/> 11<meta name="theme-color" content="#fff">
12<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1815293530059355" 13 crossorigin="anonymous"></script>
13 14 15 16 17 18 19 20 21 22<meta http-equiv="Cache-Control" content="no-transform" /> 23<meta http-equiv="Cache-Control" content="no-siteapp" /> 24 25 26 27 <meta name="google-site-verification" content="3uDNOuCQu6inuHg_QHas_nknR5rEe5WHetNJ6bVEwVA" /> 28 29 30 31 <meta name="msvalidate.01" content="DCCE27951FD510E830BDD5D014EB15B4" /> 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <link href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" /> 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 <link href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic|Roboto Slab:300,300italic,400,400italic,700,700italic|Roboto Mono:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css"> 85 86 87 88 89 90 91 92<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" /> 93 94<link href="/css/main.css?v=5.1.4" rel="stylesheet" type="text/css" /> 95 96 97 <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png?v=5.1.4"> 98 99 100 <link rel="icon" type="image/png" sizes="32x32" href="/uploads/favicon-32x32.ico?v=5.1.4"> 101 102 103 <link rel="icon" type="image/png" sizes="16x16" href="/uploads/favicon-16x16.ico?v=5.1.4"> 104 105 106 <link rel="mask-icon" href="/images/logo.svg?v=5.1.4" color="#fff"> 107 108 109 110 111 112 <meta name="keywords" content="woodwhales, æ¨é²¸é±¼, Java, 设计, å客" /> 113 114 115 116 117 118 119 120 121 122 123<meta name="description" content="好记æ§ä¸å¦çç¬å¤´"> 124<meta property="og:type" content="website"> 125<meta property="og:title" content="æ ç¾"> 126<meta property="og:url" content="https://woodwhales.cn/tags/index.html"> 127<meta property="og:site_name" content="woodwhale's blog"> 128<meta property="og:description" content="好记æ§ä¸å¦çç¬å¤´"> 129<meta property="og:locale"> 130<meta property="article:published_time" content="2018-12-22T13:36:20.000Z"> 131<meta property="article:modified_time" content="2025-04-06T14:52:05.941Z"> 132<meta property="article:author" content="æ¨é²¸é±¼"> 133<meta property="article:tag" content="Java,ç¼ç¨,ææ¯,设计,å客,建ç«,æ¨é²¸é±¼,弿º,æè ¾,woodwhales,blog,ç¨åºå"> 134<meta name="twitter:card" content="summary"> 135 136 137
138<script type="text/javascript" id="hexo.configurations"> 139 var NexT = window.NexT || {}; 140 var CONFIG = { 141 root: '', 142 scheme: 'Muse', 143 version: '5.1.4', 144 sidebar: {"position":"left","display":"hide","offset":12,"b2t":false,"scrollpercent":true,"onmobile":false}, 145 fancybox: true, 146 tabs: true, 147 motion: {"enable":false,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}, 148 duoshuo: { 149 userId: 'undefined', 150 author: 'å主' 151 }, 152 algolia: { 153 applicationID: '', 154 apiKey: '', 155 indexName: '', 156 hits: {"per_page":10}, 157 labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"} 158 } 159 }; 160</script>
160 161 162 163 164 <link rel="canonical" href="https://woodwhales.cn/tags/"/> 165 166 167 168
169<script async src="https://fundingchoicesmessages.google.com/i/pub-1815293530059355?ers=1" nonce="iiDO3i5ZgRmrRRl65XssBQ"></script>
169<script nonce="iiDO3i5ZgRmrRRl65XssBQ">(function() {function signalGooglefcPresent() {if (!window.frames['googlefcPresent']) {if (document.body) {const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe);} else {setTimeout(signalGooglefcPresent, 0);}}}signalGooglefcPresent();})();</script>
169 170 171 <title>æ ç¾ | woodwhale's blog</title> 172 173 174 175 176 177 178 179 180 181<meta name="generator" content="Hexo 7.0.0"> 182<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> 183</head> 184 185<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans"> 186 187 <div class="bg_content"> 188 <canvas id="canvas"></canvas> 189 </div> 190 191 192 193 194 195 196 <div class="container sidebar-position-left page-post-detail"> 197 <div class="headband"></div> 198 199 <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader"> 200 <div class="header-inner"><div class="site-brand-wrapper"> 201 <div class="site-meta "> 202 203 204 <div class="custom-logo-site-title"> 205 <a href="/" class="brand" rel="start"> 206 <span class="logo-line-before"><i></i></span> 207 <span class="site-title">woodwhale's blog</span> 208 <span class="logo-line-after"><i></i></span> 209 </a> 210 </div> 211 212 <p class="site-subtitle">ææ¯æ¹åçæ´»</p> 213 214 </div> 215 216 <div class="site-nav-toggle"> 217 <button> 218 <span class="btn-bar"></span> 219 <span class="btn-bar"></span> 220 <span class="btn-bar"></span> 221 </button> 222 </div> 223</div> 224 225<nav class="site-nav"> 226 227 228 229 <ul id="menu" class="menu"> 230 231 232 <li class="menu-item menu-item-home"> 233 <a href="/" rel="section"> 234 235 <i class="menu-item-icon fa fa-fw fa-home"></i> <br /> 236 237 é¦é¡µ 238 </a> 239 </li> 240 241 242 <li class="menu-item menu-item-archives"> 243 <a href="/archives/" rel="section"> 244 245 <i class="menu-item-icon fa fa-fw fa-archive"></i> <br /> 246 247 彿¡£ 248 </a> 249 </li> 250 251 252 <li class="menu-item menu-item-categories"> 253 <a href="/categories/" rel="section"> 254 255 <i class="menu-item-icon fa fa-fw fa-th"></i> <br /> 256 257 åç±» 258 </a> 259 </li> 260 261 262 <li class="menu-item menu-item-tags"> 263 <a href="/tags/" rel="section"> 264 265 <i class="menu-item-icon fa fa-fw fa-tags"></i> <br /> 266 267 æ ç¾ 268 </a> 269 </li> 270 271 272 <li class="menu-item menu-item-tools"> 273 <a href="/tools/" rel="section"> 274 275 <i class="menu-item-icon fa fa-fw fa-cogs"></i> <br /> 276 277 å·¥å · 278 </a> 279 </li> 280 281 282 <li class="menu-item menu-item-resources"> 283 <a href="/resources/" rel="section"> 284 285 <i class="menu-item-icon fa fa-fw fa-gift"></i> <br /> 286 287 ç¦å© 288 </a> 289 </li> 290 291 292 <li class="menu-item menu-item-setup"> 293 <a href="/setup/" rel="section"> 294 295 <i class="menu-item-icon fa fa-fw fa-power-off"></i> <br /> 296 297 è£ æº 298 </a> 299 </li> 300 301 302 <li class="menu-item menu-item-works"> 303 <a href="/works/" rel="section"> 304 305 <i class="menu-item-icon fa fa-fw fa-bars"></i> <br /> 306 307 ä½å 308 </a> 309 </li> 310 311 312 <li class="menu-item menu-item-about"> 313 <a href="/about/" rel="section"> 314 315 <i class="menu-item-icon fa fa-fw fa-futbol-o"></i> <br /> 316 317 å ³äº 318 </a> 319 </li> 320 321 322 323 <li class="menu-item menu-item-search"> 324 325 <a href="javascript:;" class="popup-trigger"> 326 327 328 <i class="menu-item-icon fa fa-search fa-fw"></i> <br /> 329 330 æç´¢ 331 </a> 332 </li> 333 334 </ul> 335 336 337 338 <div class="site-search"> 339 340 <div class="popup search-popup local-search-popup"> 341 <div class="local-search-header clearfix"> 342 <span class="search-icon"> 343 <i class="fa fa-search"></i> 344 </span> 345 <span class="popup-btn-close"> 346 <i class="fa fa-times-circle"></i> 347 </span> 348 <div class="local-search-input-wrapper"> 349 <input autocomplete="off" 350 placeholder="æç´¢..." spellcheck="false" 351 type="text" id="local-search-input"> 352 </div> 353 </div> 354 <div id="local-search-result"></div> 355</div> 356 357 358 359 </div> 360 361</nav> 362 363 364 365 </div> 366 </header> 367 368 <main id="main" class="main"> 369 <div class="main-inner"> 370 <div class="content-wrap">
371 <div id="content" class="content"> 372 373 374 <div id="posts" class="posts-expand"> 375 376 377 378 <div class="post-block page"> 379 <header class="post-header"> 380 381 <h1 class="post-title" itemprop="name headline">æ ç¾</h1> 382 383 384 385</header> 386 387 388 389 390 <div class="post-body"> 391 392 393 <div class="tag-cloud"> 394 <!-- 395 <div class="tag-cloud-title"> 396 ç®åå ±è®¡ 84 个æ ç¾ 397 </div> 398 --> 399 <div class="tag-cloud-tags" id="tags"> 400 <a href="/tags/AIoT/" style="font-size: 13px; color: #9733ee">AIoT</a> <a href="/tags/C-%E8%AF%AD%E8%A8%80/" style="font-size: 13px; color: #9733ee">C è¯è¨</a> <a href="/tags/DDD/" style="font-size: 13px; color: #9733ee">DDD</a> <a href="/tags/ElasticSearch/" style="font-size: 17.5px; color: #b13bbe">ElasticSearch</a> <a href="/tags/FTP/" style="font-size: 13px; color: #9733ee">FTP</a> <a href="/tags/Guava-EventBus/" style="font-size: 13px; color: #9733ee">Guava EventBus</a> <a href="/tags/HashMap/" style="font-size: 13px; color: #9733ee">HashMap</a> <a href="/tags/IDEA%E8%AE%BE%E7%BD%AE/" style="font-size: 13px; color: #9733ee">IDEA设置</a> <a href="/tags/JDK-1-8/" style="font-size: 13px; color: #9733ee">JDK 1.8</a> <a href="/tags/JDK21/" style="font-size: 13px; color: #9733ee">JDK21</a> <a href="/tags/JNI/" style="font-size: 13px; color: #9733ee">JNI</a> <a href="/tags/JVM-%E6%BA%90%E7%A0%81/" style="font-size: 13px; color: #9733ee">JVM æºç </a> <a href="/tags/Java-%E7%9A%84%E5%9B%9B%E7%A7%8D%E5%BC%95%E7%94%A8/" style="font-size: 13px; color: #9733ee">Java çåç§å¼ç¨</a> <a href="/tags/JavaWeb/" style="font-size: 13px; color: #9733ee">JavaWeb</a> <a href="/tags/Java%E5%B0%8F%E5%B7%A5%E5%85%B7/" style="font-size: 13px; color: #9733ee">Javaå°å·¥å ·</a> <a href="/tags/JetLinks/" style="font-size: 13px; color: #9733ee">JetLinks</a> <a href="/tags/Kafka/" style="font-size: 13px; color: #9733ee">Kafka</a> <a href="/tags/LRU%E7%AE%97%E6%B3%95/" style="font-size: 13px; color: #9733ee">LRUç®æ³</a> <a href="/tags/Linux/" style="font-size: 13px; color: #9733ee">Linux</a> <a href="/tags/Maven-Project/" style="font-size: 13px; color: #9733ee">Maven Project</a> <a href="/tags/Minio/" style="font-size: 13px; color: #9733ee">Minio</a> <a href="/tags/MyBatis/" style="font-size: 13px; color: #9733ee">MyBatis</a> <a href="/tags/MySQL/" style="font-size: 17.5px; color: #b13bbe">MySQL</a> <a href="/tags/Ndoe-js/" style="font-size: 13px; color: #9733ee">Ndoe.js</a> <a href="/tags/PlantUML/" style="font-size: 13px; color: #9733ee">PlantUML</a> <a href="/tags/PostgreSQL/" style="font-size: 13px; color: #9733ee">PostgreSQL</a> <a href="/tags/Python%E5%87%BD%E6%95%B0/" style="font-size: 13px; color: #9733ee">Python彿°</a> <a href="/tags/RabbitMQ/" style="font-size: 13px; color: #9733ee">RabbitMQ</a> <a href="/tags/Restful/" style="font-size: 13px; color: #9733ee">Restful</a> <a href="/tags/STS%E8%AE%BE%E7%BD%AE/" style="font-size: 13px; color: #9733ee">STS设置</a> <a href="/tags/Spring-Boot/" style="font-size: 22px; color: #cb428f">Spring Boot</a> <a href="/tags/Spring-Security/" style="font-size: 31px; color: #ff512f">Spring Security</a> <a href="/tags/Spring-%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91/" style="font-size: 13px; color: #9733ee">Spring æºç ç¼è¯</a> <a href="/tags/String-intern/" style="font-size: 13px; color: #9733ee">String#intern</a> <a href="/tags/anaconda/" style="font-size: 13px; color: #9733ee">anaconda</a> <a href="/tags/centos/" style="font-size: 13px; color: #9733ee">centos</a> <a href="/tags/confluence/" style="font-size: 13px; color: #9733ee">confluence</a> <a href="/tags/docker/" style="font-size: 26.5px; color: #e54a5f">docker</a> <a href="/tags/dubbo/" style="font-size: 17.5px; color: #b13bbe">dubbo</a> <a href="/tags/git/" style="font-size: 13px; color: #9733ee">git</a> <a href="/tags/gradle/" style="font-size: 13px; color: #9733ee">gradle</a> <a href="/tags/groovy/" style="font-size: 13px; color: #9733ee">groovy</a> <a href="/tags/harbor/" style="font-size: 13px; color: #9733ee">harbor</a> <a href="/tags/java/" style="font-size: 13px; color: #9733ee">java</a> <a href="/tags/jpa/" style="font-size: 13px; color: #9733ee">jpa</a> <a href="/tags/kafka/" style="font-size: 13px; color: #9733ee">kafka</a> <a href="/tags/layui/" style="font-size: 13px; color: #9733ee">layui</a> <a href="/tags/mvnrepository/" style="font-size: 13px; color: #9733ee">mvnrepository</a> <a href="/tags/mybatis-Plus/" style="font-size: 13px; color: #9733ee">mybatis Plus</a> <a href="/tags/mycat/" style="font-size: 17.5px; color: #b13bbe">mycat</a> <a href="/tags/mysql5-7%E5%AE%89%E8%A3%85/" style="font-size: 13px; color: #9733ee">mysql5.7å®è£ </a> <a href="/tags/nginx/" style="font-size: 13px; color: #9733ee">nginx</a> <a href="/tags/postgis/" style="font-size: 13px; color: #9733ee">postgis</a> <a href="/tags/redis/" style="font-size: 17.5px; color: #b13bbe">redis</a> <a href="/tags/rocketmq/" style="font-size: 13px; color: #9733ee">rocketmq</a> <a href="/tags/spring-boot-starter/" style="font-size: 13px; color: #9733ee">spring-boot-starter</a> <a href="/tags/swagger/" style="font-size: 13px; color: #9733ee">swagger</a> <a href="/tags/vsCode-C-C-%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/" style="font-size: 13px; color: #9733ee">vsCode C/C++ ç¯å¢æå»º</a> <a href="/tags/vue/" style="font-size: 13px; color: #9733ee">vue</a> <a href="/tags/xshell/" style="font-size: 13px; color: #9733ee">xshell</a> <a href="/tags/yolov8/" style="font-size: 13px; color: #9733ee">yolov8</a> <a href="/tags/zookeeper/" style="font-size: 13px; color: #9733ee">
400zookeeper</a> <a href="/tags/%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83/" style="font-size: 13px; color: #9733ee">代ç è§è</a> <a href="/tags/%E5%8D%9A%E5%AE%A2/" style="font-size: 13px; color: #9733ee">å客</a> <a href="/tags/%E5%9F%BA%E7%A1%80%E5%8E%9F%E7%90%86/" style="font-size: 31px; color: #ff512f">åºç¡åç</a> <a href="/tags/%E5%AD%97%E4%BD%93/" style="font-size: 13px; color: #9733ee">åä½</a> <a href="/tags/%E5%AE%89%E5%85%A8/" style="font-size: 13px; color: #9733ee">å®å ¨</a> <a href="/tags/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/" style="font-size: 13px; color: #9733ee">宿¶ä»»å¡</a> <a href="/tags/%E5%AF%86%E7%A0%81/" style="font-size: 13px; color: #9733ee">å¯ç </a> <a href="/tags/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/" style="font-size: 26.5px; color: #e54a5f">å¹¶åç¼ç¨</a> <a href="/tags/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/" style="font-size: 13px; color: #9733ee">æåºç®æ³</a> <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" style="font-size: 13px; color: #9733ee">æ°æ®ç»æ</a> <a href="/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/" style="font-size: 13px; color: #9733ee">æºå¨å¦ä¹ </a> <a href="/tags/%E6%9E%84%E5%BB%BA%E5%B7%A5%E5%85%B7%E8%AE%BE%E7%BD%AE/" style="font-size: 13px; color: #9733ee">æå»ºå·¥å ·è®¾ç½®</a> <a href="/tags/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/" style="font-size: 13px; color: #9733ee">æ¶æ¯ä¸é´ä»¶</a> <a href="/tags/%E7%89%A9%E8%81%94%E7%BD%91/" style="font-size: 13px; color: #9733ee">ç©èç½</a> <a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 13px; color: #9733ee">ç®æ³</a> <a href="/tags/%E7%BA%AA%E5%BF%B5%E5%B7%A6%E8%80%B3%E6%9C%B5%E8%80%97%E5%AD%90/" style="font-size: 13px; color: #9733ee">çºªå¿µå·¦è³æµèå</a> <a href="/tags/%E7%BB%84%E4%BB%B6%E6%B3%A8%E5%86%8C/" style="font-size: 13px; color: #9733ee">ç»ä»¶æ³¨å</a> <a href="/tags/%E7%BB%84%E4%BB%B6%E8%A3%85%E9%85%8D/" style="font-size: 13px; color: #9733ee">ç»ä»¶è£ é </a> <a href="/tags/%E7%BC%96%E7%A8%8B%E9%9A%8F%E6%83%B3/" style="font-size: 17.5px; color: #b13bbe">ç¼ç¨éæ³</a> <a href="/tags/%E8%BD%AC%E8%A1%8C/" style="font-size: 22px; color: #cb428f">转è¡</a> <a href="/tags/%E9%87%8D%E8%A3%85%E7%B3%BB%E7%BB%9F/" style="font-size: 13px; color: #9733ee">éè£ ç³»ç»</a> <a href="/tags/%E9%9A%8F%E7%AC%94%E6%9D%82%E8%B0%88/" style="font-size: 13px; color: #9733ee">éç¬æè°</a> 401 </div> 402 </div> 403 404 </div> 405 406 407 408 </div> 409 410 411 412 </div> 413 414 415 </div> 416 417 418 419 420 421 422 <div class="comments" id="comments"> 423 </div> 424 425 426 427
428<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1815293530059355" 429 crossorigin="anonymous"></script>
429 430 431 </div> 432 433 434 435 <div class="sidebar-toggle"> 436 <div class="sidebar-toggle-line-wrap"> 437 <span class="sidebar-toggle-line sidebar-toggle-line-first"></span> 438 <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span> 439 <span class="sidebar-toggle-line sidebar-toggle-line-last"></span> 440 </div> 441 </div> 442 443 <aside id="sidebar" class="sidebar"> 444 445 <div class="sidebar-inner"> 446 447 448 449 450 451 <section class="site-overview-wrap sidebar-panel sidebar-panel-active"> 452 <div class="site-overview"> 453 <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person"> 454 455 <img class="site-author-image" itemprop="image" 456 src="/uploads/avatar-woodwhale.png" 457 alt="woodwhales" /> 458 459 <p class="site-author-name" itemprop="name">woodwhales</p> 460 <p class="site-description motion-element" itemprop="description"></p> 461 </div> 462 463 <nav class="site-state motion-element"> 464 465 466 <div class="site-state-item site-state-posts"> 467 468 <a href="/archives/%7C%7C%20archive"> 469 470 <span class="site-state-item-count">103</span> 471 <span class="site-state-item-name">æ¥å¿</span> 472 </a> 473 </div> 474 475 476 477 478 479 <div class="site-state-item site-state-categories"> 480 <a href="/categories/index.html"> 481 <span class="site-state-item-count">64</span> 482 <span class="site-state-item-name">åç±»</span> 483 </a> 484 </div> 485 486 487 488 489 490 <div class="site-state-item site-state-tags"> 491 <a href="/tags/index.html"> 492 <span class="site-state-item-count">84</span> 493 <span class="site-state-item-name">æ ç¾</span> 494 </a> 495 </div> 496 497 498 </nav> 499 500 501 502 503 <div class="links-of-author motion-element"> 504 505 <span class="links-of-author-item"> 506 <a href="https://github.com/woodwhales" target="_blank" title="GitHub"> 507 508 <i class="fa fa-fw fa-github"></i>GitHub</a> 509 </span> 510 511 <span class="links-of-author-item"> 512 <a href="mailto:[email protected]" target="_blank" title="E-Mail"> 513 514 <i class="fa fa-fw fa-envelope"></i>E-Mail</a> 515 </span> 516 517 <span class="links-of-author-item"> 518 <a href="https://juejin.im/user/5b1f7a2f518825137f0d31d1" target="_blank" title="æé"> 519 520 <i class="fa fa-fw fa-book"></i>æé</a> 521 </span> 522 523 <span class="links-of-author-item"> 524 <a href="https://www.cnblogs.com/mujingyu/" target="_blank" title="å客å"> 525 526 <i class="fa fa-fw fa-laptop"></i>å客å</a> 527 </span> 528 529 </div> 530 531 532 533 534 535 536 537 <div class="links-of-blogroll motion-element links-of-blogroll-inline"> 538 <div class="links-of-blogroll-title"> 539 <i class="fa fa-fw fa-globe"></i> 540 ç¥å¥ç龿¥ 541 </div> 542 <ul class="links-of-blogroll-list"> 543 544 <li class="links-of-blogroll-item"> 545 <a href="https://music.cloudcoders.cn" title="弿ºé³ä¹ææ¾å¨" rel="external nofollow" target="_blank">弿ºé³ä¹ææ¾å¨</a> 546 </li> 547 548 <li class="links-of-blogroll-item"> 549 <a href="https://image.woodwhales.cn/" title="woodwhales-image-store" rel="external nofollow" target="_blank">woodwhales-image-store</a> 550 </li> 551 552 <li class="links-of-blogroll-item"> 553 <a href="http://www.bilibili.com/video/av6211226" title="å°¼å¤æÂ·ç¹æ¯æï¼åæäºç°ä»£ä¸çç人" rel="external nofollow" target="_blank">å°¼å¤æÂ·ç¹æ¯æï¼åæäºç°ä»£ä¸çç人</a> 554 </li> 555 556 <li class="links-of-blogroll-item"> 557 <a href="https://www.bilibili.com/video/av21376839" title="è®¡ç®æºç§å¦éæè¯¾ï¼Crash Course" rel="external nofollow" target="_blank">è®¡ç®æºç§å¦éæè¯¾ï¼Crash Course</a> 558 </li> 559 560 </ul> 561 562 <div id="days"></div>
563<script> 564 function show_date_time(){ 565 window.setTimeout("show_date_time()", 1000); 566 BirthDay=new Date("12/21/2018 00:00:00"); 567 today=new Date(); 568 timeold=(today.getTime()-BirthDay.getTime()); 569 sectimeold=timeold/1000 570 secondsold=Math.floor(sectimeold); 571 msPerDay=24*60*60*1000 572 e_daysold=timeold/msPerDay 573 daysold=Math.floor(e_daysold); 574 e_hrsold=(e_daysold-daysold)*24; 575 hrsold=setzero(Math.floor(e_hrsold)); 576 e_minsold=(e_hrsold-hrsold)*60; 577 minsold=setzero(Math.floor((e_hrsold-hrsold)*60)); 578 seconds=setzero(Math.floor((e_minsold-minsold)*60)); 579 document.getElementById('days').innerHTML="å·²è¿è¡ "+daysold+" 天 "+hrsold+" å°æ¶ "+minsold+" å "+seconds+" ç§"; 580 } 581 function setzero(i){ 582 if (i<10) 583 {i="0" + i}; 584 return i; 585 } 586 show_date_time(); 587</script>
587 588 </div> 589 590 591 <!--<div id="days"></div>
592<script> 593 function show_date_time(){ 594 window.setTimeout("show_date_time()", 1000); 595 BirthDay=new Date("12/21/2018 00:00:00"); 596 today=new Date(); 597 timeold=(today.getTime()-BirthDay.getTime()); 598 sectimeold=timeold/1000 599 secondsold=Math.floor(sectimeold); 600 msPerDay=24*60*60*1000 601 e_daysold=timeold/msPerDay 602 daysold=Math.floor(e_daysold); 603 e_hrsold=(e_daysold-daysold)*24; 604 hrsold=setzero(Math.floor(e_hrsold)); 605 e_minsold=(e_hrsold-hrsold)*60; 606 minsold=setzero(Math.floor((e_hrsold-hrsold)*60)); 607 seconds=setzero(Math.floor((e_minsold-minsold)*60)); 608 document.getElementById('days').innerHTML="å·²è¿è¡ "+daysold+" 天 "+hrsold+" å°æ¶ "+minsold+" å "+seconds+" ç§"; 609 } 610 function setzero(i){ 611 if (i<10) 612 {i="0" + i}; 613 return i; 614 } 615 show_date_time(); 616</script>
616--> 617 </div> 618 </section> 619 620 621 622 623 624 </div> 625
625<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1815293530059355" 626 crossorigin="anonymous"></script>
626 627 </aside> 628 629 630 631 </div> 632 </main> 633 634 <footer id="footer" class="footer"> 635 <div class="footer-inner"> 636
636<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
636 637<div class="copyright">© 2018 — <span itemprop="copyrightYear">2025</span> 638 <span class="with-love" id="heart"> 639 <i class="fa fa-heart"></i> 640 </span> 641 <span class="author" itemprop="copyrightHolder">æ¨é²¸é±¼</span> 642 643</div> 644 645 646 647 648 649 650 651 652 653 654<div class="busuanzi-count"> 655
655<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
655 656 657 658 <span class="site-uv"> 659 <i class="fa fa-user-circle-o"></i> 访é®äººæ° 660 <span class="busuanzi-value" id="busuanzi_value_site_uv"></span> 661 人 662 </span> 663 664 665 666 <span class="site-pv"> 667 <i class="fa fa-eye"></i> è®¿é®æ»é 668 <span class="busuanzi-value" id="busuanzi_value_site_pv"></span> 669 次 670 </span> 671 672</div> 673 674 675 676 677 678 679 680 681 682 </div> 683 </footer> 684 685 686 <div class="back-to-top"> 687 <i class="fa fa-arrow-up"></i> 688 689 <span id="scrollpercent"><span>0</span>%</span> 690 691 </div> 692 693 694 695 696 </div> 697 698 699
700<script type="text/javascript"> 701 if (Object.prototype.toString.call(window.Promise) !== '[object Function]') { 702 window.Promise = null; 703 } 704</script>
704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729
729<script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>
729 730 731 732 733 734
734<script type="text/javascript" src="/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>
734 735 736 737 738 739
739<script type="text/javascript" src="/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>
739 740 741 742 743 744
744<script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>
744 745 746 747 748 749
749<script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>
749 750 751 752 753 754
754<script type="text/javascript" src="/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
754 755 756 757 758 759 760 761
761<script type="text/javascript" src="/js/src/utils.js?v=5.1.4"></script>
761 762 763
763<script type="text/javascript" src="/js/src/motion.js?v=5.1.4"></script>
763 764 765 766 767 768 769 770 771
771<script type="text/javascript" src="/js/src/scrollspy.js?v=5.1.4"></script>
vendor: 1 bytes, line 771
771
772<script type="text/javascript" src="/js/src/post-details.js?v=5.1.4"></script>
772 773 774 775 776 777 778 779
779<script type="text/javascript" src="/js/src/bootstrap.js?v=5.1.4"></script>
779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812
812<script src="//code.bdstatic.com/npm/[email protected]/dist/av-min.js"></script>
812 813
813<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
813 814 815
815<script type="text/javascript"> 816 var GUEST = ['nick','mail','link']; 817 var guest = 'nick,mail,link'; 818 guest = guest.split(',').filter(item=>{ 819 return GUEST.indexOf(item)>-1; 820 }); 821 new Valine({ 822 el: '#comments' , 823 verify: false, 824 notify: true, 825 appId: 'WWd60b61wU67AeJzg0yzDD1E-gzGzoHsz', 826 appKey: 'QjMAV3Hw76n6nhrDaxLtfoPE', 827 placeholder: 'ç½ç»ä¸çº¿çµçæ,çæè¿æ®µç¼\n æ¨å¯ä»¥å¡«åé®ç®±ï¼åå¤è¯è®ºæ¶ï¼æ¨ä¼æ¶å°é®ä»¶éç¥ã', 828 avatar:'mm', 829 guest_info:guest, 830 pageSize:'10' || 10, 831 serverURLs: 'https://wwd60b61.lc-cn-n1-shared.com' 832 }); 833 </script>
833 834 835 836 837 838
838<script type="text/javascript"> 839 // Popup Window; 840 var isfetched = false; 841 var isXml = true; 842 // Search DB path; 843 var search_path = "search.xml"; 844 if (search_path.length === 0) { 845 search_path = "search.xml"; 846 } else if (/json$/i.test(search_path)) { 847 isXml = false; 848 } 849 var path = "/" + search_path; 850 // monitor main search box; 851 852 var onPopupClose = function (e) { 853 $('.popup').hide(); 854 $('#local-search-input').val(''); 855 $('.search-result-list').remove(); 856 $('#no-result').remove(); 857 $(".local-search-pop-overlay").remove(); 858 $('body').css('overflow', ''); 859 } 860 861 function proceedsearch() { 862 $("body") 863 .append('<div class="search-popup-overlay local-search-pop-overlay"></div>') 864 .css('overflow', 'hidden'); 865 $('.search-popup-overlay').click(onPopupClose); 866 $('.popup').toggle(); 867 var $localSearchInput = $('#local-search-input'); 868 $localSearchInput.attr("autocapitalize", "none"); 869 $localSearchInput.attr("autocorrect", "off"); 870 $localSearchInput.focus(); 871 } 872 873 // search function; 874 var searchFunc = function(path, search_id, content_id) { 875 'use strict'; 876 877 // start loading animation 878 $("body") 879 .append('<div class="search-popup-overlay local-search-pop-overlay">' + 880 '<div id="search-loading-icon">' + 881 '<i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>' + 882 '</div>' + 883 '</div>') 884 .css('overflow', 'hidden'); 885 $("#search-loading-icon").css('margin', '20% auto 0 auto').css('text-align', 'center'); 886 887 $.ajax({ 888 url: path, 889 dataType: isXml ? "xml" : "json", 890 async: true, 891 success: function(res) { 892 // get the contents from search data 893 isfetched = true; 894 $('.popup').detach().appendTo('.header-inner'); 895 var datas = isXml ? $("entry", res).map(function() { 896 return { 897 title: $("title", this).text(), 898 content: $("content",this).text(), 899 url: $("url" , this).text() 900 }; 901 }).get() : res; 902 var input = document.getElementById(search_id); 903 var resultContent = document.getElementById(content_id); 904 var inputEventFunction = function() { 905 var searchText = input.value.trim().toLowerCase(); 906 var keywords = searchText.split(/[\s\-]+/); 907 if (keywords.length > 1) { 908 keywords.push(searchText); 909 } 910 var resultItems = []; 911 if (searchText.length > 0) { 912 // perform local searching 913 datas.forEach(function(data) { 914 var isMatch = false; 915 var hitCount = 0; 916 var searchTextCount = 0; 917 var title = data.title.trim(); 918 var titleInLowerCase = title.toLowerCase(); 919 var content = data.content.trim().replace(/<[^>]+>/g,""); 920 var contentInLowerCase = content.toLowerCase(); 921 var articleUrl = decodeURIComponent(data.url); 922 var indexOfTitle = []; 923 var indexOfContent = []; 924 // only match articles with not empty titles 925 if(title != '') { 926 keywords.forEach(function(keyword) { 927 function getIndexByWord(word, text, caseSensitive) { 928 var wordLen = word.length; 929 if (wordLen === 0) { 930 return []; 931 } 932 var startPosition = 0, position = [], index = []; 933 if (!caseSensitive) { 934 text = text.toLowerCase(); 935 word = word.toLowerCase(); 936 } 937 while ((position = text.indexOf(word, startPosition)) > -1) { 938 index.push({position: position, word: word}); 939 startPosition = position + wordLen; 940 } 941 return index; 942 } 943 944 indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false)); 945 indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false)); 946 }); 947 if (indexOfTitle.length > 0 || indexOfContent.length > 0) { 948 isMatch = true; 949 hitCount = indexOfTitle.length + indexOfContent.length; 950 } 951 } 952 953 // show search results 954 955 if (isMatch) { 956 // sort index by position of keyword 957 958 [indexOfTitle, indexOfContent].forEach(function (index) { 959 index.sort(function (itemLeft, itemRight) { 960 if (itemRight.position !== itemLeft.position) { 961 return itemRight.position - itemLeft.position; 962 } else { 963 return itemLeft.word.length - itemRight.word.length; 964 } 965 }); 966 }); 967 968 // merge hits into slices 969 970 function mergeIntoSlice(text, start, end, index) { 971 var item = index[index.length - 1]; 972 var position = item.position; 973 var word = item.word; 974 var hits = []; 975 var searchTextCountInSlice = 0; 976 while (position + word.length <= end && index.length != 0) { 977 if (word === searchText) { 978 searchTextCountInSlice++; 979 } 980 hits.push({position: position, length: word.length}); 981 var wordEnd = position + word.length; 982 983 // move to next position of hit 984 985 index.pop(); 986 while (index.length != 0) { 987 item = index[index.length - 1]; 988 position = item.position; 989 word = item.word; 990 if (wordEnd > position) { 991 index.pop(); 992 } else { 993 break; 994 } 995 } 996 } 997 searchTextCount += searchTextCountInSlice; 998 return { 999 hits: hits, 1000 start: start, 1001 end: end, 1002 searchTextCount: searchTextCountInSlice 1003 }; 1004 } 1005 1006 var slicesOfTitle = []; 1007 if (indexOfTitle.length != 0) { 1008 slicesOfTitle.push(mergeIntoSlice(title, 0, title.length, indexOfTitle)); 1009 } 1010 1011 var slicesOfContent = []; 1012 while (indexOfContent.length != 0) { 1013 var item = indexOfContent[indexOfContent.length - 1]; 1014 var position = item.position; 1015 var word = item.word; 1016 // cut out 100 characters 1017 var start = position - 20; 1018 var end = position + 80; 1019 if(start < 0){ 1020 start = 0; 1021 } 1022 if (end < position + word.length) { 1023 end = position + word.length; 1024 } 1025 if(end > content.length){ 1026 end = content.length; 1027 } 1028 slicesOfContent.push(mergeIntoSlice(content, start, end, indexOfContent)); 1029 } 1030
1031 // sort slices in content by search text's count and hits' count 1032 1033 slicesOfContent.sort(function (sliceLeft, sliceRight) { 1034 if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) { 1035 return sliceRight.searchTextCount - sliceLeft.searchTextCount; 1036 } else if (sliceLeft.hits.length !== sliceRight.hits.length) { 1037 return sliceRight.hits.length - sliceLeft.hits.length; 1038 } else { 1039 return sliceLeft.start - sliceRight.start; 1040 } 1041 }); 1042 1043 // select top N slices in content 1044 1045 var upperBound = parseInt('1'); 1046 if (upperBound >= 0) { 1047 slicesOfContent = slicesOfContent.slice(0, upperBound); 1048 } 1049 1050 // highlight title and content 1051 1052 function highlightKeyword(text, slice) { 1053 var result = ''; 1054 var prevEnd = slice.start; 1055 slice.hits.forEach(function (hit) { 1056 result += text.substring(prevEnd, hit.position); 1057 var end = hit.position + hit.length; 1058 result += '<b class="search-keyword">' + text.substring(hit.position, end) + '</b>'; 1059 prevEnd = end; 1060 }); 1061 result += text.substring(prevEnd, slice.end); 1062 return result; 1063 } 1064 1065 var resultItem = ''; 1066 1067 if (slicesOfTitle.length != 0) { 1068 resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + highlightKeyword(title, slicesOfTitle[0]) + "</a>"; 1069 } else { 1070 resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + title + "</a>"; 1071 } 1072 1073 slicesOfContent.forEach(function (slice) { 1074 resultItem += "<a href='" + articleUrl + "'>" + 1075 "<p class=\"search-result\">" + highlightKeyword(content, slice) + 1076 "...</p>" + "</a>"; 1077 }); 1078 1079 resultItem += "</li>"; 1080 resultItems.push({ 1081 item: resultItem, 1082 searchTextCount: searchTextCount, 1083 hitCount: hitCount, 1084 id: resultItems.length 1085 }); 1086 } 1087 }) 1088 }; 1089 if (keywords.length === 1 && keywords[0] === "") { 1090 resultContent.innerHTML = '<div id="no-result"><i class="fa fa-search fa-5x" /></div>' 1091 } else if (resultItems.length === 0) { 1092 resultContent.innerHTML = '<div id="no-result"><i class="fa fa-frown-o fa-5x" /></div>' 1093 } else { 1094 resultItems.sort(function (resultLeft, resultRight) { 1095 if (resultLeft.searchTextCount !== resultRight.searchTextCount) { 1096 return resultRight.searchTextCount - resultLeft.searchTextCount; 1097 } else if (resultLeft.hitCount !== resultRight.hitCount) { 1098 return resultRight.hitCount - resultLeft.hitCount; 1099 } else { 1100 return resultRight.id - resultLeft.id; 1101 } 1102 }); 1103 var searchResultList = '<ul class=\"search-result-list\">'; 1104 resultItems.forEach(function (result) { 1105 searchResultList += result.item; 1106 }) 1107 searchResultList += "</ul>"; 1108 resultContent.innerHTML = searchResultList; 1109 } 1110 } 1111 1112 if ('auto' === 'auto') { 1113 input.addEventListener('input', inputEventFunction); 1114 } else { 1115 $('.search-icon').click(inputEventFunction); 1116 input.addEventListener('keypress', function (event) { 1117 if (event.keyCode === 13) { 1118 inputEventFunction(); 1119 } 1120 }); 1121 } 1122 1123 // remove loading animation 1124 $(".local-search-pop-overlay").remove(); 1125 $('body').css('overflow', ''); 1126 1127 proceedsearch(); 1128 } 1129 }); 1130 } 1131 1132 // handle and trigger popup window; 1133 $('.popup-trigger').click(function(e) { 1134 e.stopPropagation(); 1135 if (isfetched === false) { 1136 searchFunc(path, 'local-search-input', 'local-search-result'); 1137 } else { 1138 proceedsearch(); 1139 }; 1140 }); 1141 1142 $('.popup-btn-close').click(onPopupClose); 1143 $('.popup').click(function(e){ 1144 e.stopPropagation(); 1145 }); 1146 $(document).on('keyup', function (event) { 1147 var shouldDismissSearchPopup = event.which === 27 && 1148 $('.search-popup').is(':visible'); 1149 if (shouldDismissSearchPopup) { 1150 onPopupClose(); 1151 } 1152 }); 1153 </script>
1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163
1164<script> 1165(function(){ 1166 var bp = document.createElement('script'); 1167 var curProtocol = window.location.protocol.split(':')[0]; 1168 if (curProtocol === 'https') { 1169 bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; 1170 } 1171 else { 1172 bp.src = 'http://push.zhanzhang.baidu.com/push.js'; 1173 } 1174 var s = document.getElementsByTagName("script")[0]; 1175 s.parentNode.insertBefore(bp, s); 1176})(); 1177</script>
1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 <!-- 代ç åå¤å¶åè½ --> 1191 <!-- 代ç åå¤å¶åè½ -->
1192<script type="text/javascript" src="/js/src/clipboard.min.js"></script>
1192
1193<script type="text/javascript" src="/js/src/clipboard-use.js"></script>
1193 1194 1195 <!-- é³ä¹ 1196 <link rel="stylesheet" href="/dist/APlayer.min.css"> 1197<div id="aplayer"></div>
1198<script type="text/javascript" src="/dist/APlayer.min.js"></script>
vendor: 1 bytes, line 1198
1198
1199<script type="text/javascript" src="/dist/music.js"></script>
1199 1200 --> 1201 1202 <!-- å¨æèæ¯ 1203
1203<script type="text/javascript" src="/js/src/dynamic_bg.js"></script>
1203 1204 --> 1205 1206</body> 1207</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.