@mhg/blog
Version:
1 lines • 135 kB
JavaScript
<!DOCTYPE html><html lang="zh-Hans"><head hexo-theme="https://github.com/volantis-x/hexo-theme-volantis/#6.8.2"><meta name="generator" content="Hexo 8.1.2"><meta name="Volantis" content="6.8.2"><meta charset="utf-8"><meta name="robots" content="noindex,follow"><link rel="canonical" href="https://blog.mhuig.top/categories/Web/"><meta http-equiv="x-dns-prefetch-control" content="on"><link rel="dns-prefetch" href="https://static.mhuig.top"><link rel="preconnect" href="https://static.mhuig.top" crossorigin><link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin><meta name="renderer" content="webkit"><meta name="force-rendering" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"><meta name="HandheldFriendly" content="True"><meta name="mobile-web-app-capable" content="yes"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=5"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><script>function regSW(e){"localhost"!=window.location.hostname&&"serviceWorker"in navigator&&navigator.serviceWorker.register(`${e}`).then(function(e){"localhost"==window.location.hostname&&(e.onupdatefound=function(){var r=e.installing;r.onstatechange=function(){switch(r.state){case"installed":navigator.serviceWorker.controller?console.log("Updated Service Worker."):console.log("Service Worker Success!");break;case"redundant":console.log("The installing service worker became redundant.")}}})}).catch(function(e){console.error("Error during service worker registration:",e),"undefined"==typeof swinstallretry&&(swinstallretry=1,regSW("/vue.js"))})}"serviceWorker"in navigator&&Object.freeze(navigator.serviceWorker),regSW("/vue.js")</script><link rel="apple-touch-icon" sizes="180x180" href="/lib/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/lib/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="192x192" href="/lib/favicon/android-chrome-192x192.png"><link rel="icon" type="image/png" sizes="144x144" href="/lib/favicon/android-chrome-144x144.png"><link rel="icon" type="image/png" sizes="16x16" href="/lib/favicon/favicon-16x16.png"><link rel="manifest" href="/lib/favicon/site.webmanifest"><link rel="mask-icon" href="/lib/favicon/safari-pinned-tab.svg" color="#5bbad5"><meta name="apple-mobile-web-app-title" content="MHuiG Magicland"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="application-name" content="MHuiG Magicland"><meta name="msapplication-TileColor" content="#87ceeb"><meta name="msapplication-TileImage" content="/lib/favicon/mstile-144x144.png"><meta name="theme-color" content="#87ceeb" media="(prefers-color-scheme: light)"><meta name="theme-color" content="#21232f" media="(prefers-color-scheme: dark)"><link href="/opensearch.xml" rel="search" title="MHuiG Magicland" type="application/opensearchdescription+xml"><link rel="sitemap" type="application/xml" title="MHuiG Blog Site Map" href="https://blog.mhuig.top/sitemap.xml"><link rel="author" href="https://mhuig.top"><meta name="author" content="MHuiG"><meta name="creator" content="MHuiG"><link rel="archives" href="https://blog.mhuig.top/archives/"><meta http-equiv="Content-Security-Policy" content="frame-src 'self' https://giscus.app https://bilibili.com https://player.bilibili.com https://www.bilibili.com https://*.bilibili.com;"><link rel="preload" href="/css/style.css" as="style"><link rel="preload" href="https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/media/fonts/VarelaRound/VarelaRound-Regular.ttf" as="font" type="font/ttf" crossorigin="anonymous"><link rel="preload" href="https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/media/fonts/VarelaRound/VarelaRound-Regular.ttf" as="font" type="font/ttf" crossorigin="anonymous"><link rel="alternate" href="/atom.xml" title="Magicland" type="application/atom+xml"><link rel="alternate" href="/rss2.xml" title="Magicland" type="application/rss+xml"><title>分类:Web - Magicland</title><meta name="keywords" content="MHuiG, @MHuiG, Blog, 博客, Magicland, 魔法世界"><meta desc name="description" content="宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒。「Be Yourself, Make a Difference.」 - Magic Island - MHuiG - Magicland"><meta property="og:type" content="website"><meta property="og:title" content="Magicland"><meta property="og:url" content="https://blog.mhuig.top/categories/Web/"><meta property="og:site_name" content="Magicland"><meta property="og:description" content="宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒。「Be Yourself, Make a Difference.」 - Magic Island"><meta property="og:locale"><meta property="og:image" content="https://blog.mhuig.top/lib/favicon/android-chrome-192x192.png"><meta property="article:author" content="MHuiG"><meta property="article:tag" content="MHuiG, @MHuiG, Blog, 博客, Magicland, 魔法世界"><meta name="twitter:card" content="summary"><meta name="twitter:image" content="https://blog.mhuig.top/lib/favicon/android-chrome-192x192.png"><meta name="twitter:creator" content="@iMHuiG"><meta name="twitter:site" content="@iMHuiG"><style>#safearea{display:none}.post-story+.post-story{content-visibility:auto;contain-intrinsic-size:10px 500px}:root{--blur-px:12px;--blur-bg:var(--bg-a50);--blur-sat:300%}#u-search{display:-webkit-box;display:-moz-box;display:none;position:fixed;top:0;left:0;width:100%;height:100%;padding:60px 20px;z-index:1001}@media screen and (max-width:680px){#u-search{padding:0}}.l_header{position:fixed;z-index:1000;top:0;width:100%;height:64px;background:var(--color-card);box-shadow:0 1px 2px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.l_header.auto{transition:opacity .4s ease;-webkit-transition:opacity .4s ease;-khtml-transition:opacity 0.4s ease;-moz-transition:opacity .4s ease;-o-transition:opacity .4s ease;-ms-transition:opacity .4s ease;visibility:hidden}.l_header.auto.show{opacity:1!important;-webkit-opacity:1!important;-moz-opacity:1!important;visibility:visible}.l_header .container{margin-left:16px;margin-right:16px}.l_header #wrapper{height:100%;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.l_header #wrapper .nav-main,.l_header #wrapper .nav-sub{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-khtml-flex-wrap:nowrap;-moz-flex-wrap:nowrap;-o-flex-wrap:nowrap;-ms-flex-wrap:nowrap;justify-content:space-between;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-o-justify-content:space-between;-ms-justify-content:space-between;align-items:center}.l_header #wrapper .nav-main{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.l_header #wrapper.sub .nav-main{transform:translateY(-64px);-webkit-transform:translateY(-64px);-khtml-transform:translateY(-64px);-moz-transform:translateY(-64px);-o-transform:translateY(-64px);-ms-transform:translateY(-64px)}.l_header #wrapper .nav-sub{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;opacity:0;-webkit-opacity:0;-moz-opacity:0;height:64px;width:calc(100% - 2 * 16px);position:absolute}.l_header #wrapper .nav-sub ::-webkit-scrollbar{display:-webkit-box;display:-moz-box;display:none}@media screen and (min-width:2048px){.l_header #wrapper .nav-sub{max-width:55vw;margin:auto}}.l_header #wrapper.sub .nav-sub{opacity:1;-webkit-opacity:1;-moz-opacity:1}.l_header #wrapper .title{position:relative;color:var(--color-text);padding-left:24px;max-height:64px}.l_header #wrapper .nav-main .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;line-height:64px;padding:0 24px;font-size:1.25rem;font-family:"Varela Round",system-ui,"PingFang SC","Microsoft YaHei","Source Han Sans SC","Noto Sans SC",Helvetica,Arial,sans-serif,Helvetica,monospace}.l_header #wrapper .nav-main .title img{height:64px}.l_header .nav-sub{max-width:1080px;margin:auto}.l_header .nav-sub .title{font-weight:700;font-family:"Varela Round",system-ui,"PingFang SC","Microsoft YaHei","Source Han Sans SC","Noto Sans SC",Helvetica,Arial,sans-serif,Menlo,Monaco,monospace,sans-serif;line-height:1.2;max-height:64px;white-space:normal;flex-shrink:1}.l_header .switcher{display:-webkit-box;display:-moz-box;display:none;line-height:64px;align-items:center}.l_header .switcher .s-toc{display:-webkit-box;display:-moz-box;display:none}@media screen and (max-width:768px){.l_header .switcher .s-toc{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex}}.l_header .switcher>li{height:48px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;margin:2px}@media screen and (max-width:500px){.l_header .switcher>li{margin:0 1px;height:48px}}.l_header .switcher>li>a{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;align-items:center;width:48px;height:48px;padding:.85em 1.1em;border-radius:100px;-webkit-border-radius:100px;border:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;color:var(--theme)}.l_header .switcher>li>a:hover{border:none}.l_header .switcher>li>a.active,.l_header .switcher>li>a:active{border:none;background:var(--color-site-bg)}@media screen and (max-width:500px){.l_header .switcher>li>a{width:36px;height:48px}}.l_header .nav-sub .switcher{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex}.l_header .m_search{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;height:64px;width:240px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}@media screen and (max-width:1024px){.l_header .m_search{width:44px;min-width:44px}.l_header .m_search input::placeholder{opacity:0;-webkit-opacity:0;-moz-opacity:0}.l_header .m_search:hover{width:240px}.l_header .m_search:hover input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@media screen and (min-width:500px){.l_header .m_search:hover .input{width:100%}.l_header .m_search:hover .input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@media screen and (max-width:500px){.l_header .m_search{min-width:0}.l_header .m_search input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}.l_header .m_search .form{position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;width:100%;align-items:center}.l_header .m_search .icon{position:absolute;width:36px;left:5px;color:var(--color-meta)}@media screen and (max-width:500px){.l_header .m_search .icon{display:-webkit-box;display:-moz-box;display:none}}.l_header .m_search .input{display:-webkit-box;display:-moz-box;display:block;padding-top:8px;padding-bottom:8px;line-height:1.3;width:100%;color:var(--color-text);background:var(--color-card-darken2);box-shadow:none;-webkit-box-shadow:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding-left:40px;font-size:.875rem;border-radius:8px;-webkit-border-radius:8px;border:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}@media screen and (min-width:500px){.l_header .m_search .input:focus{box-shadow:0 4px 8px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.1)}}@media screen and (max-width:500px){.l_header .m_search .input{background:var(--color-block);padding-left:8px;border:none}.l_header .m_search .input:focus,.l_header .m_search .input:hover{border:none}}@media (max-width:500px){.l_header .m_search{left:0;width:0;overflow:hidden;position:absolute;background:var(--color-card-lighten5);transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.l_header .m_search .input{border-radius:32px;-webkit-border-radius:32px;margin-left:16px;padding-left:16px}.l_header.z_search-open .m_search{width:100%}.l_header.z_search-open .m_search .input{width:calc(100% - 120px)}}ul.m-pc>li>a{color:inherit;border-bottom:2px solid transparent}ul.m-pc>li>a.active,ul.m-pc>li>a:active{border-bottom:2px solid var(--theme)}ul.list-v li:hover>ul.list-v,ul.m-pc li:hover>ul.list-v{display:-webkit-box;display:-moz-box;display:block}ul.nav-list-h{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;align-items:stretch}ul.nav-list-h>li{position:relative;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;height:100%;line-height:2.4;border-radius:4px;-webkit-border-radius:4px}ul.nav-list-h>li>a{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:600}ul.list-v{z-index:1;display:-webkit-box;display:-moz-box;display:none;position:absolute;background:var(--color-card);box-shadow:0 2px 4px 0 rgba(0,0,0,.08),0 4px 8px 0 rgba(0,0,0,.08),0 8px 16px 0 rgba(0,0,0,.08);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08),0 4px 8px 0 rgba(0,0,0,.08),0 8px 16px 0 rgba(0,0,0,.08);margin-top:-6px;border-radius:4px;-webkit-border-radius:4px;padding:8px 0}ul.list-v.show{display:-webkit-box;display:-moz-box;display:block}ul.list-v hr{margin-top:8px;margin-bottom:8px}ul.list-v>li{white-space:nowrap;word-break:keep-all}ul.list-v>li.header{font-size:.78125rem;font-weight:700;line-height:2em;color:var(--color-meta);margin:8px 16px 4px}ul.list-v>li.header i{margin-right:8px}ul.list-v>li ul{margin-left:0;display:-webkit-box;display:-moz-box;display:none;margin-top:-40px}ul.list-v .aplayer-container{min-height:64px;padding:6px 16px}ul.list-v>li>a{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;display:-webkit-box;display:-moz-box;display:block;color:var(--color-list);font-size:.875rem;font-weight:700;line-height:36px;padding:0 20px 0 16px;text-overflow:ellipsis;margin:0 4px;border-radius:4px;-webkit-border-radius:4px}@media screen and (max-width:1024px){ul.list-v>li>a{line-height:40px}}ul.list-v>li>a>i{margin-right:8px}ul.list-v>li>a.active,ul.list-v>li>a:active{color:var(--color-list-hl)}ul.list-v>li>a:hover{color:var(--color-list-hl);background:var(--color-site-bg)}.l_header .menu>ul>li>a{display:-webkit-box;display:-moz-box;display:block;padding:0 8px}.l_header .menu>ul>li>a>i{margin-right:4px}.l_header ul.nav-list-h>li{color:var(--color-list);line-height:64px}.l_header ul.nav-list-h>li>a{max-height:64px;overflow:hidden;color:inherit}.l_header ul.nav-list-h>li>a.active,.l_header ul.nav-list-h>li>a:active{color:var(--theme)}.l_header ul.nav-list-h>li:hover>a{color:var(--color-list-hl)}.l_header ul.nav-list-h>li i.music{animation:rotate-effect 1.5s linear infinite;-webkit-animation:rotate-effect 1.5s linear infinite;-khtml-animation:rotate-effect 1.5s linear infinite;-moz-animation:rotate-effect 1.5s linear infinite;-o-animation:rotate-effect 1.5s linear infinite;-ms-animation:rotate-effect 1.5s linear infinite}@-moz-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@-webkit-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@-o-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}.menu-phone li ul.list-v{right:calc(100% - .5 * 16px)}.menu-phone li ul.list-v ul{right:calc(100% - .5 * 16px)}#wrapper{max-width:1080px;margin:auto}@media screen and (min-width:2048px){#wrapper{max-width:55vw}}#wrapper .menu{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1 1;-ms-flex:1 1;flex:1 1;margin:0 16px 0 0}#wrapper .menu .list-v ul{left:calc(100% - .5 * 16px)}.menu-phone{display:-webkit-box;display:-moz-box;display:none;margin-top:16px;right:8px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.menu-phone ul{right:calc(100% - .5 * 16px)}@media screen and (max-width:500px){.menu-phone{display:-webkit-box;display:-moz-box;display:block}}.l_header{max-width:65vw;left:calc((100% - 65vw) * .5);border-bottom-left-radius:8px;border-bottom-right-radius:8px}@media screen and (max-width:2048px){.l_header{max-width:1112px;left:calc((100% - 1112px) * .5)}}@media screen and (max-width:1112px){.l_header{left:0;border-radius:0;-webkit-border-radius:0;max-width:100%}}@media screen and (max-width:500px){.l_header .container{margin-left:0;margin-right:0}.l_header #wrapper .nav-main .title{padding-left:16px;padding-right:16px}.l_header #wrapper .nav-sub{width:100%}.l_header #wrapper .nav-sub .title{overflow-y:scroll;margin-top:2px;padding:8px 16px}.l_header #wrapper .switcher{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;margin-right:8px}.l_header .menu{display:-webkit-box;display:-moz-box;display:none}}@media screen and (max-width:500px){.list-v li{max-width:270px}}@font-face{font-family:'Varela Round';src:url("https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/media/fonts/VarelaRound/VarelaRound-Regular.ttf");font-weight:'normal';font-style:'normal';font-display:swap}@font-face{font-family:'Varela Round';src:url("https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/media/fonts/VarelaRound/VarelaRound-Regular.ttf");font-weight:'normal';font-style:'normal';font-display:swap}@media (prefers-color-scheme:dark){:root{--color-mode:'dark'}:root:not([color-scheme]){--color-site-body:#121212;--color-read-bkg:#21232f;--color-read-post:#252d38;--color-site-bg:#21232f;--color-site-inner:#efefef;--color-site-footer:#666;--color-card:#252d38;--color-text:rgba(238,238,238,0.871);--color-block:rgba(68,68,68,0.65);--color-codeblock:#444;--color-inlinecode:#d56d28;--color-h1:rgba(255,255,255,0.871);--color-h2:rgba(255,255,255,0.871);--color-h3:rgba(255,255,255,0.6);--color-h4:rgba(255,255,255,0.6);--color-h5:rgba(255,255,255,0.6);--color-h6:rgba(255,255,255,0.6);--color-p:rgba(217,217,217,0.871);--color-list:rgba(217,217,217,0.871);--color-list-hl:#4dabf5;--color-meta:rgba(191,191,191,0.871);--color-link:rgba(191,191,191,0.871);--color-copyright-bkg:#21252b;--link-color:#e4e4e4;--color-text-a10:rgba(238,238,238,0.1);--color-text-a50:rgba(238,238,238,0.5);--color-text-a60:rgba(238,238,238,0.6);--color-text-a70:rgba(238,238,238,0.7);--color-text-a80:rgba(238,238,238,0.8);--color-text-a85:rgba(238,238,238,0.85);--color-text-a90:rgba(238,238,238,0.9);--color-card-a50:rgba(37,45,56,0.5);--color-card-a60:rgba(37,45,56,0.6);--color-card-a70:rgba(37,45,56,0.7);--color-card-a80:rgba(37,45,56,0.8);--color-card-a90:rgba(37,45,56,0.9);--color-card-darken2:#212832;--color-card-lighten5:#2f3947;--color-p-a20:rgba(217,217,217,0.2);--color-p-a70:rgba(217,217,217,0.7);--color-p-a75:rgba(217,217,217,0.75);--color-block-lighten3:rgba(76,76,76,0.65);--color-block-darken2:rgba(63,63,63,0.65);--color-mix60-p-card:rgba(133,137,142,0.922);--color-codeblock-darken6:#353535;--color-mix75-theme-text:rgba(74,167,241,0.968);--color-mix90-block-text:rgba(93,93,93,0.672)}:root:not([color-scheme]) img{filter:brightness(70%)!important}:root:not([color-scheme]) .blur{background:rgba(33,35,47,.9)!important}:root:not([color-scheme]) .white-box.blur{background:rgba(37,45,56,.9)!important}:root:not([color-scheme]) .nav-main .u-search-input{background:var(--color-card)!important}:root:not([color-scheme]) #l_main .article .prev-next>a{background:var(--color-block)!important}:root:not([color-scheme]) #l_main .article .prev-next>a:hover{background:var(--color-site-bg)!important}:root:not([color-scheme]) .article blockquote{background:var(--color-block)!important}:root:not([color-scheme]) .article-title a{color:var(--color-h1)!important}:root:not([color-scheme]) #u-search .modal,:root:not([color-scheme]) #u-search .modal-body,:root:not([color-scheme]) #u-search .modal-header{background:var(--color-card)!important}:root:not([color-scheme]) #u-search .modal-body .modal-results .result:hover{background:var(--color-block)!important}:root:not([color-scheme]) .u-search-input:hover{background:var(--color-block)!important}:root:not([color-scheme]) .u-search-input:focus{background:var(--color-site-body)!important}}[color-scheme=dark]{--color-site-body:#121212;--color-read-bkg:#21232f;--color-read-post:#252d38;--color-site-bg:#21232f;--color-site-inner:#efefef;--color-site-footer:#666;--color-card:#252d38;--color-text:rgba(238,238,238,0.871);--color-block:rgba(68,68,68,0.65);--color-codeblock:#444;--color-inlinecode:#d56d28;--color-h1:rgba(255,255,255,0.871);--color-h2:rgba(255,255,255,0.871);--color-h3:rgba(255,255,255,0.6);--color-h4:rgba(255,255,255,0.6);--color-h5:rgba(255,255,255,0.6);--color-h6:rgba(255,255,255,0.6);--color-p:rgba(217,217,217,0.871);--color-list:rgba(217,217,217,0.871);--color-list-hl:#4dabf5;--color-meta:rgba(191,191,191,0.871);--color-link:rgba(191,191,191,0.871);--color-copyright-bkg:#21252b;--link-color:#e4e4e4;--color-text-a10:rgba(238,238,238,0.1);--color-text-a50:rgba(238,238,238,0.5);--color-text-a60:rgba(238,238,238,0.6);--color-text-a70:rgba(238,238,238,0.7);--color-text-a80:rgba(238,238,238,0.8);--color-text-a85:rgba(238,238,238,0.85);--color-text-a90:rgba(238,238,238,0.9);--color-card-a50:rgba(37,45,56,0.5);--color-card-a60:rgba(37,45,56,0.6);--color-card-a70:rgba(37,45,56,0.7);--color-card-a80:rgba(37,45,56,0.8);--color-card-a90:rgba(37,45,56,0.9);--color-card-darken2:#212832;--color-card-lighten5:#2f3947;--color-p-a20:rgba(217,217,217,0.2);--color-p-a70:rgba(217,217,217,0.7);--color-p-a75:rgba(217,217,217,0.75);--color-block-lighten3:rgba(76,76,76,0.65);--color-block-darken2:rgba(63,63,63,0.65);--color-mix60-p-card:rgba(133,137,142,0.922);--color-codeblock-darken6:#353535;--color-mix75-theme-text:rgba(74,167,241,0.968);--color-mix90-block-text:rgba(93,93,93,0.672)}[color-scheme=dark] img{filter:brightness(70%)!important}[color-scheme=dark] .blur{background:rgba(33,35,47,.9)!important}[color-scheme=dark] .white-box.blur{background:rgba(37,45,56,.9)!important}[color-scheme=dark] .nav-main .u-search-input{background:var(--color-card)!important}[color-scheme=dark] #l_main .article .prev-next>a{background:var(--color-block)!important}[color-scheme=dark] #l_main .article .prev-next>a:hover{background:var(--color-site-bg)!important}[color-scheme=dark] .article blockquote{background:var(--color-block)!important}[color-scheme=dark] .article-title a{color:var(--color-h1)!important}[color-scheme=dark] #u-search .modal,[color-scheme=dark] #u-search .modal-body,[color-scheme=dark] #u-search .modal-header{background:var(--color-card)!important}[color-scheme=dark] #u-search .modal-body .modal-results .result:hover{background:var(--color-block)!important}[color-scheme=dark] .u-search-input:hover{background:var(--color-block)!important}[color-scheme=dark] .u-search-input:focus{background:var(--color-site-body)!important}@media screen and (max-width:500px){[color-scheme=dark] .l_header .m_search{background:var(--color-site-bg)!important}}#l_cover{min-height:64px}.cover-wrapper{top:0;left:0;max-width:100%;height:100vh;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-khtml-flex-wrap:nowrap;-moz-flex-wrap:nowrap;-o-flex-wrap:nowrap;-ms-flex-wrap:nowrap;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;align-self:center;align-content:center;color:var(--color-site-inner);padding:0 16px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;position:relative;overflow:hidden;margin-bottom:-100px}.cover-wrapper .cover-bg{position:absolute;width:100%;height:100%;background-position:center;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover}.cover-wrapper .cover-bg.lazyload:not(.loaded){opacity:0;-webkit-opacity:0;-moz-opacity:0}.cover-wrapper .cover-bg.lazyload.loaded{animation-delay:0s;animation-duration:.5s;animation-fill-mode:forwards;animation-timing-function:ease-out;animation-name:fadeIn}@-moz-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-o-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}.cover-wrapper .cover-body{z-index:1;position:relative;width:100%;height:100%}.cover-wrapper#full{height:calc(100vh + 100px);padding-bottom:100px}.cover-wrapper#half{max-height:640px;min-height:400px;height:calc(36vh - 64px + 200px)}.cover-wrapper #scroll-down{width:100%;height:64px;position:absolute;bottom:100px;text-align:center;cursor:pointer}.cover-wrapper #scroll-down .scroll-down-effects{color:#fff;font-size:24px;line-height:64px;position:absolute;width:24px;left:calc(50% - 12px);text-shadow:0 1px 2px rgba(0,0,0,.1);animation:scroll-down-effect 1.5s infinite;-webkit-animation:scroll-down-effect 1.5s infinite;-khtml-animation:scroll-down-effect 1.5s infinite;-moz-animation:scroll-down-effect 1.5s infinite;-o-animation:scroll-down-effect 1.5s infinite;-ms-animation:scroll-down-effect 1.5s infinite}@-moz-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-webkit-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-o-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}.cover-wrapper .cover-body{margin-top:64px;margin-bottom:100px}.cover-wrapper .cover-body,.cover-wrapper .cover-body .bottom,.cover-wrapper .cover-body .top{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;max-width:100%}.cover-wrapper .cover-body .bottom{margin-top:32px}.cover-wrapper .cover-body .title{font-family:"Varela Round",system-ui,"PingFang SC","Microsoft YaHei","Source Han Sans SC","Noto Sans SC",Helvetica,Arial,sans-serif,Helvetica,monospace;font-size:3.125rem;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.1)}.cover-wrapper .cover-body .subtitle{font-size:20px}.cover-wrapper .cover-body .logo{max-height:120px;max-width:calc(100% - 4 * 16px)}@media screen and (min-height:1024px){.cover-wrapper .cover-body .title{font-size:3rem}.cover-wrapper .cover-body .subtitle{font-size:1.05rem}.cover-wrapper .cover-body .logo{max-height:150px}}.cover-wrapper .cover-body .m_search{position:relative;max-width:calc(100% - 16px);width:320px;vertical-align:middle}.cover-wrapper .cover-body .m_search .form{position:relative;display:-webkit-box;display:-moz-box;display:block;width:100%}.cover-wrapper .cover-body .m_search .icon,.cover-wrapper .cover-body .m_search .input{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.cover-wrapper .cover-body .m_search .icon{position:absolute;display:-webkit-box;display:-moz-box;display:block;line-height:2.5rem;width:32px;top:0;left:5px;color:var(--color-p-a75)}.cover-wrapper .cover-body .m_search .input{display:-webkit-box;display:-moz-box;display:block;height:2.5rem;width:100%;box-shadow:none;-webkit-box-shadow:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;font-size:.875rem;-webkit-appearance:none;padding-left:36px;border-radius:1.4rem;-webkit-border-radius:1.4rem;background:var(--color-card-a60);backdrop-filter:blur(10px);border:none;color:var(--color-text)}@media screen and (max-width:500px){.cover-wrapper .cover-body .m_search .input{padding-left:36px}}.cover-wrapper .cover-body .m_search .input:hover{background:var(--color-card-a80)}.cover-wrapper .cover-body .m_search .input:focus{background:var(--color-card)}.cover-wrapper .list-h{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;flex-wrap:wrap;-webkit-flex-wrap:wrap;-khtml-flex-wrap:wrap;-moz-flex-wrap:wrap;-o-flex-wrap:wrap;-ms-flex-wrap:wrap;align-items:stretch;border-radius:4px;-webkit-border-radius:4px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cover-wrapper .list-h a{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1 0;-ms-flex:1 0;flex:1 0;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;font-weight:600}.cover-wrapper .list-h a img{display:-webkit-box;display:-moz-box;display:block;border-radius:2px;-webkit-border-radius:2px;margin:4px;min-width:40px;max-width:44px}@media screen and (max-width:768px){.cover-wrapper .list-h a img{min-width:36px;max-width:40px}}@media screen and (max-width:500px){.cover-wrapper .list-h a img{margin:2px 4px;min-width:32px;max-width:36px}}@media screen and (max-width:375px){.cover-wrapper .list-h a img{min-width:28px;max-width:32px}}.cover-wrapper{max-width:100%}.cover-wrapper.search .bottom .menu{margin-top:16px}.cover-wrapper.search .bottom .menu .list-h a{white-space:nowrap;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;align-items:baseline;padding:2px;margin:4px;color:var(--color-site-inner);opacity:.75;-webkit-opacity:0.75;-moz-opacity:0.75;text-shadow:0 1px 2px rgba(0,0,0,.05);border-bottom:2px solid transparent}.cover-wrapper.search .bottom .menu .list-h a i{margin-right:4px}.cover-wrapper.search .bottom .menu .list-h a p{font-size:.9375rem}.cover-wrapper.search .bottom .menu .list-h a.active,.cover-wrapper.search .bottom .menu .list-h a:active,.cover-wrapper.search .bottom .menu .list-h a:hover{opacity:1;-webkit-opacity:1;-moz-opacity:1;border-bottom:2px solid var(--color-site-inner)}.cover-wrapper.dock .menu,.cover-wrapper.featured .menu,.cover-wrapper.focus .menu{border-radius:6px;-webkit-border-radius:6px}.cover-wrapper.dock .menu .list-h a,.cover-wrapper.featured .menu .list-h a,.cover-wrapper.focus .menu .list-h a{-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;padding:12px;line-height:24px;border-radius:4px;-webkit-border-radius:4px;border-bottom:none;text-align:center;align-content:flex-end;color:var(--color-text-a70);font-size:1.5rem}@media screen and (max-width:500px){.cover-wrapper.dock .menu .list-h a,.cover-wrapper.featured .menu .list-h a,.cover-wrapper.focus .menu .list-h a{padding:12px 8px}}.cover-wrapper.dock .menu .list-h a i,.cover-wrapper.featured .menu .list-h a i,.cover-wrapper.focus .menu .list-h a i{margin:8px}.cover-wrapper.dock .menu .list-h a p,.cover-wrapper.featured .menu .list-h a p,.cover-wrapper.focus .menu .list-h a p{font-size:.875rem}.cover-wrapper.dock .menu .list-h a.active,.cover-wrapper.featured .menu .list-h a.active,.cover-wrapper.focus .menu .list-h a.active{background:var(--color-card);backdrop-filter:none}.cover-wrapper.dock .menu .list-h a.active i,.cover-wrapper.dock .menu .list-h a.active i+p,.cover-wrapper.featured .menu .list-h a.active i,.cover-wrapper.featured .menu .list-h a.active i+p,.cover-wrapper.focus .menu .list-h a.active i,.cover-wrapper.focus .menu .list-h a.active i+p{color:var(--theme)}.cover-wrapper.dock .menu .list-h a.active img+p,.cover-wrapper.featured .menu .list-h a.active img+p,.cover-wrapper.focus .menu .list-h a.active img+p{color:var(--color-text)}.cover-wrapper.dock .menu .list-h a:hover,.cover-wrapper.featured .menu .list-h a:hover,.cover-wrapper.focus .menu .list-h a:hover{background:var(--color-card)}.cover-wrapper.featured .menu .list-h{margin:-2px}.cover-wrapper.featured .menu .list-h a{margin:2px;background:var(--color-card-a50)}@supports (backdrop-filter:blur(20px)){.cover-wrapper.featured .menu .list-h a{background:var(--color-card-a50);backdrop-filter:saturate(200%) blur(20px)}}:root{--hue:206.57142857142856deg;--sat:89.74358974358974%;--light:54.11764705882353%;--alpha:1;--theme:hsla(var(--hue) var(--sat) var(--light) / 1);--theme-a10:hsla(var(--hue) var(--sat) var(--light) / 0.1);--theme-a20:hsla(var(--hue) var(--sat) var(--light) / 0.2);--theme-a30:hsla(var(--hue) var(--sat) var(--light) / 0.3);--theme-a50:hsla(var(--hue) var(--sat) var(--light) / 0.5);--theme-a90:hsla(var(--hue) var(--sat) var(--light) / 0.9);--accent:#ff5722;--link:hsla(206.57142857142856deg 89.74358974358974% 54.11764705882353% / 1);--link-a20:hsla(206.57142857142856deg 89.74358974358974% 54.11764705882353% / 0.2);--background:hsla(210deg 20% 98% / 1);--card:#fff;--bg-a20:hsla(210deg 0% 100% / 0.2);--bg-a50:hsla(210deg 0% 100% / 0.5);--bg-a60:hsla(210deg 0% 100% / 0.6);--bg-a75:hsla(210deg 0% 100% / 0.75);--bg-a100:hsla(210deg 0% 100% / 1);--text:hsla(210deg 0% 0% / 1);--text-reverse:hsla(210deg 0% 100% / 1);--text-p1:hsla(210deg 0% 0% / 0.8);--text-p2:hsla(210deg 0% 0% / 0.7);--text-p3:hsla(210deg 0% 0% / 0.5);--text-p4:hsla(210deg 0% 0% / 0.4);--text-meta:hsla(210deg 0% 0% / 0.2);--text-code:hsla(210deg 0% 0% / 0.9);--text-a10:hsla(210deg 0% 0% / 0.1);--text-a20:hsla(210deg 0% 0% / 0.2);--block:hsla(210deg 50% 12% / 0.04);--block-border:hsla(210deg 50% 12% / 0.06)}@media (prefers-color-scheme:dark){:root{--background:hsla(210deg 8% 12% / 1);--card:hsla(210deg 10% 24% / 1);--bg-a20:hsla(210deg 0% 0% / 0.2);--bg-a50:hsla(210deg 0% 0% / 0.5);--bg-a60:hsla(210deg 0% 0% / 0.6);--bg-a75:hsla(210deg 0% 0% / 0.75);--bg-a100:hsla(210deg 0% 0% / 1);--text:hsla(210deg 0% 100% / 1);--text-reverse:hsla(210deg 0% 0% / 1);--text-p1:hsla(210deg 0% 100% / 0.8);--text-p2:hsla(210deg 0% 100% / 0.7);--text-p3:hsla(210deg 0% 100% / 0.5);--text-p4:hsla(210deg 0% 100% / 0.4);--text-meta:hsla(210deg 0% 100% / 0.2);--text-code:hsla(210deg 0% 100% / 0.9);--text-a10:hsla(210deg 0% 100% / 0.1);--text-a20:hsla(210deg 0% 100% / 0.2);--block:hsla(210deg 24% 72% / 0.08);--block-border:hsla(210deg 24% 72% / 0.12);--text-code:hsla(20 75 60 / 1)}}@media screen and (prefers-color-scheme:dark) and (max-width:667px){:root{--background:#000}}:root[color-scheme=light]{--background:hsla(210deg 20% 98% / 1);--card:#fff;--bg-a20:hsla(210deg 0% 100% / 0.2);--bg-a50:hsla(210deg 0% 100% / 0.5);--bg-a60:hsla(210deg 0% 100% / 0.6);--bg-a75:hsla(210deg 0% 100% / 0.75);--bg-a100:hsla(210deg 0% 100% / 1);--text:hsla(210deg 0% 0% / 1);--text-reverse:hsla(210deg 0% 100% / 1);--text-p1:hsla(210deg 0% 0% / 0.8);--text-p2:hsla(210deg 0% 0% / 0.7);--text-p3:hsla(210deg 0% 0% / 0.5);--text-p4:hsla(210deg 0% 0% / 0.4);--text-meta:hsla(210deg 0% 0% / 0.2);--text-code:hsla(210deg 0% 0% / 0.9);--text-a10:hsla(210deg 0% 0% / 0.1);--text-a20:hsla(210deg 0% 0% / 0.2);--block:hsla(210deg 50% 12% / 0.04);--block-border:hsla(210deg 50% 12% / 0.06)}:root[color-scheme=dark]{--background:hsla(210deg 8% 12% / 1);--card:hsla(210deg 10% 24% / 1);--bg-a20:hsla(210deg 0% 0% / 0.2);--bg-a50:hsla(210deg 0% 0% / 0.5);--bg-a60:hsla(210deg 0% 0% / 0.6);--bg-a75:hsla(210deg 0% 0% / 0.75);--bg-a100:hsla(210deg 0% 0% / 1);--text:hsla(210deg 0% 100% / 1);--text-reverse:hsla(210deg 0% 0% / 1);--text-p1:hsla(210deg 0% 100% / 0.8);--text-p2:hsla(210deg 0% 100% / 0.7);--text-p3:hsla(210deg 0% 100% / 0.5);--text-p4:hsla(210deg 0% 100% / 0.4);--text-meta:hsla(210deg 0% 100% / 0.2);--text-code:hsla(210deg 0% 100% / 0.9);--text-a10:hsla(210deg 0% 100% / 0.1);--text-a20:hsla(210deg 0% 100% / 0.2);--block:hsla(210deg 24% 72% / 0.08);--block-border:hsla(210deg 24% 72% / 0.12);--text-code:hsla(20 75 60 / 1)}@media screen and (max-width:667px){:root[color-scheme=dark]{--background:#000}}:root{--color-site-body:#87ceeb;--color-site-bg:#87ceeb;--color-site-inner:#555;--color-site-footer:#666;--color-card:#fff;--color-text:#444;--color-block:#f6f6f6;--color-inlinecode:#d56d28;--color-codeblock:#fff7ea;--color-h1:#3a3a3a;--color-h2:#3a3a3a;--color-h3:#333;--color-h4:#444;--color-h5:#555;--color-h6:#666;--color-p:#444;--color-list:#666;--color-list-hl:#1a78c2;--color-meta:#888;--color-read-bkg:#e0d8c8;--color-read-post:#f8f1e2;--color-copyright-bkg:#f5f5f5;--link-color:#00323c;--color-text-a10:rgba(68,68,68,0.1);--color-text-a50:rgba(68,68,68,0.5);--color-text-a60:rgba(68,68,68,0.6);--color-text-a70:rgba(68,68,68,0.7);--color-text-a80:rgba(68,68,68,0.8);--color-text-a85:rgba(68,68,68,0.85);--color-text-a90:rgba(68,68,68,0.9);--color-card-a50:rgba(255,255,255,0.5);--color-card-a60:rgba(255,255,255,0.6);--color-card-a70:rgba(255,255,255,0.7);--color-card-a80:rgba(255,255,255,0.8);--color-card-a90:rgba(255,255,255,0.9);--color-card-darken2:#fafafa;--color-card-lighten5:#fff;--color-p-a20:rgba(68,68,68,0.2);--color-p-a70:rgba(68,68,68,0.7);--color-p-a75:rgba(68,68,68,0.75);--color-block-lighten3:#fefefe;--color-block-darken2:#f1f1f1;--color-mix60-p-card:#8e8e8e;--color-codeblock-darken6:#ffebcb;--color-mix75-theme-text:#2981c7;--color-mix90-block-text:#e4e4e4}:root{text-autospace:normal}*{box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;outline:0;margin:0;padding:0}::-webkit-scrollbar{height:4px;width:4px}::-webkit-scrollbar-track-piece{background:0 0}::-webkit-scrollbar-thumb{background:var(--theme);cursor:pointer;border-radius:2px;-webkit-border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--accent)}html{color:var(--color-text);width:100%;height:100%;font-family:"Varela Round",system-ui,"PingFang SC","Microsoft YaHei","Source Han Sans SC","Noto Sans SC",Helvetica,Arial,sans-serif,Menlo,Monaco,monospace,sans-serif;font-size:16px}html>::-webkit-scrollbar{height:4px;width:4px}html>::-webkit-scrollbar-track-piece{background:0 0}html>::-webkit-scrollbar-thumb{background:var(--theme);cursor:pointer;border-radius:2px;-webkit-border-radius:2px}html>::-webkit-scrollbar-thumb:hover{background:var(--accent)}body{background-color:var(--color-site-body);text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent;line-height:1.6;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body.modal-active{overflow:hidden}@media screen and (max-width:680px){body.modal-active{position:fixed;top:0;right:0;bottom:0;left:0}}a{color:var(--link);cursor:pointer;text-decoration:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}a:hover{color:var(--accent)}a:active,a:hover{outline:0}ol,ul{padding-left:0}ol li,ul li{list-style:none}header{display:-webkit-box;display:-moz-box;display:block}img{border:0;background:0 0;max-width:100%}svg:not(:root){overflow:hidden}hr{-moz-box-sizing:content-box;box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;height:0;border:0;border-radius:1px;-webkit-border-radius:1px;border-bottom:1px solid rgba(68,68,68,.1)}button,input{color:inherit;font:inherit;margin:0;background:0 0;border:none}button{overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}@supports (backdrop-filter:blur(20px)){.blur{background:var(--color-card-a90)!important;backdrop-filter:saturate(200%) blur(20px)}}.shadow{box-shadow:0 1px 2px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.shadow.floatable{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.shadow.floatable:hover{box-shadow:0 2px 4px 0 rgba(0,0,0,.1),0 4px 8px 0 rgba(0,0,0,.1),0 8px 16px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.1),0 4px 8px 0 rgba(0,0,0,.1),0 8px 16px 0 rgba(0,0,0,.1)}@media screen and (prefers-color-scheme:dark) and (max-width:500px){.l_header .m_search{background:var(--color-site-bg)!important}}.zh-dash{font-family:"PingFang SC","Microsoft YaHei","Noto Sans SC","Source Han Sans SC",sans-serif;white-space:nowrap}mjx-container{padding:0 0!important}mjx-container:not([display=true]){padding:4px 2px 4px 6px!important}mjx-container[jax=SVG]{direction:ltr}mjx-container[jax=SVG]>svg{overflow:visible}mjx-container[jax=SVG][display=true]{display:-webkit-box;display:-moz-box;display:block;text-align:center;margin:1em 0}mjx-container[jax=SVG][justify=left]{text-align:left}mjx-container[jax=SVG][justify=right]{text-align:right}g[data-mml-node=merror]>g{fill:#f00;stroke:#f00}g[data-mml-node=merror]>rect[data-background]{fill:#ff0;stroke:none}g[data-mml-node=mtable]>line[data-line]{stroke-width:70px;fill:none}g[data-mml-node=mtable]>rect[data-frame]{stroke-width:70px;fill:none}g[data-mml-node=mtable]>.mjx-dashed{stroke-dasharray:140}g[data-mml-node=mtable]>.mjx-dotted{stroke-linecap:round;stroke-dasharray:0,140}g[data-mml-node=mtable]>svg{overflow:visible}[jax=SVG] mjx-tool{display:-webkit-box;display:-moz-box;display:inline-block;position:relative;width:0;height:0}[jax=SVG] mjx-tool>mjx-tip{position:absolute;top:0;left:0}mjx-tool>mjx-tip{display:-webkit-box;display:-moz-box;display:inline-block;padding:.2em;border:1px solid #888;font-size:70%;background-color:#f8f8f8;color:#000;box-shadow:2px 2px 5px #aaa;-webkit-box-shadow:2px 2px 5px #aaa}g[data-mml-node=maction][data-toggle]{cursor:pointer}mjx-status{display:-webkit-box;display:-moz-box;display:block;position:fixed;left:1em;bottom:1em;min-width:25%;padding:.2em .4em;border:1px solid #888;font-size:90%;background-color:#f8f8f8;color:#000}foreignObject[data-mjx-xml]{font-family:initial;line-height:normal;overflow:visible}.MathJax path{stroke-width:3}mjx-container[display=true]{overflow:auto hidden}mjx-container[display=true]+br{display:-webkit-box;display:-moz-box;display:none}.fa-brands.color-github,.fa-duotone.color-github,.fa-light.color-github,.fa-regular.color-github,.fa-solid.color-github,.fa-thin.color-github,.fa.color-github,.fad.color-github,.fal.color-github,.far.color-github,.fas.color-github,.iziToast>.iziToast-body .iziToast-icon.color-github{color:#000}.fa-brands.color-friends,.fa-duotone.color-friends,.fa-light.color-friends,.fa-regular.color-friends,.fa-solid.color-friends,.fa-thin.color-friends,.fa.color-friends,.fad.color-friends,.fal.color-friends,.far.color-friends,.fas.color-friends,.iziToast>.iziToast-body .iziToast-icon.color-friends{color:#d31ee9}.fa-brands.color-about,.fa-duotone.color-about,.fa-light.color-about,.fa-regular.color-about,.fa-solid.color-about,.fa-thin.color-about,.fa.color-about,.fad.color-about,.fal.color-about,.far.color-about,.fas.color-about,.iziToast>.iziToast-body .iziToast-icon.color-about{color:#0095ff}.fa-brands.color-travellings,.fa-duotone.color-travellings,.fa-light.color-travellings,.fa-regular.color-travellings,.fa-solid.color-travellings,.fa-thin.color-travellings,.fa.color-travellings,.fad.color-travellings,.fal.color-travellings,.far.color-travellings,.fas.color-travellings,.iziToast>.iziToast-body .iziToast-icon.color-travellings{color:#734ae6}.cover-wrapper .cover-body .subtitle{font-size:.875rem}</style><link rel="stylesheet" href="/css/style.css" media="print" onload='this.media="all",this.onload=null'><noscript><link rel="stylesheet" href="/css/style.css"></noscript><script>let userColorScheme=localStorage.getItem("color-scheme");userColorScheme&&document.documentElement.setAttribute("color-scheme",userColorScheme)</script><script>window.MSInputMethodContext&&document.documentMode&&document.write('<style>html{overflow-x: hidden !important;overflow-y: hidden !important;}.kill-ie{text-align:center;height: 100%;margin-top: 15%;margin-bottom: 5500%;}.kill-t{font-size: 2rem;}.kill-c{font-size: 1.2rem;}#l_header,#l_body{display: none;}</style><div class="kill-ie"><span class="kill-t"><b>抱歉,您的浏览器无法访问本站</b></span><br/><span class="kill-c">微软已经于2016年终止了对 Internet Explorer (IE) 10 及更早版本的支持,<br/>继续使用存在极大的安全隐患,请使用当代主流的浏览器进行访问。</span><br/><a target="_blank" rel="noopener" href="https://blogs.windows.com/windowsexperience/2021/05/19/the-future-of-internet-explorer-on-windows-10-is-in-microsoft-edge/"><strong>了解详情 ></strong></a></div>')</script><noscript><style>html{overflow-x:hidden!important;overflow-y:hidden!important}.kill-noscript{text-align:center;height:100%;margin-top:15%;margin-bottom:5500%}.kill-t{font-size:2rem}.kill-c{font-size:1.2rem}#l_body,#l_header{display:none}</style><div class="kill-noscript"> <span class="kill-t"><b>抱歉,您的浏览器无法访问本站</b></span><br> <span class="kill-c">本页面需要浏览器支持(启用)JavaScript</span><br> <a target="_blank" rel="external nofollow noopener noreferrer" href="https://www.baidu.com/s?wd=启用JavaScript"><strong>了解详情 ></strong></a></div></noscript><script>!function(){const e=new WeakMap,t=new Proxy({},{get(o,n){const l=e.get(t);return l?.[n]},set(o,n,l){e.has(t)||e.set(t,Object.create(null));return e.get(t)[n]=l,!0},deleteProperty(o,n){const l=e.get(t);return!(!l||!Object.prototype.hasOwnProperty.call(l,n))&&(delete l[n],0===Object.keys(l).length&&e.delete(t),!0)},ownKeys(o){const n=e.get(t);return n?Object.keys(n):[]},getOwnPropertyDescriptor(o,n){const l=e.get(t);if(l&&Object.prototype.hasOwnProperty.call(l,n))return{value:l[n],writable:!0,enumerable:!0,configurable:!0}}});Object.defineProperty(window,"volantis",{value:t,writable:!0,configurable:!0,enumerable:!0})}(),volantis.dom={},volantis.simpleTextHash=e=>{let t=5381;for(let o=0;o<e.length;o++)t=(t<<5)+t+e.charCodeAt(o),t&=t;return t.toString(16).padStart(8,"0")},volantis.getFunctionHash=e=>{const t=e.toString();return volantis.simpleTextHash(t)},volantis.EventListener={list:[],remove(){this.list.forEach(e=>{e.ele.removeEventListener(e.type,e.f,!1)}),this.list=[]}};class VolantisEventListener{constructor(e,t,o){this.type=e,this.f=t,this.ele=o}}class VolantisDom{constructor(e){return this._ele=e||document.createElement("div"),new Proxy(this,{get:(e,t)=>void 0!==e[t]?e[t]:void 0!==e._ele[t]?"function"==typeof e._ele[t]?e._ele[t].bind(e._ele):e._ele[t]:void 0,set:(e,t,o)=>void 0!==e._ele[t]?(e._ele[t]=o,!0):(e[t]=o,!0)})}find(e){const t=this._ele.querySelector(e);return t?new VolantisDom(t):null}hasClass(e){return this._ele.classList.contains(e)}addClass(e){return"string"!=typeof e||e.split(" ").forEach(e=>{e&&this._ele.classList.add(e)}),this}removeClass(e){return"string"!=typeof e||e.split(" ").forEach(e=>{e&&this._ele.classList.remove(e)}),this}toggleClass(e){return"string"!=typeof e||e.split(" ").forEach(e=>{e&&this._ele.classList.toggle(e)}),this}on(e,t,o=!0){return"function"!=typeof t||(this._ele.addEventListener(e,t,!1),o&&volantis.EventListener.list.push(new VolantisEventListener(e,t,this._ele))),this}click(e,t){return this.on("click",e,t)}scroll(e,t){return this.on("scroll",e,t)}html(e){return void 0===e?this._ele.innerHTML:(this._ele.innerHTML=e,this)}hide(){return this._ele.classList.remove("show"),this._ele.style.removeProperty("display"),this}show(){return this._ele.classList.add("show"),this._ele.style.removeProperty("display"),this}}volantis.dom.$=e=>e?e instanceof VolantisDom?e:e instanceof NodeList||e instanceof HTMLCollection?Array.from(e).map(e=>new VolantisDom(e)):e instanceof Node?new VolantisDom(e):null:null;class RunItem{constructor(){this.list=[]}start(){this.list.forEach(e=>e.run())}push(e,t,o=!0){if("function"!=typeof e)return;let n=e;o&&(n=()=>{volantis.requestAnimationFrame(e)}),t=t||volantis.getFunctionHash(e);const l=this.list.findIndex(e=>e.name===t);-1===l?this.list.push(new TaskItem(n,t)):this.list[l]=new TaskItem(n,t)}remove(e){"string"==typeof e&&(this.list=this.list.filter(t=>t.name!==e))}}class TaskItem{constructor(e,t){this.name=t||volantis.getFunctionHash(e),this.fn=e}run(){try{this.fn()}catch(e){console.error(`Error executing task ${this.name}:`,e)}}}function errorImgAvatar(e){e.src=volantis.GLOBAL_CONFIG.default.avatar,e.srcset=volantis.GLOBAL_CONFIG.default.avatar,e.onerror=null}function errorImgCover(e){e.src=volantis.GLOBAL_CONFIG.default.cover,e.srcset=volantis.GLOBAL_CONFIG.default.cover,e.onerror=null}volantis.pjax={},volantis.pjax.method={complete:new RunItem,error:new RunItem,send:new RunItem},volantis.pjax=Object.assign(volantis.pjax,{push:volantis.pjax.method.complete.push.bind(volantis.pjax.method.complete),error:volantis.pjax.method.error.push.bind(volantis.pjax.method.error),send:volantis.pjax.method.send.push.bind(volantis.pjax.method.send)}),volantis.rightmenu={},volantis.rightmenu.method={handle:new RunItem},volantis.rightmenu=Object.assign(volantis.rightmenu,{handle:volantis.rightmenu.method.handle.push.bind(volantis.rightmenu.method.handle)}),volantis.dark={},volantis.dark.method={toggle:new RunItem},volantis.dark=Object.assign(volantis.dark,{push:volantis.dark.method.toggle.push.bind(volantis.dark.method.toggle)}),volantis.js=(e,t)=>new Promise((o,n)=>{setTimeout(function(){var l;if(document.querySelector(`script[src="${l=e,l.replace(/[#".'()[\]]/g,"\\$&")}"]`))return void o();const i=document.createElement("script");i.src=e;if(i.onload=()=>{"function"==typeof t&&t(),o()},i.onerror=()=>n(new Error(`Failed to load script: ${e}`)),t&&"object"==typeof t&&!Array.isArray(t))for(const e in t)t.hasOwnProperty(e)&&("onload"===e?i.onload=()=>{t[e](),o()}:"pjax"===e?(i.setAttribute("pjax",""),i.setAttribute("data-pjax","")):!0===t[e]?i.setAttribute(e,""):i.setAttribute(e,t[e]));(document.head||document.documentElement).appendChild(i)})}),volantis.css=e=>new Promise((t,o)=>{setTimeout(function(){var n;if(document.querySelector(`link[href="${n=e,n.replace(/[#".'()[\]]/g,"\\$&")}"]`))return void t();const l=document.createElement("link");Object.assign(l,{rel:"stylesheet",href:e,onload:()=>t(),onerror:()=>o(new Error(`Failed to load CSS: ${e}`))}),document.head.appendChild(l)})}),volantis.import={jQuery:()=>"undefined"==typeof jQuery?volantis.js(volantis.GLOBAL_CONFIG.cdn.jquery):new Promise(e=>{e()})},volantis.throttle=(e,t=200)=>{let o=0;return function(...n){const l=Date.now();l-o>=t&&(e.apply(this,n),o=l)}},volantis.debounce=(e,t=200)=>{let o=null;return function(){o&&clearTimeout(o),o=setTimeout(()=>{e.apply(this,arguments),o=null},t)}},volantis.requestAnimationFrame=e=>(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(e){return window.setTimeout(e,1e3/60)}),window.requestAnimationFrame(e)),volantis.rafThrottle=e=>{let t=null;return(...o)=>{t||(t=volantis.requestAnimationFrame(()=>{e(...o),t=null}))}},volantis.layoutHelper=(e,t,o={})=>{const{clean:n=!1,pjax:l=!0}={...o},i=()=>{const o=document.createElement("div");o.innerHTML=t;const l=document.querySelector(`#layoutHelper-${e}`);l&&(n&&(l.innerHTML=""),l.append(o))};i(),l&&volantis.pjax.push(i,`layoutHelper-${e}`)},volantis.scroll={engine:new RunItem,unengine:new RunItem},volantis.scroll=Object.assign(volantis.scroll,{push:volantis.scroll.engine.push.bind(volantis.scroll.engine)}),volantis.scroll.getScrollTop=()=>{let e;return window.pageYOffset?e=window.pageYOffset:document.compatMode&&"BackCompat"!=document.compatMode?e=document.documentElement.scrollTop:document.body&&(e=document.body.scrollTop),e},volantis.scroll.scrollHeight=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},volantis.scroll.offsetHeight=function(){return Math.min(document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},volantis.scroll.progress=function(){return volantis.scroll.getScrollTop()/(volantis.scroll.scrollHeight()-volantis.scroll.offsetHeight())},volantis.scroll.handleScrollEvents=()=>{volantis.scroll.lastScrollTop=volantis.scroll.getScrollTop(),volantis.requestAnimationFrame(function e(){const t=volantis.scroll.getScrollTop();volantis.scroll.lastScrollTop!==t?(volantis.scroll.del=t-volantis.scroll.lastScrollTop,volantis.scroll.lastScrollTop=t,volantis.scroll.unengine.list=[],volantis.scroll.engine.start()):volantis.scroll.unengine.start(),volantis.requestAnimationFrame(e)})},volantis.scroll.handleScrollEvents(),volantis.scroll.ele=null,volantis.scroll.to=(e,t={})=>{e&&(volantis.scroll.ele=e,opt={top:e.getBoundingClientRect().top+document.documentElement.scrollTop,behavior:volantis.GLOBAL_CONFIG.scroll_behavior},"top"in t&&(opt.top=t.top),"behavior"in t&&(opt.behavior=t.behavior),"addTop"in t&&(opt.top+=t.addTop),"observerDic"in t||(t.observerDic=100),window.scrollTo(opt),t.observer&&setTimeout(()=>{volantis.scroll.ele==e&&volantis.scroll.unengine.push(()=>{let o=e.getBoundingClientRect().top;o>=-t.observerDic&&o<=t.observerDic||volantis.scroll.to(e,t),volantis.scroll.unengine.remove("unengineObserver")},"unengineObserver")},1e3))},volantis.cleanContentVisibility=()=>{document.querySelector(".post-story")&&(console.log("cleanContentVisibility"),document.querySelectorAll(".post-story").forEach(e=>{e.classList.remove("post-story")}))};const nativeSetTimeout=window.setTimeout,nativeSetInterval=window.setInterval,nativeClearTimeout=window.clearTimeout,nativeClearInterval=window.clearInterval;volantis.activeTimeout=[],volantis.activeInterval=[],window.setTimeout=function(e,t,...o){const n=nativeSetTimeout(function(...t){try{return e.apply(this,t)}finally{const e=volantis.activeTimeout.indexOf(n);-1!==e&&volantis.activeTimeout.splice(e,1)}},t,...o);return volantis.activeTimeout.push(n),n},window.setInterval=function(e,t,...o){const n=nativeSetInterval(e,t,...o);return volantis.activeInterval.push(n),n},window.clearTimeout=function(e){nativeClearTimeout(e);const t=volantis.activeTimeout.indexOf(e);-1!==t&&volantis.activeTimeout.splice(t,1)},window.clearInterval=function(e){nativeClearInterval(e);const t=volantis.activeInterval.indexOf(e);-1!==t&&volantis.activeInterval.splice(t,1)},volantis.getActiveInterval=function(){return[...volantis.activeInterval]},volantis.getActiveTimeout=function(){return[...volantis.activeTimeout]},volantis.clearAllTimers=function(){volantis.getActiveInterval().forEach(function(e){clearInterval(e)}),volantis.getActiveTimeout().forEach(function(e){clearTimeout(e)})},volantis.pjax.send(volantis.clearAllTimers,"clearAllTimers"),document.addEventListener("DOMContentLoaded",function(){volantis.dom.bodyAnchor=volantis.dom.$(document.getElementById("safearea")),volantis.dom.topBtn=volantis.dom.$(document.getElementById("s-top")),volantis.dom.wrapper=volantis.dom.$(document.getElementById("wrapper")),volantis.dom.coverAnchor=volantis.dom.$(document.querySelector("#l_cover .cover-wrapper")),volantis.dom.switcher=volantis.dom.$(document.querySelector("#l_header .switcher .s-search")),volantis.dom.header=volantis.dom.$(document.getElementById("l_header")),volantis.dom.search=volantis.dom.$(document.querySelector("#l_header .m_search")),volantis.dom.mPhoneList=volantis.dom.$(document.querySelectorAll("#l_header .m-phone .list-v"))})</script><script>volantis.debug=!1,volantis.GLOBAL_CONFIG={root:"/",debug:!1,default:{avatar:"https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/media/placeholder/avatar/round/3442075.svg",link:"https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/media/placeholder/link/8f277b4ee0ecd.svg",cover:"https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/media/placeholder/cover/76b86c0226ffd.svg",image:"https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/media/placeholder/image/2659360.svg",topic:"https://static.mhuig.top/gh/cdn-x/placeholder@1.0.12/image/10433048.png",project:"https://static.mhuig.top/gh/cdn-x/placeholder@1.0.12/image/2779789.png",banner:"https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.12/banner/books.jpg",loading:"https://api.iconify.design/eos-icons:three-dots-loading.svg?color=%231cd0fd",image_onerror:"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2rem' height='2rem' viewBox='0 0 24 24'%3E%3C!-- Icon from Solar by 480 Design - https://creativecommons.org/licenses/by/4.0/ --%3E%3Cpath fill='%23F44336' d='M22 12.698c-.002 1.47-.013 2.718-.096 3.743c-.097 1.19-.296 2.184-.74 3.009a4.2 4.2 0 0 1-.73.983c-.833.833-1.893 1.21-3.237 1.39C15.884 22 14.2 22 12.053 22h-.106c-2.148 0-3.83 0-5.144-.177c-1.343-.18-2.404-.557-3.236-1.39c-.738-.738-1.12-1.656-1.322-2.795c-.2-1.12-.236-2.512-.243-4.241Q1.999 12.737 2 12v-.054c0-2.148 0-3.83.177-5.144c.18-1.343.557-2.404 1.39-3.236s1.893-1.21 3.236-1.39c1.168-.157 2.67-.175 4.499-.177a.697.697 0 1 1 0 1.396c-1.855.002-3.234.018-4.313.163c-1.189.16-1.906.464-2.436.994S3.72 5.8 3.56 6.99C3.397 8.2 3.395 9.788 3.395 12v.784l.932-.814a2.14 2.14 0 0 1 2.922.097l3.99 3.99a1.86 1.86 0 0 0 2.385.207l.278-.195a2.79 2.79 0 0 1 3.471.209l2.633 2.37c.265-.557.423-1.288.507-2.32c.079-.972.09-2.152.091-3.63a.698.698 0 0 1 1.396 0' opacity='.5'/%3E%3Cpath fill='%23F44336' fill-rule='evenodd' d='M17.5 11c-2.121 0-3.182 0-3.841-.659S13 8.621 13 6.5s0-3.182.659-3.841S15.379 2 17.5 2s3.182 0 3.841.659S22 4.379 22 6.5s0 3.182-.659 3.841S19.621 11 17.5 11m-1.47-7.03a.75.75 0 1 0-1.06 1.06l1.47 1.47l-1.47 1.47a.75.75 0 0 0 1.06 1.06l1.47-1.47l1.47 1.47a.75.75 0 1 0 1.06-1.06L18.56 6.5l1.47-1.47a.75.75 0 0 0-1.06-1.06L17.5 5.44z' clip-rule='evenodd'/%3E%3C/svg%3E"},lastupdate:new Date(1787014577137),scroll_behavior:"smooth",cdn:{jquery:"https://static.mhuig.top/npm/jquery@3.7.1/dist/jquery.min.js",izitoast_css:"https://static.mhuig.top/npm/izitoast@1.4.0/dist/css/iziToast.min.css",izitoast_js:"https://static.mhuig.top/npm/izitoast@1.4.0/dist/js/iziToast.min.js",fancybox_css:"https://static.mhuig.top/npm/@fancyapps/ui@5.0.36/dist/fancybox/fancybox.css",fancybox_js:"https://static.mhuig.top/npm/@fancyapps/ui@5.0.36/dist/fancybox/fancybox.umd.js"},sidebar:{webinfo:{lastupd:{enable:!1,friendlyShow:!0},runtime:{data:"2019/08/19",unit:"天"}}},plugins:{message:{enable:!1,icon:{default:"fa-solid fa-info-circle light-blue",quection:"fa-solid fa-question-circle light-blue"},time:{default:5e3,quection:2e4},position:"topRight",transitionIn:"bounceInLeft",transitionOut:"fadeOutRight",titleColor:"var(--color-text)",messageColor:"var(--color-text)",backgroundColor:"var(--color-card)",zindex:2147483647,copyright:{enable:!0,title:"知识共享许可协议",message:"请遵守 CC BY-NC-SA 4.0 协议。",icon:"far fa-copyright light-blue"},aplayer:{enable:!0,play:"fa-solid fa-play",pause:"fa-solid fa-pause"},rightmenu:{enable:!0,notice:!0}},aplayer:{id:1480000098,enable:!0}},tag_plugins:{chat:{api:"https://siteinfo.listentothewind.cn/api/v1"}},search:{dataPath:"/content.json"},languages:{search:{hits_empty:"找不到您查询的内容:${query}",hits_stats:"找到 ${hits} 条结果,用时 ${time} 毫秒",normal:"输入关键词搜索",hits_found:"找到 ${totalResults} 个相关结果",history:"搜索历史",no_history:"暂无搜索历史",clear_history:"清除历史",filter_all:"全部",filter_posts:"文章",filter_pages:"页面",filter_tags:"标签",searching:"搜索中...",placeholder:"搜索文章、标签或分类...",label_posts:"文章",label_pages:"页面",label_tags:"标签"},search:{no_title:"无标题",config_invalid:"搜索配置无效,请检查设置。"}}}</script><script type="application/ld+json">[{"@context":"http://schema.org","@type":"Organization","name":"MHuiG Magicland","url":"https://blog.mhuig.top/","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png","width":192,"height":192}},{"@context":"http://schema.org","@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png"},"url":"https://blog.mhuig.top/","sameAs":["https://github.com/MHuiG","https://twitter.com/iMHuiG","https://t.me/MHuiG","https://keybase.io/MHuiG"],"description":"「Be Yourself, Make a Difference.」"},{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://blog.mhuig.top/","name":"Magicland"}},{"@type":"ListItem","position":2,"item":{"@id":"https://blog.mhuig.top/categories/Web/","name":"Web"}}]},{"@context":"http://schema.org","@type":"WebSite","name":"MHuiG Magicland","url":"https://blog.mhuig.top/","keywords":"MHuiG, @MHuiG, Blog, 博客, Magicland, 魔法世界","description":"宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒。「Be Yourself, Make a Difference.」 - Magic Island","author":{"@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png"},"url":"https://blog.mhuig.top/","description":"「Be Yourself, Make a Difference.」"},"publisher":{"@type":"Organization","name":"MHuiG Magicland","url":"https://blog.mhuig.top/","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png","width":192,"height":192}},"potentialAction":{"@type":"SearchAction","name":"CoCo | The Cat of MHuiG","target":{"@type":"EntryPoint","urlTemplate":"https://blog.mhuig.top/havefun/coco/?s={search_term_string}"},"query-input":"required name=search_term_string"}},{"@context":"http://schema.org","@type":"BlogPosting","description":"宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒。「Be Yourself, Make a Difference.」 - Magic Island","inLanguage":"zh-Hans","mainEntityOfPage":{"@type":"WebPage"},"author":{"@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png"},"url":"https://blog.mhuig.top/"},"publisher":{"@type":"Organization","name":"MHuiG Magicland","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png","width":192,"height":192}},"wordCount":0,"image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png","width":192,"height":192}}]</script></head><body itemscope itemtype="http://schema.org/WebPage"><pjax></pjax><header itemscope itemtype="http://schema.org/WPHeader" id="l_header" class="l_header auto shadow floatable blur show" style="opacity:0"><div class="container"><div id="wrapper"><div class="nav-sub"><p class="title"></p><ul class="switcher nav-list-h m-phone" id="pjax-header-nav-list"><li><a id="s-comment" class="fa-solid fa-comments fa-fw" target="_self" title="comment"></a></li><li><a id="s-toc" class="s-toc fa-solid fa-list fa-fw" target="_self" title="toc"></a></li></ul></div><div class="nav-main"> <a class="title flat-box" target="_self" href="/">MHuiG</a><div class="menu navigation"><ul class="nav-list-h m-pc"><li><a class="menuitem flat-box faa-parent animated-hover" title="索引"><i class="fa-duotone fa-list-alt fa-fw"></i> 索引</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/notes/" title="便签" active-action="action-notes"><i class="fa-duotone fa-books fa-fw"></i> 便签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/categories/" title="分类" active-action="action-categories"><i class="fa-duotone fa-folder-open fa-fw"></i> 分类</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/tags/" title="标签" active-action="action-tags"><i class="fa-duotone fa-tags fa-fw"></i> 标签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/archives/" title="归档" active-action="action-archives"><i class="fa-duotone fa-archive fa-fw"></i> 归档</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/friends/" title="友链" active-action="action-pagesfriends"><i class="fa-duotone fa-link fa-fw"></i> 友链</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="https://www.travellings.cn/go-by-clouds.html" title="Travelling" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway fa-fw"></i> Travelling</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/about/" title="关于" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie fa-fw"></i> 关于</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/time-machine/" title="时光机" active-action="action-pagestime-machine"><i class="fa-duotone fa-clock fa-fw"></i> 时光机</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="noopener" href="https://mhuig.top/privacy-policy/" title="隐私政策" active-action="action-https:mhuigtopprivacy-policy"><i class="fa-duotone fa-user-secret fa-fw"></i> 隐私政策</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" title="更多"><i class="fa-duotone fa-fan fa-spin fa-fw"></i> 更多</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/beer/" title="Sponsor" active-action="action-pagesbeer"><i class="fa-duotone fa-heart-square fa-fw"></i> Sponsor</a></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="博客管理"><i class="fa-duotone fa-user-shield fa-fw"></i> 博客管理</a><ul class="list-v"><li><a class="menuitem flat-box header toggle-mode-btn"><i class="fa-duotone fa-bat fa-fw"></i> 暗黑模式</a></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/rss/" title="RSS订阅" active-action="action-pagesrss"><i class="fa-duotone fa-rss fa-fw"></i> RSS订阅</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/sitemap.xml" title="站点地图" active-action="action-sitemapxml"><i class="fa-duotone fa-sitemap fa-fw"></i> 站点地图</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://mhuig.instatus.com/" title="Monitors" active-action="action-https:mhuiginstatuscom"><i class="fa-duotone fa-telescope fa-fw"></i> Monitors</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://ssl.mhuig.top/" title="SSL Status" active-action="action-https:sslmhuigtop"><i class="fa-brands fa-expeditedssl fa-fw"></i> SSL Status</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="工具箱"><i class="fa-duotone fa-tools fa-fw"></i> 工具箱</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://rssbox.mhuig.top/" title="RSS Box" active-action="action-https:rssboxmhuigtop"><i class="fa-duotone fa-conveyor-belt-boxes fa-fw"></i> RSS Box</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/havefun/coco/" title="My Cat" active-action="action-havefuncoco"><i class="fa-duotone fa-cat fa-fw"></i> My Cat</a></li><li><a class="menuitem flat-box"><i class="fa-duotone fa-compact-disc fa-spin fa-fw music"></i> Music</a><ul class="list-v"><li><div class="aplayer-container"><div class="aplayer-local"></div></div></li></ul></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/talk/" title="碎言碎语" active-action="action-pagestalk"><i class="fa-duotone fa-comments fa-fw"></i> 碎言碎语</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" title="GitHub" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github fa-fw"></i> GitHub</a></li></ul></li></ul></div><div class="m_search"><form name="searchform" class="form u-search-form"><i class="icon fa-solid fa-search fa-fw"></i> <input type="text" class="input u-search-input" placeholder="Search..."></form></div><ul class="switcher nav-list-h m-phone"><li><a class="s-search fa-solid fa-search fa-fw" target="_self" title="search"></a></li><li><a class="s-menu fa-solid fa-bars fa-fw" target="_self" title="menu"></a><ul class="menu-phone list-v navigation white-box"><li><a class="menuitem flat-box faa-parent animated-hover" title="索引"><i class="fa-duotone fa-list-alt fa-fw"></i> 索引</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/notes/" title="便签" active-action="action-notes"><i class="fa-duotone fa-books fa-fw"></i> 便签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/categories/" title="分类" active-action="action-categories"><i class="fa-duotone fa-folder-open fa-fw"></i> 分类</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/tags/" title="标签" active-action="action-tags"><i class="fa-duotone fa-tags fa-fw"></i> 标签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/archives/" title="归档" active-action="action-archives"><i class="fa-duotone fa-archive fa-fw"></i> 归档</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/friends/" title="友链" active-action="action-pagesfriends"><i class="fa-duotone fa-link fa-fw"></i> 友链</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="https://www.travellings.cn/go-by-clouds.html" title="Travelling" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway fa-fw"></i> Travelling</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/about/" title="关于" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie fa-fw"></i> 关于</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/time-machine/" title="时光机" active-action="action-pagestime-machine"><i class="fa-duotone fa-clock fa-fw"></i> 时光机</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="noopener" href="https://mhuig.top/privacy-policy/" title="隐私政策" active-action="action-https:mhuigtopprivacy-policy"><i class="fa-duotone fa-user-secret fa-fw"></i> 隐私政策</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" title="更多"><i class="fa-duotone fa-fan fa-spin fa-fw"></i> 更多</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/beer/" title="Sponsor" active-action="action-pagesbeer"><i class="fa-duotone fa-heart-square fa-fw"></i> Sponsor</a></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="博客管理"><i class="fa-duotone fa-user-shield fa-fw"></i> 博客管理</a><ul class="list-v"><li><a class="menuitem flat-box header toggle-mode-btn"><i class="fa-duotone fa-bat fa-fw"></i> 暗黑模式</a></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/rss/" title="RSS订阅" active-action="action-pagesrss"><i class="fa-duotone fa-rss fa-fw"></i> RSS订阅</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/sitemap.xml" title="站点地图" active-action="action-sitemapxml"><i class="fa-duotone fa-sitemap fa-fw"></i> 站点地图</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://mhuig.instatus.com/" title="Monitors" active-action="action-https:mhuiginstatuscom"><i class="fa-duotone fa-telescope fa-fw"></i> Monitors</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://ssl.mhuig.top/" title="SSL Status" active-action="action-https:sslmhuigtop"><i class="fa-brands fa-expeditedssl fa-fw"></i> SSL Status</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="工具箱"><i class="fa-duotone fa-tools fa-fw"></i> 工具箱</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://rssbox.mhuig.top/" title="RSS Box" active-action="action-https:rssboxmhuigtop"><i class="fa-duotone fa-conveyor-belt-boxes fa-fw"></i> RSS Box</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/havefun/coco/" title="My Cat" active-action="action-havefuncoco"><i class="fa-duotone fa-cat fa-fw"></i> My Cat</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/talk/" title="碎言碎语" active-action="action-pagestalk"><i class="fa-duotone fa-comments fa-fw"></i> 碎言碎语</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" title="GitHub" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github fa-fw"></i> GitHub</a></li></ul></li></ul></li></ul></div></div></div></header><div id="l_body"><div id="l_cover"><div id="none" class="cover-wrapper featured" style="display:none"><div class="cover-bg lazyload placeholder" data-bg></div><div class="cover-body"><div class="top"><p class="title">Magicland</p><p class="subtitle">「看庭前花开花落,望天上云卷云舒」</p></div><div class="bottom"><div class="menu navigation"><div class="list-h"><a target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github color-github fa-fw"></i><p>Github</p></a><a href="/pages/friends/" active-action="action-pagesfriends"><i class="fa-duotone fa-link color-friends fa-fw"></i><p>友链</p></a><a href="/pages/about/" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie color-about fa-fw"></i><p>关于</p></a><a href="https://www.travellings.cn/go-by-clouds.html" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway color-travellings fa-fw"></i><p>Travelling</p></a></div></div></div></div><div id="scroll-down" style="display:none"><i class="fa fa-chevron-down scroll-down-effects"></i></div></div></div><div id="safearea"><div class="body-wrapper"><div id="l_main" class><section class="post-list"><div class="post-wrapper"><div class="post post-v3 white-box reveal shadow floatable blur" itemscope itemtype="http://schema.org/Article"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/p/notes-datacom/"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="Magicland"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"><meta itemprop="name" content="数据通信网络 系列专题"><meta itemprop="description" content="数据通信网络依赖分层架构实现设备互联,核心为OSI七层模型与TCP/IP四层模型。物理层定义比特流传输规范,数据链路层通过MAC地址与帧同步确保节点通信,网络层依赖IP协议完成路由寻址,传输层提供TCP可靠传输与UDP实时传输选项。应用层集成HTTP、DNS等协议直接服务用户,通过封装与解封装机制实现跨层协作,是互联网通信的基础框架"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">数据通信网络 系列专题</span><div class="md article-desc" itemprop="articleBody"><p><svg style="width: 50px; margin: 0 auto; display: block;" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 640 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path d="M64 240a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64zm88 80h48v-32h-48zm294.4-106.8l19.2 25.6 48-36-19.2-25.6zM576 64a64 64 0 1 0 64 64 64.06 64.06 0 0 0-64-64z" class="fa-secondary"/><path d="M576 384a63.84 63.84 0 0 0-38.3 13l-96-57.6a109.91 109.91 0 0 0 6.3-35.5 111.94 111.94 0 0 0-112-112 108.64 108.64 0 0 0-24.4 2.9l-40.8-87.4A63.84 63.84 0 1 0 224 128c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304a111.71 111.71 0 0 0 193.2 76.7l95.8 57.5a63.87 63.87 0 1 0 63-54.2zm-240-32a48 48 0 1 1 48-48 48 48 0 0 1-48 48z" class="fa-primary"/></svg></p><p> <span class="p logo center large">数据通信网络</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/datacom/" title="开始阅读"><i class="fa-duotone fa-chart-network"></i> 开始阅读</a></span><br></div><div class="meta-v3" line_style="solid"><div><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/lib/avatar/avatar-16.webp"><meta itemprop="name" content="MHuiG"><meta itemprop="url" content="https://mhuig.top/"></span> <time class="update-time" itemprop="dateModified" datetime="2025-11-20T18:18:00+08:00" title="Nov 20, 2025">2025-11-20</time><span class="dot"></span> <a class="category-link" href="/categories/Web/">Web</a><span class="sep"></span><a class="category-link" href="/categories/Web/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/">计算机网络</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/" itemprop="url"><span itemprop="name">Web</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/" itemprop="url"><span itemprop="name">计算机网络</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/Notes/" itemprop="url"><span itemprop="name">Notes</span></a></span></div></div></div></div><div class="post-wrapper"><div class="post post-v3 white-box reveal shadow floatable blur" itemscope itemtype="http://schema.org/Article"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/p/6a03238d/"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="Magicland"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"><meta itemprop="name" content="部署第一个智能合约"><meta itemprop="description" content="本文详解在以太坊测试网络部署智能合约流程:用Remix编写Solidity计数器合约,编译后通过JavaScript VM本地测试;引入事件记录状态变化,再基于EIP20标准创建代币合约,配置MetaMask连接BSC测试网,完成代币部署与交互。"></span><div class="headimg-div" position="bottom"> <a class="headimg-a" href="/p/6a03238d/"><img itemprop="image" class="headimg lazyload" alt="部署第一个智能合约" src="https://static.mhuig.top/npm/mhgoos@0.0.1651969075986/hero.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/mhgoos@0.0.1651969075986/hero.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></div><h2 class="article-title" itemprop="name headline"> <a href="/p/6a03238d/" itemprop="url">部署第一个智能合约</a></h2><div class="md article-desc" itemprop="articleBody"><p>本文详解在以太坊测试网络部署智能合约流程:用Remix编写Solidity计数器合约,编译后通过JavaScript VM本地测试;引入事件记录状态变化,再基于EIP20标准创建代币合约,配置MetaMask连接BSC测试网,完成代币部署与交互。</p></div><div class="meta-v3" line_style="solid"><div><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/lib/avatar/avatar-16.webp"><meta itemprop="name" content="MHuiG"><meta itemprop="url" content="https://mhuig.top/"></span> <time class="update-time" itemprop="dateModified" datetime="2025-11-20T18:24:00+08:00" title="Nov 20, 2025">2025-11-20</time><span class="dot"></span> <a class="category-link" href="/categories/Web/">Web</a><span class="sep"></span><a class="category-link" href="/categories/Web/%E5%8C%BA%E5%9D%97%E9%93%BE/">区块链</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/" itemprop="url"><span itemprop="name">Web</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/%E5%8C%BA%E5%9D%97%E9%93%BE/" itemprop="url"><span itemprop="name">区块链</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/%E4%BB%A5%E5%A4%AA%E5%9D%8A/">以太坊</a><span class="sep"></span><a class="category-link" href="/tags/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6/">智能合约</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6/" itemprop="url"><span itemprop="name">智能合约</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/%E4%BB%A5%E5%A4%AA%E5%9D%8A/" itemprop="url"><span itemprop="name">以太坊</span></a></span></div></div></div></div><div class="post-wrapper"><div class="post post-v3 white-box reveal shadow floatable blur" itemscope itemtype="http://schema.org/Article"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/p/5e9edb45/"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="Magicland"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"><meta itemprop="name" content="记一次仅在IPv4环境下访问IPv6网络的经历"><meta itemprop="description" content="记一次仅在IPv4环境下访问IPv6网络的经历"></span><div class="headimg-div" position="bottom"> <a class="headimg-a" href="/p/5e9edb45/"><img itemprop="image" class="headimg lazyload" alt="记一次仅在IPv4环境下访问IPv6网络的经历" src="https://static.mhuig.top/npm/imbox@0.0.15/c/99.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/99.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></div><h2 class="article-title" itemprop="name headline"> <a href="/p/5e9edb45/" itemprop="url">记一次仅在IPv4环境下访问IPv6网络的经历</a></h2><div class="md article-desc" itemprop="articleBody"> 有东西被加密了, 请输入密码查看.</div><div class="meta-v3" line_style="solid"><div><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/lib/avatar/avatar-16.webp"><meta itemprop="name" content="MHuiG"><meta itemprop="url" content="https://mhuig.top/"></span> <time class="update-time" itemprop="dateModified" datetime="2025-11-20T18:18:00+08:00" title="Nov 20, 2025">2025-11-20</time><span class="dot"></span> <a class="category-link" href="/categories/Web/">Web</a><span class="sep"></span><a class="category-link" href="/categories/Web/IPv6/">IPv6</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/" itemprop="url"><span itemprop="name">Web</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/IPv6/" itemprop="url"><span itemprop="name">IPv6</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/%E5%8A%A0%E5%AF%86%E5%A4%87%E5%BF%98%E5%BD%95/">加密备忘录</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/%E5%8A%A0%E5%AF%86%E5%A4%87%E5%BF%98%E5%BD%95/" itemprop="url"><span itemprop="name">加密备忘录</span></a></span></div></div></div></div><div class="post-wrapper"><div class="post post-v3 white-box reveal shadow floatable blur" itemscope itemtype="http://schema.org/Article"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/p/bfe2ff2a/"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="Magicland"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"><meta itemprop="name" content="JavaScript反调试"><meta itemprop="description" content="本文总结JavaScript反调试技巧,包括函数重定义(如劫持console.log)、调试器检测(debugger指令/时间差异分析)、环境验证及代码/流完整性控制,通过检测异常执行环境跳转伪造代码,增加主动调试难度而非依赖代码混淆。"></span><div class="headimg-div" position="bottom"> <a class="headimg-a" href="/p/bfe2ff2a/"><img itemprop="image" class="headimg lazyload" alt="JavaScript反调试" src="https://static.mhuig.top/npm/imbox@0.0.15/c/64.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/64.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></div><h2 class="article-title" itemprop="name headline"> <a href="/p/bfe2ff2a/" itemprop="url">JavaScript反调试</a></h2><div class="md article-desc" itemprop="articleBody"><p>总结一下关于JavaScript反调试技巧方面的内容。本文的目的是收集与JavaScript中的反调试有关的小窍门(其中一些已经被恶意软件或商业产品使用)。</p><br></div><div class="meta-v3" line_style="solid"><div><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/lib/avatar/avatar-16.webp"><meta itemprop="name" content="MHuiG"><meta itemprop="url" content="https://mhuig.top/"></span> <time class="update-time" itemprop="dateModified" datetime="2025-11-20T18:18:00+08:00" title="Nov 20, 2025">2025-11-20</time><span class="dot"></span> <a class="category-link" href="/categories/Web/">Web</a><span class="sep"></span><a class="category-link" href="/categories/Web/JavaScript/">JavaScript</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/" itemprop="url"><span itemprop="name">Web</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/JavaScript/" itemprop="url"><span itemprop="name">JavaScript</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/%E5%8F%8D%E8%B0%83%E8%AF%95/">反调试</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/%E5%8F%8D%E8%B0%83%E8%AF%95/" itemprop="url"><span itemprop="name">反调试</span></a></span></div></div></div></div><div class="post-wrapper"><div class="post post-v3 white-box reveal shadow floatable blur" itemscope itemtype="http://schema.org/Article"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/p/ba036091/"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="Magicland"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"><meta itemprop="name" content="Npm更换源"><meta itemprop="description" content="本文介绍国内用户提升npm下载速度的方法,包括切换至淘宝、官方及华为云等镜像源,使用npm-check-updates更新项目依赖,并提醒淘宝npm镜像站品牌升级后的域名切换及配置更新事项。"></span><div class="headimg-div" position="bottom"> <a class="headimg-a" href="/p/ba036091/"><img itemprop="image" class="headimg lazyload" alt="Npm更换源" src="https://static.mhuig.top/npm/imbox@0.0.15/c/34.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/34.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></div><h2 class="article-title" itemprop="name headline"> <a href="/p/ba036091/" itemprop="url">Npm更换源</a></h2><div class="md article-desc" itemprop="articleBody"><p>本文介绍国内用户提升npm下载速度的方法,包括切换至淘宝、官方及华为云等镜像源,使用npm-check-updates更新项目依赖,并提醒淘宝npm镜像站品牌升级后的域名切换及配置更新事项。</p></div><div class="meta-v3" line_style="solid"><div><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/lib/avatar/avatar-16.webp"><meta itemprop="name" content="MHuiG"><meta itemprop="url" content="https://mhuig.top/"></span> <time class="update-time" itemprop="dateModified" datetime="2025-11-20T18:18:00+08:00" title="Nov 20, 2025">2025-11-20</time><span class="dot"></span> <a class="category-link" href="/categories/Web/">Web</a><span class="sep"></span><a class="category-link" href="/categories/Web/npm/">npm</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/" itemprop="url"><span itemprop="name">Web</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/npm/" itemprop="url"><span itemprop="name">npm</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/">开发技术</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/" itemprop="url"><span itemprop="name">开发技术</span></a></span></div></div></div></div><div class="post-wrapper"><div class="post post-v3 white-box reveal shadow floatable blur" itemscope itemtype="http://schema.org/Article"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/p/notes-django/"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="Magicland"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"><meta itemprop="name" content="Django 系列专题"><meta itemprop="description" content="Django是Python生态中成熟的全栈Web框架,遵循自带电池理念,内置ORM、Admin后台、认证系统等组件,采用MTV架构实现数据、逻辑与展示分离。其ORM支持多数据库操作,无需SQL即可实现CRUD,Admin后台可自动生成管理界面。适用于快速开发社交媒体、电商等中大型项目,Instagram、Spotify等企业广泛采用,通过Django REST Framework可构建API并与前端框架集成。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Django 系列专题</span><div class="md article-desc" itemprop="articleBody"><p><svg style="width: 50px; margin: 0 auto; display: block;" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 512 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path class="fa-primary" d="M166.5 394.8L115.8 344.1C106.6 334.9 103.9 321.1 109.1 309.2C127.4 267.4 171.8 169 207.2 116.7C289.1-4.07 411.1-8.142 483.9 5.275C495.6 7.414 504.6 16.43 506.7 28.06C520.1 100.9 516.1 222.9 395.3 304.8C342.6 340.5 243 383.9 200.1 401.7C189.1 406.6 175.5 403.9 166.5 394.8L166.5 394.8zM384 168C406.1 168 424 150.1 424 128C424 105.9 406.1 88 384 88C361.9 88 344 105.9 344 128C344 150.1 361.9 168 384 168z"/><path class="fa-secondary" d="M198.6 130C170.1 175.9 137.9 244.5 118.5 288H23.1C15.33 288 7.334 283.3 3.083 275.8C-1.168 268.2-1.014 258.1 3.487 251.5L56.26 164.7C69.31 143.2 92.64 130 117.8 130H198.6zM223.1 391.8C267.9 372.8 336.4 341.5 381.1 313.4V394.2C381.1 419.4 368.8 442.7 347.3 455.8L260.5 508.5C253 513 243.8 513.2 236.2 508.9C228.7 504.7 223.1 496.7 223.1 488L223.1 391.8z"/></svg></p><p> <span class="p logo center large">Django</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/django/" title="开始阅读"><i class="fa-duotone fa-rocket"></i> 开始阅读</a></span><br></div><div class="meta-v3" line_style="solid"><div><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/lib/avatar/avatar-16.webp"><meta itemprop="name" content="MHuiG"><meta itemprop="url" content="https://mhuig.top/"></span> <time class="update-time" itemprop="dateModified" datetime="2025-11-20T18:18:00+08:00" title="Nov 20, 2025">2025-11-20</time><span class="dot"></span> <a class="category-link" href="/categories/Web/">Web</a><span class="sep"></span><a class="category-link" href="/categories/Web/Django/">Django</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/" itemprop="url"><span itemprop="name">Web</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/Django/" itemprop="url"><span itemprop="name">Django</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/Notes/">Notes</a><span class="sep"></span><a class="category-link" href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/">开发技术</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/Notes/" itemprop="url"><span itemprop="name">Notes</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/" itemprop="url"><span itemprop="name">开发技术</span></a></span></div></div></div></div><div class="post-wrapper"><div class="post post-v3 white-box reveal shadow floatable blur" itemscope itemtype="http://schema.org/Article"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/p/f8d2d5ec/"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="Magicland"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"><meta itemprop="name" content="Hexo命令及Markdown语法"><meta itemprop="description" content="本文系统整理Hexo常用操作与Markdown基础语法,涵盖Hexo新建文章(hexo new)、生成静态页(hexo g)、本地预览(hexo s)、部署(hexo d)及清理缓存(hexo clean)等核心命令,同时详解Markdown标题、列表、代码块、链接等10类基础语法,为静态博客搭建提供实用操作指南。"></span><div class="headimg-div" position="bottom"> <a class="headimg-a" href="/p/f8d2d5ec/"><img itemprop="image" class="headimg lazyload" alt="Hexo命令及Markdown语法" src="https://static.mhuig.top/npm/imbox@0.0.15/c/67.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/67.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></div><h2 class="article-title" itemprop="name headline"> <a href="/p/f8d2d5ec/" itemprop="url">Hexo命令及Markdown语法</a></h2><div class="md article-desc" itemprop="articleBody"><p>hexo是使用Markdown编辑文章的,我写的这些文章也都是用这种标记语言完成的。所以,我们先从Markdown说起。</p></div><div class="meta-v3" line_style="solid"><div><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/lib/avatar/avatar-16.webp"><meta itemprop="name" content="MHuiG"><meta itemprop="url" content="https://mhuig.top/"></span> <time class="update-time" itemprop="dateModified" datetime="2025-11-20T18:18:00+08:00" title="Nov 20, 2025">2025-11-20</time><span class="dot"></span> <a class="category-link" href="/categories/Web/">Web</a><span class="sep"></span><a class="category-link" href="/categories/Web/Hexo/">Hexo</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/" itemprop="url"><span itemprop="name">Web</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Web/Hexo/" itemprop="url"><span itemprop="name">Hexo</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/Markdown/">Markdown</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/Markdown/" itemprop="url"><span itemprop="name">Markdown</span></a></span></div></div></div></div></section></div><aside id="l_side" itemscope itemtype="http://schema.org/WPSideBar"><section class="widget blogger desktop shadow floatable blur pjax"><div class="content"> <a class="avatar flat-box rectangle" href="/pages/about/"><img no-lazy src="/lib/avatar/avatar-240.webp" alt="avatar"></a><div class="social-wrapper"><a href="/atom.xml" class="social fa-solid fa-rss flat-btn" target="_blank" rel="external nofollow noopener noreferrer"></a><a href="https://mhuig.top/contact/" class="social fa-solid fa-envelope flat-btn" target="_blank" rel="external nofollow noopener noreferrer"></a><a href="https://github.com/MHuiG/" class="social fa-brands fa-github flat-btn" target="_blank" rel="external nofollow noopener noreferrer"></a><a href="https://t.me/MHuiG" class="social fa-brands fa-telegram flat-btn" target="_blank" rel="external nofollow noopener noreferrer"></a></div></div></section><section class="widget grid desktop shadow floatable blur pjax"><header><i class="fa-duotone fa-map-signs fa-fw" aria-hidden="true"></i> <span class="name">站内导航</span></header><div class="content"><div class="grid navigation"><a class="flat-box" href="/pages/friends/" active-action="action-pagesfriends"><i class="fa-duotone fa-link AMETHYST fa-fw" aria-hidden="true"></i> 小伙伴们</a><a class="flat-box" href="/pages/about/" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie BELIZEHOLE fa-fw" aria-hidden="true"></i> 留言板</a><a class="flat-box" href="/pages/beer/" active-action="action-pagesbeer"><i class="fa-duotone fa-heart-square POMEGRANATE fa-fw" aria-hidden="true"></i> Sponsor</a></div></div></section><section class="widget webinfo desktop shadow floatable blur pjax"><header><i class="fa-duotone fa-chart-line fa-fw" aria-hidden="true"></i> <span class="name">站点信息</span></header><div class="content"><div class="webinfo"><div class="webinfo-item"><div>文章数目:</div><div>73 篇</div></div><div class="webinfo-item"><div>已运行时间:</div><div id="webinfo-runtime-count"></div></div><div class="webinfo-item"><div>本站总字数:</div><div>88.4k 字</div></div></div></div></section><section class="widget recent desktop mobile shadow floatable blur pjax"><header><i class="fa-solid fa-clock fa-fw" aria-hidden="true"></i> <span class="name">最近更新</span></header><div class="content"><widget class="widget-wrapper recent post-list"><div class="widget-body fs14"><a class="item title" href="/p/b150f6f2/"><span class="title">OKR目标管理中的七成完成度现象及其博弈论分析</span></a><a class="item title" href="/p/cb3fc42/"><span class="title">空白的答案</span></a><a class="item title" href="/p/56c48370/"><span class="title">爱与时空的星际救赎:《星际穿越》中的生存抉择与人性光辉</span></a><a class="item title" href="/p/2f345bb/"><span class="title">辛普森悖论|你还相信数据吗</span></a><a class="item title" href="/p/175a1706/"><span class="title">尝试在博客中添加简易文章推荐功能</span></a><a class="item title" href="/p/de4b9576/"><span class="title">记一次重装系统(Win11)</span></a><a class="item title" href="/p/6a03238d/"><span class="title">部署第一个智能合约</span></a><a class="item title" href="/p/6dc844b7/"><span class="title">一组粗略的类比</span></a><a class="item title" href="/p/6ace289f/"><span class="title">唯物辩证法</span></a><a class="item title" href="/p/171a81d0/"><span class="title">辩证唯物论</span></a></div></widget></div></section><div class="widget-sticky pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div><div class="widget pjax"></div></aside><pjax><script>window.pdata={},pdata.ispage=!1,pdata.commentPath="",pdata.commentPlaceholder="",pdata.commentConfig={};var l_header=document.getElementById("l_header");l_header.classList.add("show");var cover_wrapper=document.querySelector("#l_cover .cover-wrapper"),scroll_down=document.getElementById("scroll-down");cover_wrapper.id="none",cover_wrapper.style.display="none",scroll_down.style.display="none"</script></pjax></div><footer class="footer clearfix" itemscope itemtype="http://schema.org/WPFooter"><br><br><div class="aplayer-container"><div class="aplayer-local"></div></div><br><div class="social-wrapper" itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/atom.xml" class="social fa-duotone fa-rss flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://mhuig.top/contact/" class="social fa-duotone fa-envelope flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://github.com/MHuiG" class="social fa-brands fa-github flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://t.me/MHuiG" class="social fa-brands fa-telegram flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a></div><div><p>博客内容遵循 <a target="_blank" rel="external nofollow noopener noreferrer" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans">署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议</a></p></div><div class="copyright"><p><a href="https://icp.gov.moe" target="_blank" rel="external nofollow noopener noreferrer">萌ICP备</a> <a href="https://icp.gov.moe/?keyword=2020012138" target="_blank" rel="external nofollow noopener noreferrer">2020012138号</a><br><a target="_blank" rel="noopener" href="https://mhuig.top/">Copyright © Since 2018 MHuiG</a></p></div></footer><a id="s-top" class="fa-solid fa-arrow-up fa-fw" title="top"></a></div></div><div><script>volantis.css("https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/libs/@fortawesome/fontawesome-pro/css/all.min.css")</script><script src="/js/app.js"></script><script>const rootElement=document.documentElement,darkModeStorageKey="color-scheme",rootElementDarkModeAttributeName="color-scheme",setLS=(e,t)=>{localStorage.setItem(e,t)},removeLS=e=>{localStorage.removeItem(e)},getLS=e=>localStorage.getItem(e),getModeFromCSSMediaQuery=()=>window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",resetRootDarkModeAttributeAndLS=()=>{rootElement.removeAttribute("color-scheme"),removeLS("color-scheme")},validColorModeKeys={dark:!0,light:!0},applyCustomDarkModeSettings=e=>{const t=e||getLS("color-scheme");getCustomDarkMode(),t===getModeFromCSSMediaQuery()?resetRootDarkModeAttributeAndLS():validColorModeKeys[t]?rootElement.setAttribute("color-scheme",t):resetRootDarkModeAttributeAndLS()},invertDarkModeObj={dark:"light",light:"dark"},getCustomDarkMode=()=>{let e=getLS("color-scheme");if(validColorModeKeys[e])e=invertDarkModeObj[e];else{if(null!==e)return;e=invertDarkModeObj[getModeFromCSSMediaQuery()]}volantis.dark.mode="dark"==e?"light":"dark"},toggleCustomDarkMode=()=>{let e=getLS("color-scheme");if(validColorModeKeys[e])e=invertDarkModeObj[e];else{if(null!==e)return;e=invertDarkModeObj[getModeFromCSSMediaQuery()]}return setLS("color-scheme",e),e};function bindToggleButton(){document.querySelectorAll("#wrapper .toggle-mode-btn,#rightmenu-wrapper .toggle-mode-btn").forEach(function(e){volantis.dom.$(e).on("click",volantis.dark.toggle)})}volantis.dark.toggle=()=>{const e=toggleCustomDarkMode();applyCustomDarkModeSettings(e),volantis.dark.method.toggle.start()},applyCustomDarkModeSettings(),document.addEventListener("DOMContentLoaded",()=>{volantis.requestAnimationFrame(bindToggleButton)}),volantis.pjax.push(bindToggleButton,"dark_bindToggleButton");const darkModelListeners={dark:e=>{e.matches&&(volantis.dark.mode="dark"),volantis.dark.method.toggle.start()},light:e=>{e.matches&&(volantis.dark.mode="light"),volantis.dark.method.toggle.start()}};window.matchMedia("(prefers-color-scheme: dark)").addListener(darkModelListeners.dark),window.matchMedia("(prefers-color-scheme: light)").addListener(darkModelListeners.light)</script><script>function loadIssuesJS(){null!=document.getElementById("sites-api")&&"undefined"==typeof SitesJS&&volantis.js("/js/plugins/tags/sites.js");null!=document.getElementById("friends-api")&&"undefined"==typeof FriendsJS&&volantis.js("/js/plugins/tags/friends.js");null!=document.getElementById("fposts-api")&&"undefined"==typeof FpostsJS&&volantis.js("/js/plugins/tags/fposts.js");null!=document.getElementById("contributors-api")&&"undefined"==typeof ContributorsJS&&volantis.js("/js/plugins/tags/contributors.js")}loadIssuesJS(),volantis.pjax.push(()=>{loadIssuesJS()},"loadIssuesJS")</script><script>function loadDataService(){const e=document.querySelectorAll("a.link-card[cardlink]");e?.length>0&&volantis.js("/js/plugins/tags/siteinfo.js",{defer:!0}).then(function(){setCardLink(e)});document.querySelector(".tag-plugin.timeline.ds-timeline")&&volantis.js("https://static.mhuig.top/npm/marked@14.1.2/marked.min.js").then(function(){volantis.js("/js/plugins/tags/timeline.js",{defer:!0})});const t=document.querySelectorAll(".voice>audio");t?.length>0&&volantis.js("/js/plugins/tags/chat/voice.js",{defer:!0}).then(function(){createVoiceDom(t)});const n=document.querySelectorAll(".video>video");n?.length>0&&volantis.js("/js/plugins/tags/chat/video.js",{defer:!0}).then(function(){videoEvents(n)});const o=document.querySelectorAll(".chat-file");o?.length>0&&volantis.js("/js/plugins/tags/chat/download-file.js",{defer:!0}).then(function(){downloadFileEvent(o)});let i=document.querySelectorAll(".chat .status-bar .time"),s=null,l=null;if(i.length>0){c();const d=(new Date).getSeconds();function c(){for(let e=0;e<i.length;++e){const t=i[e],n=new Date,o=n.getHours(),s=n.getMinutes();t.innerHTML=a(o)+":"+a(s)}}function a(e){return e<10?"0"+e:e}s=setInterval(function(){c(),s&&(clearInterval(s),s=null);l=setInterval(c,6e4)},1e3*(60-d))}const r=new Map,u=new IntersectionObserver((e,t)=>{e.filter(e=>e.isIntersecting).sort((e,t)=>e.intersectionRect.y!==t.intersectionRect.y?e.intersectionRect.y-t.intersectionRect.y:e.intersectionRect.x-t.intersectionRect.x).forEach((e,n)=>{t.unobserve(e.target),setTimeout(()=>{e.target.classList.add("quote-blink"),setTimeout(()=>{e.target.classList.remove("quote-blink")},1e3)},Math.max(100,16)*(n+1))})});document.querySelectorAll(".chat .talk .quote").forEach(e=>{const t=function(){var t=document.getElementById("quote-"+e.getAttribute("quotedCellTag"));if(t){var n=t.parentElement,o=n.clientHeight/2;t.offsetTop>o-t.clientHeight/2?n.scrollTo({top:t.offsetTop-o+t.clientHeight/2,behavior:"smooth"}):n.scrollTo({top:0,behavior:"smooth"}),u.observe(t)}};e.addEventListener("click",t),r.set(e,t)}),volantis.pjax.send(()=>{u&&u.disconnect(),r.forEach((e,t)=>{t.removeEventListener("click",e)}),r.clear()},"chatQuotes")}loadDataService(),volantis.pjax.push(()=>{loadDataService()},"loadDataService")</script><script defer="defer" src="https://static.mhuig.top/npm/vanilla-lazyload@19.1.3/dist/lazyload.min.js"></script><script>window.lazyLoadOptions={elements_selector:".lazyload",threshold:0},window.addEventListener("LazyLoad::Initialized",function(n){window.lazyLoadInstance=n.detail.instance},!1),document.addEventListener("DOMContentLoaded",function(){lazyLoadInstance.update()}),document.addEventListener("pjax:complete",function(){lazyLoadInstance.update()})</script><script>window.FPConfig={delay:0,ignoreKeywords:["#"],maxRPS:6,hoverDelay:0}</script><script defer="defer" src="https://static.mhuig.top/npm/volantis-static@0.0.1761982841160/libs/flying-pages/flying-pages.min.js"></script><script>volantis.css("https://static.mhuig.top/npm/aplayer@1.10.1/dist/APlayer.min.css"),volantis.js("https://static.mhuig.top/npm/aplayer@1.10.1/dist/APlayer.min.js").then(()=>{function e(){document.querySelector(".aplayer-local-min")&&document.querySelectorAll(".aplayer-local-min").forEach(e=>{new APlayer(Object.assign({container:e,mini:!0,order:"list",volume:"0.7",autoplay:!1,loop:"all",theme:"#1BCDFC",listMaxHeight:"320px",listFolded:"true",preload:"auto",lrcType:3,audio:[{name:"虹之间",artist:"钢琴版伴奏",url:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.mp3",lrc:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.lrc",cover:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.jpg"},{name:"Avem",artist:"Alan Walker",url:"https://blog.mhuig.top/music-Archive/Avem.mp3",lrc:"https://blog.mhuig.top/music-Archive/Avem.lrc",cover:"https://blog.mhuig.top/music-Archive/Avem.jpg"},{name:"Fly",artist:"Marshmello / Leau Culver",url:"https://blog.mhuig.top/music-Archive/fly.mp3",lrc:"https://blog.mhuig.top/music-Archive/fly.lrc",cover:"https://blog.mhuig.top/music-Archive/fly.jpg"},{name:"Alone",artist:"Marshmello",url:"https://blog.mhuig.top/music-Archive/alone.mp3",lrc:"https://blog.mhuig.top/music-Archive/alone.lrc",cover:"https://blog.mhuig.top/music-Archive/alone.jpg"}]},JSON.parse(e.querySelector(".aplayer-local-min-conf").innerText)))})}document.querySelectorAll(".aplayer-local").forEach(e=>{new APlayer({container:e,fixed:!1,order:"list",volume:"0.7",autoplay:!1,loop:"all",theme:"#1BCDFC",listMaxHeight:"320px",listFolded:"true",preload:"auto",lrcType:3,audio:[{name:"虹之间",artist:"钢琴版伴奏",url:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.mp3",lrc:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.lrc",cover:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.jpg"},{name:"Avem",artist:"Alan Walker",url:"https://blog.mhuig.top/music-Archive/Avem.mp3",lrc:"https://blog.mhuig.top/music-Archive/Avem.lrc",cover:"https://blog.mhuig.top/music-Archive/Avem.jpg"},{name:"Fly",artist:"Marshmello / Leau Culver",url:"https://blog.mhuig.top/music-Archive/fly.mp3",lrc:"https://blog.mhuig.top/music-Archive/fly.lrc",cover:"https://blog.mhuig.top/music-Archive/fly.jpg"},{name:"Alone",artist:"Marshmello",url:"https://blog.mhuig.top/music-Archive/alone.mp3",lrc:"https://blog.mhuig.top/music-Archive/alone.lrc",cover:"https://blog.mhuig.top/music-Archive/alone.jpg"}]})}),e(),volantis.pjax.push(e,"aplayerMin")})</script><script>function check_giscus(){return"dark"===volantis.dark.mode?volantis.giscus.Theme="dark":volantis.giscus.Theme="light",document.getElementById("giscus_container")}function pjax_giscus(){const s=check_giscus();if(!s)return;let t=Object.assign({theme:{light:"light",dark:"dark"},repo:"MHuiG/talk","repo-id":"MDEwOlJlcG9zaXRvcnkyODQ4NDg1NTg=",category:"Giscus","category-id":"DIC_kwDOEPpxrs4B_X67",mapping:"pathname","reactions-enabled":"1","emit-metadata":"1",lang:"zh-CN","input-position":"top"},pdata.commentConfig);const e=document.createElement("script");e.setAttribute("src","https://giscus.app/client.js"),Object.keys(t).forEach(s=>{"theme"!=s&&e.setAttribute("data-"+s,t[s])}),e.setAttribute("data-theme",volantis.giscus.Theme),e.setAttribute("crossorigin","anonymous"),s.appendChild(e)}function dark_giscus(){if(!check_giscus())return;const s={setConfig:{theme:volantis.giscus.Theme}};document.querySelector("iframe.giscus-frame").contentWindow.postMessage({giscus:s},"https://giscus.app")}volantis.layoutHelper("comments",'<div id="giscus_container"></div>'),volantis.giscus={},pjax_giscus(),volantis.pjax.push(pjax_giscus,"giscus"),volantis.dark.push(dark_giscus,"giscus")</script><script>async function loadSearchScript(){return volantis.js("/js/search/hexo.js")}function loadSearchService(){loadSearchScript(),document.querySelectorAll(".input.u-search-input").forEach(e=>{e.removeEventListener("focus",loadSearchService,!1)}),document.querySelectorAll(".u-search-form").forEach(e=>{e.addEventListener("submit",e=>{e.preventDefault()},!1)})}function OpenSearch(e){"undefined"==typeof SearchService?loadSearchScript().then(()=>{SearchService.setQueryText(e),SearchService.search()}):(SearchService.setQueryText(e),SearchService.search())}if(window.location.search&&/^\?s=/g.test(window.location.search)){OpenSearch(decodeURI(window.location.search).replace(/\ /g,"-").replace(/^\?s=/g,""))}document.querySelectorAll(".input.u-search-input").forEach(e=>{e.addEventListener("focus",loadSearchService,!1)})</script><script>function pjax_highlightjs_copyCode(){(document.querySelector(".highlight .code pre")||document.querySelector(".article pre code"))&&VolantisApp.utilCopyCode(".highlight .code pre, .article pre code")}volantis.requestAnimationFrame(pjax_highlightjs_copyCode),volantis.pjax.push(pjax_highlightjs_copyCode,"pjax_highlightjs_copyCode")</script><script>function load_swiper(){document.querySelector(".swiper-container")&&(volantis.css("https://static.mhuig.top/npm/swiper@11.1.14/swiper-bundle.min.css"),volantis.js("https://static.mhuig.top/npm/swiper@11.1.14/swiper-bundle.min.js").then(()=>{pjax_swiper()}))}function pjax_swiper(){const e=document.querySelector(".swiper-container").getAttribute("effect")||"cards";volantis.swiper=new Swiper(".swiper-container",{slidesPerView:"auto",spaceBetween:8,centeredSlides:!0,effect:e,rewind:!0,pagination:{el:".swiper-pagination",clickable:!0},navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev"}})}load_swiper(),volantis.pjax.push(()=>{document.querySelectorAll(".swiper-container")[0]&&(void 0===volantis.swiper?load_swiper():pjax_swiper())},"swiper")</script><script>window.paceOptions={eventLag:{lagThreshold:30},ajax:{ignoreURLs:["signalr","__browserLink","browserLinkSignalR"],trackWebSockets:!1}},volantis.css("https://static.mhuig.top/npm/pace-js@1.2.4/themes/blue/pace-theme-minimal.css"),volantis.js("https://static.mhuig.top/npm/pace-js@1.2.4/pace.min.js").then(()=>{Pace.options.restartOnPushState=!1,volantis.pjax.send(Pace.restart,"Pace.restart"),volantis.pjax.push(()=>{setTimeout(()=>{Pace.stop(),document.body.className=document.body.className.replaceAll("pace-running ","")},1200)},"Pace.stop"),volantis.scroll.push(volantis.debounce(()=>{Pace.stop(),Pace.trigger("start"),Pace.bar.update(100*volantis.scroll.progress()),document.body.className=document.body.className.replaceAll("pace-running ","")}),"阅读进度")})</script><script src="https://static.mhuig.top/npm/pjax@0.2.8/pjax.min.js"></script><script>const performanceMonitor={slowThreshold:800,slowCount:0,maxSlowAllowed:1,requestStartTime:0,start(){this.requestStartTime=Date.now()},check(){Date.now()-this.requestStartTime>this.slowThreshold?this.slowCount++:this.slowCount=0},res(){return this.slowCount>=this.maxSlowAllowed}};var pjax;document.addEventListener("DOMContentLoaded",function(){pjax=new Pjax({elements:'a[href]:not([href^="#"]):not([href="javascript:void(0)"]):not([pjax-fancybox]):not([onclick="return false;"]):not([onclick="return!1"]):not([target="_blank"]):not([target="view_window"]):not([href$=".xml"])',selectors:["head title","head meta[name=keywords]","head meta[name=description]","#l_main","#pjax-header-nav-list",".pjax","pjax","meta[name=robots]","link[rel=canonical]","meta[property='og:title']","meta[property='og:description']","meta[property='og:url']","meta[property='og:image']","script[type='application/ld+json']"],cacheBust:!1,timeout:900})}),document.addEventListener("pjax:send",function(e){window.stop(),performanceMonitor.start();try{var t=window.location.pathname,o=e.triggerElement.href,n=[""];""!=n[0]&&n.forEach(e=>{-1==t.indexOf(e)&&-1==o.indexOf(e)||(window.location.href=o)}),performanceMonitor.res()&&(window.location.href=o)}catch(e){}volantis.pjax.method.send.start()}),document.addEventListener("pjax:complete",function(){performanceMonitor.check(),document.querySelectorAll("script[data-pjax], .pjax-reload script").forEach(e=>{const t=e.text||e.textContent||e.innerHTML||"",o=document.createElement("script");Object.keys(e.attributes).forEach(t=>{o.setAttribute(e.attributes[t].nodeName,e.attributes[t].nodeValue)}),t&&o.appendChild(document.createTextNode(t)),e.parentNode.replaceChild(o,e)}),volantis.pjax.method.complete.start()}),document.addEventListener("pjax:error",function(e){"pjax"===volantis.debug?(console.error(e),console.log("pjax error: \n"+JSON.stringify(e))):(volantis.pjax.method.error.start(),window.location.href=e.triggerElement.href)})</script><pjax></pjax><script>function listenSidebarTOC(){const t=document.querySelectorAll(".toc li");if(!t.length)return;const e=[];Array.from(t).forEach(t=>{const n=t.querySelector(".toc-link"),i=document.getElementById(n.getAttribute("href")?decodeURI(n.getAttribute("href")).replace("#",""):n.getAttribute("toc-action")?.split("toc-")[1]);return e.push(i),n.getAttribute("href")&&(n.setAttribute("toc-action","toc-"+decodeURI(n.getAttribute("href")).replace("#","")),n.removeAttribute("href")),i&&i.id&&n.addEventListener("click",t=>{t.preventDefault(),volantis.scroll.to(i,{addTop:5,observer:!0}),history.pushState(null,document.title,"#"+i.id)}),i});function n(t){if(t.classList.contains("active-current"))return;document.querySelectorAll(".toc .active").forEach(t=>{t.classList.remove("active","active-current")}),t.classList.add("active","active-current");let e=t.parentNode;for(;!e.matches(".toc");)e.matches("li")&&e.classList.add("active"),e=e.parentNode}volantis.activateNavIndex=0,n(t[volantis.activateNavIndex]),e[0]&&volantis.scroll.push(volantis.debounce(()=>{if(e[0].getBoundingClientRect().top>=0)volantis.activateNavIndex=0;else if(e[e.length-1].getBoundingClientRect().top<0)volantis.activateNavIndex=e.length-1;else for(let t=0;t<e.length;t++){const n=e[t],i=e[(t+1)%e.length];if(n.getBoundingClientRect().top<0&&i.getBoundingClientRect().top>=0){volantis.activateNavIndex=t;break}}n(t[volantis.activateNavIndex])}),"sidebar-toc")}document.addEventListener("DOMContentLoaded",()=>{volantis.requestAnimationFrame(listenSidebarTOC)}),volantis.pjax.push(listenSidebarTOC,"listenSidebarTOC")</script><script>try{let t=(t,e,i=2)=>Math.abs(t-e)<=i,e=(e,i)=>!t(e.width,i.width)||!t(e.height,i.height),i=new WeakMap,n=(t,n=t.getClientBoundingRect())=>{let o=i.get(t);o&&!e(o,n)||(i.set(t,n),t.style["contain-intrinsic-size"]=`${n.width}px ${n.height}px`)},o=new IntersectionObserver((t,e)=>{t.forEach(t=>{n(t.target,t.boundingClientRect)})},{rootMargin:"500px 0px 500px 0px"}),r=new ResizeObserver((t,e)=>{t.forEach(t=>{n(t.target,t.contentRect)})}),s=t=>{let e=document.querySelectorAll(t);e.length&&(e.forEach(t=>{o.observe(t),r.observe(t)}),requestAnimationFrame(()=>{requestAnimationFrame(()=>{e[0].style["content-visibility"]="auto"})}))},c=()=>{"content-visibility"in document.documentElement.style&&s(".post-story")};c(),volantis.pjax.push(c,"contentVisibilityScrollFix")}catch(t){console.log(t)}</script><script>document.onreadystatechange=function(){if("complete"==document.readyState){const{saveData:e,effectiveType:t}=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};("none"==getComputedStyle(document.querySelector("#safearea"),null).display||e||/2g/.test(t))&&(document.querySelectorAll(".reveal").forEach(function(e){e.style.opacity="1"}),document.querySelector("#safearea").style.display="block")}}</script></div><pjax> <a style="position:absolute;left:-9999px" target="_blank" rel="external nofollow noopener noreferrer" href="https://bot-trap.mhuig.top/">Are You A Robot?</a> <a style="position:absolute;left:-9999px" href="/post-sitemap.xml">站点文章地图</a> <a style="position:absolute;left:-9999px" href="/page-sitemap.xml">站点页面地图</a></pjax><script>(()=>{function t(){if("localhost:4000"!=window.location.host&&!/blog\.mhuig\.top/.test(window.location.host)){const t=document.createElement("meta");t.name="robots",t.content=atob("bm9pbmRleCwgbm9mb2xsb3csIG5vYXJjaGl2ZQ=="),document.head.appendChild(t)}}function o(){document.querySelector("figcaption")&&document.querySelectorAll("figcaption").forEach(t=>{volantis.dom.$(t).on("click",function(){const t=!window.CodeBlockFullscreen;window.CodeBlockFullscreen=t;const o=document.getElementById("post")||document.getElementById("docs")||document.getElementById("page");if(!o)return;const e=this.parentElement,n=e.parentElement,l=document.documentElement,c=document.querySelectorAll(".highlight > table .gutter");o.classList.toggle("code-block-fullscreen",t),e.classList.toggle("code-block-fullscreen",t),n.classList.toggle("code-block-fullscreen",t),e.classList.toggle("code-block-fullscreen-overflow-auto",t),l.classList.toggle("code-block-fullscreen-html-scroll",t),c.forEach(o=>{o.classList.toggle("code-block-fullscreen-gutter",t)})})})}t(),volantis.pjax.push(t),top.location!=self.location&&(top.location=self.location),"mhuig.github.io"==window.location.host||"localhost:4000"==window.location.host||/mhuig\.top$/.test(window.location.host)||/kix\.moe$/.test(window.location.host)||/mhuig/.test(window.location.host)||/ipfs/.test(window.location.host)||(window.location.href=atob("aHR0cHM6Ly9ibG9nLm1odWlnLnRvcC8=")),o(),volantis.pjax.push(o);const e=[{month:12,day:13},function(){const t=(new Date).getFullYear(),o=t%100,e=t>=2e3?4.81:5.59,n=Math.floor(o/4),l=Math.floor(.2422*o+e)-n;return{month:4,day:Math.max(4,l)}}(),{month:7,day:7},{month:9,day:18},{month:9,day:30}];function n(){document.documentElement.classList.remove("mourning-mode");if(!["/","/index.html","/index.htm","/index"].includes(window.location.pathname))return;const t=new Date,o=t.getMonth()+1,n=t.getDate();e.some(t=>t.month===o&&t.day===n)&&document.documentElement.classList.add("mourning-mode")}const l=document.createElement("style");l.textContent="\n html.mourning-mode {\n filter: grayscale(100%);\n -webkit-filter: grayscale(100%);\n transition: filter 0.5s ease;\n }\n ",document.head.appendChild(l),n(),document.addEventListener("pjax:complete",n)})()</script><pjax><script>function isSpider(){const e=navigator.userAgent.toLowerCase();return["Googlebot","Bingbot","BaiduSpider","360Spider","SogouSpider","YandexBot","DuckDuckBot","Baiduspider","Bytespider"].some(t=>e.includes(t.toLowerCase()))}function decodeShift(e,t=3){return[...e].map(e=>String.fromCharCode(e.charCodeAt(0)-t)).join("")}function autoWrapDash(e=document.body,t=!1){if("string"==typeof e&&(e=document.querySelector(e)),!e)return;const n="zh-dash",o=["——"];t&&o.push("--");const r=`\n script,\n style,\n noscript,\n textarea,\n select,\n option,\n pre,\n code,\n .${n}\n `,a=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){const t=e.parentElement;if(!t)return NodeFilter.FILTER_REJECT;if(t.closest(r))return NodeFilter.FILTER_REJECT;const n=e.nodeValue;return o.some(e=>n.includes(e))?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),c=[];for(;a.nextNode();)c.push(a.currentNode);c.forEach(e=>{const r=e.nodeValue,a=document.createDocumentFragment();let c=0;const i=o.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),u=new RegExp(i,"g");let l;for(;null!==(l=u.exec(r));){l.index>c&&a.appendChild(document.createTextNode(r.slice(c,l.index)));const e=document.createElement("span");e.className=n,t&&"--"===l[0]?e.textContent="——":e.textContent=l[0],a.appendChild(e),c=l.index+l[0].length}c<r.length&&a.appendChild(document.createTextNode(r.slice(c))),e.parentNode.replaceChild(a,e)})}!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).DevtoolsDetecter=t()}(this,function(){"use strict";function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function n(e,n){var o="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!o){if(Array.isArray(e)||(o=function(e,n){if(e){if("string"==typeof e)return t(e,n);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){o&&(e=o);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("d.")}var c,i=!0,u=!1;return{s:function(){o=o.call(e)},n:function(){var e=o.next();return i=e.done,e},e:function(e){u=!0,c=e},f:function(){try{i||null==o.return||o.return()}finally{if(u)throw c}}}}return function(){var t=!1,o=!1,r=!1,a=7e6,c=1e3,i=500,u=null,l=null,f=function(){return t||o},d=[],s=function(){var e,t=n(d);try{for(t.s();!(e=t.n()).done;){var o=e.value;try{o(f())}catch(e){}}}catch(e){t.e(e)}finally{t.f()}},p=function(e){if(r){var t=document.createElement("div");t.innerHTML="".concat(e,"<br>"),document.body.appendChild(t)}},m=console,y=Math,h=Int8Array,v=setInterval,g=Date,w=!1;"undefined"!=typeof performance&&(w=performance);var b=function(){return w?w.now():+new g},S=document.createElement("div");try{S.__defineGetter__("id",function(){o=!0,p("**"),s()})}catch(e){o=0}var T=function(){if(0!==o){o=!1,m.log(S);try{m.clear()}catch(e){}}},C=function(e){for(var t=0,n=0;n<e.length;n++)t+=e[n];return t/e.length},E=function(e,t){e.push(t),e.length>5&&e.shift()},k=function(){for(var e=b(),t=a,n=new h(t+1),o=2;o<=t;++o)if(0===n[o])for(var r=o*o;r<=t;r+=o)n[r]=1;return b()-e},x=[],I=[],j=[],D=-1,N=k(),A=N,F=N,L=function(){D++;var e=function(){for(var e=b(),t=0;t<c;t++){m.log||alert("Ha"),m.log(t);try{m.clear()}catch(e){}}return b()-e}();if(E(x,e),p(x),D&&D%5==0){var n=C(x),o=function(e){for(var t=C(e),n=0,o=0;o<e.length;o++)n+=y.pow(e[o]-t,2);return n/e.length}(x);E(I,n),E(j,o),p("=".concat(n,"e").concat(o,"")),n>A||n>.85*A&&o>F&&C([x[0],x[1],x[2]])<C([x[1],x[2],x[3]])&&C([x[1],x[2],x[3]])<C([x[2],x[3],x[4]])?(t=!0,p("**")):(t=!1,D>=25&&(A=y.min(5*C(I),N),F=y.min(5*C(j),N),p("==".concat(A," ").concat(F," "))))}_(),s()},_=function(){var e,n;t||"undefined"!=typeof eruda&&(!0===(null===(e=eruda)||void 0===e||null===(n=e._devTools)||void 0===n?void 0:n._isShow)?(t=!0,p("**")):t=!1)};return new(function(){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t)}var n,o;return n=t,(o=[{key:"debug",value:function(){r=!0,p("ua: ".concat(navigator.userAgent)),p("hardwareConcurrency: ".concat(navigator.hardwareConcurrency));try{performance&&performance.memory&&(p("memory used: ".concat(performance.memory.usedJSHeapSize)),p("memory total: ".concat(performance.memory.totalJSHeapSize)),p("memory limit: ".concat(performance.memory.jsHeapSizeLimit)))}catch(e){}p("Benchmark: ".concat(N))}},{key:"getStatus",value:function(){return f()}},{key:"setBenchmarkMaxN",value:function(e){a=e}},{key:"setTimingSamplingMaxN",value:function(e){c=e}},{key:"setBenchmark",value:function(e){k=e}},{key:"setTimer",value:function(e){i=e}},{key:"addListener",value:function(e){d.push(e)}},{key:"launch",value:function(){u=v(L,i),l=v(T,i)}},{key:"stop",value:function(){clearInterval(u),clearInterval(l)}}])&&e(n.prototype,o),Object.defineProperty(n,"prototype",{writable:!1}),t}())}()}),DevtoolsDetecter.addListener(e=>{if(e){new Function(atob("Y29uc29sZS5jbGVhcigpOw=="))(),new Function('console.log(decodeShift("敷炼恹佟剪/云昲係刹佟争七亞exj敁圫远量"))')();for(let e in console)"function"==typeof console[e]&&(console[e]=()=>{});for(let e in window)"function"==typeof window[e]&&(window[e]=()=>{});setTimeout=clearTimeout=setInterval=clearInterval=()=>{},alert=confirm=prompt=()=>{},Object.defineProperty(window,"localStorage",{value:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{},key:()=>null},writable:!1}),Object.defineProperty(window,"sessionStorage",{value:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{},key:()=>null},writable:!1}),fetch=()=>Promise.reject("disabled"),XMLHttpRequest=function(){return{open(){},send(){},abort(){}}},document.querySelectorAll("script").forEach(e=>{e.remove()})}}),isSpider()||localStorage&&"k"==localStorage.getItem("k")||DevtoolsDetecter.launch(),autoWrapDash(document.body,!1),volantis.pjax.push(()=>{autoWrapDash(document.body,!1)},"autoWrapDash")</script></pjax></body></html>