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">…</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.