PageSourceSearch

https://disue.com/categories/digitalnomad

html disue.com collected 2026-10-06 13:14:46 UTC 71,557 bytes, 1,738 lines download raw bytes

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    
132<script id="compatiable-checker">
133      // 兼容性检查
134      function detectIE() {
135        var n = window.navigator.userAgent,
136          e = n.indexOf('MSIE ');
137        if (e > 0) {
138          return parseInt(n.substring(e + 5, n.indexOf('.', e)), 10);
139        }
140        if (n.indexOf('Trident/') > 0) {
141          var r = n.indexOf('rv:');
142          return parseInt(n.substring(r + 3, n.indexOf('.', r)), 10);
143        }
144        var i = n.indexOf('Edge/');
145        return i > 0 && parseInt(n.substring(i + 5, n.indexOf('.', i)), 10);
146      }
147      detectIE() &&
148        (alert('当前站点不支持IE浏览器或您开启了兼容模式,请使用其他浏览器访问或关闭兼容模式。'),
149        (location.href = 'https://www.baidu.com'));
150    </script>
150
151
152    
152<script id="theme-config-getter" type="text/javascript">
153      if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
154        ThemeConfig['mode'] = 'development';
155        console.log(ThemeConfig.mode);
156      }
157
158      if (ThemeConfig.mode === 'development') {
159        console.log('Joe3主题配置:', ThemeConfig);
160        console.log('资源根路径:', ThemeConfig.BASE_RES_URL);
161      }
162      // 读取主题模式
163      var initThemeMode = function () {
164        try {
165          var curMode = '';
166          if (ThemeConfig.theme_mode === 'auto') {
167            var light_scope = ThemeConfig.light_time_scope.split('~');
168            var now = new Date();
169            var today = now.toLocaleString().split(' ')[0];
170            var curMode =
171              now >= new Date(today + ' ' + light_scope[0]) &&
172              now <= new Date(today + ' ' + light_scope[1])
173                ? 'light'
174                : 'dark';
175            localStorage.removeItem('data-mode');
176          } else if (ThemeConfig.theme_mode === 'user') {
177            // 用户模式下优先从本地取主题模式,默认为浅色
178            curMode = localStorage.getItem('data-mode') || 'light';
179            localStorage.setItem('data-mode', curMode);
180          } else {
181            // 非用户模式下直接取后台配置的模式
182            curMode = ThemeConfig.theme_mode;
183            localStorage.removeItem('data-mode');
184          }
185          document.querySelector('html').setAttribute('data-mode', curMode);
186        } catch (e) {
187          console.log(e);
188        }
189      };
190      initThemeMode();
191      window.Joe = {
192        BASE_API: '',
193        isMobile: /windows phone|iphone|android/gi.test(window.navigator.userAgent),
194        bloggerGenerateAvatarOpts: (function () {
195          let generateAvatarOpts = {};
196          let generate_avatar_opts_str = '{bgColor:&#39;&#39;,textColor:&#39;&#39;,useTextGradient:false}';
197          if (generate_avatar_opts_str) {
198            // generate_avatar_opts_str 示例:{bgColor:'',textColor:'',useTextGradient:false}, 解析 generate_avatar_opts 配置
199            try {
200              // 防止 &#39; 等特殊字符导致 JSON 解析失败
201              const eleTmp = document.createElement('div');
202              eleTmp.innerHTML = generate_avatar_opts_str;
203              // key 自动加上 "" 防止报错,’ 自动转成 “
204              generate_avatar_opts_str = eleTmp.innerHTML
205                .replace(/'/g, '"')
206                .replace(/([\w]+):/g, '"$1":');
207              generateAvatarOpts = JSON.parse(generate_avatar_opts_str);
208            } catch (e) {
209              console.error(
210                'Joe3主题配置:生成文字性头像的配置解析失败,使用默认配置。generate_avatar_opts_str:',
211                generate_avatar_opts_str,
212                ' ,error:',
213                e
214              );
215            }
216          }
217          return generateAvatarOpts;
218        })(),
219        errorImg: function (target, src) {
220          const targetSrc = target.getAttribute('src');
221          console.log(
222            '加载图片失败',
223            ' ,srcArg:',
224            src,
225            ' .target.src:',
226            targetSrc,
227            ' ,target.alt:',
228            target.getAttribute('alt'),
229            ' ,target.dataset.errSrc:',
230            target.dataset.errSrc,
231            ' ,target.dataset.textAvatar:',
232            target.dataset.textAvatar
233          );
234
235          let generatedTextAvatar;
236          let generatedTextAvatarBase64;
237
238          switch (src) {
239            case 'HomeErrImg': {
240              // 如果 src 是 HomeErrImg 则使用首页配置里配置的文章错误缺省图
241              src = '/themes/theme-Joe3/assets/img/default_thumbnail.png';
242              break;
243            }
244            case 'LinksErrImg': {
245              // 如果 src 是 LinksErrImg 则使用友链配置里配置的友链默认 logo
246              src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/default_links_logo.png';
247              if (
248                !src ||
249                src === targetSrc ||
250                (targetSrc && targetSrc.indexOf('/assets/img/transparent-placeholder.png') !== -1)
251              ) {
252                if (target.dataset.textAvatar || target.getAttribute('alt')) {
253                  generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt');
254                  generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
255                  src = generatedTextAvatarBase64;
256                } else {
257                  src = '/themes/theme-Joe3/assets/img/default_links_logo.png';
258                }
259              }
260              break;
261            }
262            case 'ErrAvatarImg': {
263              // 如果 src 是 ErrAvatarImg 则使用博主配置里配置的默认头像
264              src = target.dataset.errSrc || '/upload/photo_2025-09-26_13-23-33.jpg';
265              if (
266                !src ||
267                src === targetSrc ||
268                (targetSrc && targetSrc.indexOf('/assets/img/transparent-placeholder.png') !== -1)
269              ) {
270                if (target.dataset.textAvatar || target.getAttribute('alt')) {
271                  generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt');
272                  generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
273                  src = generatedTextAvatarBase64;
274                } else {
275                  src = '/themes/theme-Joe3/assets/img/peeps-avatar.png';
276                }
277              }
278              break;
279            }
280            case 'LoadFailedImg': {
281              // 如果 src 是 LoadFailedImg 则使用加载失败的图片
282              src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/img_load_failed.jpg';
283              break;
284            }
285          }
286
287          const nowSrc = src || target.dataset.errSrc || '/themes/theme-Joe3/assets/img/Joe3.png';
288          if (targetSrc === nowSrc) return;
289
290          if (
291            generatedTextAvatarBase64 &&
292            generatedTextAvatar &&
293            nowSrc === generatedTextAvatarBase64
294          ) {
295            target.setAttribute('data-generated-text-avatar', generatedTextAvatar);
296          } else if (target.getAttribute('data-generated-text-avatar')) {
297            target.removeAttribute('data-generated-text-avatar');
298          }
299
300          console.log(
301            '加载图片失败,使用默认图片:',
302            nowSrc,
303            ' ,oldSrc:',
304            targetSrc,
305            ' ,target.alt:',
306            target.getAttribute('alt')
307          );
308          target.setAttribute('onerror', null);
309          target.setAttribute('src', nowSrc);
310        },
311        // 已经加载 transparent-placeholder.png 后替换图片
312        loadedPlaceholderReplaceImg: function (target, src) {
313          const targetSrc = target.getAttribute('src');
314          if (
315            !targetSrc ||
316            src === targetSrc ||
317            targetSrc.indexOf('/assets/img/transparent-placeholder.png') === -1
318          ) {
319            return;
320          }
321
322          console.log(
323            '加载图片 transparent-placeholder.png 后替换图片',
324            ' ,srcArg:',
325            src,
326            ' ,target.alt:',
327            target.getAttribute('alt'),
328            ' ,target.dataset.replaceSrc:',
329            target.dataset.replaceSrc,
330            ' ,target.dataset.textAvatar:',
331            target.dataset.textAvatar
332          );
333
334          let generatedTextAvatar;
335          let generatedTextAvatarBase64;
336
337          switch (src) {
338            case 'LinksImg': {
339              // 如果 src 是 LinksImg 则使用友链配置里配置的友链默认 logo
340              src = target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/default_links_logo.png';
341              if (!src || src === targetSrc) {
342                if (target.dataset.textAvatar || target.getAttribute('alt')) {
343                  generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt');
344                  generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
345                  src = generatedTextAvatarBase64;
346                } else {
347                  src = '/themes/theme-Joe3/assets/img/default_links_logo.png';
348                }
349              }
350              break;
351            }
352            case 'AvatarImg': {
353              // 如果 src 是 AvatarImg 则使用博主配置里配置的默认头像
354              src = target.dataset.replaceSrc || '/upload/photo_2025-09-26_13-23-33.jpg';
355              if (!src || src === targetSrc) {
356                if (target.dataset.textAvatar || target.getAttribute('alt')) {
357                  generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt');
358                  target.setAttribute('data-generated-text-avatar', generatedTextAvatar);
359                  generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
360                  src = generatedTextAvatarBase64;
361                } else {
362                  src = '/themes/theme-Joe3/assets/img/peeps-avatar.png';
363                }
364              }
365              break;
366            }
367          }
368
369          const nowSrc =
370            src || target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/Joe3.png';
371          if (targetSrc === nowSrc) return;
372
373          if (
374            generatedTextAvatarBase64 &&
375            generatedTextAvatar &&
376            nowSrc === generatedTextAvatarBase64
377          ) {
378            target.setAttribute('data-generated-text-avatar', generatedTextAvatar);
379          } else if (target.getAttribute('data-generated-text-avatar')) {
380            target.removeAttribute('data-generated-text-avatar');
381          }
382
383          console.log('加载替换后的图片:', nowSrc, ' ,target.alt:', target.getAttribute('alt'));
384          target.setAttribute('onload', null);
385          target.setAttribute('src', nowSrc);
386        },
387        replaceAllTextAvatarImage: function () {
388          console.log('call replaceAllTextAvatarImage');
389          const generatedEles = document.querySelectorAll('img[data-generated-text-avatar]');
390          generatedEles.forEach(function (ele) {
391            const generatedTextAvatar = ele.getAttribute('data-generated-text-avatar');
392            const generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
393            ele.setAttribute('src', generatedTextAvatarBase64);
394          });
395        },
396        // 生成随机颜色函数
397        getRandomColor: function (alpha) {
398          const letters = '0123456789ABCDEF';
399          let color = '#';
400          for (let i = 0; i < 6; i++) {
401            color += letters[Math.floor(Math.random() * 16)];
402          }
403          if (alpha !== undefined) {
404            return color + (alpha >= 0 && alpha <= 1 ? Math.round(alpha * 255).toString(16) : 'FF');
405          }
406          return color;
407        },
408        // 生成随机颜色的文字性头像
409        generateTextAvatarImage: function (text, opts) {
410          opts = Object.assign({}, Joe.bloggerGenerateAvatarOpts, opts || {});
411          opts.fontSize = opts.fontSize || 50;
412          opts.font = opts.font || 'Great Vibes';
413          opts.canvasRadius = opts.canvasWidth || 1.5 * opts.fontSize;
414
415          // 如果是 var(--xxxx),则说明是 css 配置的变量,需要从html样式中解析成具体值
416          if (opts.textColor && /var\(--([\w-]+)\)/.test(opts.textColor)) {
417            const match = opts.textColor.match(/var\(--([\w-]+)\)/);
418            if (match) {
419              let cssVar =
420                getComputedStyle(document.documentElement)
421                  .getPropertyValue('--' + match[1])
422                  .trim() ||
423                getComputedStyle(document.body)
424                  .getPropertyValue('--' + match[1])
425                  .trim();
426              if (cssVar) {
427                opts.textColor = cssVar;
428              }
429            }
430          }
431
432          // 如果是 var(--xxxx),则说明是 css 配置的变量,需要从html样式中解析成具体值
433          if (opts.bgColor && /var\(--([\w-]+)\)/.test(opts.bgColor)) {
434            const match = opts.bgColor.match(/var\(--([\w-]+)\)/);
435            if (match) {
436              let cssVar =
437                getComputedStyle(document.documentElement)
438                  .getPropertyValue('--' + match[1])
439                  .trim() ||
440                getComputedStyle(document.body)
441                  .getPropertyValue('--' + match[1])
442                  .trim();
443              if (cssVar) {
444                opts.bgColor = cssVar;
445              }
446            }
447          }
448
449          // 创建一个新的 Canvas 元素
450          const canvas = document.createElement('canvas');
451          const ctx = canvas.getContext('2d');
452
453          // 设置 Canvas 的尺寸
454          canvas.width = opts.canvasRadius;
455          canvas.height = opts.canvasRadius;
456
457          if (opts.bgColor) {
458            ctx.fillStyle = opts.bgColor;
459          } else {
460            // 生成随机颜色的渐变背景
461            const gradient = ctx.createRadialGradient(
462              canvas.width / 2,
463              canvas.height / 2,
464              0,
465              canvas.width / 2,
466              canvas.height / 2,
467              canvas.width / 2
468            );
469            gradient.addColorStop(0, Joe.getRandomColor(0.7));
470            gradient.addColorStop(1, Joe.getRandomColor(0.7));
471
472            // 绘制渐变背景
473            ctx.fillStyle = gradient;
474          }
475
476          ctx.beginPath();
477          ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2);
478          ctx.fill();
479
480          // 设置文本样式
481          ctx.font = `${opts.fontSize}px ${opts.font}`;
482
483          if (opts.textColor) {
484            ctx.fillStyle = opts.textColor;
485          } else if (opts.useTextGradient) {
486            // 生成文字的线性渐变
487            const textGradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height);
488            textGradient.addColorStop(0, Joe.getRandomColor(0.9)); // 文字的渐变色
489            textGradient.addColorStop(1, Joe.getRandomColor(0.9)); // 文字的渐变色
490            ctx.fillStyle = textGradient;
491          } else if (opts.bgColor) {
492            // 设置了背景色,但是没有设置文字颜色,则需要设置默认文字颜色为黑色,防止文字颜色和背景色一致【注;背景色为渐变色,文字能显示出来,因此不需要设置文字颜色】
493            // 如果 bgColor 为黑色,则文字颜色设置为白色,否则设置为黑色
494            ctx.fillStyle = /(#000000|#000|black)/.test(opts.bgColor) ? '#fff' : '#000';
495          }
496
497          ctx.textAlign = 'center';
498          ctx.textBaseline = 'middle';
499
500          // 在 Canvas 上绘制文本
501          ctx.fillText(text.charAt(0), canvas.width / 2, canvas.height / 2);
502
503          // 返回生成的图片对象 base64 编码
504          return canvas.toDataURL();
505        },
506      };
507      ThemeConfig.enable_console_theme &&
508        console.log(
509          '%cTheme By  Jiewen' + ' | 版本 V' + ThemeConfig.version,
510          'padding: 8px 15px;color:#fff;background: linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3);border-radius: 0 15px 0 15px;'
511        );
512    </script>
512
513  
514    
515    <!--    <th:block th:replace="~{modules/themeSettingVariable :: themeSetting}" />-->
516    <!--    <th:block th:if="${htmlType == 'post'}">-->
517    <!--    <th:block th:replace="~{modules/postMetaVariable :: postSetting}" />-->
518    <!--    </th:block>-->
519    <link rel="shortcut icon" size="32x32" href="/upload/favicon.png" />
520    <link rel="canonical" href="https://disue.com" />
521    <link rel="apple-touch-icon" sizes="180x180" href="/upload/favicon.png" />
522    
523    <style>
524      
525      @font-face {
526          font-family: "Joe Font";
527          font-weight: 400;
528          font-style: normal;
529          font-display: swap;
530          
531          
532
533      }
534      html body {
535          --waline-avatar-size: 2.25rem;
536          --waline-m-avatar-size: calc(var(--waline-avatar-size) * 9 / 13);
537          --waline-theme-color:#1A73E8;
538          --waline-active-color: #1A73E8;
539
540          --theme: #1A73E8;
541          --wave-color: #fff;
542          --scroll-bar: #c0c4cc;
543          --loading-bar:  var(--theme);
544          --img-max-width: 100%;
545          font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, "sans-serif";
546          --halo-comment-widget-base-font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, "sans-serif";
547          --halo-search-widget-base-font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, "sans-serif";
548          --halo-comment-widget-base-color: var(--main);
549          --halo-comment-widget-base-info-color:var(--routine);
550
551
552
553      }
554      html[data-mode='dark'] body {
555
556          --waline-theme-color:#9999ff;
557          --waline-active-color: #9999ff;
558          --theme: #9999ff;
559          --wave-color: #fff;
560          --scroll-bar: #c0c4cc;
561          --loading-bar: var(--theme);
562          --halo-search-widget-color-modal-layer: rgba(10, 11, 12, 0.8);
563          --halo-search-widget-color-modal-content-bg: rgb(27, 27, 30);
564          --halo-search-widget-color-form-input: rgb(255, 255, 255);
565          --halo-search-widget-color-form-input-placeholder: #868686;
566          --halo-search-widget-color-form-input-bg: rgb(27, 27, 30);
567          --halo-search-widget-color-form-divider: #292929;
568          --halo-search-widget-color-result-item-bg: #232323;
569          --halo-search-widget-color-result-item-hover-bg: #2b3033;
570          --halo-search-widget-color-result-item-title: rgb(255 255 255);
571          --halo-search-widget-color-result-item-content: #868686;
572          --halo-search-widget-color-command-kbd-item: #868686;
573          --halo-search-widget-color-command-kbd-border: #868686;
574          --halo-search-widget-color-result-empty: #868686;
575          --halo-comment-widget-component-form-input-bg-color: #475569;
576          --halo-comment-widget-component-form-input-color: #ffffff;
577          --halo-comment-widget-component-form-input-border-color: #495056;
578          --halo-comment-widget-component-form-input-border-color-focus: #65a3ff;
579          --halo-comment-widget-component-form-input-box-shadow-focus: 0 0 0 0.15em #1c3966;
580          --halo-comment-widget-component-form-button-login-bg-color: #334155;
581          --halo-comment-widget-component-form-button-login-bg-color-hover: #475569;
582          --halo-comment-widget-component-form-button-login-border-color: #475569;
583          --halo-comment-widget-component-form-button-submit-border-color: #475569;
584          --halo-comment-widget-component-form-button-submit-border-color-hover: #64748b;
585          --halo-comment-widget-component-form-button-emoji-color: #cbd5e1;
586
587          --halo-comment-widget-component-comment-item-action-bg-color-hover: #475569;
588          --halo-comment-widget-component-comment-item-action-color: #64748b;
589          --halo-comment-widget-component-comment-item-action-color-hover: #94a3b8;
590
591          --halo-comment-widget-component-pagination-button-bg-color-hover: #475569;
592          --halo-comment-widget-component-pagination-button-bg-color-active: #475569;
593          --halo-comment-widget-component-pagination-button-border-color-active: #475569;
594
595          --halo-comment-widget-component-emoji-picker-rgb-color: 222, 222, 221;
596          --halo-comment-widget-component-emoji-picker-rgb-accent: 58, 130, 247;
597          --halo-comment-widget-component-emoji-picker-rgb-background: 21, 22, 23;
598          --halo-comment-widget-component-emoji-picker-rgb-input: 0, 0, 0;
599          --halo-comment-widget-component-emoji-picker-color-border: rgba(255, 255, 255, 0.1);
600          --halo-comment-widget-component-emoji-picker-color-border-over: rgba(255, 255, 255, 0.2);
601
602
603      }
604      ::-webkit-scrollbar {
605          width: 8px;
606      }
607      ::-webkit-scrollbar-thumb {
608          background: var(--scroll-bar);
609      }
610      
611      
612      html[data-mode="dark"] body {
613        background-repeat: no-repeat;
614        background-size: cover;
615        position: relative;
616      }
617
618      html[data-mode="dark"] body::before {
619        content: "";
620        position: fixed;
621        top: 0;
622        left: 0;
623        width: 100%;
624        height: 100%;
625        background-image: url("");
626        background-position: top center;
627        background-size: cover;
628        background-repeat: no-repeat;
629        z-index: -1; /* 保证内容层在背景之上 */
630      }
631
632      
633      
634      html[data-mode="dark"] body {
635          background-image: none;
636      }
637      
638    </style>
639  
640    
641      <!-- 加载条 -->
642      <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/nprogress/nprogress.min.css" />
643      <style>
644        #nprogress .bar {
645          height: 3px;
646          background: var(--loading-bar);
647        }
648        #nprogress .peg {
649          display: none;
650        }
651      </style>
652      
652<script src="/themes/theme-Joe3/assets/lib/nprogress/nprogress.min.js"></script>
652
653    
654    <link
655      rel="preload stylesheet"
656      as="style"
657      href="/themes/theme-Joe3/assets/css/min/normalize.min.css?v=1.4.0"
658    />
659    <link
660      rel="preload stylesheet"
661      as="style"
662      href="/themes/theme-Joe3/assets/lib/font-awesome/css/font-awesome.min.css"
663    />
664    <link
665      rel="preload stylesheet"
666      as="style"
667      href="//at.alicdn.com/t/font_2788564_crkap1ed9j5.css"
668    />
669    <link
670      rel="preload stylesheet"
671      as="style"
672      href="//at.alicdn.com/t/c/font_4198339_jcoci5bgy7.css"
673    />
674    
675    <link
676      rel="preload stylesheet"
677      as="style"
678      href="/themes/theme-Joe3/assets/css/min/theme.min.css?v=1.4.0"
679    />
680    <style>
681      #Joe .joe_container {
682        max-width: 1320px !important;
683      }
684
685      @media (max-width: 1360px) {
686        #Joe .joe_container {
687          max-width: initial !important;
688        }
689      }
690      @media (max-width: 768px) {
691        #Joe .joe_container {
692          max-width: initial !important;
693        }
694      }
695    </style>
696    <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/qmsg/qmsg.css" />
697    <link
698      rel="preload stylesheet"
699      as="style"
700      href="/themes/theme-Joe3/assets/lib/animate/animate.min.css"
701    />
702    
703    
704    <link
705      rel="preload stylesheet"
706      as="style"
707      href="/themes/theme-Joe3/assets/css/min/global.min.css?v=1.4.0"
708    />
709    
710    
711    
712    
713    
714    
715    <link
716      rel="preload stylesheet"
717      as="style"
718      href="/themes/theme-Joe3/assets/css/min/responsive.min.css?v=1.4.0"
719    />
720    <link
721      rel="stylesheet"
722      href="/themes/theme-Joe3/assets/lib/fancybox/jquery.fancybox.min.css"
723    />
724    
725    
726    <link
727      rel="preload stylesheet"
728      as="style"
729      href="/themes/theme-Joe3/assets/css/min/beauty.min.css?v=1.4.0"
730    />
731    
732  
733    
733<script src="/themes/theme-Joe3/assets/lib/[email protected]/jquery.min.js?v=1.4.0"></script>
733
734    
735  <meta name="description" content="eSIM 购买、跨境银行卡申请、海外服务订阅、网络工具。"/><meta name="generator" content="Halo 2.26.1"/><!-- plugin-comment-widget start -->
736<link rel="modulepreload" href="/plugins/PluginCommentWidget/assets/static/comment-widget.js?version=3.0.0">
737<link rel="stylesheet" href="/plugins/PluginCommentWidget/assets/static/index.css?version=3.0.0" />
738<!-- plugin-comment-widget end -->
739<!-- PluginSearchWidget start -->
740<script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js?version=1.7.1" defer></script>
740
741<link rel="stylesheet" href="/plugins/PluginSearchWidget/assets/static/style.css?version=1.7.1" />
742<!-- PluginSearchWidget end -->
743<link rel="icon" href="/upload/favicon.png" />
744</head>
745  <!-- /OG -->
746  
747    <body>
748      <div id="Joe">
749        
750    <header class="joe_header">
751      <div
752        class="joe_header__above topInDown fixed "
753      >
754        <div
755          class="joe_container joe_header_container"
756        >
757          <i class="joe-font joe-icon-caidan joe_header__above-slideicon"></i>
758          
759            <a
760              title="Disue · 迪素"
761              class="joe_header__above-logo"
762              href="https://disue.com"
763            >
764              <img
765                style="border-radius:4px"
766                src="/upload/favicon.png"
767                alt="Disue · 迪素"
768                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"
769              />
770            </a>
771          
772          <nav
773            class="joe_header__above-nav  "
774          >
775            
776            <!--        自选导航-->
777            
778              
779                
780                  
781                    
782                      
783    <a
784      class="item"
785      href="/"
786      title="首页"
787    >
788      
789      首页
790    </a>
791  
792                    
793                    
794                  
795                    
796                      
797    <a
798      class="item"
799      href="//img.disue.com"
800      target="_blank"
801      title="图床"
802    >
803      
804      图床
805    </a>
806  
807                    
808                    
809                  
810                    
811                      
812    <a
813      class="item"
814      href="/about"
815      target="_self"
816      title="关于"
817    >
818      
819      关于
820    </a>
821  
822                    
823                    
824                  
825                    
826                      
827    <a
828      class="item"
829      href="/links"
830      target="_self"
831      title="友链"
832    >
833      
834      友链
835    </a>
836  
837                    
838                    
839                  
840                
841              
842            
843          </nav>
844
845          <div class="joe_header__above-search">
846            <!--        <div class="nav_login">-->
847            <!--          <th:block th:if="${#authentication.name == 'anonymousUser'}">-->
848            <!--          <a href="/console" title="搜索"><i class="jiewen joe-icon-zhanghao"></i></a>-->
849            <!--          </th:block>-->
850            <!--          <th:block th:if="${#authentication.name != 'anonymousUser'}">-->
851            <!--            <th:block th:with="contributor = ${contributorFinder.getContributor(#authentication.name)}">-->
852            <!--            <img th:src="${contributor.avatar}" th:title="${contributor.displayName}" th:alt="${contributor.displayName}" onerror="Joe.errorImg(this, 'ErrAvatarImg')" >-->
853            <!--            </th:block>-->
854            <!--          </th:block>-->
855            <!--        </div>-->
856            <!--        <input maxlength="16" autocomplete="off" placeholder="请输入关键字..." name="keyword" value="" class="input" type="text">-->
857            <button
858              type="submit"
859              id="halo-search"
860              class="submit"
861              style="border-radius: 17px 17px 17px 17px"
862              aria-label="搜索按钮"
863            >
864              <i class="joe-font joe-icon-search"></i>
865            </button>
866            <!--        <span class="icon"></span>-->
867            
868            <!--        <nav class="result">-->
869            <!--          <a href="archives/ce-shi-wen-zhang.html" title="测试文章" class="item">-->
870            <!--            <span class="sort">1</span>-->
871            <!--            <span class="text">测试文章</span>-->
872            <!--          </a>-->
873            <!--          <a href="archives/hello-halo.html" title="Hello Halo" class="item">-->
874            <!--            <span class="sort">2</span>-->
875            <!--            <span class="text">Hello Halo</span>-->
876            <!--          </a>-->
877            <!--        </nav>-->
878          </div>
879
880          <a href="javascript:SearchWidget.open()" title="搜索"
881            ><i class="joe-font joe-icon-search joe_header__above-searchicon"></i
882          ></a>
883        </div>
884      </div>
885
886      <div class="joe_header__slideout">
887        <div class="joe_header__slideout-wrap">
888          <img
889            width="100%"
890            height="150"
891            class="joe_header__slideout-image"
892            src="/themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0"
893            alt="侧边栏壁纸"
894            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"
895          />
896          <div class="joe_header__slideout-author">
897            <img
898              width="50"
899              height="50"
900              class="avatar ls-is-cached lazyloaded"
901              data-src="/upload/photo_2025-09-26_13-23-33.jpg"
902              src="/upload/photo_2025-09-26_13-23-33.jpg"
903              alt="博主头像"
904              data-text-avatar="Disue · 迪素"
905              onload="Joe.loadedPlaceholderReplaceImg(this, 'AvatarImg')"
906              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"
907            />
908            <div class="info">
909              <a
910                class="link"
911                href="https://disue.com"
912                target="_blank"
913                rel="noopener noreferrer nofollow"
914                >Disue · 迪素
915                
916              </a>
917              <p class="motto joe_motto">Carpe diem</p>
918            </div>
919          </div>
920          
921          <ul class="joe_header__slideout-count">
922            <li class="item">
923              <i class="joe-font joe-icon-danganguanli"></i>
924              <span>累计撰写 <strong>16</strong> 篇文章</span>
925            </li>
926            
927              <li class="item">
928                <i class="joe-font joe-icon-remen"></i>
929                <span>累计创建 <strong>16</strong> 个标签</span>
930              </li>
931            
932            
933              <li class="item">
934                <i class="joe-font joe-icon-message"></i>
935                <span>累计收到 <strong>2</strong> 条评论</span>
936              </li>
937            
938            
939          </ul>
940          <ul class="joe_header__slideout-menu panel-box">
941            <li>
942              <a class="link panel in" href="#" rel="nofollow">
943                <span>栏目</span>
944                <i class="joe-font joe-icon-arrow-right"></i>
945              </a>
946              <ul class="slides panel-body panel-box panel-side-menu" style="display: block">
947                
948                
949                  
950                    
951                      
952                        
953                          <li>
954                            <a
955                              class="link"
956                              href="/"
957                              title="首页"
958                              >首页</a
959                            >
960                          </li>
961                        
962                        
963                      
964                        
965                          <li>
966                            <a
967                              class="link"
968                              href="//img.disue.com"
969                              target="_blank"
970                              title="图床"
971                              >图床</a
972                            >
973                          </li>
974                        
975                        
976                      
977                        
978                          <li>
979                            <a
980                              class="link"
981                              href="/about"
982                              target="_self"
983                              title="关于"
984                              >关于</a
985                            >
986                          </li>
987                        
988                        
989                      
990                        
991                          <li>
992                            <a
993                              class="link"
994                              href="/links"
995                              target="_self"
996                              title="友链"
997                              >友链</a
998                            >
999                          </li>
1000                        
1001                        
1002                      
1003                    
1004                  
1005                
1006              </ul>
1007            </li>
1008          </ul>
1009        </div>
1010      </div>
1011
1012      <div class="joe_header__searchout">
1013        <a href="javascript:SearchWidget.open()" title="搜索"></a>
1014        <!--    <div class="joe_container">-->
1015
1016        <!--      <div class="joe_header__searchout-inner">-->
1017        <!--        <form class="joe_header__above-search-mobile" method="get" action="http://localhost:8093/search">-->
1018        <!--          <input maxlength="16" autocomplete="off" placeholder="请输入关键字..." name="keyword" value="" class="input" type="text">-->
1019        <!--          <button type="submit" class="submit">搜索</button>-->
1020        <!--        </form>-->
1021        <!--      </div>-->
1022        <!--    </div>-->
1023      </div>
1024
1025      <div class="joe_header__toc">
1026        <div class="joe_header__toc-wrap">
1027          <div class="toc_top">
1028            <h3>目 录<span>CONTENT</span></h3>
1029            <img
1030              width="100%"
1031              height="150"
1032              src="/themes/theme-Joe3/assets/img/context_bg.png"
1033              alt="文章目录"
1034              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"
1035            />
1036          </div>
1037          <div id="js-toc-mobile" class="toc"></div>
1038        </div>
1039      </div>
1040
1041      <div class="joe_header__mask"></div>
1042    </header>
1043  
1044        <!--          首页大图-->
1045        
1046        <div
1047          class="joe_container joe_main_container page-category animated fadeIn"
1048        >
1049          <div class="joe_main">
1050            <div class="joe_archive">
1051              <div class="joe_archive__title">
1052                <div class="joe_archive__title-title">
1053                  <i class="joe-font joe-icon-feather joe_archive__title-icon"></i>以下是
1054                  <span class="muted ellipsis">数字生活</span>
1055                  <span>相关的文章</span>
1056                </div>
1057              </div>
1058
1059              <ul class="joe_archive__list joe_list">
1060                
1061                  
1062    <li
1063      class="joe_list__item default "
1064      style="animation-delay: 0.0s;"
1065    >
1066      
1067        <a
1068          href="/archives/esimgg"
1069          class="thumbnail"
1070          title="告别漫游烦恼,拥抱自由连接:eSIM.gg"
1071          target="_blank"
1072          rel="noopener noreferrer"
1073        >
1074          
1075            <img
1076              width="100%"
1077              height="100%"
1078              class="lazyload"
1079              data-src="/upload/image-WrDk.png"
1080              srcset="/upload/image-WrDk.png?width=400 400w,
1081              /upload/image-WrDk.png?width=800 800w,
1082              /upload/image-WrDk.png?width=1200 1200w,
1083              /upload/image-WrDk.png?width=1600 1600w"
1084              sizes="(max-width: 1600px) 100vw, 1600px"
1085              src="/themes/theme-Joe3/assets/img/lazyload.gif"
1086              alt="告别漫游烦恼,拥抱自由连接:eSIM.gg"
1087              onerror="Joe.errorImg(this, 'HomeErrImg')"
1088            />
1089          
1090          <time datetime="2025-09-22"
1091            >2025-09-22</time
1092          >
1093          <i class="joe-font joe-icon-picture"></i>
1094        </a>
1095      
1096      <div class="information">
1097        <a
1098          href="/archives/esimgg"
1099          class="title"
1100          title="告别漫游烦恼,拥抱自由连接:eSIM.gg"
1101          target="_blank"
1102          rel="noopener noreferrer"
1103        >
1104          
1105            <span class="badge" style="display: inline-block">置顶</span>
1106          
1107          告别漫游烦恼,拥抱自由连接:eSIM.gg
1108        </a>
1109        <a
1110          class="abstract"
1111          href="/archives/esimgg"
1112          title="您是否厌倦了昂贵的国际漫游费、繁琐的实体 SIM 卡更换,以及到达目的地后寻找本地卡的麻烦? 现在,是时候加入数千名信赖 eSIM.gg 的旅行者,体验由社区力量催生的全球无缝连接解决方案! 源于社区的连接革新:eSIM.gg 的诞生故事"
1113          target="_blank"
1114          rel="noopener noreferrer"
1115          >您是否厌倦了昂贵的国际漫游费、繁琐的实体 SIM 卡更换,以及到达目的地后寻找本地卡的麻烦? 现在,是时候加入数千名信赖 eSIM.gg 的旅行者,体验由社区力量催生的全球无缝连接解决方案! 源于社区的连接革新:eSIM.gg 的诞生故事</a
1116        >
1117        <div class="meta">
1118          <ul class="items">
1119            <li>2025-09-22</li>
1120            <li><i class="joe-font joe-icon-eye"></i>601</li>
1121            
1122              <li><i class="joe-font joe-icon-message"></i>0</li>
1123            
1124            
1125            <li><i class="joe-font joe-icon-dianzan"></i>0</li>
1126          </ul>
1127          
1128            <ul class="categories">
1129              <li class="pcate">
1130                <svg
1131                  class="icon"
1132                  viewBox="0 0 1024 1024"
1133                  xmlns="http://www.w3.org/2000/svg"
1134                  width="15"
1135                  height="15"
1136                >
1137                  <path
1138                    d="M512.2 564.743a76.818 76.818 0 0 1-30.973-6.508L108.224 393.877c-26.105-11.508-42.56-35.755-42.927-63.272-.384-27.44 15.356-52.053 41.042-64.232l373.004-176.74c20.591-9.737 45.16-9.755 65.75.017L917.68 266.39c25.668 12.188 41.39 36.792 41.024 64.231-.384 27.5-16.821 51.73-42.908 63.237l-372.57 164.377a77.18 77.18 0 0 1-31.025 6.508zM139.843 329.592l370.213 163.241c1.291.56 3.018.567 4.345-.009l369.758-163.128-369.706-175.464v-.01c-1.326-.628-3.158-.636-4.502 0l-370.108 175.37zm748.015 1.858h.175-.175zM512.376 941.674c-10.348 0-20.8-2.32-30.537-6.997L121.05 778.624c-18.113-7.834-26.454-28.87-18.62-46.983 7.835-18.112 28.862-26.488 46.993-18.61l362.08 156.629 345.26-156.366c17.939-8.166 39.14-.253 47.324 17.746 8.166 17.964.227 39.157-17.729 47.324l-344.51 156.61c-9.196 4.449-19.281 6.7-29.471 6.7z"
1139                    fill="var(--minor)"
1140                  ></path>
1141                  <path
1142                    d="M871.563 515.449L511.81 671.775 152.358 515.787v73.578a34.248 34.248 0 0 0 20.76 31.48l301.518 129.19c11.806 5.703 24.499 8.546 37.175 8.546s25.367-2.843 37.174-8.546L850.82 620.534a34.248 34.248 0 0 0 20.744-31.474V515.45z"
1143                    fill="#ff6a18"
1144                  ></path>
1145                </svg>
1146                <a
1147                  class="link"
1148                  target="_blank"
1149                  rel="noopener noreferrer"
1150                  href="/categories/digitalnomad"
1151                  >数字生活</a
1152                >
1153              </li>
1154            </ul>
1155          
1156        </div>
1157      </div>
1158    </li>
1159  
1160                
1161                  
1162    <li
1163      class="joe_list__item default "
1164      style="animation-delay: 0.1s;"
1165    >
1166      
1167        <a
1168          href="/archives/hk-vps-line"
1169          class="thumbnail"
1170          title="香港 VPS 线路全解析:NetLab、XNNet、VH Global、Cloudie 等上游与热门商家大整理"
1171          target="_blank"
1172          rel="noopener noreferrer"
1173        >
1174          
1175            <img
1176              width="100%"
1177              height="100%"
1178              class="lazyload"
1179              data-src="/upload/VPS.png"
1180              srcset="/upload/VPS.png?width=400 400w,
1181              /upload/VPS.png?width=800 800w,
1182              /upload/VPS.png?width=1200 1200w,
1183              /upload/VPS.png?width=1600 1600w"
1184              sizes="(max-width: 1600px) 100vw, 1600px"
1185              src="/themes/theme-Joe3/assets/img/lazyload.gif"
1186              alt="香港 VPS 线路全解析:NetLab、XNNet、VH Global、Cloudie 等上游与热门商家大整理"
1187              onerror="Joe.errorImg(this, 'HomeErrImg')"
1188            />
1189          
1190          <time datetime="2026-09-20"
1191            >2026-09-20</time
1192          >
1193          <i class="joe-font joe-icon-picture"></i>
1194        </a>
1195      
1196      <div class="information">
1197        <a
1198          href="/archives/hk-vps-line"
1199          class="title"
1200          title="香港 VPS 线路全解析:NetLab、XNNet、VH Global、Cloudie 等上游与热门商家大整理"
1201          target="_blank"
1202          rel="noopener noreferrer"
1203        >
1204          
1205          香港 VPS 线路全解析:NetLab、XNNet、VH Global、Cloudie 等上游与热门商家大整理
1206        </a>
1207        <a
1208          class="abstract"
1209          href="/archives/hk-vps-line"
1210          title="香港 VPS 一直是国内用户选择海外服务器时比较特殊的一类产品。 一方面,香港距离中国大陆较近,延迟通常明显低于欧美、日本等地区;另一方面,香港国际带宽资源丰富,运营商和 IDC 众多,同样标注“香港优化”“三网直连”“CMI”“CN2”的 VPS,实际体验却可能完全不同。 尤其是近几年,大量低价香"
1211          target="_blank"
1212          rel="noopener noreferrer"
1213          >香港 VPS 一直是国内用户选择海外服务器时比较特殊的一类产品。 一方面,香港距离中国大陆较近,延迟通常明显低于欧美、日本等地区;另一方面,香港国际带宽资源丰富,运营商和 IDC 众多,同样标注“香港优化”“三网直连”“CMI”“CN2”的 VPS,实际体验却可能完全不同。 尤其是近几年,大量低价香</a
1214        >
1215        <div class="meta">
1216          <ul class="items">
1217            <li>2026-09-20</li>
1218            <li>
1218<i class="joe-font joe-icon-eye"></i>61</li>
1219            
1220              <li><i class="joe-font joe-icon-message"></i>0</li>
1221            
1222            
1223            <li><i class="joe-font joe-icon-dianzan"></i>0</li>
1224          </ul>
1225          
1226            <ul class="categories">
1227              <li class="pcate">
1228                <svg
1229                  class="icon"
1230                  viewBox="0 0 1024 1024"
1231                  xmlns="http://www.w3.org/2000/svg"
1232                  width="15"
1233                  height="15"
1234                >
1235                  <path
1236                    d="M512.2 564.743a76.818 76.818 0 0 1-30.973-6.508L108.224 393.877c-26.105-11.508-42.56-35.755-42.927-63.272-.384-27.44 15.356-52.053 41.042-64.232l373.004-176.74c20.591-9.737 45.16-9.755 65.75.017L917.68 266.39c25.668 12.188 41.39 36.792 41.024 64.231-.384 27.5-16.821 51.73-42.908 63.237l-372.57 164.377a77.18 77.18 0 0 1-31.025 6.508zM139.843 329.592l370.213 163.241c1.291.56 3.018.567 4.345-.009l369.758-163.128-369.706-175.464v-.01c-1.326-.628-3.158-.636-4.502 0l-370.108 175.37zm748.015 1.858h.175-.175zM512.376 941.674c-10.348 0-20.8-2.32-30.537-6.997L121.05 778.624c-18.113-7.834-26.454-28.87-18.62-46.983 7.835-18.112 28.862-26.488 46.993-18.61l362.08 156.629 345.26-156.366c17.939-8.166 39.14-.253 47.324 17.746 8.166 17.964.227 39.157-17.729 47.324l-344.51 156.61c-9.196 4.449-19.281 6.7-29.471 6.7z"
1237                    fill="var(--minor)"
1238                  ></path>
1239                  <path
1240                    d="M871.563 515.449L511.81 671.775 152.358 515.787v73.578a34.248 34.248 0 0 0 20.76 31.48l301.518 129.19c11.806 5.703 24.499 8.546 37.175 8.546s25.367-2.843 37.174-8.546L850.82 620.534a34.248 34.248 0 0 0 20.744-31.474V515.45z"
1241                    fill="#ff6a18"
1242                  ></path>
1243                </svg>
1244                <a
1245                  class="link"
1246                  target="_blank"
1247                  rel="noopener noreferrer"
1248                  href="/categories/digitalnomad"
1249                  >数字生活</a
1250                >
1251              </li>
1252            </ul>
1253          
1254        </div>
1255      </div>
1256    </li>
1257  
1258                
1259                  
1260    <li
1261      class="joe_list__item default "
1262      style="animation-delay: 0.2s;"
1263    >
1264      
1265        <a
1266          href="/archives/hermesai"
1267          class="thumbnail"
1268          title="从聊天机器人到 AI 工作伙伴:我使用 Hermes 与 AI 的一段实践"
1269          target="_blank"
1270          rel="noopener noreferrer"
1271        >
1272          
1273            <img
1274              width="100%"
1275              height="100%"
1276              class="lazyload"
1277              data-src="/upload/hermes.jpg"
1278              srcset="/upload/hermes.jpg?width=400 400w,
1279              /upload/hermes.jpg?width=800 800w,
1280              /upload/hermes.jpg?width=1200 1200w,
1281              /upload/hermes.jpg?width=1600 1600w"
1282              sizes="(max-width: 1600px) 100vw, 1600px"
1283              src="/themes/theme-Joe3/assets/img/lazyload.gif"
1284              alt="从聊天机器人到 AI 工作伙伴:我使用 Hermes 与 AI 的一段实践"
1285              onerror="Joe.errorImg(this, 'HomeErrImg')"
1286            />
1287          
1288          <time datetime="2026-08-19"
1289            >2026-08-19</time
1290          >
1291          <i class="joe-font joe-icon-picture"></i>
1292        </a>
1293      
1294      <div class="information">
1295        <a
1296          href="/archives/hermesai"
1297          class="title"
1298          title="从聊天机器人到 AI 工作伙伴:我使用 Hermes 与 AI 的一段实践"
1299          target="_blank"
1300          rel="noopener noreferrer"
1301        >
1302          
1303          从聊天机器人到 AI 工作伙伴:我使用 Hermes 与 AI 的一段实践
1304        </a>
1305        <a
1306          class="abstract"
1307          href="/archives/hermesai"
1308          title="这段时间,我一直在折腾 AI。 严格来说,也不是单纯“用 AI”。 我更感兴趣的是:能不能把 AI 真正接进自己的电脑、服务器、数据和日常工作里。 所以这段时间,我折腾了不少东西:不同的大模型、OpenRouter、Telegram、Hermes Agent、Docker、数据库、Excel、OCR"
1309          target="_blank"
1310          rel="noopener noreferrer"
1311          >这段时间,我一直在折腾 AI。 严格来说,也不是单纯“用 AI”。 我更感兴趣的是:能不能把 AI 真正接进自己的电脑、服务器、数据和日常工作里。 所以这段时间,我折腾了不少东西:不同的大模型、OpenRouter、Telegram、Hermes Agent、Docker、数据库、Excel、OCR</a
1312        >
1313        <div class="meta">
1314          <ul class="items">
1315            <li>2026-08-19</li>
1316            <li>
1316<i class="joe-font joe-icon-eye"></i>46</li>
1317            
1318              <li><i class="joe-font joe-icon-message"></i>0</li>
1319            
1320            
1321            <li><i class="joe-font joe-icon-dianzan"></i>0</li>
1322          </ul>
1323          
1324            <ul class="categories">
1325              <li class="pcate">
1326                <svg
1327                  class="icon"
1328                  viewBox="0 0 1024 1024"
1329                  xmlns="http://www.w3.org/2000/svg"
1330                  width="15"
1331                  height="15"
1332                >
1333                  <path
1334                    d="M512.2 564.743a76.818 76.818 0 0 1-30.973-6.508L108.224 393.877c-26.105-11.508-42.56-35.755-42.927-63.272-.384-27.44 15.356-52.053 41.042-64.232l373.004-176.74c20.591-9.737 45.16-9.755 65.75.017L917.68 266.39c25.668 12.188 41.39 36.792 41.024 64.231-.384 27.5-16.821 51.73-42.908 63.237l-372.57 164.377a77.18 77.18 0 0 1-31.025 6.508zM139.843 329.592l370.213 163.241c1.291.56 3.018.567 4.345-.009l369.758-163.128-369.706-175.464v-.01c-1.326-.628-3.158-.636-4.502 0l-370.108 175.37zm748.015 1.858h.175-.175zM512.376 941.674c-10.348 0-20.8-2.32-30.537-6.997L121.05 778.624c-18.113-7.834-26.454-28.87-18.62-46.983 7.835-18.112 28.862-26.488 46.993-18.61l362.08 156.629 345.26-156.366c17.939-8.166 39.14-.253 47.324 17.746 8.166 17.964.227 39.157-17.729 47.324l-344.51 156.61c-9.196 4.449-19.281 6.7-29.471 6.7z"
1335                    fill="var(--minor)"
1336                  ></path>
1337                  <path
1338                    d="M871.563 515.449L511.81 671.775 152.358 515.787v73.578a34.248 34.248 0 0 0 20.76 31.48l301.518 129.19c11.806 5.703 24.499 8.546 37.175 8.546s25.367-2.843 37.174-8.546L850.82 620.534a34.248 34.248 0 0 0 20.744-31.474V515.45z"
1339                    fill="#ff6a18"
1340                  ></path>
1341                </svg>
1342                <a
1343                  class="link"
1344                  target="_blank"
1345                  rel="noopener noreferrer"
1346                  href="/categories/digitalnomad"
1347                  >数字生活</a
1348                >
1349              </li>
1350            </ul>
1351          
1352        </div>
1353      </div>
1354    </li>
1355  
1356                
1357                  
1358    <li
1359      class="joe_list__item default "
1360      style="animation-delay: 0.3s;"
1361    >
1362      
1363        <a
1364          href="/archives/ikuai-openwrt-agh-guide"
1365          class="thumbnail"
1366          title="iKuai + OpenWrt + AdGuard Home 最佳网络架构与 DNS 优化配置与指南"
1367          target="_blank"
1368          rel="noopener noreferrer"
1369        >
1370          
1371            <img
1372              width="100%"
1373              height="100%"
1374              class="lazyload"
1375              data-src="/upload/ik+op+dns.jpg"
1376              srcset="/upload/ik+op+dns.jpg?width=400 400w,
1377              /upload/ik+op+dns.jpg?width=800 800w,
1378              /upload/ik+op+dns.jpg?width=1200 1200w,
1379              /upload/ik+op+dns.jpg?width=1600 1600w"
1380              sizes="(max-width: 1600px) 100vw, 1600px"
1381              src="/themes/theme-Joe3/assets/img/lazyload.gif"
1382              alt="iKuai + OpenWrt + AdGuard Home 最佳网络架构与 DNS 优化配置与指南"
1383              onerror="Joe.errorImg(this, 'HomeErrImg')"
1384            />
1385          
1386          <time datetime="2026-07-25"
1387            >2026-07-25</time
1388          >
1389          <i class="joe-font joe-icon-picture"></i>
1390        </a>
1391      
1392      <div class="information">
1393        <a
1394          href="/archives/ikuai-openwrt-agh-guide"
1395          class="title"
1396          title="iKuai + OpenWrt + AdGuard Home 最佳网络架构与 DNS 优化配置与指南"
1397          target="_blank"
1398          rel="noopener noreferrer"
1399        >
1400          
1401          iKuai + OpenWrt + AdGuard Home 最佳网络架构与 DNS 优化配置与指南
1402        </a>
1403        <a
1404          class="abstract"
1405          href="/archives/ikuai-openwrt-agh-guide"
1406          title="1. 核心架构设计思路 这套架构的核心理念是:分工明确、高可用优先、全网去广告、按需智能分流。 iKuai(主路由):负责运营商拨号、DHCP 地址分配、多 WAN 负载均衡及整体网络稳
1406定性。普通设备流量直连主路由,确保辅助设备维护或重启时,全家基础网络不受任何影响。 AdGuard Home (A"
1407          target="_blank"
1408          rel="noopener noreferrer"
1409          >1. 核心架构设计思路 这套架构的核心理念是:分工明确、高可用优先、全网去广告、按需智能分流。 iKuai(主路由):负责运营商拨号、DHCP 地址分配、多 WAN 负载均衡及整体网络稳定性。普通设备流量直连主路由,确保辅助设备维护或重启时,全家基础网络不受任何影响。 AdGuard Home (A</a
1410        >
1411        <div class="meta">
1412          <ul class="items">
1413            <li>2026-07-25</li>
1414            <li><i class="joe-font joe-icon-eye"></i>88</li>
1415            
1416              <li><i class="joe-font joe-icon-message"></i>0</li>
1417            
1418            
1419            <li><i class="joe-font joe-icon-dianzan"></i>0</li>
1420          </ul>
1421          
1422            <ul class="categories">
1423              <li class="pcate">
1424                <svg
1425                  class="icon"
1426                  viewBox="0 0 1024 1024"
1427                  xmlns="http://www.w3.org/2000/svg"
1428                  width="15"
1429                  height="15"
1430                >
1431                  <path
1432                    d="M512.2 564.743a76.818 76.818 0 0 1-30.973-6.508L108.224 393.877c-26.105-11.508-42.56-35.755-42.927-63.272-.384-27.44 15.356-52.053 41.042-64.232l373.004-176.74c20.591-9.737 45.16-9.755 65.75.017L917.68 266.39c25.668 12.188 41.39 36.792 41.024 64.231-.384 27.5-16.821 51.73-42.908 63.237l-372.57 164.377a77.18 77.18 0 0 1-31.025 6.508zM139.843 329.592l370.213 163.241c1.291.56 3.018.567 4.345-.009l369.758-163.128-369.706-175.464v-.01c-1.326-.628-3.158-.636-4.502 0l-370.108 175.37zm748.015 1.858h.175-.175zM512.376 941.674c-10.348 0-20.8-2.32-30.537-6.997L121.05 778.624c-18.113-7.834-26.454-28.87-18.62-46.983 7.835-18.112 28.862-26.488 46.993-18.61l362.08 156.629 345.26-156.366c17.939-8.166 39.14-.253 47.324 17.746 8.166 17.964.227 39.157-17.729 47.324l-344.51 156.61c-9.196 4.449-19.281 6.7-29.471 6.7z"
1433                    fill="var(--minor)"
1434                  ></path>
1435                  <path
1436                    d="M871.563 515.449L511.81 671.775 152.358 515.787v73.578a34.248 34.248 0 0 0 20.76 31.48l301.518 129.19c11.806 5.703 24.499 8.546 37.175 8.546s25.367-2.843 37.174-8.546L850.82 620.534a34.248 34.248 0 0 0 20.744-31.474V515.45z"
1437                    fill="#ff6a18"
1438                  ></path>
1439                </svg>
1440                <a
1441                  class="link"
1442                  target="_blank"
1443                  rel="noopener noreferrer"
1444                  href="/categories/digitalnomad"
1445                  >数字生活</a
1446                >
1447              </li>
1448            </ul>
1449          
1450        </div>
1451      </div>
1452    </li>
1453  
1454                
1455                  
1456    <li
1457      class="joe_list__item default "
1458      style="animation-delay: 0.4s;"
1459    >
1460      
1461        <a
1462          href="/archives/esim-global"
1463          class="thumbnail"
1464          title="全球 eSIM 选购与长效保号全攻略"
1465          target="_blank"
1466          rel="noopener noreferrer"
1467        >
1468          
1469            <img
1470              width="100%"
1471              height="100%"
1472              class="lazyload"
1473              data-src="/upload/image.png"
1474              srcset="/upload/image.png?width=400 400w,
1475              /upload/image.png?width=800 800w,
1476              /upload/image.png?width=1200 1200w,
1477              /upload/image.png?width=1600 1600w"
1478              sizes="(max-width: 1600px) 100vw, 1600px"
1479              src="/themes/theme-Joe3/assets/img/lazyload.gif"
1480              alt="全球 eSIM 选购与长效保号全攻略"
1481              onerror="Joe.errorImg(this, 'HomeErrImg')"
1482            />
1483          
1484          <time datetime="2025-12-28"
1485            >2025-12-28</time
1486          >
1487          <i class="joe-font joe-icon-picture"></i>
1488        </a>
1489      
1490      <div class="information">
1491        <a
1492          href="/archives/esim-global"
1493          class="title"
1494          title="全球 eSIM 选购与长效保号全攻略"
1495          target="_blank"
1496          rel="noopener noreferrer"
1497        >
1498          
1499          全球 eSIM 选购与长效保号全攻略
1500        </a>
1501        <a
1502          class="abstract"
1503          href="/archives/esim-global"
1504          title="在数字化生存的今天,拥有一张境外电话卡不仅是为了出境旅游,更是为了注册海外社交软件、保护隐私、绑定支付网关。本文深度汇总了全球 20+ 主流 eSIM,涵盖亚洲、欧洲、美洲、非洲及大洋洲,助你一站式避坑。 📑 核心对照表(按地区分类) 1. 亚洲篇 (Asia) —— 权重与速度"
1505          target="_blank"
1506          rel="noopener noreferrer"
1507          >在数字化生存的今天,拥有一张境外电话卡不仅是为了出境旅游,更是为了注册海外社交软件、保护隐私、绑定支付网关。本文深度汇总了全球 20+ 主流 eSIM,涵盖亚洲、欧洲、美洲、非洲及大洋洲,助你一站式避坑。 📑 核心对照表(按地区分类) 1. 亚洲篇 (Asia) —— 权重与速度<
1507/a
1508        >
1509        <div class="meta">
1510          <ul class="items">
1511            <li>2025-12-28</li>
1512            <li><i class="joe-font joe-icon-eye"></i>8875</li>
1513            
1514              <li><i class="joe-font joe-icon-message"></i>1</li>
1515            
1516            
1517            <li><i class="joe-font joe-icon-dianzan"></i>6</li>
1518          </ul>
1519          
1520            <ul class="categories">
1521              <li class="pcate">
1522                <svg
1523                  class="icon"
1524                  viewBox="0 0 1024 1024"
1525                  xmlns="http://www.w3.org/2000/svg"
1526                  width="15"
1527                  height="15"
1528                >
1529                  <path
1530                    d="M512.2 564.743a76.818 76.818 0 0 1-30.973-6.508L108.224 393.877c-26.105-11.508-42.56-35.755-42.927-63.272-.384-27.44 15.356-52.053 41.042-64.232l373.004-176.74c20.591-9.737 45.16-9.755 65.75.017L917.68 266.39c25.668 12.188 41.39 36.792 41.024 64.231-.384 27.5-16.821 51.73-42.908 63.237l-372.57 164.377a77.18 77.18 0 0 1-31.025 6.508zM139.843 329.592l370.213 163.241c1.291.56 3.018.567 4.345-.009l369.758-163.128-369.706-175.464v-.01c-1.326-.628-3.158-.636-4.502 0l-370.108 175.37zm748.015 1.858h.175-.175zM512.376 941.674c-10.348 0-20.8-2.32-30.537-6.997L121.05 778.624c-18.113-7.834-26.454-28.87-18.62-46.983 7.835-18.112 28.862-26.488 46.993-18.61l362.08 156.629 345.26-156.366c17.939-8.166 39.14-.253 47.324 17.746 8.166 17.964.227 39.157-17.729 47.324l-344.51 156.61c-9.196 4.449-19.281 6.7-29.471 6.7z"
1531                    fill="var(--minor)"
1532                  ></path>
1533                  <path
1534                    d="M871.563 515.449L511.81 671.775 152.358 515.787v73.578a34.248 34.248 0 0 0 20.76 31.48l301.518 129.19c11.806 5.703 24.499 8.546 37.175 8.546s25.367-2.843 37.174-8.546L850.82 620.534a34.248 34.248 0 0 0 20.744-31.474V515.45z"
1535                    fill="#ff6a18"
1536                  ></path>
1537                </svg>
1538                <a
1539                  class="link"
1540                  target="_blank"
1541                  rel="noopener noreferrer"
1542                  href="/categories/digitalnomad"
1543                  >数字生活</a
1544                >
1545              </li>
1546            </ul>
1547          
1548        </div>
1549      </div>
1550    </li>
1551  
1552                
1553              </ul>
1554              
1555      
1556    
1557            </div>
1558          </div>
1559        </div>
1560        
1561    <div class="joe_action">
1562      
1563      
1564      
1565      
1566        <div class="joe_action_item mode">
1567          <svg
1568            class="mode-light"
1569            height="25"
1570            viewBox="0 0 1024 1024"
1571            width="25"
1572            xmlns="http://www.w3.org/2000/svg"
1573          >
1574            <path
1575              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"
1576            />
1577          </svg>
1578          <svg
1579            class="mode-dark"
1580            height="25"
1581            viewBox="0 0 1024 1024"
1582            width="25"
1583            xmlns="http://www.w3.org/2000/svg"
1584          >
1585            <path
1586              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"
1587            />
1588            <path
1589              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"
1590            />
1591          </svg>
1592        </div>
1593      
1594      
1595        <div class="joe_action_item back2top">
1596          <svg height="25" viewBox="0 0 1024 1024" width="25" xmlns="http://www.w3.org/2000/svg">
1597            <path
1598              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"
1599            />
1600          </svg>
1601        </div>
1602      
1603    </div>
1604  
1605        
1606    <footer
1607      class="joe_footer   "
1608    >
1609      <div
1610        class="joe_container"
1611      >
1612        <div class="item">
1613          <p>
1614            © 2021 - 2026<a
1615              href="https://disue.com"
1616              target="_blank"
1617              rel="noopener noreferrer"
1618            >
1619              Disue · 迪素
1620            </a>
1621            
1622          </p>
1623          
1624
1625          
1626            
1627            
1628            
1629            
1630            
1631            
1632            
1633
1634            
1635              <p class="site_driven">
1636                本站点由
1637                <a
1638                  href="https://go.ms.ci/bwh"
1639                  target="_blank"
1640                  rel="noopener noreferrer nofollow"
1641                >
1642                  <img
1643                    class="custom"
1644                    src="/upload/logo1.png"
1645                    alt="云服务商"
1646                    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"
1647                  /> </a
1648                >提供云服务
1649              </p>
1650            
1651          
1652          
1653          
1654        </div>
1655        <div class="side-col">
1656          
1657            <div class="item">
1658              
1659                <a class="rss" href="/rss.xml" target="_blank" rel="noopener noreferrer"
1660                  ><i class="joe-font joe-icon-rss-fill"></i>&nbsp;RSS</a
1661                >
1662              
1663              
1664                <a href="/sitemap.xml" target="_blank" rel="noopener noreferrer">
1665                  站点地图
1666                </a>
1667              
1668            </div>
1669          
1670          
1671        </div>
1672      </div>
1673    </footer>
1674  
1675      </div>
1676      
1677    <!--    ===== 引入脚本 start ===== -->
1678    <!--    <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}">-->
1679    
1679<script src="/themes/theme-Joe3/assets/lib/wowjs/wow.min.js"></script>
1679
1680    <!--    </th:block>-->
1681    
1681<script src="/themes/theme-Joe3/assets/lib/lazysizes/lazysizes.min.js"></script>
1681
1682    
1682<script src="/themes/theme-Joe3/assets/lib/qmsg/qmsg.js"></script>
1682
1683    
1684    
1684<script src="/themes/theme-Joe3/assets/js/min/utils.min.js"></script>
1684
1685
1686    
1687    
1688    
1689    
1689<script src="/themes/theme-Joe3/assets/lib/fancybox/jquery.fancybox.min.js"></script>
1689
1690    
1691    
1691<script src="/themes/theme-Joe3/assets/js/min/custom.min.js?v=1.4.0"></script>
1691
1692    
1693    
1694      
1694<script src="/themes/theme-Joe3/assets/lib/favico/favico.min.js"></script>
1694
1695    
1696    
1697    <!--相册-->
1698    
1699
1700    <!--===== 引入页面级js start =====-->
1701    
1701<script src="/themes/theme-Joe3/assets/js/min/common.min.js?v=1.4.0"></script>
1701
1702    
1703    
1704    
1705    
1706        
1707    
1708    
1709    
1710    
1711
1712    <!-- ===== 引入页面级js end ===== -->
1713
1714    <!-- ===== 引入脚本 start ===== -->
1715
1716    
1717
1718    <!-- ===== 引入脚本 end =====-->
1719
1720    
1721    
1722    
1723
1724    <!--搜索点击-->
1725    
1725<script>
1726      const searchButton = document.getElementById('halo-search');
1727      searchButton.addEventListener('click', function () {
1728        SearchWidget.open();
1729      });
1730    </script>
1730
1731    <!--    大图配置-->
1732    
1733    
1734    
1735  
1736    </body>
1737  
1738</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.