PageSourceSearch

https://covear.top/archives

html covear.top collected 2026-10-04 01:43:17 UTC 63,720 bytes, 1,807 lines download raw bytes

1<!DOCTYPE html>
2<html>
3  <!-- meta/link... -->
4  
5
6
7
8<head>
9  <meta http-equiv="content-type" content="text/html; charset=utf-8">
10  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
11  <!-- Global site tag (gtag.js) - Google Analytics -->
12
13
14  <meta name="referrer" content="no-referrer" />
15  <title>归档 | 啊晖de老窝</title>
16
17  <link rel="icon" type="image/x-icon, image/vnd.microsoft.icon" href="/favicon.ico">
18  <link rel="stylesheet" href="https://at.alicdn.com/t/font_1911880_c1nvbyezg17.css">
19  <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
20  <link href="/js/swiper/[email protected]" rel="stylesheet">
21  
22  
23    
23<script>
24        var themeModelId = '0';
25        if (themeModelId) {
26            localStorage.setItem('modelId', themeModelId);
27        }
28    </script>
28
29    
30    
30<script defer src="/cdn/live2d-widget/autoload.js"></script>
30
31    
31<script>
32        var live2dOpen = eval('true') || false;
33        if (!live2dOpen) {
34            localStorage.setItem('waifu-display', 1609323474481);
35        }
36    </script>
36
37  
38  
39  
40<link rel="stylesheet" href="/css/animate.min.css">
41
42  
43<link rel="stylesheet" href="/css/style.css">
44
45  
46  
47    <link href="https://fastly.jsdelivr.net/npm/@fancyapps/[email protected]/dist/fancybox/fancybox.css" rel="stylesheet">
48  
49  
50    
51<link rel="stylesheet" href="/js/shareJs/share.min.css">
52
53  
54  <style>
55        @media (max-width: 992px) {
56            #waifu {
57                display: none;
58            }
59        }
60    </style>
61    
61<script defer src="https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/pace.min.js"></script>
61
62    <link href="https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/themes/black/pace-theme-flash.min.css" rel="stylesheet">
63
64    
65        
65<script src="/js/valine/index.js"></script>
65
66    
67    
68    <!-- 依赖于jquery和vue -->
69    
70        
70<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
70
71    
72
73    
74        
74<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.9/vue.min.js"></script>
74
75    
76
77    <!-- import link -->
78    
79        
80            
81        
82            
83        
84    
85    <!-- import script -->
86    
87        
88            
89        
90            
91        
92    
93
94<meta name="generator" content="Hexo 7.3.0"><link rel="alternate" href="/atom.xml" title="啊晖de老窝" type="application/atom+xml">
95</head>
96
97  
98  <!-- 预加载动画 -->
99  <!-- 页面预加载动画 -->
100
101  
102    <div id='loader'>
103  <link rel="stylesheet" href="/js/loaded/index.css" >
104  <div class="loading-left-bg"></div>
105  <div class="loading-right-bg"></div>
106  <div class="spinner-box">
107    <div class="configure-border-1">
108      <div class="configure-core"></div>
109    </div>
110    <div class="configure-border-2">
111      <div class="configure-core"></div>
112    </div>
113    <div class="loading-word">加载中...</div>
114  </div>
115</div>
116  
117<script>
118  var endLoading = function () {
119    document.body.style.overflow = 'auto';
120    document.getElementById('loader').classList.add("loading");
121  }
122  window.addEventListener('DOMContentLoaded',endLoading);
123</script>
123
124
125  <body>
126    <!-- 判断是否为暗黑风格 -->
127    <!-- 判断是否为黑夜模式 -->
128<script>
129  let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false');
130
131  if (isDark) {
132    $(document.body).addClass('darkModel');
133  }
134</script>
134
135
136    <!-- 需要在上面加载的js -->
137    
137<script>
138  function loadScript(src, cb) {
139    return new Promise(resolve => {
140      setTimeout(function () {
141        var HEAD = document.getElementsByTagName("head")[0] || document.documentElement;
142        var script = document.createElement("script");
143        script.setAttribute("type", "text/javascript");
144        if (cb) {
145          if (JSON.stringify(cb)) {
146            for (let p in cb) {
147              if (p == "onload") {
148                script[p] = () => {
149                  cb[p]()
150                  resolve()
151                }
152              } else {
153                script[p] = cb[p]
154                script.onload = resolve
155              }
156            }
157          } else {
158            script.onload = () => {
159              cb()
160              resolve()
161            };
162          }
163        } else {
164          script.onload = resolve
165        }
166        script.setAttribute("src", src);
167        HEAD.appendChild(script);
168      });
169    });
170  }
171
172  //https://github.com/filamentgroup/loadCSS
173  var loadCSS = function (src) {
174    return new Promise(resolve => {
175      setTimeout(function () {
176        var link = document.createElement('link');
177        link.rel = "stylesheet";
178        link.href = src;
179        link.onload = resolve;
180        document.getElementsByTagName("head")[0].appendChild(link);
181      });
182    });
183  };
184
185</script>
185 
186
187<!-- 轮播图所需要的js -->
188<script src="/js/swiper/swiper.min.js"></script>
vendor: 1 bytes, line 188
188
189<script src="/js/swiper/vue-awesome-swiper.js"></script>
vendor: 1 bytes, line 189
189
190<script src="/js/swiper/swiper.animate1.0.3.min.js"></script>
190
191
192<script type="text/javascript">
193  Vue.use(window.VueAwesomeSwiper)
194</script>
194
195
196
197  
197<script src="/js/vue-typed-js/index.js"></script>
197
198
199
200<!-- 首页的公告滚动插件的js需要重新加载 -->
201<script src="/js/vue-seamless-scroll/index.js"></script>
201
202
203<!-- 打字机效果js -->
204<script src="https://cdn.bootcdn.net/ajax/libs/typed.js/2.0.12/typed.min.js"></script>
204
205
206
207    <div id="safearea">
208      <main class="main" id="pjax-container">
209        <!-- 头部导航 -->
210        
211<header class="header  " 
212  id="navHeader"
213  style="position: fixed;
214  left: 0; top: 0; z-index: 10;width: 100%;"
215>
216  <div class="header-content">
217    <div class="bars">
218      <div id="appDrawer" class="sidebar-image">
219  <div class="drawer-box-icon">
220    <i class="fas fa-bars" aria-hidden="true" @click="showDialogDrawer"></i>
221  </div>
222  
223  <transition name="fade">
224    <div class="drawer-box_mask" v-cloak style="display: none;" v-show="visible" @click.self="cancelDialogDrawer">
225    </div>
226  </transition>
227  <div class="drawer-box" :class="{'active': visible}">
228    <div class="drawer-box-head bg-color">
229      <img class="drawer-box-head_logo lazyload placeholder" src="https://img2.covear.top/2023-05-21-favicon.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-favicon.svg" srcset="/img/loading.min.svg" alt="logo">
230      <h3 class="drawer-box-head_title">啊晖de老窝</h3>
231      <h5 class="drawer-box-head_desc">David H. Deng&#39;s Blog</h5>
232    </div>
233    
234    <div class="drawer-box-content">
235      <ul class="drawer-box-content_menu">
236        
237          
238            <li class="drawer-box-content_item" style="position: relative;">
239              
240                <a href="/" class="drawer-menu-item-link">
241                  
242                    <i class="fas fa-home" aria-hidden="true"></i>
243                  
244                  <span class="name">首页</span>
245                </a>
246              
247            </li>
248          
249            <li class="drawer-box-content_item" style="position: relative;">
250              
251                <a href="/archives" class="drawer-menu-item-link">
252                  
253                    <i class="fas fa-archive" aria-hidden="true"></i>
254                  
255                  <span class="name">归档</span>
256                </a>
257              
258            </li>
259          
260            <li class="drawer-box-content_item" style="position: relative;">
261              
262                <a href="/tags" class="drawer-menu-item-link">
263                  
264                    <i class="fas fa-tags" aria-hidden="true"></i>
265                  
266                  <span class="name">标签</span>
267                </a>
268              
269            </li>
270          
271            <li class="drawer-box-content_item" style="position: relative;">
272              
273                <a href="/categories" class="drawer-menu-item-link">
274                  
275                    <i class="fas fa-bookmark" aria-hidden="true"></i>
276                  
277                  <span class="name">分类</span>
278                </a>
279              
280            </li>
281          
282            <li class="drawer-box-content_item" style="position: relative;">
283              
284                <a href="/about" class="drawer-menu-item-link">
285                  
286                    <i class="fas fa-user" aria-hidden="true"></i>
287                  
288                  <span class="name">关于</span>
289                </a>
290              
291            </li>
292          
293            <li class="drawer-box-content_item" style="position: relative;">
294              
295                <a href="/friends" class="drawer-menu-item-link">
296                  
297                    <i class="fas fa-up-right-from-square" aria-hidden="true"></i>
298                  
299                  <span class="name">友情链接</span>
300                </a>
301              
302            </li>
303          
304        
305        
306      </ul>
307    </div>
308  </div>
309</div>
310
311<script>
312  var body = document.body || document.documentElement || window;
313  var vm = new Vue({
314    el: '#appDrawer',
315    data: {
316      visible: false,
317      top: 0,
318      openArr: [],
319    },
320    computed: {
321    },
322    mounted() {
323    },
324    methods: {
325      isOpen(index) {
326        if (this.openArr.includes(index)) {
327          return true;
328        } else {
329          return false;
330        }
331      },
332      openOrCloseMenu(curIndex) {
333        const index = this.openArr.indexOf(curIndex);
334        if (index !== -1) {
335          this.openArr.splice(index, 1);
336        } else {
337          this.openArr.push(curIndex);
338        }
339      },
340      showDialogDrawer() {
341        this.visible = true;
342        // 防止页面滚动,只能让弹框滚动
343        this.top = $(document).scrollTop()
344        body.style.cssText = 'width: 100%; height: 100%;overflow: hidden;';
345      },
346      cancelDialogDrawer() {
347        this.visible = false;
348        body.removeAttribute('style');
349        $(document).scrollTop(this.top)
350      }
351    },
352    created() {}
353  })
354</script>
354
355
356    </div>
357    <div class="blog-title" id="author-avatar">
358      
359        <div class="avatar">
360          <img src="https://img2.covear.top/2023-05-21-favicon.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-favicon.svg" srcset="/img/loading.min.svg" alt="logo">
361        </div>
362      
363      <a href="/" class="logo">啊晖de老窝</a>
364    </div>
365    <nav class="navbar">
366      <ul class="menu">
367        
368          
369            <li class="menu-item" style="position: relative;">
370              
371                <a href="/" class="menu-item-link" title="首页">
372                  
373                    <i class="fas fa-home" aria-hidden="true"></i>
374                  
375                  <span class="name">首页</span>
376                </a>
377              
378            </li>
379          
380            <li class="menu-item" style="position: relative;">
381              
382                <a href="/archives" class="menu-item-link" title="归档">
383                  
384                    <i class="fas fa-archive" aria-hidden="true"></i>
385                  
386                  <span class="name">归档</span>
387                </a>
388              
389            </li>
390          
391            <li class="menu-item" style="position: relative;">
392              
393                <a href="/tags" class="menu-item-link" title="标签">
394                  
395                    <i class="fas fa-tags" aria-hidden="true"></i>
396                  
397                  <span class="name">标签</span>
398                </a>
399              
400            </li>
401          
402            <li class="menu-item" style="position: relative;">
403              
404                <a href="/categories" class="menu-item-link" title="分类">
405                  
406                    <i class="fas fa-bookmark" aria-hidden="true"></i>
407                  
408                  <span class="name">分类</span>
409                </a>
410              
411            </li>
412          
413            <li class="menu-item" style="position: relative;">
414              
415                <a href="/about" class="menu-item-link" title="关于">
416                  
417                    <i class="fas fa-user" aria-hidden="true"></i>
418                  
419                  <span class="name">关于</span>
420                </a>
421              
422            </li>
423          
424            <li class="menu-item" style="position: relative;">
425              
426                <a href="/friends" class="menu-item-link" title="友情链接">
427                  
428                    <i class="fas fa-up-right-from-square" aria-hidden="true"></i>
429                  
430                  <span class="name">友情链接</span>
431                </a>
432              
433            </li>
434          
435        
436      </ul>
437      
438      
439        <div id="appSearch">
440  <div class="search"  @click="showDialog()"><i class="fas fa-search" aria-hidden="true"></i></div>
441  <transition name="fade">
442    <div class="message-box_wrapper" style="display: none;" v-cloak v-show="dialogVisible" @click.self="cancelDialogVisible()">
443      <div class="message-box animated bounceInDown">
444        <h2>
445          <span>
446            <i class="fas fa-search" aria-hidden="true"></i>
447            <span class="title">本地搜索</span>
448          </span>
449          <i class="fas fa-times close" pointer style="float:right;" aria-hidden="true" @click.self="cancelDialogVisible()"></i>
450        </h2>
451        <form class="site-search-form">
452          <input type="text"
453            placeholder="请输入关键字"
454            id="local-search-input" 
455            @click="getSearchFile()"
456            class="st-search-input"
457            v-model="searchInput"
458          />
459        </form>
460        <div class="result-wrapper">
461          <div id="local-search-result" class="local-search-result-cls"></div>
462        </div>
463      </div>
464    </div>
465  </transition>
466</div>
467<script src="/js/local_search.js"></script>
vendor: 1 bytes, line 467
467
468<script>
469  var body = document.body || document.documentElement || window;
470  var vm = new Vue({
471    el: '#appSearch',
472    data: {
473      dialogVisible: false,
474      searchInput: '',
475      top: 0,
476    },
477    computed: {
478    },
479    mounted() {
480      window.addEventListener('pjax:complete', () => {
481        this.cancelDialogVisible();
482      })
483    },
484    methods: {
485      showDialog() {
486        this.dialogVisible = true;
487        // 防止页面滚动,只能让弹框滚动
488        this.top = $(document).scrollTop()
489        body.style.cssText = 'overflow: hidden;';
490      },
491      getSearchFile() {
492        if (!this.searchInput) {
493          getSearchFile("/search.xml");
494        }
495      },
496      cancelDialogVisible() {
497        this.dialogVisible = false;
498        body.removeAttribute('style');
499        $(document).scrollTop(this.top)
500      },
501    },
502    created() {}
503  })
504</script>
504
505<!-- 解决刷新页面闪烁问题,可以在元素上添加display: none, 或者用vue.extend方法,详情:https://blog.csdn.net/qq_31393401/article/details/81017912 -->
506<!-- 下面是搜索基本写法 -->
507<!-- 
507<script type="text/javascript" id="local.search.active">
508  var inputArea = document.querySelector("#local-search-input");
509  inputArea.onclick   = function(){ getSearchFile(); this.onclick = null }
510  inputArea.onkeydown = function(){ if(event.keyCode == 13) return false }
511</script>
511 -->
512
513      
514
515    </nav>
516  </div>
517  
518  
519</header>
520        <!-- 内容区域 -->
521        <div class="bg-dark-floor" style="position: fixed;left: 0;top: 0;width: 100%;height: 100%;z-index: -2;"></div>
522<div class="bg-light-floor-archive" style="position: fixed;left: 0;top: 0;width: 100%;height: 100%;z-index: -3;"></div>
523<div class="archive-header" style="background-image:url('https://pic1.zhimg.com/80/v2-1414b3a4b205e19060db18a20d08723a_1440w.jpg?source=1940ef5c')">
524  <div class="archive-header-title">
525    Archive
526  </div>
527  <div class="archive-header-desc">
528  
529  <span class="title" id="archive-header-desc"></span>
530  
530<script>
531  function typedFn() {
532    const el = '#archive-header-desc';
533    const type = 'archive';
534    let desc = '愿你如风,被人温柔以待'
535    var typed = new Typed(el, {
536      strings: [desc],
537      startDelay: 100,
538      typeSpeed: 100,
539      loop: true,
540      backSpeed: 50,
541      showCursor: true
542    });
543  }
544  typedFn();
545</script>
545
546  
547  </div>
548  <div class="mask-box"></div>
549</div>
550
551<div class="archive-video">
552  <video class="full-video" autoplay loop muted>
553      <source style="width: 100%;height: 100vh;" src="/">
554  </video>
555  <div class="video-header-title">
556    Archive
557  </div>
558  <div class="video-header-desc">
559  
560      <span class="title" id="archive-video-header-desc"></span>
561      
561<script>
562  function typedFn() {
563    const el = '#archive-video-header-desc';
564    const type = 'archive';
565    let desc = '愿你如风,被人温柔以待'
566    var typed = new Typed(el, {
567      strings: [desc],
568      startDelay: 100,
569      typeSpeed: 100,
570      loop: true,
571      backSpeed: 50,
572      showCursor: true
573    });
574  }
575  typedFn();
576</script>
576
577      
578  </div>
579  <div class="mask-box"></div>
580</div>
581
582<!-- hash算法 -->
583
584
585<div class="archive-main">
586  <section class="archive">
587    <div class="archive-content">
588      <ul class="post-archive">
589        
590        
591          
592            
593            <div class="year" data-aos="zoom-in-up">
594                <div class="bullet"></div>
595                <a href="/archives/2025">2025</a>
596            </div>
597          
598          <li class="post-item" data-aos="fade-left">
599            
600            <div class="post-img-box">
601              <a href="/posts/60050" class="post-img " style="background-size: cover; 
602                background-position: center center;">
603                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2025-03-02-IMG_20250302_114858.jpg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2025-03-02-IMG_20250302_114858.jpg" srcset="/img/loading.min.svg" alt="">
604              </a>
605            </div>
606            <div class="post-date-title">
607              <div>
608                <span class="post-date">01-21</span>
609              </div>
610              <a class="post-title" href="/posts/60050">Mac配置锁?盘它!</a>
611            </div>
612          </li>
613        
614          
615            
616            <div class="year" data-aos="zoom-in-up">
617                <div class="bullet"></div>
618                <a href="/archives/2024">2024</a>
619            </div>
620          
621          <li class="post-item" data-aos="fade-left">
622            
623            <div class="post-img-box">
624              <a href="/posts/39668" class="post-img " style="background-size: cover; 
625                background-position: center center;">
626                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2024-10-13-1728763917565.jpg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2024-10-13-1728763917565.jpg" srcset="/img/loading.min.svg" alt="">
627              </a>
628            </div>
629            <div class="post-date-title">
630              <div>
631                <span class="post-date">10-13</span>
632              </div>
633              <a class="post-title" href="/posts/39668">Ubuntu for WSL2 启用图形桌面</a>
634            </div>
635          </li>
636        
637          
638          <li class="post-item" data-aos="fade-left">
639            
640            <div class="post-img-box">
641              <a href="/posts/36147" class="post-img " style="background-size: cover; 
642                background-position: center center;">
643                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2024-10-09-20241009231337.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2024-10-09-20241009231337.png" srcset="/img/loading.min.svg" alt="">
644              </a>
645            </div>
646            <div class="post-date-title">
647              <div>
648                <span class="post-date">10-09</span>
649              </div>
650              <a class="post-title" href="/posts/36147">WSL2无法运行GUI软件cannot open display: :0</a>
651            </div>
652          </li>
653        
654          
655          <li class="post-item" data-aos="fade-left">
656            
657            <div class="post-img-box">
658              <a href="/posts/25438" class="post-img " style="background-size: cover; 
659                background-position: center center;">
660                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/%E6%88%AA%E5%B1%8F2024-02-06%2023.25.28.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/%E6%88%AA%E5%B1%8F2024-02-06%2023.25.28.png" srcset="/img/loading.min.svg" alt="">
661              </a>
662            </div>
663            <div class="post-date-title">
664              <div>
665                <span class="post-date">02-06</span>
666              </div>
667              <a class="post-title" href="/posts/25438">在Fedora上安装NVIDIA驱动详细教程及解析</a>
668            </div>
669          </li>
670        
671          
672            
673            <div class="year" data-aos="zoom-in-up">
674                <div class="bullet"></div>
675                <a href="/archives/2023">2023</a>
676            </div>
677          
678          <li class="post-item" data-aos="fade-left">
679            
680            <div class="post-img-box">
681              <a href="/posts/41981" class="post-img " style="background-size: cover; 
682                background-position: center center;">
683                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2
683023-05-29-20230529205207.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-29-20230529205207.png" srcset="/img/loading.min.svg" alt="">
684              </a>
685            </div>
686            <div class="post-date-title">
687              <div>
688                <span class="post-date">03-21</span>
689              </div>
690              <a class="post-title" href="/posts/41981">恢复“此电脑”中的个人文件夹显示</a>
691            </div>
692          </li>
693        
694          
695          <li class="post-item" data-aos="fade-left">
696            
697            <div class="post-img-box">
698              <a href="/posts/10117" class="post-img " style="background-size: cover; 
699                background-position: center center;">
700                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2023-05-29-20230529205922.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-29-20230529205922.png" srcset="/img/loading.min.svg" alt="">
701              </a>
702            </div>
703            <div class="post-date-title">
704              <div>
705                <span class="post-date">01-31</span>
706              </div>
707              <a class="post-title" href="/posts/10117">Windows 最佳拍档 Fedora Remix for WSL2</a>
708            </div>
709          </li>
710        
711          
712            
713            <div class="year" data-aos="zoom-in-up">
714                <div class="bullet"></div>
715                <a href="/archives/2022">2022</a>
716            </div>
717          
718          <li class="post-item" data-aos="fade-left">
719            
720            <div class="post-img-box">
721              <a href="/posts/49828" class="post-img " style="background-size: cover; 
722                background-position: center center;">
723                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2024-10-06-20241006223603.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2024-10-06-20241006223603.png" srcset="/img/loading.min.svg" alt="">
724              </a>
725            </div>
726            <div class="post-date-title">
727              <div>
728                <span class="post-date">04-11</span>
729              </div>
730              <a class="post-title" href="/posts/49828">Microsoft 365 E5 白嫖教程(二)</a>
731            </div>
732          </li>
733        
734          
735          <li class="post-item" data-aos="fade-left">
736            
737            <div class="post-img-box">
738              <a href="/posts/21214" class="post-img " style="background-size: cover; 
739                background-position: center center;">
740                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2024-10-06-QQ_1728223762972.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2024-10-06-QQ_1728223762972.png" srcset="/img/loading.min.svg" alt="">
741              </a>
742            </div>
743            <div class="post-date-title">
744              <div>
745                <span class="post-date">04-10</span>
746              </div>
747              <a class="post-title" href="/posts/21214">Microsoft 365 E5 白嫖教程(一)</a>
748            </div>
749          </li>
750        
751          
752            
753            <div class="year" data-aos="zoom-in-up">
754                <div class="bullet"></div>
755                <a href="/archives/2020">2020</a>
756            </div>
757          
758          <li class="post-item" data-aos="fade-left">
759            
760            <div class="post-img-box">
761              <a href="/posts/19242" class="post-img " style="background-size: cover; 
762                background-position: center center;">
763                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2023-05-29-20230529211752.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-29-20230529211752.png" srcset="/img/loading.min.svg" alt="">
764              </a>
765            </div>
766            <div class="post-date-title">
767              <div>
768                <span class="post-date">05-27</span>
769              </div>
770              <a class="post-title" href="/posts/19242">PC虚拟机快速体验macOS Catalina(10.15)</a>
771            </div>
772          </li>
773        
774          
775            
776            <div class="year" data-aos="zoom-in-up">
777                <div class="bullet"></div>
778                <a href="/archives/2019">2019</a>
779            </div>
780          
781          <li class="post-item" data-aos="fade-left">
782            
783            <div class="post-img-box">
784              <a href="/posts/19687" class="post-img " style="background-size: cover; 
785                background-position: center center;">
786                <img class="lazyload lazyload placeholder" src="https://img2.covear.top/2
786018/02/v2-5dd7e4067bf9542f78b324af4d99138b_hd.png" class="lazyload placeholder" data-srcset="https://img2.covear.top/2018/02/v2-5dd7e4067bf9542f78b324af4d99138b_hd.png" srcset="/img/loading.min.svg" alt="">
787              </a>
788            </div>
789            <div class="post-date-title">
790              <div>
791                <span class="post-date">09-30</span>
792              </div>
793              <a class="post-title" href="/posts/19687">高大上的微信文章</a>
794            </div>
795          </li>
796        
797      </ul>
798    </div>
799  </section>
800  <div class="w-70">
801    
802  <!-- <nav class="page-nav">
803    <span class="page-number current">1</span><a class="page-number" href="/archives/page/2/">2</a><a class="extend next" rel="next" href="/archives/page/2/">下一页</a>
804  </nav> -->
805  <div class="page-nav">
806    
807    <div class="page-info">
808        <div class="page-info-text">1 / 2</div>
809    </div>
810    
811      <a href="/archives/page/2/"
812         class="page-nav-next">
813          <span class="mr-5">下一页</span><i class="fas fa-angle-right"></i>
814      </a>
815      
816  </div>
817
818  </div>
819</div>
820
821      </main>
822    </div>
823
824    <!-- 页脚 -->
825    
826  
827  
828    <!-- 底部鱼儿跳动效果,依赖于jquery-->
829<div id="j-fish-skip" style=" position: relative;height: 153px;width: auto;"></div>
830<script>
831  var RENDERER = {
832    POINT_INTERVAL: 5,
833    FISH_COUNT: 3,
834    MAX_INTERVAL_COUNT: 50,
835    INIT_HEIGHT_RATE: .5,
836    THRESHOLD: 50,
837    FISH_COLOR: '',
838    init: function () {
839      this.setFishColor(); this.setParameters(), this.reconstructMethods(), this.setup(), this.bindEvent(), this.render()
840    },
841    setFishColor: function () {
842      let isDark = JSON.parse(localStorage.getItem('dark')) || JSON.parse('false');
843      if (isDark) {
844        this.FISH_COLOR = '#222'; // 暗黑色,有时间把这整成一个变量
845      } else {
846        this.FISH_COLOR = '' || 'rgba(66, 185, 133, 0.8)';
847      }
848    },
849    setParameters: function () {
850      this.$window = $(window), this.$container = $("#j-fish-skip"), this.$canvas = $("<canvas />"), this.context = this.$canvas.appendTo(this.$container).get(0).getContext("2d"), this.points = [], this.fishes = [], this.watchIds = []
851    },
852    createSurfacePoints: function () {
853      var t = Math.round(this.width / this.POINT_INTERVAL);
854      this.pointInterval = this.width / (t - 1), this.points.push(new SURFACE_POINT(this, 0));
855      for (var i = 1; i < t; i++) {
856        var e = new SURFACE_POINT(this, i * this.pointInterval),
857          h = this.points[i - 1];
858        e.setPreviousPoint(h), h.setNextPoint(e), this.points.push(e)
859      }
860    },
861    reconstructMethods: function () {
862      this.watchWindowSize = this.watchWindowSize.bind(this), this.jdugeToStopResize = this.jdugeToStopResize.bind(this), this.startEpicenter = this.startEpicenter.bind(this), this.moveEpicenter = this.moveEpicenter.bind(this), this.reverseVertical = this.reverseVertical.bind(this), this.render = this.render.bind(this)
863    },
864    setup: function () {
865      this.points.length = 0, this.fishes.length = 0, this.watchIds.length = 0, this.intervalCount = this.MAX_INTERVAL_COUNT, this.width = this.$container.width(), this.height = this.$container.height(), this.fishCount = this.FISH_COUNT * this.width / 500 * this.height / 500, this.$canvas.attr({
866        width: this.width,
867        height: this.height
868      }), this.reverse = !1, this.fishes.push(new FISH(this)), this.createSurfacePoints()
869    },
870    watchWindowSize: function () {
871      this.clearTimer(), this.tmpWidth = this.$window.width(), this.tmpHeight = this.$window.height(), this.watchIds.push(setTimeout(this.jdugeToStopResize, this.WATCH_INTERVAL))
872    },
873    clearTimer: function () {
874      for (; this.watchIds.length > 0;) clearTimeout(this.watchIds.pop())
875    },
876    jdugeToStopResize: function () {
877      var t = this.$window.width(),
878        i = this.$window.height(),
879        e = t == this.tmpWidth && i == this.tmpHeight;
880      this.tmpWidth = t, this.tmpHeight = i, e && this.setup()
881    },
882    bindEvent: function () {
883      this.$window.on("resize", this.watchWindowSize), this.$container.on("mouseenter", this.startEpicenter), this.$container.on("mousemove", this.moveEpicenter)
884    },
885    getAxis: function (t) {
886      var i = this.$container.offset();
887      return {
888        x: t.clientX - i.left + this.$window.scrollLeft(),
889        y: t.clientY - i.top + this.$window.scrollTop()
890      }
891    },
892    startEpicenter: function (t) {
893      this.axis = this.getAxis(t)
894    },
895    moveEpicenter: function (t) {
896      var i = this.getAxis(t);
897      this.axis || (this.axis = i), this.generateEpicenter(i.x, i.y, i.y - this.axis.y), this.axis = i
898    },
899    generateEpicenter: function (t, i, e) {
900      if (!(i < this.height / 2 - this.THRESHOLD || i > this.height / 2 + this.THRESHOLD)) {
901        var h = Math.round(t / this.pointInterval);
902        h < 0 || h >= this.points.length || this.points[h].interfere(i, e)
903      }
904    },
905    reverseVertical: function () {
906      this.reverse = !this.reverse;
907      for (var t = 0, i = this.fishes.length; t < i; t++) this.fishes[t].reverseVertical()
908    },
909    controlStatus: function () {
910      for (var t = 0, i = this.points.length; t < i; t++) this.points[t].updateSelf();
911      for (t = 0, i = this.points.length; t < i; t++) this.points[t].updateNeighbors();
912      this.fishes.length < this.fishCount && 0 == --this.intervalCount && (this.intervalCount = this.MAX_INTERVAL_COUNT, this.fishes.push(new FISH(this)))
913    },
914    render: function () {
915      requestAnimationFrame(this.render), this.controlStatus(), this.context.clearRect(0, 0, this.width, this.height), this.context.fillStyle = this.FISH_COLOR;
916      for (var t = 0, i = this.fishes.length; t < i; t++) this.fishes[t].render(this.context);
917      this.context.save(), this.context.globalCompositeOperation = "xor", this.context.beginPath(), this.context.moveTo(0, this.reverse ? 0 : this.height);
918      for (t = 0, i = this.points.length; t < i; t++) this.points[t].render(this.context);
919      this.context.lineTo(this.width, this.reverse ? 0 : this.height), this.context.closePath(), this.context.fill(), this.context.restore(
vendor: 4,264 bytes, lines 919-973
919)
920    }
921  },
922  SURFACE_POINT = function (t, i) {
923    this.renderer = t, this.x = i, this.init()
924  };
925  SURFACE_POINT.prototype = {
926    SPRING_CONSTANT: .03,
927    SPRING_FRICTION: .9,
928    WAVE_SPREAD: .3,
929    ACCELARATION_RATE: .01,
930    init: function () {
931      this.initHeight = this.renderer.height * this.renderer.INIT_HEIGHT_RATE, this.height = this.initHeight, this.fy = 0, this.force = {
932        previous: 0,
933        next: 0
934      }
935    },
936    setPreviousPoint: function (t) {
937      this.previous = t
938    },
939    setNextPoint: function (t) {
940      this.next = t
941    },
942    interfere: function (t, i) {
943      this.fy = this.renderer.height * this.ACCELARATION_RATE * (this.renderer.height - this.height - t >= 0 ? -1 : 1) * Math.abs(i)
944    },
945    updateSelf: function () {
946      this.fy += this.SPRING_CONSTANT * (this.initHeight - this.height), this.fy *= this.SPRING_FRICTION, this.height += this.fy
947    },
948    updateNeighbors: function () {
949      this.previous && (this.force.previous = this.WAVE_SPREAD * (this.height - this.previous.height)), this.next && (this.force.next = this.WAVE_SPREAD * (this.height - this.next.height))
950    },
951    render: function (t) {
952      this.previous && (this.previous.height += this.force.previous, this.previous.fy += this.force.previous), this.next && (this.next.height += this.force.next, this.next.fy += this.force.next), t.lineTo(this.x, this.renderer.height - this.height)
953    }
954  };
955  var FISH = function (t) {
956    this.renderer = t, this.init()
957  };
958  FISH.prototype = {
959    GRAVITY: .4,
960    init: function () {
961      this.direction = Math.random() < .5, this.x = this.direction ? this.renderer.width + this.renderer.THRESHOLD : -this.renderer.THRESHOLD, this.previousY = this.y, this.vx = this.getRandomValue(4, 10) * (this.direction ? -1 : 1), this.renderer.reverse ? (this.y = this.getRandomValue(1 * this.renderer.height / 10, 4 * this.renderer.height / 10), this.vy = this.getRandomValue(2, 5), this.ay = this.getRandomValue(.05, .2)) : (this.y = this.getRandomValue(6 * this.renderer.height / 10, 9 * this.renderer.height / 10), this.vy = this.getRandomValue(-5, -2), this.ay = this.getRandomValue(-.2, -.05)), this.isOut = !1, this.theta = 0, this.phi = 0
962    },
963    getRandomValue: function (t, i) {
964      return t + (i - t) * Math.random()
965    },
966    reverseVertical: function () {
967      this.isOut = !this.isOut, this.ay *= -1
968    },
969    controlStatus: function (t) {
970      this.previousY = this.y, this.x += this.vx, this.y += this.vy, this.vy += this.ay, this.renderer.reverse ? this.y > this.renderer.height * this.renderer.INIT_HEIGHT_RATE ? (this.vy -= this.GRAVITY, this.isOut = !0) : (this.isOut && (this.ay = this.getRandomValue(.05, .2)), this.isOut = !1) : this.y < this.renderer.height * this.renderer.INIT_HEIGHT_RATE ? (this.vy += this.GRAVITY, this.isOut = !0) : (this.isOut && (this.ay = this.getRandomValue(-.2, -.05)), this.isOut = !1), this.isOut || (this.theta += Math.PI / 20, this.theta %= 2 * Math.PI, this.phi += Math.PI / 30, this.phi %= 2 * Math.PI), this.renderer.generateEpicenter(this.x + (this.direction ? -1 : 1) * this.renderer.THRESHOLD, this.y, this.y - this.previousY), (this.vx > 0 && this.x > this.renderer.width + this.renderer.THRESHOLD || this.vx < 0 && this.x < -this.renderer.THRESHOLD) && this.init()
971    },
972    render: function (t) {
973      t.save(), t.translate(this.x, this.y), t.rotate(Math.PI + Math.atan2(this.vy, this.vx)), t.scale(1, this.direction ? 1 : -1), t.beginPath(), t.moveTo(-30, 0), t.bezierCurveTo(-20, 15, 15, 10, 40, 0), t.bezierCurveTo(15, -10, -20, -15, -30, 0), t.fill(), t.save(), t.translate(40, 0), t.scale(.9 + .2 * Math.sin(this.theta), 1), t.beginPath(), t.moveTo(0, 0), t.quadraticCurveTo(5, 10, 20, 8), t.quadraticCurveTo(12, 5, 10, 0), t.quadraticCurveTo(12, -5, 20, -8), t.quadraticCurveTo(5, -10, 0, 0), t.fill(), t.restore(), t.save(), t.translate(-3, 0), t.rotate((Math.PI / 3 + Math.PI / 10 * Math.sin(this.phi)) * (this.renderer.reverse ? -1 : 1)), t.beginPath(), this.renderer.reverse ? (t.moveTo(5, 0), t.bezierCurveTo(10, 10, 10, 30, 0, 40), t.bezierCurveTo(-12, 25, -8, 10, 0, 0)) : (t.moveTo(-5, 0), t.bezierCurveTo(-10, -10, -10, -30, 0, -40), t.bezierCurveTo(12, -25, 8, -10, 0, 0)), t.closePath(), t.fill(), t.restore(
973), t.restore(), this.controlStatus(t)
974    }
975  }, $(function () {
976    RENDERER.init()
977    $('.dark').click(function () {
978      setTimeout(() => {
979        RENDERER.setFishColor();
980        RENDERER.context.fill();
981      });
982    })
983  });
984</script>
984
985  
986  <div class="footer bg-color">
987    <div class="footer-main">
988      
989        
990          <div class="link">
991            
992              
993                <a href="/atom.xml" class="social">
994                  
995                    <i class="fas fa-rss" aria-hidden="true"></i>
996                  
997                </a>
998              
999            
1000              
1001                <a href="mailto:[email protected]" class="social">
1002                  
1003                    <i class="fas fa-envelope" aria-hidden="true"></i>
1004                  
1005                </a>
1006              
1007            
1008              
1009                <a target="_blank" rel="noopener" href="https://gitee.com/hnest/hnest" class="social">
1010                  
1011                    <i class="fab fa-github" aria-hidden="true"></i>
1012                  
1013                </a>
1014              
1015            
1016              
1017                <a href="tencent://AddContact/?fromId=50&amp;fromSubId=1&amp;subcmd=all&amp;uin=1187523442" class="social">
1018                  
1019                    <i class="fab fa-qq" aria-hidden="true"></i>
1020                  
1021                </a>
1022              
1023            
1024          </div>
1025        
1026      
1027        
1028          <div class="footer-copyright">
1029            <p>Copyright © 2014 - 
1029<script type="text/javascript">document.write((new Date()).getFullYear());</script>
1029 <a href="https://hnest.eu.org" target="_blank">啊晖de老窝</a></p>
1030
1031          </div>
1032        
1033      
1034        
1035          <div class="footer-custom">
1036            
1037              <div><p><br/><img style="display: inline; width: 1rem; object-fit: contain; vertical-align: top; opacity: 1; margin: 0 5px;" src="/img/icpba.png" class="lazyload placeholder" data-srcset="/img/icpba.png" srcset="/img/loading.min.svg"><a href="https://beian.miit.gov.cn/" target="_blank" title="啊晖de老窝">湘ICP备17019987号</a><br/><img style="display: inline; width: 1rem; object-fit: contain; vertical-align: top; opacity: 1; margin: 0 5px;" src="/img/gaba.png" class="lazyload placeholder" data-srcset="/img/gaba.png" srcset="/img/loading.min.svg" ><a href="https://beian.mps.gov.cn/#/query/webSearch?code=43020002000058" rel="noreferrer" target="_blank">湘公网安备43020002000058</a></p>
1038</div>
1039            
1040              <div><p><br>本网站由</p>
1041</div>
1042            
1043              <div> <!--a href="https://gitee.com/" title="Gitee Pages" target="_blank"><img src="https://img2.covear.top/2023-05-21-gitee_logo.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-gitee_logo.svg" srcset="/img/loading.min.svg" style="height: 2rem;"></a> <span style="margin-right: 1rem;"></span> <a href="https://github.com/" title="GitHub Pages" target="_blank"><img src="https://img2.covear.top/2023-05-21-github_logo.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-github_logo.svg" srcset="/img/loading.min.svg" style="height: 2rem;"></a> <span style="margin-right: 1rem;"></span> <a href="https://www.qiniu.com/" title="七牛云" target="_blank"><img src="https://img2.covear.top/2023-05-21-qiniu_logo.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-qiniu_logo.svg" srcset="/img/loading.min.svg" style="height: 2rem;"></a> <span style="margin-right: 1rem;"></span--> <a href="https://www.upyun.com/?utm_source=lianmeng&utm_medium=referral" title="加入又拍云联盟!" target="_blank"><img src="https://img2.covear.top/2023-05-21-upyun_logo.svg" class="lazyload placeholder" data-srcset="https://img2.covear.top/2023-05-21-upyun_logo.svg" srcset="/img/loading.min.svg" style="height: 2.0rem;"></a> </div>
1044            
1045              <div><p>提供CDN加速&#x2F;云储存服务<br><br></p>
1046</div>
1047            
1048              <div><p> <a target="_blank" rel="noopener" href="https://gitee.com/hnest/hnest/commits/master" title="Gitee Commits"><img src="https://gitee.badge.hnest.eu.org/svg/commits/hnest/hnest" class="lazyload placeholder" data-srcset="https://gitee.badge.hnest.eu.org/svg/commits/hnest/hnest" srcset="/img/loading.min.svg" alt="Gitee Commits"></a><br> <a target="_blank" rel="noopener" href="https://github.com/DavidDengHui/HNest/commits/master" title="GitHub Commits"><img src="https://github.com/DavidDengHui/HNest/actions/workflows/deploy_pages.yml/badge.svg" class="lazyload placeholder" data-srcset="https://github.com/DavidDengHui/HNest/actions/workflows/deploy_pages.yml/badge.svg" srcset="/img/loading.min.svg" alt="GitHub Pages Status"></a><br> <a target="_blank" rel="noopener" href="https://vercel.com/daviddenghui/hnest/deployments" title="Vercel Status"><img src="https://vercel.badge.hnest.eu.org/api/daviddenghui/hnest" class="lazyload placeholder" data-srcset="https://vercel.badge.hnest.eu.org/api/daviddenghui/hnest" srcset="/img/loading.min.svg" alt="Vercel Status"></a><br> <a target="_blank" rel="noopener" href="https://app.netlify.com/sites/hnest/deploys" title="Netlify Status"><img src="https://api.netlify.com/api/v1/badges/13dc7751-4d7d-424e-8d04-e6e5263b093f/deploy-status" class="lazyload placeholder" data-srcset="https://api.netlify.com/api/v1/badges/13dc7751-4d7d-424e-8d04-e6e5263b093f/deploy-status" srcset="/img/loading.min.svg" alt="Netlify Status"></a><br> </p>
1049</div>
1050            
1051          </div>
1052        
1053      
1054    </div>
1055  </div>
1056
1057
1058
1059    <!-- 渲染暗黑按钮 -->
1060    
1061      <div class="dark">
1062  <div class="dark-content">
1063    <i class="fas fa-moon" aria-hidden="true"></i>
1064    <!-- <span>关灯</span> -->
1065  </div>
1066  
1067</div>
1068
1069<script>
1070  $(function() {
1071    let isDark = JSON.parse(localStorage.getItem('dark'))  || JSON.parse('false');
1072    if (isDark) {
1073      $(".dark-content").replaceWith(
1074          `
1075          <div class='dark-content'>
1076            <i class="fas fa-lightbulb" aria-hidden="true"></i>
1077          </div>
1078          `
1079        );
1080    }
1081    $('.dark').click(function() {
1082      if ($(document.body).is('.darkModel')) {
1083        $(document.body).removeClass('darkModel');
1084        localStorage.setItem('dark', false);
1085        $(".dark-content").replaceWith(
1086          `
1087          <div class='dark-content'>
1088            <i class="fas fa-moon" aria-hidden="true"></i>
1089          </div>
1090          `
1091        );
1092      } else {
1093        $(document.body).addClass('darkModel');
1094        localStorage.setItem('dark', true);
1095        $(".dark-content").replaceWith(
1096          `
1097          <div class='dark-content'>
1098            <i class="fas fa-lightbulb" aria-hidden="true"></i>
1099          </div>
1100          `
1101        );
1102      }
1103    })
1104  })
1105</script>
1105
1106    
1107    <!-- 渲染回到顶部按钮 -->
1108    
1109      <div class="goTop top-btn-color" pointer>
1110  <i class="fas fa-arrow-up" aria-hidden="true"></i>
1111</div>
1112<script src="/js/goTop.js"></script>
1112
1113
1114    
1115    <!-- 渲染左下角音乐播放器 -->
1116    
1117
1118    <!-- 图片放大 -->
1119    
1120      
1120<script src="https://fastly.jsdelivr.net/npm/@fancyapps/[email protected]/dist/fancybox/fancybox.umd.js"></script>
1120
1121    
1122
1123    <!-- 百度解析 -->
1124    <!-- Baidu Analytics -->
1125
1126    <!-- Baidu Push -->
1127
1128<script>
1129    (function () {
1130        var bp = document.createElement('script');
1131        var curProtocol = window.location.protocol.split(':')[0];
1132        if (curProtocol === 'https') {
1133            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
1134        } else {
1135            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
1136        }
1137        var s = document.getElementsByTagName("script")[0];
1138        s.parentNode.insertBefore(bp, s);
1139    })();
1140</script>
1140
1141
1142    
1143    <!-- 背景彩带 -->
1144    
1145      
1145<script type="text/javascript" size="100" alpha='0.4' zIndex="-1" src="/js/ribbon.min.js"></script>
1145
1146    
1147
1148    
1148<script src="/js/utils/index.js"></script>
1148
1149    
1149<script src="/js/app.js"></script>
1149
1150    
1151    <!-- 文章目录所需js -->
1152<!-- <link href="/js/tocbot/tocbot.css" rel="stylesheet">
1153<script src="/js/tocbot/tocbot.min.js"></script>
1153 -->
1154
1155<script src="https://cdn.bootcdn.net/ajax/libs/tocbot/4.21.0/tocbot.min.js"></script>
1155
1156
1157
1158<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/tocbot/4.21.0/tocbot.css">
1159
1160<script>
1161  var headerEl = 'h2, h3, h4',  //headers 
1162    content = '.post-detail',//文章容器
1163    idArr = {};  //标题数组以确定是否增加索引id
1164  //add #id
1165  var option = {
1166    // Where to render the table of contents.
1167    tocSelector: '.toc',
1168    // Where to grab the headings to build the table of contents.
1169    contentSelector: content,
1170    // Which headings to grab inside of the contentSelector element.
1171    headingSelector: headerEl,
1172    scrollSmooth: true,
1173    scrollSmoothOffset: -70,
1174    // headingsOffset: -($(window).height() * 0.4 - 45),
1175    headingsOffset: -($(window).height() * 0.4 - 70),
1176    // positionFixedSelector: '.toc-main',
1177    // positionFixedClass: 'is-position-fixed',
1178    fixedSidebarOffset: 'auto',
1179    activeLinkClass: 'is-active-link',
1180    orderedList: true,
1181    collapseDepth: 20,
1182    // onClick: function (e) {},
1183  }
1184  if ($('.toc').length > 0) {
1185
1186    $(content).children(headerEl).each(function () {
1187      //去除空格以及多余标点
1188      var headerId = $(this).text().replace(/[\s|\~|`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\_|\+|\=|\||\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?|\:|\,|\。]/g, '');
1189
1190      headerId = headerId.toLowerCase();
1191      if (idArr[headerId]) {
1192        //id已经存在
1193        $(this).attr('id', headerId + '-' + idArr[headerId]);
1194        idArr[headerId]++;
1195      }
1196      else {
1197        //id未存在
1198        idArr[headerId] = 1;
1199        $(this).attr('id', headerId);
1200      }
1201    });
1202
1203    document.addEventListener("DOMContentLoaded", function () {
1204      tocbot.init(option);
1205      mobileTocClick();
1206    });
1207
1208  }
1209
1210  window.tocScrollFn = function () {
1211    return bamboo.throttle(function () {
1212      findHeadPosition();
1213    }, 100)()
1214  }
1215  window.addEventListener('scroll', tocScrollFn);
1216
1217  const findHeadPosition = function (top) {
1218    if ($('.toc-list').length <= 0) {
1219      return false;
1220    }
1221    setTimeout(() => {  // or DOMContentLoaded 
1222      autoScrollToc();
1223    }, 0);
1224  }
1225
1226  const autoScrollToc = function () {
1227    const $activeItem = document.querySelector('.is-active-link');
1228    const $cardToc = document.querySelector('.toc-content');
1229    const activePosition = $activeItem.getBoundingClientRect().top
1230    const sidebarScrollTop = $cardToc.scrollTop
1231    if (activePosition > (document.documentElement.clientHeight - 100)) {
1232      $cardToc.scrollTop = sidebarScrollTop + 150
1233    }
1234    if (activePosition < 150) {
1235      $cardToc.scrollTop = sidebarScrollTop - 150
1236    }
1237  }
1238
1239  document.addEventListener('pjax:send', function () {
1240    if ($('.toc').length) {
1241      tocbot.destroy();
1242    }
1243  });
1244
1245  document.addEventListener('pjax:complete', function () {
1246    if ($('.toc').length) {
1247      tocbot.init(option);
1248      mobileTocClick();
1249    }
1250  });
1251  
1252  // 手机端toc按钮点击出现目录
1253  const mobileTocClick = function () {
1254    const $cardTocLayout = document.getElementsByClassName('side_toc')[0];
1255    const $cardToc = $cardTocLayout.getElementsByClassName('toc-content')[0];
1256    let right = '45px';
1257    if (window.innerWidth >= 551 && window.innerWidth <= 992) {
1258      right = '100px'
1259    }
1260    const mobileToc = {
1261      open: () => {
1262        $cardTocLayout.style.cssText = 'animation: toc-open .3s; opacity: 1; right: ' + right
1263      },
1264
1265      close: () => {
1266        $cardTocLayout.style.animation = 'toc-close .2s'
1267        setTimeout(() => {
1268          $cardTocLayout.style.cssText = "opacity:''; animation: ''; right: ''"
1269        }, 100)
1270      }
1271    }
1272    document.getElementById('toc-mobile-btn').addEventListener('click', () => {
1273      if (window.getComputedStyle($cardTocLayout).getPropertyValue('opacity') === '0') mobileToc.open()
1274      else mobileToc.close()
1275    })
1276
1277    $cardToc.addEventListener('click', (e) => {
1278      if (window.innerWidth < 992) { // 小于992px的时候
1279        mobileToc.close()
1280      }
1281    })
1282  }
1283</script>
1283
1284
1285<style>
1286  /* .is-position-fixed {
1287    position: sticky !important;
1288    top: 74px;
1289  }
1290
1291  .toc-main ul {
1292    counter-reset: show-list;
1293  }
1294
1295  .toc-main ul li::before {
1296    content: counter(item)".";
1297    display: block;
1298    position: absolute;
1299    left: 12px;
1300    top: 0;
1301  } */
1302</style>
1303 
1304
1305<!-- 设置导航背景 -->
1306<script>
1307  let setHeaderClass = () => {
1308    const nav = $('#navHeader');
1309    const navTop = nav.outerHeight();
1310    const winTop = $(window).scrollTop();
1311    if(winTop > navTop) {
1312      nav.addClass('header-bg-color');
1313    }
1314    else {
1315      nav.removeClass('header-bg-color');
1316    }
1317  };
1318
1319  let scrollCollect = () => {
1320    return bamboo.throttle(function (e) {
1321      setHeaderClass();
1322    }, 200)()
1323  }
1324
1325  let initHeaderBg = () => {
1326    setHeaderClass();
1327  }
1328
1329  setHeaderClass();
1330  window.addEventListener('scroll', scrollCollect);
1331
1332  document.addEventListener('pjax:send', function () {
1333    window.removeEventListener('scroll', scrollCollect)
1334  })
1335  document.addEventListener('pjax:complete', function () {
1336    window.addEventListener('scroll', scrollCollect);
1337    setHeaderClass();
1338  })
1339</script>
1339 
1340
1341<!-- 渲染issues标签里的内容 -->
1342<script>
1343  function loadIssuesJS() {
1344    if ($(".post-detail").find(".issues-api").length == 0) {
1345      return;
1346    } 
1347    loadScript('/js/issues/index.js');
1348  };
1349  $(function () {
1350    loadIssuesJS();
1351  });
1352  document.addEventListener('pjax:complete', function () {
1353    if (typeof IssuesAPI == "undefined") {
1354      loadIssuesJS();
1355    }
1356  })
1357</script>
1357
1358
1359<!-- 渲染远程json加载的图片标签(getPhotoOnline)里的内容 -->
1360<script>
1361  function loadPhotoOnlineJS() {
1362    if ($(".post-detail").find(".getJsonPhoto-api").length == 0) {
1363      return;
1364    } 
1365    loadScript('/js/getPhotoOnline/index.js');
1366  };
1367  $(function () {
1368    loadPhotoOnlineJS();
1369  });
1370  document.addEventListener('pjax:complete', function () {
1371    if (typeof getPhotoJson == "undefined") {
1372      loadPhotoOnlineJS();
1373    }
1374  })
1375</script>
1375
1376
1377<!-- 渲染远程json加载的talk标签(getTalkOnline)里的内容 -->
1378<script>
1379  function loadTalkOnlineJS() {
1380    if ($(".post-detail").find(".getJsonTalk-api").length == 0) {
1381      return;
1382    } 
1383    loadScript('https://cdnjs.cloudflare.com/ajax/libs/waterfall.js/1.0.2/waterfall.min.js'); // 瀑布流插件,https://raphamorim.io/waterfall.js/
1384    loadScript('/js/getTalkOnline/index.js');
1385  };
1386  $(function () {
1387    loadTalkOnlineJS();
1388  });
1389  document.addEventListener('pjax:complete', function () {
1390    if (typeof getTalkJson == "undefined") {
1391      loadTalkOnlineJS();
1392    }
1393  })
1394</script>
1394
1395
1396<!-- 渲染远程json加载的site-card标签(getSiteOnline)里的内容 -->
1397<script>
1398  function loadSiteOnlineJS() {
1399    if ($(".post-detail").find(".getJsonSite-api").length == 0) {
1400      return;
1401    } 
1402    loadScript('/js/getSiteOnline/index.js');
1403  };
1404  $(function () {
1405    loadSiteOnlineJS();
1406  });
1407  document.addEventListener('pjax:complete', function () {
1408    if (typeof getSiteJson == "undefined") {
1409      loadSiteOnlineJS();
1410    }
1411  })
1412</script>
1412
1413
1414<!-- 输入框打字特效 -->
1415<!-- 输入框打字特效 -->
1416
1417  
1417<script src="/js/activate-power-mode.js"></script>
1417
1418  
1418<script>
1419    POWERMODE.colorful = true;  // 打开随机颜色特效
1420    POWERMODE.shake = false;    // 关闭输入框抖动
1421    document.body.addEventListener('input', POWERMODE);//监听打字事件
1422  </script>
1422
1423
1424
1425<!-- markdown代码一键复制功能 -->
1426
1427  <link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/v-plugs-ayu/lib/ayu.css">
1428  
1428<script src="https://fastly.jsdelivr.net/npm/v-plugs-ayu/lib/ayu.umd.min.js"></script>
1428
1429  
1429<script src="/js/clipboard/clipboard.min.js"></script>
1429
1430  <div id="appCopy">
1431  </div>
1432  
1432<script data-pjax>
1433    var vm = new Vue({
1434      el: '#appCopy',
1435      data: {
1436      },
1437      computed: {
1438      },
1439      mounted() {
1440        const that = this;
1441        var copy = '复制';
1442        /* code */
1443        var initCopyCode = function () {
1444          var copyHtml = '';
1445          copyHtml += '<button class="btn-copy" data-clipboard-snippet="" style="position:absolute;top:0;right:0;z-index:1;">';
1446          copyHtml += '<i class="fas fa-copy"></i><span>' + copy + '</span>';
1447          copyHtml += '</button>';
1448          $(".post-detail pre").not('.gutter pre').wrap("<div class='codeBox' style='position:relative;width:100%;'></div>")
1449          $(".post-detail pre").not('.gutter pre').before(copyHtml);
1450          new ClipboardJS('.btn-copy', {
1451            target: function (trigger) {
1452              return trigger.nextElementSibling;
1453            }
1454          });
1455        }
1456        initCopyCode();
1457        $('.btn-copy').unbind('click').bind('click', function () {
1458          doSomething();
1459        })
1460        $(document).unbind('keypress').bind('keypress', function (e) {
1461          if (e.ctrlKey && e.keyCode == 67) {
1462            doSomething();
1463          }
1464        })
1465
1466        function doSomething() {
1467          that.$notify({
1468            title: "成功",
1469            content: "代码已复制,请遵守相关授权协议。",
1470            type: 'success'
1471          })
1472        }
1473      },
1474      methods: {
1475      },
1476      created() { }
1477    })
1478  </script>
1478
1479  
1480
1481<!-- 图片懒加载 -->
1482<script defer src="https://cdn.bootcdn.net/ajax/libs/vanilla-lazyload/17.8.3/lazyload.min.js"></script>
vendor: 1 bytes, line 1482
1482
1483<script>
1484  // https://www.npmjs.com/package/vanilla-lazyload
1485  // Set the options globally
1486  // to make LazyLoad self-initialize
1487  window.lazyLoadOptions = {
1488    elements_selector: ".lazyload",
1489    threshold: 0
1490  };
1491  // Listen to the initialization event
1492  // and get the instance of LazyLoad
1493  window.addEventListener(
1494    "LazyLoad::Initialized",
1495    function (event) {
1496      window.lazyLoadInstance = event.detail.instance;
1497    },
1498    false
1499  );
1500  document.addEventListener('DOMContentLoaded', function () {
1501    lazyLoadInstance.update();
1502  });
1503  document.addEventListener('pjax:complete', function () {
1504    lazyLoadInstance.update();
1505  });
1506</script>
1506
1507
1508
1509<!-- 卡片滚动动画 -->
1510   
1511
1512<!-- 评论所需js -->
1513
1514  
1515    <!-- 弹幕所需的css和js -->
1516    
1517  <!-- 弹幕插件 -->
1518  <link href="/js/danmu/barrager.css" rel="stylesheet">
1519  
1519<script src="/js/danmu/jquery.barrager.js"></script>
1519
1520
1521<!-- 具体js,请前往valine/script.ejs查看 -->
1522
1523    
1523<script>
1524  var requiredFields = 'nick,mail';
1525  requiredFields = requiredFields.split(',');
1526  comment_el = '.comment';
1527  let looperValine = null;
1528  load_valine = function () {
1529    if ($(comment_el).length) {
1530      var valine = new Valine({
1531        el: '#vcomment',
1532        path: window.location.pathname,
1533        notify: false,
1534        verify: false,
1535        app_id: "YB5xLlbIQPI9Ww6S61s5myDA-gzGzoHsz",
1536        app_key: "JTZGgcmrFzsuDCr27pXLxZ5h",
1537        placeholder: "客官,说点什么吧~",
1538        avatar: "retro",
1539        master: "0e175053e9faac02e451b300a4655270",   //博主邮箱md5
1540        tagMeta: ["博主","小伙伴","访客"],     //标识字段名
1541        friends: "",
1542        metaPlaceholder: { "nick": "昵称/QQ号", "mail": "邮箱" },
1543        requiredFields: requiredFields,
1544        enableQQ: true,
1545      });
1546      function debounce(fn) {
1547        var timerID = null
1548        return function () {
1549          var arg = arguments[0]   //获取事件
1550          if (timerID) {
1551            clearTimeout(timerID)
1552          }
1553          timerID = setTimeout(function () {
1554            fn(arg)              //事件传入函数
1555          }, 200)
1556        }
1557      }
1558      //查询评论 valine.Q('*').limit(7) -- 查询所有,限制7条, 下面的的代码是查询当前页面
1559      var themeDanmu = eval('true');
1560      var themeLoop = eval('true');
1561      var themeLooperTime = '5000' || 5000;
1562      var speed = '40' || 20;
1563      var isBarrager = true;
1564      if (themeDanmu == true) {
1565        do_barrager();
1566        if ($('.danmuBox').length <= 0) {
1567          $('.navbar').append('<div class="danmuBox"><div class="danmuBtn open"><span class="danmuCircle"></span><span class="danmuText">弹幕</span></div></div>');
1568        }
1569        $('.danmuBtn').on('click', debounce(
1570          function () {
1571            if ($('.danmuBtn').hasClass('open')) {
1572              $('.danmuBtn').removeClass('open')
1573              clearInterval(looperValine);
1574              $.fn.barrager.removeAll();
1575            } else {
1576              $('.danmuBtn').addClass("open");
1577              do_barrager();
1578            }
1579          }
1580        ))
1581      }
1582      function do_barrager() {
1583        isBarrager && valine.Q(window.location.pathname).find().then(function (comments) {
1584          // var num = 0; // 可以记录条数,循环调用的时候只取最新的评论放入弹幕中
1585          var run_once = true;
1586          var looper_time = themeLooperTime;
1587          var total = comments.length;
1588          // var looper = null;
1589          var index = 0;
1590          if (total > 0) {
1591            barrager();
1592          } else {
1593            // 当评论数为0的时候,自动关闭弹幕
1594            // $('.danmuBtn').removeClass('open');
1595          }
1596          function barrager() {
1597            if (run_once) {
1598              //如果是首次执行,则设置一个定时器,并且把首次执行置为false
1599              looperValine = setInterval(barrager, looper_time);
1600              run_once = false;
1601            }
1602            var content = comments[index]._serverData.comment;
1603            var email = comments[index]._serverData.mail;
1604            var link = comments[index]._serverData.link;
1605            var newcontent = content.substring(0, 50).replace(/<[^>]+>/g, "");
1606            //发布一个弹幕
1607            const item = {
1608              img: `https://q1.qlogo.cn/g?b=qq&nk=${email}&s=640`, //图片 
1609              info: newcontent, //文字 
1610              href: link, //链接 
1611              close: true, //显示关闭按钮 
1612              speed: speed, //延迟,单位秒,默认6 
1613              color: '#fff', //颜色,默认白色 
1614              old_ie_color: '#000000', //ie低版兼容色,不能与网页背景相同,默认黑色
1615            }
1616            $('body').barrager(item);
1617            //索引自增
1618            index++;
1619            //所有弹幕发布完毕,清除计时器。
1620            if (index == total) {
1621              clearInterval(looperValine);
1622              if (themeLoop === true) {
1623                setTimeout(function () {
1624                  do_barrager();
1625                }, 5000);
1626              } else {
1627                $('.danmuBtn').removeClass('open');
1628              }
1629              return false;
1630            }
1631
1632          }
1633        })
1634      }
1635    }
1636  };
1637  $(document).ready(load_valine);
1638  document.addEventListener('pjax:send', function (e) {
1639    
1640      $('.danmuBox').length > 0 && $('.danmuBox').remove()
1641      looperValine && clearInterval(looperValine);
1642      $.fn.barrager.removeAll();
1643    
1644  })
1645  document.addEventListener('pjax:complete', function () {
1646    load_valine();
1647  });
1648</script>
1648
1649
1650  
1651
1652
1653<!-- 鼠标点击特效 -->
1654<!-- 爱心点击 -->
1655
1656  
1657    
1657<script src="/js/cursor/fireworks.js"></script>
1657
1658  
1659
1660
1661
1662
1663  
1663<script async src="/cdn/busuanzi/busuanzi.pure.mini.js" data-pjax></script>
1663
1664
1665
1666<!-- 轮播图标签 -->
1667<script>
1668  var bambooSwiperTag = {};
1669  function load_swiper() {
1670    if (!document.querySelectorAll(".post-swiper-container")[0]) return;
1671    loadCSS("https://cdn.bootcdn.net/ajax/libs/Swiper/9.2.4/swiper-bundle.min.css")
1672    loadScript("https://cdn.bootcdn.net/ajax/libs/Swiper/9.2.4/swiper-bundle.min.js").then(() => {
1673      pjax_swiper();
1674    });
1675  }
1676
1677  load_swiper();
1678
1679  function pjax_swiper() {
1680    bambooSwiperTag.swiper = new Swiper('.post-swiper-container', {
1681      slidesPerView: 'auto',
1682      spaceBetween: 8,
1683      centeredSlides: true,
1684      loop: true,
1685      autoplay: true ? {
1686        delay: 3000,
1687        stopOnLastSlide: false,
1688        disableOnInteraction: false,
1689      } : false,
1690      pagination: {
1691        el: '.swiper-pagination',
1692        clickable: true,
1693      },
1694      navigation: {
1695        nextEl: '.swiper-button-next',
1696        prevEl: '.swiper-button-prev',
1697      },
1698      on:{
1699        init: function(){
1700          swiperAnimateCache(this); //隐藏动画元素 
1701          swiperAnimate(this); //初始化完成开始动画
1702        }, 
1703        slideChangeTransitionEnd: function(){ 
1704          swiperAnimate(this); //每个slide切换结束时也运行当前slide动画
1705          //this.slides.eq(this.activeIndex).find('.ani').removeClass('ani'); 动画只展现一次,去除ani类名
1706        } 
1707      }
1708    });
1709  }
1710
1711  document.addEventListener('pjax:complete', function () {
1712    if (!document.querySelectorAll(".post-swiper-container")[0]) return;
1713    if (typeof bambooSwiperTag.swiper === "undefined") {
1714      load_swiper();
1715    } else {
1716      pjax_swiper();
1717    }
1718  });
1719</script>
1719
1720    <!-- pjax -->
1721    
1722
1723<!-- pjax -->
1724
1725
1726  
1726<script src="/js/[email protected]/index.js"></script>
1726
1727  
1728    <!-- 样式位于:source/css/_third-party/pjaxanimate.styl -->
1729
1730<div class="pjax-animate">
1731  
1732    <div class="loading-circle"><div id="loader-circle"></div></div>
1733    
1733<script>
1734      window.ShowLoading = function() {
1735        $(".loading-circle").css("display", "block");
1736      };
1737      window.HideLoading = function() {
1738        $(".loading-circle").css("display", "none");
1739      }
1740    </script>
1740
1741  
1742	
1742<script>
1743    document.addEventListener('pjax:complete', function () {
1744      window.HideLoading();
1745    })
1746    document.addEventListener('pjax:send', function () {
1747      window.ShowLoading();
1748    })
1749    document.addEventListener('pjax:error', function () {
1750      window.HideLoading();
1751    })
1752	</script>
1752
1753</div>
1754
1755  
1756
1757  
1757<script>
1758    var pjax = new Pjax({
1759      elements: 'a[href]:not([href^="#"]):not([href="javascript:void(0)"]):not([no-pjax])',   // 拦截正常带链接的 a 标签
1760      selectors: ["#pjax-container","title"],                                   // 根据实际需要确认重载区域
1761      cacheBust: false,   // url 地址追加时间戳,用以避免浏览器缓存
1762      timeout: 5000
1763    });
1764
1765    document.addEventListener('pjax:send', function (e) {
1766
1767      try {
1768        var currentUrl = window.location.pathname;
1769        var targetUrl = e.triggerElement.href;
1770        var banUrl = [""];
1771        if (banUrl[0] != "") {
1772          banUrl.forEach(item => {
1773            if(currentUrl.indexOf(item) != -1 || targetUrl.indexOf(item) != -1) {
1774              window.location.href = targetUrl;
1775            }
1776          });
1777        }
1778      } catch (error) {}
1779
1780      $(window).unbind('resize');
1781      $(window).unbind('scroll');
1782      $(document).unbind('scroll');
1783      $(document).unbind('click');
1784      $('body').unbind('click');
1785
1786    })
1787    
1788    document.addEventListener('pjax:complete', function () {
1789      $('script[data-pjax], .pjax-reload script').each(function () {
1790        $(this).parent().append($(this).remove());
1791      });
1792    });
1793
1794    document.addEventListener('pjax:error', function (e) {
1795      window.location.href = e.triggerElement.href;
1796    })
1797    
1798    // 刷新不从顶部开始
1799    document.addEventListener("DOMContentLoaded", function () {
1800      history.scrollRestoration = 'auto';
1801    })
1802  </script>
1802
1803
1804
1805
1806  </body>
1807</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.