1<!doctype html> 2<html 3 lang="en" 4> 5 <head> 6 <title>Disue · è¿ªç´ </title> 7 8 <meta charset="utf-8" /> 9 <meta name="renderer" content="webkit" /> 10 11 <meta name="format-detection" content="telephone=no" /> 12 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 13 <meta http-equiv="Cache-Control" content="no-siteapp" /> 14 <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" /> 15 <meta 16 name="viewport" 17 content="width=device-width, user-scalable=no, initial-scale=1.0, shrink-to-fit=no, viewport-fit=cover" 18 /> 19 20 <meta http-equiv="x-dns-prefetch-control" content="on" /> 21 <meta name="site" content="https://disue.com" /> 22 <!-- OG --> 23 <meta property="og:image" content="/upload/favicon.png" /> 24 <meta property="og:description" content="site.seo.description" /> 25 <meta property="og:type" content="website" /> 26 <meta property="og:locale" content="zh_CN" /> 27 <meta property="og:site_name" content="Disue · è¿ªç´ -Dynamic Internet Security Utility Engine" /> 28 <meta property="og:url" content="https://disue.com" /> 29 <meta property="og:title" content="Disue · è¿ªç´ " /> 30 <meta property="twitter:partner" content="ogwp" /> 31 <!-- /OG --> 32 33 34 35
35<script id="theme-config-getter"> 36 const ThemeConfig = { 37 theme_mode: "user", 38 enable_loading_bar: true, 39 enable_footer: true, 40 footer_position: "none", 41 check_baidu_collect: false, 42 baidu_token: "", 43 enable_back2top: true, 44 enable_back2top_smooth: true, 45 enable_weather: false, 46 weather_key: "", 47 link_behavior: "current", 48 enable_tag_cloud: true, 49 tag_cloud_type: document.getElementById('tags-3d') ? '3d' : 'list', 50 enable_fixed_header: true, 51 enable_clean_mode: false, 52 cursor_effect: "off", 53 enable_offscreen_tip: false, 54 enable_birthday: false, 55 birthday: "2021\/11\/11 06:30", 56 light_time_scope: "5:00~19:00", 57 enable_console_theme: false, 58 version: "1.4.0", 59 60 enable_big_banner: false, 61 enable_banner: false, 62 banner_direction: "horizontal", 63 enable_banner_loop: true, 64 banner_effect: "slide", 65 banner_speed: 500, 66 enable_banner_handle: true, 67 enable_banner_autoplay: true, 68 banner_delay: "3500", 69 enable_banner_switch_button: true, 70 enable_banner_pagination: true, 71 enable_index_list_ajax: false, 72 post_index_page_size: false, 73 backdrop: "off", 74 favicon: "\/upload\/favicon.png", 75 enable_index_list_effect: true, 76 index_list_effect_class: "fadeInUp", 77 show_loaded_time: false, 78 enable_debug: false, 79 access_key: false, 80 enable_copy: true, 81 enable_share: true, 82 enable_share_link: true, 83 enable_share_weixin: true, 84 enable_like: true, 85 enable_toc: true, 86 enable_progress_bar: true, 87 enable_code_expander: false, 88 enable_fold_long_code: false, 89 enable_comment: true, 90 toc_depth: "0", 91 enable_code_title: true, 92 enable_code_hr: true, 93 enable_code_macdot: true, 94 enable_code_line_number: false, 95 enable_code_newline: false, 96 show_tools_when_hover: true, 97 enable_code_copy: true, 98 enable_copy_right_text: false, 99 copy_right_text: "", 100 offscreen_title_leave: "\u6B6A\uFF0C\u4F60\u53BB\u54EA\u91CC\u4E86\uFF1F", 101 offscreen_title_back: "(\u3064\u30A7\u2282)\u54A6\uFF0C\u53C8\u56DE\u6765\u4E86!", 102 enable_journal_effect: true, 103 enable_friend_effect: true, 104 // prettier-ignore 105 journal_list_effect_class: "fadeInUp", 106 friend_list_effect_class: "fadeInUp", 107 enable_like_journal: true, 108 enable_comment_journal: true, 109 journal_block_height: "300", 110 long_code_height: "800", 111 lazyload_avatar: "\/upload\/photo_2025-09-26_13-23-33.jpg", 112 photos_layout: 'waterfall', 113 // prettier-ignore 114 blog_url: "https:\/\/disue.com", 115 blog_title: "Disue \u00B7 \u8FEA\u7D20", 116 // prettier-ignore 117 BASE_RES_URL: "\/themes\/theme-Joe3", 118 BASE_URL: 'https://bbchin.com', 119 }; 120 //转æ°å 121 ThemeConfig.banner_speed = parseInt(ThemeConfig.banner_speed); 122 ThemeConfig.banner_delay = parseInt(ThemeConfig.banner_delay); 123 ThemeConfig.toc_depth = parseInt(ThemeConfig.toc_depth); 124 ThemeConfig.journal_block_height = parseInt(ThemeConfig.journal_block_height); 125 ThemeConfig.long_code_height = parseInt(ThemeConfig.long_code_height); 126 ThemeConfig.photos_gap = 10; 127 ThemeConfig.enable_photos_effect = true; 128 </script>
128 129 130 131 132 133
133<script id="theme-config-getter"> 134 const PageAttrs = { 135 metas_enable_read_limit: "false", 136 metas_enable_page_meta: "false", 137 metas_enable_passage_tips: "false", 138 metas_enable_collect_check: "false", 139 metas_use_raw_content: "false", 140 metas_enable_comment: "true", 141 metas_enable_toc: "true", 142 metas_toc_depth: "0", 143 // prettier-ignore 144 metas_img_max_width: "100%", 145 // prettier-ignore 146 metas_img_align: "center", 147 metas_enable_copy: "false", 148 metas_enable_donate: "true", 149 metas_enable_share: "false", 150 metas_enable_like: "true", 151 metas_enable_fold_long_code: "true", 152 }; 153 </script>
153 154 155 156
156<script id="compatiable-checker"> 157 // å ¼å®¹æ§æ£æ¥ 158 function detectIE() { 159 var n = window.navigator.userAgent, 160 e = n.indexOf('MSIE '); 161 if (e > 0) { 162 return parseInt(n.substring(e + 5, n.indexOf('.', e)), 10); 163 } 164 if (n.indexOf('Trident/') > 0) { 165 var r = n.indexOf('rv:'); 166 return parseInt(n.substring(r + 3, n.indexOf('.', r)), 10); 167 } 168 var i = n.indexOf('Edge/'); 169 return i > 0 && parseInt(n.substring(i + 5, n.indexOf('.', i)), 10); 170 } 171 detectIE() && 172 (alert('å½åç«ç¹ä¸æ¯æIEæµè§å¨ææ¨å¼å¯äºå ¼å®¹æ¨¡å¼ï¼è¯·ä½¿ç¨å ¶ä»æµè§å¨è®¿é®æå ³éå ¼å®¹æ¨¡å¼ã'), 173 (location.href = 'https://www.baidu.com')); 174 </script>
174 175 176
176<script id="theme-config-getter" type="text/javascript"> 177 if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') { 178 ThemeConfig['mode'] = 'development'; 179 console.log(ThemeConfig.mode); 180 } 181 182 if (ThemeConfig.mode === 'development') { 183 console.log('Joe3主é¢é ç½®ï¼', ThemeConfig); 184 console.log('èµæºæ ¹è·¯å¾ï¼', ThemeConfig.BASE_RES_URL); 185 } 186 // 读å䏻颿¨¡å¼ 187 var initThemeMode = function () { 188 try { 189 var curMode = ''; 190 if (ThemeConfig.theme_mode === 'auto') { 191 var light_scope = ThemeConfig.light_time_scope.split('~'); 192 var now = new Date(); 193 var today = now.toLocaleString().split(' ')[0]; 194 var curMode = 195 now >= new Date(today + ' ' + light_scope[0]) && 196 now <= new Date(today + ' ' + light_scope[1]) 197 ? 'light' 198 : 'dark'; 199 localStorage.removeItem('data-mode'); 200 } else if (ThemeConfig.theme_mode === 'user') { 201 // ç¨æ·æ¨¡å¼ä¸ä¼å 仿¬å°å䏻颿¨¡å¼ï¼é»è®¤ä¸ºæµ è² 202 curMode = localStorage.getItem('data-mode') || 'light'; 203 localStorage.setItem('data-mode', curMode); 204 } else { 205 // éç¨æ·æ¨¡å¼ä¸ç´æ¥ååå°é ç½®çæ¨¡å¼ 206 curMode = ThemeConfig.theme_mode; 207 localStorage.removeItem('data-mode'); 208 } 209 document.querySelector('html').setAttribute('data-mode', curMode); 210 } catch (e) { 211 console.log(e); 212 } 213 }; 214 initThemeMode(); 215 window.Joe = { 216 BASE_API: '', 217 isMobile: /windows phone|iphone|android/gi.test(window.navigator.userAgent), 218 bloggerGenerateAvatarOpts: (function () { 219 let generateAvatarOpts = {}; 220 let generate_avatar_opts_str = '{bgColor:'',textColor:'',useTextGradient:false}'; 221 if (generate_avatar_opts_str) { 222 // generate_avatar_opts_str 示ä¾ï¼{bgColor:'',textColor:'',useTextGradient:false}, è§£æ generate_avatar_opts é ç½® 223 try { 224 // 鲿¢ ' çç¹æ®åç¬¦å¯¼è´ JSON è§£æå¤±è´¥ 225 const eleTmp = document.createElement('div'); 226 eleTmp.innerHTML = generate_avatar_opts_str; 227 // key èªå¨å ä¸ "" 鲿¢æ¥éï¼â èªå¨è½¬æ â 228 generate_avatar_opts_str = eleTmp.innerHTML 229 .replace(/'/g, '"') 230 .replace(/([\w]+):/g, '"$1":'); 231 generateAvatarOpts = JSON.parse(generate_avatar_opts_str); 232 } catch (e) { 233 console.error( 234 'Joe3主é¢é ç½®ï¼çææåæ§å¤´åçé 置解æå¤±è´¥ï¼ä½¿ç¨é»è®¤é ç½®ãgenerate_avatar_opts_str:', 235 generate_avatar_opts_str, 236 ' ,error:', 237 e 238 ); 239 } 240 } 241 return generateAvatarOpts; 242 })(), 243 errorImg: function (target, src) { 244 const targetSrc = target.getAttribute('src'); 245 console.log( 246 'å è½½å¾ç失败', 247 ' ,srcArg:', 248 src, 249 ' .target.src:', 250 targetSrc, 251 ' ,target.alt:', 252 target.getAttribute('alt'), 253 ' ,target.dataset.errSrc:', 254 target.dataset.errSrc, 255 ' ,target.dataset.textAvatar:', 256 target.dataset.textAvatar 257 ); 258 259 let generatedTextAvatar; 260 let generatedTextAvatarBase64; 261 262 switch (src) { 263 case 'HomeErrImg': { 264 // 妿 src æ¯ HomeErrImg å使ç¨é¦é¡µé ç½®éé ç½®çæç« é误缺çå¾ 265 src = '/themes/theme-Joe3/assets/img/default_thumbnail.png'; 266 break; 267 } 268 case 'LinksErrImg': { 269 // 妿 src æ¯ LinksErrImg å使ç¨åé¾é ç½®éé ç½®çåé¾é»è®¤ logo 270 src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/default_links_logo.png'; 271 if ( 272 !src || 273 src === targetSrc ||
274 (targetSrc && targetSrc.indexOf('/assets/img/transparent-placeholder.png') !== -1) 275 ) { 276 if (target.dataset.textAvatar || target.getAttribute('alt')) { 277 generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt'); 278 generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 279 src = generatedTextAvatarBase64; 280 } else { 281 src = '/themes/theme-Joe3/assets/img/default_links_logo.png'; 282 } 283 } 284 break; 285 } 286 case 'ErrAvatarImg': { 287 // 妿 src æ¯ ErrAvatarImg å使ç¨å主é ç½®éé ç½®çé»è®¤å¤´å 288 src = target.dataset.errSrc || '/upload/photo_2025-09-26_13-23-33.jpg'; 289 if ( 290 !src || 291 src === targetSrc || 292 (targetSrc && targetSrc.indexOf('/assets/img/transparent-placeholder.png') !== -1) 293 ) { 294 if (target.dataset.textAvatar || target.getAttribute('alt')) { 295 generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt'); 296 generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 297 src = generatedTextAvatarBase64; 298 } else { 299 src = '/themes/theme-Joe3/assets/img/peeps-avatar.png'; 300 } 301 } 302 break; 303 } 304 case 'LoadFailedImg': { 305 // 妿 src æ¯ LoadFailedImg å使ç¨å 载失败çå¾ç 306 src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/img_load_failed.jpg'; 307 break; 308 } 309 } 310 311 const nowSrc = src || target.dataset.errSrc || '/themes/theme-Joe3/assets/img/Joe3.png'; 312 if (targetSrc === nowSrc) return; 313 314 if ( 315 generatedTextAvatarBase64 && 316 generatedTextAvatar && 317 nowSrc === generatedTextAvatarBase64 318 ) { 319 target.setAttribute('data-generated-text-avatar', generatedTextAvatar); 320 } else if (target.getAttribute('data-generated-text-avatar')) { 321 target.removeAttribute('data-generated-text-avatar'); 322 } 323 324 console.log( 325 'å è½½å¾ç失败ï¼ä½¿ç¨é»è®¤å¾ç:', 326 nowSrc, 327 ' ,oldSrc:', 328 targetSrc, 329 ' ,target.alt:', 330 target.getAttribute('alt') 331 ); 332 target.setAttribute('onerror', null); 333 target.setAttribute('src', nowSrc); 334 }, 335 // å·²ç»å è½½ transparent-placeholder.png åæ¿æ¢å¾ç 336 loadedPlaceholderReplaceImg: function (target, src) { 337 const targetSrc = target.getAttribute('src'); 338 if ( 339 !targetSrc || 340 src === targetSrc || 341 targetSrc.indexOf('/assets/img/transparent-placeholder.png') === -1 342 ) { 343 return; 344 } 345 346 console.log( 347 'å è½½å¾ç transparent-placeholder.png åæ¿æ¢å¾ç', 348 ' ,srcArg:', 349 src, 350 ' ,target.alt:', 351 target.getAttribute('alt'), 352 ' ,target.dataset.replaceSrc:', 353 target.dataset.replaceSrc, 354 ' ,target.dataset.textAvatar:', 355 target.dataset.textAvatar 356 ); 357 358 let generatedTextAvatar; 359 let generatedTextAvatarBase64; 360 361 switch (src) { 362 case 'LinksImg': { 363 // 妿 src æ¯ LinksImg å使ç¨åé¾é ç½®éé ç½®çåé¾é»è®¤ logo 364 src = target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/default_links_logo.png'; 365 if (!src || src === targetSrc) { 366 if (target.dataset.textAvatar || target.getAttribute('alt')) { 367 generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt'); 368 generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 369 src = generatedTextAvatarBase64; 370 } else { 371 src = '/themes/theme-Joe3/assets/img/default_links_logo.png'; 372 } 373 } 374 break; 375 } 376 case 'AvatarImg': { 377 // 妿 src æ¯ AvatarImg å使ç¨å主é ç½®éé ç½®çé»è®¤å¤´å 378 src = target.dataset.replaceSrc || '/upload/photo_2025-09-26_13-23-33.jpg'; 379 if (!src || src === targetSrc) { 380 if (target.dataset.textAvatar || target.getAttribute('alt')) { 381 generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt'); 382 target.setAttribute('data-generated-text-avatar', generatedTextAvatar); 383 generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 384 src = generatedTextAvatarBase64; 385 } else { 386 src = '/themes/theme-Joe3/assets/img/peeps-avatar.png'; 387 } 388 } 389 break; 390 } 391 } 392 393 const nowSrc = 394 src || target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/Joe3.png';
395 if (targetSrc === nowSrc) return; 396 397 if ( 398 generatedTextAvatarBase64 && 399 generatedTextAvatar && 400 nowSrc === generatedTextAvatarBase64 401 ) { 402 target.setAttribute('data-generated-text-avatar', generatedTextAvatar); 403 } else if (target.getAttribute('data-generated-text-avatar')) { 404 target.removeAttribute('data-generated-text-avatar'); 405 } 406 407 console.log('å è½½æ¿æ¢åçå¾ç:', nowSrc, ' ,target.alt:', target.getAttribute('alt')); 408 target.setAttribute('onload', null); 409 target.setAttribute('src', nowSrc); 410 }, 411 replaceAllTextAvatarImage: function () { 412 console.log('call replaceAllTextAvatarImage'); 413 const generatedEles = document.querySelectorAll('img[data-generated-text-avatar]'); 414 generatedEles.forEach(function (ele) { 415 const generatedTextAvatar = ele.getAttribute('data-generated-text-avatar'); 416 const generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 417 ele.setAttribute('src', generatedTextAvatarBase64); 418 }); 419 }, 420 // çæéæºé¢è²å½æ° 421 getRandomColor: function (alpha) { 422 const letters = '0123456789ABCDEF'; 423 let color = '#'; 424 for (let i = 0; i < 6; i++) { 425 color += letters[Math.floor(Math.random() * 16)]; 426 } 427 if (alpha !== undefined) { 428 return color + (alpha >= 0 && alpha <= 1 ? Math.round(alpha * 255).toString(16) : 'FF'); 429 } 430 return color; 431 }, 432 // çæéæºé¢è²çæåæ§å¤´å 433 generateTextAvatarImage: function (text, opts) { 434 opts = Object.assign({}, Joe.bloggerGenerateAvatarOpts, opts || {}); 435 opts.fontSize = opts.fontSize || 50; 436 opts.font = opts.font || 'Great Vibes'; 437 opts.canvasRadius = opts.canvasWidth || 1.5 * opts.fontSize; 438 439 // å¦ææ¯ var(--xxxx)ï¼åè¯´ææ¯ css é ç½®çåéï¼éè¦ä»htmlæ ·å¼ä¸è§£ææå ·ä½å¼ 440 if (opts.textColor && /var\(--([\w-]+)\)/.test(opts.textColor)) { 441 const match = opts.textColor.match(/var\(--([\w-]+)\)/); 442 if (match) { 443 let cssVar = 444 getComputedStyle(document.documentElement) 445 .getPropertyValue('--' + match[1]) 446 .trim() || 447 getComputedStyle(document.body) 448 .getPropertyValue('--' + match[1]) 449 .trim(); 450 if (cssVar) { 451 opts.textColor = cssVar; 452 } 453 } 454 } 455 456 // å¦ææ¯ var(--xxxx)ï¼åè¯´ææ¯ css é ç½®çåéï¼éè¦ä»htmlæ ·å¼ä¸è§£ææå ·ä½å¼ 457 if (opts.bgColor && /var\(--([\w-]+)\)/.test(opts.bgColor)) { 458 const match = opts.bgColor.match(/var\(--([\w-]+)\)/); 459 if (match) { 460 let cssVar = 461 getComputedStyle(document.documentElement) 462 .getPropertyValue('--' + match[1]) 463 .trim() || 464 getComputedStyle(document.body) 465 .getPropertyValue('--' + match[1]) 466 .trim(); 467 if (cssVar) { 468 opts.bgColor = cssVar; 469 } 470 } 471 } 472 473 // å建ä¸ä¸ªæ°ç Canvas å ç´ 474 const canvas = document.createElement('canvas'); 475 const ctx = canvas.getContext('2d'); 476 477 // 设置 Canvas ç尺寸 478 canvas.width = opts.canvasRadius; 479 canvas.height = opts.canvasRadius; 480 481 if (opts.bgColor) { 482 ctx.fillStyle = opts.bgColor; 483 } else { 484 // çæéæºé¢è²çæ¸åèæ¯ 485 const gradient = ctx.createRadialGradient( 486 canvas.width / 2, 487 canvas.height / 2, 488 0, 489 canvas.width / 2, 490 canvas.height / 2, 491 canvas.width / 2 492 ); 493 gradient.addColorStop(0, Joe.getRandomColor(0.7)); 494 gradient.addColorStop(1, Joe.getRandomColor(0.7)); 495 496 // ç»å¶æ¸åèæ¯ 497 ctx.fillStyle = gradient; 498 } 499 500 ctx.beginPath(); 501 ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2); 502 ctx.fill(); 503 504 // è®¾ç½®ææ¬æ ·å¼ 505 ctx.font = `${opts.fontSize}px ${opts.font}`; 506 507 if (opts.textColor) { 508 ctx.fillStyle = opts.textColor; 509 } else if (opts.useTextGradient) { 510 // çææåççº¿æ§æ¸å 511 const textGradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height); 512 textGradient.addColorStop(0, Joe.getRandomColor(0.9)); // æåçæ¸åè² 513 textGradient.addColorStop(1, Joe.getRandomColor(0.9)); // æåçæ¸åè² 514 ctx.fillStyle = textGradient; 515 } else if (opts.bgColor) { 516 // 设置äºèæ¯è²ï¼ä½æ¯æ²¡æè®¾ç½®æåé¢è²ï¼åéè¦è®¾ç½®é»è®¤æåé¢è²ä¸ºé»è²ï¼é²æ¢æåé¢è²åèæ¯è²ä¸è´ã注ï¼èæ¯è²ä¸ºæ¸åè²ï¼æåè½æ¾ç¤ºåºæ¥ï¼å æ¤ä¸éè¦è®¾ç½®æåé¢è²ã
517 // 妿 bgColor 为é»è²ï¼åæåé¢è²è®¾ç½®ä¸ºç½è²ï¼å¦å设置为é»è² 518 ctx.fillStyle = /(#000000|#000|black)/.test(opts.bgColor) ? '#fff' : '#000'; 519 } 520 521 ctx.textAlign = 'center'; 522 ctx.textBaseline = 'middle'; 523 524 // å¨ Canvas ä¸ç»å¶ææ¬ 525 ctx.fillText(text.charAt(0), canvas.width / 2, canvas.height / 2); 526 527 // è¿åçæçå¾ç对象 base64 ç¼ç 528 return canvas.toDataURL(); 529 }, 530 }; 531 ThemeConfig.enable_console_theme && 532 console.log( 533 '%cTheme By Jiewen' + ' | çæ¬ V' + ThemeConfig.version, 534 'padding: 8px 15px;color:#fff;background: linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3);border-radius: 0 15px 0 15px;' 535 ); 536 </script>
536 537 538 539 <!-- <th:block th:replace="~{modules/themeSettingVariable :: themeSetting}" />--> 540 <!-- <th:block th:if="${htmlType == 'post'}">--> 541 <!-- <th:block th:replace="~{modules/postMetaVariable :: postSetting}" />--> 542 <!-- </th:block>--> 543 <link rel="shortcut icon" size="32x32" href="/upload/favicon.png" /> 544 <link rel="canonical" href="https://disue.com" /> 545 <link rel="apple-touch-icon" sizes="180x180" href="/upload/favicon.png" /> 546 547 <style> 548 549 @font-face { 550 font-family: "Joe Font"; 551 font-weight: 400; 552 font-style: normal; 553 font-display: swap; 554 555 556 557 } 558 html body { 559 --waline-avatar-size: 2.25rem; 560 --waline-m-avatar-size: calc(var(--waline-avatar-size) * 9 / 13); 561 --waline-theme-color:#1A73E8; 562 --waline-active-color: #1A73E8; 563 564 --theme: #1A73E8; 565 --wave-color: #fff; 566 --scroll-bar: #c0c4cc; 567 --loading-bar: var(--theme); 568 --img-max-width: 100%; 569 font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软é é»", Arial, "sans-serif"; 570 --halo-comment-widget-base-font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软é é»", Arial, "sans-serif"; 571 --halo-search-widget-base-font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软é é»", Arial, "sans-serif"; 572 --halo-comment-widget-base-color: var(--main); 573 --halo-comment-widget-base-info-color:var(--routine); 574 575 576 577 } 578 html[data-mode='dark'] body { 579 580 --waline-theme-color:#9999ff; 581 --waline-active-color: #9999ff; 582 --theme: #9999ff; 583 --wave-color: #fff; 584 --scroll-bar: #c0c4cc; 585 --loading-bar: var(--theme); 586 --halo-search-widget-color-modal-layer: rgba(10, 11, 12, 0.8); 587 --halo-search-widget-color-modal-content-bg: rgb(27, 27, 30); 588 --halo-search-widget-color-form-input: rgb(255, 255, 255); 589 --halo-search-widget-color-form-input-placeholder: #868686; 590 --halo-search-widget-color-form-input-bg: rgb(27, 27, 30); 591 --halo-search-widget-color-form-divider: #292929; 592 --halo-search-widget-color-result-item-bg: #232323; 593 --halo-search-widget-color-result-item-hover-bg: #2b3033; 594 --halo-search-widget-color-result-item-title: rgb(255 255 255); 595 --halo-search-widget-color-result-item-content: #868686; 596 --halo-search-widget-color-command-kbd-item: #868686; 597 --halo-search-widget-color-command-kbd-border: #868686; 598 --halo-search-widget-color-result-empty: #868686; 599 --halo-comment-widget-component-form-input-bg-color: #475569; 600 --halo-comment-widget-component-form-input-color: #ffffff; 601 --halo-comment-widget-component-form-input-border-color: #495056; 602 --halo-comment-widget-component-form-input-border-color-focus: #65a3ff; 603 --halo-comment-widget-component-form-input-box-shadow-focus: 0 0 0 0.15em #1c3966; 604 --halo-comment-widget-component-form-button-login-bg-color: #334155; 605 --halo-comment-widget-component-form-button-login-bg-color-hover: #475569; 606 --halo-comment-widget-component-form-button-login-border-color: #475569; 607 --halo-comment-widget-component-form-button-submit-border-color: #475569; 608 --halo-comment-widget-component-form-button-submit-border-color-hover: #64748b; 609 --halo-comment-widget-component-form-button-emoji-color: #cbd5e1; 610 611 --halo-comment-widget-component-comment-item-action-bg-color-hover: #475569; 612 --halo-comment-widget-component-comment-item-action-color: #64748b; 613 --halo-comment-widget-component-comment-item-action-color-hover: #94a3b8; 614 615 --halo-comment-widget-component-pagination-button-bg-color-hover: #475569; 616 --halo-comment-widget-component-pagination-button-bg-color-active: #475569; 617 --halo-comment-widget-component-pagination-button-border-color-active: #475569; 618 619 --halo-comment-widget-component-emoji-picker-rgb-color: 222, 222, 221; 620 --halo-comment-widget-component-emoji-picker-rgb-accent: 58, 130, 247; 621 --halo-comment-widget-component-emoji-picker-rgb-background: 21, 22, 23; 622 --halo-comment-widget-component-emoji-picker-rgb-input: 0, 0, 0; 623 --halo-comment-widget-component-emoji-picker-color-border: rgba(255, 255, 255, 0.1); 624 --halo-comment-widget-component-emoji-picker-color-border-over: rgba(255, 255, 255, 0.2); 625 626 627 } 628 ::-webkit-scrollbar {
629 width: 8px; 630 } 631 ::-webkit-scrollbar-thumb { 632 background: var(--scroll-bar); 633 } 634 635 636 html[data-mode="dark"] body { 637 background-repeat: no-repeat; 638 background-size: cover; 639 position: relative; 640 } 641 642 html[data-mode="dark"] body::before { 643 content: ""; 644 position: fixed; 645 top: 0; 646 left: 0; 647 width: 100%; 648 height: 100%; 649 background-image: url(""); 650 background-position: top center; 651 background-size: cover; 652 background-repeat: no-repeat; 653 z-index: -1; /* ä¿è¯å 容å±å¨èæ¯ä¹ä¸ */ 654 } 655 656 657 658 html[data-mode="dark"] body { 659 background-image: none; 660 } 661 662 </style> 663 664 665 <!-- å è½½æ¡ --> 666 <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/nprogress/nprogress.min.css" /> 667 <style> 668 #nprogress .bar { 669 height: 3px; 670 background: var(--loading-bar); 671 } 672 #nprogress .peg { 673 display: none; 674 } 675 </style> 676
676<script src="/themes/theme-Joe3/assets/lib/nprogress/nprogress.min.js"></script>
676 677 678 <link 679 rel="preload stylesheet" 680 as="style" 681 href="/themes/theme-Joe3/assets/css/min/normalize.min.css?v=1.4.0" 682 /> 683 <link 684 rel="preload stylesheet" 685 as="style" 686 href="/themes/theme-Joe3/assets/lib/font-awesome/css/font-awesome.min.css" 687 /> 688 <link 689 rel="preload stylesheet" 690 as="style" 691 href="//at.alicdn.com/t/font_2788564_crkap1ed9j5.css" 692 /> 693 <link 694 rel="preload stylesheet" 695 as="style" 696 href="//at.alicdn.com/t/c/font_4198339_jcoci5bgy7.css" 697 /> 698 699 <link 700 rel="preload stylesheet" 701 as="style" 702 href="/themes/theme-Joe3/assets/css/min/theme.min.css?v=1.4.0" 703 /> 704 <style> 705 #Joe .joe_container { 706 max-width: 1320px !important; 707 } 708 709 @media (max-width: 1360px) { 710 #Joe .joe_container { 711 max-width: initial !important; 712 } 713 } 714 @media (max-width: 768px) { 715 #Joe .joe_container { 716 max-width: initial !important; 717 } 718 } 719 </style> 720 <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/qmsg/qmsg.css" /> 721 <link 722 rel="preload stylesheet" 723 as="style" 724 href="/themes/theme-Joe3/assets/lib/animate/animate.min.css" 725 /> 726 727 728 <link 729 rel="preload stylesheet" 730 as="style" 731 href="/themes/theme-Joe3/assets/lib/prism/prism.min.css" 732 /> 733 <link 734 rel="preload stylesheet" 735 as="style" 736 href="/themes/theme-Joe3/assets/lib/prism/themes/prism-one-dark.css" 737 /> 738 739 <link 740 rel="preload stylesheet" 741 as="style" 742 href="/themes/theme-Joe3/assets/css/min/global.min.css?v=1.4.0" 743 /> 744 745 746 747 748 749 750 <link 751 rel="preload stylesheet" 752 as="style" 753 href="/themes/theme-Joe3/assets/css/min/responsive.min.css?v=1.4.0" 754 /> 755 <link 756 rel="stylesheet" 757 href="/themes/theme-Joe3/assets/lib/fancybox/jquery.fancybox.min.css" 758 /> 759 760 761 <link 762 rel="preload stylesheet" 763 as="style" 764 href="/themes/theme-Joe3/assets/css/min/beauty.min.css?v=1.4.0" 765 /> 766 767 768
768<script src="/themes/theme-Joe3/assets/lib/[email protected]/jquery.min.js?v=1.4.0"></script>
768 769 770 <meta name="generator" content="Halo 2.26.1"/><meta name="description" content=""/><!-- plugin-comment-widget start --> 771<link rel="modulepreload" href="/plugins/PluginCommentWidget/assets/static/comment-widget.js?version=3.0.0"> 772<link rel="stylesheet" href="/plugins/PluginCommentWidget/assets/static/index.css?version=3.0.0" /> 773<!-- plugin-comment-widget end --> 774<!-- PluginSearchWidget start -->
775<script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js?version=1.7.1" defer></script>
775 776<link rel="stylesheet" href="/plugins/PluginSearchWidget/assets/static/style.css?version=1.7.1" /> 777<!-- PluginSearchWidget end --> 778<link rel="icon" href="/upload/favicon.png" />
779<script async defer src="/halo-tracker.js" data-group="content.halo.run" data-plural="singlepages" data-name="173d295b-83ea-4b43-b201-07fbd30f155c"></script>
779 780</head> 781 <!-- /OG --> 782 783 <body> 784 <div id="Joe"> 785 786 <header class="joe_header"> 787 <div 788 class="joe_header__above topInDown fixed " 789 > 790 <div 791 class="joe_container joe_header_container" 792 > 793 <i class="joe-font joe-icon-caidan joe_header__above-slideicon"></i> 794 795 <a 796 title="Disue · è¿ªç´ " 797 class="joe_header__above-logo" 798 href="https://disue.com" 799 > 800 <img 801 style="border-radius:4px" 802 src="/upload/favicon.png" 803 alt="Disue · è¿ªç´ " 804 onerror="Joe.errorImg(this, 'ErrAvatarImg')" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/favicon.png?width=1600 1600w, /upload/favicon.png?width=400 400w, /upload/favicon.png?width=800 800w, /upload/favicon.png?width=1200 1200w" 805 /> 806 </a> 807 808 <nav 809 class="joe_header__above-nav " 810 > 811 812 <!-- èªé导èª--> 813 814 815 816 817 818 819 <a 820 class="item" 821 href="/" 822 title="é¦é¡µ" 823 > 824 825 é¦é¡µ 826 </a> 827 828 829 830 831 832 833 <a 834 class="item" 835 href="//img.disue.com" 836 target="_blank" 837 title="å¾åº" 838 > 839 840 å¾åº 841 </a> 842 843 844 845 846 847 848 <a 849 class="item" 850 href="/about" 851 target="_self" 852 title="å ³äº" 853 > 854 855 å ³äº 856 </a> 857 858 859 860 861 862 863 <a 864 class="item" 865 href="/links" 866 target="_self" 867 title="åé¾" 868 > 869 870 åé¾ 871 </a> 872 873 874 875 876 877 878 879 </nav> 880 881 <div class="joe_header__above-search"> 882 <!-- <div class="nav_login">--> 883 <!-- <th:block th:if="${#authentication.name == 'anonymousUser'}">--> 884 <!-- <a href="/console" title="æç´¢"><i class="jiewen joe-icon-zhanghao"></i></a>--> 885 <!-- </th:block>--> 886 <!-- <th:block th:if="${#authentication.name != 'anonymousUser'}">--> 887 <!-- <th:block th:with="contributor = ${contributorFinder.getContributor(#authentication.name)}">--> 888 <!-- <img th:src="${contributor.avatar}" th:title="${contributor.displayName}" th:alt="${contributor.displayName}" onerror="Joe.errorImg(this, 'ErrAvatarImg')" >--> 889 <!-- </th:block>--> 890 <!-- </th:block>--> 891 <!-- </div>--> 892 <!-- <input maxlength="16" autocomplete="off" placeholder="请è¾å ¥å ³é®å..." name="keyword" value="" class="input" type="text">--> 893 <button 894 type="submit" 895 id="halo-search" 896 class="submit" 897 style="border-radius: 17px 17px 17px 17px" 898 aria-label="æç´¢æé®" 899 > 900 <i class="joe-font joe-icon-search"></i> 901 </button> 902 <!-- <span class="icon"></span>--> 903 904 <!-- <nav class="result">--> 905 <!-- <a href="archives/ce-shi-wen-zhang.html" title="æµè¯æç« " class="item">--> 906 <!-- <span class="sort">1</span>--> 907 <!-- <span class="text">æµè¯æç« </span>--> 908 <!-- </a>--> 909 <!-- <a href="archives/hello-halo.html" title="Hello Halo" class="item">--> 910 <!-- <span class="sort">2</span>--> 911 <!-- <span class="text">Hello Halo</span>--> 912 <!-- </a>-->
912 913 <!-- </nav>--> 914 </div> 915 916 <a href="javascript:SearchWidget.open()" title="æç´¢" 917 ><i class="joe-font joe-icon-search joe_header__above-searchicon"></i 918 ></a> 919 </div> 920 </div> 921 922 <div class="joe_header__slideout"> 923 <div class="joe_header__slideout-wrap"> 924 <img 925 width="100%" 926 height="150" 927 class="joe_header__slideout-image" 928 src="/themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0" 929 alt="ä¾§è¾¹æ å£çº¸" 930 onerror="Joe.errorImg(this)" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0&width=1600 1600w, /themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0&width=400 400w, /themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0&width=800 800w, /themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0&width=1200 1200w" 931 /> 932 <div class="joe_header__slideout-author"> 933 <img 934 width="50" 935 height="50" 936 class="avatar ls-is-cached lazyloaded" 937 data-src="/upload/photo_2025-09-26_13-23-33.jpg" 938 src="/upload/photo_2025-09-26_13-23-33.jpg" 939 alt="å主头å" 940 data-text-avatar="Disue · è¿ªç´ " 941 onload="Joe.loadedPlaceholderReplaceImg(this, 'AvatarImg')" 942 onerror="Joe.errorImg(this, 'ErrAvatarImg')" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/photo_2025-09-26_13-23-33.jpg?width=1600 1600w, /upload/photo_2025-09-26_13-23-33.jpg?width=400 400w, /upload/photo_2025-09-26_13-23-33.jpg?width=800 800w, /upload/photo_2025-09-26_13-23-33.jpg?width=1200 1200w" 943 /> 944 <div class="info"> 945 <a 946 class="link" 947 href="https://disue.com" 948 target="_blank" 949 rel="noopener noreferrer nofollow" 950 >Disue · è¿ªç´ 951 952 </a> 953 <p class="motto joe_motto">Carpe diem</p> 954 </div> 955 </div> 956 957 <ul class="joe_header__slideout-count"> 958 <li class="item"> 959 <i class="joe-font joe-icon-danganguanli"></i> 960 <span>累计æ°å <strong>16</strong> ç¯æç« </span> 961 </li> 962 963 <li class="item"> 964 <i class="joe-font joe-icon-remen"></i> 965 <span>累计å建 <strong>16</strong> 个æ ç¾</span> 966 </li> 967 968 969 <li class="item"> 970 <i class="joe-font joe-icon-message"></i> 971 <span>累计æ¶å° <strong>2</strong> æ¡è¯è®º</span> 972 </li> 973 974 975 </ul> 976 <ul class="joe_header__slideout-menu panel-box"> 977 <li> 978 <a class="link panel in" href="#" rel="nofollow"> 979 <span>æ ç®</span> 980 <i class="joe-font joe-icon-arrow-right"></i> 981 </a> 982 <ul class="slides panel-body panel-box panel-side-menu" style="display: block"> 983 984 985 986 987 988 989 <li> 990 <a 991 class="link" 992 href="/" 993 title="é¦é¡µ" 994 >é¦é¡µ</a 995 > 996 </li> 997 998 999 1000 1001 <li> 1002 <a 1003 class="link" 1004 href="//img.disue.com" 1005 target="_blank" 1006 title="å¾åº" 1007 >å¾åº</a 1008 > 1009 </li> 1010 1011 1012 1013 1014 <li> 1015 <a 1016 class="link" 1017 href="/about" 1018 target="_self" 1019 title="å ³äº" 1020 >å ³äº</a 1021 > 1022 </li> 1023 1024 1025 1026 1027 <li> 1028 <a 1029 class="link" 1030 href="/links" 1031 target="_self" 1032 title="åé¾" 1033 >åé¾</a 1034 > 1035 </li> 1036 1037 1038 1039 1040 1041 1042 </ul> 1043 </li> 1044 </ul> 1045 </div> 1046 </div> 1047 1048 <div class="joe_header__searchout"> 1049 <a href="javascript:SearchWidget.open()" title="æç´¢"></a> 1050 <!-- <div class="joe_container">--> 1051 1052 <!-- <div class="joe_header__searchout-inner">--> 1053 <!-- <form class="joe_header__above-search-mobile" method="get" action="http://localhost:8093/search">--> 1054 <!-- <input maxlength="16" autocomplete="off" placeholder="请è¾å ¥å ³é®å..." name="keyword" value="" class="input" type="text">--> 1055 <!-- <button type="submit" class="submit">æç´¢</button>--> 1056 <!-- </form>--> 1057 <!-- </div>--> 1058 <!-- </div>--> 1059 </div> 1060 1061 <div class="joe_header__toc"> 1062 <div class="joe_header__toc-wrap"> 1063 <div class="toc_top"> 1064 <h3>ç® å½<span>CONTENT</span></h3> 1065 <img 1066 width="100%" 1067 height="150" 1068 src="/themes/theme-Joe3/assets/img/context_bg.png" 1069 alt="æç« ç®å½" 1070 onerror="Joe.errorImg(this)" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/themes/theme-Joe3/assets/img/context_bg.png?width=1600 1600w, /themes/theme-Joe3/assets/img/context_bg.png?width=400 400w, /themes/theme-Joe3/assets/img/context_bg.png?width=800 800w, /themes/theme-Joe3/assets/img/context_bg.png?width=1200 1200w" 1071 /> 1072 </div> 1073 <div id="js-toc-mobile" class="toc"></div> 1074 </div> 1075 </div> 1076 1077 <div class="joe_header__mask"></div> 1078 </header> 1079 1080 <div 1081 class="joe_container joe_main_container page-sheet animated showInUp " 1082 > 1083 <div class="joe_main"> 1084 <div 1085 class="joe_detail" 1086 > 1087 <h1 1088 class="joe_detail__title txt-shadow" 1089 > 1090 å ³äº 1091 </h1> 1092 1093 1094 <article 1095 class="joe_detail__article animated fadeIn center-img uncopy " 1096 > 1097 <div id="singlePage-inner"> 1098 1099 <h3 style="" id="%F0%9F%9A%80-%E6%88%91%E4%BB%AC%E6%98%AF%E8%B0%81%EF%BC%9F">ð æä»¬æ¯è°ï¼</h3><p style="">æ¬¢è¿æ¥å° <strong>Disue.com</strong>ï¼</p><p style=""><strong>Disue</strong> æ¯ä¸ä¸ªä¸æ³¨äº <strong>IT åºç¡è®¾æ½ãæå¡å¨è¿ç»´åç½ç»å®å ¨è§£å³æ¹æ¡</strong>çæ·±åº¦ææ¯å客ã</p><p style="">æä»¬ç¸ä¿¡ï¼é«æ§è½ãé«å®å ¨æ§å髿§ä»·æ¯çæ°åæå¡ä¸åºè¯¥æ¯å°æ°ä¸å®¶çç¹æï¼èåºè¯¥éè¿ç¥è¯å ±äº«æ®åç»æ¯ä¸ä½ææ¯ç±
1099好è åç«é¿ã</p><p style="">æä»¬è´åäºæä¾<strong>å®ç¨ãæ·±å ¥ã坿ä½</strong>çææ¯æååç»éªå享ã</p><h3 style="" id="%F0%9F%8C%90-disue-%E7%9A%84%E6%A0%B8%E5%BF%83%E5%85%B3%E6%B3%A8%E7%82%B9-(%E6%8A%80%E6%9C%AF%E6%A0%88)">ð Disue çæ ¸å¿å ³æ³¨ç¹ (ææ¯æ )</h3><p style="">å¨ Disueï¼æ¨å¯ä»¥æ¾å°ä»¥ä¸å ä¸ªå ³é®é¢åçä¸çº¿å®è·µåè§£å³æ¹æ¡ï¼</p><ul><li><p style=""><strong>äºåçä¸èæå</strong></p></li><li><p style=""><strong>æå¡å¨è¿ç»´ä¸ä¼å</strong></p></li><li><p style=""><strong>ç½ç»å®å ¨ä¸é²å¾¡</strong></p></li><li><p style=""><strong>è¿æ¥ææ¯ä¸å沿è¶å¿</strong></p></li></ul><h3 style="" id="%E2%9C%A8-%E6%88%91%E4%BB%AC%E7%9A%84%E6%84%BF%E6%99%AF">⨠æä»¬çæ¿æ¯</h3><p style="">æä»¬çå£å·æ¯ï¼<strong>D</strong>ynamic <strong>I</strong>nternet <strong>S</strong>ecurity <strong>U</strong>tility <strong>E</strong>ngine (Disue)</p><p style="">æä»¬è´åäºæä¸ºæ¨çææ¯å¼æï¼ä¸ºæ¨æä¾ï¼</p><ol><li><p style=""><strong>卿ï¼Dynamicï¼</strong> çææ¯æ´æ°åè§£å³æè·¯ã</p></li><li><p style=""><strong>å®å ¨ï¼Securityï¼</strong> 稳å®çç¯å¢æå»ºæåã</p></li><li><p style=""><strong>å®ç¨ï¼Utilityï¼</strong> ä¸ç»è¿éªè¯çè¿ç»´èæ¬åé ç½®ã</p></li></ol><p style="">æ è®ºæ¨æ¯æ³è¦æå»ºä¸ä¸ªé«é²ç½ç«çç«é¿ï¼è¿æ¯å¨æ¢ç´¢å®¹å¨åææ¯çè¿ç»´å·¥ç¨å¸ï¼Disue é½å°æ¯æ¨å¼å¾ä¿¡èµçææ¯ä¼ä¼´ã</p> 1100 1101 1102 </div> 1103 1104 </article> 1105 </div> 1106 1107 <div class="joe_comment"> 1108 1109 1110 1111 <div class="joe_comment_box"> 1112 <div class="box_title"> 1113 <h2>è¯è®ºåº</h2> 1114 </div> 1115 1116 <div id="comment-content-halo-run-SinglePage-173d295b-83ea-4b43-b201-07fbd30f155c"></div>
1117<script type="module" data-pjax> 1118 import { init } from "/plugins/PluginCommentWidget/assets/static/comment-widget.js?version=3.0.0"; 1119 init( 1120 "#comment-content-halo-run-SinglePage-173d295b-83ea-4b43-b201-07fbd30f155c", 1121 { 1122 group: "content.halo.run", 1123 kind: "SinglePage", 1124 name: "173d295b-83ea-4b43-b201-07fbd30f155c", 1125 } 1126 ); 1127</script>
1127 1128 1129 1130 1131 </div> 1132 1133 1134 </div> 1135 1136 1137 </div> 1138 1139 1140 1141 <aside 1142 class="joe_aside" 1143 > 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 <!-- çé¨æç« --> 1154 1155 1156 <section class="joe_aside__item newest"> 1157 <div class="joe_aside__item-title"> 1158 <i class="joe-font joe-icon-huo"></i> 1159 <span class="text">çé¨æç« </span> 1160 </div> 1161 <div class="joe_aside__item-contain"> 1162 <ul class="list"> 1163 1164 <li class="item"> 1165 <a class="link" href="/archives/esim-global" 1166 >å ¨ç eSIM éè´ä¸é¿æä¿å·å ¨æ»ç¥</a 1167 > 1168 <i class="joe-font joe-icon-link"></i> 1169 </li> 1170 <li class="item"> 1171 <a class="link" href="/archives/cf-api-ns" 1172 >Cloudflare API ä¿®æ¹åå NS æå¡å¨æå</a 1173 > 1174 <i class="joe-font joe-icon-link"></i> 1175 </li> 1176 <li class="item"> 1177 <a class="link" href="/archives/esimgg" 1178 >å嫿¼«æ¸¸ç¦æ¼ï¼æ¥æ±èªç±è¿æ¥ï¼eSIM.gg</a 1179 > 1180 <i class="joe-font joe-icon-link"></i> 1181 </li> 1182 <li class="item"> 1183 <a class="link" href="/archives/free-domain" 1184 >å è´¹åå/ä½ä»·ååæ±æ»</a 1185 > 1186 <i class="joe-font joe-icon-link"></i> 1187 </li> 1188 <li class="item"> 1189 <a class="link" href="/archives/vpscommand" 1190 >VPS/Linux æå¡å¨å¸¸ç¨èæ¬åå½ä»¤</a 1191 > 1192 <i class="joe-font joe-icon-link"></i> 1193 </li> 1194 1195 </ul> 1196 </div> 1197 </section> 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 <!-- æ ç¾äº--> 1221 1222 <section class="joe_aside__item tags-cloud" id="tags-cloud"> 1223 <div class="joe_aside__item-title"> 1224 <i class="joe-font joe-icon-tag"></i> 1225 <span class="text">æ ç¾äº</span> 1226 <a class="tags_more" href="/tags">æ´å¤<i class="joe-font joe-icon-more-right"></i></a> 1227 </div> 1228 <div class="joe_aside__item-contain"> 1229 <div 1230 class="tags-cloud-list static" 1231 style="display:none" 1232 > 1233 1234 1235 <a 1236 data-label="çç½å" 1237 data-url="/tags/duan-wang-zhi" 1238 href="/tags/duan-wang-zhi" 1239 title="çç½å" 1240 >çç½å</a 1241 ><a 1242 data-label="Fail2Ban" 1243 data-url="/tags/fail2ban" 1244 href="/tags/fail2ban" 1245 title="Fail2Ban" 1246 >Fail2Ban</a 1247 ><a 1248 data-label="å½é äºè" 1249 data-url="/tags/guo-ji-hu-lian" 1250 href="/tags/guo-ji-hu-lian" 1251 title="å½é äºè" 1252 >å½é äºè</a 1253 ><a 1254 data-label="è·¨å¢ç½ç»ä¼å" 1255 data-url="/tags/kua-jing-wang-luo-you-hua" 1256 href="/tags/kua-jing-wang-luo-you-hua" 1257 title="è·¨å¢ç½ç»ä¼å" 1258 >è·¨å¢ç½ç»ä¼å</a 1259 ><a 1260 data-label="Hermes" 1261 data-url="/tags/hermes" 1262 href="/tags/hermes" 1263 title="Hermes" 1264 >Hermes</a 1265 ><a 1266 data-label="åå" 1267 data-url="/tags/yu-ming" 1268 href="/tags/yu-ming" 1269 title="åå" 1270 >åå</a 1271 ><a 1272 data-label="馿¸¯" 1273 data-url="/tags/xiang-gang" 1274 href="/tags/xiang-gang" 1275 title="馿¸¯" 1276 >馿¸¯</a 1277 ><a 1278 data-label="Docker" 1279 data-url="/tags/docker" 1280 href="/tags/docker" 1281 title="Docker" 1282 >Docker</a 1283 ><a 1284 data-label="CN2 GIA" 1285 data-url="/tags/cn2-gia" 1286 href="/tags/cn2-gia" 1287 title="CN2 GIA" 1288 >CN2 GIA</a 1289 ><a 1290 data-label="VPS" 1291 data-url="/tags/vps" 1292 href="/tags/vps" 1293 title="VPS" 1294 >VPS</a 1295 ><a 1296 data-label="eSIM" 1297 data-url="/tags/esim" 1298 href="/tags/esim" 1299 title="eSIM" 1300 >eSIM</a 1301 ><a 1302 data-label="AI" 1303 data-url="/tags/ai" 1304 href="/tags/ai" 1305 title="AI" 1306 >AI</a 1307 ><a 1308 data-label="Nginx" 1309 data-url="/tags/nginx" 1310 href="/tags/nginx" 1311 title="Nginx" 1312 >Nginx</a 1313 ><a 1314 data-label="Cloudflare" 1315 data-url="/tags/cloudflare" 1316 href="/tags/cloudflare" 1317 title="Cloudflare" 1318 >Cloudflare</a 1319 ><a 1320 data-label="Haloå客" 1321 data-url="/tags/halobo-ke" 1322 href="/tags/halobo-ke" 1323 title="Haloå客" 1324 >Haloå客</a 1325 > 1326 1327 1328 1329 </div> 1330 1331 <div id="tags-3d"> 1332 <div class="empty">å è½½ä¸â¦</div> 1333 </div> 1334 1335 </div> 1336 </section> 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 <!-- åç±»äº--> 1373 1374 <section class="joe_aside__item tags-cloud" id="categories-cloud"> 1375 <div class="joe_aside__item-title">
1376 <i class="joe-font joe-icon-tag"></i> 1377 <span class="text">åç±»äº</span> 1378 <a class="tags_more" href="/categories" 1379 >æ´å¤<i class="joe-font joe-icon-more-right"></i 1380 ></a> 1381 </div> 1382 <div class="joe_aside__item-contain"> 1383 <div 1384 class="categories-cloud-list static" 1385 > 1386 1387 1388 1389 <a 1390 data-label="岿æ¾é" 1391 data-url="/categories/life" 1392 href="/categories/life" 1393 title="岿æ¾é" 1394 >岿æ¾é</a 1395 ><a 1396 data-label="æ°åçæ´»" 1397 data-url="/categories/digitalnomad" 1398 href="/categories/digitalnomad" 1399 title="æ°åçæ´»" 1400 >æ°åçæ´»</a 1401 ><a 1402 data-label="äºç«¯æè ¾" 1403 data-url="/categories/cloudtech" 1404 href="/categories/cloudtech" 1405 title="äºç«¯æè ¾" 1406 >äºç«¯æè ¾</a 1407 > 1408 1409 1410 </div> 1411 1412 </div> 1413 </section> 1414 1415 1416 1417 1418 1419 1420 </aside> 1421 1422 1423 </div> 1424 <!-- action--> 1425 1426 <div class="joe_action"> 1427 1428 1429 1430 1431 1432 1433 <div class="joe_action_item mode"> 1434 <svg 1435 class="mode-light" 1436 height="25"
1437 viewBox="0 0 1024 1024" 1438 width="25" 1439 xmlns="http://www.w3.org/2000/svg" 1440 > 1441 <path 1442 d="M234.24 512a277.76 277.76 0 1 0 555.52 0 277.76 277.76 0 1 0-555.52 0zM512 187.733a42.667 42.667 0 0 1-42.667-42.666v-102.4a42.667 42.667 0 0 1 85.334 0v102.826A42.667 42.667 0 0 1 512 187.733zm-258.987 107.52a42.667 42.667 0 0 1-29.866-12.373l-72.96-73.387a42.667 42.667 0 0 1 59.306-59.306l73.387 72.96a42.667 42.667 0 0 1 0 59.733 42.667 42.667 0 0 1-29.867 12.373zm-107.52 259.414H42.667a42.667 42.667 0 0 1 0-85.334h102.826a42.667 42.667 0 0 1 0 85.334zm34.134 331.946a42.667 42.667 0 0 1-29.44-72.106l72.96-73.387a42.667 42.667 0 0 1 59.733 59.733l-73.387 73.387a42.667 42.667 0 0 1-29.866 12.373zM512 1024a42.667 42.667 0 0 1-42.667-42.667V878.507a42.667 42.667 0 0 1 85.334 0v102.826A42.667 42.667 0 0 1 512 1024zm332.373-137.387a42.667 42.667 0 0 1-29.866-12.373l-73.387-73.387a42.667 42.667 0 0 1 0-59.733 42.667 42.667 0 0 1 59.733 0l72.96 73.387a42.667 42.667 0 0 1-29.44 72.106zm136.96-331.946H878.507a42.667 42.667 0 1 1 0-85.334h102.826a42.667 42.667 0 0 1 0 85.334zM770.987 295.253a42.667 42.667 0 0 1-29.867-12.373 42.667 42.667 0 0 1 0-59.733l73.387-72.96a42.667 42.667 0 1 1 59.306 59.306l-72.96 73.387a42.667 42.667 0 0 1-29.866 12.373z" 1443 /> 1444 </svg> 1445 <svg 1446 class="mode-dark" 1447 height="25"
1448 viewBox="0 0 1024 1024" 1449 width="25" 1450 xmlns="http://www.w3.org/2000/svg" 1451 > 1452 <path 1453 d="M587.264 104.96c33.28 57.856 52.224 124.928 52.224 196.608 0 218.112-176.128 394.752-393.728 394.752-29.696 0-58.368-3.584-86.528-9.728C223.744 832.512 369.152 934.4 538.624 934.4c229.376 0 414.72-186.368 414.72-416.256 1.024-212.992-159.744-389.12-366.08-413.184z" 1454 /> 1455 <path 1456 d="M340.48 567.808l-23.552-70.144-70.144-23.552 70.144-23.552 23.552-70.144 23.552 70.144 70.144 23.552-70.144 23.552-23.552 70.144zM168.96 361.472l-30.208-91.136-91.648-30.208 91.136-30.208 30.72-91.648 30.208 91.136 91.136 30.208-91.136 30.208-30.208 91.648z" 1457 /> 1458 </svg> 1459 </div> 1460 1461 1462 <div class="joe_action_item back2top"> 1463 <svg height="25" viewBox="0 0 1024 1024" width="25" xmlns="http://www.w3.org/2000/svg"> 1464 <path 1465 d="M725.902 498.916c18.205-251.45-93.298-410.738-205.369-475.592l-6.257-3.982-6.258 3.414c-111.502 64.853-224.711 224.142-204.8 475.59-55.751 53.476-80.214 116.623-80.214 204.8v15.36l179.2-35.27c11.378 40.39 58.596 69.973 113.21 69.973 54.613 0 101.262-29.582 112.64-68.836l180.337 36.41v-15.36c-.569-89.885-25.031-153.6-82.489-206.507zM571.733 392.533c-33.564 31.29-87.04 28.445-118.329-5.12s-28.444-87.04 5.12-117.76c33.565-31.289 87.04-28.444 118.33 5.12s28.444 86.471-5.12 117.76zm-56.32 368.64c-35.84 0-64.284 29.014-64.284 64.285 0 35.84 54.044 182.613 64.284 182.613s64.285-146.773 64.285-182.613c0-35.271-29.014-64.285-64.285-64.285z" 1466 /> 1467 </svg> 1468 </div> 1469 1470 </div> 1471 1472 1473 <footer 1474 class="joe_footer " 1475 > 1476 <div 1477 class="joe_container" 1478 > 1479 <div class="item"> 1480 <p> 1481 © 2021 - 2026<a 1482 href="https://disue.com" 1483 target="_blank" 1484 rel="noopener noreferrer" 1485 > 1486 Disue · è¿ªç´ 1487 </a> 1488 1489 </p> 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 <p class="site_driven"> 1503 æ¬ç«ç¹ç± 1504 <a 1505 href="https://go.ms.ci/bwh" 1506 target="_blank" 1507 rel="noopener noreferrer nofollow" 1508 > 1509 <img 1510 class="custom" 1511 src="/upload/logo1.png" 1512 alt="äºæå¡å" 1513 onerror="Joe.errorImg(this, 'LoadFailedImg')" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/logo1.png?width=1600 1600w, /upload/logo1.png?width=400 400w, /upload/logo1.png?width=800 800w, /upload/logo1.png?width=1200 1200w" 1514 /> </a 1515 >æä¾äºæå¡ 1516 </p> 1517 1518 1519 1520 1521 </div> 1522 <div class="side-col"> 1523 1524 <div class="item"> 1525 1526 <a class="rss" href="/rss.xml" target="_blank" rel="noopener noreferrer" 1527 ><i class="joe-font joe-icon-rss-fill"></i> RSS</a 1528 > 1529 1530 1531 <a href="/sitemap.xml" target="_blank" rel="noopener noreferrer"> 1532 ç«ç¹å°å¾ 1533 </a> 1534 1535 </div> 1536 1537 1538 </div> 1539 </div> 1540 </footer> 1541 1542 </div> 1543
1543<script> 1544 // çå¾ ææ¡£å è½½å®æ 1545 document.addEventListener("DOMContentLoaded", function() { 1546 // è·åæç« å 容 1547 const postContent = document.getElementById("singlePage-inner").innerText || ""; 1548 1549 // ä½¿ç¨æ£å表达å¼å¹é ä¸æãæ°åå忝 1550 const matches = postContent.match(/[\u4e00-\u9fa5a-zA-Z0-9]/g); 1551 1552 // è®¡ç®ææåç¬¦æ° 1553 const wordCount = matches ? matches.length : 0; 1554 1555 // æ´æ°åæ°ç»è®¡æ¾ç¤º 1556 document.getElementById("wordCount").innerText = `${wordCount} å`; 1557 }); 1558 1559 </script>
1559 1560 1561 <!-- ===== å¼å ¥èæ¬ start ===== --> 1562 <!-- <th:block th:if="${htmlType == 'index' && theme.config.home.enable_index_list_effect == true} or ${htmlType == 'journals' && theme.config.journals.enable_journal_effect == true} or ${htmlType == 'photos' && theme.config.photos.enable_photos_effect == true}">--> 1563
1563<script src="/themes/theme-Joe3/assets/lib/wowjs/wow.min.js"></script>
1563 1564 <!-- </th:block>--> 1565
1565<script src="/themes/theme-Joe3/assets/lib/lazysizes/lazysizes.min.js"></script>
1565 1566
1566<script src="/themes/theme-Joe3/assets/lib/qmsg/qmsg.js"></script>
1566 1567 1568
1568<script src="/themes/theme-Joe3/assets/lib/j-marked/marked.min.js"></script>
1568 1569 1570
1570<script src="/themes/theme-Joe3/assets/js/min/utils.min.js"></script>
1570 1571 1572 1573 1574 1575
1575<script src="/themes/theme-Joe3/assets/lib/fancybox/jquery.fancybox.min.js"></script>
1575 1576 1577
1577<script src="/themes/theme-Joe3/assets/js/min/custom.min.js?v=1.4.0"></script>
1577 1578 1579
1579<script src="/themes/theme-Joe3/assets/lib/clipboard/clipboard.min.js"></script>
1579 1580 1581 1582
1582<script src="/themes/theme-Joe3/assets/lib/favico/favico.min.js"></script>
1582 1583 1584 1585 <!--ç¸å--> 1586 1587 1588 <!--===== å¼å ¥é¡µé¢çº§js start =====--> 1589
1589<script src="/themes/theme-Joe3/assets/js/min/common.min.js?v=1.4.0"></script>
1589 1590 1591
1591<script src="/themes/theme-Joe3/assets/lib/prism/prism.min.js"></script>
1591 1592 1593 1594 1595 1596 1597 1598 1599 1600
1600<script src="/themes/theme-Joe3/assets/lib/draggabilly/draggabilly.min.js"></script>
1600 1601
1601<script src="/themes/theme-Joe3/assets/js/min/leaving.min.js"></script>
1601 1602 1603 1604 1605 <!-- ===== å¼å ¥é¡µé¢çº§js end ===== --> 1606 1607 <!-- ===== å¼å ¥èæ¬ start ===== --> 1608 1609 1610 1611 <!-- ===== å¼å ¥èæ¬ end =====--> 1612 1613 1614 1615 1616 1617 <!--æç´¢ç¹å»--> 1618
1618<script> 1619 const searchButton = document.getElementById('halo-search'); 1620 searchButton.addEventListener('click', function () { 1621 SearchWidget.open(); 1622 }); 1623 </script>
1623 1624 <!-- 大å¾é ç½®--> 1625 1626 1627 1628 1629 </body> 1630 1631</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.