1<!doctype html> 2<html lang="zh" class="no-js"> 3 <head> 4 5<meta charset="utf-8"> 6 7 8<!-- begin _includes/seo.html --><title>å ³äº - æè²ææ¯èªçå°</title> 9<meta name="description" content="ä¿¡æ¯ææ¯æè² æè²ç§å¦ç ç©¶ å¦ä¹ ç§å¦ ææºåç±æè¶£ç90åæ½®æ±äººï¼ACGerãç§å¹»è¿·ä¸æï¼è¯·å¤å¤å ³ç §ï¼"> 10 11 12 <meta name="author" content="åå®¢æ©æ"> 13 14 15 16<meta property="og:type" content="website"> 17<meta property="og:locale" content="zh_CN"> 18<meta property="og:site_name" content="æè²ææ¯èªçå°"> 19<meta property="og:title" content="å ³äº"> 20<meta property="og:url" content="https://616161.best/about/"> 21 22 23 <meta property="og:description" content="ä¿¡æ¯ææ¯æè² æè²ç§å¦ç ç©¶ å¦ä¹ ç§å¦ ææºåç±æè¶£ç90åæ½®æ±äººï¼ACGerãç§å¹»è¿·ä¸æï¼è¯·å¤å¤å ³ç §ï¼"> 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38<link rel="canonical" href="https://616161.best/about/"> 39 40 41 42 43 44 45 46 47 48 49 50 51<!-- end _includes/seo.html --> 52 53 54 55 <link href="/feed.xml" type="application/atom+xml" rel="alternate" title="æè²ææ¯èªçå° Feed"> 56<meta name="viewport" content="width=device-width, initial-scale=1.0"> 57
58<script> 59 document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; 60 window.enable_copy_code_button = true; 61</script>
61 62 63<!-- For all browsers --> 64<link rel="stylesheet" href="/assets/css/main.css"> 65<link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 66<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css"></noscript> 67 68 69 70 <!-- start custom head snippets -->
71<script data-ad-client="ca-pub-1891247161702462" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
vendor: 2 bytes, line 71
71
72<script async defer data-website-id="ea7037f0-e9b9-46d6-b6bc-62b0bad032da" src="https://umami-huangenguo.vercel.app/umami.js"></script>
vendor: 2 bytes, line 72
72
73<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
vendor: 2 bytes, line 73
73
74<script src="/assets/js/runtime.js" type="text/javascript"></script>
74 75<!-- Twikoo è¯è®ºç³»ç» -->
76<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/twikoo.all.min.js"></script>
76 77<!-- Share - 社交å享åè½ï¼å·²ç¦ç¨ï¼ --> 78<!--
78<script src="https://cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/js/social-share.min.js"></script>
78 --> 79<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/css/share.min.css" /> --> 80<!-- å¤é¾æ°çªå£æå¼åè½ - èªå¨è¯å«ææå¤é¨é¾æ¥ -->
81<script> 82document.addEventListener('DOMContentLoaded', function() { 83 var links = document.querySelectorAll('a[href^="http://"], a[href^="https://"]'); 84 links.forEach(function(link) { 85 if (!link.href.includes('huangenguo.github.io')) { 86 link.setAttribute('target', '_blank'); 87 link.setAttribute('rel', 'noopener noreferrer'); 88 } 89 }); 90}); 91</script>
91 92<!-- insert favicons. use https://realfavicongenerator.net/ --> 93<link rel="apple-touch-icon" sizes="120x120" href="/assets/images/apple-touch-icon.png"> 94<link rel="icon" type="image/png" sizes="32x32" href="/assets/images/favicon-32x32.png"> 95<link rel="icon" type="image/png" sizes="16x16" href="/assets/images/favicon-16x16.png"> 96<link rel="manifest" href="/assets/images/site.webmanifest"> 97<link rel="mask-icon" href="/assets/images/safari-pinned-tab.svg" color="#5bbad5"> 98<link rel="shortcut icon" href="/assets/images/favicon.ico"> 99<meta name="theme-color" content="#ffffff"> 100<!-- end custom head snippets --> 101 </head> 102 103 <body class="layout--single"> 104 105<nav class="skip-links" aria-label="Skip links"> 106 <ul> 107 <li><a href="#site-nav" class="screen-reader-shortcut">转å°ä¸»å¯¼èªæ </a></li> 108 <li><a href="#main" class="screen-reader-shortcut">转å°å 容</a></li> 109 <li><a href="#footer" class="screen-reader-shortcut">转å°åºé¨</a></li> 110 </ul> 111</nav> 112 113 114 115 116<div class="masthead"> 117 <div class="masthead__inner-wrap"> 118 <div class="masthead__menu"> 119 <nav id="site-nav" class="greedy-nav" aria-label="Primary navigation"> 120 121 <a class="site-title" href="/"> 122 æè²ææ¯èªçå° 123 <span class="site-subtitle">黿©æçå°ç«</span> 124 </a> 125 <ul class="visible-links"><li class="masthead__menu-item"> 126 <a 127 href="/posts/" 128 129 130 >Posts</a> 131 </li><li class="masthead__menu-item"> 132 <a 133 href="/categories/" 134 135 136 >Categories</a> 137 </li><li class="masthead__menu-item"> 138 <a 139 href="/tags/" 140 141 142 >Tags</a> 143 </li><li class="masthead__menu-item"> 144 <a 145 href="/about/" 146 147 148 >About</a> 149 </li></ul> 150 151 <button class="search__toggle" type="button"> 152 <span class="visually-hidden">忢æç´¢</span> 153 <i class="fas fa-search"></i> 154 </button> 155 156 <button class="greedy-nav__toggle hidden" type="button"> 157 <span class="visually-hidden">忢èå</span> 158 <div class="navicon"></div> 159 </button> 160 <ul class="hidden-links hidden"></ul> 161 </nav> 162 </div> 163 </div> 164</div> 165 166 167 <div class="initial-content"> 168 169 170 171 172 173 174 175 176<div id="main" role="main"> 177 178 179 <div class="sidebar sticky"> 180 181 182 183 184<div itemscope itemtype="https://schema.org/Person" class="h-card"> 185 186 187 <div class="author__avatar"> 188 <a href="https://616161.best/"> 189 <img src="/assets/images/bio-photo.png" alt="åå®¢æ©æ" itemprop="image" class="u-photo"> 190 </a> 191 </div> 192 193 194 <div class="author__content"> 195 <h3 class="author__name p-name" itemprop="name"> 196 <a class="u-url" rel="me" href="https://616161.best/" itemprop="url">åå®¢æ©æ</a> 197 </h3> 198 199 <div class="author__bio p-note" itemprop="description"> 200 <p>ç§åæè²åè¡è </p> 201 202 </div> 203 204 </div> 205 206 <div class="author__urls-wrapper"> 207 <button class="btn btn--inverse">å ³æ³¨</button> 208 <ul class="author__urls social-icons"> 209 210 <li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place"> 211 <i class="fas fa-fw fa-location-dot" aria-hidden="true"></i> <span itemprop="name" class="p-locality">Guangdong,China</span> 212 </li> 213 214 215 216 217 218 <li><a href="https://123.616161.best/img/istlab-wxQRcode.png" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">ä¿¡æ¯ç§æå®éªå®¤</span></a></li> 219 220 221 222 <li><a href="https://space.bilibili.com/32828583" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fas fa-fw fa-video" aria-hidden="true"></i><span class="label">Bilibili</span></a></li> 223 224 225 226 <li><a href="https://123.616161.best/" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">EdTech æè²ææ¯å¯¼èª</span></a></li> 227 228 229 230 <li><a href="https://cs.616161.best/" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fas fa-fw fa-link" aria-hidden="true"></i><span class="label">æ½®æ±ä¿¡æ¯ç½</span></a></li> 231 232 233 234 <li><a href="https://github.com/huangenguo" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">GitHub</span></a></li> 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 <!-- 288 <li> 289 <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer me"> 290 <i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link 291 </a> 292 </li> 293--> 294 </ul> 295 </div> 296</div> 297 298 299 300 </div> 301 302 303 304 <article class="page h-entry" itemscope itemtype="https://schema.org/CreativeWork"> 305 <meta itemprop="headline" content="å ³äº"> 306 307 308 309 310 <div class="page__inner-wrap"> 311 312 <header> 313 <h1 id="page-title" class="page__title p-name" itemprop="headline"> 314 <a href="https://616161.best/about/" itemprop="url">å ³äº 315</a> 316 </h1> 317 318 319 320 321 </header> 322 323 324 <section class="page__content e-content" itemprop="text"> 325 326 <aside class="sidebar__right "> 327 <nav class="toc" aria-label="Table of contents"> 328 <header><h4 class="nav__title"><i class="fas fa-file-alt"></i> ç®å½</h4></header> 329 <ul class="toc__menu"><li><a href="#-ä½ å¥½ææ¯æ©æ">ð ä½ å¥½ï¼ææ¯æ©æ</a></li><li><a href="#-æå¨åä»ä¹">ð¯ æå¨åä»ä¹</a><ul><li><a href="#æå¦å®è·µ">æå¦å®è·µ</a></li><li><a href="#课ç¨å¼å">课ç¨å¼å</a></li><li><a href="#æç æ¢ç´¢">æç æ¢ç´¢</a></li></ul></li><li><a href="#-å ³äºè¿ä¸ªå客">ð å ³äºè¿ä¸ªå客</a><ul><li><a href="#å 容æ¹å">å 容æ¹å</a></li><li><a href="#éåè°ç">éåè°ç</a></li><li><a href="#ç¬ç¹ä»·å¼">ç¬ç¹ä»·å¼</a></li></ul></li><li><a href="#-æçå ¶ä»é¡¹ç®">ð æçå ¶ä»é¡¹ç®</a><ul><li><a href="#edtech-æè²ææ¯å¯¼èª">EdTech æè²ææ¯å¯¼èª</a></li><li><a href="#æ½®æ±ä¿¡æ¯ç½">æ½®æ±ä¿¡æ¯ç½</a></li></ul></li><li><a href="#-ç¨ç±åçµ">ð¡ ç¨ç±åçµ</a><ul><li><a href="#为ä»ä¹åæç¨ç±åçµ">为ä»ä¹åæç¨ç±åçµï¼</a></li><li><a href="#ä½ çæ¯ææ¹å¼">ä½ çæ¯ææ¹å¼</a></li></ul></li><li><a href="#-ä¸æäº¤æµ">ð¬ ä¸æäº¤æµ</a></li><li><a href="#-å°ç«åç¨">ð å°ç«åç¨</a><ul><li><a href="#2025å¹´è³ä»">2025å¹´è³ä»</a></li><li><a href="#2021å¹´">2021å¹´</a></li><li><a href="#2017å¹´">2017å¹´</a></li><li><a href="#åè½æ´æ°">åè½æ´æ°</a></li></ul></li></ul> 330 </nav> 331 </aside> 332 333 <h2 id="-ä½ å¥½ææ¯æ©æ">ð ä½ å¥½ï¼ææ¯æ©æ</h2> 334 335<p><a href="https://github.com/huangenguo">@huangenguo</a></p> 336 337<p>ä¸åææ ¹ä¸çº¿ç<strong>å客æå¸</strong>ï¼åæ¶ä¹æ¯ç§åæè²çå®è·µè åæ¢ç´¢è ã</p> 338 339<p>ä½ä¸ºä¸åæ½®æ±äººï¼ã<strong>ç±æ¼æä¼èµ¢</strong>ãçç²¾ç¥æ·±æ·±çå°å¨æçæè²ç念ä¸ãæç¸ä¿¡æ¢é¯æ¢è¯ãå¡å®è¿åçæåº¦ï¼ä¸ä» è½æç»å©åä»¬ææ¯ç¥è¯ï¼æ´è½å¹å »ä»ä»¬é¢å¯¹ææçåæ°åè§£å³é®é¢çæºæ §ã</p> 340 341<p>ç®å䏿³¨äº <strong>3~8年级</strong> çå客æè²ï¼å¸¦é¢å©å们éè¿å¼æºç¡¬ä»¶ãæ¿å åå²ã3D建模ç项ç®ï¼å¨å®è·µä¸å¦ä¹ ç¼ç¨æç»´ãå¹å »åæ°è½åãæç¸ä¿¡ãåä¸å¦ãçåéï¼ä¹ç¸ä¿¡ææ¯æè²åºè¯¥æ¯<strong>ææºãåç±ãæè¶£</strong>çã</p> 342 343<p>é¤äºè¯¾å æå¦ï¼æä¹å ³æ³¨AIéè¯æè²ãå¦ä¹ ç§å¦ï¼å¹¶å¨è¿éè®°å½æçæå¦å®è·µãå·¥å ·æ¢ç´¢åæèææã</p> 344 345<h2 id="-æå¨åä»ä¹">ð¯ æå¨åä»ä¹</h2> 346 347<h3 id="æå¦å®è·µ">æå¦å®è·µ</h3> 348 349<p>é¢å <strong>3~8年级</strong> å¦çå¼å±ä»¥ä¸è¯¾ç¨ï¼</p> 350 351<ul> 352 <li><strong>å客æè²</strong> ââ 弿ºç¡¬ä»¶ç¼ç¨ãæ¿å åå²è®¾è®¡ã3D建模æå°</li> 353 <li><strong>人工æºè½éè¯</strong> ââ AIåºç¡è®¤ç¥ãå¹³å°å®è·µã伦çæè</li> 354 <li><strong>ä¿¡æ¯ç§æ</strong> ââ ç¼ç¨æç»´ãæ°åç´ å »ã项ç®å¼å¦ä¹ </li> 355</ul> 356 357<h3 id="课ç¨å¼å">课ç¨å¼å</h3> 358 359<ul> 360 <li>ð <a href="/tags/#ç±³æé½/">MixGo Mini ç³»åæç¨</a> ââ ä»å ¥é¨å°è¿é¶ç弿ºç¡¬ä»¶æç¨</li> 361 <li>ð¤ <a href="/tags/#人工æºè½éè¯æè²/">AIéè¯æè²å®è·µ</a> ââ æ·±æAIå¹³å°è¯æµä¸è¯¾ç¨è®¾è®¡</li> 362 <li>ð ï¸ <a href="/tags/#å客æè²/">项ç®å¼å¦ä¹ (PBL)</a> ââ è·¨å¦ç§èåçæå¦æ¡ä¾</li> 363</ul> 364 365<h3 id="æç æ¢ç´¢">æç æ¢ç´¢</h3> 366 367<ul> 368 <li>æè²ç§å¦ç ç©¶æ¹æ³ä¸æå¦åæ</li> 369 <li>å¦ä¹ ç§å¦å¨è¯¾å ä¸çåºç¨</li> 370 <li>æè²ææ¯çåæ°å®è·µ</li> 371</ul> 372 373<hr /> 374 375<h2 id="-å ³äºè¿ä¸ªå客">ð å ³äºè¿ä¸ªå客</h2> 376 377<p><strong>ãæè²ææ¯èªçå°ã</strong> æ¯æç个人å客ï¼ä¹æ¯ä¸çº¿æå¸çæå¦å®è·µè®°å½ä¸æèå享空é´ã</p> 378 379<h3 id="å 容æ¹å">å 容æ¹å</h3> 380 381<table> 382 <thead> 383 <tr> 384 <th>æ ç®</th> 385 <th>å 容说æ</th> 386 </tr> 387 </thead> 388 <tbody> 389 <tr> 390 <td>ð§ <strong>å客æç¨</strong></td> 391 <td>MixGo MiniãESP32ãArduinoç弿ºç¡¬ä»¶æç¨</td> 392 </tr> 393 <tr> 394 <td>ð¤ <strong>AIæè²</strong></td> 395 <td>AIéè¯æè²å¹³å°è¯æµã课ç¨è®¾è®¡ãæå¦å®è·µ</td> 396 </tr> 397 <tr> 398 <td>ð <strong>æå¦å®è·µ</strong></td> 399 <td>项ç®å¼å¦ä¹ 设计ãè¯¾å æ¡ä¾ãæå¦åæ</td> 400 </tr> 401 <tr> 402 <td>ð ï¸ <strong>å·¥å ·å享</strong></td> 403 <td>æå¦å·¥å ·ãæçå·¥å ·ãå®ç¨èµæºæ¨è</td> 404 </tr> 405 <tr> 406 <td>ð <strong>é 读æè</strong></td> 407 <td>
407读书ç¬è®°ãå¦ä¹ æ¹æ³ãå¿ç建设ãçæ´»ææ</td> 408 </tr> 409 </tbody> 410</table> 411 412<h3 id="éåè°ç">éåè°ç</h3> 413 414<ul> 415 <li>ð¨âð« <strong>åè¡æå¸</strong> ââ ä¿¡æ¯ææ¯ãå客æè²é¢åçæè²å·¥ä½è </li> 416 <li>ð <strong>æè²ææ¯ç±å¥½è </strong> ââ 对æè²åæ°æå ´è¶£çå¦ä¹ è </li> 417 <li>ð¨âð©âð§ <strong>å®¶é¿åå¦ç</strong> ââ 对AIæè²ãç¼ç¨æè²æå ´è¶£çå®¶åº</li> 418 <li>ð <strong>ç»èº«å¦ä¹ è </strong> ââ çç±å¦ä¹ ãä¹äºæ¢ç´¢çæå</li> 419</ul> 420 421<h3 id="ç¬ç¹ä»·å¼">ç¬ç¹ä»·å¼</h3> 422 423<ul> 424 <li><strong>ä¸çº¿è§è§</strong> ââ æ¥èªçå®è¯¾å çæå¦å®è·µï¼é纯ç论</li> 425 <li><strong>ä½ç³»åå 容</strong> ââ ç³»åæç¨å½¢æå®æ´å¦ä¹ è·¯å¾</li> 426 <li><strong>å®ç¨å¯¼å</strong> ââ å¯ç´æ¥åºç¨äºæå¦çæ¡ä¾åå·¥å ·</li> 427 <li><strong>æç»æ´æ°</strong> ââ ä»2021å¹´è³ä»ä¿ææ´»è·æ´æ°</li> 428</ul> 429 430<hr /> 431 432<h2 id="-æçå ¶ä»é¡¹ç®">ð æçå ¶ä»é¡¹ç®</h2> 433 434<p>é¤äºè¿ä¸ªåå®¢ï¼æè¿è¿è¥ç以ä¸ä¸¤ä¸ªé¡¹ç®ï¼</p> 435 436<h3 id="edtech-æè²ææ¯å¯¼èª">EdTech æè²ææ¯å¯¼èª</h3> 437 438<p>ð <a href="https://123.616161.best/">https://123.616161.best/</a></p> 439 440<p>ä¸ä¸ªä¸ºæè²å·¥ä½è åå¦ä¹ è æé ç<strong>èµæºå¯¼èªç«</strong>ï¼æ±èç¼ç¨æè²ãAIå¦ä¹ ãæå¦å·¥å ·ãå¨çº¿è¯¾ç¨çåç±»æè²èµæºï¼å¸®å©æå¸å¿«éæ¾å°æéçå·¥å ·åèµæºï¼æåæå¦æçã</p> 441 442<h3 id="æ½®æ±ä¿¡æ¯ç½">æ½®æ±ä¿¡æ¯ç½</h3> 443 444<p>ð <a href="https://cs.616161.best/">https://cs.616161.best/</a></p> 445 446<p>æå¡æ½®æ±ä¹¡äº²ç<strong>综åä¿¡æ¯æå¡å¹³å°</strong>ï¼æ±éæ½®æ±å°åºççæ´»ãæåãåä¸çå类信æ¯ï¼è¿æ¥å®¶ä¹¡ä¸å¨å¤æ¸¸åï¼ä¼ æ¿æ½®æ±æåã</p> 447 448<hr /> 449 450<h2 id="-ç¨ç±åçµ">ð¡ ç¨ç±åçµ</h2> 451 452<p>è¿ä¸ªåå®¢ä» <strong>2021å¹´</strong> å建è³ä»ï¼ä¸ç´æ¯æè¯¾ä½æ¶é´çãèªçå°ãã</p> 453 454<p>å¨è¿éï¼æ<strong>å è´¹å享</strong>ååçæç¨ã课ç¨è®¾è®¡åæå¦æèââæ²¡æä»è´¹å¢ï¼æ²¡æå¹¿åå¹²æ°ï¼åªææå¯¹æè²ææ¯ççç±åå®è·µã</p> 455 456<h3 id="为ä»ä¹åæç¨ç±åçµ">为ä»ä¹åæç¨ç±åçµï¼</h3> 457 458<ul> 459 <li>ð <strong>è®°å½æä»·å¼</strong> ââ åä½å¸®å©ææ´çæè·¯ãåææå¦</li> 460 <li>ð¤ <strong>交æµä¿æé¿</strong> ââ ä¸åè¡äº¤æµï¼å¨å享ä¸è·å¾åé¦åæé¿</li> 461 <li>ð¯ <strong>ä¿æç¬ç«æ§</strong> ââ ä¸ååä¸å©çå½±åå 容ç«åºï¼ä¿æçå®</li> 462</ul> 463 464<h3 id="ä½ çæ¯ææ¹å¼">ä½ çæ¯ææ¹å¼</h3> 465 466<ul> 467 <li>ð¬ <strong>çè¨äº¤æµ</strong> ââ å¨æç« åºé¨çä¸ä½ çæ³æ³å建议</li> 468 <li>ð <strong>åäº«ä¼ æ</strong> ââ è§å¾æç¨å°±å享ç»éè¦çåäºææå</li> 469 <li>ð¤ <strong>交æ¢åé¾</strong> ââ æåç±»æè²åå®¢ï¼æ¬¢è¿<a href="/blog/friends/">交æ¢åæ 龿¥</a></li> 470</ul> 471 472<p>æè°¢æ¯ä¸ä½è¯»è çéªä¼´ï¼ä½ 们çåå¨è®©è¿ä¸ªãèªçå°ãæ´ææä¹ï¼</p> 473 474<hr /> 475 476<h2 id="-ä¸æäº¤æµ">ð¬ ä¸æäº¤æµ</h2> 477 478<p>欢è¿éè¿ä»¥ä¸æ¹å¼ä¸æäºå¨äº¤æµï¼</p> 479 480<ul> 481 <li> 482 <p>ð± <strong>å¾®ä¿¡å ¬ä¼å·</strong>ï¼ä¿¡æ¯ç§æå®éªå®¤ ââ å ³æ³¨è·åæ´å¤æå¦èµæºå卿</p> 483 484 <p><img src="https://123.616161.best/img/istlab-wxQRcode.png" alt="å¾®ä¿¡å ¬ä¼å·äºç»´ç " /></p> 485 </li> 486 <li>ð¬ <strong>æç« è¯è®º</strong> ââ æä»»ä½æ³æ³æé®é¢ï¼æ¬¢è¿å¨ä»»ææç« åºé¨çè¨</li> 487 <li>ð <strong>GitHub</strong>ï¼<a href="https://github.com/huangenguo">@huangenguo</a></li> 488</ul> 489 490<p>æå¾ ä¸ä½ ç交æµï¼</p> 491 492<hr /> 493 494<h2 id="-å°ç«åç¨">ð å°ç«åç¨</h2> 495 496<h3 id="2025å¹´è³ä»">2025å¹´è³ä»</h3> 497 498<ul> 499 <li>ð æç»æ´æ°ä¸â¦ å·²åå¸40+ç¯æç« </li> 500</ul> 501 502<h3 id="2021å¹´">2021å¹´</h3> 503 504<ul> 505 <li>ð åå¸ç¬¬ä¸ç¯åæ (2021.11.17)</li> 506 <li>ð ä½¿ç¨ <a href="https://pages.github.com/">GitHub Pages</a>ã<a href="https://jekyllrb.com/">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/">Minimal Mistakes</a> 宿å°ç«åºç¡æ¡æ¶æå»ºï¼æ¡æ¶çéæ©çµææºäº <a href="https://yangzhiping.com/">é³å¿å¹³çç½å¿</a> (2021.10.20)</li> 507</ul> 508 509<h3 id="2017å¹´">2017å¹´</h3> 510 511<ul> 512 <li>ð 馿¬¡å°è¯ä½¿ç¨ <a href="https://pages.github.com/">GitHub Pages</a>ã<a href="https://hexo.io/zh-cn/">Hexo</a> æå»ºéæå客ï¼å·²åæ¢ç»´æ¤ (2017.11.07)</li> 513</ul> 514 515<h3 id="åè½æ´æ°">åè½æ´æ°</h3> 516 517<p>å¦éäºè§£ç«ç¹ç详ç»åè½æ´æ°åå²ï¼è¯·æ¥çï¼<a href="/blog/site-changelog/">ç«ç¹åè½æ´æ°æ¥å¿</a>ã</p> 518 519<hr /> 520 521<blockquote> 522 <p>ð± <strong>æç»æ´æ°ä¸ï¼æ¬¢è¿å¸¸æ¥ååï¼</strong></p> 523</blockquote> 524 525 526 </section> 527 528 <footer class="page__meta"> 529 530 531 532 533 534 535 536 537 538 539 540 541 </footer> 542 543 544 545 546 547 548 </div> 549 550 551 </article> 552 553 554 555</div> 556 557 </div> 558 559 560 <div class="search-content"> 561 562<div class="search-content__inner-wrap"><form class="search-content__form" onkeydown="return event.key != 'Enter';" role="search"> 563 <label class="sr-only" for="search"> 564 è¾å ¥æ¨è¦æç´¢çå ³é®è¯... 565 </label> 566 <input type="search" id="search" class="search-input" tabindex="-1" placeholder="è¾å ¥æ¨è¦æç´¢çå ³é®è¯..." /> 567 </form> 568 <div id="results" class="results"></div></div> 569 570 </div> 571 572 573 <div id="footer" class="page__footer"> 574 <footer> 575 <!-- èªå®ä¹é¡µèå 容 --> 576 577<!-- çé¨æç« æè¡ --> 578<div class="popular-posts"> 579 <h3 class="popular-posts__title"> 580 <i class="fas fa-fire" aria-hidden="true"></i> çé¨æç« 581 </h3> 582 <ul class="popular-posts__list" id="popular-posts-list"> 583 <li class="popular-posts__loading">å è½½ä¸...</li> 584 </ul> 585</div> 586 587<style> 588.popular-posts { 589 margin: 0.75rem 0; 590 padding: 0.75rem; 591 background: #f2f3f3; 592 border-radius: 4px; 593} 594 595.popular-posts__title { 596 margin: 0 0 0.4rem 0; 597 font-size: 0.8rem; 598 font-weight: 600; 599 color: #3d4144; 600 text-transform: uppercase; 601 letter-spacing: 0.5px; 602} 603 604.popular-posts__title i { 605 color: #e74c3c; 606 margin-right: 0.4rem; 607 font-size: 0.8rem; 608} 609 610.popular-posts__list { 611 list-style: none; 612 margin: 0; 613 padding: 0; 614 display: flex; 615 flex-wrap: wrap; 616 gap: 0.3rem 1rem; 617} 618 619.popular-posts__loading, 620.popular-posts__empty { 621 color: #9ba1a6; 622 font-size: 0.8rem; 623 font-style: italic; 624} 625 626.popular-posts__item { 627 margin: 0; 628 flex: 1; 629 min-width: 200px; 630 max-width: calc(50% - 0.75rem); 631} 632 633.popular-posts__link { 634 display: flex; 635 align-items: center; 636 text-decoration: none; 637 color: inherit; 638 transition: color 0.2s ease; 639 padding: 0.15rem 0; 640} 641 642.popular-posts__link:hover {
643 color: #2a76dd; 644} 645 646.popular-posts__link:hover .popular-posts__name { 647 color: #2a76dd; 648} 649 650.popular-posts__rank { 651 display: inline-flex; 652 align-items: center; 653 justify-content: center; 654 width: 18px; 655 height: 18px; 656 background: #f2f3f3; 657 color: #7a8288; 658 border-radius: 3px; 659 font-size: 0.7rem; 660 font-weight: 600; 661 margin-right: 0.5rem; 662 flex-shrink: 0; 663} 664 665.popular-posts__item:nth-child(1) .popular-posts__rank { 666 background: #e74c3c; 667 color: white; 668} 669 670.popular-posts__item:nth-child(2) .popular-posts__rank { 671 background: #f39c12; 672 color: white; 673} 674 675.popular-posts__item:nth-child(3) .popular-posts__rank { 676 background: #f1c40f; 677 color: #3d4144; 678} 679 680.popular-posts__content { 681 display: flex; 682 flex-direction: column; 683 flex: 1; 684 min-width: 0; 685} 686 687.popular-posts__name { 688 font-weight: 400; 689 color: #3d4144; 690 line-height: 1.3; 691 overflow: hidden; 692 text-overflow: ellipsis; 693 white-space: nowrap; 694 font-size: 0.85rem; 695 transition: color 0.2s ease; 696} 697 698.popular-posts__meta { 699 font-size: 0.7rem; 700 color: #9ba1a6; 701 margin-top: 0.1rem; 702} 703 704.popular-posts__meta i { 705 margin-right: 0.25rem; 706 font-size: 0.65rem; 707} 708 709@media (max-width: 768px) { 710 .popular-posts__item { 711 max-width: 100%; 712 } 713} 714</style> 715
716<script> 717const allPostsForPopular = [ 718 719 { 720 title: "ç»åå¦è ä¸å¼ å¦ä¹ å°å¾ï¼æè²ææ¯å¯¼èªçæ¥é¾å»è", 721 url: "/tech/education/edtech/", 722 date: "2026-09-13" 723 }, 724 725 { 726 title: "åæè¯»ä¹¦ä¿®å¿ å¨å¹³å¡çæ´»éï¼ç¥è¡åä¸ï¼æ ¢æ ¢æé¿", 727 url: "/education/rise2026/", 728 date: "2026-09-12" 729 }, 730 731 { 732 title: "DOSE模åï¼åç§å¿«ä¹çç¥ç»åå¦ç©è´¨", 733 url: "/education/dose/", 734 date: "2026-09-12" 735 }, 736 737 { 738 title: "坿¯ FS-i6 è¿æ¥çµè模æå¨çæ¿ä»£æ¹æ¡", 739 url: "/tech/education/ifly/", 740 date: "2026-09-03" 741 }, 742 743 { 744 title: "å°ç±³ææºå®æ¹ææ¡£ãæåãæç¨ãèµæºæ±æ»", 745 url: "/tech/education/xiaomi/", 746 date: "2026-08-30" 747 }, 748 749 { 750 title: "åªæ ï¼CapCutï¼&峿¢¦AIï½å®ç½ã叮婿åãæç¨ãå¼åè ææ¡£æ±æ»", 751 url: "/tech/education/capcut/", 752 date: "2026-08-29" 753 }, 754 755 { 756 title: "æ±å¤´æ¾æµ·çç©å ·ç»¼åå¸åºãæ¹åç½ç«", 757 url: "/tech/education/chenghaitoy/", 758 date: "2026-08-27" 759 }, 760 761 { 762 title: "155è§å", 763 url: "/tech/education/155plan/", 764 date: "2026-08-22" 765 }, 766 767 { 768 title: "ãç»èº«å¹¼å¿åãæ·±åº¦è§£è¯»æå", 769 url: "/tech/education/lifelong-kindergarten/", 770 date: "2026-07-23" 771 }, 772 773 { 774 title: "æç¨ SOLO æå»ºäºä¸ä¸ªå¥¶ç幸è¿ç¹åå°ç¨åº", 775 url: "/tech/education/milkcapspin-miniprogram/", 776 date: "2026-05-09" 777 }, 778 779 { 780 title: "äºçº¿è°±ä¸åå±å¢ç·é«é³ä¹çç¥è¯ä¸æç»", 781 url: "/education/chorus-tenor/", 782 date: "2026-04-12" 783 }, 784 785 { 786 title: "AI使尿é¾", 787 url: "/tech/education/dino-ai/", 788 date: "2026-04-10" 789 }, 790 791 { 792 title: "BrickLink Studio", 793 url: "/tech/education/lego/", 794 date: "2025-12-28" 795 }, 796 797 { 798 title: "ç³»åæç« æç¨", 799 url: "/blog/series-tutorial-example/", 800 date: "2025-12-20" 801 }, 802 803 { 804 title: "å¦ä¹ ç论ï¼ä»¥å¦ä½çå¾è¿ä¸é¨å°è¯´ä¸ºä¾", 805 url: "/education/reading/", 806 date: "2025-12-13" 807 }, 808 809 { 810 title: "ååèçæ¨å¹¿æ³¨æäºé¡¹", 811 url: "/tech/education/ads/", 812 date: "2025-11-23" 813 }, 814 815 { 816 title: "åç¡ X455LJ æ¹è£ è®°ï¼æ§æºçæ°å®ç¨æå", 817 url: "/tech/education/laptop-fix/", 818 date: "2025-11-22" 819 }, 820 821 { 822 title: "front-matter åæ®µ", 823 url: "/blog/front-matter/", 824 date: "2025-11-22" 825 }, 826 827 { 828 title: "PDF çµå书ä¼å", 829 url: "/tech/education/pdf-tools/", 830 date: "2025-11-04" 831 }, 832 833 { 834 title: "æ¢ç´¢AIè§è§ï¼æºå¨å¦ä½âçâä¸ç", 835 url: "/tech/education/machine-vision2/", 836 date: "2025-10-30" 837 }, 838 839 { 840 title: "åºäº Mixgo Mini çæçæº", 841 url: "/tech/education/mixgo-mini-shooting-game/", 842 date: "2025-10-26" 843 }, 844 845 { 846 title: "éè§äººå·¥æºè½", 847 url: "/tech/education/ai-start/", 848 date: "2025-10-20" 849 }, 850 851 { 852 title: "å¿çå¦ä¸çæ´»", 853 url: "/life/education/psychology-life/", 854 date: "2025-10-17" 855 }, 856 857 { 858 title: "ç¬ç«æè", 859 url: "/life/education/life/", 860 date: "2025-10-17" 861 }, 862 863 { 864 title: "广ä¸åææºå¨äºº", 865 url: "/tech/education/gdrobot/", 866 date: "2025-09-30" 867 }, 868 869 { 870 title: "AIè¾ å©ä¸ç ESP32-CAM å K210 ç¼ç¨", 871 url: "/tech/education/esp32cam-k210/", 872 date: "2025-09-29" 873 }, 874 875 { 876 title: "æºå¨çç¼çââæºå¨è§è§ææ¯æ¢ç§æå¦æ´»å¨è®¾è®¡", 877 url: "/tech/education/machine-vision/", 878 date: "2025-09-28" 879 }, 880 881 { 882 title: "å°å¦é¡¹ç®å¼è¯¾ç¨ä½ç³»è®¾è®¡æ¹æ¡", 883 url: "/tech/education/pbl4kids/", 884 date: "2025-09-21" 885 }, 886 887 { 888 title: "Aiéè¯æè²å¹³å°æ°æå ¥é¨", 889 url: "/tech/education/ai4kids/", 890 date: "2025-09-21" 891 }, 892 893 { 894 title: "Markdown ç¬è®°", 895 url: "/tech/education/blog/markdown/", 896 date: "2025-09-20" 897 }, 898 899 { 900 title: "åºäº Mixgo Mini çAIç¯å¸¦ç¼ç¨", 901 url: "/tech/education/mixgo-mini-led-ai/", 902 date: "2025-09-15" 903 }, 904 905 { 906 title: "3D建模åæå°æ¹æ¡å¦ä¹ ", 907 url: "/tech/education/3d-start/", 908 date: "2025-09-15" 909 }, 910 911 { 912 title: "åºäº Mixgo Mini çBç«ç²ä¸è®¡æ°å¨", 913 url: "/tech/education/mixgo-mini-bilibili-api/", 914 date: "2025-09-13" 915 }, 916 917 { 918 title: "å «å¹´çº§ç±³æé½å¼æºç¡¬ä»¶è¯¾ç¨ä½ç³»è®¾è®¡æ¹æ¡åæ¥", 919 url: "/tech/education/mixgo-mini/", 920 date: "2025-09-12" 921 }, 922 923 { 924 title: "åºäº Mixgo Mini ç LED ç¯ç", 925 url: "/tech/education/mixgo-mini-led/", 926 date: "2025-09-09" 927 }, 928 929 {
930 title: "ææ©æ¶ä»£ï¼æè°¢ç¥å½", 931 url: "/life/education/motherland/", 932 date: "2025-09-07" 933 }, 934 935 { 936 title: "åºäº Mixgo Mini çå¹¸è¿æ½ç¾å°ç¨åºï¼2", 937 url: "/tech/education/mixgo-mini-lucky2/", 938 date: "2025-09-07" 939 }, 940 941 { 942 title: "[项ç®å享]åºäº Mixgo Mini çå¹¸è¿æ½ç¾å°ç¨åºï¼", 943 url: "/tech/education/mixgo-mini-lucky/", 944 date: "2025-09-06" 945 }, 946 947 { 948 title: "æ æ¨ä¹æï¼æè²è ççå½ä¹æ", 949 url: "/blog/life/tree/", 950 date: "2025-08-28" 951 }, 952 953 { 954 title: "Transformerï¼AIé¢åçåé©è ", 955 url: "/tech/transformer/", 956 date: "2025-08-28" 957 }, 958 959 { 960 title: "ææºãæç±ãæè¶£ï¼", 961 url: "/blog/life/tagline/", 962 date: "2025-08-24" 963 }, 964 965 { 966 title: "å¾çåè§é¢åµå ¥", 967 url: "/blog/bilibili-unsplash/", 968 date: "2025-08-23" 969 }, 970 971 { 972 title: "å°è¯æ·»å Twikoo è¯è®ºå Lunr æç´¢åè½", 973 url: "/blog/twikoo-Lunr/", 974 date: "2025-08-12" 975 }, 976 977 { 978 title: "åæ é¾æ¥", 979 url: "/blog/friends/", 980 date: "2025-08-12" 981 }, 982 983 { 984 title: "ç«ç¹åè½æ´æ°æ¥å¿", 985 url: "/blog/site-changelog/", 986 date: "2025-04-06" 987 }, 988 989 { 990 title: "å Flash æ¶ä»£ SWF æä»¶å¦ä½ææ¾ï¼", 991 url: "/tech/flash/", 992 date: "2022-06-21" 993 }, 994 995 { 996 title: "Scratch ä½¿ç¨æå", 997 url: "/tech/scratch/", 998 date: "2022-06-21" 999 }, 1000 1001 { 1002 title: "卿´çäºäºå个å®ç¨å¯¼èªä¹åï¼æä¹åäºä¸ä¸ªå¯¼èªç½ç«", 1003 url: "/tech/nav/", 1004 date: "2022-01-10" 1005 }, 1006 1007 { 1008 title: "å°é¹¤åæ¼é³å½¢ä½¿ç¨æå", 1009 url: "/tech/double-spelling/", 1010 date: "2021-12-30" 1011 }, 1012 1013 { 1014 title: "çæå£°æ Copyright", 1015 url: "/blog/license/", 1016 date: "2021-11-23" 1017 }, 1018 1019 { 1020 title: "è¶ é¾æ¥çæå¼ãå¤å¶ææ¶è", 1021 url: "/tech/multiple-urls/", 1022 date: "2021-11-11" 1023 }, 1024 1025 { 1026 title: "Welcome to Jekyll!", 1027 url: "/blog/welcome-to-jekyll/", 1028 date: "2019-04-19" 1029 }, 1030 1031 { 1032 title: "Post: Link", 1033 url: "/blog/post-link/", 1034 date: "2010-03-07" 1035 }, 1036 1037 { 1038 title: "Post: Quote", 1039 url: "/blog/post-quote/", 1040 date: "2010-02-05" 1041 }, 1042 1043 { 1044 title: "Post: Notice", 1045 url: "/blog/post-notice/", 1046 date: "2010-02-05" 1047 }, 1048 1049 { 1050 title: "Post: Chat", 1051 url: "/blog/post-chat/", 1052 date: "2010-01-08" 1053 }, 1054 1055 { 1056 title: "Post: Standard", 1057 url: "/blog/post-standard/", 1058 date: "2010-01-07" 1059 }, 1060 1061 { 1062 title: "Post: Modified Date", 1063 url: "/blog/post-modified/", 1064 date: "2010-01-07" 1065 } 1066 1067]; 1068 1069document.addEventListener('DOMContentLoaded', function() { 1070 if (typeof twikoo === 'undefined') { 1071 setTimeout(initPopularPosts, 2000); 1072 } else { 1073 initPopularPosts(); 1074 } 1075}); 1076 1077function initPopularPosts() { 1078 if (typeof twikoo === 'undefined') { 1079 document.getElementById('popular-posts-list').innerHTML = 1080 '<li class="popular-posts__empty">è¯è®ºç³»ç»å è½½ä¸...</li>'; 1081 return; 1082 } 1083 1084 const promises = allPostsForPopular.map(function(post) { 1085 return twikoo.getCommentsCount({ 1086 envId: 'https://twikoo.616161.best', 1087 urls: [post.url] 1088 }).then(function(response) { 1089 return { 1090 title: post.title, 1091 url: post.url, 1092 date: post.date, 1093 count: response.data[0] || 0 1094 }; 1095 }).catch(function() { 1096 return { 1097 title: post.title, 1098 url: post.url, 1099 date: post.date, 1100 count: 0 1101 }; 1102 }); 1103 }); 1104 1105 Promise.all(promises).then(function(results) { 1106 const sortedPosts = results 1107 .filter(function(post) { return post.count > 0; }) 1108 .sort(function(a, b) { return b.count - a.count; }) 1109 .slice(0, 5); 1110 1111 if (sortedPosts.length === 0) { 1112 const recentPosts = allPostsForPopular 1113 .slice(0, 5) 1114 .map(function(post) { 1115 return { 1116 title: post.title, 1117 url: post.url, 1118 date: post.date, 1119 count: 0 1120 }; 1121 }); 1122 renderPopularPosts(recentPosts, true); 1123 } else { 1124 renderPopularPosts(sortedPosts, false); 1125 } 1126 }).catch(function(error) { 1127 console.error('è·åçé¨æç« å¤±è´¥:', error); 1128 document.getElementById('popular-posts-list').innerHTML = 1129 '<li class="popular-posts__empty">å 载失败</li>'; 1130 }); 1131} 1132 1133function renderPopularPosts(posts, isRecent) { 1134 const html = posts.map(function(post, index) { 1135 const countText = isRecent 1136 ? '<i class="far fa-calendar-alt"></i> ' + post.date 1137 : '<i class="far fa-comment"></i> ' + post.count; 1138 1139 return '<li class="popular-posts__item">' + 1140 '<a href="' + post.url + '" class="popular-posts__link">' + 1141 '<span class="popular-posts__rank">' + (index + 1) + '</span>' + 1142 '<div class="popular-posts__content">' + 1143 '<span class="popular-posts__name">
1143' + post.title + '</span>' + 1144 '<span class="popular-posts__meta">' + countText + '</span>' + 1145 '</div>' + 1146 '</a>' + 1147 '</li>'; 1148 }).join(''); 1149 1150 document.getElementById('popular-posts-list').innerHTML = html; 1151} 1152</script>
1152 1153 1154 1155 1156 1157<div class="page__footer-follow"> 1158 <ul class="social-icons"> 1159 1160 <li><strong>å ³æ³¨:</strong></li> 1161 1162 1163 1164 1165 1166 <li><a href="https://huangenguo.github.io/blog/friends/" rel="nofollow noopener noreferrer"><i class="fas fa-fw fa-link" aria-hidden="true"></i> åé¾</a></li> 1167 1168 1169 1170 1171 1172 <li><a href="/feed.xml"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li> 1173 1174 </ul> 1175</div> 1176 1177 1178<div class="page__footer-copyright"> 1179 © 2021 - 2026 åå®¢æ©æ <a href="https://huangenguo.github.io/blog/license">çæå£°æ</a>. ææ¯æ¥èªäº <a href="https://jekyllrb.com" rel="nofollow" target="_blank">Jekyll</a> & <a href="https://mademistakes.com/work/jekyll-themes/minimal-mistakes/" rel="nofollow" target="_blank">Minimal Mistakes</a>. 1180 <span id="busuanzi_container_site_uv">æåå°è®¿ <span id="busuanzi_value_site_uv">Calculating...</span> 次.</span> 1181 <span id="sitetime">Loading...</span> 1182</div> 1183 1184 </footer> 1185 </div> 1186 1187 1188 1189
1189<script src="/assets/js/main.min.js"></script>
1189 1190 1191 1192 1193 1194
1195<script src="/assets/js/lunr/lunr.min.js"></script>
vendor: 1 bytes, line 1195
1195
1196<script src="/assets/js/lunr/lunr-store.js"></script>
vendor: 1 bytes, line 1196
1196
1197<script src="/assets/js/lunr/lunr-en.js"></script>
1197 1198 1199 1200 1201 1202 1203
1203<script> 1204 var _gaq = _gaq || []; 1205 _gaq.push(['_setAccount', 'UA-109251818-1']); 1206 1207 _gaq.push(['_gat._anonymizeIp']); 1208 1209 _gaq.push(['_trackPageview']); 1210 1211 (function() { 1212 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 1213 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 1214 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 1215 })(); 1216</script>
1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 <!-- æ¬æµ®è·³è½¬æé® --> 1228 <!-- æ¬æµ®æé® - è¿åé¡¶é¨/跳转åºé¨ --> 1229<button id="floating-jump-btn" class="floating-jump-btn" title="跳转"> 1230 <span class="floating-jump-btn__icon">â</span> 1231</button> 1232 1233<style> 1234.floating-jump-btn { 1235 position: fixed; 1236 bottom: 30px; 1237 right: 30px; 1238 width: 50px; 1239 height: 50px; 1240 border-radius: 50%; 1241 background: #4e91a5; 1242 color: #fff; 1243 border: none; 1244 cursor: pointer; 1245 transition: all 0.3s ease; 1246 z-index: 9999; 1247 display: flex; 1248 align-items: center; 1249 justify-content: center; 1250 font-size: 20px; 1251} 1252 1253.floating-jump-btn:hover { 1254 background: #3d7a8c; 1255 transform: translateY(-2px); 1256} 1257 1258.floating-jump-btn:focus { 1259 outline: none; 1260 box-shadow: 0 0 0 2px rgba(78, 145, 165, 0.5); 1261} 1262 1263.floating-jump-btn:active { 1264 transform: translateY(0); 1265} 1266 1267.floating-jump-btn__icon { 1268 display: block; 1269 line-height: 1; 1270} 1271 1272@media (max-width: 768px) { 1273 .floating-jump-btn { 1274 width: 56px; 1275 height: 56px; 1276 bottom: 24px; 1277 right: 24px; 1278 font-size: 20px; 1279 } 1280} 1281</style> 1282
1283<script> 1284document.addEventListener('DOMContentLoaded', function() { 1285 var jumpBtn = document.getElementById('floating-jump-btn'); 1286 var lastScrollTop = 0; 1287 var isAtBottom = false; 1288 var isAtTop = true; 1289 1290 // èæµå½æ° 1291 function throttle(func, limit) { 1292 var inThrottle; 1293 return function() { 1294 var args = arguments; 1295 var context = this; 1296 if (!inThrottle) { 1297 func.apply(context, args); 1298 inThrottle = true; 1299 setTimeout(function() { 1300 inThrottle = false; 1301 }, limit); 1302 } 1303 }; 1304 } 1305 1306 // æ´æ°æé®å¾æ ç¶æ 1307 function updateButtonIcon() { 1308 var scrollTop = window.pageYOffset || document.documentElement.scrollTop; 1309 var docHeight = document.documentElement.scrollHeight; 1310 var winHeight = window.innerHeight; 1311 var scrollBottom = scrollTop + winHeight; 1312 1313 // 夿æ¯å¦å°è¾¾é¡¶é¨æåºé¨ 1314 isAtTop = scrollTop <= 10; 1315 isAtBottom = scrollBottom >= docHeight - 10; 1316 1317 var icon = jumpBtn.querySelector('.floating-jump-btn__icon'); 1318 1319 // å¨é¡¶é¨æ¶æ¾ç¤ºåä¸ç®å¤´ï¼å¯å»åºé¨ï¼ 1320 if (isAtTop) { 1321 icon.innerHTML = 'â'; 1322 } 1323 // å¨åºé¨æ¶æ¾ç¤ºåä¸ç®å¤´ï¼å¯åé¡¶é¨ï¼ 1324 else if (isAtBottom) { 1325 icon.innerHTML = 'â'; 1326 } 1327 // æ ¹æ®æ»å¨æ¹å忢徿 1328 else { 1329 if (scrollTop > lastScrollTop) { 1330 // å䏿»å¨ï¼æ¾ç¤ºåä¸ç®å¤´ï¼å¯å»åºé¨ï¼ 1331 icon.innerHTML = 'â'; 1332 } else { 1333 // å䏿»å¨ï¼æ¾ç¤ºåä¸ç®å¤´ï¼å¯åé¡¶é¨ï¼ 1334 icon.innerHTML = 'â'; 1335 } 1336 } 1337 1338 lastScrollTop = scrollTop; 1339 } 1340 1341 // 使ç¨èæµå¤çæ»å¨äºä»¶ï¼é´é120ms 1342 var throttledScrollHandler = throttle(updateButtonIcon, 120); 1343 window.addEventListener('scroll', throttledScrollHandler); 1344 1345 // åå§åæé®ç¶æ 1346 updateButtonIcon(); 1347 1348 // ç¹å»æé®æ ¹æ®å½å徿 å³å®è·³è½¬æ¹å 1349 jumpBtn.addEventListener('click', function() { 1350 var icon = jumpBtn.querySelector('.floating-jump-btn__icon'); 1351 var currentIcon = icon.innerHTML; 1352 1353 if (currentIcon === 'â') { 1354 // åä¸ç®å¤´è¡¨ç¤ºåé¡¶é¨ 1355 window.scrollTo({ 1356 top: 0, 1357 behavior: 'smooth' 1358 }); 1359 } else { 1360 // åä¸ç®å¤´è¡¨ç¤ºå»åºé¨ 1361 var footer = document.getElementById('footer'); 1362 if (footer) { 1363 footer.scrollIntoView({ behavior: 'smooth' }); 1364 } else { 1365 window.scrollTo({ 1366 top: document.documentElement.scrollHeight, 1367 behavior: 'smooth' 1368 }); 1369 } 1370 } 1371 }); 1372}); 1373</script>
1373 1374 1375 1376
1376<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"211a5481969b42c7b378fdbd56b89331","r":1,"spa":2}' crossorigin="anonymous"></script>
1376 1377</body> 1378</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.