UNPKG

@mhg/blog

Version:
1 lines 172 kB
<!DOCTYPE html><html lang="zh-Hans"><head hexo-theme="https://github.com/volantis-x/hexo-theme-volantis/#6.0.3"><meta name="generator" content="Hexo 8.1.2"><meta name="Volantis" content="6.0.3"><meta charset="utf-8"><meta name="robots" content="noindex,follow"><link rel="canonical" href="https://blog.mhuig.top/tags/Notes/"><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><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 registerServiceWorker(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 Sucess!");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,registerServiceWorker("/jquery.js"))}))}registerServiceWorker("/jquery.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/"><link rel="preload" href="/css/style.css" as="style"><link rel="preload" href="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/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.1660614606622/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>标签:Notes - 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/tags/Notes/"><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{--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}*{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:#2196f3;cursor:pointer;border-radius:2px;-webkit-border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#ff5722}html{color:var(--color-text);width:100%;height:100%;font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,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:#2196f3;cursor:pointer;border-radius:2px;-webkit-border-radius:2px}html>::-webkit-scrollbar-thumb:hover{background:#ff5722}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:#2196f3;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:#ff5722}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}button{overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}@supports (backdrop-filter:blur(20px)){.blur{background:rgba(255,255,255,.9)!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)}#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","PingFang SC","Microsoft YaHei",Helvetica,Arial,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:rgba(68,68,68,.75)}.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:rgba(255,255,255,.6);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:rgba(255,255,255,.8)}.cover-wrapper .cover-body .m_search .input:focus{background:#fff}.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:rgba(68,68,68,.7);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:#2196f3}.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:rgba(255,255,255,.5)}@supports (backdrop-filter:blur(20px)){.cover-wrapper.featured .menu .list-h a{background:rgba(255,255,255,.5);backdrop-filter:saturate(200%) blur(20px)}}@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}: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]) details>summary{color:var(--color-p)!important;background:var(--color-site-bg)!important}:root:not([color-scheme]) details{border:1px solid var(--color-site-bg)!important;background:var(--color-site-bg)!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}[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] details>summary{color:var(--color-p)!important;background:var(--color-site-bg)!important}[color-scheme=dark] details{border:1px solid var(--color-site-bg)!important;background:var(--color-site-bg)!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}}@font-face{font-family:'Varela Round';src:url("https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/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.1660614606622/media/fonts/VarelaRound/VarelaRound-Regular.ttf");font-weight:'normal';font-style:'normal';font-display:swap}.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","PingFang SC","Microsoft YaHei",Helvetica,Arial,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","PingFang SC","Microsoft YaHei",Helvetica,Arial,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:#2196f3}.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:#fafafa;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:#fff;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 #2196f3}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:#2196f3}.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}}#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}}@media screen and (prefers-color-scheme:dark) and (max-width:500px){.l_header .m_search{background:var(--color-site-bg)!important}}.cover-wrapper .cover-body .subtitle{font-size:.875rem}.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}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}</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 volantisEventListener(e,t,n){this.type=e,this.f=t,this.ele=n}function volantisDom(e){return e||(e=document.createElement("div")),this.ele=e,this.ele.find=e=>{let t=this.ele.querySelector(e);if(t)return new volantisDom(t)},this.ele.hasClass=e=>this.ele.className.match(new RegExp("(\\s|^)"+e+"(\\s|$)")),this.ele.addClass=e=>(this.ele.classList.add(e),this.ele),this.ele.removeClass=e=>(this.ele.classList.remove(e),this.ele),this.ele.toggleClass=e=>(this.ele.hasClass(e)?this.ele.removeClass(e):this.ele.addClass(e),this.ele),this.ele.on=(e,t,n=1)=>(this.ele.addEventListener(e,t,!1),n&&volantis.EventListener.list.push(new volantisEventListener(e,t,this.ele)),this.ele),this.ele.click=(e,t)=>(this.ele.on("click",e,t),this.ele),this.ele.scroll=(e,t)=>(this.ele.on("scroll",e,t),this.ele),this.ele.html=e=>(this.ele.innerHTML=e,this.ele),this.ele.hide=e=>(this.ele.style.display="none",this.ele),this.ele.show=e=>(this.ele.style.display="block",this.ele),this.ele}function RunItem(){function e(e,t){this.name=t||volantis.getFunctionHash(e),this.run=()=>{try{e()}catch(e){console.log(e)}}}this.list=[],this.start=()=>{for(var e=0;e<this.list.length;e++)this.list[e].run()},this.push=(t,n,o=!0)=>{if("function"!=typeof t)return;let l=t;o&&(l=()=>{volantis.requestAnimationFrame(t)}),n=n||volantis.getFunctionHash(t);const i=this.list.findIndex((e=>e.name===n));-1===i?this.list.push(new e(l,n)):this.list[i]=new e(l,n)},this.remove=e=>{for(let t=0;t<this.list.length;t++){this.list[t].name==e&&this.list.splice(t,1)}}}function errorImgAvatar(e){e.src="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/avatar/round/3442075.svg",e.onerror=null}function errorImgCover(e){e.src="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/cover/76b86c0226ffd.svg",e.onerror=null}!function(){const e=new WeakMap,t=new Proxy({},{get(n,o){const l=e.get(t);return l?.[o]},set(n,o,l){e.has(t)||e.set(t,Object.create(null));return e.get(t)[o]=l,!0},deleteProperty(n,o){const l=e.get(t);return!(!l||!Object.prototype.hasOwnProperty.call(l,o))&&(delete l[o],0===Object.keys(l).length&&e.delete(t),!0)},ownKeys(n){const o=e.get(t);return o?Object.keys(o):[]},getOwnPropertyDescriptor(n,o){const l=e.get(t);if(l&&Object.prototype.hasOwnProperty.call(l,o))return{value:l[o],writable:!0,enumerable:!0,configurable:!0}}});Object.defineProperty(window,"volantis",{value:t,writable:!0,configurable:!0,enumerable:!0})}(),volantis.debug="false",volantis.dom={},volantis.simpleTextHash=e=>{let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n),t&=t;return t.toString(16).padStart(8,"0")},volantis.getFunctionHash=e=>{const t=e.toString();return volantis.simpleTextHash(t)},volantis.EventListener={},volantis.EventListener.list=[],volantis.EventListener.remove=()=>{volantis.EventListener.list.forEach((function(e){e.ele.removeEventListener(e.type,e.f,!1)})),volantis.EventListener.list=[]},volantis.dom.$=e=>e?new volantisDom(e):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,error:volantis.pjax.method.error.push,send:volantis.pjax.method.send.push}),volantis.rightmenu={},volantis.rightmenu.method={handle:new RunItem},volantis.rightmenu=Object.assign(volantis.rightmenu,{handle:volantis.rightmenu.method.handle.push}),volantis.dark={},volantis.dark.method={toggle:new RunItem},volantis.dark=Object.assign(volantis.dark,{push:volantis.dark.method.toggle.push}),volantis.js=(e,t)=>new Promise((n=>{setTimeout((function(){var o=document.getElementsByTagName("head")[0]||document.documentElement,l=document.createElement("script");if(l.setAttribute("type","text/javascript"),t)if(JSON.stringify(t))for(let e in t)"onload"==e?l[e]=()=>{t[e](),n()}:(l[e]=t[e],l.onload=n);else l.onload=()=>{t(),n()};else l.onload=n;l.setAttribute("src",e),o.appendChild(l)}))})),volantis.css=e=>new Promise((t=>{setTimeout((function(){var n=document.createElement("link");n.rel="stylesheet",n.href=e,n.onload=t,document.getElementsByTagName("head")[0].appendChild(n)}))})),volantis.import={jQuery:()=>"undefined"==typeof jQuery?volantis.js("https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"):new Promise((e=>{e()}))},volantis.throttle=(e,t=200)=>{let n=0;return function(...o){const l=Date.now();l-n>=t&&(e.apply(this,o),n=l)}},volantis.debounce=(e,t=200)=>{let n=null;return function(){n&&clearTimeout(n),n=setTimeout((()=>{e.apply(this,arguments),n=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.layoutHelper=(e,t,n)=>{function o(e,t,n){volantis.tempDiv=document.createElement("div"),volantis.tempDiv.innerHTML=t;let o=document.querySelector("#layoutHelper-"+e);o&&(n&&(o.innerHTML=""),o.append(volantis.tempDiv))}n=Object.assign({clean:!1,pjax:!0},n),o(e,t,n.clean),n.pjax&&volantis.pjax.push((()=>{o(e,t,n.clean)}),"layoutHelper-"+e)},volantis.scroll={engine:new RunItem,unengine:new RunItem},volantis.scroll=Object.assign(volantis.scroll,{push:volantis.scroll.engine.push}),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:"smooth"},"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 n=e.getBoundingClientRect().top;n>=-t.observerDic&&n<=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,...n){const o=nativeSetTimeout((function(...t){try{return e.apply(this,t)}finally{const e=volantis.activeTimeout.indexOf(o);-1!==e&&volantis.activeTimeout.splice(e,1)}}),t,...n);return volantis.activeTimeout.push(o),o},window.setInterval=function(e,t,...n){const o=nativeSetInterval(e,t,...n);return volantis.activeInterval.push(o),o},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")</script><script>volantis.GLOBAL_CONFIG={root:"/",debug:!1,default:{avatar:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/avatar/round/3442075.svg",link:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/link/8f277b4ee0ecd.svg",cover:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/cover/76b86c0226ffd.svg",image:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/image/2659360.svg"},lastupdate:new Date(1779510804521),cdn:{izitoast_css:"https://cdn.bootcdn.net/ajax/libs/izitoast/1.4.0/css/iziToast.min.css",izitoast_js:"https://cdn.bootcdn.net/ajax/libs/izitoast/1.4.0/js/iziToast.min.js",fancybox_css:"https://cdn.bootcdn.net/ajax/libs/fancyapps-ui/4.0.31/fancybox.min.css",fancybox_js:"https://cdn.bootcdn.net/ajax/libs/fancyapps-ui/4.0.31/fancybox.umd.min.js"},sidebar:{for_page:["blogger","navigation","webinfo"],for_post:["toc"],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}},search:{dataPath:("/".endsWith("/")?"/":"//")+"content.json"},languages:{search:{hits_empty:"找不到您查询的内容:${query}",hits_stats:"找到 ${hits} 条结果,用时 ${time} 毫秒"}}}</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/tags/Notes/","name":"Notes"}}]},{"@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/person-archive/"><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="History of mathematics"><meta itemprop="description" content="历史人物梳理历史人物的生平轨迹与重大事迹,深入剖析了其时代背景下的关键抉择与行动,并系统评估了其在文化或科学领域所产生的持久历史影响与贡献。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">History of mathematics</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 320 512"><path d="M0 64C0 46.3 14.3 32 32 32l128 0c88.4 0 160 71.6 160 160S248.4 352 160 352l-96 0 0 96c0 17.7-14.3 32-32 32S0 465.7 0 448L0 64zM64 288l96 0c53 0 96-43 96-96s-43-96-96-96l-96 0 0 192z"/></svg></p><p> <span class="p logo center large">History of mathematics</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/person/" title="开始阅读"><i class="fa-duotone fa-square-p"></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="2026-05-04T18:18:00+08:00" title="May 4, 2026">2026-05-04</time><span class="dot"></span> <a class="category-link" href="/categories/%E6%95%B0%E5%AD%A6/">数学</a><span class="sep"></span><a class="category-link" href="/categories/%E6%95%B0%E5%AD%A6/History/">History</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%95%B0%E5%AD%A6/" itemprop="url"><span itemprop="name">数学</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%95%B0%E5%AD%A6/History/" itemprop="url"><span itemprop="name">History</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/Math/">Math</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/Math/" itemprop="url"><span itemprop="name">Math</span></a></span> <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/zeta-archive/"><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="Zeta Archive"><meta itemprop="description" content="黎曼Zeta函数是解析数论核心工具,通过级数展开式定义于复平面,经解析延拓覆盖全平面,非平凡零点位于实部0到1的临界带内。函数具对称性,其整函数变换形式满足自变量s与1-s对应值相等,与素数分布紧密关联。Riemann猜想提出所有非平凡零点实部均为1&#x2F;2。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Zeta Archive</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 384 512"><path d="M0 64C0 46.3 14.3 32 32 32l320 0c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96 32 96C14.3 96 0 81.7 0 64z"/></svg></p><p> <span class="p logo center large">Zeta Archive</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Zeta/" title="开始阅读"><i class="fa-duotone fa-square-z"></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/%E6%95%B0%E5%AD%A6/">数学</a><span class="sep"></span><a class="category-link" href="/categories/%E6%95%B0%E5%AD%A6/Zeta/">Zeta</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%95%B0%E5%AD%A6/" itemprop="url"><span itemprop="name">数学</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%95%B0%E5%AD%A6/Zeta/" itemprop="url"><span itemprop="name">Zeta</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/Math/">Math</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/Math/" itemprop="url"><span itemprop="name">Math</span></a></span> <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/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&#x2F;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.8 19.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/notes-spark/"><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="Spark 系列专题"><meta itemprop="description" content="Apache Spark是加州大学伯克利分校开发的分布式计算框架,核心是弹性分布式数据集(RDD),支持内存计算,比Hadoop MapReduce快10-100倍。通过DAG引擎优化执行计划,提供SQL查询(Spark SQL)、流处理(Structured Streaming)和机器学习(MLlib)等组件,支持Java、Python等多语言API,广泛应用于大数据分析、实时处理和AI训练场景。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Spark 系列专题</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="M315.4 300.3l-50.63 49.38 11.88 69.63c1 5.75-1.375 11.63-6 15-4.75 3.375-11 3.875-16.13 1.125l-62.5-32.88-62.63 32.88c-11 6-24.25-3.5-22.13-16.13l12-69.63L68.6 300.3C64.47 296.2 62.97 290.2 64.72 284.6c1.75-5.5 6.625-9.625 12.38-10.38l69.88-10.25 31.25-63.5C180.7 195.3 186.1 191.1 191.1 191.1c5.75 0 11.13 3.375 13.63 8.5l31.38 63.5 69.75 10.25c5.875.875 10.63 4.875 12.38 10.38C320.1 290.1 319.5 296.2 315.4 300.3z"/><path class="fa-secondary" d="M491.1.7163c-38.75 11.5-111.8 34.25-187.6 61.25-2.125-7-4-13.5-5.625-18.63-1.375-4.5-4.75-8.25-9.25-10.13-4.375-1.875-9.375-1.625-13.63.625C232.5 55.97 122.1 116.5 60.59 176.3c-1.125 1-2.5 2-3.5 3-76.13 76.13-76.13 199.5 0 275.6 76 76.13 199.5 76 275.5-.125 1-1 2-2.375 3-3.5 59.88-61.63 120.4-172.1 142.5-214.4 2.25-4.25 2.5-9.25.625-13.75-1.75-4.375-5.5-7.75-10.13-9.125-5.25-1.625-11.63-3.5-18.63-5.625 27-76 49.75-149 61.38-187.8 1.625-5.625.1251-11.88-4.125-16C502.1.4663 496.9-1.034 491.1.7163zM315.4 300.3l-50.63 49.38 11.88 69.63c1 5.75-1.375 11.63-6 15-4.75 3.375-11 3.875-16.13 1.125l-62.5-32.88-62.63 32.88c-11 6-24.25-3.5-22.13-16.13l12-69.63L68.6 300.3C64.47 296.2 62.97 290.2 64.72 284.6c1.75-5.5 6.625-9.625 12.38-10.38l69.88-10.25 31.25-63.5c2.5-5.125 7.875-8.5 13.75-8.5 5.75 0 11.13 3.375 13.63 8.5l31.38 63.5 69.75 10.25c5.875.875 10.63 4.875 12.38 10.38C320.1 290.1 319.5 296.2 315.4 300.3z"/></svg></p><p> <span class="p logo center large">Spark</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Spark/" title="开始阅读"><i class="fa-duotone fa-comet"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Spark/">Spark</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Spark/" itemprop="url"><span itemprop="name">Spark</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-ubuntu/"><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="Ubuntu 系列专题"><meta itemprop="description" content="Ubuntu是Canonical开发的开源Linux发行版,基于Debian构建,以易用性和广泛兼容性著称。提供桌面、服务器、云等多版本,每两年发布LTS版(长期支持),如24.04 LTS(Noble Numbat),默认搭载GNOME桌面环境与APT包管理,支持ZFS文件系统和全盘加密,广泛用于个人电脑、服务器及IoT设备。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Ubuntu 系列专题</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 496 512"><path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z"/></svg></p><p> <span class="p logo center large">Ubuntu</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Ubuntu/" title="开始阅读"><i class="fa-brands fa-ubuntu"></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/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/">操作系统</a><span class="sep"></span><a class="category-link" href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Ubuntu/">Ubuntu</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/" itemprop="url"><span itemprop="name">操作系统</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Ubuntu/" itemprop="url"><span itemprop="name">Ubuntu</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/Linux/">Linux</a><span class="sep"></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> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/Linux/" itemprop="url"><span itemprop="name">Linux</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-nosql/"><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="NoSQL 系列专题"><meta itemprop="description" content="NoSQL(Not Only SQL)指非关系型数据库,是对传统关系型数据库的补充,支持海量数据存储与灵活扩展,无需固定模式。分为键值(如Redis)、文档(如MongoDB)、列族(如HBase)和图数据库(如Neo4j)四大类,分别适用于缓存、内容管理、大数据分析和社交网络等场景。基于CAP理论和BASE模型,在一致性、可用性和分区容错间权衡,满足高并发与分布式需求。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">NoSQL 系列专题</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 448 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path class="fa-primary" d="M0 186.1V128C0 172.2 100.3 208 224 208 347.7 208 448 172.2 448 128V186.1C433.1 197.8 413.1 207.3 393.2 214.7 348.3 230.7 288.5 240 224 240 159.5 240 99.66 230.7 54.85 214.7 34.02 207.3 14.93 197.8 0 186.1V186.1zM0 346.1V288C0 332.2 100.3 368 224 368 347.7 368 448 332.2 448 288V346.1C433.1 357.8 413.1 367.3 393.2 374.7 348.3 390.7 288.5 400 224 400 159.5 400 99.66 390.7 54.85 374.7 34.02 367.3 14.93 357.8 0 346.1z"/><path class="fa-secondary" d="M448 80V128C448 172.2 347.7 208 224 208 100.3 208 0 172.2 0 128V80C0 35.82 100.3 0 224 0 347.7 0 448 35.82 448 80zM393.2 214.7C413.1 207.3 433.1 197.8 448 186.1V288C448 332.2 347.7 368 224 368 100.3 368 0 332.2 0 288V186.1C14.93 197.8 34.02 207.3 54.85 214.7 99.66 230.7 159.5 240 224 240 288.5 240 348.3 230.7 393.2 214.7V214.7zM54.85 374.7C99.66 390.7 159.5 400 224 400 288.5 400 348.3 390.7 393.2 374.7 413.1 367.3 433.1 357.8 448 346.1V432C448 476.2 347.7 512 224 512 100.3 512 0 476.2 0 432V346.1C14.93 357.8 34.02 367.3 54.85 374.7z"/></svg></p><p> <span class="p logo center large">NoSQL</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/NoSQL/" title="开始阅读"><i class="fa-duotone fa-database"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/NoSQL/">NoSQL</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/NoSQL/" itemprop="url"><span itemprop="name">NoSQL</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-flink/"><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="Flink 系列专题"><meta itemprop="description" content="Apache Flink是Apache基金会顶级开源流处理框架,以一切皆流为核心理念,将批处理视为流处理的有界特例。它采用真正的事件驱动模型,支持毫秒级延迟与精确一次(exactly-once)语义,通过Watermark机制优雅处理乱序事件。核心优势在于流批一体架构,统一DataStream API可处理有界&#x2F;无界数据,结合Pipeline Region调度与Unified Shuffle服务实现资源高效利用。提供SQL&#x2F;Table API与DataStream双接口,内置RocksDB&#x2F;批处理状态后端,广泛应用于金融监控、实时数仓等场景,字节跳动、快手等企业日均处理数据超万亿条。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Flink 系列专题</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="M463.9 448H448.9c18.25-18.38 30.1-42.13 30.1-64 0-26.5-22.12-52.75-47.87-61.13L432 224h47.88c20.36 0 35.62-18.85 31.4-38.77C500.9 136.4 466.8 96 415.9 96V64c-48 0-74.25 62.75-89.37 108.3L216 504.3C231.5 508.9 247.5 512 264.2 512h231.7c8.75 0 15.99-7.125 15.99-16C511.9 469.6 490.3 448 463.9 448zM415.1 160c0-8.875 7.12-16 15.1-16s15.98 7.125 15.98 16-7.125 16-15.1 16S415.1 168.9 415.1 160z"/><path class="fa-secondary" d="M287.1 288.1l-71.95 216.3c-66.92-19.56-118.1-77.63-120-149.7C95.64 329.2 101.8 305.5 112 284.2 47.94 269.6 0 212.5 0 144 0 64.47 64.47 0 143.1 0s143.1 64.47 143.1 144V288.1z"/></svg></p><p> <span class="p logo center large">Flink</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Flink/" title="开始阅读"><i class="fa-duotone fa-acorn"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flink/">Flink</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flink/" itemprop="url"><span itemprop="name">Flink</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-windows/"><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="Windows 系列专题"><meta itemprop="description" content="Windows是微软开发的多平台操作系统,以Windows 11为最新桌面版,25H2版本(内部版26200.7171)带来单页布局开始菜单、彩色电池图标等隐藏功能。支持AI图像编辑、文件摘要等操作,采用共享服务分支技术使更新体积缩减40%。占据全球桌面市场80%份额,Steam平台占有率达63.57%,提供家庭版、专业版及企业版,后者强化安全与管理功能,适合企业级应用。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Windows 系列专题</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 448 512"><path d="M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6 183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"/></svg></p><p> <span class="p logo center large">Windows</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Windows/" title="开始阅读"><i class="fa-brands fa-windows"></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/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/">操作系统</a><span class="sep"></span><a class="category-link" href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Windows/">Windows</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/" itemprop="url"><span itemprop="name">操作系统</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/Windows/" itemprop="url"><span itemprop="name">Windows</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/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.8 115.8 344.1C106.6 334.9 103.9 321.1 109.1 309.2 127.4 267.4 171.8 169 207.2 116.7 289.1-4.07 411.1-8.142 483.9 5.275 495.6 7.414 504.6 16.43 506.7 28.06 520.1 100.9 516.1 222.9 395.3 304.8 342.6 340.5 243 383.9 200.1 401.7 189.1 406.6 175.5 403.9 166.5 394.8L166.5 394.8zM384 168C406.1 168 424 150.1 424 128 424 105.9 406.1 88 384 88 361.9 88 344 105.9 344 128 344 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.8-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.9 228.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/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/" itemprop="url"><span itemprop="name">开发技术</span></a></span> <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/notes-centos/"><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="CentOS 系列专题"><meta itemprop="description" content="CentOS是红帽主导的社区企业Linux发行版,基于RHEL源码构建,2024年6月全面停服后由CentOS Stream替代。其终止引发迁移潮,Rocky&#x2F;AlmaLinux为主要兼容替代方案,国内则推openEuler&#x2F;麒麟V10等信创系统,是服务器操作系统生态重要转折点。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">CentOS 系列专题</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 448 512"><path d="M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7 76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6 90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"/></svg></p><p> <span class="p logo center large">CentOS</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/CentOS/" title="开始阅读"><i class="fa-brands fa-centos"></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/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/">操作系统</a><span class="sep"></span><a class="category-link" href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CentOS/">CentOS</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/" itemprop="url"><span itemprop="name">操作系统</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/CentOS/" itemprop="url"><span itemprop="name">CentOS</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/Linux/">Linux</a><span class="sep"></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> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/Linux/" itemprop="url"><span itemprop="name">Linux</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-echarts/"><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="Echarts 系列专题"><meta itemprop="description" content="ECharts是Apache开源的JavaScript数据可视化库,支持折线图、柱状图等50+图表类型,通过JSON配置实现主题切换、动态排序等交互效果。其基于ZRender引擎,支持Canvas&#x2F;SVG双渲染,适配Web&#x2F;移动端及Vue&#x2F;React框架,广泛应用于金融分析、大屏监控等场景。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Echarts 系列专题</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 576 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path class="fa-primary" d="M527.4 240H304V16.58C304 7.555 310.1 0 320 0 443.7 0 544 100.3 544 224 544 233 536.4 240 527.4 240zM558.4 288C567.6 288 575 295.8 573.8 305 566.1 360.9 539.1 410.6 499.9 447.3 493.9 452.1 484.5 452.5 478.7 446.7L320 288H558.4z"/><path class="fa-secondary" d="M32 272C32 150.7 122.1 50.34 238.1 34.25 248.2 32.99 256 40.36 256 49.61V288L412.5 444.5C419.2 451.2 418.7 462.2 411 467.7 371.8 495.6 323.8 512 272 512 139.5 512 32 404.6 32 272z"/></svg></p><p> <span class="p logo center large">Echarts</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Echarts/" title="开始阅读"><i class="fa-duotone fa-chart-pie"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Echarts/">Echarts</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Echarts/" itemprop="url"><span itemprop="name">Echarts</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-azkaban/"><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="Azkaban 系列专题"><meta itemprop="description" content="Azkaban是LinkedIn开源的批量工作流调度工具,通过Job配置文件定义任务依赖,提供Web界面管理调度。支持Hadoop生态组件,Java开发易扩展,适用于ETL和大数据任务自动化。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Azkaban 系列专题</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 448 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path class="fa-primary" d="M160 32V64H288V32C288 14.33 302.3 0 320 0 337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V192H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0 145.7 0 160 14.33 160 32zM216.1 416.1C207.6 426.3 192.4 426.3 183 416.1L119 352.1C109.7 343.6 109.7 328.4 119 319 128.4 309.7 143.6 309.7 152.1 319L200 366.1 295 271C304.4 261.7 319.6 261.7 328.1 271 338.3 280.4 338.3 295.6 328.1 304.1L216.1 416.1z"/><path class="fa-secondary" d="M448 464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192H448V464zM328.1 304.1C338.3 295.6 338.3 280.4 328.1 271 319.6 261.7 304.4 261.7 295 271L200 366.1 152.1 319C143.6 309.7 128.4 309.7 119 319 109.7 328.4 109.7 343.6 119 352.1L183 416.1C192.4 426.3 207.6 426.3 216.1 416.1L328.1 304.1z"/></svg></p><p> <span class="p logo center large">Azkaban</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Azkaban/" title="开始阅读"><i class="fa-duotone fa-calendar-check"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Azkaban/">Azkaban</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Azkaban/" itemprop="url"><span itemprop="name">Azkaban</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-sqoop/"><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="Sqoop 系列专题"><meta itemprop="description" content="Apache Sqoop是Apache旗下的开源数据迁移工具,专注于在Hadoop生态系统(HDFS、Hive、HBase)与关系型数据库(MySQL、Oracle等)间高效传输结构化数据。它通过将命令转换为MapReduce作业实现并行处理,支持全量&#x2F;增量导入导出,并提供自动类型转换和元数据同步功能,简化大数据与传统数据库的集成流程。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Sqoop 系列专题</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 576 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path class="fa-primary" d="M256 0v128h128L256 0zM568.1 295l-80-80c-9.375-9.375-24.56-9.375-33.94 0s-9.375 24.56 0 33.94L494.1 288H216C202.8 288 192 298.8 192 312s10.75 24 24 24h278.1l-39.03 39.03C450.3 379.7 448 385.8 448 392s2.344 12.28 7.031 16.97c9.375 9.375 24.56 9.375 33.94 0l80-80C578.3 319.6 578.3 304.4 568.1 295z"/><path class="fa-secondary" d="M384 336v128c0 26.51-21.49 48-48 48h-288C21.49 512 0 490.5 0 464v-416C0 21.49 21.49 0 48 0H256v128h128v160H216C202.8 288 192 298.8 192 312s10.75 24 24 24H384z"/></svg></p><p> <span class="p logo center large">Sqoop</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Sqoop/" title="开始阅读"><i class="fa-duotone fa-file-export"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Sqoop/">Sqoop</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Sqoop/" itemprop="url"><span itemprop="name">Sqoop</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-kafka/"><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="Kafka 系列专题"><meta itemprop="description" content="Apache Kafka是LinkedIn开发的分布式流处理平台,以高吞吐、低延迟和持久化存储为核心特性,支持每秒百万级消息处理。其架构采用发布-订阅模式,通过Topic分类数据,Partition实现并行处理,副本机制保障高可用,广泛用于日志收集、实时分析和事件驱动架构。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Kafka 系列专题</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 class="fa-primary" d="M160 64C160 28.65 188.7 0 224 0 259.3 0 288 28.65 288 64 288 99.35 259.3 128 224 128 188.7 128 160 99.35 160 64zM512 128C512 92.65 540.7 64 576 64 611.3 64 640 92.65 640 128 640 163.3 611.3 192 576 192 540.7 192 512 163.3 512 128zM640 448C640 483.3 611.3 512 576 512 540.7 512 512 483.3 512 448 512 412.7 540.7 384 576 384 611.3 384 640 412.7 640 448zM0 304C0 268.7 28.65 240 64 240 99.35 240 128 268.7 128 304 128 339.3 99.35 368 64 368 28.65 368 0 339.3 0 304z"/><path class="fa-secondary" d="M305.6 163.2C315.4 161.1 325.6 159.1 336 159.1 372.1 159.1 405 173.3 430.3 195.2L512.4 134.1C514.9 158.1 529.7 177.6 550.2 186.6L468.2 246.8C475.8 264.3 480 283.7 480 303.1 480 319.6 477.5 334.7 472.9 348.8L544.9 392C525.6 402.8 512.4 423.3 512 446.9L439.9 403.7C413.7 430.1 376.8 448 336 448 267.5 448 210.1 400.1 195.6 336H119.4C124.9 326.6 128 315.7 128 304 128 292.3 124.9 281.4 119.4 271.1H195.6C203 239 221.8 210.4 247.6 190.3L218.4 127.8C220.3 127.9 222.1 128 224 128 245.7 128 264.9 117.2 276.4 100.7L305.6 163.2zM336 384C380.2 384 416 348.2 416 303.1 416 259.8 380.2 223.1 336 223.1 291.8 223.1 255.1 259.8 255.1 303.1 255.1 348.2 291.8 384 336 384z"/></svg></p><p> <span class="p logo center large">Kafka</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Kafka/" 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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Kafka/">Kafka</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Kafka/" itemprop="url"><span itemprop="name">Kafka</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-flume/"><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="Flume 系列专题"><meta itemprop="description" content="Apache Flume是分布式、可靠的日志采集传输系统,通过Source-Channel-Sink架构实现数据流动。支持Exec&#x2F;Taildir等多数据源接入,Memory&#x2F;File Channel缓存数据,可输出至HDFS&#x2F;HBase&#x2F;Kafka等目的地。其事务机制保障数据可靠传输,广泛用于大数据平台日志聚合与实时数据管道构建。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Flume 系列专题</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 class="fa-primary" d="M288 0H96C78.33 0 64 14.33 64 32v192c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32V32C320 14.33 305.7 0 288 0zM544 64h-128c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V96C576 78.33 561.7 64 544 64z"/><path class="fa-secondary" d="M544 320H96c-54.4 0-96 41.6-96 96s41.6 96 96 96h448c54.4 0 96-41.6 96-96S598.4 320 544 320zM128 448c-19.2 0-32-12.8-32-32s12.8-32 32-32 32 12.8 32 32S147.2 448 128 448zM320 448c-19.2 0-32-12.8-32-32s12.8-32 32-32 32 12.8 32 32S339.2 448 320 448zM512 448c-19.2 0-32-12.8-32-32s12.8-32 32-32 32 12.8 32 32S531.2 448 512 448z"/></svg></p><p> <span class="p logo center large">Flume</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Flume/" title="开始阅读"><i class="fa-duotone fa-conveyor-belt-boxes"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flume/">Flume</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Flume/" itemprop="url"><span itemprop="name">Flume</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-hive/"><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="Hive 系列专题"><meta itemprop="description" content="Apache Hive是基于Hadoop的开源数据仓库工具,通过类SQL的HiveQL查询语言,将结构化数据映射为数据库表并转换为MapReduce、Tez或Spark任务执行,适用于大规模数据集的离线分析。其数据存储于HDFS,元数据通过Metastore管理,支持分区表、分桶表等优化结构,以及自定义函数扩展功能。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Hive 系列专题</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 576 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path class="fa-primary" d="M342.1 170.9c4.611-4.236 8.76-8.973 12.28-14.18 5.75-8.512 9.906-18.19 12.04-28.61C367.4 122.9 368 117.5 368 111.1c0-20.4-7.832-38.84-20.4-52.97l31.71-31.71c6.25-6.25 6.25-16.38 0-22.62s-16.38-6.25-22.62 0l-34.99 34.99C311.4 34.88 300.1 31.1 288 31.1c-5.523 0-10.92.5618-16.12 1.628-6.189 1.266-12 3.445-17.58 6.051L219.3 4.688c-6.25-6.25-16.38-6.25-22.62 0s-6.25 16.38 0 22.62L228.4 58.99C215.8 73.12 208 91.59 208 111.1c0 5.523.5586 10.92 1.625 16.13 2.131 10.42 6.287 20.09 12.04 28.61C225.2 161.1 229.6 166.5 234.3 170.8 207.1 181.7 185.6 200.4 170.2 224h235.6C390.5 200.5 368.3 181.9 342.1 170.9zM234.5 464h107c13.61-13.89 28.02-30.1 41.23-48H193.3C206.5 433.9 220.9 450.1 234.5 464zM420.9 256H155.1c-4.773 14.15-7.951 29.04-7.945 44.8 0 1.068.2266 2.134.2559 3.203h281.1c.0293-1.068.2559-2.133.2559-3.201C428.8 285 425.6 270.1 420.9 256zM172.5 384h230.1c8.742-15.45 15.8-31.55 20.21-48H152.3C156.7 352.4 163.8 368.6 172.5 384z"/><path class="fa-secondary" d="M193.3 416h189.5c7.52-10.19 14.5-20.93 20.76-32H172.5C178.8 395.1 185.7 405.8 193.3 416zM152.3 336h271.4c2.834-10.59 4.555-21.28 4.84-32H147.5C147.7 314.7 149.5 325.4 152.3 336zM288 512c0 0 24.78-18.69 53.5-48H234.5C263.2 493.3 288 512 288 512zM448 95.1c-27.72 0-55.38 9.465-80.73 22.73-1.732 20.65-11.2 38.83-25.63 52.03 11.44 4.789 22.22 11.14 31.91 18.62C401.6 170.5 427.5 160 448 160c34.67 0 64 21.92 64 48C512 233.1 482.7 256 448 256c-8.865 0-19.02-2.6-29.64-6.322C414.9 240.7 411 231.1 405.8 224H170.2C163.8 233.8 158.1 244.7 155.1 256h265.7c4.773 14.15 7.951 29.04 7.945 44.8 0 1.068-.2266 2.133-.2559 3.201-.125 4.727-.5566 9.452-1.213 14.16C434.2 319.2 441.1 320 448 320c70.67 0 128-50.12 128-111.1C576 146.2 518.7 95.1 448 95.1zM155.1 256c.7305-2.166 1.695-4.205 2.5-6.332C147 253.4 136.8 256 127.1 256 93.29 256 64 234 64 207.1 64 192.9 73.79 182.1 79.62 176.1 91.93 166.2 109.5 159.1 127.1 160c20.47 0 46.42 10.53 74.42 29.38C212.1 181.9 222.8 175.6 234.3 170.8 219.8 157.6 210.4 139.4 208.7 118.7 183.3 105.5 155.7 95.1 128 95.1 57.33 95.99 0 146.1 0 207.1 0 269.8 57.29 320 127.1 320 134.9 320 141.8 319.2 148.7 318.2 148 313.5 147.6 308.7 147.5 304 147.4 302.9 147.2 301.9 147.2 300.8 147.2 285 150.4 270.1 155.1 256z"/></svg></p><p> <span class="p logo center large">Hive</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Hive/" title="开始阅读"><i class="fa-duotone fa-bee"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Hive/">Hive</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Hive/" itemprop="url"><span itemprop="name">Hive</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-hadoop/"><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="Hadoop 系列专题"><meta itemprop="description" content="Apache Hadoop是开源分布式计算平台,核心为HDFS分布式文件系统与MapReduce批处理引擎。HDFS采用分块存储与副本机制保障高可靠性,MapReduce通过分治思想实现并行计算,支持PB级数据处理。生态包含Hive数据仓库、HBase数据库等组件,适用于离线分析与数据湖构建,金融、互联网企业广泛应用。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Hadoop 系列专题</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 class="fa-primary" d="M528 128c-8.837 0-16 7.164-16 15.1 0 8.836 7.163 15.99 16 15.99S544 152.9 544 144C544 135.2 536.8 128 528 128zM352 192.1V119.3c-30.58-17.61-41.08-56.66-23.47-87.24.0056-.0097-.0056.0097 0 0L293.9 32.2C290.1 42.45 288.1 53.27 288 64.2c.1005 27.19 11.73 53.05 32 71.18v56.76c.0439 33.67 26.14 61.61 59.74 63.89L408 255.1c4.418 0 8-3.581 8-7.999V231.1c0-4.418-3.582-7.999-8-7.999h-27.22C364.4 222.3 351.1 208.5 352 192.1z"/><path class="fa-secondary" d="M512 32.05l-72.65.1546c-17.51-30.64-56.54-41.28-87.18-23.77s-41.28 56.54-23.77 87.18C334 105.5 342.2 113.6 352 119.3v72.81c.0039 16.42 12.44 30.23 28.78 31.89H408c4.418 0 8 3.581 8 7.999v15.1c0 4.418-3.582 7.999-8 7.999L384 256.1c-35.33-.0331-63.97-28.61-64-63.94V135.4C299.7 117.3 288.1 91.38 288 64.2c.1059-10.93 2.102-21.75 5.9-31.1L192 32.06c-106 0-192 86.05-192 191.1v111.1c0 8.836 7.163 15.1 16 15.1L32 352v143.1C32 504.8 39.16 512 48 512h64C120.8 512 128 504.8 128 496v-107.8c32.35 17.54 70.72 27.84 112 27.84s79.65-10.32 112-27.86v107.9C352 504.8 359.2 512 368 512h64c8.837 0 16-7.164 16-15.1V288l64 .0092c23.44 0 45.11-6.767 64-17.75v97.37c.0572 8.864-7.067 16.13-15.93 16.35C551.3 384.1 544.1 376.9 544 368.1c0-8.779-7.64-16-16.42-16L496 352c-8.837 0-16 7.164-16 15.1.0551 44.22 35.84 80.06 80.07 80 2.736-.0034 5.581-.1318 8.302-.415C610 443.4 640 405.1 640 363.3V160C639.1 89.37 582.7 32.05 512 32.05zM528 160c-8.837 0-16-7.157-16-15.99 0-8.836 7.163-15.1 16-15.1S544 135.2 544 144C543.1 152.9 536.8 160 528 160z"/></svg></p><p> <span class="p logo center large">Hadoop</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Hadoop/" title="开始阅读"><i class="fa-duotone fa-elephant"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Hadoop/">Hadoop</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Hadoop/" itemprop="url"><span itemprop="name">Hadoop</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-zookeeper/"><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="Zookeeper 系列专题"><meta itemprop="description" content="ZooKeeper是高性能分布式协调服务,基于ZAB协议实现数据一致性,提供配置管理、服务发现等核心功能。采用Leader-Follower-Observer架构,支持分布式锁、命名服务等场景,通过树形ZNode存储节点数据,客户端可监听节点变化实现实时同步。"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Zookeeper 系列专题</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="M152.1 224.1c-12.5-12.5-32.75-12.5-45.25 0L38.97 291.1c-50.01 50-45.26 181-22.63 203.7 22.63 22.63 153.6 27.38 203.6-22.63l67.88-67.89c12.5-12.5 12.5-32.75 0-45.25L152.1 224.1z"/><path class="fa-secondary" d="M502.6 99.88l-90.51-90.51c-12.5-12.5-32.75-12.51-45.26 0l-45.25 45.25c-29.46 29.46-35.37 73.31-18.46 108.1L197.4 269.4l45.26 45.26 105.8-105.8c35.65 16.91 79.51 11 108.1-18.46l45.26-45.25C515.1 132.6 515.1 112.4 502.6 99.88zM412.1 145.1c-12.48 12.48-32.78 12.47-45.26 0-12.47-12.47-12.48-32.77 0-45.26l22.63-22.63 45.25 45.26L412.1 145.1z"/></svg></p><p> <span class="p logo center large">Zookeeper</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Zookeeper/" title="开始阅读"><i class="fa-duotone fa-shovel"></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/%E5%A4%A7%E6%95%B0%E6%8D%AE/">大数据</a><span class="sep"></span><a class="category-link" href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Zookeeper/">Zookeeper</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/" itemprop="url"><span itemprop="name">大数据</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E5%A4%A7%E6%95%B0%E6%8D%AE/Zookeeper/" itemprop="url"><span itemprop="name">Zookeeper</span></a></span><span class="dot"></span> <a class="category-link" href="/tags/BigData/">BigData</a><span class="sep"></span><a class="category-link" href="/tags/Notes/">Notes</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/BigData/" itemprop="url"><span itemprop="name">BigData</span></a></span> <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/notes-os/"><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="操作系统是控制计算机硬件与软件资源的核心系统软件,通过进程管理、内存分配、设备驱动和文件系统等功能,实现多任务并发执行与资源共享。其核心特性包括并发性(多任务交替运行)、共享性(资源复用)和异步性(进程执行不可预知),历经从MS-DOS命令行到Windows、macOS图形界面,再到Android、HarmonyOS跨设备系统的演进,当前正朝着AI集成(如Windows Copilot)、国产化(开放麒麟)和微内核架构方向发展。"></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 384 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path class="fa-primary" d="M128 159.1c-17.62 0-31.1 14.38-31.1 32.01s14.38 32.01 31.1 32.01 32-14.38 32-32.01S145.6 159.1 128 159.1zM256 159.1c-17.62 0-32 14.38-32 32.01s14.38 32.01 32 32.01 32-14.38 32-32.01S273.6 159.1 256 159.1z"/><path class="fa-secondary" d="M186.1.1032c-105.1 3.126-186.1 94.75-186.1 199.9v264c0 14.25 17.3 21.38 27.3 11.25l24.95-18.5c6.625-5.001 16-4.001 21.5 2.25l43 48.31c6.25 6.251 16.37 6.251 22.62 0l40.62-45.81c6.375-7.251 17.62-7.251 24 0l40.63 45.81c6.25 6.251 16.38 6.251 22.62 0l43-48.31c5.5-6.251 14.88-7.251 21.5-2.25l24.95 18.5c10 10.13 27.3 3.002 27.3-11.25V192C384 83.98 294.9-3.147 186.1.1032zM128 224c-17.62 0-31.1-14.38-31.1-32.01s14.38-32.01 31.1-32.01 32 14.38 32 32.01S145.6 224 128 224zM256 224c-17.62 0-32-14.38-32-32.01s14.38-32.01 32-32.01c17.62 0 32 14.38 32 32.01S273.6 224 256 224z"/></svg></p><p> <span class="p logo center large">OS</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/OS/" title="开始阅读"><i class="fa-duotone fa-ghost"></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/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/">操作系统</a><span class="sep"></span><a class="category-link" href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/OS/">OS</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/" itemprop="url"><span itemprop="name">操作系统</span></a></span> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/OS/" itemprop="url"><span itemprop="name">OS</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/notes-51/"><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="51 系列专题"><meta itemprop="description" content="51单片机是兼容Intel MCS-51架构的8位微控制器,以结构简单、成本低廉成为嵌入式入门首选。其核心包含CPU、Flash&#x2F;ROM程序存储、RAM数据存储及SFR特殊功能寄存器,支持GPIO、定时器、中断等基础外设,通过Keil C51等工具开发,适用于家电控制、教学实验等简单场景,是学习STM32等高级MCU的基础"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">51 系列专题</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="M384 64H128C92.65 64 64 92.66 64 128v256c0 35.34 28.65 64 64 64h256c35.35 0 64-28.66 64-64V128C448 92.66 419.3 64 384 64zM384 368c0 8.836-7.162 16-16 16h-224C135.2 384 128 376.8 128 368v-224C128 135.2 135.2 128 144 128h224C376.8 128 384 135.2 384 144V368z"/><path class="fa-secondary" d="M0 160c0 8.836 7.164 16 16 16H64v-32H16C7.164 144 0 151.2 0 160zM0 256c0 8.836 7.164 16 16 16H64v-32H16C7.164 240 0 247.2 0 256zM176 16C176 7.164 168.8 0 160 0 151.2 0 144 7.164 144 16V64h32V16zM0 352c0 8.836 7.164 16 16 16H64v-32H16C7.164 336 0 343.2 0 352zM272 16C272 7.164 264.8 0 256 0 247.2 0 240 7.164 240 16V64h32V16zM512 160c0-8.836-7.162-16-16-16H448v32h48C504.8 176 512 168.8 512 160zM496 336H448v32h48c8.838 0 16-7.164 16-16S504.8 336 496 336zM352 0c-8.836 0-16 7.164-16 16V64h32V16C368 7.164 360.8 0 352 0zM496 240H448v32h48C504.8 272 512 264.8 512 256S504.8 240 496 240zM144 496C144 504.8 151.2 512 160 512c8.838 0 16-7.164 16-16V448h-32V496zM336 496c0 8.836 7.164 16 16 16 8.838 0 16-7.164 16-16V448h-32V496zM240 496c0 8.836 7.164 16 16 16 8.838 0 16-7.164 16-16V448h-32V496zM160 352h192V160H160V352z"/></svg></p><p> <span class="p logo center large">51</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/51/" title="开始阅读"><i class="fa-duotone fa-microchip"></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/51/">51</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/51/" itemprop="url"><span itemprop="name">51</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%8D%95%E7%89%87%E6%9C%BA/">单片机</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%8D%95%E7%89%87%E6%9C%BA/" 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-cryptography/"><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="Cryptography 系列专题"><meta itemprop="description" content="密码学是保障信息安全的核心技术,包含对称加密(如AES)、非对称加密(如RSA、ECC)及哈希函数等基础算法。广泛应用于网络通信(TLS&#x2F;SSL)、数字签名和区块链等场景,通过加密协议确保数据机密性与完整性。当前面临量子计算威胁,后量子密码学(如格密码、编码密码)成为重要发展方向"></span><span hidden><meta itemprop="image" content="/lib/favicon/android-chrome-192x192.png"></span> <span hidden itemprop="name headline">Cryptography 系列专题</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 448 512"><defs><style>.fa-secondary{opacity:.4}</style></defs><path class="fa-primary" d="M160 144C160 64.47 224.5 0 304 0 383.5 0 448 64.47 448 144 448 223.5 383.5 288 304 288 224.5 288 160 223.5 160 144zM304 224C348.2 224 384 188.2 384 144 384 99.82 348.2 64 304 64 259.8 64 224 99.82 224 144 224 188.2 259.8 224 304 224z"/><path class="fa-secondary" d="M227.3 265.9 141.3 352 182.6 393.4C195.1 405.9 195.1 426.1 182.6 438.6 170.1 451.1 149.9 451.1 137.4 438.6L96 397.3 77.25 416 118.6 457.4C131.1 469.9 131.1 490.1 118.6 502.6 106.1 515.1 85.87 515.1 73.37 502.6L9.372 438.6C-3.124 426.1-3.124 405.9 9.372 393.4L182.1 220.7C193.6 238.9 209.1 254.4 227.3 265.9V265.9z"/></svg></p><p> <span class="p logo center large">Cryptography</span></p><br><br><span class="btn solid large center"><a class="button" href="/notes/Cryptography/" title="开始阅读"><i class="fa-duotone fa-key-skeleton"></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/Cryptography/">Cryptography</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Cryptography/" itemprop="url"><span itemprop="name">Cryptography</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%AF%86%E7%A0%81%E5%AD%A6/">密码学</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/tags/%E5%AF%86%E7%A0%81%E5%AD%A6/" itemprop="url"><span itemprop="name">密码学</span></a></span> <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></section></div><aside id="l_side" itemscope itemtype="http://schema.org/WPSideBar"><section class="widget blogger desktop 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 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 desktop 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>72 篇</div></div><div class="webinfo-item"><div>已运行时间:</div><div id="webinfo-runtime-count"></div></div><div class="webinfo-item"><div>本站总字数:</div><div>83.5k 字</div></div></div></div></section><div class="widget-sticky pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="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.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.css("https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/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);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("contributors-api")&&"undefined"==typeof ContributorsJS&&volantis.js("/js/plugins/tags/contributors.js")}loadIssuesJS(),volantis.pjax.push((()=>{loadIssuesJS()}))</script><script defer="defer" src="https://cdn.bootcdn.net/ajax/libs/vanilla-lazyload/17.1.0/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.1660614606622/libs/flying-pages/flying-pages.min.js"></script><script>volantis.css("https://cdn.bootcdn.net/ajax/libs/aplayer/1.10.1/APlayer.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/aplayer/1.10.1/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 t=check_giscus();if(!t)return;let s=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(s).forEach((t=>{"theme"!=t&&e.setAttribute("data-"+t,s[t])})),e.setAttribute("data-theme",volantis.giscus.Theme),e.setAttribute("crossorigin","anonymous"),t.appendChild(e)}function dark_giscus(){if(!check_giscus())return;const t={setConfig:{theme:volantis.giscus.Theme}};document.querySelector("iframe.giscus-frame").contentWindow.postMessage({giscus:t},"https://giscus.app")}volantis.layoutHelper("comments",'<div id="giscus_container"></div>'),volantis.giscus={},pjax_giscus(),volantis.pjax.push(pjax_giscus),volantis.dark.push(dark_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)</script><script>function load_swiper(){document.querySelectorAll(".swiper-container")[0]&&(volantis.css("https://cdn.bootcdn.net/ajax/libs/Swiper/8.3.2/swiper-bundle.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/Swiper/8.3.2/swiper-bundle.min.js").then((()=>{pjax_swiper()})))}function pjax_swiper(){volantis.swiper=new Swiper(".swiper-container",{slidesPerView:"auto",spaceBetween:8,centeredSlides:!0,loop:!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())}))</script><script>volantis.css("https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/themes/blue/pace-theme-minimal.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/pace.min.js").then((()=>{Pace.options.restartOnPushState=!1,volantis.pjax.send(Pace.restart,"Pace.restart"),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><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 e=(e,t,n=2)=>Math.abs(e-t)<=n,t=(t,n)=>!e(t.width,n.width)||!e(t.height,n.height),n=new WeakMap,i=(e,i=e.getClientBoundingRect())=>{let o=n.get(e);o&&!t(o,i)||(n.set(e,i),e.style["contain-intrinsic-size"]=`${i.width}px ${i.height}px`)},o=new IntersectionObserver(((e,t)=>{e.forEach((e=>{i(e.target,e.boundingClientRect)}))}),{rootMargin:"500px 0px 500px 0px"}),r=new ResizeObserver(((e,t)=>{e.forEach((e=>{i(e.target,e.contentRect)}))})),s=e=>{let t=document.querySelectorAll(e);t.length&&(t.forEach((e=>{o.observe(e),r.observe(e)})),requestAnimationFrame((()=>{requestAnimationFrame((()=>{t[0].style["content-visibility"]="auto"}))})))},a=()=>{"content-visibility"in document.documentElement.style&&s(".post-story")};a(),volantis.pjax.push(a)}catch(e){console.log(e)}</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><script src="https://cdn.bootcdn.net/ajax/libs/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></div><pjax> <a style="display:none" target="_blank" rel="external nofollow noopener noreferrer" href="https://bot-trap.mhuig.top/">Are You A Robot?</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></body></html>