1<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2"><meta name="theme-color" content="#222"><meta name="generator" content="Hexo 7.3.0"><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png"><link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png"><link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png"><link rel="mask-icon" href="/images/logo.svg" color="#222"><meta http-equiv="Cache-Control" content="no-transform"><meta http-equiv="Cache-Control" content="no-siteapp"><link rel="stylesheet" href="/css/main.css"><link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">
1<script id="hexo-configurations">var NexT=window.NexT||{},CONFIG={hostname:"hisen.me",root:"/",scheme:"Mist",version:"7.8.0",exturl:!0,sidebar:{position:"right",display:"post",padding:18,offset:12,onmobile:!1},copycode:{enable:!1,show_result:!1,style:null},back2top:{enable:!0,sidebar:!1,scrollpercent:!1},bookmark:{enable:!1,color:"#222",save:"auto"},fancybox:!1,mediumzoom:!1,lazyload:!1,pangu:!1,comments:{style:"tabs",active:null,storage:!0,lazyload:!1,nav:null},algolia:{hits:{per_page: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"}},localsearch:{enable:!0,trigger:"auto",top_n_per_article:1,unescape:!0,preload:!0},motion:{enable:!0,async:!1,transition:{post_block:"fadeIn",post_header:"slideDownIn",post_body:"slideDownIn",coll_header:"slideLeftIn",sidebar:"slideUpIn"}},path:"search.xml"}</script>
1<script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js"></script>
1<script>LA.init({id:"3Hvvge21myiW2jad",ck:"3Hvvge21myiW2jad"})</script>
1<meta name="description" content="ä¸»è¦æ¯ææ¯ãæé¿ãé
读ãHomelab çæ¹é¢çå
容ã"><meta property="og:type" content="website"><meta property="og:title" content="æ ç¾"><meta property="og:url" content="https://hisen.me/tags/"><meta property="og:site_name" content="HiSEN"><meta property="og:description" content="ä¸»è¦æ¯ææ¯ãæé¿ãé
读ãHomelab çæ¹é¢çå
容ã"><meta property="og:locale" content="zh_CN"><meta property="article:published_time" content="2017-02-09T12:34:54.000Z"><meta property="article:modified_time" content="2025-07-19T05:54:03.815Z"><meta property="article:author" content="hisenyuan"><meta name="twitter:card" content="summary"><link rel="canonical" href="https://hisen.me/tags/">
1<script id="page-configurations">CONFIG.page={sidebar:"",isHome:!1,isPost:!1,lang:"zh-CN"}</script>
1<style>:root{--hs-fg:#24292f;--hs-fg-2:#57606a;--hs-fg-3:#8c959f;--hs-accent:#0969da;--hs-line:#d0d7de;--hs-line-soft:#eaeef2;--hs-surface-1:#f7f8fa;--hs-surface-2:#eef1f4;--hs-surface-3:#f0f2f5;--hs-surface-4:#f6f8fa;--hs-surface-5:#f3f4f6}@media (prefers-color-scheme:dark){:root{--hs-fg:#ddd;--hs-fg-2:#b3b3b3;--hs-fg-3:#8a8a8a;--hs-accent:#6cb6ff;--hs-line:#4a4a4a;--hs-line-soft:#3a3a3a;--hs-surface-1:#3a3a3a;--hs-surface-2:#454545;--hs-surface-3:#383838;--hs-surface-4:#3a3a3a;--hs-surface-5:#454545}}.booklist-layout{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:0 2.5em;align-items:start;margin-top:1.5em}.booklist-main{grid-column:1;grid-row:1;min-width:0}.booklist-aside{grid-column:2;grid-row:1;position:sticky;top:80px}.booklist-total{display:flex;justify-content:space-between;align-items:baseline;padding:0 0 .5em;margin-bottom:.5em;border-bottom:1px solid var(--hs-line-soft);font-size:.92em;font-weight:600;color:var(--hs-fg)}.booklist-total span{font-weight:400;color:var(--hs-fg-3);font-variant-numeric:tabular-nums}.booklist-stats{margin:0;padding:0;list-style:none}.booklist-stats li{display:flex;justify-content:space-between;align-items:baseline;padding:.22em 0;font-size:.92em}.booklist-stats a{color:var(--hs-fg);font-weight:600;border:none}.booklist-stats a:hover{color:var(--hs-accent)}.booklist-stats span{color:var(--hs-fg-3);font-variant-numeric:tabular-nums}.booklist-note{margin:.9em 0 0;font-size:.85em;line-height:1.6;color:var(--hs-fg-3)}.booklist-toggle{display:block;width:100%;margin:.42em 0 .8em;padding:.25em .7em;border:1px solid var(--hs-line);border-radius:3px;background:var(--hs-surface-1);color:var(--hs-fg-2);font-size:.82em;font-family:inherit;line-height:1.6;cursor:pointer}.booklist-toggle:hover{border-color:var(--hs-fg-3);color:var(--hs-fg)}.booklist-toggle:active{background:var(--hs-surface-2)}.booklist-year{margin:0 0 .4em;border-bottom:1px solid var(--hs-line-soft)}.booklist-year>summary{display:flex;align-items:baseline;padding:.6em 0;font-size:1.05em;font-weight:600;color:var(--hs-fg);cursor:pointer;list-style:none}.booklist-year>summary::-webkit-details-marker{display:none}.booklist-year>summary::before{content:"â¸";margin-right:.5em;color:var(--hs-fg-3);transition:transform .15s}.booklist-year[open]>summary::before{transform:rotate(90deg)}.booklist-year>summary:hover{color:var(--hs-accent)}.booklist-count{margin-left:.55em;font-size:.85em;font-weight:400;color:var(--hs-fg-3)}.booklist-entries{margin:0 0 .8em;padding-left:1.4em}.booklist-entries li{padding:.16em 0;line-height:1.7;color:var(--hs-fg)}.booklist-entries li::marker{color:var(--hs-line)}@media (max-width:768px){.booklist-layout{grid-template-columns:1fr;gap:1.6em}.booklist-main{grid-row:2}.booklist-aside{grid-column:1;grid-row:1;position:static}.booklist-stats{display:flex;flex-wrap:wrap;gap:0 1.4em}.booklist-stats li{gap:.5em}}.about-page{margin-top:1.4em}.about-header{display:flow-root;margin:0 0 2.4em}.about-header>*{margin:0}.about-header>:not(:last-child){margin-bottom:1.6em}.about-lead{font-size:1.05em;line-height:1.7;color:var(--hs-fg)}.about-lead p{margin:0 0 1em}.about-lead p:last-child{margin-bottom:0}.about-section{margin:0 0 2.6em}.about-section>h2{margin:0 0 1em;padding-top:0;padding-bottom:.35em;border-bottom:1px solid var(--hs-line-soft);font-size:1em;font-weight:600;color:var(--hs-fg)}.about-grid{display:grid;grid-template-columns:6.5em minmax(0,1fr);gap:.7em 1.1em;margin:0}.about-grid dt{color:var(--hs-fg-2);line-height:1.72}.about-grid dd{margin:0;color:var(--hs-fg);line-height:1.72}
1.about-chips{display:grid;grid-template-columns:3.4em minmax(0,1fr);gap:.8em .9em;margin:0;align-items:start}.about-chips dt{color:var(--hs-fg-2);line-height:1.75}.about-chips dd{display:flex;flex-wrap:wrap;gap:.4em;margin:0}.about-chips dd span{padding:.1em .6em;background:var(--hs-surface-3);border-radius:4px;font-size:.92em;line-height:1.7;color:var(--hs-fg-2)}.about-cards{display:grid;gap:1em;margin:0}.about-cards>div{padding-left:.95em;border-left:2px solid var(--hs-line)}.about-cards dt{margin-bottom:.15em;font-weight:600;line-height:1.5;color:var(--hs-fg)}.about-cards dd{margin:0;color:var(--hs-fg-2);line-height:1.72}.about-links{display:flex;flex-wrap:wrap;gap:.7em 1.8em;margin:0;padding:0;list-style:none}.about-links a{display:inline-flex;align-items:center;gap:.42em;color:var(--hs-accent);font-weight:500}.about-links a i{font-size:.95em;color:var(--hs-fg-3)}.about-links a:hover{text-decoration:underline}.about-footer{margin:3em 0 0;padding-top:1.1em;border-top:1px solid var(--hs-line-soft);font-size:.85em;line-height:1.9;color:var(--hs-fg-3)}.about-footer a{color:var(--hs-fg-3);text-decoration:underline}@media (max-width:768px){.about-chips,.about-grid{grid-template-columns:1fr;gap:.15em 0}.about-grid dt{margin-top:.8em}.about-chips dt{margin-top:.75em}.about-chips dd{margin-bottom:.35em}}@media (prefers-color-scheme:dark){.posts-expand .post-tags a{background:var(--card-bg-color)}.posts-expand .post-tags a:hover{background:var(--btn-default-hover-bg)}.posts-collapse::before{background:var(--card-bg-color)}.event-list .event-past{background:var(--card-bg-color)}.mmd-bar button{background:var(--hs-surface-1)}}</style>
1<script>!function(){function n(){var t=decodeURIComponent((location.hash||"").slice(1));return t?document.getElementById(t):null}function t(t){var e=n();e&&"DETAILS"===e.tagName&&!e.open&&(e.open=!0,t&&e.scrollIntoView({block:"start"}))}document.addEventListener("click",function(t){var e=t.target.closest?t.target.closest(".booklist-toggle"):null;if(e){for(var n="true"!==e.getAttribute("data-open"),o=document.querySelectorAll(".booklist-year"),a=0;a<o.length;a++)o[a].open=n;e.setAttribute("data-open",n?"true":"false"),e.textContent=n?"æ¶èµ·å
¨é¨":"å±å¼å
¨é¨"}}),document.addEventListener("DOMContentLoaded",function(){t(!1)}),window.addEventListener("hashchange",function(){t(!0),setTimeout(function(){var t=n();t&&t.scrollIntoView({block:"start"})},60)})}()</script>
1<style>.mmd-box{margin:1.3em 0;border:1px solid var(--hs-line-soft);border-radius:6px;overflow:hidden}.mmd-bar{display:flex;align-items:center;gap:.4em;padding:.35em .5em;background:var(--hs-surface-4);border-bottom:1px solid var(--hs-line-soft);font-size:.82em}.mmd-bar button{font:inherit;line-height:1.6;padding:0 .55em;cursor:pointer;background:#fff;color:var(--hs-fg);border:1px solid var(--hs-line);border-radius:4px}.mmd-bar button:hover{background:var(--hs-surface-5)}.mmd-bar .mmd-hint{margin-left:auto;color:var(--hs-fg-3)}.mmd-stage{overflow:auto;max-height:78vh;padding:.6em;cursor:grab;background:#fff;-webkit-overflow-scrolling:touch}.mmd-stage.mmd-dragging{cursor:grabbing;user-select:none}.mmd-stage>pre.mermaid{margin:0;padding:0;border:0;background:0 0;text-align:center}.mmd-stage>pre.mermaid::after,.mmd-stage>pre.mermaid::before{content:none}.mmd-stage svg{cursor:inherit}.mmd-box.mmd-full{position:fixed;inset:0;z-index:9999;margin:0;border-radius:0;display:flex;flex-direction:column;background:#fff}.mmd-box.mmd-full .mmd-stage{flex:1 1 auto;max-height:none}html.mmd-noscroll,html.mmd-noscroll body{overflow:hidden}@media (max-width:767px){.mmd-stage{max-height:60vh}.mmd-bar .mmd-hint{display:none}}</style>
1<script>!function(){var o="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js",x=.2,y=4;function a(e){var n,t,i,l,r,s,o,a,d,c,m,u,p,f,h=e.querySelector("svg");function v(){var e=Math.round(n.w*r),t=Math.round(n.h*r);h.setAttribute("width",e),h.setAttribute("height",t),h.style.width=e+"px",h.style.height=t+"px",h.style.maxWidth="none"}function w(e){s=!1,r=Math.min(y,Math.max(x,r*e)),v()}function L(){var e=l.clientWidth-16;0<e&&(r=Math.min(y,Math.max(x,e/n.w)),s=!0,v())}function g(){var e=t.classList.toggle("mmd-full");document.documentElement.classList.toggle("mmd-noscroll",e),o.textContent=e?"éåºå
¨å±":"å
¨å±",L(),l.scrollLeft=0,l.scrollTop=0}function E(e,t,n){var i,o,a,d,c=Math.min(y,Math.max(x,r*e));c!==r&&(o=t-(i=l.getBoundingClientRect()).left+l.scrollLeft,a=n-i.top+l.scrollTop,d=c/r,s=!1,r=c,v(),l.scrollLeft=o*d-(t-i.left),l.scrollTop=a*d-(n-i.top))}!h||e.parentNode&&e.parentNode.classList.contains("mmd-stage")||(n=function(e){var t=(e.getAttribute("viewBox")||"").split(/[\s,]+/).map(Number);if(4===t.length&&0<t[2]&&0<t[3])return{w:t[2],h:t[3]};var n=e.getBoundingClientRect();return{w:n.width||900,h:n.height||600}}(h),(t=document.createElement("div")).className="mmd-box",(i=document.createElement("div")).className="mmd-bar",(l=document.createElement("div")).className="mmd-stage",e.parentNode.insertBefore(t,e),t.appendChild(i),t.appendChild(l),l.appendChild(e),s=!(r=1),[["æ¾å¤§",function(){w(1.25)}],["缩å°",function(){w(.8)}],["éåºå®½åº¦",L],["åå§å¤§å°",function(){s=!1,r=1,v()}]].forEach(function(e){var t=document.createElement("button");t.type="button",t.textContent=e[0],t.addEventListener("click",e[1]),i.appendChild(t)}),(o=document.createElement("button")).type="button",o.textContent="å
¨å±",o.addEventListener("click",function(){g()}),i.appendChild(o),(a=document.createElement("span")).className="mmd-hint",a.textContent="æå¨å¹³ç§» · æåæ Ctrl/â + æ»è½®ç¼©æ¾ · å廿¾å¤§å° 100%",i.appendChild(a),d=!1,p=u=m=c=0,l.addEventListener("wheel",function(e){var t;(e.ctrlKey||e.metaKey)&&(e.preventDefault(),t=1===e.deltaMode?16:1,E(Math.pow(1.0018,-e.deltaY*t),e.clientX,e.clientY))},{passive:!1}),l.addEventListener("mousedown",function(e){d=!0,c=e.clientX,m=e.clientY,u=l.scrollLeft,p=l.scrollTop,l.classList.add("mmd-dragging"),e.preventDefault()}),window.addEventListener("mousemove",function(e){d&&(l.scrollLeft=u-(e.clientX-c),l.scrollTop=p-(e.clientY-m))}),window.addEventListener("mouseup",function(){d=!1,l.classList.remove("mmd-dragging")}),l.addEventListener("dblclick",function(){s?(s=!1,r=1,v()):L(),l.scrollLeft=0,l.scrollTop=0}),f=1,l.addEventListener("gesturestart",function(e){e.preventDefault(),f=r}),l.addEventListener("gesturechange",function(e){e.preventDefault(),E(Math.min(y,Math.max(x,f*e.scale))/r,e.clientX,e.clientY)}),document.addEventListener("keydown",function(e){"Escape"===e.key&&t.classList.contains("mmd-full")&&g()}),L(),window.addEventListener("resize",function(){s&&L()}))}function e(){var e,t,n,i=document.querySelectorAll("pre.mermaid:not([data-processed])");i.length&&(e=Array.prototype.slice.call(i),t=function(){window.mermaid.initialize({startOnLoad:!1,theme:"neutral",fontFamily:"inherit"}),window.mermaid.run({nodes:e}).then(function(){e.forEach(a)}).catch(function(e){window.console&&window.console.warn("[mermaid] 渲æå¤±è´¥",e)})},window.mermaid?t():((n=document.createElement("script")).src=o,n.onload=t,document.head.appendChild(n)))}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e(),document.addEventListener("pjax:complete",e),document.addEventListener("pjax:success",e)}()</script>
1<title>æ ç¾ | HiSEN</title><noscript><style>.sidebar-inner,.use-motion .brand,.use-motion .collection-header,.use-motion .comments,.use-motion .menu-item,.use-motion .pagination,.use-motion .post-block,.use-motion .post-body,.use-motion .post-header{opacity:initial}.use-motion .site-subtitle,.use-motion .site-title{opacity:initial;top:initial}.use-motion .logo-line-before i{left:initial}.use-motion .logo-line-after i{right:initial}</style></noscript><link rel="alternate" href="/atom.xml" title="HiSEN" type="application/atom+xml"></head><body itemscope itemtype="http://schema.org/WebPage"><div class="container use-motion"><div class="headband"></div><header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="header-inner"><div class="site-brand-container"><div class="site-nav-toggle"><div class="toggle" aria-label="åæ¢å¯¼èªæ "><span class="toggle-line toggle-line-first"></span> <span class="toggle-line toggle-line-middle"></span> <span class="toggle-line toggle-line-last"></span></div></div><div class="site-meta"><a href="/" class="brand" rel="start"><span class="logo-line-before"><i></i></span><h1 class="site-title">HiSEN</h1><span class="logo-line-after"><i></i></span></a><p class="site-subtitle" itemprop="description">hisenyuan's Blog</p></div><div class="site-nav-right"><div class="toggle popup-trigger"><i class="fa fa-search fa-fw fa-lg"></i></div></div></div><nav class="site-nav"><ul id="menu" class="main-menu menu"><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>彿¡£<span class="badge">326</span></a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>åç±»<span class="badge">5</span></a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>æ ç¾<span class="badge">29</span></a></li><li class="menu-item menu-item-booklist"><a href="/booklist" rel="section"><i class="fa fa-list-ol fa-fw"></i>BookList<span class="badge">398</span></a></li><li class="menu-item menu-item-aboutme"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>AboutMe</a></li><li class="menu-item menu-item-search"><a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>æç´¢</a></li></ul></nav><div class="search-pop-overlay"><div class="popup search-popup"><div class="search-header"><span class="search-icon"><i class="fa fa-search"></i></span><div class="search-input-container"><input autocomplete="off" autocapitalize="off" placeholder="æç´¢..." spellcheck="false" type="search" class="search-input"></div><span class="popup-btn-close"><i class="fa fa-times-circle"></i></span></div><div id="search-result"><div id="no-result"><i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i></div></div></div></div></div></header><div class="back-to-top"><i class="fa fa-arrow-up"></i> <span>0%</span></div><main class="main"><div class="main-inner"><div class="content-wrap"><div class="content page posts-expand"><div class="post-block" lang="zh-CN"><header class="post-header"><h1 class="post-title" itemprop="name headline">æ ç¾</h1><div class="post-meta"></div></header><div class="post-body"><div class="tag-cloud"><div class="tag-cloud-title">ç®åå
±è®¡ 29 个æ ç¾</div><div class="tag-cloud-tags"><a href="/tags/ai-%E5%B7%A5%E7%A8%8B/" style="font-size:24.38px;color:#4b4b4b">AI å·¥ç¨</a> <a href="/tags/agent/" style="font-size:22.13px;color:#636363">Agent</a> <a href="/tags/llm/" style="font-size:14.25px;color:#b5b5b5">LLM</a> <a href="/tags/go/" style="font-size:14.25px;color:#b5b5b5">go</a> <a href="/tags/java/" style="font-size:30px;color:#111">java</a> <a href="/tags/%E4%B8%9A%E4%BD%99%E6%97%A0%E7%BA%BF%E7%94%B5/" style="font-size:15.38px;color:#a9a9a9">ä¸ä½æ 线çµ</a> <a href="/tags/%E4%B8%AD%E9%97%B4%E4%BB%B6/" style="font-size:21px;color:#6f6f6f">ä¸é´ä»¶</a> <a href="/tags/%E5%88%86%E5%B8%83%E5%BC%8F/" style="font-size:14.25px;color:#b5b5b5">åå¸å¼</a> <a href="/tags/%E5%8F%AF%E8%A7%82%E6%B5%8B/" style="font-size:14.25px;color:#b5b5b5">å¯è§æµ</a> <a href="/tags/%E5%AD%98%E5%82%A8/" style="font-size:26.63px;color:#343434">åå¨</a> <a href="/tags/%E5%AE%89%E5%85%A8/" style="font-size:17.63px;color:#929292">å®å
¨</a> <a href="/tags/%E5%AE%B9%E5%99%A8/" style="font-size:17.63px;color:#929292">容å¨</a> <a href="/tags/%E5%B7%A5%E7%A8%8B%E6%95%88%E8%83%BD/" style="font-size:21px;color:#6f6f6f">å·¥ç¨æè½</a> <a href="/tags/%E6%80%A7%E8%83%BD/" style="font-size:25.5px;color:#404040">æ§è½</a> <a href="/tags/%E6%88%90%E9%95%BF/" style="font-size:28.88px;color:#1d1d1d">æé¿</a> <a href="/tags/%E6%95%88%E7%8E%87/" style="font-size:21px;color:#6f6f6f">æç</a> <a href="/tags/%E6%9E%B6%E6%9E%84/" style="font-size:19.88px;color:#7a7a7a">æ¶æ</a> <a href="/tags/%E6%B0%B4%E6%97%8F/" style="font-size:15.38px;color:#a9a9a9">æ°´æ</a> <a href="/tags/%E7%94%B5%E5%AD%90%E8%AE%BE%E5%A4%87/" style="font-size:12px;color:#ccc">çµå设å¤</a> <a href="/tags/%E7%A8%B3%E5%AE%9A%E6%80%A7/" style="font-size:13.13px;color:silver">ç¨³å®æ§</a> <a href="/tags/%E7%AC%94%E8%AE%B0/" style="font-size:15.38px;color:#a9a9a9">ç¬è®°</a> <a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size:18.75px;color:#868686">ç®æ³</a> <a href="/tags/%E7%BC%93%E5%AD%98/" style="font-size:17.63px;color:#929292">ç¼å</a> <a href="/tags/%E7%BD%91%E7%BB%9C/" style="font-size:23.25px;color:#575757">ç½ç»</a> <a href="/tags/%E8%87%AA%E5%BB%BA%E6%9C%8D%E5%8A%A1/" style="font-size:23.25px;color:#575757">èªå»ºæå¡</a> <a href="/tags/%E8%BF%90%E7%BB%B4/" style="font-size:27.75px;color:#282828">è¿ç»´</a> <a href="/tags/%E9%98%85%E8%AF%BB/" style="font-size:26.63px;color:#343434">é
读</a> <a href="/tags/%E9%9D%A2%E8%AF%95/" style="font-size:16.5px;color:#9d9d9d">é¢è¯</a> <a href="/tags/%E9%AB%98%E5%B9%B6%E5%8F%91/" style="font-size:17.63px;color:#929292">
1é«å¹¶å</a></div></div></div></div></div>
1<script>window.addEventListener('tabs:register', () => { 2 let { activeClass } = CONFIG.comments; 3 if (CONFIG.comments.storage) { 4 activeClass = localStorage.getItem('comments_active') || activeClass; 5 } 6 if (activeClass) { 7 let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`); 8 if (activeTab) { 9 activeTab.click(); 10 } 11 } 12 }); 13 if (CONFIG.comments.storage) { 14 window.addEventListener('tabs:click', event => { 15 if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return; 16 let commentClass = event.target.classList[1]; 17 localStorage.setItem('comments_active', commentClass); 18 }); 19 }</script>
19</div><div class="toggle sidebar-toggle"><span class="toggle-line toggle-line-first"></span> <span class="toggle-line toggle-line-middle"></span> <span class="toggle-line toggle-line-last"></span></div><aside class="sidebar"><div class="sidebar-inner"><ul class="sidebar-nav motion-element"><li class="sidebar-nav-toc">æç« ç®å½</li><li class="sidebar-nav-overview">ç«ç¹æ¦è§</li></ul><div class="post-toc-wrap sidebar-panel"></div><div class="site-overview-wrap sidebar-panel"><div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person"><p class="site-author-name" itemprop="name">hisenyuan</p><div class="site-description" itemprop="description">ä¸»è¦æ¯ææ¯ãæé¿ãé
读ãHomelab çæ¹é¢çå
容ã</div></div><div class="site-state-wrap motion-element"><nav class="site-state"><div class="site-state-item site-state-posts"><a href="/archives/"><span class="site-state-item-count">326</span> <span class="site-state-item-name">æ¥å¿</span></a></div><div class="site-state-item site-state-categories"><a href="/categories/"><span class="site-state-item-count">5</span> <span class="site-state-item-name">åç±»</span></a></div><div class="site-state-item site-state-tags"><a href="/tags/"><span class="site-state-item-count">29</span> <span class="site-state-item-name">æ ç¾</span></a></div></nav></div><div class="links-of-author motion-element"><span class="links-of-author-item"><span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2hpc2VueXVhbg==" title="GitHub â https://github.com/hisenyuan"><i class="fab fa-github fa-fw"></i>GitHub</span> </span><span class="links-of-author-item"><span class="exturl" data-url="aHR0cHM6Ly93ZWliby5jb20vaGlzZW55dWFu" title="Weibo â https://weibo.com/hisenyuan"><i class="fab fa-weibo fa-fw"></i>Weibo</span> </span><span class="links-of-author-item"><span class="exturl" data-url="aHR0cHM6Ly90d2l0dGVyLmNvbS9oaXNlbnl1YW4=" title="Twitter â https://twitter.com/hisenyuan"><i class="fab fa-twitter fa-fw"></i>Twitter</span> </span><span class="links-of-author-item"><a href="/atom.xml" title="RSS â /atom.xml"><i class="fa fa-rss fa-fw"></i>RSS</a></span></div><div class="cc-license motion-element" itemprop="license"><span class="exturl cc-opacity" data-url="aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzQuMC8="><img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48Y2lyY2xlIGN4PSI0IiBjeT0iMTIiIHI9IjMiIGZpbGw9ImN1cnJlbnRDb2xvciI+PGFuaW1hdGUgaWQ9InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAiIGF0dHJpYnV0ZU5hbWU9InIiIGJlZ2luPSIwO3N2Z1NwaW5uZXJzM0RvdHNTY2FsZTEuZW5kLTAuMjVzIiBkdXI9IjAuNzVzIiB2YWx1ZXM9IjM7LjI7MyIvPjwvY2lyY2xlPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMiIGZpbGw9ImN1cnJlbnRDb2xvciI+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iciIgYmVnaW49InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAuZW5kLTAuNnMiIGR1cj0iMC43NXMiIHZhbHVlcz0iMzsuMjszIi8+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMjAiIGN5PSIxMiIgcj0iMyIgZmlsbD0iY3VycmVudENvbG9yIj48YW5pbWF0ZSBpZD0ic3ZnU3Bpbm5lcnMzRG90c1NjYWxlMSIgYXR0cmlidXRlTmFtZT0iciIgYmVnaW49InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAuZW5kLTAuNDVzIiBkdXI9IjAuNzVzIiB2YWx1ZXM9IjM7LjI7MyIvPjwvY2lyY2xlPjwvc3ZnPg==" data-original="/images/cc-by-nc-sa.svg" alt="Creative Commons"></span></div><div class="links-of-blogroll motion-element"><div class="links-of-blogroll-title"><i class="fa fa-link fa-fw"></i> Links</div><ul class="links-of-blogroll-list"><li class="links-of-blogroll-item"><span class="exturl" data-url="aHR0cHM6Ly93d3cueXVxdWUuY29tL3J1YW55Zi93ZWVrbHk=" title="https://www.yuque.com/ruanyf/weekly">ç§æç±å¥½è
å¨å</span></li><li class="links-of-blogroll-item"><span class="exturl" data-url="aHR0cHM6Ly90ZWNoLm1laXR1YW4uY29t" title="https://tech.meituan.com">ç¾å¢ææ¯å¢é</span></li><li class="links-of-blogroll-item"><span class="exturl" data-url="aHR0cHM6Ly93d3cuNzE0Lmhr" title="https://www.714.hk">梦æ®å½é
</span></li></ul></div></div></div></aside><div id="sidebar-dimmer"></div></div></main><footer class="footer"><div class="footer-inner"><div class="copyright">© 2016 â <span itemprop="copyrightYear">2026</span> <span class="with-love"><i class="fa fa-heart"></i> </span><span class="author" itemprop="copyrightHolder">hisenyuan</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-chart-area"></i> </span><span title="ç«ç¹æ»åæ°">891k</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-coffee"></i> </span><span title="ç«ç¹é
读æ¶é¿">13:30</span></div><div class="powered-by">ç± <span class="exturl theme-link" data-url="aHR0cHM6Ly9oZXhvLmlv">Hexo</span> & <span class="exturl theme-link" data-url="aHR0cHM6Ly9taXN0LnRoZW1lLW5leHQub3Jn">NexT.Mist</span> 强å驱å¨</div><br>
19<script id="LA-DATA-WIDGET" crossorigin="anonymous" charset="UTF-8" src="https://v6-widget.51.la/v6/3Hvvge21myiW2jad/quote.js?theme=0&f=12&display=0,1,1,1,1,1,1,1"></script>
19</div></footer></div>
19<script src="/lib/anime.min.js"></script>
19<script src="/lib/velocity/velocity.min.js"></script>
19<script src="/lib/velocity/velocity.ui.min.js"></script>
19<script src="/js/utils.js"></script>
19<script src="/js/motion.js"></script>
19<script src="/js/schemes/muse.js"></script>
19<script src="/js/next-boot.js"></script>
19<script src="/js/local-search.js"></script>
19<style>[bg-lazy]{background-image:none!important;background-color:#eee!important}</style>
19<script>window.imageLazyLoadSetting={isSPA:!1,preloadRatio:1,processImages:null}</script>
19<script>window.addEventListener("load",function(){var t=/\.(gif|jpg|jpeg|tiff|png)$/i,r=/^data:image\/[a-z\d\-\.\+]+;base64,/;Array.prototype.slice.call(document.querySelectorAll("img[data-original]")).forEach(function(a){var e=a.parentNode;"A"===e.tagName&&(t.test(e.href)||r.test(e.href))&&(e.href=a.dataset.original)})})</script>
19<script>(r=>{r.imageLazyLoadSetting.processImages=t;var a=r.imageLazyLoadSetting.isSPA,o=r.imageLazyLoadSetting.preloadRatio||1,d=i();function i(){var t=Array.prototype.slice.call(document.querySelectorAll("img[data-original]")),e=Array.prototype.slice.call(document.querySelectorAll("[bg-lazy]"));return t.concat(e)}function t(t){(a||t)&&(d=i());for(var e,n=0;n<d.length;n++)0<=(e=(e=d[n]).getBoundingClientRect()).bottom&&0<=e.left&&e.top<=(r.innerHeight*o||document.documentElement.clientHeight*o)&&(()=>{var t,e,a,o,i=d[n];e=function(){d=d.filter(function(t){return i!==t}),r.imageLazyLoadSetting.onImageLoaded&&r.imageLazyLoadSetting.onImageLoaded(i)},(t=i).dataset.loaded||(t.hasAttribute("bg-lazy")?(t.removeAttribute("bg-lazy"),e&&e()):(a=new Image,o=t.getAttribute("data-original"),a.onload=function(){t.src=o,t.removeAttribute("data-original"),t.setAttribute("data-loaded",!0),e&&e()},a.onerror=function(){t.removeAttribute("data-original"),t.setAttribute("data-loaded",!1),t.src=o},t.src!==o&&(a.src=o)))})()}function e(){clearTimeout(t.tId),t.tId=setTimeout(t,500)}t(),document.addEventListener("scroll",e),r.addEventListener("resize",e),r.addEventListener("orientationchange",e)})(this);</script>
19</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.