1<!DOCTYPE HTML><html lang=zh-cn data-pagefind-filter=lang:zh-cn data-default-color-scheme=auto><head><meta http-equiv=Permissions-Policy content="fullscreen=*, geolocation=*, camera=*, microphone=*"><meta charset=utf-8> 2<!-- This site is hosted on Netlify. Anyone can build and deploy a site 3 like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=db983aa5-ac84-4cfd-b5d4-27194838f575 4 Netlify hosting facts for this site: static/SSR served via Netlify Edge. --><link rel=canonical href=https://blog.17lai.site/docs/ ><meta name=keywords content="ææ¡£é¦é¡µ, hisilicon,å®å,matery,mp3tag,linux,calibre,devops,driver,embeded,hexo,html5,ccs3,joplin,wiz,debian,git,gitbook,vps,gitlab,qnap,pt,bt,mysql,baota,vim,ai,docker,blog,note,nas"><meta name=description content=~软件驱å¨ä¸ç~个人ç¬ç«ææ¯å客ï¼å ³äºLinux,弿ºï¼Nasï¼Dockerï¼åµå ¥å¼ï¼çè´¢ï¼å¥èº«ç主é¢ï¼><meta property=og:type content=website><meta property=og:title content="ææ¡£é¦é¡µ | 夿³ä¹ä¹¦"><meta property=og:url content=https://blog.17lai.site/docs/ ><meta property=og:site_name content=夿³ä¹ä¹¦><meta property=og:description content=~软件驱å¨ä¸ç~个人ç¬ç«ææ¯å客ï¼å ³äºLinux,弿ºï¼Nasï¼Dockerï¼åµå ¥å¼ï¼çè´¢ï¼å¥èº«ç主é¢ï¼><meta property=og:image content=/medias_webp/featureimages/0.webp><meta name=twitter:card content=summary_large_image><meta name=twitter:title content="ææ¡£é¦é¡µ | 夿³ä¹ä¹¦"><meta name=twitter:description content=~软件驱å¨ä¸ç~个人ç¬ç«ææ¯å客ï¼å ³äºLinux,弿ºï¼Nasï¼Dockerï¼åµå ¥å¼ï¼çè´¢ï¼å¥èº«ç主é¢ï¼><meta name=twitter:image content=/medias_webp/featureimages/0.webp><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><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><meta name=apple-mobile-web-app-title content=夿³ä¹ä¹¦><meta name=theme-color content=#7e9fc4><meta name=msapplication-TileImage content=/medias/icons/android-chrome-192x192.png><meta name=msapplication-TileColor content=#7e9fc4><meta http-equiv=Content-Security-Policy content="default-src * vitals.vercel-insights.com 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval' blob:; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; font-src * data: blob: 'unsafe-inline'; worker-src * 'self' blob: data:; frame-src *; style-src * 'unsafe-inline';"><link rel=apple-touch-icon href=/medias/icons/apple-touch-icon.png><link rel=mask-icon href=/medias/icons/android-chrome-512x512.svg color=#000000><title>ææ¡£é¦é¡µ | 夿³ä¹ä¹¦</title><link rel=manifest href=/manifest.json><link rel=icon type=image/webp href=/favicon.webp><link href=https://waline.17lai.site rel=preconnect crossorigin><link href=https://waline.17lai.site rel=dns-prefetch crossorigin><link rel=alternate type=application/atom+xml title=ææè®¢é ATOM--夿³ä¹ä¹¦ href=https://blog.17lai.site/atom.xml><link rel=alternate type=application/rss+xml title=ææè®¢é RSS2--夿³ä¹ä¹¦ href=https://blog.17lai.site/rss.xml><link rel=alternate type=application/json title=ææè®¢é JSON--夿³ä¹ä¹¦ href=https://blog.17lai.site/feed.json><link rel=preload as=style href="/css/main.css?v=13.22"><link rel=preload as=style href="/libs/materialize/materialize.min.css?v=2.3.3"><link rel=preload as=style href="/libs/awesome/css/all.min.css?v=13.22"><link rel=stylesheet type=text/css href="/libs/awesome/css/all.min.css?v=13.22"><link rel=modulepreload href="/libs/waline/pageview.js?v=3.15.2" as=script><link rel=stylesheet type=text/css href="/libs/materialize/materialize.min.css?v=2.3.3"><link rel=stylesheet href=https://lib.baomitu.com/aos/2.3.4/aos.css media=print onload='this.media="all"'><link rel=stylesheet href=https://lib.baomitu.com/animate.css/3.6.2/animate.min.css media=print onload='this.media="all"'><noscript><link rel=stylesheet href=https://lib.baomitu.com/aos/2.3.4/aos.css><link rel=stylesheet href=https://lib.baomitu.com/animate.css/3.6.2/animate.min.css></noscript><link rel=stylesheet href=/libs/lightGallery/css/lightgallery.min.css media=print onload='this.media="all"'><noscript><link rel=stylesheet href=/libs/lightGallery/css/lightgallery.min.css></noscript>
4<link rel=stylesheet type=text/css href="/css/main.css?v=13.22"><noscript><link rel=stylesheet href="/libs/materialize/materialize.min.css?v=2.3.3"><link rel=stylesheet href="/css/main.css?v=13.22"></noscript><link rel=stylesheet href=https://lib.baomitu.com/tocbot/4.36.4/tocbot.min.css media=print onload='this.media="all"'><noscript><link rel=stylesheet href=https://lib.baomitu.com/tocbot/4.36.4/tocbot.min.css></noscript><link rel=stylesheet href="/css/highlight.css?v=13.22" id=highlight-css><link rel=stylesheet href="/css/highlight-dark.css?v=13.22" id=highlight-css-dark><link rel=preload href="/js/utils.js?v=13.22" as=script><link rel=preload href="/js/color-schema.js?v=13.22" as=script>
4<script id=matery-configs>var dntVal,Matery=window.Matery||{},CONFIG=(Matery.ctx=Object.assign({},Matery.ctx),{hostname:"blog.17lai.site",root:"/",version:"2.0.0",zh_default:2,typing:{enable:!0,typeSpeed:70,cursorChar:"_",loop:!1,scope:[]},postTyped:{enable:!0,loop:!1,showCursor:!0,cursorChar:"_",startDelay:50,typeSpeed:70,backSpeed:50},subtitleTyped:{loop:!0,showCursor:!0,cursorChar:"_",startDelay:100,typeSpeed:80,backSpeed:50},anchorjs:{enable:!1,element:"h1,h2,h3,h4,h5,h6",placement:"right",visible:"hover",icon:""},progressbar:{enable:!1,height_px:3,color:"#29d",options:{showSpinner:!1,trickleSpeed:100}},code_language:{enable:!0,default:"TEXT"},copy_btn:!0,show_full:!0,height_limit:"450px",show_expand:!0,shrink:!0,break:!1,infinite_scroll:{enable:!0},image_caption:{enable:!0},fun_features:{typing:{enable:!0,typeSpeed:70,cursorChar:"_",loop:!1,scope:[]},anchorjs:{enable:!1,element:"h1,h2,h3,h4,h5,h6",placement:"right",visible:"hover",icon:""},progressbar:{enable:!1,height_px:3,color:"#29d",options:{showSpinner:!1,trickleSpeed:100}},monitortext:{enable:!1,text:"ä½ çä¸å°æï¼"},dengbox:{enable:!1,left:"æ°æ¥",right:"å¿«ä¹"}},background:{enable:!0,default:"off",image:{enable:!0,url:"/medias_webp/sea.webp",random:!0,lightNum:45,lightPath:"/medias_webp/featureimages/",darkNum:22,darkPath:"/medias_webp/featureimages/dark/"},video:{enable:!0,url:"/video_url.json?v=1.0.0"},loading:{enable:!0,type:"off",time:350}},image_zoom:{enable:!0,img_url_replace:["",""]},toc:{enable:!0,headingSelector:"h2,h3,h4,h5,h6",collapseDepth:0},outdate:{enable:!1,warning_day:365,error_day:3650},lazyload:{enable:!0,loading_img:"/medias_webp/loading2.svg",loading_img_dark:"/medias_webp/loading2-dark.svg",onlypost:!1,offset_factor:2},effects:{enable:!0,desktop_only:!0,page:{default:"off",available:{sakura:{label:"樱è±",lib:"sakura"},ripples:{label:"æ°´æ³¢",lib:"ripples"},leaf:{label:"è½å¶",lib:"leaf"},snowdown:{label:"é£éª",lib:"snowdown"},snowflake:{label:"éªè±",lib:"snowflake"},buble:{label:"åæ³¡",lib:"buble"},canvas_nest:{label:"ç½ç»",lib:"canvas_nest",params:{color:"0,0,255",pointColor:"0,0,255",opacity:.7,zIndex:-1,count:99}},ribbon:{label:"彩带",lib:"ribbon",params:{size:150,alpha:.6,zIndex:-1,clickChange:!0}},ribbon_dynamic:{label:"卿彩另",lib:"ribbon_dynamic"}}},mouse:{default:"off",available:{clicklove:{label:"ç±å¿",lib:"clicklove"},popupText:{label:"å¼¹åºæå",lib:"popupText"},mouseStar:{label:"ææ",lib:"star"},fireworks:{label:"çç¸",lib:"fireworks"}}}},reward:{enable:!0,title:"ç åè¾è¦ï¼æèµä½è
ï¼",wechat:"/medias_webp/reward/wechat.webp",alipay:"/medias_webp/reward/alipay.webp"},web_analytics:{enable:!0,follow_dnt:!1,baidu:{enable:!1,id:"22cc5bdea6e529c1349d44b7306b3b8c"},baiduPush:!1,google:{enable:!1,measurement_id:"G-JNYZP4ZLDJ"},umami:{enable:!0,totalTraffic:!0,totalNumberOfvisitors:!0,pageStats:!0,src:"https://ana.17lai.site/script.js",start_time:"2023-01-01",token:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaGFyZUlkIjoiZjY0NGViY2EtMzQ2Mi00NmU2LTg2OGEtZDUwNGI5ZDg5ZmJkIiwic2hhcmVUeXBlIjoxLCJwYXJhbWV0ZXJzIjp7ImV2ZW50cyI6dHJ1ZSwib3ZlcnZpZXciOnRydWV9LCJ3ZWJzaXRlSWQiOiJlNTMyZjY5ZC01NjA2LTQwYzktOWRiYi1iZmEwNDI1ODM4NGYiLCJpYXQiOjE3ODIwNjE5Nzl9.wcR2N-2epOL0de59_TdSD-87bCqvs3MGLtQJOyq4Hfk",api_server:"https://ana.17lai.site",website_id:"e532f69d-5606-40c9-9dbb-bfa04258384f"},tencent:{enable:!1,sid:null,cid:null},woyaola:{enable:!1,id:"JynRUZuReKUzZQSo",ck:"JynRUZuReKUzZQSo"},cnzz:{enable:!1,id:null},leancloud:{app_id:null,app_key:null,server_url:null,path:"window.location.pathname",ignore_local:!1}},search:{default:"algolia",local:{enable:!0,path:"/search.json",trigger:"auto",top_n:1,unescape:!1,preload:!1},algolia:{enable:!0,appID:"VI13Y8S98L",apiKey:"82f2b8a44bdbd5b95d0145201ec462ec",indexName:"blog",perPage:10,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"}},pagefind:{enable:!0}}});CONFIG.web_analytics.follow_dnt&&(dntVal=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack,Matery.ctx.dnt=dntVal&&(dntVal.startsWith("1")||dntVal.startsWith("yes")||dntVal.startsWith("on")))</script>
4<script src="/js/utils.js?v=13.22"></script>
4<script src="/js/color-schema.js?v=13.22"></script>
4<link rel=stylesheet href=/libs/prism/plugins/line-numbers/prism-line-numbers.min.css>
4<script async>window.WebGLRenderingContext||console.log("æ¨çæµè§å¨ä¸æ¯æWebGLï¼å¯è½ä¼å½±åé¨å页颿¾ç¤ºï¼è¯·å°è¯é坿µè§å¨ï¼ä½¿ç¨ææ°ç Chrome æ Edge æµè§å¨ã");var windowWidth=window.innerWidth,BP={sm:600,md:768,lg:992,xl:1200,fun:1400},supportsPassive=(window.addEventListener("resize",function(){windowWidth=window.innerWidth}),!1);try{var opts=Object.defineProperty({},"passive",{get:function(){supportsPassive=!0}});window.addEventListener("testpassive",null,opts),window.removeEventListener("testpassive",null,opts)}catch(e){}var runningOnBrowser="undefined"!=typeof window,isBot=runningOnBrowser&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro|msn)bot|crawl|spider|yand|duckgo|Google (Page Speed|Web Preview)/i.test(navigator.userAgent)</script>
4<script async>let swUrl="/sw.js",swScope="/";(async()=>{if("localhost"!==location.hostname&&"serviceWorker"in navigator)try{let r=await navigator.serviceWorker.register(swUrl,{scope:swScope}),o=(console.log("[PWA]Service Worker registered:",r),null),t=!1;function e(){return new Promise(o=>{var e=r.waiting||r.installing||r.active;if(!e)return o(null);let t=new MessageChannel,n=(t.port1.onmessage=e=>{clearTimeout(n),o(e.data&&e.data.cacheVersion||null)},e.postMessage({action:"checkIdentifier"},[t.port2]),setTimeout(()=>{t.port1.close(),o(null)},1e3))})}function n(){t||e().then(e=>{e&&e!==o&&(console.log("[PWA] Cache version changed",o,"â",e,"auto refreshing..."),o=e,t=!0,setTimeout(()=>window.location.reload(),500))})}o=await e(),r.addEventListener("updatefound",()=>{let e=r.installing;e&&e.addEventListener("statechange",()=>{"installed"===e.state&&(console.log("[PWA] New SW installed (cache ready)"),n())})}),navigator.serviceWorker.addEventListener("controllerchange",()=>{console.log("[PWA] Controller changed"),n()})}catch(e){console.error("[PWA]Service Worker registration failed:",e)}})()</script>
4<script async>Matery.ctx.dnt||isBot||(()=>{var e=document.createElement("script"),t=(e.async=!0,e.dataset.cache=!0,e.dataset.websiteId="e532f69d-5606-40c9-9dbb-bfa04258384f",e.src="https://ana.17lai.site/script.js",document.getElementsByTagName("script")[0]);t.parentNode.insertBefore(e,t)})()</script>
4<noscript><style>#toc-aside{display:none!important}</style></noscript>
4<script>(()=>{try{var e=window.location.pathname.split("/").filter(Boolean);e.length&&0<=["zh-cn"].indexOf(e[0])&&e.shift();var t=("/"+e.join("/")).replace(/\/$/,"")+"/toc",a=localStorage.getItem(t),n=null!==a&&"hide"===JSON.parse(a);n&&document.documentElement.classList.add("toc-hidden")}catch(e){}})()</script>
4<script type=application/ld+json>{"@context":"https://schema.org","@graph":[{"@type":"Person","@id":"https://blog.17lai.site#person","name":"夿³ä¹ä¹¦"},{"@type":"Organization","@id":"https://blog.17lai.site#organization","name":"夿³ä¹ä¹¦","url":"https://blog.17lai.site"},{"@type":"WebSite","@id":"https://blog.17lai.site#website","url":"https://blog.17lai.site","name":"夿³ä¹ä¹¦","description":"~软件驱å¨ä¸ç~个人ç¬ç«ææ¯å客ï¼å
³äºLinux,弿ºï¼Nasï¼Dockerï¼åµå
¥å¼ï¼çè´¢ï¼å¥èº«ç主é¢ï¼","inLanguage":"zh-CN","publisher":{"@id":"https://blog.17lai.site#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://blog.17lai.site/search/?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}</script>
4<script>(()=>{try{var e,i,t,a,l,n,s,o,c=["zh-cn","en"],h="zh-cn",d=localStorage.getItem("wiki_lang");!d||c.indexOf(d)<0||/bot|crawl|spider|slurp|Googlebot|Baiduspider|bingbot|yandex|DuckDuck/i.test(navigator.userAgent)||(i="/"===(e=location.pathname).slice(-1),t=/\.html?$/i.test(e),!i&&!t)||d===((l=(a=e.split("/").filter(Boolean))[0])&&0<=c.indexOf(l)?l:h)||(n=a.slice(),0<=c.indexOf(n[0])&&n.shift(),t&&n.length<=1)||n.length&&0<=["assets","cheatsheets","css","doc","html-file","js","lib","libs","live2d","medias","medias_webp","admin","nav"].indexOf(n[0])||(o=""===(s=n.join("/"))?d===h?"/":"/"+d+"/":(d===h?"":"/"+d)+"/"+s+(i?"/":""),location.replace(o+location.search+location.hash))}catch(e){}})()</script>
4<meta name=generator content="Hexo 8.1.2"></head><style type=text/css>#loading-container{position:fixed;top:0;left:0;min-height:100vh;width:100vw;z-index:9999;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--loading-bg);text-align:center;-webkit-transition:opacity 1s ease;-moz-transition:opacity 1s ease;-o-transition:opacity 1s ease;transition:opacity 1s ease}.loading-image{width:120px;height:50px;transform:translate(-50%)}.loading-image div:nth-child(2){-webkit-animation:pacman-balls 1s linear 0s infinite;animation:pacman-balls 1s linear 0s infinite}.loading-image div:nth-child(3){-webkit-animation:pacman-balls 1s linear .33s infinite;animation:pacman-balls 1s linear .33s infinite}.loading-image div:nth-child(4){-webkit-animation:pacman-balls 1s linear .66s infinite;animation:pacman-balls 1s linear .66s infinite}.loading-image div:nth-child(5){-webkit-animation:pacman-balls 1s linear .99s infinite;animation:pacman-balls 1s linear .99s infinite}.loading-image div:first-of-type{width:0;height:0;border:25px solid var(--loading-accent);border-right-color:transparent;border-radius:25px;-webkit-animation:rotate_pacman_half_up .5s 0s infinite;animation:rotate_pacman_half_up .5s 0s infinite}.loading-image div:nth-child(2){width:0;height:0;border:25px solid var(--loading-accent);border-right-color:transparent;border-radius:25px;-webkit-animation:rotate_pacman_half_down .5s 0s infinite;animation:rotate_pacman_half_down .5s 0s infinite;margin-top:-50px}@-webkit-keyframes rotate_pacman_half_up{0%{transform:rotate(270deg)}50%{transform:rotate(1turn)}to{transform:rotate(270deg)}}@keyframes rotate_pacman_half_up{0%{transform:rotate(270deg)}50%{transform:rotate(1turn)}to{transform:rotate(270deg)}}@-webkit-keyframes rotate_pacman_half_down{0%{transform:rotate(90deg)}50%{transform:rotate(0)}to{transform:rotate(90deg)}}@keyframes rotate_pacman_half_down{0%{transform:rotate(90deg)}50%{transform:rotate(0)}to{transform:rotate(90deg)}}@-webkit-keyframes pacman-balls{75%{opacity:.7}to{transform:translate(-100px,-6.25px)}}@keyframes pacman-balls{75%{opacity:.7}to{transform:translate(-100px,-6.25px)}}.loading-image div:nth-child(3),.loading-image div:nth-child(4),.loading-image div:nth-child(5),.loading-image div:nth-child(6){background-color:var(--loading-accent);width:15px;height:15px;border-radius:100%;margin:2px;width:10px;height:10px;position:absolute;transform:translateY(-6.25px);top:25px;left:100px}.loading-text{margin-bottom:20vh;text-align:center;color:var(--loading-accent);font-size:2rem;box-sizing:border-box;padding:0 10px;text-shadow:0 2px 10px rgba(0,0,0,.2)}@media only screen and (max-width:500px){.loading-text{font-size:1.5rem}}.fadeout{opacity:0}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0)}}</style><div id=loading-container><p class=loading-text>å è½½ä¸...</p><div class=loading-image><div></div><div></div><div></div><div></div><div></div><div></div></div></div>
4<script>(()=>{let e=document.getElementById("loading-container");e&&"none"!==e.style.display&&setTimeout(function(){e.className="fadeout",setTimeout(function(){e.style.display="none"},500)},350)})()</script>
4<style type=text/css>#loading-box .loading-left-bg,#loading-box .loading-right-bg{position:fixed;z-index:1000;width:50%;height:100%;background-color:var(--loading-bg);transition:all .5s}#loading-box .loading-right-bg{right:0}#loading-box>.spinner-box{position:fixed;z-index:1001;display:flex;justify-content:center;align-items:center;width:100%;height:100vh}#loading-box .spinner-box .configure-border-1{position:absolute;padding:3px;width:115px;height:115px;background:var(--loading-accent);animation:configure-clockwise 3s ease-in-out 0s infinite alternate}#loading-box .spinner-box .configure-border-2{left:-115px;padding:3px;width:115px;height:115px;background:#3ff9dc;transform:rotate(45deg);animation:configure-xclockwise 3s ease-in-out 0s infinite alternate}#loading-box .spinner-box .loading-word{position:absolute;color:var(--loading-accent);font-size:.8rem}#loading-box .spinner-box .configure-core{width:100%;height:100%;background-color:var(--loading-bg)}div.loaded div.loading-left-bg{transform:translate(-100%,0)}div.loaded div.loading-right-bg{transform:translate(100%,0)}div.loaded div.spinner-box{display:none!important}@keyframes configure-clockwise{0%{transform:rotate(0)}25%{transform:rotate(90deg)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg)}100%{transform:rotate(360deg)}}@keyframes configure-xclockwise{0%{transform:rotate(45deg)}25%{transform:rotate(-45deg)}50%{transform:rotate(-135deg)}75%{transform:rotate(-225deg)}100%{transform:rotate(-315deg)}}</style><div id=loading-box><div class=loading-left-bg></div><div class=loading-right-bg></div><div class=spinner-box><div class=configure-border-1><div class=configure-core></div></div><div class=configure-border-2><div class=configure-core></div></div><div class=loading-word>å è½½ä¸...</div></div></div>
4<script>function initLoadingBox(){var o=document.getElementById("loading-box");"none"!==o.style.display&&(document.body.style.overflow="hidden",setTimeout(function(){document.body.style.overflow=""},600),o.classList.add("loaded"))}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",initLoadingBox):initLoadingBox()</script>
4<style type=text/css>#Loadanimation{background-color:var(--loading-bg);height:100%;width:100%;position:fixed;z-index:1;margin-top:0;top:0}#Loadanimation-center{width:100%;height:100%;position:relative}#Loadanimation-center-absolute{position:absolute;left:50%;top:50%;height:200px;width:200px;margin-top:-100px;margin-left:-100px}.xccx_object{-moz-border-radius:50% 50% 50% 50%;-webkit-border-radius:50% 50% 50% 50%;border-radius:50% 50% 50% 50%;position:absolute;border-left:5px solid var(--loading-accent);border-right:5px solid var(--loading-accent);border-top:5px solid transparent;border-bottom:5px solid transparent;-webkit-animation:animate 2.5s infinite;animation:animate 2.5s infinite}#xccx_one{left:75px;top:75px;width:50px;height:50px}#xccx_two{left:65px;top:65px;width:70px;height:70px;-webkit-animation-delay:.1s;animation-delay:.1s}#xccx_three{left:55px;top:55px;width:90px;height:90px;-webkit-animation-delay:.2s;animation-delay:.2s}#xccx_four{left:45px;top:45px;width:110px;height:110px;-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes animate{50%{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes animate{50%{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0)}}</style><div id=Loadanimation style=z-index:999999><div id=Loadanimation-center><div id=Loadanimation-center-absolute><div class=xccx_object id=xccx_four></div><div class=xccx_object id=xccx_three></div><div class=xccx_object id=xccx_two></div><div class=xccx_object id=xccx_one></div></div></div></div>
4<script>var _loadAnim=document.getElementById("Loadanimation");function fadeOut(n,i){n.style.transition="opacity "+i+"ms",n.style.opacity="0",setTimeout(function(){n.style.display="none"},i)}function initCircleLoading(){_loadAnim&&"none"!==_loadAnim.style.display&&fadeOut(_loadAnim,500)}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",initCircleLoading):initCircleLoading()</script>
4<script>(()=>{var e=localStorage.getItem("matery.loading"),o=null===e?"off":e,t={1:"loading-container",2:"loading-box",3:"Loadanimation"};Object.keys(t).forEach(function(e){var n=document.getElementById(t[e]);n&&(n.style.display=o===e?"":"none")}),"off"===o&&Object.keys(t).forEach(function(e){e=document.getElementById(t[e]);e&&(e.style.display="none")})})()</script>
4<body class="lazy-background layout-wiki"><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 no-lazy fetchpriority=high src=/favicon.webp width="108" height="108" style=width:40px;height:45px class=logo-img alt=LOGO> <span class=logo-span>夿³ä¹ä¹¦</span></a></div><a href=# data-target=mobile-nav class="sidenav-trigger button-collapse" aria-label=ä¾§è¾¹èå><i class="fas fa-bars"></i></a><ul class="right nav-menu"><li class="hide-on-med-and-down nav-item menu-2d-home"><a href=/ class=nav-link target=_self><i class="fas fa-home"></i> é¦é¡µ</a></li><li class="hide-on-med-and-down nav-item menu-2d-nav"><a href=https://nav.17lai.site/ rel="external nofollow noreferrer" class=nav-link target=_blank><i class="fas fa-suitcase"></i> 导èª</a></li><li class="hide-on-med-and-down nav-item menu-2d-sosuo"><a href=https://so.17lai.site/ rel="external nofollow noreferrer" class=nav-link target=_blank><i class="fas fa-mask"></i> SO</a></li><li class="hide-on-med-and-down nav-item menu-2d-media"><a href=# class=nav-link><i class="fas fa-music"></i> å¤åªä½ <i class="fas fa-chevron-down" aria-hidden=true></i></a><ul class="sub-nav menus_item_child"><li class=menu-2d-musics><a class=nav-link href=/musics/ target=_self><i class="fas fa-music fa-fw"></i> é³ä¹</a></li><li class=menu-2d-galleries><a class=nav-link href=/galleries/ target=_self><i class="fas fa-image fa-fw"></i> ç¸å</a></li><li class=menu-2d-movies><a class=nav-link href=/movies/ target=_self><i class="fas fa-film fa-fw"></i> è§é¢</a></li><li class=menu-2d-musicplayer><a class=nav-link href=https://musicplayer.17lai.site/ rel="external nofollow noreferrer" target=_self><i class="fas fa-music fa-fw"></i> å¨çº¿äºé³ä¹</a></li><li class=menu-2d-music><a class=nav-link href=https://music.17lai.site/ rel="external nofollow noreferrer" target=_self><i class="fas fa-music fa-fw"></i> é³ä¹ææ¾å¨</a></li></ul></li><li class="hide-on-med-and-down nav-item menu-2d-posts"><a href=# class=nav-link><i class="fas fa-folder-plus"></i> æç« <i class="fas fa-chevron-down" aria-hidden=true></i></a><ul class="sub-nav menus_item_child"><li class=menu-2d-tags><a class=nav-link href=/tags/ target=_self><i class="fas fa-tags fa-fw"></i> æ ç¾</a></li><li class=menu-2d-categories><a class=nav-link href=/categories/ target=_self><i class="fas fa-bookmark fa-fw"></i> åç±»</a></li><li class=menu-2d-archives><a class=nav-link href=/archives/ target=_self><i class="fas fa-archive fa-fw"></i> 彿¡£</a></li></ul></li><li class="hide-on-med-and-down nav-item menu-2d-docs"><a href=# class=nav-link><i class="fas fa-book"></i> ææ¡£ <i class="fas fa-chevron-down" aria-hidden=true></i></a><ul class="sub-nav menus_item_child"><li class=menu-2d-doc><a class=nav-link href=/docs/ target=_self><i class="fas fa-book fa-fw"></i> ææ¡£</a></li><li class=menu-2d-api><a class=nav-link href=/api/ target=_self><i class="fas fa-code fa-fw"></i> API</a></li><li class=menu-2d-tutorial><a class=nav-link href=/tutorial/ target=_self><i class="fas fa-graduation-cap fa-fw"></i> æç¨</a></li><li class=menu-2d-dev><a class=nav-link href=/dev/ target=_self><i class="fas fa-code-branch fa-fw"></i> dev</a></li></ul></li><li class="hide-on-med-and-down nav-item menu-2d-toolbox"><a href=# class=nav-link><i class="fas fa-toolbox"></i> å·¥å
· <i class="fas fa-chevron-down" aria-hidden=true></i></a><ul class="sub-nav menus_item_child"><li class=menu-2d-tg><a class=nav-link href=https://t.me/chat_17laisite rel="external nofollow noreferrer" target=_self><i class="fab fa-telegram-plane fa-fw"></i> TG交æµç¾¤</a></li><li class=menu-2d-linuxtool><a class=nav-link href=https://linux-command.17lai.site/ rel="external nofollow noreferrer" target=_self><i class="fas fa-terminal fa-fw"></i> Linuxå½ä»¤</a></li><li class=menu-2d-cheatsheets><a class=nav-link href=/dash/ target=_self><i class="fas fa-laptop-code fa-fw"></i> åç§å¿«æ¥è¡¨</a></li><li class=menu-2d-onebox><a class=nav-link href=https://alist.17lai.site/ rel="external nofollow noreferrer" target=_self><i class="fas fa-cloud fa-fw"></i> ç§äººç½ç</a></li><li class=menu-2d-staticnav><a class=nav-link href=/nav/ target=_self><i class="fas fa-tools fa-fw"></i> ç½å导èª</a></li></ul></li><li class="hide-on-med-and-down nav-item menu-2d-mirror"><a href=# class=nav-link><i class="fas fa-link"></i> éå <i class="fas fa-chevron-down" aria-hidden=true></i></a><ul class="sub-nav menus_item_child"><li class=menu-2d-mirror-cf><a class=nav-link href=https://cfblog.17lai.site/ target=_self><i class="fas fa-link fa-fw"></i> CFéå</a></li><li class=menu-2d-mirror-vps20><a class=nav-link href=https://v20blog.17lai.site/ target=_self><i class="fas fa-link fa-fw"></i> VPSéå</a></li><li class=menu-2d-mirror-main><a class=nav-link href=https://blog.17lai.site/ target=_self><i class="fas fa-link fa-fw"></i> 主ç«</a></li></ul></li><li class="hide-on-med-and-down nav-item menu-2d-friends"><a href=/friends/ class=nav-link target=_self><i class="fas fa-link"></i> åæ
龿¥</a></li><li class="hide-on-med-and-down nav-item menu-2d-msg"><a href=/msg/ class=nav-link target=_self><i class="fas fa-comment-alt"></i> çè¨</a></li><li class="hide-on-med-and-down nav-item menu-2d-about"><a href=/about/ class=nav-link target=_self><i class="fas fa-user-circle"></i> å
³äº</a></li><li class="nav-item menu-2d-search"><a href=javascript:; rel="external nofollow noreferrer" class=nav-link data-umami-event-search="search modal click" onclick=openSearchModal()>
4<i id=searchIcon class="fas fa-search" title=æç´¢></i></a></li><li class="nav-item menu-2d-dark" data-umami-event-color="color toggle" id=color-toggle-btn><a class=nav-link target=_self href=javascript:; rel="external nofollow noreferrer" aria-label=é¢è²åæ¢> <i class="fas fa-sun" id=color-toggle-icon></i> </a></li></ul><div id=mobile-nav class="side-nav sidenav"><div class="mobile-head bg-color"><div><img fetchpriority=high src=/favicon.webp width="108" height="108" data-lazy-src-light="/medias_webp/loading2.svg" data-lazy-src-dark="/medias_webp/loading2-dark.svg" loading="lazy" lazyload style=width:45px;height:45px class="logo-img circle responsive-img" alt=LOGO><div class=logo-name>夿³ä¹ä¹¦</div><div class=logo-desc>~软件驱å¨ä¸ç~个人ç¬ç«ææ¯å客ï¼å
³äºLinux,弿ºï¼Nasï¼Dockerï¼åµå
¥å¼ï¼çè´¢ï¼å¥èº«ç主é¢ï¼</div></div></div><ul class="menu-list mobile-menu-list"><li><a href=/ class="waves-effect waves-light sidenav-close" target=_self><i class="fa-fw fas fa-home"></i> <span class=menu-text>é¦é¡µ</span></a></li><li><a href=https://nav.17lai.site/ rel="external nofollow noreferrer" class="waves-effect waves-light sidenav-close" target=_blank><i class="fa-fw fas fa-suitcase"></i> <span class=menu-text>导èª</span></a></li><li><a href=https://so.17lai.site/ rel="external nofollow noreferrer" class="waves-effect waves-light sidenav-close" target=_blank><i class="fa-fw fas fa-mask"></i> <span class=menu-text>SO</span></a></li><li><ul class="collapsible collapsible-accordion"><li><a class=collapsible-header href=# onclick=return!1 tabindex=0><i class="fa-fw fas fa-music"></i> <span class=menu-text>å¤åªä½</span></a><div class=collapsible-body><ul><li><a href=/musics/ class=sidenav-close target=_self><i class="fas fa-music fa-fw"></i> <span class=menu-text>é³ä¹</span></a></li><li><a href=/galleries/ class=sidenav-close target=_self><i class="fas fa-image fa-fw"></i> <span class=menu-text>ç¸å</span></a></li><li><a href=/movies/ class=sidenav-close target=_self><i class="fas fa-film fa-fw"></i> <span class=menu-text>è§é¢</span></a></li><li><a href=https://musicplayer.17lai.site/ rel="external nofollow noreferrer" class=sidenav-close target=_self><i class="fas fa-music fa-fw"></i> <span class=menu-text>å¨çº¿äºé³ä¹</span></a></li><li><a href=https://music.17lai.site/ rel="external nofollow noreferrer" class=sidenav-close target=_self><i class="fas fa-music fa-fw"></i> <span class=menu-text>é³ä¹ææ¾å¨</span></a></li></ul></div></li></ul></li><li><ul class="collapsible collapsible-accordion"><li><a class=collapsible-header href=# onclick=return!1 tabindex=0><i class="fa-fw fas fa-folder-plus"></i> <span class=menu-text>æç« </span></a><div class=collapsible-body><ul><li><a href=/tags/ class=sidenav-close target=_self><i class="fas fa-tags fa-fw"></i> <span class=menu-text>æ ç¾</span></a></li><li><a href=/categories/ class=sidenav-close target=_self><i class="fas fa-bookmark fa-fw"></i> <span class=menu-text>åç±»</span></a></li><li><a href=/archives/ class=sidenav-close target=_self><i class="fas fa-archive fa-fw"></i> <span class=menu-text>彿¡£</span></a></li></ul></div></li></ul></li><li><ul class="collapsible collapsible-accordion"><li><a class=collapsible-header href=# onclick=return!1 tabindex=0><i class="fa-fw fas fa-book"></i> <span class=menu-text>ææ¡£</span></a><div class=collapsible-body><ul><li><a href=/docs/ class=sidenav-close target=_self><i class="fas fa-book fa-fw"></i> <span class=menu-text>ææ¡£</span></a></li><li><a href=/api/ class=sidenav-close target=_self><i class="fas fa-code fa-fw"></i> <span class=menu-text>API</span></a></li><li><a href=/tutorial/ class=sidenav-close target=_self><i class="fas fa-graduation-cap fa-fw"></i> <span class=menu-text>æç¨</span></a></li><li><a href=/dev/ class=sidenav-close target=_self><i class="fas fa-code-branch fa-fw"></i> <span class=menu-text>dev</span></a></li></ul></div></li></ul></li><li><ul class="collapsible collapsible-accordion"><li><a class=collapsible-header href=# onclick=return!1 tabindex=0><i class="fa-fw fas fa-toolbox"></i> <span class=menu-text>å·¥å
·</span></a><div class=collapsible-body><ul><li><a href=https://t.me/chat_17laisite rel="external nofollow noreferrer" class=sidenav-close target=_self><i class="fab fa-telegram-plane fa-fw"></i> <span class=menu-text>TG交æµç¾¤</span></a></li><li><a href=https://linux-command.17lai.site/ rel="external nofollow noreferrer" class=sidenav-close target=_self><i class="fas fa-terminal fa-fw"></i> <span class=menu-text>
4Linuxå½ä»¤</span></a></li><li><a href=/dash/ class=sidenav-close target=_self><i class="fas fa-laptop-code fa-fw"></i> <span class=menu-text>åç§å¿«æ¥è¡¨</span></a></li><li><a href=https://alist.17lai.site/ rel="external nofollow noreferrer" class=sidenav-close target=_self><i class="fas fa-cloud fa-fw"></i> <span class=menu-text>ç§äººç½ç</span></a></li><li><a href=/nav/ class=sidenav-close target=_self><i class="fas fa-tools fa-fw"></i> <span class=menu-text>ç½å导èª</span></a></li></ul></div></li></ul></li><li><ul class="collapsible collapsible-accordion"><li><a class=collapsible-header href=# onclick=return!1 tabindex=0><i class="fa-fw fas fa-link"></i> <span class=menu-text>éå</span></a><div class=collapsible-body><ul><li><a href=https://cfblog.17lai.site/ class=sidenav-close target=_self><i class="fas fa-link fa-fw"></i> <span class=menu-text>CFéå</span></a></li><li><a href=https://v20blog.17lai.site/ class=sidenav-close target=_self><i class="fas fa-link fa-fw"></i> <span class=menu-text>VPSéå</span></a></li><li><a href=https://blog.17lai.site/ class=sidenav-close target=_self><i class="fas fa-link fa-fw"></i> <span class=menu-text>主ç«</span></a></li></ul></div></li></ul></li><li><a href=/friends/ class="waves-effect waves-light sidenav-close" target=_self><i class="fa-fw fas fa-link"></i> <span class=menu-text>åæ
龿¥</span></a></li><li><a href=/msg/ class="waves-effect waves-light sidenav-close" target=_self><i class="fa-fw fas fa-comment-alt"></i> <span class=menu-text>çè¨</span></a></li><li><a href=/about/ class="waves-effect waves-light sidenav-close" target=_self><i class="fa-fw fas fa-user-circle"></i> <span class=menu-text>å
³äº</span></a></li></ul></div></div></nav></header><div id=banner false class="bg-cover pd-header about-cover"><div class=bg-cover-before></div><div class=container><div class=row><div class="col s10 offset-s1 m8 offset-m2 l8 offset-l2"><div class=brand><div class="title center-align"><h2 id=post-title class="description center-align post-title">ææ¡£é¦é¡µ <span class="typed-cursor h2 typed-cursor--blink" aria-hidden=true></span></h2></div><div class="description center-align">~软件驱å¨ä¸ç~个人ç¬ç«ææ¯å客ï¼å
³äºLinux,弿ºï¼Nasï¼Dockerï¼åµå
¥å¼ï¼çè´¢ï¼å¥èº«ç主é¢ï¼</div></div></div></div></div><div class=bg-cover-after></div></div><main class="post-container content wiki-main"><div class="row wiki-layout"><aside class="col s12 l2"><div class=wiki-sidebar><div class=wiki-sidebar-inner><strong class=wiki-nav-title>å¼å§ä½¿ç¨</strong><a href=/docs/ class="wiki-nav-link current">æ¦è¿°</a><a class='wiki-nav-link' href='/docs/setup'>建ç«</a><a class='wiki-nav-link' href='/docs/writing'>åä½</a><a class='wiki-nav-link' href='/docs/migration'>è¿ç§»</a><strong class=wiki-nav-title>åºç¡ç¨æ³</strong><a class='wiki-nav-link' href='/docs/commands'>å½ä»¤</a><a class='wiki-nav-link' href='/docs/configuration'>é
ç½®</a><a class='wiki-nav-link' href='/docs/front-matter'>Front-matter</a><a class='wiki-nav-link' href='/docs/permalinks'>æ°¸ä¹
龿¥</a><a class='wiki-nav-link' href='/docs/asset-folders'>èµæºæä»¶å¤¹</a><a class='wiki-nav-link' href='/docs/data-files'>æ°æ®æä»¶</a><a class='wiki-nav-link' href='/docs/server'>æå¡å¨</a><a class='wiki-nav-link' href='/docs/generating'>çæå¨</a><a class='wiki-nav-link' href='/docs/syntax-highlight'>代ç é«äº®</a><a class='wiki-nav-link' href='/docs/tag-plugins'>æ ç¾æä»¶</a><a class='wiki-nav-link' href='/docs/helpers'>è¾
å©å½æ°</a><a class='wiki-nav-link' href='/docs/templates'>模æ¿</a><a class='wiki-nav-link' href='/docs/variables'>åé</a><strong class=wiki-nav-title>å½é
åä¸é¨ç½²</strong><a class='wiki-nav-link' href='/docs/internationalization'>å½é
å</a><a class='wiki-nav-link' href='/docs/one-command-deployment'>ä¸é®é¨ç½²</a><a class='wiki-nav-link' href='/docs/github-pages'>GitHub Pages</a><a class='wiki-nav-link' href='/docs/gitlab-pages'>GitLab Pages</a><strong class=wiki-nav-title>主é¢ä¸æä»¶</strong><a class='wiki-nav-link' href='/docs/themes'>主é¢</a><a class='wiki-nav-link' href='/docs/plugins'>æä»¶</a><a class='wiki-nav-link' href='/docs/contributing'>è´¡ç®</a><a class='wiki-nav-link' href='/docs/troubleshooting'>é®é¢ææ¥</a></div></div></aside><div class="col s12 l8 wiki-content-wrap" id=wiki-main-content><div class="card wiki-card"><div class="card-content article-card-content wiki-content markdown-body" id=articleContent data-pagefind-body><h1 id=ææ¡£>ææ¡£</h1><p>欢è¿ä½¿ç¨ææ¡£ç³»ç»ãè¿æ¯ç®ä»é¡µï¼ç¬¬ä¸ä¸ªç« èï¼ã</p>
4<script data-pjax src="/libs/hbe/hbe-bundle.js?v=13.22"></script>
4<link href="/libs/hbe/hbe-style.css?v=13.22" rel=stylesheet type=text/css></div></div><article id="comments" lazyload><div class="card waline-card" data-aos=fade-up><div class=comment_headling style=font-size:20px;font-weight:700;position:relative;padding-left:20px;top:15px;padding-bottom:5px><i class="fas fa-comments fa-fw" aria-hidden=true></i> <span>è¯è®º</span></div><div class="center hvcenter loading-small" id=loading_data><i class="fas fa-spinner fa-pulse"></i> <span>æ°æ®å è½½ä¸ ...</span></div><div id=waline class=card-content style=display:grid></div></div>
4<script>(()=>{var e=document.getElementById("to_comment");e&&(e.style.display="block")})()</script>
4</article></div><aside class="col l2 hide-on-med-and-down" id=wiki-toc-aside><div class=wiki-toc><div id=wiki-toc class=tocbot-list></div></div></aside></div></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>2020-2026</span> <a href=/about target=_blank>夿³ä¹ä¹¦</a> | Powered by <a href=https://hexo.io/ rel="external nofollow noreferrer" target=_blank>Hexo</a> | Theme <a href=https://github.com/blinkfox/hexo-theme-matery rel="external nofollow noreferrer" target=_blank>Matery</a> v2.0.0<br> <i class="fas fa-chart-area"></i> ç«ç¹æ»åæ°: <span class=white-color>1327k</span> <span id=busuanzi_container_site_pv style=display:none> | <i class="far fa-eye"></i> æ»è®¿é®é: <span id=busuanzi_value_site_pv class=white-color></span><i id=busuanzi_loading_icon_site_pv class="fas fa-sync fa-spin"></i> </span><span id=busuanzi_container_site_uv style=display:none> | <i class="fas fa-users"></i> æ»è®¿é®äººæ°: <span id=busuanzi_value_site_uv class=white-color></span><i id=busuanzi_loading_icon_site_uv class="fas fa-sync fa-spin"></i></span><br><span id=sitetime>Loading ...</span>
4<script>var calcSiteTime=function(){var e=new Date,t="2020",n=e.getFullYear(),o=e.getMonth()+1,a=e.getDate(),r=e.getHours(),i=e.getMinutes(),e=e.getSeconds(),s=Date.UTC(t,"6","28","0","0","0"),o=Date.UTC(n,o,a,r,i,e)-s,a=Math.floor(o/31536e6),r=Math.floor(o/864e5-365*a),i="zh-cn";t===String(n)?(document.getElementById("year").innerHTML=n,e="This site has been running for "+r+" days",0<=i.toLowerCase().indexOf("zh")&&(e="zh-hk"===i.toLowerCase()||"zh-tw"===i.toLowerCase()?"æ¬ç«å·²éè¡ "+r+" 天":"æ¬ç«å·²è¿è¡ "+r+" 天"),document.getElementById("sitetime").innerHTML=e):(document.getElementById("year").innerHTML=t+" - "+n,s="This site has been running for "+a+" years and "+r+" days",0<=i.toLowerCase().indexOf("zh")&&(s="zh-hk"===i.toLowerCase()||"zh-tw"===i.toLowerCase()?"æ¬ç«å·²éè¡ "+a+" å¹´ "+r+" 天":"æ¬ç«å·²è¿è¡ "+a+" å¹´ "+r+" 天"),document.getElementById("sitetime").innerHTML=s)};calcSiteTime()</script>
4<br></div><div class="col s12 m4 l4 social-link social-statis"><a href=https://github.com/appotry rel="external nofollow noreferrer" class=tooltipped target=_blank aria-label=è®¿é®æçGitHub data-tooltip=è®¿é®æçGitHub data-position=top data-delay=50><i class="fab fa-github fa-fw"></i> </a><a href=https://hub.docker.com/u/bloodstar rel="external nofollow noreferrer" class=tooltipped target=_blank aria-label=è®¿é®æçDockerHub data-tooltip=è®¿é®æçDockerHub data-position=top data-delay=50><i class="fab fa-docker fa-fw"></i> </a><a href=mailto:[email protected] rel="external nofollow noreferrer" class=tooltipped target=_blank aria-label=é®ä»¶èç³»æ data-tooltip=é®ä»¶èç³»æ data-position=top data-delay=50><i class="fas fa-envelope-open fa-fw"></i> </a><a href=/atom.xml class=tooltipped target=_blank aria-label="RSS 订é
" data-tooltip="RSS 订é
" data-position=top data-delay=50><i class="fas fa-rss fa-fw"></i></a></div></div></footer><div class=progress-bar></div><div id=searchModal class="modal search-modal" popover><div class=search-header><span class=search-icon id=searchEngineBtn title=忢æç´¢å¼æ><i class="fas fa-search" id=searchEngineIcon></i> <i class="fas fa-caret-down" id=searchEngineCaret></i><ul class="dropdown-content search-engine-menu" id=searchEngineMenu><li data-engine=local><a><i class="fas fa-search"></i> æ¬å°æç´¢</a></li><li data-engine=algolia><a><i class="fab fa-algolia"></i> Algolia æç´¢</a></li><li data-engine=pagefind><a><i class="fas fa-file-alt"></i> Pagefind æç´¢</a></li></ul></span><div class=search-input-container><input type=search id=searchInput class=search-input autocomplete=off autocapitalize=off maxlength=80 spellcheck=false placeholder="请è¾å
¥æç´¢çå
³é®å (Ctrl + K)"></div><span class=popup-btn-close role=button onclick=closeSearchModal()><i class="fas fa-times-circle"></i></span></div><div class=search-result-container id=searchResult><div class=search-result-icon><i class="fas fa-search fa-5x"></i></div></div></div><div class=floating-col-container><div class=row><div class="col s12 floating-col-item"><div class=floating-panel-wrap id=floating-panel-wrap><div id=floating-panel class=floating-panel style=display:none><div class=fp-header><span class=fp-title>å好设置</span> <span class=fp-close id=fp-close>â</span></div><div class=fp-div></div><div class=fp-body><div class=fp-sec><div class=fp-label-row><span class=fp-label>åä½å¤§å°</span> <span class=fp-reset id=fp-font-reset>⺠æ¢å¤é»è®¤åå·</span></div><div class=fp-font-row><button type=button class=fp-btn id=fp-font-minus>Aâ</button> <button type=button class="fp-btn fp-cur" id=fp-font-cur>100%</button> <button type=button class=fp-btn id=fp-font-plus>A+</button></div></div><div class=fp-div></div><div class="fp-sec fp-row-inline" id=fp-lang-row><span class=fp-label>è¯è¨</span> <select id=fp-lang-select class="fp-select fp-lang-select-wide"><option value=zh-cn data-flag=ð¨ð³>ð¨ð³ ç®ä½ä¸æ</option><option value=en data-flag=ð¬ð§>ð¬ð§ English</option></select><div class=fp-seg id=fp-lang><span class=fp-seg-item data-lang=simp>ç®</span> <span class=fp-seg-item data-lang=trad>ç¹</span></div></div><div class=fp-div></div><div class="fp-sec fp-row-inline"><span class=fp-label>æ¾ç¤ºæ¨¡å¼</span><div class=fp-seg id=fp-theme><span class=fp-seg-item data-theme=light><i class="fas fa-sun"></i> 亮</span> <span class=fp-seg-item data-theme=auto><i class="fas fa-adjust"></i> èªå¨</span> <span class=fp-seg-item data-theme=dark><i class="fas fa-moon"></i> æ</span></div></div><div class=fp-div></div><div class=fp-sec><div class=fp-label-row><span class=fp-label>页é¢ç¹æ</span><div class="fp-seg fp-seg-sm" id=fp-effect-page><span class=fp-seg-item data-effect=off>å
³é</span> <span class=fp-seg-item data-effect=random><i class="fas fa-random"></i> éæº</span></div></div><div class=fp-fx-list id=fp-fx-list-page></div><div class="fp-label-row fp-label-gap"><span class=fp-label>é¼ æ ç¹æ</span><div class="fp-seg fp-seg-sm" id=fp-effect-mouse><span class=fp-seg-item data-effect=off>å
³é</span> <span class=fp-seg-item data-effect=random><i class="fas fa-random"></i> éæº</span></div></div><div class=fp-fx-list id=fp-fx-list-mouse></div></div><div class=fp-div></div><div class=fp-sec><div class=fp-label>ç½é¡µèæ¯</div><div class=fp-seg id=fp-bg><span class=fp-seg-item data-bg=off>å
³é</span> <span class=fp-seg-item data-bg=image>å¾ç</span> <span class=fp-seg-item data-bg=video>è§é¢</span></div><div class="fp-label fp-label-gap">å è½½å¨ç»</div><div class=fp-seg id=fp-loading><span class=fp-seg-item data-bg=off>å
³é</span> <span class=fp-seg-item data-bg=1>åè±è±</span> <span class=fp-seg-item data-bg=2>æ¹å</span> <span class=fp-seg-item data-bg=3>åå</span></div></div></div></div><div id=fp-toggle data-umami-event-panel="floating panel toggle"><a class="btn-floating btn-large bg-color" href=javascript:; rel="external nofollow noreferrer" title=å好设置><i class="fas fa-cog"></i></a></div></div></div><div class="col s12 floating-col-item"><div id=floating-toc-btn data-umami-event-tocbtn="toc btn click" class=hide-on-med-and-down style=display:none><a class="btn-floating btn-large bg-color" href=javascript:; rel="external nofollow noreferrer" title=æ¾ç¤º/éèç®å½><i class="fas fa-list-ul"></i></a></div></div><div class="col s12 floating-col-item"><div id=to_comment data-umami-event-commentbtn="comment btn click" class=comment-scroll style=display:none><a class="btn-floating btn-large waves-effect waves-light" href=javascript:; title=ç´è¾¾è¯è®º><i class="fas fa-comments"></i></a></div></div><div class="col s12 floating-col-item"><div id=backTop data-umami-event-backtop="backtop click" class=top-scroll><a class="btn-floating btn-large waves-effect waves-light" href=# title=åå°é¡¶é¨><i class="fas fa-arrow-up"></i></a></div></div></div></div>
4<script>(()=>{var a,e,c=document.getElementById("to_comment"),t=(c&&document.getElementById("comments")?c.style.display="block":c&&((a=new MutationObserver(function(e){for(var t=0;t<e.length;t++)if(e[t].addedNodes.length)for(var n=0;n<e[t].addedNodes.length;n++){var o=e[t].addedNodes[n];if(1===o.nodeType&&("comments"===o.id||o.querySelector&&o.querySelector("#comments")))return c.style.display="block",void a.disconnect()}})).observe(document.body,{childList:!0,subtree:!0}),setTimeout(function(){a.disconnect()},5e3)),document.getElementById("floating-toc-btn"));t&&(document.getElementById("toc-content")||document.getElementById("aside-container")||document.getElementById("wiki-toc-aside"))?t.style.display="block":t&&((e=new MutationObserver(function(){(document.getElementById("toc-content")||document.getElementById("aside-container")||document.getElementById("wiki-toc-aside"))&&(t.style.display="block",e.disconnect())})).observe(document.body,{childList:!0,subtree:!0}),setTimeout(function(){e.disconnect()},5e3))})(),(()=>{var d,r,t,n,u,o,a,c=document.getElementById("floating-panel-wrap"),l=document.getElementById("floating-panel"),e=document.getElementById("fp-toggle");function i(){var e=parseFloat(d(t));return isNaN(e)?1:e}function f(e){e=Math.min(1.3,Math.max(.85,Math.round(100*e)/100)),document.documentElement.style.setProperty("--font-scale",String(e)),r(t,String(e)),n&&(n.textContent=Math.round(100*e)+"%"),s()}function s(){"undefined"!=typeof Matery&&Matery.events&&"function"==typeof Matery.events.refresh&&Matery.events.refresh()}function g(o,e,t,n){var a,c=document.getElementById(e),l=window.Matery&&window.Matery.effects,i=l&&l[o];c&&i&&i.available&&(Object.keys(i.available).forEach(function(e){var t=document.createElement("span"),n=(t.className="fp-fx-tag",t.setAttribute("data-effect",e),t.setAttribute("data-group",o),"panel.fx_"+e);t.textContent=u[n]||i.available[e].label||e,c.appendChild(t)}),document.querySelectorAll("#"+t+" .fp-seg-item, #"+e+" .fp-fx-tag").forEach(function(e){e.__fpBound||(e.__fpBound=!0,e.addEventListener("click",function(){r(n,e.getAttribute("data-effect")),location.reload()}))}),"off"===(a=d(n)||i.default||"off")||"random"===a||i.available[a]||(a="off"),document.querySelectorAll("#"+t+" .fp-seg-item, #"+e+" .fp-fx-tag").forEach(function(e){e.classList.toggle("fp-seg-active",e.getAttribute("data-effect")===a)}))}function m(){g("page","fp-fx-list-page","fp-effect-page","matery.effect.page"),g("mouse","fp-fx-list-mouse","fp-effect-mouse","matery.effect.mouse")}function y(e,t,n){var o,e=document.getElementById(e);e&&(o=d(t)||n,e.querySelectorAll(".fp-seg-item").forEach(function(e){e.classList.toggle("fp-seg-active",e.getAttribute("data-bg")===o),e.__bgBound||(e.__bgBound=!0,e.addEventListener("click",function(){e.classList.contains("fp-seg-disabled")||(r(t,e.getAttribute("data-bg")),location.reload())}))}))}function p(){y("fp-bg","matery.bg","off"),y("fp-loading","matery.loading","off")}function E(t){document.querySelectorAll("#fp-theme .fp-seg-item").forEach(function(e){e.classList.toggle("fp-seg-active",e.getAttribute("data-theme")===t)})}function b(n){document.querySelectorAll("#fp-lang .fp-seg-item").forEach(function(e){var t="trad"===e.getAttribute("data-lang");e.classList.toggle("fp-seg-active",1===n==t)})}function v(){var t,e=document.getElementById("fp-lang-row");e&&(t=e.scrollWidth>e.clientWidth+2,Array.prototype.forEach.call(a.options,function(e){e.text=t?e.getAttribute("data-flag")||e.text:e.getAttribute("data-label")}))}c&&l&&e&&(d=function(e){try{return localStorage.getItem(e)}catch(e){return null}},r=function(e,t){try{localStorage.setItem(e,t)}catch(e){}},e.addEventListener("click",function(e){e.preventDefault(),l.style.position="fixed",l.style.display="none"===l.style.display?"flex":"none"}),document.getElementById("fp-close").addEventListener("click",function(){l.style.display="none"}),document.addEventListener("click",function(e){"none"===l.style.display||c.contains(e.target)||(l.style.display="none")}),t="matery.font-scale",n=document.getElementById("fp-font-cur"),1!==(e=i())?f(e):n&&(n.textContent="100%"),document.getElementById("fp-font-minus").addEventListener("click",function(){f(i()-.1)}),document.getElementById("fp-font-plus").addEventListener("click",function(){f(i()+.1)}),document.getElementById("fp-font-reset").addEventListener("click",function(){r(t,"1"),document.documentElement.style.setProperty("--font-scale","1"),n&&(n.textContent="100%"),s()}),u={"panel.fx_sakura":"樱è±","panel.fx_ripples":"æ°´æ³¢","panel.fx_leaf":"è½å¶","panel.fx_snowdown":"é£éª","panel.fx_snowflake":"éªè±","panel.fx_buble":"åæ³¡","panel.fx_canvas_nest":"ç½ç»","panel.fx_ribbon":"彩带","panel.fx_ribbon_dynamic":"卿彩另","panel.fx_clicklove":"ç±å¿","panel.fx_popupText":"å¼¹åºæå","panel.fx_mouseStar":"ææ","panel.fx_fireworks":"çç¸"},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",m):m(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",p):p(),o="Matery_Color_Scheme",document.querySelectorAll("#fp-theme .fp-seg-item").forEach(function(n){n.addEventListener("click",function(){var e=n.getAttribute("data-theme");if("auto"===e){document.documentElement.removeAttribute("data-user-color-scheme");try{Matery.utils.removeLS(o)}catch(e){}document.documentElement.setAttribute("data-user-color-scheme","auto");try{Matery.utils.setLS(o,"auto")}catch(e){}}else{document.documentElement.setAttribute("data-user-color-scheme",e);try{Matery.utils.setLS(o,e)}catch(e){}}E(e);var t=document.getElementById("color-toggle-icon");t&&(t.className="fas fa-"+("dark"===e?"sun":"moon"))})}),E((()=>{var e=document.documentElement.getAttribute("data-user-color-scheme");if(e&&"auto"!==e)return e;try{var t=Matery.utils.getLS(o);if(t)return t}catch(e){}return"light"})()),document.querySelectorAll("#fp-lang .fp-seg-item").forEach(function(n){n.addEventListener("click",function(e){e.stopPropagation();var e="trad"===n.getAttribute("data-lang")?1:2,t=window.Matery&&Matery.plugins&&Matery.plugins.languageToggle;t&&"function"==typeof t.setEncoding&&t.setEncoding(e),b(e)})}),b((()=>{try{if(window.Matery&&Matery.plugins&&Matery.plugins.languageToggle&&"function"==typeof Matery.plugins.languageToggle.getEncoding)return Matery.plugins.languageToggle.getEncoding()}catch(e){}return 2})()),a=document.getElementById("fp-lang-select"))&&(Array.prototype.forEach.call(a.options,function(e){e.setAttribute("data-label",e.text)}),v(),e=document.getElementById("fp-toggle"))&&e.addEventListener("click",function(){setTimeout(v,80)})})()</script>
4<script>window.MATERY_LANG={enable:!0,default_lang:"zh-cn",fallback_lang:"en",langs:["zh-cn","en"],lang_meta:{"zh-cn":{name:"ç®ä½ä¸æ",flag:"ð¨ð³"},en:{name:"English",flag:"ð¬ð§"}}}</script>
4<script>window.WIKI_CONFIG=window.WIKI_CONFIG||window.MATERY_LANG</script>
4<script>window.MATERY_I18N={codeLang:"代ç è¯è¨",codeCopy:"å¤å¶ä»£ç ",codeShrink:"æ¶èµ·ä»£ç ",codeFullscreen:"å
¨å±æ¾ç¤º",codeExpand:"å±å¼å®æ´ä»£ç ",copySuccess:"å¤å¶æå",copyFail:"å¤å¶å¤±è´¥",searchLoadFail:"æç´¢æ°æ®å 载失败",searchFail:"æç´¢å¤±è´¥ï¼è¯·éè¯",searchPagefindFail:"Pagefind ç´¢å¼æªçææå 载失败",searchNoResult:"æªæ¾å°ç¸å
³ç»æ",searchResultCount:"%s æ¡ç»æ",searchShowMore:"æ¾ç¤ºæ´å¤ï¼%s æ¡ï¼",langDetectPrompt:"æ£æµå°æ¨çæµè§å¨è¯è¨ä¸º %sï¼æ¯å¦åæ¢å°å¯¹åºè¯è¨çæ¬ï¼",imgRetry:"éæ°å è½½å¾ç",hbeWrongPass:"æ±æï¼å¯ç 䏿£ç¡®ï¼è¯·éè¯ã"}</script>
4<script defer=defer src="/js/wiki.js?v=13.22"></script>
4<script src="/js/ana.js?v=13.22" async></script>
4<script type=module async>// var pagePath = window.location.pathname.replace(/\/$/,'') + '/'; 5 import { pageviewCount } from "/libs/waline/pageview.js?v=3.15.2"; 6 /** 7  *Â æ£æµå¯¹è±¡æ¯å¦æ¯ç©ºå¯¹è±¡(ä¸å å«ä»»ä½å¯è¯»å±æ§)ã 8  *Â æ¹æ³åªæ¢æ£æµå¯¹è±¡æ¬èº«ç屿§ï¼ä¸æ£æµä»ååç»§æ¿ç屿§ã 9 * nullä¸undefinedåºå«ï¼ 10 * 对已声æä½æªåå§åçåæªå£°æçåéæ§è¡typeofï¼é½è¿å "undefined" ã 11 * null表示ä¸ä¸ªç©ºå¯¹è±¡æéï¼typeofæä½ä¼è¿å "object" ã*/ 12 function isOwnEmpty(obj) { 13 for (var name in obj) { 14 if (obj.hasOwnProperty(name)) { 15 return false; 16 } 17 } return true; 18 } 19 function upDatePageview() { 20 const pvabort = pageviewCount({ 21 serverURL: 'https://waline.17lai.site', 22 path: '/docs/', 23 }); 24 setTimeout(() => pvabort(), 2000); 25 26 var wa_csp = "waline_container_site_pv"; 27 var ewacsp=document.getElementById(wa_csp); 28 //ewacsp.style.display = 'inline'; 29 30 var wa_cpv = "waline_container_page_pv"; 31 var ewacpv=document.getElementById(wa_cpv); 32 if( !ewacpv ){ 33 console.log("[waline]home page!"); 34 }else{ 35 if( isOwnEmpty(ewacpv.style) != true ){ 36 ewacpv.style.display = 'inline'; 37 console.log("[waline]update pageview count!"); 38 }else{ 39 console.log("[waline]ewacpv.style null!"); 40 } 41 } 42 } 43 //upDatePageview(); 44 function delayupDatePageview() { 45 setTimeout(function() { upDatePageview(); }, 3000); 46 console.log("[waline]delay update comment count!"); 47 } 48 delayupDatePageview();</script>
48<link rel=preload as=image fetchpriority=high href=/medias_webp/featureimages/1.webp>
48<script>window.Matery=window.Matery||{},window.Matery.bannerConfig={enable:!0,bannerUrl:"/medias_webp/featureimages/1.webp",isHome:!1,bgEnabled:!0,bgDefault:"off"}</script>
48<script>window.Matery=window.Matery||{},window.Matery.coverConfig={duration:Number("180"),showIndicators:!0,autoLoop:!0,intervalTime:8e3,showPrevNext:!0}</script>
48<script defer=defer src="/js/search.js?v=13.22"></script>
48<script type=text/javascript>(()=>{var e,a=(window.CONFIG||{}).search||{local:{enable:!1},algolia:{enable:!1}},o=[],r=(a.local&&a.local.enable&&o.push("local"),a.algolia&&a.algolia.enable&&o.push("algolia"),a.pagefind&&a.pagefind.enable&&o.push("pagefind"),{local:"fas fa-search",algolia:"fab fa-algolia",pagefind:"fas fa-file-alt"}),l=(o.length<=1&&(e=document.getElementById("searchEngineCaret"))&&(e.style.display="none"),a.local&&a.local.enable&&a.local.preload&&document.addEventListener("DOMContentLoaded",function(){var e=s("local");e&&e.init(null)}),null),c={},i="search_engine";function s(e){var n;return c[e]||((n=window.SearchEngines&&window.SearchEngines[e])?(n=new n("local"===e?a.local:a.algolia),c[e]=n):null)}function d(e){var n,t;o.indexOf(e)<0||(l&&c[l]&&c[l].destroy(),l=e,Matery.utils.setLS(i,e),(n=document.getElementById("searchEngineIcon"))&&(n.className=r[e]||"fas fa-search"),(n=document.getElementById("searchInput"))&&(t=n.nextElementSibling)&&"LABEL"===t.tagName&&(t.textContent="algolia"===e?a.algolia.labels&&a.algolia.labels.input_placeholder||"Search for Posts":"请è¾å
¥æç´¢çå
³é®å (Ctrl + K)"),(t=document.getElementById("searchResult"))&&(t.innerHTML=""),(e=s(e))&&t&&(e.init(t),n)&&n.value&&n.value.trim()&&e.search(n.value))}function n(){var e,n=document.getElementById("searchModal");n&&!n.matches(":popover-open")&&(n.showPopover(),n=document.getElementById("searchInput"),e=document.getElementById("searchResult"),n.value="",e&&(e.innerHTML='<div class="search-result-icon"><i class="fas fa-search fa-5x"></i></div>'),!l&&(l=(()=>{var e=Matery.utils.getLS(i);if(0<=o.indexOf(e))return e;if(e=a.default){if(0<=o.indexOf(e))return e;if(0<o.length)return console.warn('[search] é
ç½®çé»è®¤å¼æ "'+e+'" æªå¯ç¨ï¼é级为第ä¸ä¸ªå¯ç¨å¼æ "'+o[0]+'"'),o[0]}return 0<=o.indexOf("algolia")?"algolia":o[0]})(),n=document.getElementById("searchEngineIcon"))&&(n.className=r[l]||"fas fa-search"),(n=s(l))&&e&&(n.init(e),"algolia"===l)&&n._ensureClient&&n._ensureClient(function(){}),setTimeout(function(){document.getElementById("searchInput")?.focus()},50))}function u(){var e=document.getElementById("searchEngineMenu");e&&e.classList.remove("show")}document.addEventListener("keydown",function(e){(e.ctrlKey||e.metaKey)&&"k"===e.key&&(e.preventDefault(),n())}),document.addEventListener("input",function(e){var n;e.target&&"searchInput"===e.target.id&&l&&!e.isComposing&&(n=c[l])&&n.search&&n.search(e.target.value)}),document.addEventListener("compositionend",function(e){var n;e.target&&"searchInput"===e.target.id&&l&&(n=c[l])&&n.search&&n.search(e.target.value)}),document.addEventListener("click",function(e){var n,t=e.target.closest&&e.target.closest("#searchEngineMenu li[data-engine]");t?(d(t.dataset.engine),u()):(t=document.getElementById("searchEngineBtn"),(n=document.getElementById("searchEngineMenu"))&&t&&(e.target===t||t.contains&&t.contains(e.target))?o.length<=1||(n.classList.contains("show")?u():n.classList.add("show")):n&&n.classList.contains("show")&&u())}),document.addEventListener("keyup",function(e){"Escape"===e.key&&u()}),window.openSearchModal=n,window.closeSearchModal=function(){var e=document.getElementById("searchModal");e&&e.matches(":popover-open")&&e.hidePopover()},window.Matery=window.Matery||{},window.Matery.search={switchEngine:d,loadMore:function(){l&&c[l]&&c[l].loadMore&&c[l].loadMore()}}})(),(()=>{var s,e=new URL(location.href).searchParams.get("highlight");function n(){var e=document.querySelector("#articleContent")||document.querySelector(".post-body")||document.querySelector(".markdown-body");if(e){for(var n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null),t=[];n.nextNode();)(e=>{for(var n=e.parentNode;n;){var t=n.tagName?n.tagName.toLowerCase():"";if("pre"===t||"code"===t||"a"===t)return 1;if(n.classList&&(n.classList.contains("search-keyword")||n.classList.contains("token")))return 1;n=n.parentNode}})(n.currentNode)||t.push(n.currentNode);t.forEach(function(e){var n=e.nodeValue,t=n.toLowerCase(),a=!1;if(s.forEach(function(e){0<=t.indexOf(e)&&(a=!0)}),a){for(var o=document.createDocumentFragment(),r=n;0<r.length;){var l=-1,c="";if(s.forEach(function(e){var n=r.toLowerCase().indexOf(e);0<=n&&(l<0||n<l)&&(l=n,c=e)}),l<0){o.appendChild(document.createTextNode(r));break}0<l&&o.appendChild(document.createTextNode(r.substring(0,l)));var i=document.createElement("mark");i.className="search-keyword",i.appendChild(document.createTextNode(r.substring(l,l+c.length))),o.appendChild(i),r=r.substring(l+c.length)}e.parentNode.replaceChild(o,e)}})}}e&&0!==(s=e.split(" ").filter(function(e){return 0<e.length})).length&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",n):n())})()</script>
48<script src="/libs/materialize/materialize.min.js?v=2.3.3" defer=defer></script>
48<script src=https://lib.baomitu.com/masonry/4.2.2/masonry.pkgd.min.js defer=defer></script>
48<script src="/libs/imagesloaded/imagesloaded.pkgd.min.js?v=5.0.0" defer=defer></script>
48<script src=https://lib.baomitu.com/aos/2.3.4/aos.js defer=defer></script>
48<script defer=defer src="/js/events.js?v=13.22"></script>
48<script defer=defer src="/js/plugins.js?v=13.22"></script>
48<script>document.addEventListener("DOMContentLoaded",()=>Matery.plugins.githubCardsLoader.init()),document.addEventListener("pjax:complete",()=>Matery.plugins.githubCardsLoader.init())</script>
48<script>var bgActiveV=Matery.utils.getBgActive("off");"video"===bgActiveV&&Matery.utils.whenReady(function(){return Matery.plugins&&Matery.plugins.videobg},function(){Matery.plugins.videobg.init(BP.lg,Matery.utils.getLS("viewCount")),Matery.plugins.videobg.initThemeListener(BP.lg,Matery.utils.getLS("viewCount")),document.addEventListener("pjax:complete",function(){Matery.plugins.videobg.cleanup(),Matery.plugins.videobg.init(BP.lg,Matery.utils.getLS("viewCount"))})})</script>
48<script src=https://lib.baomitu.com/typed.js/2.1.0/typed.umd.js defer=defer></script>
48<script>document.addEventListener("DOMContentLoaded",function(){Matery.plugins.postTyped()})</script>
48<script>document.addEventListener("DOMContentLoaded",function(){Matery.plugins.subTitleTyped()})</script>
48<script>var tocSchemaStorageKey=Matery.utils.normalizePagePath().replace(/\/$/,"")+"/toc";Matery.utils.getLS(tocSchemaStorageKey)||Matery.utils.setLS(tocSchemaStorageKey,"show")</script>
48<script src=https://lib.baomitu.com/tocbot/4.36.4/tocbot.min.js></script>
48<script src="/js/toc-state.js?v=13.22"></script>
48<script>window.Matery=window.Matery||{},window.Matery.tocCfg={collapseDepth:0,headingSelector:"h2,h3,h4,h5,h6"}</script>
48<script>Matery.utils.whenReady(()=>Matery.plugins&&Matery.plugins.imgLazyload,()=>Matery.plugins.imgLazyload())</script>
48<script>var index,img,image,colorSchemaInitStorageKey="Matery_Color_Scheme_Now",colorToggleButtonSelector="#color-toggle-btn";function getRandomBackgroundPic(e){return"dark"==e?(index=Math.ceil(22*Math.random())-1,img="/medias_webp/featureimages/dark/","dark"):(index=Math.ceil(45*Math.random())-1,img="/medias_webp/featureimages/","light")}function setBackgroundPic(){window.__materyBgPicBound||(window.__materyBgPicBound=!0,document.addEventListener("theme-changed",function(e){var e=e.detail&&e.detail.scheme;e&&(getRandomBackgroundPic(e),e=document.getElementsByClassName("lazy-background")[0])&&(e.style.backgroundImage="url("+img+index+".webp)")}))}var bgActive=Matery.utils.getBgActive("off");if(1<Number(Matery.utils.getLS("viewCount"))&&"image"===bgActive)try{getRandomBackgroundPic(Matery.utils.getLS(colorSchemaInitStorageKey)),document.getElementsByClassName("lazy-background")[0].style.backgroundImage="url("+img+index+".webp)"}catch(e){console.log("éæºèæ¯å¾ç error.")}function clearLazyBackground(e){e.classList.remove("lazy-background"),e.classList.remove("bg-lazy-loading"),e.classList.remove("bg-lazy-loaded"),e.removeAttribute("bg-lazy"),e.style.setProperty("background-image","none","important")}if("off"===bgActive)for(var bgEls=Array.prototype.slice.call(document.getElementsByClassName("lazy-background")),i=0;i<bgEls.length;i++)clearLazyBackground(bgEls[i]);else{for(var bgEls2=Array.prototype.slice.call(document.getElementsByClassName("lazy-background")),j=0;j<bgEls2.length;j++)bgEls2[j].removeAttribute("bg-lazy"),bgEls2[j].classList.remove("bg-lazy-loading");if("video"===bgActive)for(var bgEls3=Array.prototype.slice.call(document.getElementsByClassName("lazy-background")),k=0;k<bgEls3.length;k++)clearLazyBackground(bgEls3[k]);"image"===bgActive&&setBackgroundPic()}</script>
48<script src=https://lib.baomitu.com/scrollprogress/3.0.2/scrollProgress.min.js defer=defer></script>
48<script src="/libs/lightGallery/js/lightgallery-all.min.js?v=1.4.0" defer=defer></script>
48<script>Matery.utils.whenReady(()=>Matery.plugins&&Matery.plugins.languageToggle,()=>Matery.plugins.languageToggle())</script>
48<script type=text/javascript>var viewCount=Matery.utils.getLS("viewCount");viewCount?(Matery.utils.setLS("viewCount",Number(viewCount)+1),console.log("[Matery]Welcome to visited again!")):(Matery.utils.setLS("viewCount",1),console.log("[Matery]Welcome! New Reader!"))</script>
48<script type=text/javascript>var themeStorage=window.localStorage;window.localStorage?(console.log("设å®waline count title"),themeStorage.setItem("title","夿³ä¹ä¹¦")):console.log("æµè§å¨ä¸æ¯ælocalstorage")</script>
48<script>var s;windowWidth>BP.fun&&2<Number(Matery.utils.getLS("viewCount"))&&((s=document.createElement("script")).src="/libs/live2d/autoload.js?v=13.22",document.body.appendChild(s))</script>
48<script src="/libs/tag-common/index.js?v=13.22" async></script>
48<script type=module>import { init, commentCount } from "/libs/waline/waline.min.js?v=3.15.2"; 49 50 // æç« å ä¿¡æ¯åºè¯è®ºæ°ç¬ç«æ¾ç¤ºï¼2026-08-08 ä¿®å¤ï¼ 51 // ä¸ä¾èµè¯è®ºç»ä»¶æå è½½ï¼loadComments æ»å¨æè§¦å initWalineï¼ââ 52 // è¯è®ºæ°å¨é¡µé¢é¡¶é¨ï¼åº import åç«å³è·åæ¾ç¤º 53 // page.layout éå¶ï¼ä» post/friends/contact æè¯è®ºæ°å ç´ ï¼post-cover.ejsï¼ 54 if ( false) { 55 try { 56 var _countAbort = commentCount({ 57 serverURL: 'https://waline.17lai.site', 58 path: '/docs/', 59 }); 60 setTimeout(function() { _countAbort(); }, 8000); 61 var _countEl = document.getElementById('waline_comments_count'); 62 if (_countEl) { 63 _countEl.style.display = 'inline-block'; 64 var _loadingEl = document.getElementById('waline_commentcount_loading_icon'); 65 if (_loadingEl) _loadingEl.style.display = 'none'; 66 } 67 } catch (err) { console.log('[waline-count][Error]', err); } 68 } 69 70 // var pagePath = window.location.pathname.replace(/\/$/,'') + '/'; 71 const locale = { 72 lang: 'zh-cn', 73 nick: 'ð§ æµç§°', 74 nickError: 'æµç§°ä¸è½å°äº3个å符', 75 mail: 'ð§ é®ç®±', 76 mailError: 'è¯·å¡«åæ£ç¡®çé®ä»¶å°å', 77 link: 'ð ç½å', 78 optional: 'å¯é', 79 placeholder: 'ð¤£ä¸èµ·æ¥ç©ï¼çä¸ä½ ç足迹å§~ãè¯è®ºæ¯æé®ç®±åå¤éç¥ï¼ð§\r\n ðæ¯ææ³¨åç»å½ï¼å¹¶æ¯æweibo QQ Github 社交ç»å½(âoâ)ï¼ð\r\n ð£è¯·ææè¯è®ºå¦ç¦æ¢æ¶æè¯è®ºð²\r\n â ï¸å ¬å¼ç½ç»ç©ºé´ï¼è¯·ä¸è¦å表任ä½å å«ä¸ªäººæå ¶ä»äººçéç§ä¿¡æ¯â', 80 sofa: 'ð æ¥åè¯è®ºå§~', 81 submit: 'åéçè¨', 82 like: '忬¢', 83 cancelLike: '忶忬¢', 84 reply: 'åå¤', 85 cancelReply: 'åæ¶åå¤', 86 comment: 'è¯è®º', 87 refresh: 'å·æ°', 88 more: 'å è½½æ´å¤è¯è®º...', 89 preview: 'é¢è§', 90 emoji: '表æ ', 91 uploadImage: 'ä¸ä¼ å¾ç', 92 seconds: 'ç§å', 93 minutes: 'åéå', 94 hours: 'å°æ¶å', 95 days: '天å', 96 now: 'åå', 97 uploading: 'æ£å¨ä¸ä¼ ', 98 login: 'ç»å½', 99 logout: 'éåº', 100 admin: 'å主', 101 sticky: '置顶', 102 word: '个å', 103 wordHint: 'è¯è®ºåæ°åºå¨ $0 å° $1 åä¹é´ï¼\nå½ååæ°ï¼$2', 104 anonymous: 'å¿å', 105 level0: 'æ½æ°´', 106 level1: 'åæ³¡', 107 level2: 'åæ§½', 108 level3: 'æ´»è·', 109 level4: 'è¯ç¨', 110 level5: 'ä¼ è¯´', 111 gif: '表æ å ', 112 gifSearchPlaceholder: 'æç´¢è¡¨æ å ', 113 profile: 'ä¸ªäººèµæ', 114 approved: 'éè¿', 115 waiting: 'å¾ å®¡æ ¸', 116 spam: 'åå¾', 117 unsticky: 'åæ¶ç½®é¡¶', 118 oldest: 'æååº', 119 latest: 'ææ£åº', 120 hottest: 'æç度', 121 reactionTitle: 'éè¿ç声ï¼äººè¿çåï¼', 122 reaction0: 'èµä¸ä¸ª', 123 reaction1: '踩ä¸ä¸', 124 reaction2: 'æç¹é ·', 125 reaction3: 'ç䏿', 126 reaction4: 'å¥ç©æ', 127 reaction5: 'æ³ç¡è§', 128 }; 129 130 function initWaline() { 131 console.log('[WALINE]init waline'); 132 init({ 133 el: '#waline', 134 locale, 135 serverURL: 'https://waline.17lai.site', 136 //path: "", 137 path: '/docs/', 138 avatar: 'mp', 139 emoji: [ 140 '//fastly.jsdelivr.net/gh/walinejs/emojis@latest/weibo', 141 ], 142 lang: 'zh-CN', 143 dark: 'html[data-user-color-scheme="dark"]', 144 login: 'enable', 145 wordLimit: '1000', 146 pageSize: '10', 147 highlighter: (code, lang) => { 148 if (!window.Prism.languages[lang]) { 149 window.Prism.plugins.autoloader.loadLanguages(lang); 150 } 151 152 return window.Prism.highlight( 153 code, 154 window.Prism.languages[lang] || window.Prism.languages.text, 155 lang, 156 ); 157} 158, 159 pageview: false, 160 comment: true, 161 reaction: [ 162 'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_agree.png', 163 'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_look_down.png', 164 'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_
164sunglasses.png', 165 'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_pick_nose.png', 166 'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_awkward.png', 167 'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_sleep.png' 168] 169, 170 search: false, 171 imageUploader: false, 172 meta: ['nick', 'mail', 'link'], 173 recaptchaV3Key: '', 174 requiredMeta: ['nick', 'mail'], 175 }); 176 Matery.utils.hideLoading('loading_data'); 177 178 if (true) { 179 // è¯è®ºæ°åå§æ¾ç¤ºå·²ç±é¡¶å±ç¬ç«é»è¾å¤çï¼import åç«å³æ§è¡ï¼ä¸ä¾èµæå è½½ï¼ 180 // è¿éä» ç»å®è¯è®ºåéæé®ï¼ç¨æ·åå¸è¯è®ºåå·æ°è¯è®ºæ° 181 try { 182 var btnsubmit = document.body.getElementsByClassName('wl-btn primary'); 183 if (typeof btnsubmit[0] !== "undefined" && typeof window.addEventListener !== "undefined") { 184 btnsubmit[0].addEventListener('click', function() { 185 setTimeout(function() { 186 try { 187 commentCount({ 188 serverURL: 'https://waline.17lai.site', 189 path: '/docs/', 190 }); 191 } catch (err) { console.log('[waline-count][Error]', err); } 192 }, 500); 193 }, false); 194 } 195 } catch (error) { 196 console.error("An error occurred while handling the element:", error); 197 } 198 199 } 200 201 202 203 if (typeof Matery !== 'undefined' && Matery.events && typeof Matery.events.refreshLayout === 'function') Matery.events.refreshLayout(); 204 } 205 function loadWaline() { 206 try { 207 // å è½½ Waline CSS æä»¶ 208 const walineCss = document.createElement('link'); 209 walineCss.rel = 'stylesheet'; 210 walineCss.href = '/libs/waline/waline.min.css?v=3.15.2'; 211 document.head.appendChild(walineCss); 212 213 // å è½½ Waline commonjs æä»¶ 214 //const walineJs = document.createElement('script'); 215 //walineJs.src = '/libs/waline/waline.min.js?v=3.15.2'; 216 //walineJs.async = true; 217 //walineJs.onload = initWaline; 218 //document.body.appendChild(walineJs); 219 220 221 // å¨æå¯¼å ¥ waline esm èæ¬ 222 const walineSrc = '/libs/waline/waline.min.js?v=3.15.2'; 223 import(walineSrc) 224 .then(() => { 225 // èæ¬å è½½æååçåå§åæä½ 226 initWaline(); 227 }) 228 .catch((error) => { 229 console.error('Failed to load waline script:', error); 230 }); 231 232 } catch (err) { 233 console.log("[SHARE][Error] Failed to load Waline:", err); 234 } 235 } 236 237 // è¯è®ºæå è½½ç»ä¸å ¥å£ï¼ç§»æ¤èª fluid æ¶æï¼ 238 // æå¡ç«¯ lazyload.js å·²ç» #comments æ lazyload æ è®°ï¼ 239 // - 带 lazyload â æ»å¨å°å¯è§åºåæå è½½ walineï¼çå¾ æµè§å¨ç©ºé²ï¼ 240 // - æ lazyloadï¼å¦ lazyload å ³éï¼â ç«å³å è½½ 241 // å ¼å®¹å¤çï¼ç¬è«/æ IO æµè§å¨ç± waitElementVisible å é¨å¤æï¼ç´æ¥æ§è¡ 242 setTimeout(function () { 243 Matery.utils.loadComments('#waline', function() { 244 loadWaline(); 245 }); 246 }, 1);</script>
246<script type=text/javascript defer=defer>"undefined"!=typeof Matery&&Matery.events&&"function"==typeof Matery.events.refreshLayout&&Matery.events.refreshLayout()</script>
246<script>window.Matery=window.Matery||{},window.Matery.effects={desktopOnly:!0,page:{default:"off",available:{sakura:{label:"樱è±",url:"/libs/others/sakura.js?v=13.22",type:"page",params:{}},ripples:{label:"æ°´æ³¢",url:"/libs/others/ripples.js?v=13.22",type:"page",params:{}},leaf:{label:"è½å¶",url:"/libs/others/ginkgo-leaf.js?v=13.22",type:"page",params:{}},snowdown:{label:"é£éª",url:"/libs/others/snow.js?v=13.22",type:"page",params:{}},snowflake:{label:"éªè±",url:"/libs/others/snowflake.js?v=13.22",type:"page",params:{}},buble:{label:"åæ³¡",url:"/libs/others/buble.js?v=13.22",type:"page",params:{}},canvas_nest:{label:"ç½ç»",url:"/libs/background/canvas-nest.js?v=13.22",type:"page",params:{color:"0,0,255",pointColor:"0,0,255",opacity:.7,zIndex:-1,count:99}},ribbon:{label:"彩带",url:"/libs/background/ribbon.min.js?v=13.22",type:"page",params:{size:150,alpha:.6,zIndex:-1,clickChange:!0}},ribbon_dynamic:{label:"卿彩另",url:"/libs/background/ribbon-dynamic.js?v=13.22",type:"page",params:{}}}},mouse:{default:"off",available:{clicklove:{label:"ç±å¿",url:"/libs/others/clicklove.js?v=13.22",type:"mouse"},popupText:{label:"å¼¹åºæå",url:"/libs/others/popupText.js?v=13.22",type:"mouse"},mouseStar:{label:"ææ",url:"/libs/others/star.js?v=13.22",type:"mouse"},fireworks:{label:"çç¸",url:"/libs/others/fireworks.js?v=13.22",type:"mouse",deps:["/libs/anime/anime.min.js?v=3.2.2"]}}},cdn:""}</script>
246<script defer=defer src=/libs/prism/components/prism-core.min.js></script>
246<script defer=defer src=/libs/prism/plugins/autoloader/prism-autoloader.min.js></script>
246<script defer=defer src=/libs/prism/plugins/line-numbers/prism-line-numbers.min.js></script>
246<script>Matery.utils.whenReady(()=>Matery.plugins&&Matery.plugins.imageCaption,()=>Matery.plugins.imageCaption())</script>
246<script>Matery.utils.whenReady(()=>Matery.plugins&&Matery.plugins.codeWidget,()=>Matery.plugins.codeWidget())</script>
246<script src="/libs/instantpage/instantpage.min.js?v=5.2.0" type=module></script>
246<script defer=defer src="/js/boot.js?v=13.22"></script>
246<noscript><div class=noscript-warning>å客å¨å
许 JavaScript è¿è¡çç¯å¢ä¸æµè§æææ´ä½³</div></noscript>
246<script defer>if (localStorage.viewCount > 1) { 247 (function (w, d, s, id) { 248 if (typeof (w.webpushr) !== 'undefined' || isBot) return; 249 w.webpushr = w.webpushr || function () { (w.webpushr.q = w.webpushr.q || []).push(arguments) }; 250 var js, fjs = d.getElementsByTagName(s)[0]; 251 js = d.createElement(s); 252 js.id = id; 253 js.async = true; 254 js.src = "https://cdn.webpushr.com/app.min.js"; 255 fjs.parentNode.appendChild(js); 256 }(window, document, 'script', 'webpushr-jssdk')); 257 webpushr('setup', { 'key': 'BDHamjevXR9yPJrttxl80MjCYEwm3CKzwsi3rwMXxq4Lnbzhr2fNQARqXJVhfBn_ucmy9QHixa3qps8eEFXBwmw' }); 258 }</script>
258</body></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.