PageSourceSearch

https://cdcq.github.io/

html cdcq.github.io collected 2026-10-03 08:45:45 UTC 31,066 bytes, 310 lines download raw bytes

1<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="format-detection" content="telephone=no"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="icon" href="/images/cdcq.png?v=2.6.2" type="image/png" sizes="16x16"><link rel="icon" href="/images/cdcq.png?v=2.6.2" type="image/png" sizes="32x32"><meta property="og:type" content="website">
2<meta property="og:title" content="cdcq">
3<meta property="og:url" content="http://cdcq.github.io/index.html">
4<meta property="og:site_name" content="cdcq">
5<meta property="og:locale" content="zh_CN">
6<meta property="article:author" content="cdcq">
7<meta name="twitter:card" content="summary"><title>cdcq | 梦幻小鱼干</title><link ref="canonical" href="http://cdcq.github.io/index.html"><link rel="alternate" href="/atom.xml" type="application/atom+xml"><link rel="dns-prefetch" href="https://cdn.jsdelivr.net"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css" type="text/css"><link rel="stylesheet" href="/css/index.css?v=2.6.2">
7<script>var Stun = window.Stun || {};
8var CONFIG = {
9  root: '/',
10  algolia: undefined,
11  assistSearch: undefined,
12  fontIcon: {"prompt":{"success":"fas fa-check-circle","info":"fas fa-arrow-circle-right","warning":"fas fa-exclamation-circle","error":"fas fa-times-circle"},"copyBtn":"fas fa-copy"},
13  sidebar: {"offsetTop":"20px","tocMaxDepth":6},
14  header: {"enable":true,"showOnPost":false,"scrollDownIcon":true},
15  postWidget: {"endText":true},
16  nightMode: {"enable":true},
17  back2top: {"enable":true},
18  codeblock: {"style":"default","highlight":"light","wordWrap":true},
19  reward: false,
20  fancybox: false,
21  zoomImage: {"gapAside":"20px"},
22  galleryWaterfall: undefined,
23  lazyload: true,
24  pjax: undefined,
25  externalLink: {"icon":{"enable":true,"name":"fas fa-external-link-alt"}},
26  shortcuts: undefined,
27  prompt: {"copyButton":"复制","copySuccess":"复制成功","copyError":"复制失败"},
28  sourcePath: {"js":"js","css":"css","images":"images"},
29};
30
31window.CONFIG = CONFIG;</script>
31<meta name="generator" content="Hexo 5.4.0"></head><body><div class="container" id="container"><header class="header" id="header"><div class="header-inner"><nav class="header-nav header-nav--fixed"><div class="header-nav-inner"><div class="header-nav-menubtn"><i class="fas fa-bars"></i></div><div class="header-nav-menu"><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/"><span class="header-nav-menu-item__icon"><i class="fas fa-home"></i></span><span class="header-nav-menu-item__text">首页</span></a></div><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/archives/"><span class="header-nav-menu-item__icon"><i class="fas fa-folder-open"></i></span><span class="header-nav-menu-item__text">归档</span></a></div><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/categories/"><span class="header-nav-menu-item__icon"><i class="fas fa-layer-group"></i></span><span class="header-nav-menu-item__text">分类</span></a></div><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/tags/"><span class="header-nav-menu-item__icon"><i class="fas fa-tags"></i></span><span class="header-nav-menu-item__text">标签</span></a></div><div class="header-nav-menu-item"><a class="header-nav-menu-item__link" href="/friends/"><span class="header-nav-menu-item__icon"><i class="fas fa-user-plus"></i></span><span class="header-nav-menu-item__text">Friends</span></a></div></div><div class="header-nav-search"><span class="header-nav-search__icon"><i class="fas fa-search"></i></span><span class="header-nav-search__text">搜索</span></div><div class="header-nav-mode"><div class="mode"><div class="mode-track"><span class="mode-track-moon"></span><span class="mode-track-sun"></span></div><div class="mode-thumb"></div></div></div></div></nav><div class="header-banner"><div class="header-banner-info"><div class="header-banner-info__title">cdcq</div><div class="header-banner-info__subtitle">梦幻小鱼干</div></div><div class="header-banner-arrow"><div class="header-banner-arrow__icon"><i class="fas fa-angle-down"></i></div></div></div></div></header><main class="main" id="main"><div class="main-inner"><div class="content-wrap" id="content-wrap"><div class="content content-home" id="content"><section class="postlist"><article class="postlist-item post"><header class="post-header"><div class="sticky-top" data-popover="置顶文章" data-popover-pos="up"><span class="sticky-top__icon"><i class="fas fa-thumbtack"></i></span></div><h1 class="post-title"><a class="post-title__link" href="/2021/04/10/20210410d/">关于我</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2021-04-10</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2022-01-06</span></span></div></header><div class="post-body"><div class="post-excerpt"><p>西安电子科技大学网络安全实验班。</p>
32<p>原焦作一中 OIer 、ACM 选手和开发选手,现摸鱼选手,有时搞点开发和密码学,最高奖项 NOI D 类铜牌,区域赛银牌。</p>
33<p>老博客:<span class="exturl"><a class="exturl__link"   target="_blank" rel="noopener" href="https://www.cnblogs.com/cdcq/" >https://www.cnblogs.com/cdcq/</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span></p>
34<p>老老博客:<span class="exturl"><a class="exturl__link"   target="_blank" rel="noopener" href="https://www.cnblogs.com/JSL2018/" >https://www.cnblogs.com/JSL2018/</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span></p>
35<p>洛古博客:<span class="exturl"><a class="exturl__link"   target="_blank" rel="noopener" href="https://www.luogu.com.cn/blog/cdcq/" >https://www.luogu.com.cn/blog/cdcq/</a><span class="exturl__icon"><i class="fas fa-external-link-alt"></i></span></span></p>
36<p>(我博客真多 233)</p>
37</div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/09/20/20230920a/">23赛季刷题记录</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-09-20</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-11-10</span></span></div></header><div class="post-body"><div class="post-excerpt">主要记录做过的题以及有启发性的思路</div><div class="post-readmore"><a class="post-readmore__link" href="/2023/09/20/20230920a/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title">
37<a class="post-title__link" href="/2023/09/15/20230915a/">方式方法和思维技巧集合</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-09-15</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-09-15</span></span></div></header><div class="post-body"><div class="post-excerpt">总结思维方式和技巧非常有用</div><div class="post-readmore"><a class="post-readmore__link" href="/2023/09/15/20230915a/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/09/04/20230904a/">洛谷5098——Cave Cows 3</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-09-04</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-09-05</span></span></div></header><div class="post-body"><div class="post-excerpt">简单套路题</div><div class="post-readmore"><a class="post-readmore__link" href="/2023/09/04/20230904a/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/04/30/20230430a/">2023西电ACM校赛题解</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-04-30</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-07-22</span></span></div></header><div class="post-body"><div class="post-excerpt">难度稍微失控的一套题</div><div class="post-readmore"><a class="post-readmore__link" href="/2023/04/30/20230430a/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/04/27/20230427b/">西电校赛2020D题——双倍快乐</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-04-27</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-04-30</span></span></div></header><div class="post-body"><div class="post-excerpt">本来应该有双倍的快乐,怎么会是呢?</div><div class="post-readmore"><a class="post-readmore__link" href="/2023/04/27/20230427b/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/04/27/20230427a/">西电校赛2022F题——永久流放</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-04-27</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-04-27</span></span></div></header><div class="post-body"><div class="post-excerpt">很基础的概率DP题</div><div class="post-readmore"><a class="post-readmore__link" href="/2023/04/27/20230427a/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2023/04/26/20230426a/">西电校赛2022D题——数位相邻</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2023-04-26</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-04-27</span></span></div></header><div class="post-body"><div class="post-excerpt">似乎是坑题,但可以不踩坑过</div><div class="post-readmore"><a class="post-readmore__link" href="/2023/04/26/20230426a/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2022/08/28/20220828a/">cdcq的密码学教程四——BM算法</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">2022-08-28</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-04-30</span></span></div></header><div class="post-body"><div class="post-excerpt">其实 BM 在 ACM 里有奇效</div><div class="post-readmore"><a class="post-readmore__link" href="/2022/08/28/20220828a/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article><article class="postlist-item post"><header class="post-header"><h1 class="post-title"><a class="post-title__link" href="/2022/08/19/20220819a/">从DFT到FFT——快速傅立叶变换教程</a></h1><div class="post-meta"><span class="post-meta-item post-meta-item--createtime"><span class="post-meta-item__icon"><i class="far fa-calendar-plus"></i></span><span class="post-meta-item__info">发表于</span><span class="post-meta-item__value">
372022-08-19</span></span><span class="post-meta-item post-meta-item--updatetime"><span class="post-meta-item__icon"><i class="far fa-calendar-check"></i></span><span class="post-meta-item__info">更新于</span><span class="post-meta-item__value">2023-04-30</span></span></div></header><div class="post-body"><div class="post-excerpt">FFT其实也挺简单的</div><div class="post-readmore"><a class="post-readmore__link" href="/2022/08/19/20220819a/"><span class="post-readmore__text">阅读全文</span><span class="post-readmore__icon"><i class="fas fa-long-arrow-alt-right"></i></span></a></div></div></article></section><nav class="paginator"><div class="paginator-inner"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><span class="space">&hellip;</span><a class="page-number" href="/page/4/">4</a><a class="extend next" rel="next" href="/page/2/"><i class="fas fa-angle-right"></i></a></div></nav></div></div><div class="sidebar-wrap" id="sidebar-wrap"><aside class="sidebar" id="sidebar"><section class="sidebar-toc hide"></section><!-- ov = overview--><section class="sidebar-ov"><div class="sidebar-ov-author"><div class="sidebar-ov-author__avatar"><img class="sidebar-ov-author__avatar_img" src="/images/cdcq.png" alt="avatar"></div><p class="sidebar-ov-author__text">宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。</p></div><div class="sidebar-ov-social"><a class="sidebar-ov-social-item" href="https://github.com/cdcq" target="_blank" rel="noopener"><span class="sidebar-ov-social-item__icon"><i class="fab fa-github"></i></span><span class="sidebar-ov-social-item__text">github</span></a></div><div class="sidebar-ov-feed"><span class="sidebar-ov-feed-email"><a class="sidebar-ov-feed-email__link" href="http://eepurl.com/hwUpkL" target="_blank" rel="noopener"><span class="sidebar-ov-feed-email__icon"><i class="fas fa-envelope"></i></span><span>Email 订阅</span></a></span><span class="sidebar-ov-feed-rss"><a class="sidebar-ov-feed-rss__link" href="/atom.xml" target="_blank" rel="noopener"><span class="sidebar-ov-feed-rss__icon"><i class="fas fa-rss"></i></span><span>RSS 订阅</span></a></span></div><div class="sidebar-ov-state"><a class="sidebar-ov-state-item sidebar-ov-state-item--posts" href="/archives/"><div class="sidebar-ov-state-item__count">35</div><div class="sidebar-ov-state-item__name">归档</div></a><a class="sidebar-ov-state-item sidebar-ov-state-item--categories" href="/categories/"><div class="sidebar-ov-state-item__count">17</div><div class="sidebar-ov-state-item__name">分类</div></a><a class="sidebar-ov-state-item sidebar-ov-state-item--tags" href="/tags/"><div class="sidebar-ov-state-item__count">23</div><div class="sidebar-ov-state-item__name">标签</div></a></div></section></aside></div><div class="clearfix"></div></div></main><footer class="footer" id="footer"><div class="footer-inner"><div><span>Copyright © 2023</span><span class="footer__icon"><i class="fab fa-github"></i></span><span>cdcq</span></div><div><span>由 <a href="http://hexo.io/" title="Hexo" target="_blank" rel="noopener">Hexo</a> 强力驱动</span><span> v5.4.0</span><span class="footer__devider">|</span><span>主题 - <a href="https://github.com/liuyib/hexo-theme-stun/" title="Stun" target="_blank" rel="noopener">Stun</a></span><span> v2.6.2</span></div><div class="busuanzi"><span class="busuanzi-siteuv"><span class="busuanzi-siteuv__icon"><i class="fas fa-user"></i></span><span class="busuanzi-siteuv__info">访问人数</span><span class="busuanzi-siteuv__value" id="busuanzi_value_site_uv"></span></span><span class="busuanzi-sitepv"><span class="busuanzi-siteuv__icon"><i class="fas fa-eye"></i></span><span class="busuanzi-siteuv__info">浏览总量</span><span class="busuanzi-siteuv__value" id="busuanzi_value_site_pv"></span></span></div></div></footer><div class="loading-bar" id="loading-bar"><div class="loading-bar__progress"></div></div><div class="back2top" id="back2top"><span class="back2top__icon"><i class="fas fa-rocket"></i></span></div></div><div class="search-mask"></div><div class="search-popup"><span class="search-close"></span><div class="search-input"><input placeholder="搜索文章(支持多关键词,请用空格分隔)"></div><div class="search-results"></div></div>
37<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
37<script src="https://cdn.jsdelivr.net/npm/[email protected]/velocity.min.js"></script>
37<script src="https://cdn.jsdelivr.net/npm/[email protected]/velocity.ui.min.js"></script>
37<script src="https://cdn.jsdelivr.net/npm/ribbon.js@latest/dist/ribbon.min.js" size="120" alpha="0.6" zIndex="-1"></script>
37<script src="https://cdn.jsdelivr.net/npm/[email protected]/lazyload.min.js"></script>
37<script>function initSearch() {
38  var isXML = true;
39  var search_path = 'search.xml';
40
41  if (!search_path) {
42    search_path = 'search.xml';
43  } else if (/json$/i.test(search_path)) {
44    isXML = false;
45  }
46
47  var path = '/' + search_path;
48  $.ajax({
49    url: path,
50    dataType: isXML ? 'xml' : 'json',
51    async: true,
52    success: function (res) {
53      var datas = isXML ? $('entry', res).map(function () {
54        // 将 XML 转为 JSON
55        return {
56          title: $('title', this).text(),
57          content: $('content', this).text(),
58          url: $('url', this).text()
59        };
60      }).get() : res;
61      var $input = $('.search-input input');
62      var $result = $('.search-results');
63      // 搜索对象(标题、内容)的权重,影响显示顺序
64      var WEIGHT = { title: 100, content: 1 };
65      var searchPost = function () {
66        var searchText = $input.val().toLowerCase().trim();
67        // 根据空白字符分隔关键字
68        var keywords = searchText.split(/[\s]+/);
69        // 搜索结果
70        var matchPosts = [];
71
72        // 有多个关键字时,将原文字整个保存下来
73        if (keywords.length > 1) {
74          keywords.push(searchText);
75        }
76        // 防止未输入字符时搜索
77        if (searchText.length > 0) {
78          datas.forEach(function (data) {
79            var isMatch  = false;
80            // 没有标题的文章使用预设的 i18n 变量代替
81            var title = (data.title && data.title.trim()) || '[ 文章无标题 ]';
82            var titleLower = title && title.toLowerCase();
83            // 删除 HTML 标签 和 所有空白字符
84            var content = data.content && data.content.replace(/<[^>]+>/g, '');
85            var contentLower = content && content.toLowerCase();
86            // 删除重复的 /
87            var postURL = data.url && decodeURI(data.url).replace(/\/{2,}/g, '/');
88            // 标题中匹配到的关键词
89            var titleHitSlice = [];
90            // 内容中匹配到的关键词
91            var contentHitSlice = [];
92
93            keywords.forEach(function (keyword) {
94              /**
95              * 获取匹配的关键词的索引
96              * @param {String} keyword 要匹配的关键字
97              * @param {String} text 原文字
98              * @param {Boolean} caseSensitive 是否区分大小写
99              * @param {Number} weight 匹配对象的权重。权重大的优先显示
100              * @return {Array}
101              */
102              function getIndexByword (word, text, caseSensitive, weight) {
103                if (!word || !text) {
104                  return [];
105                };
106
107                var startIndex = 0; // 每次匹配的开始索引
108                var index = -1;     // 匹配到的索引值
109                var result = [];    // 匹配结果
110
111                if (!caseSensitive) {
112                  word = word.toLowerCase();
113                  text = text.toLowerCase();
114                }
115
116                while((index = text.indexOf(word, startIndex)) !== -1) {
117                  var hasMatch = false;
118                  // 索引位置相同的关键词,保留长度较长的
119                  titleHitSlice.forEach(function (hit) {
120                    if (hit.index === index && hit.word.length < word.length) {
121                      hit.word = word;
122                      hasMatch = true;
123                    }
124                  });
125                  startIndex = index + word.length;
126                  !hasMatch && result.push({ index: index, word: word, weight: weight });
127                }
128                return result;
129              }
130              titleHitSlice = titleHitSlice.concat(getIndexByword(keyword, titleLower, false, WEIGHT.title));
131              contentHitSlice = contentHitSlice.concat(getIndexByword(keyword, contentLower, false, WEIGHT.content));
132            });
133
134            var hitTitle = titleHitSlice.length;
135            var hitContent = contentHitSlice.length;
136
137            if (hitTitle > 0 || hitContent > 0) {
138              isMatch = true;
139            }
140            if (isMatch) {
141              ;[titleHitSlice, contentHitSlice].forEach(function (hit) {
142                // 按照匹配文字的索引的递增顺序排序
143                hit.sort(function (left, right) {
144                  return left.index - right.index;
145                });
146              });
147              /**
148              * 给文本中匹配到的关键词添加标记,从而进行高亮显示
149              * @param {String} text 原文本
150              * @param {Array} hitSlice 匹配项的索引信息
151              * @param {Number} start 开始索引
152              * @param {Number} end 结束索引
153              * @return {String}
154              */
155              function highlightKeyword (text, hitSlice, start, end) {
156                if (!text || !hitSlice || !hitSlice.length) {
157                  return;
158                }
159
160                var result = '';
161                var startIndex = start;
162                var endIndex = end;
163                hitSlice.forEach(function (hit) {
164                  if (hit.index < startIndex) {
165                    return;
166                  }
167
168                  var hitWordEnd = hit.index + hit.word.length;
169                  result += text.slice(startIndex, hit.index);
170                  result += '<b>' + text.slice(hit.index, hitWordEnd) + '</b>';
171                  startIndex = hitWordEnd;
172                });
173                result += text.slice(startIndex, endIndex);
174                return result;
175              }
176
177              var postData = {};
178              // 文章总的搜索权重
179              var postWeight = titleHitSlice.length * WEIGHT.title + contentHitSlice.length * WEIGHT.content;
180              // 标记匹配关键词后的标题
181              var postTitle = highlightKeyword(title, titleHitSlice, 0, title.length) || title;
182              // 标记匹配关键词后的内容
183              var postContent;
184              // 显示内容的长度
185              var SHOW_WORD_LENGTH = 200;
186              // 命中关键词前的字符显示长度
187              var SHOW_WORD_FRONT_LENGTH = 20;
188              var SHOW_WORD_END_LENGTH = SHOW_WORD_LENGTH - SHOW_WORD_FRONT_LENGTH;
189
190              // 截取匹配的第一个字符,前后共 200 个字符来显示
191              if (contentHitSlice.length > 0) {
192                var firstIndex = contentHitSlice[0].index;
193                var start = firstIndex > SHOW_WORD_FRONT_LENGTH ? firstIndex - SHOW_WORD_FRONT_LENGTH : 0;
194                var end = firstIndex + SHOW_WORD_END_LENGTH;
195                postContent = highlightKeyword(content, contentHitSlice, start, end);
196              } else { // 未匹配到内容,直接截取前 200 个字符来显示
197                postContent = content.slice(0, SHOW_WORD_LENGTH);
198              }
199              postData.title = postTitle;
200              postData.content = postContent;
201              postData.url = postURL;
202              postData.weight = postWeight;
203              matchPosts.push(postData);
204            }
205          });
206        }
207
208        var resultInnerHtml = '';
209        if (matchPosts.length) {
210          // 按权重递增的顺序排序,使权重大的优先显示
211          matchPosts.sort(function (left, right) {
212            return right.weight - left.weight;
213          });
214          resultInnerHtml += '<ul>';
215          matchPosts.forEach(function (post) {
216            resultInnerHtml += '<li><a class="search-results-title" href="' + post.url + '">';
217            resultInnerHtml += post.title;
218            resultInnerHtml += '</a><div class="search-results-content">';
219            resultInnerHtml += post.content;
220            resultInnerHtml += '</div></li>';
221          });
222          resultInnerHtml += '</ul>';
223        } else {
224          resultInnerHtml += '<div class="search-results-none"><i class="far fa-meh"></i></div>';
225        }
226        $result.html(resultInnerHtml);
227      };
228      $input.on('input', searchPost);
229      $input.on('keyup', function (e) {
230        if (e.keyCode === Stun.utils.codeToKeyCode('Enter')) {
231          searchPost();
232        }
233      });
234    }
235  });
236}
237
238function closeSearch () {
239  $('body').css({ overflow: 'auto' });
240  $('.search-popup').css({ display: 'none' });
241  $('.search-mask').css({ display: 'none' });
242}
243
244window.addEventListener('DOMContentLoaded', function () {
245  Stun.utils.pjaxReloadLocalSearch = function () {
246    $('.header-nav-search').on('click', function (e) {
247      e.stopPropagation();
248      $('body').css('overflow', 'hidden');
249      $('.search-popup')
250        .velocity('stop')
251        .velocity('transition.expandIn', {
252          duration: 300,
253          complete: function () {
254            $('.search-popup input').focus();
255          }
256        });
257      $('.search-mask')
258        .velocity('stop')
259        .velocity('transition.fadeIn', {
260          duration: 300
261        });
262
263      initSearch();
264    });
265    $('.search-mask, .search-close').on('click', function () {
266      closeSearch();
267    });
268    $(document).on('keydown', function (e) {
269      // Escape <=> 27
270      if (e.keyCode === Stun.utils.codeToKeyCode('Escape')) {
271        closeSearch();
272      }
273    });
274  };
275
276  Stun.utils.pjaxReloadLocalSearch();
277}, false);
278
279function safeOpenUrl(url) {
280  var newTab = window.open();
281  newTab.opener = null;
282  newTab.location = url;
283}
284
285function extSearch(engine) {
286  var engines = {
287    google: 'https://www.google.com/search?q=',
288    bing: 'https://cn.bing.com/search?q=',
289    baidu: 'https://www.baidu.com/s?ie=UTF-8&wd=',
290  };
291  var host = window.location.host;
292  var query = $('.search-input input').val().toLowerCase().trim();
293  var uri = engines[engine] + query + ' site:' + host;
294
295  if (query) {
296    safeOpenUrl(uri);
297  } else {
298    Stun.utils.popAlert('warning', '请输入字符');
299  }
300}
301
302var assistSearchList = window.CONFIG.assistSearch;
303
304if (Array.isArray(assistSearchList)) {
305  assistSearchList.forEach(function (name) {
306    document.querySelector('.search-btns-item--' + name).addEventListener('click', function () {
307      extSearch(name);
308    }, false);
309  });
310}</script>
310<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" rel="stylesheet" type="text/css"><link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/copy-tex.css" rel="stylesheet" type="text/css">
310<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/copy-tex.min.js"></script>
310<script src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script>
310<script src="/js/utils.js?v=2.6.2"></script>
310<script src="/js/stun-boot.js?v=2.6.2"></script>
310<script src="/js/scroll.js?v=2.6.2"></script>
310<script src="/js/header.js?v=2.6.2"></script>
310<script src="/js/sidebar.js?v=2.6.2"></script>
310<script type="application/json" src="/search.xml"></script>
310</body></html>

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