1<!DOCTYPE html> 2<html 3 lang="en" 4> 5<head> 6 <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> 7 8 <meta 9 content="#1b1b1e" 10 media="(prefers-color-scheme: dark)" 11 name="theme-color" 12 /> 13 <meta content="yes" name="apple-mobile-web-app-capable" /> 14 <meta 15 content="black-translucent" 16 name="apple-mobile-web-app-status-bar-style" 17 /> 18 <meta 19 content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover" 20 name="viewport" 21 /> 22 23 24 <title 25 >æå们 - GoForceX's Blog</title> 26 27 28 <link 29 rel="stylesheet" 30 href="/themes/halo-theme-chirpy/assets/dist/main.css?v=1.4.6" 31 /> 32
32<script 33 src="/themes/halo-theme-chirpy/assets/dist/main.js?v=1.4.6" 34 type="module" 35 ></script>
35 36 37 38
38<script type="text/javascript"> 39 class ModeToggle { 40 static get MODE_KEY() { 41 return "mode"; 42 } 43 44 static get MODE_ATTR() { 45 return "data-mode"; 46 } 47 48 static get DARK_MODE() { 49 return "dark"; 50 } 51 52 static get LIGHT_MODE() { 53 return "light"; 54 } 55 56 static get ID() { 57 return "mode-toggle"; 58 } 59 60 constructor() { 61 if (this.hasMode) { 62 if (this.isDarkMode) { 63 if (!this.isSysDarkPrefer) { 64 this.setDark(); 65 } 66 } else { 67 if (this.isSysDarkPrefer) { 68 this.setLight(); 69 } 70 } 71 } 72 73 let self = this; 74 75 /* always follow the system prefers */ 76 this.sysDarkPrefers.addEventListener("change", () => { 77 if (self.hasMode) { 78 if (self.isDarkMode) { 79 if (!self.isSysDarkPrefer) { 80 self.setDark(); 81 } 82 } else { 83 if (self.isSysDarkPrefer) { 84 self.setLight(); 85 } 86 } 87 88 self.clearMode(); 89 } 90 91 self.notify(); 92 }); 93 } /* constructor() */ 94 95 get sysDarkPrefers() { 96 return window.matchMedia("(prefers-color-scheme: dark)"); 97 } 98 99 get isSysDarkPrefer() { 100 return this.sysDarkPrefers.matches; 101 } 102 103 get isDarkMode() { 104 return this.mode === ModeToggle.DARK_MODE; 105 } 106 107 get isLightMode() { 108 return this.mode === ModeToggle.LIGHT_MODE; 109 } 110 111 get hasMode() { 112 return this.mode != null; 113 } 114 115 get mode() { 116 return sessionStorage.getItem(ModeToggle.MODE_KEY); 117 } 118 119 /* get the current mode on screen */ 120 get modeStatus() { 121 if (this.isDarkMode || (!this.hasMode && this.isSysDarkPrefer)) { 122 return ModeToggle.DARK_MODE; 123 } else { 124 return ModeToggle.LIGHT_MODE; 125 } 126 } 127 128 setDark() { 129 document.documentElement.setAttribute( 130 ModeToggle.MODE_ATTR, 131 ModeToggle.DARK_MODE 132 ); 133 sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.DARK_MODE); 134 } 135 136 setLight() { 137 document.documentElement.setAttribute( 138 ModeToggle.MODE_ATTR, 139 ModeToggle.LIGHT_MODE 140 ); 141 sessionStorage.setItem(ModeToggle.MODE_KEY, ModeToggle.LIGHT_MODE); 142 } 143 144 clearMode() { 145 document.documentElement.removeAttribute(ModeToggle.MODE_ATTR); 146 sessionStorage.removeItem(ModeToggle.MODE_KEY); 147 } 148 149 /* Notify another plugins that the theme mode has changed */ 150 notify() { 151 window.postMessage( 152 { 153 direction: ModeToggle.ID, 154 message: this.modeStatus 155 }, 156 "*" 157 ); 158 } 159 160 flipMode() { 161 if (this.hasMode) { 162 if (this.isSysDarkPrefer) { 163 if (this.isLightMode) { 164 this.clearMode(); 165 } else { 166 this.setLight(); 167 } 168 } else { 169 if (this.isDarkMode) { 170 this.clearMode(); 171 } else { 172 this.setDark(); 173 } 174 } 175 } else { 176 if (this.isSysDarkPrefer) { 177 this.setLight(); 178 } else { 179 this.setDark(); 180 } 181 } 182 halo.flipMode(); 183 this.notify(); 184 } /* flipMode() */ 185 } /* ModeToggle */ 186 187 const modeToggle = new ModeToggle(); 188 </script>
188 189
189<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4509250084165942" 190 crossorigin="anonymous"></script>
190 191<meta name="baidu-site-verification" content="codeva-Q8Eysovmp8" /> 192<meta name="abuseipdb-verification" content="ih8HAyIN" /> 193<meta content="Halo 2.21.0-beta.1" name="generator"/><meta name="description" content="ççä½ çåé¾…… YiNNx: https://just-plain.fun/ Hamster5295: https://hamster5295.github.io/ jyi2ya: https://jyi2"/><!-- plugin-comment-widget start -->
194<script src="/plugins/PluginCommentWidget/assets/static/comment-widget.iife.js?version=2.6.0"></script>
194 195<link rel="stylesheet" href="/plugins/PluginCommentWidget/assets/static/style.css?version=2.6.0" /> 196<!-- plugin-comment-widget end --> 197<!-- PluginSearchWidget start -->
198<script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js?version=1.7.0" defer></script>
198 199<link rel="stylesheet" href="/plugins/PluginSearchWidget/assets/static/style.css?version=1.7.0" /> 200<!-- PluginSearchWidget end --> 201<!-- plugin-shiki start -->
202<script type="module" src="/plugins/shiki/assets/static/shiki-code.js?version=1.0.11"></script>
202 203<!-- plugin-shiki end -->
204<script async defer data-website-id="cdbdf1ea-9eb2-480d-96f1-3a511028902d" src="https://umami.goforcex.top//script.js"></script>
204 205<!-- plugin-pangu start -->
206<script defer src="/plugins/halo-plugin-pangu/assets/static/pangu.min.js"></script>
vendor: 1 bytes, line 206
206
207<script> 208 document.addEventListener('DOMContentLoaded', () => { 209 const selector = ""; 210 if (selector === "" || selector === "null") { 211 pangu.spacingPageBody(); 212 } else { 213 document.querySelectorAll(selector).forEach((contentNode) => { 214 pangu.spacingNode(contentNode); 215 }); 216 } 217 }); 218</script>
218 219<!-- plugin-pangu end -->
220<script async defer src="/halo-tracker.js" data-group="content.halo.run" data-plural="singlepages" data-name="e7c2150f-00a3-4f67-8eae-a38e36d9eeb2"></script>
220 221<link rel="icon" href="/upload/67143590.jpeg" /> 222</head> 223 224<body> 225<aside 226 aria-label="Sidebar" 227 id="sidebar" 228 class="d-flex flex-column align-items-end" 229 > 230 <header class="profile-wrapper"> 231 <a class="rounded-circle" href="/" id="avatar"> 232 233 <img src="/upload/67143590.jpeg" width="112" height="112" alt="avatar" /> 234 235 236 </a> 237 238 <h1 class="site-title"> 239 <a href="/">GoForceX's Blog</a> 240 </h1> 241 <p class="site-subtitle fst-italic"> 242 æççå°ç« 243 </p> 244 </header> 245 <!-- .profile-wrapper --> 246 247 <nav 248 class="nav flex-column flex-grow-1 w-100 ps-0" 249 > 250 <ul class="nav"> 251 <li class="nav-item"> 252 <a 253 class="nav-link" 254 href="/" 255 > 256 <i 257 class="fa-fw fas fa-bars-staggered" 258 ></i> 259 260 <span>é¦é¡µ</span> 261 </a> 262 </li> 263 <li class="nav-item"> 264 <a 265 class="nav-link" 266 href="/about" 267 > 268 <i 269 class="fa-fw fas fa-bars-staggered" 270 ></i> 271 272 <span>å ³äº</span> 273 </a> 274 </li> 275 <li class="nav-item"> 276 <a 277 class="nav-link" 278 href="/friends" 279 target="_self" 280 > 281 <i 282 class="fa-fw fas fa-bars-staggered" 283 ></i> 284 285 <span>æå们</span> 286 </a> 287 </li> 288 <li class="nav-item"> 289 <a 290 class="nav-link" 291 href="/peering" 292 target="_self" 293 > 294 <i 295 class="fa-fw fas fa-bars-staggered" 296 ></i> 297 298 <span>Peering Info</span> 299 </a> 300 </li> 301 <li class="nav-item"> 302 <a 303 class="nav-link" 304 href="/dn42-peering" 305 target="_self" 306 > 307 <i 308 class="fa-fw fas fa-bars-staggered" 309 ></i> 310 311 <span>DN42 Info</span> 312 </a> 313 </li> 314 315 <!-- .nav-item --> 316 </ul> 317 </nav> 318 <!-- ul.nav.flex-column --> 319 320 <div class="sidebar-bottom d-flex flex-wrap align-items-center w-100"> 321 <!-- {% unless site.theme_mode %}--> 322 <button class="mode-toggle btn" aria-label="Switch Mode"> 323 <i class="fas fa-adjust"></i> 324 </button> 325 326 327 <span class="icon-border"></span> 328 329 <a href="https://github.com/GoForceX"> 330 <i class="fab fa-github"></i> 331 </a> 332 333 <a href="https://twitter.com/CN_GoForceX"> 334 <i class="fab fa-x-twitter"></i> 335 </a> 336 337 <a href="mailto:[email protected]"> 338 <i class="fas fa-envelope"></i> 339 </a> 340 341 <a href="https://goforcex.top/feed.xml"> 342 <i class="fas fa-rss"></i> 343 </a> 344 345 346 </div> 347 <!-- .sidebar-bottom --> 348 </aside> 349<div id="main-wrapper" class="d-flex justify-content-center"> 350 <div class="container d-flex flex-column px-xxl-5"> 351 352 353 354 355 356 357 358 359 360 <header id="topbar-wrapper"> 361 <div 362 id="topbar" 363 class="d-flex align-items-center justify-content-between px-lg-3 h-100" 364 > 365 <nav id="breadcrumb" aria-label="Breadcrumb"> 366 367 <span> 368 <a href="/">Home</a> 369 </span> 370 <span>æå们</span> 371 372 </nav> 373 <!-- display none--> 374 <button type="button" id="sidebar-trigger" class="btn btn-link"> 375 <i class="fas fa-bars fa-fw"></i> 376 </button> 377 378 <div id="topbar-title"> </div> 379 <!-- .display none--> 380 381 382 383 384 <button type="button" id="search-trigger" class="btn btn-link"> 385 <i class="fas fa-search fa-fw"></i> 386 </button> 387 <search class="align-items-center ms-3 ms-lg-0"> 388 <i class="fas fa-search fa-fw"></i> 389 <a href="javascript:SearchWidget.open()" title="Search"> 390 <input 391 class="form-control" 392 id="search-input" 393 type="search" 394 aria-label="search" 395 autocomplete="off" 396 placeholder="Search" 397 > 398 </a> 399 </search> 400 <button type="button" class="btn btn-link text-decoration-none" id="search-cancel"> 401 Cancel 402 </button> 403 404 </div> 405</header> 406 407 408 <div class="row flex-grow-1"> 409 <main 410 aria-label="Main Content" 411 class="col-12 col-lg-11 col-xl-9 px-md-4 pb-5" 412 > 413 414 415 416 <article class="px-1"> 417 418 <h1 data-toc-skip>æå们</h1> 419 <div class="post-content"> 420 <style class="pjax" data-pjax> 421 pre:has(code) { 422 filter: blur(10px) !important; 423 padding: 1rem !important; 424 } 425 </style> 426<p style="">ççä½ çåé¾â¦â¦</p><p style=""><a href="https://github.com/YiNNx" target="_blank">YiNNx</a>: <a href="https://just-plain.fun/" target="_blank">https://just-plain.fun/</a></p><p style=""><a href="https://github.com/Hamster5295" target="_blank">Hamster5295</a>: <a href="https://hamster5295.github.io/" target="_blank">https://hamster5295.github.io/</a></p><p style=""><a href="https://github.com/jyi2ya" target="_blank">jyi2ya</a>: <a href="https://jyi2ya.github.io/" target="_blank">https://jyi2ya.github.io/</a></p><p style=""><a href="https://github.com/ligen131" target="_blank">ligen131</a>: <a href="https://ligen.life/" target="_blank">https://ligen.life/</a></p><p style=""><a href="https://github.com/HomeArchbishop" target="_blank">HomeArchbishop</a>: <a href="https://buuug.top/" target="_blank">https://buuug.top/</a></p><p style=""><a href="https://github.com/Mengbooo" target="_blank">Mengbooo</a>: <a href="https://bemosite.fun/" target="_self">https://bemosite.fun/</a></p><p style="">æ¨å¶æ¢¦æ¥çå°å±: <a href="https://www.yumeharu.top/" target="_blank" rel="">https://www.yumeharu.top/</a></p> 427 </div> 428 <div id="comment"> 429 <div id="comment-content-halo-run-SinglePage-e7c2150f-00a3-4f67-8eae-a38e36d9eeb2"></div>
430<script> 431 CommentWidget.init( 432 "#comment-content-halo-run-SinglePage-e7c2150f-00a3-4f67-8eae-a38e36d9eeb2", 433 { 434 group: "content.halo.run", 435 kind: "SinglePage", 436 name: "e7c2150f-00a3-4f67-8eae-a38e36d9eeb2", 437 size: 20, 438 replySize: 10, 439 withReplies: false, 440 withReplySize: 5, 441 useAvatarProvider: false, 442 avatarProvider: "gravatar", 443 avatarProviderMirror: "", 444 avatarPolicy: "anonymousUser", 445 captchaEnabled: false, 446 } 447 ); 448</script>
448 449 450 </div> 451 452 </article> 453 454 </main> 455 456 <!-- panel --> 457 <aside 458 aria-label="Panel" 459 id="panel-wrapper" 460 class="col-xl-3 ps-2 text-muted" 461 > 462 <html 463 lang="en" 464> 465 <div class="access"> 466 <section id="access-lastmod" class="post"> 467 <h2 class="panel-heading">Recently Updated</h2> 468 <ul 469 class="post-content list-unstyled ps-0 pb-1 ms-1 mt-2" 470 > 471 <li class="text-truncate lh-lg"> 472 <a href="/archives/what-a-pigeon">å¾ æ´æ°æç« å°æ¬æ¬</a> 473 </li> 474 <li class="text-truncate lh-lg"> 475 <a href="/archives/things-todo-and-things-forgotten">çµæèéå°</a> 476 </li> 477 <li class="text-truncate lh-lg"> 478 <a href="/archives/cve-2025-55182-recap">CVE-2025-55182 æ¯æä¹è®© Next.js 大ççï¼</a> 479 </li> 480 <li class="text-truncate lh-lg"> 481 <a href="/archives/nat64-dns64-wtf">NAT64 / DNS64ï¼å°ä¸ä¸</a> 482 </li> 483 <li class="text-truncate lh-lg"> 484 <a href="/archives/configuring-ipv6-on-docker">è®°ä¸æ¬¡å°è¯å¨ Docker ä¸å¯ç¨ IPv6 访é®ç顶级æç£¨</a> 485 </li> 486 </ul> 487 </section> 488 <section> 489 <h2 class="panel-heading">Trending Tags</h2> 490 <div 491 class="d-flex flex-wrap mt-3 mb-1 me-3" 492 > 493 494 <a 495 class="post-tag btn btn-outline-primary" 496 href="/tags/halo" 497 >Halo</a 498 > 499 500 <a 501 class="post-tag btn btn-outline-primary" 502 href="/tags/kai-fa" 503 >å¼å</a 504 > 505 506 <a 507 class="post-tag btn btn-outline-primary" 508 href="/tags/you-zheng" 509 >鮿¿</a 510 > 511 512 <a 513 class="post-tag btn btn-outline-primary" 514 href="/tags/yin-shi" 515 >饮é£</a 516 > 517 518 <a 519 class="post-tag btn btn-outline-primary" 520 href="/tags/qian-duan" 521 >å端</a 522 > 523 524 <a 525 class="post-tag btn btn-outline-primary" 526 href="/tags/bgp" 527 >BGP</a 528 > 529 530 <a 531 class="post-tag btn btn-outline-primary" 532 href="/tags/github" 533 >GitHub</a 534 > 535 536 <a 537 class="post-tag btn btn-outline-primary" 538 href="/tags/chuang-yi" 539 >åæ</a 540 > 541 542 <a 543 class="post-tag btn btn-outline-primary" 544 href="/tags/lu-you" 545 >è·¯ç±</a 546 > 547 548 <a 549 class="post-tag btn btn-outline-primary" 550 href="/tags/bing-yan" 551 >å°å²©</a 552 > 553 554 </div> 555 </section> 556 </div> 557 <div class="access-sticky"> 558 559 <section 560 class="access-links" 561 > 562 <h2 class="panel-heading">Site Info</h2> 563 <ul class="post-content pl-0 pb-1 ml-1 mt-2"> 564 <p> 565 <a href="https://beian.miit.gov.cn/" target="_blank">京ICPå¤2024071302å·-1</a> 566</p> 567 </ul> 568 </section> 569 </div> 570</html> 571 </aside> 572 </div> 573 <div class="row"> 574 <!-- tail --> 575 <div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4"> 576 <footer 577 aria-label="Site Info" 578 class="d-flex flex-column justify-content-center text-muted flex-lg-row justify-content-lg-between align-items-lg-center pb-lg-3" 579 > 580 <p> 581 ©2026 582 <a href="https://goforcex.top/">GoForceX's Blog</a>. 583 <!-- copyright--> 584 <span 585 data-bs-toggle="tooltip" 586 data-bs-placement="top" 587 title="Except where otherwise noted, the blog posts on this site are licensed under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) License by the author." 588 > 589 Some rights reserved. 590 </span> 591 </p> 592 <p> 593 Using the 594 <a href="https://halo.run" target="_blank" rel="noopener">Halo</a> 595 theme 596 <a 597 href="https://github.com/airbozh/halo-theme-chirpy" 598 target="_blank" 599 rel="noopener" 600 >Chirpy</a 601 > 602 </p> 603 </footer> 604 </div> 605 </div> 606 </div> 607 608 <aside aria-label="Scroll to Top"> 609 <button 610 id="back-to-top" 611 type="button"
612 class="btn btn-lg btn-box-shadow" 613 > 614 <i class="fas fa-angle-up"></i> 615 </button> 616 </aside> 617</div> 618<div id="mask"></div> 619</body> 620</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.