1<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><!-- hexo injector head_begin start --> 2
2<script> 3 window.HexoLivePhotoConfig = {"enable":true,"autoplay":true,"hover_to_play":true,"click_to_play":true,"lazy_load":true,"threshold":0.8,"badge":true,"badge_text":"Live","badge_position":"top-left","loading_animation":true,"preload":"auto","keep_observing":false,"hover_delay":300,"weixin_disable_autoplay":true,"loop":false,"inject_to":"default"}; 4 </script>
4 5 <style>:root { 6 --live-brand-color: #ff2e4d; 7 --live-bg-gray: #f0f0f0; 8 --live-error-bg: #f8f8f8; 9 --live-radius-lg: 12px; 10 --live-radius-sm: 8px; 11 --live-transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1); 12} 13 14 15/* Live Photo å®¹å¨ */ 16.live-photo-container { 17 position: relative; 18 border-radius: var(--live-radius-lg); 19 cursor: pointer; 20 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); 21 transition: transform var(--live-transition), box-shadow var(--live-transition); 22 max-width: 100%; 23 overflow: hidden; 24 display: flex; 25 line-height: 0; 26 margin: 20px auto; 27 width: fit-content; 28 /*background: var(--live-bg-gray);*/ /* ä¿æéæèæ¯ï¼é¿å å¤é´æ¨¡å¼ä¸æ¾ç¤ºå¼å¸¸ */ 29 justify-content: center; 30 align-items: center; 31} 32 33.live-photo-container:not(.live-photo-image-grid):not(.live-photo-image-grid-grid) { 34 display: table; /* æ¢è½å®ç° fit-content ææï¼åè½æ¯æ margin: auto å± ä¸ */ 35 margin: 20px auto; 36} 37 38.live-photo-container a { 39 position: absolute; 40 top: 0; 41 left: 0; 42 width: 100%; 43 height: 100%; 44 z-index: 2; 45 pointer-events: none; 46} 47 48.live-photo-container .caption, 49.live-photo-container span.caption { 50 display: none !important; 51} 52 53.live-photo-container:hover { 54 transform: translateY(-2px); 55 box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12); 56} 57 58/* éæå¾ç */ 59.live-photo-static { 60 position: absolute !important; 61 top: 0; 62 left: 0; 63 z-index: 2; 64 border-radius: inherit; 65 transition: opacity var(--live-transition); 66 pointer-events: none; 67 margin: 0 !important; 68 background-color: var(--live-bg-gray); 69 color: transparent; 70 text-indent: -10000px; 71} 72 73/* 妿å¾çæ¥éäºï¼ç¡®ä¿å®ç»å¯¹ä¸ä¼ç±äºä»»ä½ hover ææåè·³åºæ¥ */ 74.live-photo-container.is-loading .live-photo-static[style*="visibility: hidden"] { 75 opacity: 0 !important; 76} 77 78/* è§é¢å ç´ */ 79.live-photo-video { 80 position: relative; 81 display: block; 82 border-radius: var(--live-radius-sm); 83 z-index: 1; 84 /*opacity: 1 !important;*/ 85} 86 87/* Live æ è¯ */ 88.live-badge { 89 position: absolute; 90 background: rgba(0, 0, 0, 0.55); 91 color: #ffffff; 92 93 /* ä¼åé´è·ï¼åå°å·¦å³ï¼å¢å ä¸ä¸å¼å¸æ */ 94 padding: 5px 10px; 95 border-radius: 6px; /* ç¨å¾®å 大åè§ï¼æ¾å¾æ´ç°ä»£ */ 96 97 /* åä½ä¼åï¼ä½¿ç¨ç³»ç»çº§æ 衬线åä½ï¼å¢å åé´è· */ 98 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; 99 font-size: 11px; /* ç¨å¾®è°å°ä¸ç¹ç¹ï¼æ´ç²¾è´ */ 100 font-weight: 600; /* åç²ä½å¢å ä¸ä¸æ */ 101 letter-spacing: 0.05em; /* å ³é®ï¼å¢å åé´è·ï¼æåé«çº§æ */ 102 text-transform: uppercase; /* 强å¶å¤§å */ 103 104 display: flex; 105 align-items: center; 106 justify-content: center; 107 gap: 6px; 108 109 -webkit-backdrop-filter: blur(12px) saturate(180%); 110 backdrop-filter: blur(12px) saturate(180%); 111 z-index: 10; 112 transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); 113 min-width: unset; 114 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); 115 pointer-events: none; 116} 117 118.live-badge::before { 119 content: ''; 120 display: inline-block; 121 width: 6px; /* ç¨å¾®ç¼©å°ï¼æ¾å¾æ´ç²¾è´ */ 122 height: 6px; 123 border-radius: 50%; 124 background-color: var(--live-brand-color); 125 /* å¢å ä¸ç¹ç¹å¤åå */ 126 box-shadow: 0 0 4px rgba(255, 46, 77, 0.6); 127 transition: background-color 0.3s ease; 128 flex-shrink: 0; /* 鲿¢è¢«æ¤å */ 129} 130 131/* ä½ç½®åä½ */ 132.live-badge.bottom-left { 133 bottom: 12px; 134 left: 12px; 135} 136 137.live-badge.bottom-right { 138 bottom: 12px; 139 right: 12px; 140} 141 142.live-badge.top-left { 143 top: 12px; 144 left: 12px; 145} 146 147.live-badge.top-right { 148 top: 12px; 149 right: 12px; 150} 151 152/* å è½½æç¤ºå¨ */ 153.live-loading { 154 position: absolute; 155 top: 50%; 156 left: 50%; 157 transform: translate(-50%, -50%); 158 width: 40px; 159 height: 40px; 160 border: 3px solid rgba(255, 255, 255, 0.3); 161 border-radius: 50%; 162 border-top-color: var(--live-brand-color); 163 animation: livephoto-spin 1s ease-in-out infinite; 164 display: none; 165 z-index: 1; 166} 167 168@keyframes livephoto-spin { 169 to { 170 transform: translate(-50%, -50%) rotate(360deg); 171 } 172} 173 174/* æ 颿 ·å¼ */ 175.live-caption { 176 text-align: center; 177 margin-top: 8px; 178 font-size: 14px; 179 color: #666; 180} 181 182/* ååºå¼è®¾è®¡ */ 183@media (max-width: 768px) { 184 .live-photo-container { 185 border-radius: 8px; 186 margin: 16px 0; 187 } 188 189 .live-badge { 190 font-size: 11px; 191 padding: 3px 6px; 192 } 193 194 .live-badge.bottom-left, 195 .live-badge.bottom-right { 196 bottom: 8px; 197 } 198 199 .live-badge.bottom-left,
200 .live-badge.top-left { 201 left: 8px; 202 } 203 204 .live-badge.bottom-right, 205 .live-badge.top-right { 206 right: 8px; 207 } 208 209 .live-badge.top-left, 210 .live-badge.top-right { 211 top: 8px; 212 } 213 214} 215 216/* å¤å¾å¸å±å®¹å¨ */ 217.live-photo-image-grid { 218 display: flex; 219 flex-wrap: wrap; 220 justify-content: space-between; 221 margin: 20px 0; 222 gap: 15px; /* 使ç¨gap屿§è®¾ç½®é´è· */ 223} 224 225.live-photo-image-column { 226 flex: 0 0 calc(50% - 8px); /* æ¯åå 50%宽度åå»ä¸åçé´è· */ 227 min-width: 0; /* 鲿¢å å®¹æº¢åº */ 228} 229 230/* Gridå¸å± */ 231.live-photo-image-grid-grid { 232 display: grid; 233 grid-template-columns: repeat(2, 1fr); /* å§ç»ä¿æä¸¤å */ 234 gap: 15px; 235 margin: 20px 0; 236} 237 238.live-photo-grid-item { 239 position: relative; 240 min-width: 0; /* 鲿¢å å®¹æº¢åº */ 241} 242 243/* æµ®å¨å¸å± */ 244.live-photo-image-float-container { 245 width: 100%; 246 margin: 20px 0; 247 display: flex; 248 flex-wrap: wrap; 249 gap: 15px; 250} 251 252.live-photo-float-image { 253 flex: 0 0 calc(50% - 8px); /* æ¯åå 50%宽度åå»ä¸åçé´è· */ 254} 255 256/* Live Photo 容å¨éé å¤å¾å¸å± */ 257.live-photo-image-grid .live-photo-container, 258.live-photo-image-grid-grid .live-photo-container, 259.live-photo-image-float-container .live-photo-container { 260 margin: 0; /* ç§»é¤åç¬è®¾ç½®çå¤è¾¹è· */ 261 border-radius: 8px; /* ç¨å¾®åå°åè§ä»¥éåºå°å±å¹ */ 262} 263 264/* ç¡®ä¿å¾çåè§é¢å¨å¤å¾å¸å±ä¸æ£ç¡®æ¾ç¤º */ 265.live-photo-image-grid .live-photo-static, 266.live-photo-image-grid-grid .live-photo-static, 267.live-photo-image-float-container .live-photo-static, 268.live-photo-image-grid .live-photo-video, 269.live-photo-image-grid-grid .live-photo-video, 270.live-photo-image-float-container .live-photo-video { 271 border-radius: 8px; /* ä¸å®¹å¨ä¿æä¸è´ */ 272} 273 274/* è°æ´Liveæ è¯å¨å°å±å¹ä¸çå¤§å° */ 275.live-photo-image-grid .live-badge, 276.live-photo-image-grid-grid .live-badge, 277.live-photo-image-float-container .live-badge { 278 font-size: 10px; 279 padding: 2px 6px; 280} 281 282.live-photo-image-grid .live-badge.bottom-left, 283.live-photo-image-grid-grid .live-badge.bottom-left, 284.live-photo-image-float-container .live-badge.bottom-left, 285.live-photo-image-grid .live-badge.bottom-right, 286.live-photo-image-grid-grid .live-badge.bottom-right, 287.live-photo-image-float-container .live-badge.bottom-right { 288 bottom: 8px; 289} 290 291.live-photo-image-grid .live-badge.bottom-left, 292.live-photo-image-grid-grid .live-badge.bottom-left, 293.live-photo-image-float-container .live-badge.bottom-left, 294.live-photo-image-grid .live-badge.top-left, 295.live-photo-image-grid-grid .live-badge.top-left, 296.live-photo-image-float-container .live-badge.top-left { 297 left: 8px; 298} 299 300.live-photo-image-grid .live-badge.bottom-right, 301.live-photo-image-grid-grid .live-badge.bottom-right, 302.live-photo-image-float-container .live-badge.bottom-right, 303.live-photo-image-grid .live-badge.top-right, 304.live-photo-image-grid-grid .live-badge.top-right, 305.live-photo-image-float-container .live-badge.top-right { 306 right: 8px; 307} 308 309.live-photo-image-grid .live-badge.top-left, 310.live-photo-image-grid-grid .live-badge.top-left, 311.live-photo-image-float-container .live-badge.top-left, 312.live-photo-image-grid .live-badge.top-right, 313.live-photo-image-grid-grid .live-badge.top-right, 314.live-photo-image-float-container .live-badge.top-right { 315 top: 8px; 316} 317 318/* é常å°ç设å¤è°æ´ */ 319@media (max-width: 360px) { 320 .live-photo-image-grid { 321 gap: 10px; 322 } 323 324 .live-photo-image-column { 325 flex: 0 0 calc(50% - 5px); /* è°æ´é´è· */ 326 } 327 328 .live-photo-image-grid-grid { 329 gap: 10px; 330 } 331 332 .live-photo-float-image { 333 flex: 0 0 calc(50% - 5px); /* è°æ´é´è· */ 334 } 335 336 /* è¿ä¸æ¥è°æ´Liveæ è¯ */ 337 .live-photo-image-grid .live-badge, 338 .live-photo-image-grid-grid .live-badge, 339 .live-photo-image-float-container .live-badge { 340 font-size: 9px; 341 padding: 2px 4px; 342 } 343} 344 345/* ç¡®ä¿åå¾å¸å±ä¸åå½±å */ 346.live-photo-container:not(.live-photo-image-grid):not(.live-photo-image-grid-grid):not(.live-photo-image-float-container) { 347 margin: 20px auto; 348} 349 350/* æ 颿 ·å¼è°æ´ */ 351.live-caption { 352 font-size: 13px; /* ç¨å¾®åå°åä½å¤§å° */ 353 margin-top: 5px; 354 line-height: 1.4; 355} 356 357/* ç¡®ä¿å è½½æç¤ºå¨å¨å¤å¾å¸å±ä¸æ£ç¡®æ¾ç¤º */ 358.live-photo-image-grid .live-loading, 359.live-photo-image-grid-grid .live-loading, 360.live-photo-image-float-container .live-loading { 361 width: 30px; 362 height: 30px; 363} 364 365/* å è½½ç¶æä¸çè§è§åé¦ */ 366.live-photo-container.is-loading .live-badge { 367 background: rgba(0, 0, 0, 0.75); 368} 369 370.live-photo-container.is-loading .live-badge::before { 371 background-color: #ffcc00; 372 box-shadow: 0 0 6px rgba(255, 204, 0, 0.8); 373 animation: live-photo-blink 0.5s infinite alternate cubic-bezier(0.4, 0, 0.6, 1); 374} 375 376@keyframes live-photo-blink { 377 from { 378 opacity: 1; 379 transform: scale(1); 380 } 381 to { 382 opacity: 0.5; 383 transform: scale(0.85); 384 } 385} 386 387/* ååºå¼è°æ´ */ 388@media (max-width: 768px) { 389 .live-badge { 390 font-size: 10px; 391 padding: 4px 8px; 392 letter-spacing: 0.02em; 393 } 394} 395 396/* 声鳿§å¶æé®å®¹å¨ */ 397.live-sound-toggle { 398 position: absolute; 399 bottom: 12px; 400 right: 12px; 401 width: 30px; 402 height: 30px; 403 background: rgba(0, 0, 0, 0.55); 404 -webkit-backdrop-filter: blur(12px) saturate(180%); 405 backdrop-filter: blur(12px) saturate(180%); 406 border-radius: 50%; 407 display: flex; 408 align-items: center; 409 justify-content: center; 410 z-index: 11; 411 cursor: pointer; 412 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); 413 opacity: 0; 414 transform: scale(0.8); 415 /* 注æï¼è¿éä¿çäºå®¹å¨æ¾ç¤ºçå¨ç»ï¼ä½å»æäºå é¨å ç´ çå»¶è¿ */ 416 transition: opacity 0.3s ease, transform 0.3s ease;
417 color: white; /* å ³é®ï¼è¿ä¼è®© SVG ç currentColor çæä¸ºç½è² */ 418} 419 420.live-photo-container:hover .live-sound-toggle, 421.live-photo-container.is-playing .live-sound-toggle { 422 opacity: 1; 423 transform: scale(1); 424} 425 426.live-photo-container.is-playing .live-badge::before { 427 background-color: #34c759; /* åæ iOS 飿 ¼ç绿è²ï¼ä»£è¡¨ Active */ 428 box-shadow: 0 0 8px rgba(52, 199, 89, 0.6); 429 animation: none; /* 忢å è½½æ¶çé»è²å¼å¸ç¯ */ 430} 431 432.live-photo-container.is-playing .live-badge { 433 opacity: 0.6; /* ç¨å¾®åéæï¼è®©ç¨æ·çæ¸ è§é¢è§è½ */ 434 transform: scale(0.95); /* ç¨å¾®ç¼©å°ä¸ç¹ç¹ï¼æ¾å¾æ´ç²¾è´ */ 435 background: rgba(0, 0, 0, 0.4); /* èæ¯åæ·¡ */ 436} 437 438.live-photo-container.is-playing:hover .live-badge { 439 opacity: 1; 440 transform: scale(1); 441} 442 443/* æ·»å ä¸ä¸ªå°ç»èï¼ç¹å»æ¶çæååé¦ï¼è®©ç¨æ·è§å¾æ´é¡ºæ */ 444.live-sound-toggle:active { 445 transform: scale(0.9); 446} 447 448/* SVG æ¾ç¤º/éèé»è¾ï¼éç¨ display none å®ç° 0 毫ç§ç¬é´åæ¢ï¼ç¼è§£å£°é³å¡é¡¿ç¦è */ 449.sound-on-icon { 450 display: none; 451} 452 453.sound-off-icon { 454 display: block; 455} 456 457.live-sound-toggle.is-unmuted .sound-on-icon { 458 display: block; 459} 460 461.live-sound-toggle.is-unmuted .sound-off-icon { 462 display: none; 463} 464 465/* é误å ä½ç¬¦åºç¡æ ·å¼ */ 466.live-error-placeholder { 467 display: none; /* é»è®¤éè */ 468 width: 100%; 469 height: 200px; /* é»è®¤ä¸ä¸ªé«åº¦ï¼æè æ ¹æ®å®¹å¨é«åº¦ */ 470 background: #f5f5f5; 471 align-items: center; 472 justify-content: center; 473 flex-direction: column; 474} 475 476.live-error-placeholder svg { 477 fill: #ccc; /* ç°è²å¾æ */ 478 width: 60px !important; 479 height: 60px !important; 480 display: block; 481 margin: 0 auto; 482} 483 484/* å½è§¦åå ¨éç¶ææ¶ */ 485.live-photo-container.is-total-error { 486 width: 60%; 487 max-width: 100%; 488 height: auto; 489 display: block; 490 background: var(--live-error-bg); 491} 492 493.live-photo-container.is-total-error > * { 494 display: none !important; 495} 496 497.live-photo-container.is-total-error .live-error-placeholder { 498 display: flex !important; 499 width: 100%; 500 height: 200px; /* æ¥éæ¶ç»ä¸ªåºå®é«åº¦ï¼é¿å 容å¨å¡é· */ 501 background: var(--live-error-bg); 502 flex-direction: column; 503 align-items: center; 504 justify-content: center; 505} 506 507/* å ³é®ï¼å ¨éæ¶ï¼å¼ºå¶éèææå ¶ä»å ç´ ï¼å½»åºæ ¹é¤âè£å¼å¾æ â */ 508.is-total-error .live-photo-static, 509.is-total-error .live-photo-video, 510.is-total-error .live-badge, 511.is-total-error .live-sound-toggle, 512.is-total-error .live-loading { 513 display: none !important; 514} 515 516.is-total-error a, 517.is-total-error img, 518.is-total-error .caption { 519 display: none !important; 520 opacity: 0 !important; 521 height: 0 !important; 522} 523 524/* 1. éèè§é¢åå ¶äº¤äºç»ä»¶ */ 525.is-video-error .live-photo-video, 526.is-video-error .live-badge, 527.is-video-error .live-sound-toggle, 528.is-video-error .live-loading { 529 display: none !important; 530} 531 532/* 2. å ³é®ï¼è§£é¤ Fancybox 龿¥åå¾ççç»å¯¹å®ä½ */ 533/* å 为 HTML ç»ææ¯ container -> a -> img */ 534.live-photo-container.is-video-error a, 535.live-photo-container.is-video-error .live-photo-static { 536 position: relative !important; 537 display: block !important; 538 top: auto !important; 539 left: auto !important; 540 opacity: 1 !important; 541 pointer-events: auto !important; /* å 许ç¹å»æ¾å¤§ */ 542 width: 100% !important; 543 height: auto !important; 544} 545 546/* 3. 容å¨éé ï¼å¦ææ¯ table å¸å±ï¼å¼ºå¶å¨é误æ¶è¡¨ç°ä¸º block 以便æå¼ */ 547.live-photo-container.is-video-error { 548 display: block !important; 549 height: auto !important; 550 cursor: default; 551 background: transparent; 552}</style><!-- hexo injector head_begin end --><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0,viewport-fit=cover"><title>åæ¹æ± æ°´åæ¹ç° - Qin's blog</title><meta name="author" content="wuanqin"><meta name="copyright" content="wuanqin"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#fdfdfd"><meta name="description" content="åªè½æä¸ç¹ç¹"> 553<meta property="og:type" content="website"> 554<meta property="og:title" content="åæ¹æ± æ°´åæ¹ç°"> 555<meta property="og:url" content="https://blog.uuanqin.top/index.html"> 556<meta property="og:site_name" content="åæ¹æ± æ°´åæ¹ç°"> 557<meta property="og:description" content="åªè½æä¸ç¹ç¹"> 558<meta property="og:locale" content="zh_CN"> 559<meta property="og:image" content="https://blog.uuanqin.top/image/avatar.webp"> 560<meta property="article:author" content="wuanqin"> 561<meta property="article:tag" content="ææ¯ çæ´» 个人"> 562<meta name="twitter:card" content="summary"> 563<meta name="twitter:image" content="https://blog.uuanqin.top/image/avatar.webp">
563<script type="application/ld+json">{ 564 "@context": "https://schema.org", 565 "@type": "WebSite", 566 "name": "åæ¹æ± æ°´åæ¹ç°", 567 "alternateName": [ 568 "Qin's blog", 569 "blog.uuanqin.top" 570 ], 571 "url": "https://blog.uuanqin.top/" 572}</script>
572<link rel="shortcut icon" href="/image/qlogo_100x100.webp"><link rel="canonical" href="https://blog.uuanqin.top/index.html"><link rel="preconnect" href="//unpkg.com"/><link rel="preconnect" href="//hm.baidu.com"/><link rel="preconnect" href="//www.clarity.ms"/><meta name="baidu-site-verification" content="codeva-IupgPifNxU"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/font-awesome/6.6.0/css/all.min.css"><link rel="stylesheet" href="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/node-snackbar/0.1.16/snackbar.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/fancyapps-ui/5.0.17/fancybox/fancybox.min.css" media="print" onload="this.media='all'">
572<script> 573 (() => { 574 575 const saveToLocal = { 576 set: (key, value, ttl) => { 577 if (!ttl) return 578 const expiry = Date.now() + ttl * 86400000 579 localStorage.setItem(key, JSON.stringify({ value, expiry })) 580 }, 581 get: key => { 582 const itemStr = localStorage.getItem(key) 583 if (!itemStr) return undefined 584 const { value, expiry } = JSON.parse(itemStr) 585 if (Date.now() > expiry) { 586 localStorage.removeItem(key) 587 return undefined 588 } 589 return value 590 } 591 } 592 593 window.btf = { 594 saveToLocal, 595 getScript: (url, attr = {}) => new Promise((resolve, reject) => { 596 const script = document.createElement('script') 597 script.src = url 598 script.async = true 599 Object.entries(attr).forEach(([key, val]) => script.setAttribute(key, val)) 600 script.onload = script.onreadystatechange = () => { 601 if (!script.readyState || /loaded|complete/.test(script.readyState)) resolve() 602 } 603 script.onerror = reject 604 document.head.appendChild(script) 605 }), 606 getCSS: (url, id) => new Promise((resolve, reject) => { 607 const link = document.createElement('link') 608 link.rel = 'stylesheet' 609 link.href = url 610 if (id) link.id = id 611 link.onload = link.onreadystatechange = () => { 612 if (!link.readyState || /loaded|complete/.test(link.readyState)) resolve() 613 } 614 link.onerror = reject 615 document.head.appendChild(link) 616 }), 617 addGlobalFn: (key, fn, name = false, parent = window) => { 618 if (!false && key.startsWith('pjax')) return 619 const globalFn = parent.globalFn || {} 620 globalFn[key] = globalFn[key] || {} 621 globalFn[key][name || Object.keys(globalFn[key]).length] = fn 622 parent.globalFn = globalFn 623 } 624 } 625 626 627 const activateDarkMode = () => { 628 document.documentElement.setAttribute('data-theme', 'dark') 629 if (document.querySelector('meta[name="theme-color"]') !== null) { 630 document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d') 631 } 632 } 633 const activateLightMode = () => { 634 document.documentElement.setAttribute('data-theme', 'light') 635 if (document.querySelector('meta[name="theme-color"]') !== null) { 636 document.querySelector('meta[name="theme-color"]').setAttribute('content', '#fdfdfd') 637 } 638 } 639 640 btf.activateDarkMode = activateDarkMode 641 btf.activateLightMode = activateLightMode 642 643 const theme = saveToLocal.get('theme') 644 645 const hour = new Date().getHours() 646 const isNight = hour <= 8 || hour >= 23 647 if (theme === undefined) isNight ? activateDarkMode() : activateLightMode() 648 else theme === 'light' ? activateLightMode() : activateDarkMode() 649 650 651 const asideStatus = saveToLocal.get('aside-status') 652 if (asideStatus !== undefined) { 653 document.documentElement.classList.toggle('hide-aside', asideStatus === 'hide') 654 } 655 656 657 const detectApple = () => { 658 if (/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)) { 659 document.documentElement.classList.add('apple') 660 } 661 } 662 detectApple() 663 664 })() 665 </script>
665<script>var _hmt = _hmt || []; 666(function() { 667 var hm = document.createElement("script"); 668 hm.src = "https://hm.baidu.com/hm.js?877eb1cd1993b0865452ed4011fcd2d8"; 669 var s = document.getElementsByTagName("script")[0]; 670 s.parentNode.insertBefore(hm, s); 671})(); 672btf.addGlobalFn('pjaxComplete', () => { 673 _hmt.push(['_trackPageview',window.location.pathname]) 674}, 'baidu_analytics') 675</script>
675<script>(function(c,l,a,r,i,t,y){ 676 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 677 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 678 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 679})(window, document, "clarity", "script", "gwn59ub66c"); 680</script>
680<script>const GLOBAL_CONFIG = { 681 root: '/', 682 algolia: {"appId":"2JINTHATAF","apiKey":"086110423d680367cda9c0216b336eb8","indexName":"blog.uuanqin.top","hitsPerPage":6,"languages":{"hits_empty":"æªæ¾å°ç¬¦åæ¨æ¥è¯¢çå 容ï¼${query}","hits_stats":"æ¾å° ${hits} æ¡ç»æï¼èæ¶ ${time} 毫ç§"}}, 683 localSearch: undefined, 684 translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"ç¹","msgToSimplifiedChinese":"ç®"}, 685 highlight: {"plugin":"highlight.js","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":350,"highlightFullpage":true,"highlightMacStyle":true}, 686 copy: { 687 success: 'å¤å¶æå', 688 error: 'å¤å¶å¤±è´¥', 689 noSupport: 'æµè§å¨ä¸æ¯æ' 690 }, 691 relativeDate: { 692 homepage: true, 693 post: false 694 }, 695 runtime: '', 696 dateSuffix: { 697 just: 'åå', 698 min: 'åéå', 699 hour: 'å°æ¶å', 700 day: '天å', 701 month: '个æå' 702 }, 703 copyright: undefined, 704 lightbox: 'fancybox', 705 Snackbar: {"chs_to_cht":"å·²åæ¢ä¸ºç¹ä½ä¸æ","cht_to_chs":"å·²åæ¢ä¸ºç®ä½ä¸æ","day_to_night":"å·²åæ¢ä¸ºæ·±è²æ¨¡å¼","night_to_day":"å·²åæ¢ä¸ºæµ è²æ¨¡å¼","bgLight":"#177ecd","bgDark":"#1f1f1f","position":"top-center"}, 706 infinitegrid: { 707 js: 'https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/egjs-infinitegrid/4.12.0/infinitegrid.min.js', 708 buttonText: 'å è½½æ´å¤' 709 }, 710 isPhotoFigcaption: false, 711 islazyloadPlugin: true, 712 isAnchor: false, 713 percent: { 714 toc: true, 715 rightside: true, 716 }, 717 autoDarkmode: false 718}</script>
718<script id="config-diff">var GLOBAL_CONFIG_SITE = { 719 title: 'åæ¹æ± æ°´åæ¹ç°', 720 isHighlightShrink: false, 721 isToc: false, 722 pageType: 'home' 723}</script>
723<link rel="preconnect" href="https://auth.uuanqin.top/" crossorigin><link rel="stylesheet" href="/css/public/iconfont.css?0424"><link rel="stylesheet" href="/css/iconfont_custom.css">
723<script src="/js/random.js?0409"></script>
723<link rel="stylesheet" href="/css/seamless_card.css"><link rel="stylesheet" href="/css/footer.css?0814"><link rel="stylesheet" href="/css/darktheme_modify.css?0424"><link rel="stylesheet" href="/css/markdown-it-obsidian-callouts.css"><link rel="stylesheet" href="/css/bi-links.css?0906"><link rel="stylesheet" href="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/KaTeX/0.16.9/katex.min.css"><meta name="google-site-verification" content="ppz3zz_ljO3DX-zHwknKzh4A9v_qNLtrhhpSDoCdps8" />
723<script src="/pages_unrendered/ai-chat/ai-chat.js?0916"></script>
723<link rel="stylesheet" href="/css/relation_graph_aside.css"><!-- hexo injector head_end start --><link rel="stylesheet" href="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/Swiper/4.1.6/css/swiper.min.css"><link rel="stylesheet" href="/css/public/swiperstyle.css"><!-- hexo injector head_end end --><meta name="generator" content="Hexo 7.3.0"><link rel="alternate" href="/atom.xml" title="åæ¹æ± æ°´åæ¹ç°" type="application/atom+xml"> 724</head><body>
724<script>(function() { 725 const waveDuration = 2500; 726 let waveStartTime = sessionStorage.getItem('oceanWaveStartTime'); 727 if (!waveStartTime) { 728 waveStartTime = Date.now(); 729 sessionStorage.setItem('oceanWaveStartTime', waveStartTime); 730 } 731 const elapsed = (Date.now() - parseInt(waveStartTime)) % waveDuration; 732 document.documentElement.style.setProperty('--wave-offset', '-' + elapsed + 'ms'); 733})(); 734</script>
734<div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div id="loading-hint" onclick="endPreloader()" style="display: none;"><span>ç¹å»å±å¹ä»»æå¤ç´æ¥è¿å
¥</span><span>æ¡©æ¡©ç«å¨éªè¯ä½ ç身份æ¶ï¼è¢«æ¥ææ®µçæ´ªæµæ·¹æ²¡äº</span></div><div class="ocean-wrapper"><div class="ocean"><div class="wave"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 198" width="1600" height="198"><defs><linearGradient id="wave-gradient-1" x1="50%" x2="50%" y1="-10.959%" y2="100%"><stop stop-color="var(--wave-top)" stop-opacity=".25" offset="0%"></stop><stop stop-color="var(--ocean-color)" offset="100%"></stop></linearGradient></defs><path fill="url(#wave-gradient-1)" fill-rule="evenodd" d="M.005 121C311 121 409.898-.25 811 0c400 0 500 121 789 121v77H0s.005-48 .005-77z" transform="matrix(-1 0 0 1 1600 0)"></path></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 198" width="1600" height="198"><path fill="url(#wave-gradient-1)" fill-rule="evenodd" d="M.005 121C311 121 409.898-.25 811 0c400 0 500 121 789 121v77H0s.005-48 .005-77z" transform="matrix(-1 0 0 1 1600 0)"></path></svg></div><div class="wave"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 198" width="1600" height="198"><defs><linearGradient id="wave-gradient-2" x1="50%" x2="50%" y1="-10.959%" y2="100%"><stop stop-color="var(--wave-top)" stop-opacity=".25" offset="0%"></stop><stop stop-color="var(--ocean-color)" offset="100%"></stop></linearGradient></defs><path fill="url(#wave-gradient-2)" fill-rule="evenodd" d="M.005 121C311 121 409.898-.25 811 0c400 0 500 121 789 121v77H0s.005-48 .005-77z" transform="matrix(-1 0 0 1 1600 0)"></path></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 198" width="1600" height="198"><path fill="url(#wave-gradient-2)" fill-rule="evenodd" d="M.005 121C311 121 409.898-.25 811 0c400 0 500 121 789 121v77H0s.005-48 .005-77z" transform="matrix(-1 0 0 1 1600 0)"></path></svg></div></div></div></div>
734<script>(()=>{ 735 const $loadingBox = document.getElementById('loading-box') 736 const $loadingHint = document.getElementById('loading-hint') 737 const $body = document.body 738 let hintTimer = null 739 let forceTimer = null 740 const preloader = { 741 endLoading: () => { 742 if (!$loadingBox || $loadingBox.classList.contains('loaded')) return 743 744 if ($loadingHint && $loadingHint.style.display !== 'none') { 745 $loadingHint.classList.add('exit-active') 746 } 747 748 // æ¸ çææè®¡æ¶å¨ 749 if (hintTimer) clearTimeout(hintTimer) 750 if (forceTimer) clearTimeout(forceTimer) 751 752 $body.style.overflow = '' 753 $loadingBox.classList.add('loaded') 754 }, 755 initLoading: () => { 756 $loadingBox.classList.remove('loaded') 757 if (!$loadingHint) return 758 759 $body.style.overflow = 'hidden' 760 $loadingBox.classList.remove('loaded') 761 $loadingBox.classList.remove('allow-skip') // éç½®ç¶æ 762 if ($loadingHint) { 763 $loadingHint.style.display = 'none' 764 $loadingHint.classList.remove('exit-active') // é置类å 765 } 766 767 // æå¨è·³è¿æé® 768 hintTimer = setTimeout(() => { 769 const currentHint = document.getElementById('loading-hint') 770 const currentBox = document.getElementById('loading-box') 771 if (currentBox && !currentBox.classList.contains('loaded')) { 772 if (currentHint) currentHint.style.display = 'flex' 773 currentBox.classList.add('allow-skip') // å 许ç¹å»æ ·å¼ 774 775 // ç»å®å ¨å±ç¹å»äºä»¶ 776 currentBox.onclick = () => { 777 preloader.endLoading() 778 currentBox.onclick = null // ç¹å»åè§£ç» 779 } 780 } 781 }, 7000) 782 783 forceTimer = setTimeout(() => { 784 if (!$loadingBox.classList.contains('loaded')) { 785 console.warn('Preloader: å è½½è¶ æ¶ï¼å¼ºå¶å ³é') 786 preloader.endLoading() 787 } 788 }, 6000) 789 } 790 } 791 792 preloader.initLoading() 793 794 // 注éæèªå¨ç§»é¤é»è¾ 795 // æä»¬ä¸å¸æå®å¨ window.onload æ¶èªå¨æ¶å¤±ï¼æä»¬è¦æå¨æ§å¶ 796 /* 797 if (document.readyState === 'complete') { 798 preloader.endLoading() 799 } else { 800 window.addEventListener('load', preloader.endLoading) 801 document.addEventListener('DOMContentLoaded', preloader.endLoading) 802 // Add timeout protection: force end after 7 seconds 803 setTimeout(preloader.endLoading, 7000) 804 } 805 */ 806 807 // æ´é²å°å ¨å±ï¼è®©å¤é¨ JS (Keycloak) å¯ä»¥è°ç¨ 808 window.endPreloader = preloader.endLoading 809 810 if (false) { 811 btf.addGlobalFn('pjaxSend', preloader.initLoading, 'preloader_init') 812 btf.addGlobalFn('pjaxComplete', preloader.endLoading, 'preloader_end') 813 } 814})()</script>
814<div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img text-center"><img src="/image/avatar.webp" onerror="this.onerror=null;this.src='/image/loading.gif'" alt="avatar"/></div><div class="site-data text-center"><a href="/archives/"><div class="headline">æç« </div><div class="length-num">239</div></a><a href="/pages/tags/"><div class="headline">æ ç¾</div><div class="length-num">502</div></a><a href="/pages/categories/"><div class="headline">åç±»</div><div class="length-num">29</div></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw iconfont icon-nongtian"></i><span> 主页</span></a></div><div class="menus_item"><span class="site-page group"><i class="fa-fw iconfont icon-guanli"></i><span> 彿¡£</span><i class="fas fa-chevron-down"></i></span><ul class="menus_item_child"><li><a class="site-page child" href="/pages/relation-graph/"><i class="fa-fw iconfont icon-guanxitu"></i><span> å
³ç³»å¾</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw iconfont icon-timeAxis"></i><span> æ¶é´è½´</span></a></li><li><a class="site-page child" href="/pages/categories/"><i class="fa-fw iconfont icon-2"></i><span> åç±»</span></a></li><li><a class="site-page child" href="/pages/tags/"><i class="fa-fw iconfont icon-24gf-tags"></i><span> æ ç¾</span></a></li></ul></div><div class="menus_item"><span class="site-page group"><i class="fa-fw iconfont icon-daimaguanli"></i><span> 项ç®</span><i class="fas fa-chevron-down"></i></span><ul class="menus_item_child"><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/obsidian2cosma"><i class="fa-fw iconfont icon-xinghao"></i><span> PythonCLI obsidian2cosma</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/waline-link-interceptor"><i class="fa-fw iconfont icon-a-lanjiezudangzhangaiwuzuzhi"></i><span> waline-link-interceptor</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/hexo-filter-titlebased-link"><i class="fa-fw iconfont icon-line-bracketszhongkuohao"></i><span> hexo-filter-titlebased-link</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/markdown-it-obsidian-imgsize"><i class="fa-fw iconfont icon-daxiao"></i><span> markdown-it-obsidian-imgsize</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/busuanzi2waline"><i class="fa-fw iconfont icon-suantou"></i><span> PythonCLI busuanzi2waline</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://greasyfork.org/zh-CN/scripts/466046-%E7%9F%A5%E7%BD%91-%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE-bibtex-%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6"><i class="fa-fw iconfont icon-yinyong"></i><span> UserScripts bibtex-TJU</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/hexo-filter-custom-link"><i class="fa-fw iconfont icon-neibujiekou"></i><span> hexo-filter-custom-link</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/Reactor-Idle-Save-Editor"><i class="fa-fw iconfont icon-hefushe"></i><span> Reactor Idle Save Editor</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:randomPost();" rel="external nofollow noreferrer"><i class="fa-fw iconfont icon-suijibofang"></i><span> éæº</span></a></div><div class="menus_item"><a class="site-page" target="_blank" rel="noopener external nofollow noreferrer" href="https://www.travellings.cn/go-by-clouds.html"><i class="fa-fw iconfont icon-huochepiao"></i><span> å¼å¾</span></a></div><div class="menus_item"><a class="site-page" href="/pages/friends/"><i class="fa-fw iconfont icon-pengyoufill"></i><span> åé¾</span></a></div><div class="menus_item"><a class="site-page" href="/pages/friend_circle/"><i class="fa-fw iconfont icon-pengyouquan"></i><span> æåå</span></a></div><div class="menus_item"><span class="site-page group"><i class="fa-fw iconfont icon-guanfangwangzhan"></i><span> å
³äº</span><i class="fas fa-chevron-down"></i></span><ul class="menus_item_child"><li><a class="site-page child" href="/pages/about/"><i class="fa-fw iconfont icon-mao"></i><span> å
³äºæ¬ç«</span></a></li><li><a class="site-page child" href="/sitemap.xml"><i class="fa-fw iconfont icon-ditu"></i><span> ç«ç¹å°å¾</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://pl.uuanqin.top/ui"><i class="fa-fw iconfont icon-w"></i><span> è¯è®ºåå°</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://uuanqin.instatus.com/"><i class="fa-fw iconfont icon-jiankong"></i><span> ç«ç¹ç¶æ</span></a></li><li><a class="site-page child" href="/pages/building/"><i class="fa-fw fa-solid fa-road-barrier"></i><span> æµè¯é¡µ</span></a></li></ul></div></div></div></div><div class="page" id="body-wrap"><header class="not-top-img fixed" id="page-header"><nav id="nav"><span id="blog-info"><a class="nav-site-title" href="/"><img class="site-icon" src="/image/logo-bc.webp" alt="Logo"><span class="site-name">
814åæ¹æ± æ°´åæ¹ç°</span></a></span><div id="menus"><div id="search-button"><span class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> æç´¢</span></span></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw iconfont icon-nongtian"></i><span> 主页</span></a></div><div class="menus_item"><span class="site-page group"><i class="fa-fw iconfont icon-guanli"></i><span> 彿¡£</span><i class="fas fa-chevron-down"></i></span><ul class="menus_item_child"><li><a class="site-page child" href="/pages/relation-graph/"><i class="fa-fw iconfont icon-guanxitu"></i><span> å
³ç³»å¾</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw iconfont icon-timeAxis"></i><span> æ¶é´è½´</span></a></li><li><a class="site-page child" href="/pages/categories/"><i class="fa-fw iconfont icon-2"></i><span> åç±»</span></a></li><li><a class="site-page child" href="/pages/tags/"><i class="fa-fw iconfont icon-24gf-tags"></i><span> æ ç¾</span></a></li></ul></div><div class="menus_item"><span class="site-page group"><i class="fa-fw iconfont icon-daimaguanli"></i><span> 项ç®</span><i class="fas fa-chevron-down"></i></span><ul class="menus_item_child"><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/obsidian2cosma"><i class="fa-fw iconfont icon-xinghao"></i><span> PythonCLI obsidian2cosma</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/waline-link-interceptor"><i class="fa-fw iconfont icon-a-lanjiezudangzhangaiwuzuzhi"></i><span> waline-link-interceptor</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/hexo-filter-titlebased-link"><i class="fa-fw iconfont icon-line-bracketszhongkuohao"></i><span> hexo-filter-titlebased-link</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/markdown-it-obsidian-imgsize"><i class="fa-fw iconfont icon-daxiao"></i><span> markdown-it-obsidian-imgsize</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/busuanzi2waline"><i class="fa-fw iconfont icon-suantou"></i><span> PythonCLI busuanzi2waline</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://greasyfork.org/zh-CN/scripts/466046-%E7%9F%A5%E7%BD%91-%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE-bibtex-%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6"><i class="fa-fw iconfont icon-yinyong"></i><span> UserScripts bibtex-TJU</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/hexo-filter-custom-link"><i class="fa-fw iconfont icon-neibujiekou"></i><span> hexo-filter-custom-link</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/uuanqin/Reactor-Idle-Save-Editor"><i class="fa-fw iconfont icon-hefushe"></i><span> Reactor Idle Save Editor</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:randomPost();" rel="external nofollow noreferrer"><i class="fa-fw iconfont icon-suijibofang"></i><span> éæº</span></a></div><div class="menus_item"><a class="site-page" target="_blank" rel="noopener external nofollow noreferrer" href="https://www.travellings.cn/go-by-clouds.html"><i class="fa-fw iconfont icon-huochepiao"></i><span> å¼å¾</span></a></div><div class="menus_item"><a class="site-page" href="/pages/friends/"><i class="fa-fw iconfont icon-pengyoufill"></i><span> åé¾</span></a></div><div class="menus_item"><a class="site-page" href="/pages/friend_circle/"><i class="fa-fw iconfont icon-pengyouquan"></i><span> æåå</span></a></div><div class="menus_item"><span class="site-page group"><i class="fa-fw iconfont icon-guanfangwangzhan"></i><span> å
³äº</span><i class="fas fa-chevron-down"></i></span><ul class="menus_item_child"><li><a class="site-page child" href="/pages/about/"><i class="fa-fw iconfont icon-mao"></i><span> å
³äºæ¬ç«</span></a></li><li><a class="site-page child" href="/sitemap.xml"><i class="fa-fw iconfont icon-ditu"></i><span> ç«ç¹å°å¾</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://pl.uuanqin.top/ui"><i class="fa-fw iconfont icon-w"></i><span> è¯è®ºåå°</span></a></li><li><a class="site-page child" target="_blank" rel="noopener external nofollow noreferrer" href="https://uuanqin.instatus.com/"><i class="fa-fw iconfont icon-jiankong"></i><span> ç«ç¹ç¶æ</span></a></li><li><a class="site-page child" href="/pages/building/"><i class="fa-fw fa-solid fa-road-barrier"></i><span> æµè¯é¡µ</span></a></li></ul></div></div><div id="toggle-menu"><span class="site-page"><i class="fas fa-bars fa-fw"></i></span></div></div></nav><h1 class="title-seo">åæ¹æ± æ°´åæ¹ç°</h1></header><main class="layout" id="content-inner"><div class="recent-posts nc masonry" id="recent-posts"><div class="recent-post-items"><div class="recent-post-item"><div class="post_cover"><a href="/p/83e94555/" title="å°çç§°éé®é¢åå
¶å¼ç³çæè"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202606060505478.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="å°çç§°éé®é¢åå
¶å¼ç³çæè"></a></div><div class="recent-post-info"><a class="article-title" href="/p/83e94555/" title="å°çç§°éé®é¢åå
¶å¼ç³çæè">å°çç§°éé®é¢åå
¶å¼ç³çæè</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-06-06T18:43:40.000Z" title="åè¡¨äº 2026-06-06 18:43:40">2026-06-06</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-06-06T23:19:45.000Z" title="æ´æ°äº 2026-06-06 23:19:45">2026-06-06</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E6%95%B0%E5%AD%A6/">æ°å¦</a></span></div><div class="content">è¿ä¸ªç¼ç æ³æ¯æä¹æ³åºæ¥ç</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/1a18533a/" title="èè²çç»æè²"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202606041739326.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="èè²çç»æè²"></a></div><div class="recent-post-info"><a class="article-title" href="/p/1a18533a/" title="èè²çç»æè²">èè²çç»æè²</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-06-04T01:58:41.000Z" title="åè¡¨äº 2026-06-04 01:58:41">2026-06-04</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-06-08T00:45:18.000Z" title="æ´æ°äº 2026-06-08 00:45:18">2026-06-08</time></span></div><div class="content">æ¢å¸¸è§åç¹æ®</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/e65d5d53/" title="ç
æ¯æ¯ä¸æ¯çç©ï¼"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/2026051
81470316130.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="ç
æ¯æ¯ä¸æ¯çç©ï¼"></a></div><div class="recent-post-info"><a class="article-title" href="/p/e65d5d53/" title="ç
æ¯æ¯ä¸æ¯çç©ï¼">ç
æ¯æ¯ä¸æ¯çç©ï¼</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-05-17T01:34:08.000Z" title="åè¡¨äº 2026-05-17 01:34:08">2026-05-17</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-17T04:40:29.000Z" title="æ´æ°äº 2026-05-17 04:40:29">2026-05-17</time></span></div><div class="content">ä¸ç¯å°å°çæ¢ç©¶</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/6be57bc5/" title="æå客åå¸äº¤ç» GitHub Actions"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202605102024375.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="æå客åå¸äº¤ç» GitHub Actions"></a></div><div class="recent-post-info"><a class="article-title" href="/p/6be57bc5/" title="æå客åå¸äº¤ç» GitHub Actions">æå客åå¸äº¤ç» GitHub Actions</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-05-10T19:40:14.000Z" title="åè¡¨äº 2026-05-10 19
814:40:14">2026-05-10</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-11T01:53:26.000Z" title="æ´æ°äº 2026-05-11 01:53:26">2026-05-11</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/">å客ç«ç¹ç»´æ¤</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/Hexo/">Hexo</a></span></div><div class="content">3 å¹´åææ³èµ·æ¥è¦æ¹é ï¼</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/bddedde3/" title="çå¤å±
æ°èº«ä»½è¯çè¡¥æ¢é¢ï¼èå·ï¼"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604280026432.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="çå¤å±
æ°èº«ä»½è¯çè¡¥æ¢é¢ï¼èå·ï¼"></a></div><div class="recent-post-info"><a class="article-title" href="/p/bddedde3/" title="çå¤å±
æ°èº«ä»½è¯çè¡¥æ¢é¢ï¼èå·ï¼">çå¤å±
æ°èº«ä»½è¯çè¡¥æ¢é¢ï¼èå·ï¼</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-27T23:24:53.000Z" title="åè¡¨äº 2026-04-27 23:24:53">2026-04-27</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-14T02:38:58.000Z" title="æ´æ°äº 2026-05-14 02:38:58">2026-05-14</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E7%99%BE%E5%91%B3%E4%BA%BA%E7%94%9F/">ç¾å³äººç</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E7%99%BE%E5%91%B3%E4%BA%BA%E7%94%9F/%E7%A4%BE%E4%BC%9A%E7%94%9F%E6%B4%BB/">社ä¼çæ´»</a></span></div><div class="content">é常æ¹ä¾¿å¿«éçåè¯æµç¨ï¼å¸æé®å¯ä¹è¦å¾å¿«éã</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/9c61131/" title="hexo-filter-titlebased-linkï¼æå»ºä½ çæ°åè±å"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604241536499.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="hexo-filter-titlebased-linkï¼æå»ºä½ çæ°åè±å"></a></div><div class="recent-post-info"><a class="article-title" href="/p/9c61131/" title="hexo-filter-titlebased-linkï¼æå»ºä½ çæ°åè±å">hexo-filter-titlebased-linkï¼æå»ºä½ çæ°åè±å</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-24T21:14:24.000Z" title="åè¡¨äº 2026-04-24 21:14:24">2026-04-24</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-09T06:45:35.000Z" title="æ´æ°äº 2026-05-09 06:45:35">2026-05-09</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/">å客ç«ç¹ç»´æ¤</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/Hexo/">Hexo</a></span></div><div class="content">为 Hexo æ°åè±åçå®ç°æä¾äºå¯è½</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/11ce9d57/" title="Vercel åºç¨å®è·µå¦ä¹ "><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604211550776.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="Vercel åºç¨å®è·µå¦ä¹ "></a></div><div class="recent-post-info"><a class="article-title" href="/p/11ce9d57/" title="Vercel åºç¨å®è·µå¦ä¹ ">Vercel åºç¨å®è·µå¦ä¹ </a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-21T16:06:40.000Z" title="åè¡¨äº 2026-04-21 16:06:40">2026-04-21</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-04-24T08:43:07.000Z" title="æ´æ°äº 2026-04-24 08:43:07">2026-04-24</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%B7%A5%E7%A8%8B/">å·¥ç¨</a></span></div><div class="content">Vercel åºç¨å®è·µè®°å½é</div></div></div><div class="recent-post-item"><div class="post_cover">
814<a href="/p/9d81ea9f/" title="éè¿ä¸ Keycloak é
åå®ç°å客æç« çåé访é®åè½"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604201838815.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="éè¿ä¸ Keycloak é
åå®ç°å客æç« çåé访é®åè½"></a></div><div class="recent-post-info"><a class="article-title" href="/p/9d81ea9f/" title="éè¿ä¸ Keycloak é
åå®ç°å客æç« çåé访é®åè½">éè¿ä¸ Keycloak é
åå®ç°å客æç« çåé访é®åè½</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-20T19:38:56.000Z" title="åè¡¨äº 2026-04-20 19:38:56">2026-04-20</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-04-23T17:21:44.000Z" title="æ´æ°äº 2026-04-23 17:21:44">2026-04-23</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/">å客ç«ç¹ç»´æ¤</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/Hexo/">Hexo</a></span></div><div class="content">èªç±è¾åºå
容åå°çæåä¸åç ï¼</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/6472cf77/" title="éå
¬å¼çæç« Soft Mode"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604201508619.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="éå
¬å¼çæç« Soft Mode"></a></div><div class="recent-post-info"><a class="article-title" href="/p/6472cf77/" title="éå
¬å¼çæç« Soft Mode">éå
¬å¼çæç« Soft Mode</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-17T22:06:48.000Z" title="åè¡¨äº 2026-04-17 22:06:48">2026-04-17</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-04-23T17:21:44.000Z" title="æ´æ°äº 2026-04-23 17:21:44">2026-04-23</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E9%98%BF-%E6%B5%8B%E8%AF%95%E6%96%87%E7%AB%A0/">é¿-æµè¯æç« </a></span></div><div class="content">Soft ææçæç« å 坿µè¯ã</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/cb840d58/" title="éå
¬å¼çæç« Strict Mode"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604201510420.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="éå
¬å¼çæç« Strict Mode"></a></div><div class="recent-post-info"><a class="article-title" href="/p/cb840d58/" title="éå
¬å¼çæç« Strict Mode">éå
¬å¼çæç« Strict Mode</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-17T22:06:48.000Z" title="åè¡¨äº 2026-04-17 22:06:48">2026-04-17</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-04-23T17:21:44.000Z" title="æ´æ°äº 2026-04-23 17:21:44">2026-04-23</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E9%98%BF-%E6%B5%8B%E8%AF%95%E6%96%87%E7%AB%A0/">é¿-æµè¯æç« </a></span></div><div class="content">Strict ææçæç« å 坿µè¯ã</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/da4ac563/" title="è¯è¯ç¨ä»£ç åå¨ Hexo 䏿å
¥å®åµç
§ç"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604142323499.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="è¯è¯ç¨ä»£ç åå¨ Hexo 䏿å
¥å®åµç
§ç"></a></div><div class="recent-post-info"><a class="article-title" href="/p/da4ac563/" title="è¯è¯ç¨ä»£ç åå¨ Hexo 䏿å
¥å®åµç
§ç">è¯è¯ç¨ä»£ç åå¨ Hexo 䏿å
¥å®åµç
§ç</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-15T04:01:27.000Z" title="åè¡¨äº 2026-04-15 04:01:27">2026-04-15</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-05T17:36:40.000Z" title="æ´æ°äº 2026-05-05 17:36:40">2026-05-05</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/">å客ç«ç¹ç»´æ¤</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/Hexo/">Hexo</a></span></div><div class="content">ä¾è¡çæä»¶æ¨å¹¿æï¼ä¸è¿è¿ç¯æç« åæäºå¾å¤å¼åæè®°</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/6338f82f/" title="卿å¾çæµè¯"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/ezgif-5901921d3f722129260414(1)dfsfdf.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="卿å¾çæµè¯"></a></div><div class="recent-post-info"><a class="article-title" href="/p/6338f82f/" title="卿å¾çæµè¯">卿å¾çæµè¯</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-14T21:36:40.000Z" title="åè¡¨äº 2026-04-14 21:36:40">2026-04-14</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-04-18T15:03:55.000Z" title="æ´æ°äº 2026-04-18 15:03:55">2026-04-18</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E9%98%BF-%E6%B5%8B%E8%AF%95%E6%96%87%E7%AB%A0/">é¿-æµè¯æç« </a></span></div><div class="content">ç¨äºæµè¯æä»¶ hexo-filter-live-photo</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/85371005/" title="Hexo-Butterfly ä¸»é¢ Preloader å 载页å®å¶"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604122346780.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="Hexo-Butterfly ä¸»é¢ Preloader å 载页å®å¶"></a></div><div class="recent-post-info"><a class="article-title" href="/p/85371005/" title="Hexo-Butterfly ä¸»é¢ Preloader å 载页å®å¶">Hexo-Butterfly ä¸»é¢ Preloader å 载页å®å¶</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-13T02:00:01.000Z" title="åè¡¨äº 2026-04-13 02:00:01">2026-04-13</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-09T06:45:35.000Z" title="æ´æ°äº 2026-05-09 06:45:35">2026-05-09</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/">å客ç«ç¹ç»´æ¤</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/Hexo/">Hexo</a></span></div><div class="content">æ¹é åç主é¢ä»£ç ï¼æåæ©å±æ§</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/131c2726/" title="Keycloak çé¨ç½²ä»¥å Hexo-Butterfly ç½é¡µåºç¨çæ¥å
¥"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604090356813.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="Keycloak çé¨ç½²ä»¥å Hexo-Butterfly ç½é¡µåºç¨çæ¥å
¥"></a></div><div class="recent-post-info"><a class="article-title" href="/p/131c2726/" title="Keycloak çé¨ç½²ä»¥å Hexo-Butterfly ç½é¡µåºç¨çæ¥å
¥">Keycloak çé¨ç½²ä»¥å Hexo-Butterfly ç½é¡µåºç¨çæ¥å
¥</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-09T04:05:44.000Z" title="åè¡¨äº 2026-04-09 04:05:44">2026-04-09</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-11T22:16:05.000Z" title="æ´æ°äº 2026-05-11 22:16:05">2026-05-11</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/">å客ç«ç¹ç»´æ¤</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/Hexo/">Hexo</a></span></div><div class="content">AI Codingç䏿¬¡å®è·µï¼ä¸ºæææç« åè½ååºç¡</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/717b7000/" title="éæºè®¿é®æç« çå®ç°ï¼Sitemap+æ¬å°ç¼åä¼åï¼"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202604072317388.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="éæºè®¿é®æç« çå®ç°ï¼Sitemap+æ¬å°ç¼åä¼åï¼"></a></div><div class="recent-post-info"><a class="article-title" href="/p/717b7000/" title="éæºè®¿é®æç« çå®ç°ï¼Sitemap+æ¬å°ç¼åä¼åï¼">éæºè®¿é®æç« çå®ç°ï¼Sitemap+æ¬å°ç¼åä¼åï¼</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-04-07T23:07:00.000Z" title="åè¡¨äº 2026-04-07 23:07:00">2026-04-07</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-10T18:33:38.000Z" title="æ´æ°äº 2026-05-10 18:33:38">2026-05-10</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/">å客ç«ç¹ç»´æ¤</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/Hexo/">Hexo</a></span></div><div class="content">AI å¢å¼ºå客ç½ç«çæ¡ä¾</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/7146cec9/" title="Authentik çé¨ç½²è®°å½"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202603230025669.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="Authentik çé¨ç½²è®°å½"></a></div><div class="recent-post-info"><a class="article-title" href="/p/7146cec9/" title="Authentik çé¨ç½²è®°å½">Authentik çé¨ç½²è®°å½</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-03-20T19:49:53.000Z" title="åè¡¨äº 2026-03-20 19:49:53">2026-03-20</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-04-08T19:46:39.000Z" title="æ´æ°äº 2026-04-08 19:46:39">2026-04-08</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%B7%A5%E7%A8%8B/">å·¥ç¨</a></span></div><div class="content">æåè¿æ¯æå</div></div></div><div class="recent-post-item"><div class="post_cover"><a href="/p/c7d4d021/" title="Waline èªå»º Auth 认è¯"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202603162244501.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="Waline èªå»º Auth 认è¯"></a></div><div class="recent-post-info"><a class="article-title" href="/p/c7d4d021/" title="Waline èªå»º Auth 认è¯">Waline èªå»º Auth 认è¯</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-03-19T17:25:03.000Z" title="åè¡¨äº 2026-03-19 17:25:03">2026-03-19</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-04-08T19:46:39.000Z" title="æ´æ°äº 2026-04-08 19:46:39">2026-04-08</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/">å客ç«ç¹ç»´æ¤</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E5%8D%9A%E5%AE%A2%E7%AB%99%E7%82%B9%E7%BB%B4%E6%8A%A4/Waline/">Waline</a></span></div><div class="content">Waline èªå®ä¹ç¬¬ä¸æ¹è®¤è¯ï¼æ¯æ¥å
¥å客ç»ä¸è®¤è¯ç»å½ç³»ç»çå¼å§</div></div></div><div class="recent-post-item"><div class="post_cover">
814<a href="/p/2fa44e03/" title="è®°ä¸æ¬¡è¡ææè¿çèµæµç¨ï¼åèªï¼"><img class="post-bg" src="https://cdn.gallery.uuanqin.top/img/202603142155896.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="è®°ä¸æ¬¡è¡ææè¿çèµæµç¨ï¼åèªï¼"></a></div><div class="recent-post-info"><a class="article-title" href="/p/2fa44e03/" title="è®°ä¸æ¬¡è¡ææè¿çèµæµç¨ï¼åèªï¼">è®°ä¸æ¬¡è¡ææè¿çèµæµç¨ï¼åèªï¼</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">å表äº</span><time class="post-meta-date-created" datetime="2026-03-14T22:10:50.000Z" title="åè¡¨äº 2026-03-14 22:10:50">2026-03-14</time><span class="article-meta-separator">|</span><i class="fas fa-history"></i><span class="article-meta-label">æ´æ°äº</span><time class="post-meta-date-updated" datetime="2026-05-11T02:31:07.000Z" title="æ´æ°äº 2026-05-11 02:31:07">2026-05-11</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E7%99%BE%E5%91%B3%E4%BA%BA%E7%94%9F/">ç¾å³äººç</a><i class="fas fa-angle-right article-meta-link"></i><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/pages/categories/%E7%99%BE%E5%91%B3%E4%BA%BA%E7%94%9F/%E7%A4%BE%E4%BC%9A%E7%94%9F%E6%B4%BB/">社ä¼çæ´»</a></span></div><div class="content">æçæ¯è¦é èªå·±å»äºåç</div></div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><span class="space">…</span><a class="page-number" href="/page/14/#content-inner">14</a><a class="extend next" rel="next" href="/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info text-center"><div class="avatar-img"><img src="/image/avatar.webp" onerror="this.onerror=null;this.src='/image/loading.gif'" alt="avatar"/></div><div class="author-info-name">wuanqin</div><div class="author-info-description">åªè½æä¸ç¹ç¹</div><div class="site-data"><a href="/archives/"><div class="headline">æç« </div><div class="length-num">239</div></a><a href="/pages/tags/"><div class="headline">æ ç¾</div><div class="length-num">502</div></a><a href="/pages/categories/"><div class="headline">åç±»</div><div class="length-num">29</div></a></div><div class="card-info-social-icons"><a class="social-icon" href="https://github.com/uuanqin" rel="external nofollow noreferrer" target="_blank" title="Github"><i class="fa-brands fa-github"></i></a><a class="social-icon" href="/cdn-cgi/l/email-protection#522727333c233b3c122727333c233b3c7c263d22" target="_blank" title="Email"><i class="fa-solid fa-at"></i></a><a class="social-icon" href="/atom.xml" target="_blank" title="RSS"><i class="fa-solid fa-rss"></i></a><a class="social-icon" href="https://app.follow.is/share/users/uuanqin" rel="external nofollow noreferrer" target="_blank" title="Follow"><i class="fa-solid fa-square-rss"></i></a><a class="social-icon" href="https://steamcommunity.com/id/uuanqin/" rel="external nofollow noreferrer" target="_blank" title="Steam"><i class="fa-brands fa-steam"></i></a></div></div><!-- ææ¶ä¸è®¾ç½®ä¸»é¢å¼å ³ï¼å ¨é¨ç¡¬ç¼ç ï¼--><div class="card-login text-center"><div class="kc-user-btn-container" id="kcUserContainer"><!-- ð¥ æ¹ä¸ºæ°IDï¼card-login-btn--><a id="kc-default-btn" href="javascript:;" rel="external nofollow noreferrer"><i class="fa-solid fa-address-card"></i><span id="kcBtnText">ç»ä¸è®¤è¯ç»å½</span></a><div class="kc-hover-menu"><a id="kc-profile-btn">æ¥çä¿¡æ¯</a><a class="kc-logout-btn" id="kc-logout-btn">éåºç»å½</a></div></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>å ¬å</span></div><div class="announcement_content"><div> 815 ð¼å主ä¸çäºï¼å客维æ¤å¨ææé¿ãå´æ°çæ¬çå客æä¸æ¥ç¨ï¼å¨ä¸ä¹ çå°æ¥å°±ä¼å大家è§é¢ï¼<br> 816 ðå½å å¤è®¿é®æ¬ç«çé度æ´å¿«äºï¼<br> 817 ð¡ï¸è´¦åä¿å«æï¼æ¬ç«å·²æ¥å ¥è¾¹ç¼é²å¾¡ã<br> 818</div></div></div><div class="card-widget seamless-card card-knowledge-graph"><div class="item-headline"><i></i><span></span></div><div class="item-content"><div id="aside-graph-container" style="width: 100%; height: 300px; position: relative;"> 819 <div id="aside-graph-loading" style="position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); color:#999; font-size:12px;"> 820 å è½½ä¸... 821 </div> 822</div> 823</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>ææ°æç« </span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/p/1a18533a/" title="èè²çç»æè²"><img src="https://cdn.gallery.uuanqin.top/img/202606041739326.webp" onerror="this.onerror=null;this.src='/image/404img.webp'" alt="èè²çç»æè²"/></a><div class="content"><a class="title" href="/p/1a18533a/" title="èè²çç»æè²">èè²çç»æè²</a><time datetime="2026-06-08T00:45:18.000Z" title="æ´æ°äº 2026-06-08 00:45:18">2026-06-08</time></div></div></div></div><div class="card-widget" id="card-newest-comments"><div class="item-headline"><i class="fas fa-comment-dots"></i><span>ææ°è¯è®º</span></div><div class="aside-list"><span>å è½½ä¸...</span></div></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>ç½ç«ä¿¡æ¯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">æç« æ°ç® :</div><div class="item-count">239</div></div><div class="webinfo-item"><div class="item-name">æ¬ç«æ»åæ° :</div><div class="item-count">574.3k</div></div><div class="webinfo-item"><div class="item-name">æåæ´æ°æ¶é´ :</div><div class="item-count" id="last-push-date" data-lastPushDate="2026-08-23T16:23:30.094Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer"><div class="footer-other"><div class="footer-copyright"></div><div class="footer_custom_text"><div> 824 <div class='my-footer-svg-div'> 825 <svg class='my-footer-wave-svg' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 100' 826 preserveAspectRatio='none'> 827 <path class='my-footer-wave-path' 828 d='M851.8,100c125,0,288.3-45,348.2-64V0H0v44c3.7-1,7.3-1.9,11-2.9C80.7,22,151.7,10.8,223.5,6.3C276.7,2.9,330,4,383,9.8 c52.2,5.7,103.3,16.2,153.4,32.8C623.9,71.3,726.8,100,851.8,100z'></path> 829 </svg> 830 </div> 831 <div class='my-footer-content-div'> 832 <div class='my-footer-content'> 833 <div class='my-footer-content-column'> 834 <div class='my-footer-logo'> 835 <a class='my-footer-logo-link' href='#'>
836 <span class='hidden-link-text'>LOGO</span> 837 <img src='/image/footer/qlogo_white_no_words.png' style='height:40%; width:40%'> 838 </a> 839 </div> 840 <div class='my-footer-menu'> 841 <h2 class='my-footer-menu-name'>å¼å§</h2> 842 <ul id='menu-get-started' class='my-footer-menu-list'> 843 <li class='menu-item menu-item-type-post_type menu-item-object-product'> 844 <a href='/pages/about/'>å ³äºæ¬ç«</a> 845 </li> 846 </ul> 847 </div> 848 </div> 849 <div class='my-footer-content-column'> 850 <div class='my-footer-menu'> 851 <h2 class='my-footer-menu-name'>å¿«é龿¥</h2> 852 <ul id='menu-company' class='my-footer-menu-list'> 853 <li class='menu-item menu-item-type-post_type menu-item-object-product'> 854 <a target="_blank" rel="noopener external nofollow noreferrer" href='https://hexo.io/zh-cn/'>Hexo</a> ⨯ <a 855 target="_blank" rel="noopener" href='https://github.com/jerryc127/hexo-theme-butterfly'>Butterfly</a> 856 </li> 857 <li class='menu-item menu-item-type-taxonomy menu-item-object-category'> 858 <a href='/archives/'>æ¶é´è½´</a> | <a 859 href='/pages/relation-graph/'>å ³ç³»å¾</a> | <a 860 href='/pages/categories/'>åç±»</a> 861 </li> 862 <li class='menu-item menu-item-type-post_type menu-item-object-product'> 863 <a href='/p/91b7dad/'>忬¾é¡µè</a> 864 </li> 865 <li class='menu-item menu-item-type-post_type menu-item-object-product'> 866 <a href='https://www.foreverblog.cn/' rel='noopener external nofollow noreferrer' 867 target='_blank'> <img class='img-foreverblog' 868 src='/image/footer/forever_logo_en_default_white.png' alt='' 869 style='width:auto;height:21px;margin-top:6px'> </a> 870 </li> 871 </ul> 872 </div> 873 874 </div> 875 876 <div class='my-footer-content-column'> 877 <div class='my-footer-menu'> 878 <h2 class='my-footer-menu-name'>æ³å¾å£°æ</h2> 879 <ul id='menu-legal' class='my-footer-menu-list'> 880 <li class='menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-170434'> 881 <a href='/pages/privacy/'>éç§æ¿ç</a> 882 </li> 883 </ul> 884 </div> 885 <div class='my-footer-call-to-action'> 886 <h2 class='my-footer-call-to-action-title'>èç³»æ¬ç«</h2> 887 <ul id='menu-contact' class='my-footer-menu-list'> 888 <li class='menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-170434'> 889 <a href='/pages_unrendered/wechatOA/index.html'>å¾®ä¿¡å ¬ä¼å·</a> 890 </li> 891 892 <li class='menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-170434'> 893 <a class='my-footer-call-to-action-link' href="/cdn-cgi/l/email-protection#a0d5d5c1ced1c9cee0d5d5c1ced1c9ce8ed4cfd0" target='_self'> 894 uuan<span style='display:none'>@</span>qi<!-- >@ -->n@<span 895 style='display:none'>@</span>uu<!-- >@. -->an<span style='display:none'>@</span>qin.top 896 </a> 897 </li> 898 899 </ul> 900 </div> 901 902 </div> 903 <div class='my-footer-content-column'> 904 <ul id='menu-copyright' class='my-footer-menu-list'> 905 <li class='menu-item menu-item-type-post_type menu-item-object-product'> 906 <a href='https://notbyai.fyi/' target='_blank' rel='external nofollow noopener noreferrer'><img 907 class='img-not-ai' src='/image/footer/Written-By-Human-Not-By-AI-Badge-white.svg' 908 alt='Written by Human, Not by AI'></a> 909 </li> 910 <li class='menu-item menu-item-type-post_type menu-item-object-product'> 911 <a href='/pages/copyright/'><img src='/image/footer/by-nc-sa.svg' 912 alt='ç½²å-éå䏿§ä½¿ç¨-ç¸åæ¹å¼å ±äº« 4.0 å½é '></a> 913 </li> 914 915 <li class='menu-item menu-item-type-post_type menu-item-object-product'> 916 ©2022-
vendor: 108 bytes, line 916
916<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
916<script>document.write(new Date().getFullYear())</script>
916 By wuanqin 917 </li> 918 </ul> 919 </div> 920 921 <div class='my-footer-social-links'> 922 <svg class='my-footer-social-amoeba-svg' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 236 54'> 923 <path class='my-footer-social-amoeba-path' 924 d='M223.06,43.32c-.77-7.2,1.87-28.47-20-32.53C187.78,8,180.41,18,178.32,20.7s-5.63,10.1-4.07,16.7-.13,15.23-4.06,15.91-8.75-2.9-6.89-7S167.41,36,167.15,33a18.93,18.93,0,0,0-2.64-8.53c-3.44-5.5-8-11.19-19.12-11.19a21.64,21.64,0,0,0-18.31,9.18c-2.08,2.7-5.66,9.6-4.07,16.69s.64,14.32-6.11,13.9S108.35,46.5,112,36.54s-1.89-21.24-4-23.94S96.34,0,85.23,0,57.46,8.84,56.49,24.56s6.92,20.79,7,24.59c.07,2.75-6.43,4.16-12.92,2.38s-4-10.75-3.46-12.38c1.85-6.6-2-14-4.08-16.69a21.62,21.62,0,0,0-18.3-9.18C13.62,13.28,9.06,19,5.62,24.47A18.81,18.81,0,0,0,3,33a21.85,21.85,0,0,0,1.58,9.08,16.58,16.58,0,0,1,1.06,5A6.75,6.75,0,0,1,0,54H236C235.47,54,223.83,50.52,223.06,43.32Z'></path> 925 </svg> 926 <a class='my-footer-social-link github' href='https://github.com/uuanqin' target='_blank' 927 rel='external nofollow noopener noreferrer'> 928 <span class='hidden-link-text'>Github</span> 929 <svg class='my-footer-social-icon-svg' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'> 930 <path class='my-footer-social-icon-path' 931 d='M 16 4 C 9.371094 4 4 9.371094 4 16 C 4 21.300781 7.4375 25.800781 12.207031 27.386719 C 12.808594 27.496094 13.027344 27.128906 13.027344 26.808594 C 13.027344 26.523438 13.015625 25.769531 13.011719 24.769531 C 9.671875 25.492188 8.96875 23.160156 8.96875 23.160156 C 8.421875 21.773438 7.636719 21.402344 7.636719 21.402344 C 6.546875 20.660156 7.71875 20.675781 7.71875 20.675781 C 8.921875 20.761719 9.554688 21.910156 9.554688 21.910156 C 10.625 23.746094 12.363281 23.214844 13.046875 22.910156 C 13.15625 22.132813 13.46875 21.605469 13.808594 21.304688 C 11.144531 21.003906 8.34375 19.972656 8.34375 15.375 C 8.34375 14.0625 8.8125 12.992188 9.578125 12.152344 C 9.457031 11.851563 9.042969 10.628906 9.695313 8.976563 C 9.695313 8.976563 10.703125 8.65625 12.996094 10.207031 C 13.953125 9.941406 14.980469 9.808594 16 9.804688 C 17.019531 9.808594 18.046875 9.941406 19.003906 10.207031 C 21.296875 8.65625 22.300781 8.976563 22.300781 8.976563 C 22.957031 10.628906 22.546875 11.851563 22.421875 12.152344 C 23.191406 12.992188 23.652344 14.0625 23.652344 15.375 C 23.652344 19.984375 20.847656 20.996094 18.175781 21.296875 C 18.605469 21.664063 18.988281 22.398438 18.988281 23.515625 C 18.988281 25.121094 18.976563 26.414063 18.976563 26.808594 C 18.976563 27.128906 19.191406 27.503906 19.800781 27.386719 C 24.566406 25.796875 28 21.300781 28 16 C 28 9.371094 22.628906 4 16 4 Z '></path> 932 </svg> 933 </a> 934 <a class='my-footer-social-link email' href="/cdn-cgi/l/email-protection#403535212e31292e003535212e31292e6e342f30" target='_blank' rel='external nofollow noopener noreferrer'> 935 <span class='hidden-link-text'>Email</span> 936 <svg class='my-footer-social-icon-svg' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'> 937 <!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --> 938 <path class='my-footer-social-icon-path' 939 d='M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z' /> 940 </svg> 941 </a> 942 <a class='my-footer-social-link follow' href='https://app.follow.is/share/users/uuanqin' target='_blank' 943 rel='external nofollow noopener noreferrer'>
944 <span class='hidden-link-text'>Folo</span> 945 <svg class='my-footer-social-icon-svg' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'> 946 <!--!Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--> 947 <path class='my-footer-social-icon-path' 948 d='M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z' /> 949 </svg> 950 </a> 951 <a class='my-footer-social-link rss' href='/atom.xml' target='_blank' 952 rel='external nofollow noopener noreferrer'> 953 <span class='hidden-link-text'>RSS</span> 954 <svg class='my-footer-social-icon-svg' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'> 955 <!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --> 956 <path class='my-footer-social-icon-path' 957 d='M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z' /> 958 </svg> 959 </a> 960 961 </div> 962 </div> 963 </div> 964 <div class='my-footer-copyright'> 965 <div class='my-footer-copyright-wrapper'> 966 <p class='my-footer-copyright-text'> 967 <a target="_blank" href='https://beian.miit.gov.cn/' rel="noopener external nofollow noreferrer noopener"><img class='icp-icon' 968 src='/image/footer/icp.ico'><span>æ´¥ICPå¤2022002156å·-1</span></a> 969 | <a target="_blank" href='http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=12011202000621' 970 rel="noopener external nofollow noreferrer noopener"><img class='icp-icon' 971 src='/image/footer/beian_logo.png'><span>æ´¥å ¬ç½å®å¤ 12011202000621å·</span></a> 972 | 973 <span>è¿æ³ä¸ä¸è¯ä¿¡æ¯ä¸¾æ¥é®ç®± 974 j<span style='display:none'>@</span><!-- >@ -->b@<span style='display:none'>@</span>uu<!-- >@. -->an<span style='display:none'>@</span>q.in 975 </span> 976 </p> 977 </div> 978 </div> 979</div></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="translateLink" type="button" title="ç®ç¹è½¬æ¢">ç®</button><button id="darkmode" type="button" title="æ¥é´åå¤é´æ¨¡å¼åæ¢"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="åæ ååæ åæ¢"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside-config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="ai-button" type="button" title="å客æºè½ä½"><i class="fas fa-cube"></i></button><button id="go-up" type="button" title="åå°é¡¶é¨"><span class="scroll-percent"></span><i class="fas fa-arrow-up"></i></button></div></div><div>
vendor: 108 bytes, line 979
979<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
979<script src="/js/utils.js"></script>
979<script src="/js/main.js"></script>
979<script src="/js/tw_cn.js"></script>
979<script src="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/fancyapps-ui/5.0.17/fancybox/fancybox.umd.js"></script>
979<script src="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/instant.page/5.2.0/instantpage.min.js" type="module"></script>
979<script src="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/vanilla-lazyload/19.1.3/lazyload.iife.min.js"></script>
979<script src="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/node-snackbar/0.1.16/snackbar.min.js"></script>
979<div class="js-pjax">
979<script>(() => { 980 const parseViewBox = viewBox => { 981 if (!viewBox) return null 982 const parts = viewBox.trim().split(/[\s,]+/).map(n => Number(n)) 983 return (parts.length === 4 && !parts.some(n => Number.isNaN(n))) ? parts : null 984 } 985 986 const getSvgViewBox = svg => { 987 const attr = parseViewBox(svg.getAttribute('viewBox')) 988 if (attr) return attr 989 990 // Fallback: use bbox to build a viewBox 991 try { 992 const bbox = svg.getBBox() 993 if (bbox && bbox.width && bbox.height) return [bbox.x, bbox.y, bbox.width, bbox.height] 994 } catch (e) { 995 // getBBox may fail on some edge cases; ignore 996 } 997 998 const w = Number(svg.getAttribute('width')) || 0 999 const h = Number(svg.getAttribute('height')) || 0 1000 return (w > 0 && h > 0) ? [0, 0, w, h] : [0, 0, 100, 100] 1001 } 1002 1003 const setSvgViewBox = (svg, vb) => { 1004 svg.setAttribute('viewBox', `${vb[0]} ${vb[1]} ${vb[2]} ${vb[3]}`) 1005 } 1006 1007 const clamp = (v, min, max) => Math.max(min, Math.min(max, v)) 1008 1009 const openSvgInNewTab = ({ source, initViewBox }) => { 1010 const getClonedSvg = () => { 1011 if (typeof source === 'string') { 1012 const template = document.createElement('template') 1013 template.innerHTML = source.trim() 1014 return template.content.querySelector('svg')?.cloneNode(true) 1015 } 1016 return source?.cloneNode?.(true) 1017 } 1018 const clone = getClonedSvg() 1019 if (!clone) return 1020 if (initViewBox) clone.setAttribute('viewBox', initViewBox.join(' ')) 1021 if (!clone.getAttribute('xmlns')) clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg') 1022 1023 const isDark = document.documentElement.getAttribute('data-theme') === 'dark' 1024 const bg = getComputedStyle(document.body).backgroundColor || (isDark ? '#1e1e1e' : '#ffffff') 1025 clone.style.background = bg 1026 1027 const svgSource = new XMLSerializer().serializeToString(clone) 1028 const blob = new Blob([svgSource], { type: 'image/svg+xml;charset=utf-8' }) 1029 const url = URL.createObjectURL(blob) 1030 window.open(url, '_blank', 'noopener') 1031 setTimeout(() => URL.revokeObjectURL(url), 30000) 1032 } 1033 1034 const zoomAtPoint = (vb, factor, px, py) => { 1035 const w = vb[2] * factor 1036 const h = vb[3] * factor 1037 const nx = px - (px - vb[0]) * factor 1038 const ny = py - (py - vb[1]) * factor 1039 return [nx, ny, w, h] 1040 } 1041 1042 const initMermaidGestures = (wrap, svg) => { 1043 const initVb = getSvgViewBox(svg) 1044 wrap.__mermaidInitViewBox = initVb 1045 wrap.__mermaidCurViewBox = initVb.slice() 1046 setSvgViewBox(svg, initVb) 1047 1048 if (wrap.__mermaidGestureBound) return 1049 wrap.__mermaidGestureBound = true 1050
1051 const clientToViewBox = (clientX, clientY) => { 1052 const rect = svg.getBoundingClientRect() 1053 const vb = wrap.__mermaidCurViewBox 1054 const x = vb[0] + (clientX - rect.left) * (vb[2] / rect.width) 1055 const y = vb[1] + (clientY - rect.top) * (vb[3] / rect.height) 1056 return { x, y } 1057 } 1058 1059 const setCurVb = vb => { 1060 const init = wrap.__mermaidInitViewBox 1061 vb[2] = clamp(vb[2], init[2] * 0.1, init[2] * 10) 1062 vb[3] = clamp(vb[3], init[3] * 0.1, init[3] * 10) 1063 wrap.__mermaidCurViewBox = vb 1064 setSvgViewBox(svg, vb) 1065 } 1066 1067 svg.addEventListener('wheel', e => { 1068 if (!e.ctrlKey && !e.metaKey) return 1069 e.preventDefault() 1070 const { x, y } = clientToViewBox(e.clientX, e.clientY) 1071 setCurVb(zoomAtPoint(wrap.__mermaidCurViewBox.slice(), e.deltaY > 0 ? 1.1 : 0.9, x, y)) 1072 }, { passive: false }) 1073 1074 svg.addEventListener('dblclick', () => { 1075 wrap.__mermaidCurViewBox = wrap.__mermaidInitViewBox.slice() 1076 setSvgViewBox(svg, wrap.__mermaidCurViewBox) 1077 }) 1078 } 1079 1080 const runMermaid = ele => { 1081 // ç§»é¤äº injectStyles è°ç¨ 1082 const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default' 1083 1084 ele.forEach((item, index) => { 1085 const mermaidSrc = item.querySelector('.mermaid-src') 1086 const previewZone = item.querySelector('.mermaid-preview-container') 1087 const sourceZone = item.querySelector('.mermaid-source-container') 1088 const tabBtns = item.querySelectorAll('.mermaid-tab-btn') 1089 const openBtn = item.querySelector('.mermaid-open-btn') 1090 1091 previewZone.innerHTML = '' 1092 1093 const config = mermaidSrc.dataset.config ? JSON.parse(mermaidSrc.dataset.config) : {} 1094 if (!config.theme) config.theme = theme 1095 const mermaidDefinition = `%%{init: ${JSON.stringify(config)}}%%\n` + mermaidSrc.textContent 1096 1097 mermaid.render(`mermaid-${index}`, mermaidDefinition).then(({ svg }) => { 1098 previewZone.innerHTML = svg 1099 const svgEle = previewZone.querySelector('svg') 1100 item.__mermaidOriginalSvg = svg 1101 initMermaidGestures(item, svgEle) 1102 1103 openBtn.onclick = () => openSvgInNewTab({ source: svgEle, initViewBox: item.__mermaidInitViewBox }) 1104 1105 tabBtns.forEach(btn => { 1106 btn.onclick = () => { 1107 tabBtns.forEach(b => b.classList.remove('active')) 1108 btn.classList.add('active') 1109 if (btn.dataset.type === 'preview') { 1110 previewZone.style.display = 'flex' 1111 sourceZone.style.display = 'none' 1112 } else { 1113 previewZone.style.display = 'none' 1114 sourceZone.style.display = 'block' 1115 } 1116 } 1117 }) 1118 }) 1119 }) 1120 } 1121 1122 const codeToMermaid = () => { 1123 const codeMermaidEle = document.querySelectorAll('pre > code.mermaid') 1124 codeMermaidEle.forEach(ele => { 1125 const rawCode = ele.textContent 1126 const wrapper = document.createElement('div') 1127 wrapper.className = 'mermaid-wrap' 1128 wrapper.innerHTML = ` 1129 <div class="mermaid-header"> 1130 <div class="mermaid-tabs"> 1131 <button class="mermaid-tab-btn active" data-type="preview">é¢è§</button> 1132 <button class="mermaid-tab-btn" data-type="source">æºç </button> 1133 </div> 1134 <button class="mermaid-open-btn" title="æ¥çåå¾"><i class="fa fa-search fa-fw"></i></button> 1135 </div> 1136 <div class="mermaid-preview-container"></div> 1137 <div class="mermaid-source-container"><pre><code>${rawCode.replace(/</g, '<')}</code></pre></div> 1138 <pre class="mermaid-src" hidden>${rawCode}</pre> 1139 ` 1140 ele.parentNode.replaceWith(wrapper) 1141 }) 1142 } 1143 1144 const loadMermaid = () => { 1145 if (true) codeToMermaid() 1146 const $mermaid = document.querySelectorAll('.mermaid-wrap') 1147 if ($mermaid.length === 0) return 1148 1149 const runMermaidFn = () => runMermaid($mermaid) 1150 btf.addGlobalFn('themeChange', runMermaidFn, 'mermaid') 1151 window.loadMermaid ? runMermaidFn() : btf.getScript('https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/mermaid/11.9.0/mermaid.min.js').then(runMermaidFn) 1152 } 1153 1154 btf.addGlobalFn('encrypt', loadMermaid, 'mermaid') 1155 window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid) 1156})()</script>
1156</div>
1156<script>window.newestComments = { 1157 changeContent: content => { 1158 if (content === '') return content 1159 1160 content = content.replace(/<img.*?src="(.*?)"?[^\>]+>/ig, '[å¾ç]') // replace image link 1161 content = content.replace(/<a[^>]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[龿¥]') // replace url 1162 content = content.replace(/<pre><code>.*?<\/pre>/gi, '[代ç ]') // replace code 1163 content = content.replace(/<code>.*?<\/code>/gi, '[代ç ]') // replace code 1164 content = content.replace(/<[^>]+>/g, "") // remove html tag 1165 1166 if (content.length > 150) { 1167 content = content.substring(0, 150) + '...' 1168 } 1169 return content 1170 }, 1171 1172 generateHtml: (array, ele) => { 1173 let result = '' 1174 1175 if (array.length) { 1176 for (let i = 0; i < array.length; i++) { 1177 result += '<div class="aside-list-item">' 1178 1179 if (true && array[i].avatar) { 1180 const imgAttr = 'data-lazy-src' 1181 const lazyloadNative = '' 1182 result += `<a href="${array[i].url}" class="thumbnail"><img ${imgAttr}="${array[i].avatar}" alt="${array[i].nick}" ${lazyloadNative}></a>` 1183 } 1184 1185 result += `<div class="content"> 1186 <a class="comment" href="${array[i].url}" title="${array[i].content}">${array[i].content}</a> 1187 <div class="name"><span>${array[i].nick} / </span><time datetime="${array[i].date}">${btf.diffDate(array[i].date, true)}</time></div> 1188 </div></div>` 1189 } 1190 } else { 1191 result += 'ææ è¯è®º' 1192 } 1193 1194 ele.innerHTML = result 1195 window.lazyLoadInstance && window.lazyLoadInstance.update() 1196 window.pjax && window.pjax.refresh(ele) 1197 }, 1198 1199 newestCommentInit: (name, getComment) => { 1200 const $dom = document.querySelector('#card-newest-comments .aside-list') 1201 if ($dom) { 1202 const data = btf.saveToLocal.get(name) 1203 if (data) { 1204 newestComments.generateHtml(JSON.parse(data), $dom) 1205 } else { 1206 getComment($dom) 1207 } 1208 } 1209 }, 1210 1211 run: (name, getComment) => { 1212 newestComments.newestCommentInit(name, getComment) 1213 btf.addGlobalFn('pjaxComplete', () => newestComments.newestCommentInit(name, getComment), name) 1214 } 1215}</script>
1215<script>window.addEventListener('load', () => { 1216 const keyName = 'waline-newest-comments' 1217 const { changeContent, generateHtml, run } = window.newestComments 1218 1219 const getComment = async (ele) => { 1220 try { 1221 const res = await fetch('https://pl.uuanqin.top/api/comment?type=recent&count=4') 1222 const result = await res.json() 1223 const walineArray = result.data.map(e => { 1224 return { 1225 'content': changeContent(e.comment), 1226 'avatar': e.avatar, 1227 'nick': e.nick, 1228 'url': e.url + '#' + e.objectId, 1229 'date': e.time || e.insertedAt 1230 } 1231 }) 1232 btf.saveToLocal.set(keyName, JSON.stringify(walineArray), 10/(60*24)) 1233 generateHtml(walineArray, ele) 1234 } catch (err) { 1235 console.error(err) 1236 ele.textContent= "æ æ³è·åè¯è®ºï¼è¯·ç¡®è®¤ç¸å ³é ç½®æ¯å¦æ£ç¡®" 1237 } 1238 } 1239 1240 run(keyName, getComment) 1241})</script>
1241<script src="/js/gray_page.js"></script>
1241<script src="/js/bi-links.js?0424"></script>
1241<script src="/js/genuine_website_verification4.js"></script>
1241<script src="/js/ai-summary-effect.js"></script>
1241<script src="/js/public/crypto-js.min.js"></script>
1241<script src="/js/public/keycloak-25.0.6.min.js"></script>
1241<script src="/js/keycloak-auth.js"></script>
1241<script src="/js/keycloak-pageLock.js"></script>
1241<script src="/js/public/force-graph.min.js"></script>
1241<script src="/js/public/d3.v7.min.js"></script>
1241<script src="/js/relation_graph_aside.js"></script>
1241<div id="algolia-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">æç´¢</span><i class="fas fa-spinner fa-pulse" id="loading-status" hidden="hidden"></i><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div id="algolia-search-input"><div class="ais-SearchBox"><form class="ais-SearchBox-form" action="" role="search" novalidate=""><input class="ais-SearchBox-input" type="search" placeholder="æç´¢æç« " autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" maxlength="512" aria-label="Search"/><button class="ais-SearchBox-submit" type="submit" title="Submit the search query" style="display:none;"><svg class="ais-SearchBox-submitIcon" width="10" height="10" viewBox="0 0 40 40" aria-hidden="true"><path d="M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z"></path></svg></button></form></div><hr/><div id="algolia-search-results"><div id="algolia-hits"><div id="algolia-hits-empty" style="display:none;"></div><div class="ais-Hits" style="display:none;"><ol class="ais-Hits-list"></ol></div></div><div class="ais-Pagination" id="algolia-pagination" style="display:none;"><ul class="ais-Pagination-list"></ul></div><div id="algolia-info"><span class="ais-Stats-text"></span><a class="algolia-poweredBy" href="https://www.algolia.com/?utm_source=algoliasearch.js&utm_medium=website&utm_content=localhost&utm_campaign=poweredby" target="_blank" aria-label="Search by Algolia" rel="noopener noreferrer"><svg class="ais-PoweredBy-logo" height="1.2em" viewBox="0 0 572 64" style="width: auto;"><path fill="#36395A" d="M16 48.3c-3.4 0-6.3-.6-8.7-1.7A12.4 12.4 0 0 1 1.9 42C.6 40 0 38 0 35.4h6.5a6.7 6.7 0 0 0 3.9 6c1.4.7 3.3 1.1 5.6 1.1 2.2 0 4-.3 5.4-1a7 7 0 0 0 3-2.4 6 6 0 0 0 1-3.4c0-1.5-.6-2.8-1.9-3.7-1.3-1-3.3-1.6-5.9-1.8l-4-.4c-3.7-.3-6.6-1.4-8.8-3.4a10 10 0 0 1-3.3-7.9c0-2.4.6-4.6 1.8-6.4a12 12 0 0 1 5-4.3c2.2-1 4.7-1.6 7.5-1.6s5.5.5 7.6 1.6a12 12 0 0 1 5 4.4c1.2 1.8 1.8 4 1.8 6.7h-6.5a6.4 6.4 0 0 0-3.5-5.9c-1-.6-2.6-1-4.4-1s-3.2.3-4.4 1c-1.1.6-2 1.4-2.6 2.4-.5 1-.8 2-.8 3.1a5 5 0 0 0 1.5 3.6c1 1 2.6 1.7 4.7 1.9l4 .3c2.8.2 5.2.8 7.2 1.8 2.1 1 3.7 2.2 4.9 3.8a9.7 9.7 0 0 1 1.7 5.8c0 2.5-.7 4.7-2 6.6a13 13 0 0 1-5.6 4.4c-2.4 1-5.2 1.6-8.4 1.6Zm35.6 0c-2.6 0-4.8-.4-6.7-1.3a13 13 0 0 1-4.7-3.5 17.1 17.1 0 0 1-3.6-10.4v-1c0-2 .3-3.8 1-5.6a13 13 0 0 1 7.3-8.3 15 15 0 0 1 6.3-1.4A13.2 13.2 0 0 1 64 24.3c1 2.2 1.6 4.6 1.6 7.2V34H39.4v-4.3h21.8l-1.8 2.2c0-2-.3-3.7-.9-5.1a7.3 7.3 0 0 0-2.7-3.4c-1.2-.7-2.7-1.1-4.6-1.1s-3.4.4-4.7 1.3a8 8 0 0 0-2.9 3.6c-.6 1.5-.9 3.3-.9 5.4 0 2 .3 3.7 1 5.3a7.9 7.9 0 0 0 2.8 3.7c1.3.8 3 1.3 5 1.3s3.8-.5 5.1-1.3c1.3-1 2.1-2 2.4-3.2h6a11.8 11.8 0 0 1-7 8.7 16 16 0 0 1-6.4 1.2ZM80 48c-2.2 0-4-.3-5.7-1a8.4 8.4 0 0 1-3.7-3.3 9.7 9.7 0 0 1-1.3-5.2c0-2 .5-3.8 1.5-5.2a9 9 0 0 1 4.3-3.1c1.8-.7 4-1 6.7-1H89v4.1h-7.5c-2 0-3.4.5-4.4 1.4-1 1-1.6 2.1-1.6 3.6s.5 2.7 1.6 3.6c1 1 2.5 1.4 4.4 1.4 1.1 0 2.2-.2 3.2-.7 1-.4 1.9-1 2.6-2 .6-1 1-2.4 1-4.2l1.7 2.1c-.2 2-.7 3.8-1.5 5.2a9 9 0 0 1-3.4 3.3 12 12 0 0 1-5.3 1Zm9.5-.7v-8.8h-1v-10c0-1.8-.5-3.2-1.4-4.1-1-1-2.4-1.4-4.2-1.4a142.9 142.9 0 0 0-10.2.4v-5.6a74.8 74.8 0 0 1 8.6-.4c3 0 5.5.4 7.5 1.2s3.4 2 4.4 3.6c1 1.7 1.4 4 1.4 6.7v18.4h-5Zm12.9 0V17.8h5v12.3h-.2c0-4.2 1-7.4 2.8-9.5a11 11 0 0 1 8.3-3.1h1v5.6h-2a9 9 0 0 0-6.3 2.2c-1.5 1.5-2.2 3.6-2.2 6.4v15.6h-6.4Zm34.4 1a15 15 0 0 1-6.6-1.3c-1.9-.9-3.4-2-4.7-3.5a15.5 15.5 0 0 1-2.7-5c-.6-1.7-1-3.6-1-5.4v-1c0-2 .4-3.8 1-5.6a15 15 0 0 1 2.8-4.9c1.3-1.5 2.8-2.6 4.6-3.5a16.4 16.4 0 0 1 13.3.2c2 1 3.5 2.3 4.8 4a12 12 0 0 1 2 6H144c-.2-1.6-1-3-2.2-4.1a7.5 7.5 0 0 0-5.2-1.7 8 8 0 0 0-4.7 1.3 8 8 0 0 0-2.8 3.6 13.8 13.8 0 0 0 0 10.3c.6 1.5 1.5 2.7 2.8 3.6s2.8 1.3 4.8 1.3c1.5 0 2.7-.2 3.8-.8a7 7 0 0 0 2.6-2c.7-1 1-2 1.2-3.2h6.2a11 11 0 0 1-2 6.2
124115.1 15.1 0 0 1-11.8 5.5Zm19.7-1v-40h6.4V31h-1.3c0-3 .4-5.5 1.1-7.6a9.7 9.7 0 0 1 3.5-4.8A9.9 9.9 0 0 1 172 17h.3c3.5 0 6 1.1 7.9 3.5 1.7 2.3 2.6 5.7 2.6 10v16.8h-6.4V29.6c0-2.1-.6-3.8-1.8-5a6.4 6.4 0 0 0-4.8-1.8c-2 0-3.7.7-5 2a7.8 7.8 0 0 0-1.9 5.5v17h-6.4Zm63.8 1a12.2 12.2 0 0 1-10.9-6.2 19 19 0 0 1-1.8-7.3h1.4v12.5h-5.1v-40h6.4v19.8l-2 3.5c.2-3.1.8-5.7 1.9-7.7a11 11 0 0 1 4.4-4.5c1.8-1 3.9-1.5 6.1-1.5a13.4 13.4 0 0 1 12.8 9.1c.7 1.9 1 3.8 1 6v1c0 2.2-.3 4.1-1 6a13.6 13.6 0 0 1-13.2 9.4Zm-1.2-5.5a8.4 8.4 0 0 0 7.9-5c.7-1.5 1.1-3.3 1.1-5.3s-.4-3.8-1.1-5.3a8.7 8.7 0 0 0-3.2-3.6 9.6 9.6 0 0 0-9.2-.2 8.5 8.5 0 0 0-3.3 3.2c-.8 1.4-1.3 3-1.3 5v2.3a9 9 0 0 0 1.3 4.8 9 9 0 0 0 3.4 3c1.4.7 2.8 1 4.4 1Zm27.3 3.9-10-28.9h6.5l9.5 28.9h-6Zm-7.5 12.2v-5.7h4.9c1 0 2-.1 2.9-.4a4 4 0 0 0 2-1.4c.4-.7.9-1.6 1.2-2.7l8.6-30.9h6.2l-9.3 32.4a14 14 0 0 1-2.5 5 8.9 8.9 0 0 1-4 2.8c-1.5.6-3.4.9-5.6.9h-4.4Zm9-12.2v-5.2h6.4v5.2H248Z"></path><path fill="#003DFF" d="M534.4 9.1H528a.8.8 0 0 1-.7-.7V1.8c0-.4.2-.7.6-.8l6.5-1c.4 0 .8.2.9.6v7.8c0 .4-.4.7-.8.7zM428 35.2V.8c0-.5-.3-.8-.7-.8h-.2l-6.4 1c-.4 0-.7.4-.7.8v35c0 1.6 0 11.8 12.3 12.2.5 0 .8-.4.8-.8V43c0-.4-.3-.7-.6-.8-4.5-.5-4.5-6-4.5-7zm106.5-21.8H528c-.4 0-.7.4-.7.8v34c0 .4.3.8.7.8h6.5c.4 0 .8-.4.8-.8v-34c0-.5-.4-.8-.8-.8zm-17.7 21.8V.8c0-.5-.3-.8-.8-.8l-6.5 1c-.4 0-.7.4-.7.8v35c0 1.6 0 11.8 12.3 12.2.4 0 .8-.4.8-.8V43c0-.4-.3-.7-.7-.8-4.4-.5-4.4-6-4.4-7zm-22.2-20.6a16.5 16.5 0 0 1 8.6 9.3c.8 2.2 1.3 4.8 1.3 7.5a19.4 19.4 0 0 1-4.6 12.6 14.8 14.8 0 0 1-5.2 3.6c-2 .9-5.2 1.4-6.8 1.4a21 21 0 0 1-6.7-1.4 15.4 15.4 0 0 1-8.6-9.3 21.3 21.3 0 0 1 0-14.4 15.2 15.2 0 0 1 8.6-9.3c2-.8 4.3-1.2 6.7-1.2s4.6.4 6.7 1.2zm-6.7 27.6c2.7 0 4.7-1 6.2-3s2.2-4.3 2.2-7.8-.7-6.3-2.2-8.3-3.5-3-6.2-3-4.7 1-6.1 3c-1.5 2-2.2 4.8-2.2 8.3s.7 5.8 2.2 7.8 3.5 3 6.2 3zm-88.8-28.8c-6.2 0-11.7 3.3-14.8 8.2a18.6 18.6 0 0 0 4.8 25.2c1.8 1.2 4 1.8 6.2 1.7s.1 0 .1 0h.9c4.2-.7 8-4 9.1-8.1v7.4c0 .4.3.7.8.7h6.4a.7.7 0 0 0 .7-.7V14.2c0-.5-.3-.8-.7-.8h-13.5zm6.3 26.5a9.8 9.8 0 0 1-5.7 2h-.5a10 10 0 0 1-9.2-14c1.4-3.7 5-6.3 9-6.3h6.4v18.3zm152.3-26.5h13.5c.5 0 .8.3.8.7v33.7c0 .4-.3.7-.8.7h-6.4a.7.7 0 0 1-.8-.7v-7.4c-1.2 4-4.8 7.4-9 8h-.1a4.2 4.2 0 0 1-.5.1h-.9a10.3 10.3 0 0 1-7-2.6c-4-3.3-6.5-8.4-6.5-14.2 0-3.7 1-7.2 3-10 3-5 8.5-8.3 14.7-8.3zm.6 28.4c2.2-.1 4.2-.6 5.7-2V21.7h-6.3a9.8 9.8 0 0 0-9 6.4 10.2 10.2 0 0 0 9.1 13.9h.5zM452.8 13.4c-6.2 0-11.7 3.3-14.8 8.2a18.5 18.5 0 0 0 3.6 24.3 10.4 10.4 0 0 0 13 .6c2.2-1.5 3.8-3.7 4.5-6.1v7.8c0 2.8-.8 5-2.2 6.3-1.5 1.5-4 2.2-7.5 2.2l-6-.3c-.3 0-.7.2-.8.5l-1.6 5.5c-.1.4.1.8.5 1h.1c2.8.4 5.5.6 7 .6 6.3 0 11-1.4 14-4.1 2.7-2.5 4.2-6.3 4.5-11.4V14.2c0-.5-.4-.8-.8-.8h-13.5zm6.3 8.2v18.3a9.6 9.6 0 0 1-5.6 2h-1a10.3 10.3 0 0 1-8.8-14c1.4-3.7 5-6.3 9-6.3h6.4zM291 31.5A32 32 0 0 1 322.8 0h30.8c.6 0 1.2.5 1.2 1.2v61.5c0 1.1-1.3 1.7-2.2 1l-19.2-17a18 18 0 0 1-11 3.4 18.1 18.1 0 1 1 18.2-14.8c-.1.4-.5.7-.9.6-.1 0-.3 0-.4-.2l-3.8-3.4c-.4-.3-.6-.8-.7-1.4a12 12 0 1 0-2.4 8.3c.4-.4 1-.5 1.6-.2l14.7 13.1v-46H323a26 26 0 1 0 10 49.7c.8-.4 1.6-.2 2.3.3l3 2.7c.3.2.3.7 0 1l-.2.2a32 32 0 0 1-47.2-28.6z"></path></svg></a></div></div></div></div><div id="search-mask"></div>
1241<script src="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/algoliasearch/4.25.2/algoliasearch-lite.umd.js"></script>
1241<script src="/js/search/algolia.js"></script>
1241</div></div><!-- hexo injector body_end start -->
1241<script>// LivePhotoç±»ï¼ç®¡çå个Live Photoçè¡ä¸º 1242class HexoLivePhoto { 1243 constructor(container, config) { 1244 this.container = container; 1245 this.staticImage = container.querySelector(".live-photo-static"); 1246 this.video = container.querySelector(".live-photo-video"); 1247 this.config = config; 1248 this.hasAutoPlayed = false; 1249 this.isPlaying = false; 1250 this.hoverTimeout = null; 1251 this.badgeTimer = null; // æ¾å¼å£°æè®¡æ¶å¨ 1252 this.isWeixin = /micromessenger/i.test(navigator.userAgent); 1253 this.imgFailed = false; 1254 this.videoFailed = false; 1255 this.soundToggle = container.querySelector(".live-sound-toggle"); 1256 // å¨å¾®ä¿¡ç¯å¢ä¸è°æ´é ç½® 1257 if (this.isWeixin && this.config.weixin_disable_autoplay) { 1258 this.config.autoplay = false; 1259 1260 // ä¿®æ¹å¾®ä¿¡ç¯å¢ä¸çbadge 1261 this.modifyWeixinBadge(); 1262 } 1263 1264 // ç»å®äºä»¶ 1265 this.bindEvents(); 1266 } 1267 1268 // ä¿®æ¹å¾®ä¿¡ç¯å¢ä¸çbadge 1269 modifyWeixinBadge() { 1270 let badge = this.container.querySelector(".live-badge"); 1271 1272 // å¦ææ²¡æbadgeï¼å建ä¸ä¸ª 1273 if (!badge && this.config.badge) { 1274 badge = document.createElement("div"); 1275 badge.className = `live-badge ${ 1276 this.config.badge_position || "bottom-left" 1277 }`; 1278 this.container.appendChild(badge); 1279 } 1280 1281 // ä¿®æ¹badgeå å®¹åæ ·å¼ 1282 if (badge) { 1283 if (!this.config.badge_text) { 1284 badge.innerHTML = "Click to Play"; 1285 } else { 1286 badge.innerHTML = this.config.badge_text + " | Click to Play"; 1287 } 1288 } 1289 } 1290 1291 // ç»å®äºä»¶ 1292 bindEvents() { 1293 // æ¡é¢ç«¯ï¼é¼ æ æ¬åææ¾ 1294 if (this.config.hover_to_play) { 1295 this.container.addEventListener("mouseenter", () => 1296 this.handleHoverStart() 1297 ); 1298 this.container.addEventListener("mouseleave", () => 1299 this.handleHoverEnd() 1300 ); 1301 } 1302 1303 // ç¹å»äºä»¶ - å¨å¾®ä¿¡ç¯å¢ä¸è¿æ¯ä¸»è¦çäº¤äºæ¹å¼ 1304 if (this.config.click_to_play) { 1305 this.container.addEventListener("click", () => { 1306 this.play(); 1307 }); 1308 } 1309 1310 // çå¬è§é¢ç»æäºä»¶ 1311 this.video.addEventListener("ended", () => this.stop()); 1312 1313 // çå¬è§é¢å è½½äºä»¶ 1314 // this.video.addEventListener("loadstart", () => this.showLoading()); 1315 // this.video.addEventListener("canplay", () => this.hideLoading()); 1316 this.video.addEventListener("error", () => { 1317 this.container.classList.remove('is-loading'); 1318 this.stop(); 1319 }); 1320 1321 // å½è§é¢å 为å è½½èæåæ¶è§¦å 1322 this.video.addEventListener("waiting", () => { 1323 this.container.classList.add('is-loading'); 1324 }); 1325 1326 // å½è§é¢çæ£å¼å§ææ¾ï¼ç»é¢å¨å¨ï¼æ¶è§¦å 1327 this.video.addEventListener("playing", () => { 1328 if (this.badgeTimer) clearTimeout(this.badgeTimer); 1329 this.container.classList.remove('is-loading'); 1330 // åªæå¨å¾ç没åçæ åµä¸ï¼æå»åè¿ç§æ·¡åºææ 1331 if (!this.imgFailed) { 1332 this.staticImage.style.opacity = 0; 1333 } 1334 this.video.classList.add("playing"); 1335 this.container.classList.add('is-playing'); 1336 }); 1337 1338 // 声é³ç¹å»äºä»¶ 1339 if (this.soundToggle) { 1340 this.soundToggle.addEventListener("click", (e) => { 1341 e.preventDefault(); // ãæ°å¢ã 1342 e.stopPropagation(); 1343 this.toggleSound(); 1344 }); 1345 } 1346 1347 // å¾çå 载失败ï¼éèå¾çï¼é²æ¢åºç°æµè§å¨é»è®¤çâè£å¼â徿 1348 this.staticImage.onerror = () => { 1349 this.imgFailed = true; 1350 this.staticImage.style.opacity = '0'; 1351 this.staticImage.style.visibility = 'hidden'; 1352 this.checkTotalFailure(); 1353 }; 1354 1355 // è§é¢å 载失败 1356 this.video.onerror = () => { 1357 this.videoFailed = true; 1358 this.checkTotalFailure(); 1359 }; 1360 } 1361 1362 checkTotalFailure() { 1363 // 夿å¾çæ¯å¦å¤±æï¼å æ¬å 载失败ãsrc为空ãæè æ¯é£ä¸ª1x1çéæå ä½ç¬¦ 1364 const isImgInvalid = this.imgFailed || 1365 !this.staticImage.src || 1366 this.staticImage.src.includes('data:image/gif'); 1367 1368 if (this.videoFailed) { 1369 if (isImgInvalid) { 1370 // æ åµ Aï¼å ¨éï¼è§é¢åäº + å¾çä¹åäºï¼ 1371 this.container.classList.add('is-total-error'); 1372 this.container.classList.remove('is-video-error'); // å¿ é¡»ç§»é¤ï¼é²æ¢å¹²æ° CSS 1373 } else { 1374 // æ åµ Bï¼ä» è§é¢éï¼è§é¢åäº + å¾çæ¯å¥½çï¼ 1375 this.container.classList.add('is-video-error'); 1376 this.container.classList.remove('is-total-error'); 1377 } 1378 } else { 1379 // 妿è§é¢æ²¡åï¼ç¡®ä¿è¿ä¸¤ä¸ªé误类é½ä¸åå¨ 1380 this.container.classList.remove('is-total-error', 'is-video-error'); 1381 } 1382 } 1383 1384 // å¤çæ¬åå¼å§ 1385 handleHoverStart() { 1386 // æ¸ é¤ä¹åçè¶ æ¶ 1387 if (this.hoverTimeout) clearTimeout(this.hoverTimeout); 1388 1389 // è®¾ç½®å»¶è¿ææ¾ 1390 this.hoverTimeout = setTimeout(() => { 1391 this.play(); 1392 }, this.config.hover_delay || 300); 1393 } 1394 1395 // å¤çæ¬åç»æ 1396 handleHoverEnd() { 1397 // æ¸ é¤æ¬åè¶ æ¶ 1398 if (this.hoverTimeout) { 1399 clearTimeout(this.hoverTimeout); 1400 this.hoverTimeout = null; 1401 } 1402 1403 // 妿è§é¢æ¯å¾ªç¯ææ¾ç(loop)ï¼é¼ æ ç§»å¼å¿ é¡»ç«å»åæ¢ï¼å¦å声é³åç»é¢ä¼å¨åå°æ éæ¶è 1404 if (this.video.loop) { 1405 // é¼ æ ç¦»å¼æ¶ï¼æä»¬ä¸åæ¢è§é¢ï¼èæ¯âéé³âå® 1406 // è¿æ ·ç»é¢ä¼ç»§ç»å¾ªç¯ææ¾ï¼ä½å£°é³ä¼æ¶å¤±ï¼è§£å³äºä½ æ å¿çæ°æ°é®é¢ 1407 this.video.muted = true; 1408 if (this.soundToggle) { 1409 this.soundToggle.classList.remove("is-unmuted"); 1410 } 1411 } 1412 } 1413 1414 // æ¾ç¤ºå è½½æç¤ºå¨ 1415 showLoading() { 1416 let loadingEl = this.container.querySelector(".live-loading"); 1417 if (!loadingEl && this.config.loading_animation) { 1418 loadingEl = document.createElement("div"); 1419 loadingEl.className = "live-loading"; 1420 this.container.appendChild(loadingEl); 1421 } 1422 if (loadingEl) { 1423 loadingEl.style.display = "block"; 1424 } 1425 } 1426 1427 // éèå è½½æç¤ºå¨ 1428 hideLoading() { 1429 const loadingEl = this.container.querySelector(".live-loading"); 1430 if (loadingEl) { 1431 loadingEl.style.display = "none"; 1432 } 1433 } 1434 1435 // ææ¾è§é¢ 1436 play() { 1437 if (this.isPlaying) return; 1438 this.isPlaying = true; 1439
1440 const playPromise = this.video.play(); 1441 1442 if (playPromise !== undefined) { 1443 playPromise.catch(error => { 1444 // å¤çç±äºæµè§å¨çç¥å¯¼è´çææ¾å¤±è´¥ï¼å¦éè¦æå¨ç¹å»ï¼ 1445 console.warn("Live-Photo Play Interrupted:", error); 1446 this.stop(); 1447 }); 1448 } 1449 } 1450 1451 // åæ¢ææ¾ 1452 stop() { 1453 if (this.badgeTimer) clearTimeout(this.badgeTimer); 1454 this.container.classList.remove('is-loading'); 1455 this.container.classList.remove('is-playing'); 1456 this.video.classList.remove("playing"); 1457 this.staticImage.style.opacity = 1; 1458 this.isPlaying = false; 1459 // 强å¶åå°è§é¢å¼å¤´ï¼æ¹ä¾¿ä¸æ¬¡ææ¾ 1460 this.video.pause(); 1461 // åªæé loop è§é¢æéç½®æ¶é´ï¼loop è§é¢è®©å®å¨åå°éé³è· 1462 if (!this.video.loop) { 1463 this.video.currentTime = 0; 1464 } 1465 // éé³åªå¯å¨ä¸æ¬¡ 1466 this.video.muted = true; 1467 this.soundToggle.classList.remove("is-unmuted"); 1468 } 1469 1470 // èªå¨ææ¾ï¼å½è¿å ¥è§å£æ¶ï¼ 1471 autoPlay() { 1472 if (!this.hasAutoPlayed && this.config.autoplay) { 1473 this.hasAutoPlayed = true; 1474 this.play(); 1475 } 1476 } 1477 1478 1479 // æ·»å 声é³åæ¢æ¹æ³ 1480 toggleSound() { 1481 if (!this.video) return; 1482 1483 // 忢éé³ç¶æ 1484 this.video.muted = !this.video.muted; 1485 1486 // æ´æ° UI ç¶æ 1487 if (this.video.muted) { 1488 this.soundToggle.classList.remove("is-unmuted"); 1489 } else { 1490 this.soundToggle.classList.add("is-unmuted"); 1491 // 妿忢尿声ä¸å½åæ²¡å¨æï¼å°è¯ææ¾ï¼å¤çç§»å¨ç«¯éé³èªå¨ææ¾åçæå¨å¼å¯ï¼ 1492 if (this.video.paused) { 1493 this.play(); 1494 } 1495 } 1496 } 1497} 1498 1499// 页é¢ä¸»æ§å¶å¨ 1500class HexoLivePhotoPage { 1501 constructor(config) { 1502 this.config = config; 1503 this.livePhotos = new Map(); 1504 this.observer = null; 1505 this.isWeixin = /micromessenger/i.test(navigator.userAgent); 1506 this.init(); 1507 } 1508 1509 // åå§å 1510 init() { 1511 this.detectLivePhotos(); 1512 1513 // æ£æµæ¯å¦ä¸ºå¾®ä¿¡ç¯å¢ 1514 // const isWeixin = navigator.userAgent 1515 // .toLowerCase() 1516 // .includes("micromessenger"); 1517 1518 // 妿å¨å¾®ä¿¡ç¯å¢ä¸ä¸ç¦ç¨èªå¨ææ¾ï¼åä¸è®¾ç½®Intersection Observer 1519 if (this.isWeixin && this.config.weixin_disable_autoplay) { 1520 return; 1521 } 1522 1523 // 妿å¯ç¨æå è½½ï¼è®¾ç½®Intersection Observer 1524 if (this.config.lazy_load) { 1525 this.setupIntersectionObserver(); 1526 } else if (this.config.autoplay) { 1527 // 妿ä¸ä½¿ç¨æå è½½ï¼ç´æ¥èªå¨ææ¾ææ 1528 this.livePhotos.forEach((livePhoto) => livePhoto.autoPlay()); 1529 } 1530 } 1531 1532 // æ£æµé¡µé¢ä¸çææLive Photoå®¹å¨ 1533 detectLivePhotos() { 1534 const containers = document.querySelectorAll(".live-photo-container"); 1535 1536 containers.forEach((container) => { 1537 // æ£æ¥æ¯å¦å·²ç»åå§åè¿ 1538 if (!container.dataset.initialized) { 1539 const livePhoto = new HexoLivePhoto(container, this.config); 1540 this.livePhotos.set(container, livePhoto); 1541 container.dataset.initialized = "true"; 1542 } 1543 }); 1544 } 1545 1546 // 设置Intersection Observer 1547 setupIntersectionObserver() { 1548 if (this.observer) { 1549 this.observer.disconnect(); 1550 } 1551 1552 this.observer = new IntersectionObserver( 1553 (entries) => { 1554 entries.forEach((entry) => { 1555 const container = entry.target; 1556 const livePhoto = this.livePhotos.get(container); 1557 if (!livePhoto) return; 1558 1559 if (entry.isIntersecting) { 1560 // è¿å ¥å±å¹ï¼èªå¨ææ¾ 1561 livePhoto.autoPlay(); 1562 if (!this.config.keep_observing) { 1563 this.observer.unobserve(container); 1564 } 1565 } else if (livePhoto.isPlaying) { 1566 // ç§»åºå±å¹æ¶ï¼å¿ 须强å¶åæ¢ææ¾ 1567 livePhoto.stop(); 1568 } 1569 }); 1570 }, 1571 { 1572 threshold: this.config.threshold || 0.1, 1573 rootMargin: "0px 0px 10% 0px", 1574 } 1575 ); 1576 1577 this.livePhotos.forEach((_, el) => this.observer.observe(el)); 1578 } 1579} 1580 1581// å½DOMå è½½å®æååå§å 1582document.addEventListener("DOMContentLoaded", function () { 1583 if (window.HexoLivePhotoConfig && window.HexoLivePhotoConfig.enable) { 1584 window.hexoLivePhotoPage = new HexoLivePhotoPage(window.HexoLivePhotoConfig); 1585 } 1586}); 1587</script>
1587
1587<script data-pjax>if(document.getElementById('recent-posts') && (location.pathname ==='/'|| '/' ==='all')){ 1588 var parent = document.getElementById('recent-posts'); 1589 var child = '<div class="recent-post-item" style="width:100%;height: auto"><div id="catalog_magnet"><div class="magnet_item"><a class="magnet_link" href="/pages/categories/å客ç«ç¹ç»´æ¤/"><div class="magnet_link_context" style=""><span style="font-weight:500;flex:1">ð¨ å客维æ¤ä¸ç¾å (54)</span><span style="padding:0px 4px;border-radius: 8px;"><i class="fas fa-arrow-circle-right"></i></span></div></a></div><div class="magnet_item"><a class="magnet_link" href="/pages/categories/é«è´¨é代ç å设计模å¼/"><div class="magnet_link_context" style=""><span style="font-weight:500;flex:1">ð· 代ç è´¨é (26)</span><span style="padding:0px 4px;border-radius: 8px;"><i class="fas fa-arrow-circle-right"></i></span></div></a></div><div class="magnet_item"><a class="magnet_link" href="/pages/categories/ç¾å³äººç/"><div class="magnet_link_context" style=""><span style="font-weight:500;flex:1">ðââï¸ çç±çæ´» (22)</span><span style="padding:0px 4px;border-radius: 8px;"><i class="fas fa-arrow-circle-right"></i></span></div></a></div><div class="magnet_item"><a class="magnet_link" href="/pages/categories/åµå ¥å¼/"><div class="magnet_link_context" style=""><span style="font-weight:500;flex:1">ð§© åµå ¥å¼å¼å (16)</span><span style="padding:0px 4px;border-radius: 8px;"><i class="fas fa-arrow-circle-right"></i></span></div></a></div><div class="magnet_item"><a class="magnet_link" href="/pages/categories/ææ¯å¦ä¹ /"><div class="magnet_link_context" style=""><span style="font-weight:500;flex:1">ð§âð» æ¡©æ¡©ç«å¦ææ¯ (14)</span><span style="padding:0px 4px;border-radius: 8px;"><i class="fas fa-arrow-circle-right"></i></span></div></a></div><div class="magnet_item"><a class="magnet_link" href="/pages/categories/ç®æ³ä¸æ°æ®ç»æ/"><div class="magnet_link_context" style=""><span style="font-weight:500;flex:1">ð§® ç®æ³æ¥è®° (27)</span><span style="padding:0px 4px;border-radius: 8px;"><i class="fas fa-arrow-circle-right"></i></span></div></a></div><a class="magnet_link_more" href="/pages/categories/" style="flex:1;text-align: center;margin-bottom: 10px;">æ¥çæ´å¤...</a></div></div>'; 1590 console.log('å·²æè½½magnet') 1591 parent.insertAdjacentHTML("afterbegin",child)} 1592 </script>
1592<style>#catalog_magnet{flex-wrap: wrap;display: flex;width:100%;justify-content:space-between;padding: 10px 10px 0 10px;align-content: flex-start;}.magnet_item{flex-basis: calc(33.333333333333336% - 5px);background: #f2f2f2;margin-bottom: 10px;border-radius: 8px;transition: all 0.2s ease-in-out;}.magnet_item:hover{background: #669900}.magnet_link_more{color:#555}.magnet_link{color:black}.magnet_link:hover{color:white}@media screen and (max-width: 600px) {.magnet_item {flex-basis: 100%;}}.magnet_link_context{display:flex;padding: 10px;font-size:16px;transition: all 0.2s ease-in-out;}.magnet_link_context:hover{padding: 10px 20px;}</style> 1593 <style></style>
1593<script data-pjax>if(document.getElementById('recent-posts') && location.pathname =='/'){ 1594 1595 var parent = document.getElementById('recent-posts'); 1596 var child = '<div class="recent-post-item" style="height: auto;width: 100%"><div class="blog-slider swiper-container-fade swiper-container-horizontal" id="swiper_container"><div class="blog-slider__wrp swiper-wrapper" style="transition-duration: 0ms"><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms"><div class="blog-slider__img"><img src="https://cdn.gallery.uuanqin.top/img/202604241536499.webp" alt="https://cdn.gallery.uuanqin.top/img/202604241536499.webp"/></div><div class="blog-slider__content"><span class="blog-slider__code">2026-04-24</span><a class="blog-slider__title" href="p/9c61131/">hexo-filter-titlebased-linkï¼æå»ºä½ çæ°åè±å</a><div class="blog-slider__text">ä½ ä¸å®æ³ç</div><a class="blog-slider__button" href="p/9c61131/">详æ </a></div></div>
1596<div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms"><div class="blog-slider__img"><img src="https://cdn.gallery.uuanqin.top/img/hexoobsidian-Grammar.webp" alt="https://cdn.gallery.uuanqin.top/img/hexoobsidian-Grammar.webp"/></div><div class="blog-slider__content"><span class="blog-slider__code">2023-08-01</span><a class="blog-slider__title" href="p/d4bc55f2/">Hexo å客éé
Obsidian æ°è¯æ³</a><div class="blog-slider__text">ä½ å¯è½å¨å¯»æ¾è¿ç¯æç« </div><a class="blog-slider__button" href="p/d4bc55f2/">详æ
</a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms"><div class="blog-slider__img"><img src="https://cdn.gallery.uuanqin.top/img/202408042352584.webp" alt="https://cdn.gallery.uuanqin.top/img/202408042352584.webp"/></div><div class="blog-slider__content"><span class="blog-slider__code">2024-08-04</span><a class="blog-sl
1596ider__title" href="p/e1ee5eca/">Hexo åå®¢ä¸ Waline è¯è®ºåºå®ç°å¤é¾è·³è½¬ä¸é´é¡µ</a><div class="blog-slider__text">æç« æ¨è</div><a class="blog-slider__button" href="p/e1ee5eca/">详æ </a></div></div><div class="blog-slider__item swiper-slide" style="width: 750px; opacity: 1; transform: translate3d(0px, 0px, 0px); transition-duration: 0ms"><div class="blog-slider__img"><img src="https://cdn.gallery.uuanqin.top/img/202412100327066.webp" alt="https://cdn.gallery.uuanqin.top/img/202412100327066.webp"/></div><div class="blog-slider__content"><span class="blog-slider__code">2024-12-10</span><a class="blog-slider__title" href="p/55893d1/">å®ç°ç½ç«å½å å¤åæµï¼å¢å¤æ¥å ¥ Cloudflareï¼</a><div class="blog-slider__text">å主精é</div><a class="blog-slider__button" href="p/55893d1/">详æ </a></div></div></div><div class="blog-slider__pagination swiper-pagination-clickable swiper-pagination-bullets"></div></div></div>'; 1597 console.log('å·²æè½½swiper') 1598 parent.insertAdjacentHTML("afterbegin",child)} 1599 </script>
1599 1600<!--
1600<script data-pjax src="https://cdn.jsdelivr.net/gh/Zfour/Butterfly-swiper/swiper/swiper.min.js"></script>
1600--> 1601<!--
1601<script data-pjax src="https://cdn.jsdelivr.net/gh/Zfour/[email protected]/swiper/swiperindex.js"></script>
1601--> 1602<!--
1602<script data-pjax src="https://cdn.gallery.uuanqin.top/js/swiperindex.js"></script>
1602-->
1603<script data-pjax src="https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/Swiper/4.1.6/js/swiper.min.js"></script>
vendor: 1 bytes, line 1603
1603
1604<script data-pjax src="/js/swiperindex.js"></script>
1604 1605<style></style><!-- hexo injector body_end end -->
1605<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"d14c036e528e4ea583562e4da1f6dc2d","r":1,"spa":2}' crossorigin="anonymous"></script>
1605 1606</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.