PageSourceSearch

https://02.io/

html 02.io collected 2026-10-09 04:32:34 UTC 50,407 bytes, 1,328 lines download raw bytes

1<!DOCTYPE HTML>
2<html lang="zh-CN">
3
4
5<head>
6    <meta charset="utf-8">
7    <meta name="keywords" content="飞翔的种子">
8    <meta name="description" content="飞翔的种子">
9    <meta http-equiv="X-UA-Compatible" content="IE=edge">
10    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
11    <meta name="renderer" content="webkit|ie-stand|ie-comp">
12    <meta name="mobile-web-app-capable" content="yes">
13    <meta name="format-detection" content="telephone=no">
14    <meta name="apple-mobile-web-app-capable" content="yes">
15    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
16    <meta name="referrer" content="no-referrer-when-downgrade">
17    <!-- Global site tag (gtag.js) - Google Analytics -->
18
19
20    <title>飞翔的种子</title>
21    <link rel="icon" type="image/png" href="/favicon.png">
22
23    <link rel="stylesheet" type="text/css" href="/libs/awesome/css/all.min.css">
24    <link rel="stylesheet" type="text/css" href="/libs/materialize/materialize.min.css">
25    <link rel="stylesheet" type="text/css" href="/libs/aos/aos.css">
26    <link rel="stylesheet" type="text/css" href="/libs/animate/animate.min.css">
27    <link rel="stylesheet" type="text/css" href="/libs/lightGallery/css/lightgallery.min.css">
28    <link rel="stylesheet" type="text/css" href="/css/matery.css">
29    <link rel="stylesheet" type="text/css" href="/css/my.css">
30
31    
31<script src="/libs/jquery/jquery-3.6.0.min.js"></script>
31
32
33<meta name="generator" content="Hexo 8.1.1">
34<style>.github-emoji { position: relative; display: inline-block; width: 1.2em; min-height: 1.2em; overflow: hidden; vertical-align: top; color: transparent; }  .github-emoji > span { position: relative; z-index: 10; }  .github-emoji img, .github-emoji .fancybox { margin: 0 !important; padding: 0 !important; border: none !important; outline: none !important; text-decoration: none !important; user-select: none !important; cursor: auto !important; }  .github-emoji img { height: 1.2em !important; width: 1.2em !important; position: absolute !important; left: 50% !important; top: 50% !important; transform: translate(-50%, -50%) !important; user-select: none !important; cursor: auto !important; } .github-emoji-fallback { color: inherit; } .github-emoji-fallback img { opacity: 0 !important; }</style>
35</head>
36
37
38
39
40<body>
41    <header class="navbar-fixed">
42    <nav id="headNav" class="bg-color nav-transparent">
43        <div id="navContainer" class="nav-wrapper container">
44            <div class="brand-logo">
45                <a href="/" class="waves-effect waves-light">
46                    
47                    <img src="/medias/logo.png" class="logo-img" alt="LOGO">
48                    
49                    <span class="logo-span">飞翔的种子</span>
50                </a>
51            </div>
52            
53
54<a href="#" data-target="mobile-nav" class="sidenav-trigger button-collapse"><i class="fas fa-bars"></i></a>
55<ul class="right nav-menu">
56  
57  <li class="hide-on-med-and-down nav-item">
58    
59    <a href="/" class="waves-effect waves-light">
60      
61      <i class="fas fa-home" style="zoom: 0.6;"></i>
62      
63      <span>首页</span>
64    </a>
65    
66  </li>
67  
68  <li class="hide-on-med-and-down nav-item">
69    
70    <a href="/tags" class="waves-effect waves-light">
71      
72      <i class="fas fa-tags" style="zoom: 0.6;"></i>
73      
74      <span>标签</span>
75    </a>
76    
77  </li>
78  
79  <li class="hide-on-med-and-down nav-item">
80    
81    <a href="/archives" class="waves-effect waves-light">
82      
83      <i class="fas fa-archive" style="zoom: 0.6;"></i>
84      
85      <span>归档</span>
86    </a>
87    
88  </li>
89  
90  <li class="hide-on-med-and-down nav-item">
91    
92    <a href="/about" class="waves-effect waves-light">
93      
94      <i class="fas fa-user-circle" style="zoom: 0.6;"></i>
95      
96      <span>关于</span>
97    </a>
98    
99  </li>
100  
101  <li>
102    <a href="#searchModal" class="modal-trigger waves-effect waves-light">
103      <i id="searchIcon" class="fas fa-search" title="搜索" style="zoom: 0.85;"></i>
104    </a>
105  </li>
106</ul>
107
108
109<div id="mobile-nav" class="side-nav sidenav">
110
111    <div class="mobile-head bg-color">
112        
113        <img src="/medias/logo.png" class="logo-img circle responsive-img">
114        
115        <div class="logo-name">飞翔的种子</div>
116        <div class="logo-desc">
117            
118            Never really desperate, only the lost of the soul.
119            
120        </div>
121    </div>
122
123    <ul class="menu-list mobile-menu-list">
124        
125        <li class="m-nav-item">
126	  
127		<a href="/" class="waves-effect waves-light">
128			
129			    <i class="fa-fw fas fa-home"></i>
130			
131			首页
132		</a>
133          
134        </li>
135        
136        <li class="m-nav-item">
137	  
138		<a href="/tags" class="waves-effect waves-light">
139			
140			    <i class="fa-fw fas fa-tags"></i>
141			
142			标签
143		</a>
144          
145        </li>
146        
147        <li class="m-nav-item">
148	  
149		<a href="/archives" class="waves-effect waves-light">
150			
151			    <i class="fa-fw fas fa-archive"></i>
152			
153			归档
154		</a>
155          
156        </li>
157        
158        <li class="m-nav-item">
159	  
160		<a href="/about" class="waves-effect waves-light">
161			
162			    <i class="fa-fw fas fa-user-circle"></i>
163			
164			关于
165		</a>
166          
167        </li>
168        
169        
170    </ul>
171</div>
172
173
174        </div>
175
176        
177    </nav>
178
179</header>
180
181    
182<style>
183    .carousel-control {
184        width: 45px;
185        height: 45px;
186        line-height: 55px;
187        border-radius: 45px;
188        background: transparent;
189        cursor: pointer;
190        z-index: 100;
191    }
192
193    #prev-cover {
194        position: absolute;
195        top: 48%;
196        left: 8px;
197    }
198
199    #next-cover {
200        position: absolute;
201        top: 48%;
202        right: 8px;;
203    }
204
205    #prev-cover i {
206        margin-right: 3px;
207    }
208
209    #next-cover i {
210        margin-left: 3px;
211    }
212
213    .carousel-control:hover {
214        background-color: rgba(0, 0, 0, .4);
215    }
216
217    .carousel-control i {
218        color: #fff;
219        font-size: 2.4rem;
220    }
221</style>
222
223
224
225<div class="carousel carousel-slider center index-cover" data-indicators="true" style="margin-top: -64px;">
226    
227
228    <div class="carousel-item  white-text bg-cover about-cover">
229        <div class="container">
230            <div class="row">
231    <div class="col s10 offset-s1 m8 offset-m2 l8 offset-l2">
232        <div class="brand">
233            <div class="title center-align">
234                
235                跬步不积,千里不至
236                
237            </div>
238
239            <div class="description center-align">
240                
241                <span id="subtitle"></span>
242                
242<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
242
243                
243<script>
244                    var typed = new Typed("#subtitle", {
245                        strings: [ 
246                            
247                                "从来没有真正的绝境, 只有心灵的迷途",
248                            
249                                "Never really desperate, only the lost of the soul",
250                            
251                        ],
252                        startDelay: 300,
253                        typeSpeed: 100,
254                        loop: true,
255                        backSpeed: 50,
256                        showCursor: true
257                    });
258                </script>
258
259                
260            </div>
261        </div>
262    </div>
263</div>
264
265
266<script>
267    // 每天切换 banner 图.  Switch banner image every day.
268    var bannerUrl = "/medias/banner/" + new Date().getDay() + '.jpg';
269    $('.bg-cover').css('background-image', 'url(' + bannerUrl + ')');
270</script>
270
271
272
273
274            <div class="cover-btns">
275                <a href="#indexCard" class="waves-effect waves-light btn">
276                    <i class="fa fa-angle-double-down"></i>开始阅读
277                </a>
278
279                
280            </div>
281            <div class="cover-social-link">
282
283
284    <a href="mailto:[email protected]" class="tooltipped" target="_blank" data-tooltip="邮件联系我" data-position="top" data-delay="50">
285        <i class="fas fa-envelope-open"></i>
286    </a>
287
288
289
290
291
292
293
294
295
296
297
298
299
300</div>
301        </div>
302    </div>
303
304    
305</div>
306
307<script>
308    $(function () {
309        let coverSlider = $('.carousel');
310
311        //用户触摸轮播自动 restartPlay 是否生效
312        let initUserPressedOrDraggedActive = false
313
314        //用户触摸轮播自动 restartPlay
315        function initUserPressedOrDragged(instance) {
316            setInterval(() => {
317                if (instance.pressed || instance.dragged) {
318                    // console.log('initUserPressedOrDragged: ',instance.pressed,instance.dragged)
319                    restartPlay()
320                }
321            }, 1000)
322        }
323
324        coverSlider.carousel({
325            duration: Number('120'),
326            fullWidth: true,
327            indicators: 'true' === 'true',
328            onCycleTo() {
329                if (!initUserPressedOrDraggedActive) {
330                    // console.log('initUserPressedOrDraggedActive')
331                    initUserPressedOrDragged(this)
332                    initUserPressedOrDraggedActive = true
333                }
334            },
335        })
336
337        let carouselIntervalId;
338        
339        // Loop to call the next cover article picture.
340        let autoCarousel = function () {
341            carouselIntervalId = setInterval(function () {
342                coverSlider.carousel('next');
343            }, 5000);
344        };
345        autoCarousel();
346        
347
348        function restartPlay() {
349            
350            clearInterval(carouselIntervalId);
351            autoCarousel();
352            
353        };
354
355        
356        // prev and next cover post.
357        $('#prev-cover').click(function () {
358            coverSlider.carousel('prev');
359            restartPlay();
360        });
361        $('#next-cover').click(function () {
362            coverSlider.carousel('next');
363            restartPlay();
364        });
365        
366    });
367</script>
367
368
369
370
371<main class="content">
372
373    
374    <div id="indexCard" class="index-card">
375        <div class="container ">
376            <div class="card">
377                <div class="card-content">
378                    
379                        <div class="dream">
380    
381    <div class="title center-align">
382        <i class="far fa-lightbulb"></i>&nbsp;&nbsp;我的梦想
383    </div>
384    
385    <div class="row">
386        <div class="col l8 offset-l2 m10 offset-m1 s10 offset-s1 center-align text">
387            不是每个人都应该像我这样去建造一座水晶大教堂,但是每个人都应该拥有自己的梦想,设计自己的梦想,追求自己的梦想,实现自己的梦想。梦想是生命的灵魂,是心灵的灯塔,是引导人走向成功的信仰。有了崇高的梦想,只要矢志不渝地追求,梦想就会成为现实,奋斗就会变成壮举,生命就会创造奇迹。——罗伯·舒乐
388        </div>
389    </div>
390</div>
391
392                    
393
394                    
395
396                    
397
398                    
399                    <div id="recommend-sections" class="recommend">
400                        
401
402
403
404                    </div>
405                    
406                </div>
407            </div>
408        </div>
409    </div>
410    
411
412    
413
414    <!-- 所有文章卡片 -->
415    <article id="articles" class="container articles">
416        <div class="row article-row">
417            
418             <!-- 隐藏某个文章 -->
419            <div class="article col s12 m6 l4" data-aos="zoom-in">
420                <div class="card">
421                    <a href="/2026/05/01/pynini-detailed-explanation/">
422                        <div class="card-image">
423                            
424                            
425                            <img src="/medias/featureimages/7.jpg" class="responsive-img" alt="pynini 详解:加权有限状态转换器在文本处理中的应用">
426                            
427                            <span class="card-title">pynini 详解:加权有限状态转换器在文本处理中的应用</span>
428                        </div>
429                    </a>
430
431                    <div class="card-content article-content">
432                        <div class="summary block-with-text">
433                            
434                                pynini 是一个基于 OpenFst 的 Python 库,用于构建和操作加权有限状态转换器(Weighted Finite-State Transducer, WFST)。它在文本规范化(TN)、逆文本规范化(ITN)、语音识别后处理
435                            
436                        </div>
437                        <div class="publish-info">
438                            <span class="publish-date">
439                                <i class="far fa-clock fa-fw icon-date"></i>2026-05-01
440                            </span>
441                            <span class="publish-author">
442                                
443                                <i class="fas fa-user fa-fw"></i>
444                                2356
445                                
446                            </span>
447                        </div>
448                    </div>
449
450                    
451                    <div class="card-action article-tags">
452                        
453                        <a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/">
454                            <span class="chip bg-color">开发技术</span>
455                        </a>
456                        
457                        <a href="/tags/Python/">
458                            <span class="chip bg-color">Python</span>
459                        </a>
460                        
461                        <a href="/tags/NLP/">
462                            <span class="chip bg-color">NLP</span>
463                        </a>
464                        
465                    </div>
466                    
467                </div>
468            </div>
469              <!-- 隐藏某个文章 -->
470            
471             <!-- 隐藏某个文章 -->
472            <div class="article col s12 m6 l4" data-aos="zoom-in">
473                <div class="card">
474                    <a href="/2026/03/27/transformer-attention-mechanism/">
475                        <div class="card-image">
476                            
477                            
478                            <img src="/medias/featureimages/14.jpg" class="responsive-img" alt="Transformer Attention 机制详解">
479                            
480                            <span class="card-title">Transformer Attention 机制详解</span>
481                        </div>
482                    </a>
483
484                    <div class="card-content article-content">
485                        <div class="summary block-with-text">
486                            
487                                引言2017 年,Google 团队在论文《Attention Is All You Need》中提出了 Transformer 架构,彻底改变了自然语言处理领域。Transformer 完全基于注意力机制(Attention Mechan
488                            
489                        </div>
490                        <div class="publish-info">
491                            <span class="publish-date">
492                                <i class="far fa-clock fa-fw icon-date"></i>2026-03-27
493                            </span>
494                            <span class="publish-author">
495                                
496                                <i class="fas fa-user fa-fw"></i>
497                                2356
498                                
499                            </span>
500                        </div>
501                    </div>
502
503                    
504                    <div class="card-action article-tags">
505                        
506                        <a href="/tags/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%EF%BC%8CTransformer/">
507                            <span class="chip bg-color">深度学习,Transformer</span>
508                        </a>
509                        
510                        <a href="/tags/Attention/">
511                            <span class="chip bg-color">Attention</span>
512                        </a>
513                        
514                        <a href="/tags/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%EF%BC%8CPython/">
515                            <span class="chip bg-color">神经网络,Python</span>
516                        </a>
517                        
518                    </div>
519                    
520                </div>
521            </div>
522              <!-- 隐藏某个文章 -->
523            
524             <!-- 隐藏某个文章 -->
525            <div class="article col s12 m6 l4" data-aos="zoom-in">
526                <div class="card">
527                    <a href="/2026/03/24/systemd-user-exit-podman-container-stop-solution/">
528                        <div class="card-image">
529                            
530                            
531                            <img src="/medias/featureimages/13.jpg" class="responsive-img" alt="解决 systemd 系统中用户退出后 podman 容器自动退出的问题">
532                            
533                            <span class="card-title">解决 systemd 系统中用户退出后 podman 容器自动退出的问题</span>
534                        </div>
535                    </a>
536
537                    <div class="card-content article-content">
538                        <div class="summary block-with-text">
539                            
540                                在使用 podman 运行容器时,很多开发者会遇到一个常见的问题:当用户从 SSH 会话退出后,已经启动的容器会自动停止。这个问题在使用 systemd 作为初始化系统的 Linux 发行版(如 Fedora、RHEL、CentOS、Ubu
541                            
542                        </div>
543                        <div class="publish-info">
544                            <span class="publish-date">
545                                <i class="far fa-clock fa-fw icon-date"></i>2026-03-24
546                            </span>
547                            <span class="publish-author">
548                                
549                                <i class="fas fa-user fa-fw"></i>
550                                2356
551                                
552                            </span>
553                        </div>
554                    </div>
555
556                    
557                    <div class="card-action article-tags">
558                        
559                        <a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%EF%BC%8CLinux/">
560                            <span class="chip bg-color">开发技术,Linux</span>
561                        </a>
562                        
563                        <a href="/tags/Podman/">
564                            <span class="chip bg-color">Podman</span>
565                        </a>
566                        
567                    </div>
568                    
569                </div>
570            </div>
571              <!-- 隐藏某个文章 -->
572            
573             <!-- 隐藏某个文章 -->
574            <div class="article col s12 m6 l4" data-aos="zoom-in">
575                <div class="card">
576                    <a href="/2026/03/20/gpg-best-practices/">
577                        <div class="card-image">
578                            
579                            
580                            <img src="/medias/featureimages/19.jpg" class="responsive-img" alt="GPG 使用最佳实践">
581                            
582                            <span class="card-title">GPG 使用最佳实践</span>
583                        </div>
584                    </a>
585
586                    <div class="card-content article-content">
587                        <div class="summary block-with-text">
588                            
589                                GPG(GNU Privacy Guard)是 OpenPGP 标准的开源实现,广泛用于加密文件、签名代码提交、保护邮件通信等场景。本文整理了日常使用 GPG 的最佳实践,帮助你在安全与便利之间找到平衡点。
590                            
591                        </div>
592                        <div class="publish-info">
593                            <span class="publish-date">
594                                <i class="far fa-clock fa-fw icon-date"></i>2026-03-20
595                            </span>
596                            <span class="publish-author">
597                                
598                                <i class="fas fa-user fa-fw"></i>
599                                2356
600                                
601                            </span>
602                        </div>
603                    </div>
604
605                    
606                    <div class="card-action article-tags">
607                        
608                        <a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/">
609                            <span class="chip bg-color">开发技术</span>
610                        </a>
611                        
612                        <a href="/tags/GPG/">
613                            <span class="chip bg-color">GPG</span>
614                        </a>
615                        
616                        <a href="/tags/%E5%AE%89%E5%85%A8/">
617                            <span class="chip bg-color">安全</span>
618                        </a>
619                        
620                    </div>
621                    
622                </div>
623            </div>
624              <!-- 隐藏某个文章 -->
625            
626             <!-- 隐藏某个文章 -->
627            <div class="article col s12 m6 l4" data-aos="zoom-in">
628                <div class="card">
629                    <a href="/2026/03/18/git-signoff-limit-subkey/">
630                        <div class="card-image">
631                            
632                            
633                            <img src="/medias/featureimages/7.jpg" class="responsive-img" alt="Git Signoff 指定 Subkey 的配置方法">
634                            
635                            <span class="card-title">Git Signoff 指定 Subkey 的配置方法</span>
636                        </div>
637                    </a>
638
639                    <div class="card-content article-content">
640                        <div class="summary block-with-text">
641                            
642                                问题描述在使用 GPG 签名 Git 提交时,如果配置了子密钥(Subkey),但 Git 仍然使用主密钥或其他子密钥进行签名。如何解决这个问题?
643解决方案查看密钥结构首先查看你的 GPG 密钥结构:
644gpg --list-secret-k
645                            
646                        </div>
647                        <div class="publish-info">
648                            <span class="publish-date">
649                                <i class="far fa-clock fa-fw icon-date"></i>2026-03-18
650                            </span>
651                            <span class="publish-author">
652                                
653                                <i class="fas fa-user fa-fw"></i>
654                                2356
655                                
656                            </span>
657                        </div>
658                    </div>
659
660                    
661                    <div class="card-action article-tags">
662                        
663                        <a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF%EF%BC%8CGit/">
664                            <span class="chip bg-color">开发技术,Git</span>
665                        </a>
666                        
667                        <a href="/tags/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6/">
668                            <span class="chip bg-color">版本控制</span>
669                        </a>
670                        
671                    </div>
672                    
673                </div>
674            </div>
675              <!-- 隐藏某个文章 -->
676            
677             <!-- 隐藏某个文章 -->
678            <div class="article col s12 m6 l4" data-aos="zoom-in">
679                <div class="card">
680                    <a href="/2025/11/08/fbank-feature-extraction/">
681                        <div class="card-image">
682                            
683                            
684                            <img src="/medias/featureimages/15.jpg" class="responsive-img" alt="FBank 特征提取详解">
685                            
686                            <span class="card-title">FBank 特征提取详解</span>
687                        </div>
688                    </a>
689
690                    <div class="card-content article-content">
691                        <div class="summary block-with-text">
692                            
693                                什么是FBankFBank(Filter Bank,滤波器组)是语音特征参数提取方法之一,其独特的基于倒谱的提取方式更加符合人类的听觉原理。FBank特征提取相当于MFCC去掉最后一步的离散余弦变换(DCT),因此保留了更多原始语音数据信息
694                            
695                        </div>
696                        <div class="publish-info">
697                            <span class="publish-date">
698                                <i class="far fa-clock fa-fw icon-date"></i>2025-11-08
699                            </span>
700                            <span class="publish-author">
701                                
702                                <i class="fas fa-user fa-fw"></i>
703                                2356
704                                
705                            </span>
706                        </div>
707                    </div>
708
709                    
710                    <div class="card-action article-tags">
711                        
712                        <a href="/tags/%E9%9F%B3%E9%A2%91%E5%A4%84%E7%90%86%EF%BC%8CFBank/">
713                            <span class="chip bg-color">音频处理,FBank</span>
714                        </a>
715                        
716                        <a href="/tags/%E7%89%B9%E5%BE%81%E6%8F%90%E5%8F%96%EF%BC%8CPython/">
717                            <span class="chip bg-color">特征提取,Python</span>
718                        </a>
719                        
720                    </div>
721                    
722                </div>
723            </div>
724              <!-- 隐藏某个文章 -->
725            
726             <!-- 隐藏某个文章 -->
727            <div class="article col s12 m6 l4" data-aos="zoom-in">
728                <div class="card">
729                    <a href="/2025/11/08/mfcc-feature-extraction/">
730                        <div class="card-image">
731                            
732                            
733                            <img src="/medias/featureimages/14.jpg" class="responsive-img" alt="MFCC 特征提取详解">
734                            
735                            <span class="card-title">MFCC 特征提取详解</span>
736                        </div>
737                    </a>
738
739                    <div class="card-content article-content">
740                        <div class="summary block-with-text">
741                            
742                                什么是MFCCMFCC(Mel-scale Frequency Cepstral Coefficients,梅尔频率倒谱系数)是一种在自动语音识别和说话人识别中广泛使用的特征。它的核心思想是依据人的听觉实验结果来分析语音的频谱,即基于人耳对
743                            
744                        </div>
745                        <div class="publish-info">
746                            <span class="publish-date">
747                                <i class="far fa-clock fa-fw icon-date"></i>2025-11-08
748                            </span>
749                            <span class="publish-author">
750                                
751                                <i class="fas fa-user fa-fw"></i>
752                                2356
753                                
754                            </span>
755                        </div>
756                    </div>
757
758                    
759                    <div class="card-action article-tags">
760                        
761                        <a href="/tags/%E7%89%B9%E5%BE%81%E6%8F%90%E5%8F%96%EF%BC%8CPython/">
762                            <span class="chip bg-color">特征提取,Python</span>
763                        </a>
764                        
765                        <a href="/tags/%E9%9F%B3%E9%A2%91%E5%A4%84%E7%90%86%EF%BC%8CMFCC/">
766                            <span class="chip bg-color">音频处理,MFCC</span>
767                        </a>
768                        
769                    </div>
770                    
771                </div>
772            </div>
773              <!-- 隐藏某个文章 -->
774            
775             <!-- 隐藏某个文章 -->
776            <div class="article col s12 m6 l4" data-aos="zoom-in">
777                <div class="card">
778                    <a href="/2023/04/05/diy-smartgpg/">
779                        <div class="card-image">
780                            
781                            
782                            <img src="/medias/featureimages/4.jpg" class="responsive-img" alt="基于SmartPGP低成本DIY OpenPGP卡(YubiKey替代品)">
783                            
784                            <span class="card-title">基于SmartPGP低成本DIY OpenPGP卡(YubiKey替代品)</span>
785                        </div>
786                    </a>
787
788                    <div class="card-content article-content">
789                        <div class="summary block-with-text">
790                            
791                                简单介绍一下OpenPGP卡如果有使用过YubiKey/CanoKey的话,对其中的OpenPGP支持应该不陌生。其中YubiKey实现了OpenPGP Card标准,这是一个基于硬件加密的密钥保护标准。可以配合GPG使用。
792本文介绍一种使
793                            
794                        </div>
795                        <div class="publish-info">
796                            <span class="publish-date">
797                                <i class="far fa-clock fa-fw icon-date"></i>2023-04-05
798                            </span>
799                            <span class="publish-author">
800                                
801                                <i class="fas fa-user fa-fw"></i>
802                                2356
803                                
804                            </span>
805                        </div>
806                    </div>
807
808                    
809                    <div class="card-action article-tags">
810                        
811                        <a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/">
812                            <span class="chip bg-color">开发技术</span>
813                        </a>
814                        
815                        <a href="/tags/GPG/">
816                            <span class="chip bg-color">GPG</span>
817                        </a>
818                        
819                    </div>
820                    
821                </div>
822            </div>
823              <!-- 隐藏某个文章 -->
824            
825             <!-- 隐藏某个文章 -->
826            <div class="article col s12 m6 l4" data-aos="zoom-in">
827                <div class="card">
828                    <a href="/2022/06/20/k8s-1.24-failed-to-init/">
829                        <div class="card-image">
830                            
831                            
832                            <img src="/medias/featureimages/21.jpg" class="responsive-img" alt="解决k8s 1.24 kubeadm init执行失败的问题">
833                            
834                            <span class="card-title">解决k8s 1.24 kubeadm init执行失败的问题</span>
835                        </div>
836                    </a>
837
838                    <div class="card-content article-content">
839                        <div class="summary block-with-text">
840                            
841                                最近kubernetes 1.24正式发布,但是在国内部署时出现了kubeadm init执行失败的问题。搜索了一圈之后,发现不少人遇到了这个问题,尤其是国内。google搜索出的国外资料反而不多。最后经过日志分析发现,还是gcr下载镜像引
842                            
843                        </div>
844                        <div class="publish-info">
845                            <span class="publish-date">
846                                <i class="far fa-clock fa-fw icon-date"></i>2022-06-20
847                            </span>
848                            <span class="publish-author">
849                                
850                                <i class="fas fa-user fa-fw"></i>
851                                2356
852                                
853                            </span>
854                        </div>
855                    </div>
856
857                    
858                    <div class="card-action article-tags">
859                        
860                        <a href="/tags/%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/">
861                            <span class="chip bg-color">开发技术</span>
862                        </a>
863                        
864                        <a href="/tags/Kubernets/">
865                            <span class="chip bg-color">Kubernets</span>
866                        </a>
867                        
868                    </div>
869                    
870                </div>
871            </div>
872              <!-- 隐藏某个文章 -->
873            
874             <!-- 隐藏某个文章 -->
875            <div class="article col s12 m6 l4" data-aos="zoom-in">
876                <div class="card">
877                    <a href="/2022/01/13/okhttp-post-stream/">
878                        <div class="card-image">
879                            
880                            
881                            <img src="/medias/featureimages/15.jpg" class="responsive-img" alt="使用okhttp发送post请求时,使用stream作为body">
882                            
883                            <span class="card-title">使用okhttp发送post请求时,使用stream作为body</span>
884                        </div>
885                    </a>
886
887                    <div class="card-content article-content">
888                        <div class="summary block-with-text">
889                            
890                                使用okhttp进行http请求时,如果post body长度未知,需要使用InputStream作为body传输数据。okhttp没有提供类似RequestBody.create(File strean)此类快捷调用方法,需要调用者手动构
891                            
892                        </div>
893                        <div class="publish-info">
894                            <span class="publish-date">
895                                <i class="far fa-clock fa-fw icon-date"></i>2022-01-13
896                            </span>
897                            <span class="publish-author">
898                                
899                                <i class="fas fa-user fa-fw"></i>
900                                2356
901                                
902                            </span>
903                        </div>
904                    </div>
905
906                    
907                    <div class="card-action article-tags">
908                        
909                        <a href="/tags/Java/">
910                            <span class="chip bg-color">Java</span>
911                        </a>
912                        
913                        <a href="/tags/HTTP/">
914                            <span class="chip bg-color">HTTP</span>
915                        </a>
916                        
917                        <a href="/tags/OkHttp/">
918                            <span class="chip bg-color">OkHttp</span>
919                        </a>
920                        
921                    </div>
922                    
923                </div>
924            </div>
925              <!-- 隐藏某个文章 -->
926            
927             <!-- 隐藏某个文章 -->
928            <div class="article col s12 m6 l4" data-aos="zoom-in">
929                <div class="card">
930                    <a href="/2021/12/30/archive-email-by-receive-time/">
931                        <div class="card-image">
932                            
933                            
934                            <img src="/medias/featureimages/10.jpg" class="responsive-img" alt="Outlook按日期归档不完整的问题处理">
935                            
936                            <span class="card-title">Outlook按日期归档不完整的问题处理</span>
937                        </div>
938                    </a>
939
940                    <div class="card-content article-content">
941                        <div class="summary block-with-text">
942                            
943                                Outlook的归档功能能够很好的将历史邮件pst进行拆分,避免使用一个pst文件导致性能降低问题。但是执行归档时Outlook默认按照最后修改日期进行归档,而不是邮件接收时间
944需要通过修改注册表配置,使用邮件接收时间进行归档:在图示的注册
945                            
946                        </div>
947                        <div class="publish-info">
948                            <span class="publish-date">
949                                <i class="far fa-clock fa-fw icon-date"></i>2021-12-30
950                            </span>
951                            <span class="publish-author">
952                                
953                                <i class="fas fa-user fa-fw"></i>
954                                2356
955                                
956                            </span>
957                        </div>
958                    </div>
959
960                    
961                    <div class="card-action article-tags">
962                        
963                        <a href="/tags/Outlook/">
964                            <span class="chip bg-color">Outlook</span>
965                        </a>
966                        
967                    </div>
968                    
969                </div>
970            </div>
971              <!-- 隐藏某个文章 -->
972            
973             <!-- 隐藏某个文章 -->
974            <div class="article col s12 m6 l4" data-aos="zoom-in">
975                <div class="card">
976                    <a href="/2017/02/09/migrate-openstack-mitaka/">
977                        <div class="card-image">
978                            
979                            
980                            <img src="/medias/featureimages/0.jpg" class="responsive-img" alt="OpenStack(Mitaka)平台子网迁移过程笔记">
981                            
982                            <span class="card-title">OpenStack(Mitaka)平台子网迁移过程笔记</span>
983                        </div>
984                    </a>
985
986                    <div class="card-content article-content">
987                        <div class="summary block-with-text">
988                            
989                                由于公司搬家,由于服务器所在网段变化,原来搭建的OpenStack服务集群,需要进行迁移,找了很多资料没有相关的可借鉴经验,这里将自己的操作过程记录下来,以便查看也希望对后来者能够有所帮助
990本次迁移主要用于平行迁移整个OpenStack集群
991                            
992                        </div>
993                        <div class="publish-info">
994                            <span class="publish-date">
995                                <i class="far fa-clock fa-fw icon-date"></i>2017-02-09
996                            </span>
997                            <span class="publish-author">
998                                
999                                <i class="fas fa-user fa-fw"></i>
1000                                2356
1001                                
1002                            </span>
1003                        </div>
1004                    </div>
1005
1006                    
1007                    <div class="card-action article-tags">
1008                        
1009                        <a href="/tags/OpenStack/">
1010                            <span class="chip bg-color">OpenStack</span>
1011                        </a>
1012                        
1013                    </div>
1014                    
1015                </div>
1016            </div>
1017              <!-- 隐藏某个文章 -->
1018            
1019        </div>
1020    </article>
1021
1022</main>
1023
1024
1025<div class="container paging">
1026    <div class="row">
1027        <div class="col s6 m4 l4">
1028            
1029            <a class="left btn-floating btn-large disabled">
1030                <i class="fas fa-angle-left"></i>
1031            </a>
1032            
1033        </div>
1034        <div class="page-info col m4 l4 hide-on-small-only">
1035            <div class="center-align b-text-gray">1 / 11</div>
1036        </div>
1037        <div class="col s6 m4 l4">
1038            
1039            <a href="/page/2/"
1040               class="right btn-floating btn-large waves-effect waves-light bg-color">
1041                <i class="fas fa-angle-right"></i>
1042            </a>
1043            
1044        </div>
1045    </div>
1046</div>
1047
1048
1049
1050
1051    <footer class="page-footer bg-color">
1052    
1053        <link rel="stylesheet" href="/libs/aplayer/APlayer.min.css">
1054<style>
1055    .aplayer .aplayer-lrc p {
1056        
1057        display: none;
1058        
1059        font-size: 12px;
1060        font-weight: 700;
1061        line-height: 16px !important;
1062    }
1063
1064    .aplayer .aplayer-lrc p.aplayer-lrc-current {
1065        
1066        display: none;
1067        
1068        font-size: 15px;
1069        color: #42b983;
1070    }
1071
1072    
1073    .aplayer.aplayer-fixed.aplayer-narrow .aplayer-body {
1074        left: -66px !important;
1075    }
1076
1077    .aplayer.aplayer-fixed.aplayer-narrow .aplayer-body:hover {
1078        left: 0px !important;
1079    }
1080
1081    
1082</style>
1083<div class="">
1084    
1085    <div class="row">
1086        <meting-js class="col l8 offset-l2 m10 offset-m1 s12"
1087                   server="netease"
1088                   type="playlist"
1089                   id="503838841"
1090                   fixed='true'
1091                   autoplay='false'
1092                   theme='#42b983'
1093                   loop='all'
1094                   order='random'
1095                   preload='auto'
1096                   volume='0.7'
1097                   list-folded='true'
1098        >
1099        </meting-js>
1100    </div>
1101</div>
1102
1103<script src="/libs/aplayer/APlayer.min.js"></script>
vendor: 1 bytes, line 1103
1103
1104<script src="/libs/aplayer/Meting.min.js"></script>
1104
1105
1106    
1107
1108    <div class="container row center-align"
1109         style="margin-bottom: 0px !important;">
1110        <div class="col s12 center-align copy-right">
1111            Copyright&nbsp;&copy;
1112            
1113                <span id="year">2019-2026</span>
1114            
1115            <a href="/about" target="_blank">2356</a>
1116            |&nbsp;Powered by&nbsp;<a href="https://hexo.io/" target="_blank">Hexo</a>
1117            |&nbsp;Theme&nbsp;<a href="https://github.com/blinkfox/hexo-theme-matery" target="_blank">Matery</a>
1118            <br>
1119            <img src="/medias/icp.png"/><span id="icp">
1120            </span><a href="https://beian.mps.gov.cn/#/query/webSearch?code=11010802045350" target="_blank">京公网安备11010802045350号</a>
1121            |&nbsp;<a href="https://beian.miit.gov.cn/" target="_blank">京ICP备19013800号</a>
1122            
1123            &nbsp;|&nbsp;<a href="mailto:[email protected]" class="tooltipped" target="_blank" data-tooltip="邮件联系我" data-position="top" data-delay="50"><i class="fas fa-envelope-open"></i></a>
1124            
1125            <br>
1126            
1127            
1128            
1129            
1130            
1131            <br>
1132
1133            <!-- 运行天数提醒. -->
1134            
1135            <br>
1136            
1137        </div>
1138    </div>
1139</footer>
1140
1141<div class="progress-bar"></div>
1142
1143
1144    <!-- 搜索遮罩框 -->
1145<div id="searchModal" class="modal">
1146    <div class="modal-content">
1147        <div class="search-header">
1148            <span class="title"><i class="fas fa-search"></i>&nbsp;&nbsp;搜索</span>
1149            <input type="search" id="searchInput" name="s" placeholder="请输入搜索的关键字"
1150                   class="search-input">
1151        </div>
1152        <div id="searchResult"></div>
1153    </div>
1154</div>
1155
1156<script type="text/javascript">
1157$(function () {
1158    var searchFunc = function (path, search_id, content_id) {
1159        'use strict';
1160        $.ajax({
1161            url: path,
1162            dataType: "xml",
1163            success: function (xmlResponse) {
1164                // get the contents from search data
1165                var datas = $("entry", xmlResponse).map(function () {
1166                    return {
1167                        title: $("title", this).text(),
1168                        content: $("content", this).text(),
1169                        url: $("url", this).text()
1170                    };
1171                }).get();
1172                var $input = document.getElementById(search_id);
1173                var $resultContent = document.getElementById(content_id);
1174                $input.addEventListener('input', function () {
1175                    var str = '<ul class=\"search-result-list\">';
1176                    var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
1177                    $resultContent.innerHTML = "";
1178                    if (this.value.trim().length <= 0) {
1179                        return;
1180                    }
1181                    // perform local searching
1182                    datas.forEach(function (data) {
1183                        var isMatch = true;
1184                        var data_title = data.title.trim().toLowerCase();
1185                        var data_content = data.content.trim().replace(/<[^>]+>/g, "").toLowerCase();
1186                        var data_url = data.url;
1187                        data_url = data_url.indexOf('/') === 0 ? data.url : '/' + data_url;
1188                        var index_title = -1;
1189                        var index_content = -1;
1190                        var first_occur = -1;
1191                        // only match artiles with not empty titles and contents
1192                        if (data_title !== '' && data_content !== '') {
1193                            keywords.forEach(function (keyword, i) {
1194                                index_title = data_title.indexOf(keyword);
1195                                index_content = data_content.indexOf(keyword);
1196                                if (index_title < 0 && index_content < 0) {
1197                                    isMatch = false;
1198                                } else {
1199                                    if (index_content < 0) {
1200                                        index_content = 0;
1201                                    }
1202                                    if (i === 0) {
1203                                        first_occur = index_content;
1204                                    }
1205                                }
1206                            });
1207                        }
1208                        // show search results
1209                        if (isMatch) {
1210                            str += "<li><a href='" + data_url + "' class='search-result-title'>" + data_title + "</a>";
1211                            var content = data.content.trim().replace(/<[^>]+>/g, "");
1212                            if (first_occur >= 0) {
1213                                // cut out 100 characters
1214                                var start = first_occur - 20;
1215                                var end = first_occur + 80;
1216                                if (start < 0) {
1217                                    start = 0;
1218                                }
1219                                if (start === 0) {
1220                                    end = 100;
1221                                }
1222                                if (end > content.length) {
1223                                    end = content.length;
1224                                }
1225                                var match_content = content.substr(start, end);
1226                                // highlight all keywords
1227                                keywords.forEach(function (keyword) {
1228                                    var regS = new RegExp(keyword, "gi");
1229                                    match_content = match_content.replace(regS, "<em class=\"search-keyword\">" + keyword + "</em>");
1230                                });
1231
1232                                str += "<p class=\"search-result\">" + match_content + "...</p>"
1233                            }
1234                            str += "</li>";
1235                        }
1236                    });
1237                    str += "</ul>";
1238                    $resultContent.innerHTML = str;
1239                });
1240            }
1241        });
1242    };
1243
1244    searchFunc('/search.xml', 'searchInput', 'searchResult');
1245});
1246</script>
1246
1247
1248    <!-- 回到顶部按钮 -->
1249<div id="backTop" class="top-scroll">
1250    <a class="btn-floating btn-large waves-effect waves-light" href="#!">
1251        <i class="fas fa-arrow-up"></i>
1252    </a>
1253</div>
1254
1255
1256    
1256<script src="/libs/materialize/materialize.min.js"></script>
1256
1257    
1257<script src="/libs/masonry/masonry.pkgd.min.js"></script>
1257
1258    
1258<script src="/libs/aos/aos.js"></script>
1258
1259    
1259<script src="/libs/scrollprogress/scrollProgress.min.js"></script>
1259
1260    
1260<script src="/libs/lightGallery/js/lightgallery-all.min.js"></script>
1260
1261    
1261<script src="/js/matery.js"></script>
1261
1262
1263    
1264        <!-- 
1264<script src='https://unpkg.com/mermaid@latest/dist/mermaid.min.js'></script>
1264 -->
1265        
1265<script src='/libs/mermaid/mermaid.min.js'></script>
1265
1266        
1266<script>
1267          if (window.mermaid) {
1268            mermaid.initialize({theme: 'forest'});
1269          }
1270        </script>
1270
1271    
1272
1273    
1274
1275    <!-- 雪花特效 -->
1276    
1277
1278    <!-- 鼠标星星特效 -->
1279    
1280
1281     
1282        
1282<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
1282
1283        
1283<script src="/libs/others/TencentCaptcha.js"></script>
1283
1284        <button id="TencentCaptcha" data-appid="xxxxxxxxxx" data-cbfn="callback" type="button" hidden></button>
1285    
1286
1287    <!-- Baidu Analytics -->
1288
1289    <!-- Baidu Push -->
1290
1291<script>
1292    (function () {
1293        var bp = document.createElement('script');
1294        var curProtocol = window.location.protocol.split(':')[0];
1295        if (curProtocol === 'https') {
1296            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
1297        } else {
1298            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
1299        }
1300        var s = document.getElementsByTagName("script")[0];
1301        s.parentNode.insertBefore(bp, s);
1302    })();
1303</script>
1303
1304
1305    
1306    
1306<script src="/libs/others/clicklove.js" async="async"></script>
1306
1307    
1308    
1309
1310    
1311
1312    
1313
1314    <!--腾讯兔小巢-->
1315    
1316    
1317
1318    
1319
1320    
1321
1322    
1323    
1323<script src="/libs/instantpage/instantpage.js" type="module"></script>
1323
1324    
1325
1326</body>
1327
1328</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.