https://jibukeshi.us.kg/

ID da verificação
c1e23fd1-046a-45ce-ad3c-7a96bc5eda59Concluído
URL enviado:
https://jibukeshi.us.kg/
Relatório concluído:
HiperligaçãoTexto
https://halo.run/ Halo
https://github.com/jiewenhuang/halo-theme-joe3.0 M酷&Jiewen
NomeTipo
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
detectIEfunction
initThemeModefunction
Joeobject
NProgressobject
$function
jQueryfunction
CommentWidgetobject
TipoCategoriaRegisto
errornetwork
URL
https://jibukeshi.us.kg/favicon.ico
Texto
Failed to load resource: the server responded with a status of 404 ()
errornetwork
URL
https://jibukeshi.us.kg/apis/api.plugin.halo.run/v1alpha1/plugins/PluginLinks/links?keyword=
Texto
Failed to load resource: the server responded with a status of 404 ()
<!DOCTYPE html><html lang="en" data-mode="light" class="nprogress-busy"><head>
    <title>机不可失的小站</title>

    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    
    <meta name="format-detection" content="telephone=no">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Cache-Control" content="no-siteapp">
    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, shrink-to-fit=no, viewport-fit=cover">
    <meta name="author" content="机不可失">
    <meta http-equiv="x-dns-prefetch-control" content="on">
    <meta name="site" content="https://jibukeshi.us.kg/">
    <!-- OG -->
    <meta property="og:image">
    <meta property="og:description" content="site.seo.description">
    <meta property="og:type" content="website">
    <meta property="og:locale" content="zh_CN">
    <meta property="og:site_name" content="机不可失的小站-机不可失的个人网站">
    <meta property="og:url" content="https://jibukeshi.us.kg/">
    <meta property="og:title" content="机不可失的小站">
    <meta property="twitter:partner" content="ogwp">
    <!-- /OG -->

    
    
    <script id="theme-config-getter">
      const ThemeConfig = {
        theme_mode: "user",
        enable_loading_bar: true,
        enable_footer: true,
        footer_position: "none",
        check_baidu_collect: false,
        baidu_token: "",
        enable_back2top: true,
        enable_back2top_smooth: true,
        enable_weather: false,
        weather_key: "",
        link_behavior: "default",
        enable_tag_cloud: true,
        tag_cloud_type: document.getElementById('tags-3d') ? '3d' : 'list',
        enable_fixed_header: true,
        enable_clean_mode: false,
        cursor_effect: "off",
        enable_offscreen_tip: false,
        enable_birthday: false,
        birthday: "2023\/11\/11 06:30",
        light_time_scope: "5:00~19:00",
        enable_console_theme: false,
        version: "1.4.0",

        enable_big_banner: false,
        enable_banner: false,
        banner_direction: "horizontal",
        enable_banner_loop: true,
        banner_effect: "slide",
        banner_speed: 500,
        enable_banner_handle: true,
        enable_banner_autoplay: true,
        banner_delay: "3500",
        enable_banner_switch_button: true,
        enable_banner_pagination: true,
        enable_index_list_ajax: false,
        post_index_page_size: false,
        backdrop: "off",
        favicon: "",
        enable_index_list_effect: false,
        index_list_effect_class: "fadeInUp",
        show_loaded_time: false,
        enable_debug: false,
        access_key: false,
        enable_copy: true,
        enable_share: true,
        enable_share_link: true,
        enable_share_weixin: true,
        enable_like: true,
        enable_toc: true,
        enable_progress_bar: true,
        enable_code_expander: false,
        enable_fold_long_code: false,
        enable_comment: true,
        toc_depth: "0",
        enable_code_title: true,
        enable_code_hr: true,
        enable_code_macdot: false,
        enable_code_line_number: false,
        enable_code_newline: false,
        show_tools_when_hover: true,
        enable_code_copy: true,
        enable_copy_right_text: false,
        copy_right_text: "",
        offscreen_title_leave: "\u6B6A\uFF0C\u4F60\u53BB\u54EA\u91CC\u4E86\uFF1F",
        offscreen_title_back: "(\u3064\u30A7\u2282)\u54A6\uFF0C\u53C8\u56DE\u6765\u4E86!",
        enable_journal_effect: false,
        enable_friend_effect: false,
        // prettier-ignore
        journal_list_effect_class: "fadeInUp",
        friend_list_effect_class: "fadeInUp",
        enable_like_journal: true,
        enable_comment_journal: true,
        journal_block_height: "300",
        long_code_height: "800",
        lazyload_avatar: "\/themes\/theme-Joe3\/assets\/svg\/spinner-preloader.svg",
        photos_layout: 'waterfall',
        // prettier-ignore
        blog_url: "https:\/\/jibukeshi.us.kg",
        blog_title: "\u673A\u4E0D\u53EF\u5931\u7684\u5C0F\u7AD9",
        // prettier-ignore
        BASE_RES_URL: "\/themes\/theme-Joe3",
        BASE_URL: 'https://bbchin.com',
      };
      //转数字
      ThemeConfig.banner_speed = parseInt(ThemeConfig.banner_speed);
      ThemeConfig.banner_delay = parseInt(ThemeConfig.banner_delay);
      ThemeConfig.toc_depth = parseInt(ThemeConfig.toc_depth);
      ThemeConfig.journal_block_height = parseInt(ThemeConfig.journal_block_height);
      ThemeConfig.long_code_height = parseInt(ThemeConfig.long_code_height);
      ThemeConfig.photos_gap = 10;
      ThemeConfig.enable_photos_effect = true;
    </script>
  
    
    
    <script id="compatiable-checker">
      // 兼容性检查
      function detectIE() {
        var n = window.navigator.userAgent,
          e = n.indexOf('MSIE ');
        if (e > 0) {
          return parseInt(n.substring(e + 5, n.indexOf('.', e)), 10);
        }
        if (n.indexOf('Trident/') > 0) {
          var r = n.indexOf('rv:');
          return parseInt(n.substring(r + 3, n.indexOf('.', r)), 10);
        }
        var i = n.indexOf('Edge/');
        return i > 0 && parseInt(n.substring(i + 5, n.indexOf('.', i)), 10);
      }
      detectIE() &&
        (alert('当前站点不支持IE浏览器或您开启了兼容模式,请使用其他浏览器访问或关闭兼容模式。'),
        (location.href = 'https://www.baidu.com'));
    </script>

    <script id="theme-config-getter" type="text/javascript">
      if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
        ThemeConfig['mode'] = 'development';
        console.log(ThemeConfig.mode);
      }

      if (ThemeConfig.mode === 'development') {
        console.log('Joe3主题配置:', ThemeConfig);
        console.log('资源根路径:', ThemeConfig.BASE_RES_URL);
      }
      // 读取主题模式
      var initThemeMode = function () {
        try {
          var curMode = '';
          if (ThemeConfig.theme_mode === 'auto') {
            var light_scope = ThemeConfig.light_time_scope.split('~');
            var now = new Date();
            var today = now.toLocaleString().split(' ')[0];
            var curMode =
              now >= new Date(today + ' ' + light_scope[0]) &&
              now <= new Date(today + ' ' + light_scope[1])
                ? 'light'
                : 'dark';
            localStorage.removeItem('data-mode');
          } else if (ThemeConfig.theme_mode === 'user') {
            // 用户模式下优先从本地取主题模式,默认为浅色
            curMode = localStorage.getItem('data-mode') || 'light';
            localStorage.setItem('data-mode', curMode);
          } else {
            // 非用户模式下直接取后台配置的模式
            curMode = ThemeConfig.theme_mode;
            localStorage.removeItem('data-mode');
          }
          document.querySelector('html').setAttribute('data-mode', curMode);
        } catch (e) {
          console.log(e);
        }
      };
      initThemeMode();
      window.Joe = {
        BASE_API: '',
        isMobile: /windows phone|iphone|android/gi.test(window.navigator.userAgent),
        bloggerGenerateAvatarOpts: (function () {
          let generateAvatarOpts = {};
          let generate_avatar_opts_str = '{bgColor:&#39;&#39;,textColor:&#39;&#39;,useTextGradient:false}';
          if (generate_avatar_opts_str) {
            // generate_avatar_opts_str 示例:{bgColor:'',textColor:'',useTextGradient:false}, 解析 generate_avatar_opts 配置
            try {
              // 防止 &#39; 等特殊字符导致 JSON 解析失败
              const eleTmp = document.createElement('div');
              eleTmp.innerHTML = generate_avatar_opts_str;
              // key 自动加上 "" 防止报错,’ 自动转成 “
              generate_avatar_opts_str = eleTmp.innerHTML
                .replace(/'/g, '"')
                .replace(/([\w]+):/g, '"$1":');
              generateAvatarOpts = JSON.parse(generate_avatar_opts_str);
            } catch (e) {
              console.error(
                'Joe3主题配置:生成文字性头像的配置解析失败,使用默认配置。generate_avatar_opts_str:',
                generate_avatar_opts_str,
                ' ,error:',
                e
              );
            }
          }
          return generateAvatarOpts;
        })(),
        errorImg: function (target, src) {
          const targetSrc = target.getAttribute('src');
          console.log(
            '加载图片失败',
            ' ,srcArg:',
            src,
            ' .target.src:',
            targetSrc,
            ' ,target.alt:',
            target.getAttribute('alt'),
            ' ,target.dataset.errSrc:',
            target.dataset.errSrc,
            ' ,target.dataset.textAvatar:',
            target.dataset.textAvatar
          );

          let generatedTextAvatar;
          let generatedTextAvatarBase64;

          switch (src) {
            case 'HomeErrImg': {
              // 如果 src 是 HomeErrImg 则使用首页配置里配置的文章错误缺省图
              src = '/themes/theme-Joe3/assets/img/default_thumbnail.png';
              break;
            }
            case 'LinksErrImg': {
              // 如果 src 是 LinksErrImg 则使用友链配置里配置的友链默认 logo
              src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/default_links_logo.png';
              if (
                !src ||
                src === targetSrc ||
                (targetSrc && targetSrc.indexOf('/assets/img/transparent-placeholder.png') !== -1)
              ) {
                if (target.dataset.textAvatar || target.getAttribute('alt')) {
                  generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt');
                  generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
                  src = generatedTextAvatarBase64;
                } else {
                  src = '/themes/theme-Joe3/assets/img/default_links_logo.png';
                }
              }
              break;
            }
            case 'ErrAvatarImg': {
              // 如果 src 是 ErrAvatarImg 则使用博主配置里配置的默认头像
              src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/peeps-avatar.png';
              if (
                !src ||
                src === targetSrc ||
                (targetSrc && targetSrc.indexOf('/assets/img/transparent-placeholder.png') !== -1)
              ) {
                if (target.dataset.textAvatar || target.getAttribute('alt')) {
                  generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt');
                  generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
                  src = generatedTextAvatarBase64;
                } else {
                  src = '/themes/theme-Joe3/assets/img/peeps-avatar.png';
                }
              }
              break;
            }
            case 'LoadFailedImg': {
              // 如果 src 是 LoadFailedImg 则使用加载失败的图片
              src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/img_load_failed.jpg';
              break;
            }
          }

          const nowSrc = src || target.dataset.errSrc || '/themes/theme-Joe3/assets/img/Joe3.png';
          if (targetSrc === nowSrc) return;

          if (
            generatedTextAvatarBase64 &&
            generatedTextAvatar &&
            nowSrc === generatedTextAvatarBase64
          ) {
            target.setAttribute('data-generated-text-avatar', generatedTextAvatar);
          } else if (target.getAttribute('data-generated-text-avatar')) {
            target.removeAttribute('data-generated-text-avatar');
          }

          console.log(
            '加载图片失败,使用默认图片:',
            nowSrc,
            ' ,oldSrc:',
            targetSrc,
            ' ,target.alt:',
            target.getAttribute('alt')
          );
          target.setAttribute('onerror', null);
          target.setAttribute('src', nowSrc);
        },
        // 已经加载 transparent-placeholder.png 后替换图片
        loadedPlaceholderReplaceImg: function (target, src) {
          const targetSrc = target.getAttribute('src');
          if (
            !targetSrc ||
            src === targetSrc ||
            targetSrc.indexOf('/assets/img/transparent-placeholder.png') === -1
          ) {
            return;
          }

          console.log(
            '加载图片 transparent-placeholder.png 后替换图片',
            ' ,srcArg:',
            src,
            ' ,target.alt:',
            target.getAttribute('alt'),
            ' ,target.dataset.replaceSrc:',
            target.dataset.replaceSrc,
            ' ,target.dataset.textAvatar:',
            target.dataset.textAvatar
          );

          let generatedTextAvatar;
          let generatedTextAvatarBase64;

          switch (src) {
            case 'LinksImg': {
              // 如果 src 是 LinksImg 则使用友链配置里配置的友链默认 logo
              src = target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/default_links_logo.png';
              if (!src || src === targetSrc) {
                if (target.dataset.textAvatar || target.getAttribute('alt')) {
                  generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt');
                  generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
                  src = generatedTextAvatarBase64;
                } else {
                  src = '/themes/theme-Joe3/assets/img/default_links_logo.png';
                }
              }
              break;
            }
            case 'AvatarImg': {
              // 如果 src 是 AvatarImg 则使用博主配置里配置的默认头像
              src = target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/peeps-avatar.png';
              if (!src || src === targetSrc) {
                if (target.dataset.textAvatar || target.getAttribute('alt')) {
                  generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt');
                  target.setAttribute('data-generated-text-avatar', generatedTextAvatar);
                  generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
                  src = generatedTextAvatarBase64;
                } else {
                  src = '/themes/theme-Joe3/assets/img/peeps-avatar.png';
                }
              }
              break;
            }
          }

          const nowSrc =
            src || target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/Joe3.png';
          if (targetSrc === nowSrc) return;

          if (
            generatedTextAvatarBase64 &&
            generatedTextAvatar &&
            nowSrc === generatedTextAvatarBase64
          ) {
            target.setAttribute('data-generated-text-avatar', generatedTextAvatar);
          } else if (target.getAttribute('data-generated-text-avatar')) {
            target.removeAttribute('data-generated-text-avatar');
          }

          console.log('加载替换后的图片:', nowSrc, ' ,target.alt:', target.getAttribute('alt'));
          target.setAttribute('onload', null);
          target.setAttribute('src', nowSrc);
        },
        replaceAllTextAvatarImage: function () {
          console.log('call replaceAllTextAvatarImage');
          const generatedEles = document.querySelectorAll('img[data-generated-text-avatar]');
          generatedEles.forEach(function (ele) {
            const generatedTextAvatar = ele.getAttribute('data-generated-text-avatar');
            const generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar);
            ele.setAttribute('src', generatedTextAvatarBase64);
          });
        },
        // 生成随机颜色函数
        getRandomColor: function (alpha) {
          const letters = '0123456789ABCDEF';
          let color = '#';
          for (let i = 0; i < 6; i++) {
            color += letters[Math.floor(Math.random() * 16)];
          }
          if (alpha !== undefined) {
            return color + (alpha >= 0 && alpha <= 1 ? Math.round(alpha * 255).toString(16) : 'FF');
          }
          return color;
        },
        // 生成随机颜色的文字性头像
        generateTextAvatarImage: function (text, opts) {
          opts = Object.assign({}, Joe.bloggerGenerateAvatarOpts, opts || {});
          opts.fontSize = opts.fontSize || 50;
          opts.font = opts.font || 'Great Vibes';
          opts.canvasRadius = opts.canvasWidth || 1.5 * opts.fontSize;

          // 如果是 var(--xxxx),则说明是 css 配置的变量,需要从html样式中解析成具体值
          if (opts.textColor && /var\(--([\w-]+)\)/.test(opts.textColor)) {
            const match = opts.textColor.match(/var\(--([\w-]+)\)/);
            if (match) {
              let cssVar =
                getComputedStyle(document.documentElement)
                  .getPropertyValue('--' + match[1])
                  .trim() ||
                getComputedStyle(document.body)
                  .getPropertyValue('--' + match[1])
                  .trim();
              if (cssVar) {
                opts.textColor = cssVar;
              }
            }
          }

          // 如果是 var(--xxxx),则说明是 css 配置的变量,需要从html样式中解析成具体值
          if (opts.bgColor && /var\(--([\w-]+)\)/.test(opts.bgColor)) {
            const match = opts.bgColor.match(/var\(--([\w-]+)\)/);
            if (match) {
              let cssVar =
                getComputedStyle(document.documentElement)
                  .getPropertyValue('--' + match[1])
                  .trim() ||
                getComputedStyle(document.body)
                  .getPropertyValue('--' + match[1])
                  .trim();
              if (cssVar) {
                opts.bgColor = cssVar;
              }
            }
          }

          // 创建一个新的 Canvas 元素
          const canvas = document.createElement('canvas');
          const ctx = canvas.getContext('2d');

          // 设置 Canvas 的尺寸
          canvas.width = opts.canvasRadius;
          canvas.height = opts.canvasRadius;

          if (opts.bgColor) {
            ctx.fillStyle = opts.bgColor;
          } else {
            // 生成随机颜色的渐变背景
            const gradient = ctx.createRadialGradient(
              canvas.width / 2,
              canvas.height / 2,
              0,
              canvas.width / 2,
              canvas.height / 2,
              canvas.width / 2
            );
            gradient.addColorStop(0, Joe.getRandomColor(0.7));
            gradient.addColorStop(1, Joe.getRandomColor(0.7));

            // 绘制渐变背景
            ctx.fillStyle = gradient;
          }

          ctx.beginPath();
          ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2);
          ctx.fill();

          // 设置文本样式
          ctx.font = `${opts.fontSize}px ${opts.font}`;

          if (opts.textColor) {
            ctx.fillStyle = opts.textColor;
          } else if (opts.useTextGradient) {
            // 生成文字的线性渐变
            const textGradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height);
            textGradient.addColorStop(0, Joe.getRandomColor(0.9)); // 文字的渐变色
            textGradient.addColorStop(1, Joe.getRandomColor(0.9)); // 文字的渐变色
            ctx.fillStyle = textGradient;
          } else if (opts.bgColor) {
            // 设置了背景色,但是没有设置文字颜色,则需要设置默认文字颜色为黑色,防止文字颜色和背景色一致【注;背景色为渐变色,文字能显示出来,因此不需要设置文字颜色】
            // 如果 bgColor 为黑色,则文字颜色设置为白色,否则设置为黑色
            ctx.fillStyle = /(#000000|#000|black)/.test(opts.bgColor) ? '#fff' : '#000';
          }

          ctx.textAlign = 'center';
          ctx.textBaseline = 'middle';

          // 在 Canvas 上绘制文本
          ctx.fillText(text.charAt(0), canvas.width / 2, canvas.height / 2);

          // 返回生成的图片对象 base64 编码
          return canvas.toDataURL();
        },
      };
      ThemeConfig.enable_console_theme &&
        console.log(
          '%cTheme By  Jiewen' + ' | 版本 V' + ThemeConfig.version,
          'padding: 8px 15px;color:#fff;background: linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3);border-radius: 0 15px 0 15px;'
        );
    </script>
  
    
    <!--    <th:block th:replace="~{modules/themeSettingVariable :: themeSetting}" />-->
    <!--    <th:block th:if="${htmlType == 'post'}">-->
    <!--    <th:block th:replace="~{modules/postMetaVariable :: postSetting}" />-->
    <!--    </th:block>-->
    <link rel="shortcut icon" size="32x32" href="">
    <link rel="canonical" href="https://jibukeshi.us.kg/">
    <link rel="apple-touch-icon" sizes="180x180" href="">
    
    <style>
      
      @font-face {
          font-family: "Joe Font";
          font-weight: 400;
          font-style: normal;
          font-display: swap;
          
          

      }
      html body {
          --waline-avatar-size: 2.25rem;
          --waline-m-avatar-size: calc(var(--waline-avatar-size) * 9 / 13);
          --waline-theme-color:#1890ff;
          --waline-active-color: #1890ff;

          --theme: #1890ff;
          --wave-color: #fff;
          --scroll-bar: #c0c4cc;
          --loading-bar:  var(--theme);
          --img-max-width: 100%;
          font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, "sans-serif";
          --halo-comment-widget-base-font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, "sans-serif";
          --halo-search-widget-base-font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, "sans-serif";
          --halo-comment-widget-base-color: var(--main);
          --halo-comment-widget-base-info-color:var(--routine);



      }
      html[data-mode='dark'] body {

          --waline-theme-color:#1890ff;
          --waline-active-color: #1890ff;
          --theme: #1890ff;
          --wave-color: #fff;
          --scroll-bar: #c0c4cc;
          --loading-bar: var(--theme);
          --halo-search-widget-color-modal-layer: rgba(10, 11, 12, 0.8);
          --halo-search-widget-color-modal-content-bg: rgb(27, 27, 30);
          --halo-search-widget-color-form-input: rgb(255, 255, 255);
          --halo-search-widget-color-form-input-placeholder: #868686;
          --halo-search-widget-color-form-input-bg: rgb(27, 27, 30);
          --halo-search-widget-color-form-divider: #292929;
          --halo-search-widget-color-result-item-bg: #232323;
          --halo-search-widget-color-result-item-hover-bg: #2b3033;
          --halo-search-widget-color-result-item-title: rgb(255 255 255);
          --halo-search-widget-color-result-item-content: #868686;
          --halo-search-widget-color-command-kbd-item: #868686;
          --halo-search-widget-color-command-kbd-border: #868686;
          --halo-search-widget-color-result-empty: #868686;
          --halo-comment-widget-component-form-input-bg-color: #475569;
          --halo-comment-widget-component-form-input-color: #ffffff;
          --halo-comment-widget-component-form-input-border-color: #495056;
          --halo-comment-widget-component-form-input-border-color-focus: #65a3ff;
          --halo-comment-widget-component-form-input-box-shadow-focus: 0 0 0 0.15em #1c3966;
          --halo-comment-widget-component-form-button-login-bg-color: #334155;
          --halo-comment-widget-component-form-button-login-bg-color-hover: #475569;
          --halo-comment-widget-component-form-button-login-border-color: #475569;
          --halo-comment-widget-component-form-button-submit-border-color: #475569;
          --halo-comment-widget-component-form-button-submit-border-color-hover: #64748b;
          --halo-comment-widget-component-form-button-emoji-color: #cbd5e1;

          --halo-comment-widget-component-comment-item-action-bg-color-hover: #475569;
          --halo-comment-widget-component-comment-item-action-color: #64748b;
          --halo-comment-widget-component-comment-item-action-color-hover: #94a3b8;

          --halo-comment-widget-component-pagination-button-bg-color-hover: #475569;
          --halo-comment-widget-component-pagination-button-bg-color-active: #475569;
          --halo-comment-widget-component-pagination-button-border-color-active: #475569;

          --halo-comment-widget-component-emoji-picker-rgb-color: 222, 222, 221;
          --halo-comment-widget-component-emoji-picker-rgb-accent: 58, 130, 247;
          --halo-comment-widget-component-emoji-picker-rgb-background: 21, 22, 23;
          --halo-comment-widget-component-emoji-picker-rgb-input: 0, 0, 0;
          --halo-comment-widget-component-emoji-picker-color-border: rgba(255, 255, 255, 0.1);
          --halo-comment-widget-component-emoji-picker-color-border-over: rgba(255, 255, 255, 0.2);


      }
      ::-webkit-scrollbar {
          width: 8px;
      }
      ::-webkit-scrollbar-thumb {
          background: var(--scroll-bar);
      }
      
      
      html[data-mode="dark"] body {
        background-repeat: no-repeat;
        background-size: cover;
        position: relative;
      }

      html[data-mode="dark"] body::before {
        content: "";
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-image: url("");
        background-position: top center;
        background-size: cover;
        background-repeat: no-repeat;
        z-index: -1; /* 保证内容层在背景之上 */
      }

      
      
      html[data-mode="dark"] body {
          background-image: none;
      }
      
    </style>
  
    
      <!-- 加载条 -->
      <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/nprogress/nprogress.min.css">
      <style>
        #nprogress .bar {
          height: 3px;
          background: var(--loading-bar);
        }
        #nprogress .peg {
          display: none;
        }
      </style>
      <script src="/themes/theme-Joe3/assets/lib/nprogress/nprogress.min.js"></script>
    
    <link rel="preload stylesheet" as="style" href="/themes/theme-Joe3/assets/css/min/normalize.min.css?v=1.4.0">
    <link rel="preload stylesheet" as="style" href="/themes/theme-Joe3/assets/lib/font-awesome/css/font-awesome.min.css">
    <link rel="preload stylesheet" as="style" href="//at.alicdn.com/t/font_2788564_crkap1ed9j5.css">
    <link rel="preload stylesheet" as="style" href="//at.alicdn.com/t/c/font_4198339_jcoci5bgy7.css">
    
    <link rel="preload stylesheet" as="style" href="/themes/theme-Joe3/assets/css/min/theme.min.css?v=1.4.0">
    <style>
      #Joe .joe_container {
        max-width: 1320px !important;
      }

      @media (max-width: 1360px) {
        #Joe .joe_container {
          max-width: initial !important;
        }
      }
      @media (max-width: 768px) {
        #Joe .joe_container {
          max-width: initial !important;
        }
      }
    </style>
    <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/qmsg/qmsg.css">
    <link rel="preload stylesheet" as="style" href="/themes/theme-Joe3/assets/lib/animate/animate.min.css">
    
    
    <link rel="preload stylesheet" as="style" href="/themes/theme-Joe3/assets/css/min/global.min.css?v=1.4.0">
    
      <link rel="preload stylesheet" as="style" href="/themes/theme-Joe3/assets/css/min/index.min.css?v=1.4.0">
    
    
    
    
    
    
    <link rel="preload stylesheet" as="style" href="/themes/theme-Joe3/assets/css/min/responsive.min.css?v=1.4.0">
    <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/fancybox/jquery.fancybox.min.css">
    
    
    <link rel="preload stylesheet" as="style" href="/themes/theme-Joe3/assets/css/min/beauty.min.css?v=1.4.0">
    
  
    <script src="/themes/theme-Joe3/assets/lib/[email protected]/jquery.min.js"></script>
    
  <meta name="keywords" content="机不可失,机不可失Pro,jibukeshi,jibukeshipro,博客,blog,轻智,微箱,qingzhi,weibox,weixiang">
<meta name="description" content="机不可失的个人网站">
<meta content="Halo 2.20.11" name="generator"><!-- PluginSearchWidget start -->
<script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js?version=1.6.2" async=""></script>
<link rel="stylesheet" href="/plugins/PluginSearchWidget/assets/static/style.css?version=1.6.2">
<!-- PluginSearchWidget end -->
<!-- plugin-comment-widget start -->
<script src="/plugins/PluginCommentWidget/assets/static/comment-widget.iife.js?version=2.5.1"></script>
<link rel="stylesheet" href="/plugins/PluginCommentWidget/assets/static/style.css?version=2.5.1">
<!-- plugin-comment-widget end -->
</head>
  <!-- /OG -->
  
    <body>
      <div id="Joe">
        <!--          navbar-->
        
    <header class="joe_header">
      <div class="joe_header__above topInDown fixed ">
        <div class="joe_container joe_header_container">
          <i class="joe-font joe-icon-caidan joe_header__above-slideicon"></i>
          
          <nav class="joe_header__above-nav  ">
            
            <!--        自选导航-->
            
              
                
                  
                    
                      
    <a class="item current" href="/" title="首页">
      
      首页
    </a>
  
                    
                    
                  
                    
                      
    <a class="item" href="/categories/default" target="_self" title="默认分类">
      
      默认分类
    </a>
  
                    
                    
                  
                    
                      
    <a class="item" href="/categories/ge-ren-xiang-mu" target="_self" title="个人项目">
      
      个人项目
    </a>
  
                    
                    
                  
                    
                      
    <a class="item" href="/categories/jiao-cheng" target="_self" title="教程">
      
      教程
    </a>
  
                    
                    
                  
                    
                      
    <a class="item" href="/about" title="关于">
      
      关于
    </a>
  
                    
                    
                  
                
              
            
          </nav>

          <div class="joe_header__above-search">
            <!--        <div class="nav_login">-->
            <!--          <th:block th:if="${#authentication.name == 'anonymousUser'}">-->
            <!--          <a href="/console" title="搜索"><i class="jiewen joe-icon-zhanghao"></i></a>-->
            <!--          </th:block>-->
            <!--          <th:block th:if="${#authentication.name != 'anonymousUser'}">-->
            <!--            <th:block th:with="contributor = ${contributorFinder.getContributor(#authentication.name)}">-->
            <!--            <img th:src="${contributor.avatar}" th:title="${contributor.displayName}" th:alt="${contributor.displayName}" onerror="Joe.errorImg(this, 'ErrAvatarImg')" >-->
            <!--            </th:block>-->
            <!--          </th:block>-->
            <!--        </div>-->
            <!--        <input maxlength="16" autocomplete="off" placeholder="请输入关键字..." name="keyword" value="" class="input" type="text">-->
            <button type="submit" id="halo-search" class="submit" style="border-radius: 17px 17px 17px 17px" aria-label="搜索按钮">
              <i class="joe-font joe-icon-search"></i>
            </button>
            <!--        <span class="icon"></span>-->
            
            <!--        <nav class="result">-->
            <!--          <a href="archives/ce-shi-wen-zhang.html" title="测试文章" class="item">-->
            <!--            <span class="sort">1</span>-->
            <!--            <span class="text">测试文章</span>-->
            <!--          </a>-->
            <!--          <a href="archives/hello-halo.html" title="Hello Halo" class="item">-->
            <!--            <span class="sort">2</span>-->
            <!--            <span class="text">Hello Halo</span>-->
            <!--          </a>-->
            <!--        </nav>-->
          </div>

          <a href="javascript:SearchWidget.open()" title="搜索"><i class="joe-font joe-icon-search joe_header__above-searchicon"></i></a>
        </div>
      </div>

      <div class="joe_header__slideout">
        <div class="joe_header__slideout-wrap">
          <img width="100%" height="150" class="joe_header__slideout-image" src="/upload/userbg.png" alt="侧边栏壁纸" onerror="Joe.errorImg(this)">
          <div class="joe_header__slideout-author">
            <img width="50" height="50" class="avatar ls-is-cached lazyloaded" data-src="/themes/theme-Joe3/assets/svg/spinner-preloader.svg" src="/upload/avatar.jpg" alt="博主头像" data-text-avatar="机不可失的小站" onload="Joe.loadedPlaceholderReplaceImg(this, 'AvatarImg')" onerror="Joe.errorImg(this, 'ErrAvatarImg')">
            <div class="info">
              <a class="link" href="https://jibukeshi.us.kg/" target="_blank" rel="noopener noreferrer nofollow">机不可失的小站
                
              </a>
              <p class="motto joe_motto">永远相信美好的事情即将发生</p>
            </div>
          </div>
          
          <ul class="joe_header__slideout-count">
            <li class="item">
              <i class="joe-font joe-icon-danganguanli"></i>
              <span>累计撰写 <strong>4</strong> 篇文章</span>
            </li>
            
              <li class="item">
                <i class="joe-font joe-icon-remen"></i>
                <span>累计创建 <strong>7</strong> 个标签</span>
              </li>
            
            
              <li class="item">
                <i class="joe-font joe-icon-message"></i>
                <span>累计收到 <strong>0</strong> 条评论</span>
              </li>
            
            
          </ul>
          <ul class="joe_header__slideout-menu panel-box">
            <li>
              <a class="link panel in" href="#" rel="nofollow">
                <span>栏目</span>
                <i class="joe-font joe-icon-arrow-right"></i>
              </a>
              <ul class="slides panel-body panel-box panel-side-menu" style="display: block">
                
                
                  
                    
                      
                        
                          <li>
                            <a class="link current" href="/" title="首页">首页</a>
                          </li>
                        
                        
                      
                        
                          <li>
                            <a class="link" href="/categories/default" target="_self" title="默认分类">默认分类</a>
                          </li>
                        
                        
                      
                        
                          <li>
                            <a class="link" href="/categories/ge-ren-xiang-mu" target="_self" title="个人项目">个人项目</a>
                          </li>
                        
                        
                      
                        
                          <li>
                            <a class="link" href="/categories/jiao-cheng" target="_self" title="教程">教程</a>
                          </li>
                        
                        
                      
                        
                          <li>
                            <a class="link" href="/about" title="关于">关于</a>
                          </li>
                        
                        
                      
                    
                  
                
              </ul>
            </li>
          </ul>
        </div>
      </div>

      <div class="joe_header__searchout">
        <a href="javascript:SearchWidget.open()" title="搜索"></a>
        <!--    <div class="joe_container">-->

        <!--      <div class="joe_header__searchout-inner">-->
        <!--        <form class="joe_header__above-search-mobile" method="get" action="http://localhost:8093/search">-->
        <!--          <input maxlength="16" autocomplete="off" placeholder="请输入关键字..." name="keyword" value="" class="input" type="text">-->
        <!--          <button type="submit" class="submit">搜索</button>-->
        <!--        </form>-->
        <!--      </div>-->
        <!--    </div>-->
      </div>

      <div class="joe_header__toc">
        <div class="joe_header__toc-wrap">
          <div class="toc_top">
            <h3>目 录<span>CONTENT</span></h3>
            <img width="100%" height="150" src="/upload/userbg.png" alt="文章目录" onerror="Joe.errorImg(this)">
          </div>
          <div id="js-toc-mobile" class="toc"></div>
        </div>
      </div>

      <div class="joe_header__mask"></div>
    </header>
  
        <!--          首页大图-->
        

        <div class="joe_container joe_main_container page-index animated showInUp ">
          <div class="joe_main">
            <div class="joe_index">
              <!--                      轮播图-->
              
              <!--                      热门模块-->

              

              <div class="joe_index__article">
                <div class="joe_index__title">
                  <ul class="joe_index__title-title passage-list-tabs default">
                    <li class="item active" data-type="1">最新文章</li>
                  </ul>
                  
                </div>
                <div class="joe_index__list">
                  <ul class="joe_list">
                    
                      
    <li class="joe_list__item default animated wow data-wow-delay=&quot;0.0s&quot;" style="animation-delay: 0.0s;">
      
        <a href="/archives/ji-yi-ci-yin-shu-ju-ku-diu-shi-er-bu-de-bu-chong-zhuang-ben-zhan-de-jing-li" class="thumbnail" title="记一次因数据库丢失而不得不重装本站的经历" target="_blank" rel="noopener noreferrer">
          
            <img width="100%" height="100%" class=" ls-is-cached lazyloaded" data-src="https://picsum.photos/id/1081/350/200" srcset="https://picsum.photos/id/1081/350/200 400w,
              https://picsum.photos/id/1081/350/200 800w,
              https://picsum.photos/id/1081/350/200 1200w,
              https://picsum.photos/id/1081/350/200 1600w" sizes="(max-width: 1600px) 100vw, 1600px" src="https://picsum.photos/id/1081/350/200" alt="记一次因数据库丢失而不得不重装本站的经历" onerror="Joe.errorImg(this, 'HomeErrImg')">
          
          <time datetime="2024-12-08">2024-12-08</time>
          <i class="joe-font joe-icon-picture"></i>
        </a>
      
      <div class="information">
        <a href="/archives/ji-yi-ci-yin-shu-ju-ku-diu-shi-er-bu-de-bu-chong-zhuang-ben-zhan-de-jing-li" class="title" title="记一次因数据库丢失而不得不重装本站的经历" target="_blank" rel="noopener noreferrer">
          
          记一次因数据库丢失而不得不重装本站的经历
        </a>
        <a class="abstract" href="/archives/ji-yi-ci-yin-shu-ju-ku-diu-shi-er-bu-de-bu-chong-zhuang-ben-zhan-de-jing-li" title="周五(12 月 6 日)晚上在 1Panel 看到 halo 有更新,就想着更新一下。本以为就是更新一下,1Panel 也有备份没什么大不了的,结果等更新完毕了才发现网站进不去了,全部显示 ERR_EMPTY_RESPONSE! 我尝试重装 halo 和恢复 1Panel 在升级前的备份,结果发现没" target="_blank" rel="noopener noreferrer">周五(12 月 6 日)晚上在 1Panel 看到 halo 有更新,就想着更新一下。本以为就是更新一下,1Panel 也有备份没什么大不了的,结果等更新完毕了才发现网站进不去了,全部显示 ERR_EMPTY_RESPONSE! 我尝试重装 halo 和恢复 1Panel 在升级前的备份,结果发现没</a>
        <div class="meta">
          <ul class="items">
            <li>2024-12-08</li>
            <li><i class="joe-font joe-icon-eye"></i>1</li>
            
              <li><i class="joe-font joe-icon-message"></i>0</li>
            
            
            <li><i class="joe-font joe-icon-dianzan"></i>0</li>
          </ul>
          
            <ul class="categories">
              <li class="pcate">
                <svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="15" height="15">
                  <path 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" fill="var(--minor)"></path>
                  <path 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" fill="#ff6a18"></path>
                </svg>
                <a class="link" target="_blank" rel="noopener noreferrer" href="/categories/default">默认分类</a>
              </li>
            </ul>
          
        </div>
      </div>
    </li>
  
                    
                      
    <li class="joe_list__item default animated wow data-wow-delay=&quot;0.1s&quot;" style="animation-delay: 0.1s;">
      
        <a href="/archives/hello-halo" class="thumbnail" title="Hello Halo" target="_blank" rel="noopener noreferrer">
          
            <img width="100%" height="100%" class=" ls-is-cached lazyloaded" data-src="https://picsum.photos/id/1081/350/200" srcset="https://picsum.photos/id/1081/350/200 400w,
              https://picsum.photos/id/1081/350/200 800w,
              https://picsum.photos/id/1081/350/200 1200w,
              https://picsum.photos/id/1081/350/200 1600w" sizes="(max-width: 1600px) 100vw, 1600px" src="https://picsum.photos/id/1081/350/200" alt="Hello Halo" onerror="Joe.errorImg(this, 'HomeErrImg')">
          
          <time datetime="2024-12-08">2024-12-08</time>
          <i class="joe-font joe-icon-picture"></i>
        </a>
      
      <div class="information">
        <a href="/archives/hello-halo" class="title" title="Hello Halo" target="_blank" rel="noopener noreferrer">
          
          Hello Halo
        </a>
        <a class="abstract" href="/archives/hello-halo" title="如果你看到了这一篇文章,那么证明你已经安装成功了,感谢使用 Halo 进行创作,希望能够使用愉快。" target="_blank" rel="noopener noreferrer">如果你看到了这一篇文章,那么证明你已经安装成功了,感谢使用 Halo 进行创作,希望能够使用愉快。</a>
        <div class="meta">
          <ul class="items">
            <li>2024-12-08</li>
            <li><i class="joe-font joe-icon-eye"></i>2</li>
            
              <li><i class="joe-font joe-icon-message"></i>0</li>
            
            
            <li><i class="joe-font joe-icon-dianzan"></i>0</li>
          </ul>
          
            <ul class="categories">
              <li class="pcate">
                <svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="15" height="15">
                  <path 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" fill="var(--minor)"></path>
                  <path 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" fill="#ff6a18"></path>
                </svg>
                <a class="link" target="_blank" rel="noopener noreferrer" href="/categories/default">默认分类</a>
              </li>
            </ul>
          
        </div>
      </div>
    </li>
  
                    
                      
    <li class="joe_list__item default animated wow data-wow-delay=&quot;0.2s&quot;" style="animation-delay: 0.2s;">
      
        <a href="/archives/an-zhuo-xi-tong-tong-guo-qemu-yun-xing-windows-zui-jian-dan-jiao-cheng" class="thumbnail" title="安卓系统通过 QEMU 运行 Windows 最简单教程" target="_blank" rel="noopener noreferrer">
          
            <img width="100%" height="100%" class=" lazyloaded" data-src="/upload/IMG_20241201_204803.jpg" srcset="/upload/IMG_20241201_204803.jpg 400w,
              /upload/IMG_20241201_204803.jpg 800w,
              /upload/IMG_20241201_204803.jpg 1200w,
              /upload/IMG_20241201_204803.jpg 1600w" sizes="(max-width: 1600px) 100vw, 1600px" src="/upload/IMG_20241201_204803.jpg" alt="安卓系统通过 QEMU 运行 Windows 最简单教程" onerror="Joe.errorImg(this, 'HomeErrImg')">
          
          <time datetime="2024-12-01">2024-12-01</time>
          <i class="joe-font joe-icon-picture"></i>
        </a>
      
      <div class="information">
        <a href="/archives/an-zhuo-xi-tong-tong-guo-qemu-yun-xing-windows-zui-jian-dan-jiao-cheng" class="title" title="安卓系统通过 QEMU 运行 Windows 最简单教程" target="_blank" rel="noopener noreferrer">
          
          安卓系统通过 QEMU 运行 Windows 最简单教程
        </a>
        <a class="abstract" href="/archives/an-zhuo-xi-tong-tong-guo-qemu-yun-xing-windows-zui-jian-dan-jiao-cheng" title="前言 在安卓系统上想要运行 Windows 软件,常用的方法有两种。 第一种是 Wine,它通过将 Windows 系统调用转换为 Unix 指令,从而运行 exe 程序。从某种程度上来说它是一个兼容层而不是虚拟机、模拟器。Wine 的效率较高但是很多 exe 程序还是无法运行。Mobox、Exag" target="_blank" rel="noopener noreferrer">前言 在安卓系统上想要运行 Windows 软件,常用的方法有两种。 第一种是 Wine,它通过将 Windows 系统调用转换为 Unix 指令,从而运行 exe 程序。从某种程度上来说它是一个兼容层而不是虚拟机、模拟器。Wine 的效率较高但是很多 exe 程序还是无法运行。Mobox、Exag</a>
        <div class="meta">
          <ul class="items">
            <li>2024-12-01</li>
            <li><i class="joe-font joe-icon-eye"></i>0</li>
            
              <li><i class="joe-font joe-icon-message"></i>0</li>
            
            
            <li><i class="joe-font joe-icon-dianzan"></i>0</li>
          </ul>
          
            <ul class="categories">
              <li class="pcate">
                <svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="15" height="15">
                  <path 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" fill="var(--minor)"></path>
                  <path 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" fill="#ff6a18"></path>
                </svg>
                <a class="link" target="_blank" rel="noopener noreferrer" href="/categories/jiao-cheng">教程</a>
              </li>
            </ul>
          
        </div>
      </div>
    </li>
  
                    
                      
    <li class="joe_list__item default animated wow data-wow-delay=&quot;0.3s&quot;" style="animation-delay: 0.3s;">
      
        <a href="/archives/shi-yong-php-bian-xie-de-yun-hu-xin-xi-huo-qu-api-kai-fa-li-cheng" class="thumbnail" title="使用 PHP 编写的云湖信息获取 API 开发历程" target="_blank" rel="noopener noreferrer">
          
            <img width="100%" height="100%" class=" ls-is-cached lazyloaded" data-src="/upload/Screenshot_2024-11-24-11-22-13-652_com.yhchat.app.jpg" srcset="/upload/Screenshot_2024-11-24-11-22-13-652_com.yhchat.app.jpg 400w,
              /upload/Screenshot_2024-11-24-11-22-13-652_com.yhchat.app.jpg 800w,
              /upload/Screenshot_2024-11-24-11-22-13-652_com.yhchat.app.jpg 1200w,
              /upload/Screenshot_2024-11-24-11-22-13-652_com.yhchat.app.jpg 1600w" sizes="(max-width: 1600px) 100vw, 1600px" src="/upload/Screenshot_2024-11-24-11-22-13-652_com.yhchat.app.jpg" alt="使用 PHP 编写的云湖信息获取 API 开发历程" onerror="Joe.errorImg(this, 'HomeErrImg')">
          
          <time datetime="2024-11-24">2024-11-24</time>
          <i class="joe-font joe-icon-picture"></i>
        </a>
      
      <div class="information">
        <a href="/archives/shi-yong-php-bian-xie-de-yun-hu-xin-xi-huo-qu-api-kai-fa-li-cheng" class="title" title="使用 PHP 编写的云湖信息获取 API 开发历程" target="_blank" rel="noopener noreferrer">
          
          使用 PHP 编写的云湖信息获取 API 开发历程
        </a>
        <a class="abstract" href="/archives/shi-yong-php-bian-xie-de-yun-hu-xin-xi-huo-qu-api-kai-fa-li-cheng" title="使用 PHP 编写的从云湖网页获取用户、群聊、机器人详细信息的 API。 开发背景 云湖的很多设计都是半成品,比如很难查询自己的注册时间、在加群/机器人之前无法查询群/机器人信息等问题。 为了方便查询这些信息,于是开发此 API。 开发过程 云湖的网页(https://www.yhchat.com/" target="_blank" rel="noopener noreferrer">使用 PHP 编写的从云湖网页获取用户、群聊、机器人详细信息的 API。 开发背景 云湖的很多设计都是半成品,比如很难查询自己的注册时间、在加群/机器人之前无法查询群/机器人信息等问题。 为了方便查询这些信息,于是开发此 API。 开发过程 云湖的网页(https://www.yhchat.com/</a>
        <div class="meta">
          <ul class="items">
            <li>2024-11-24</li>
            <li><i class="joe-font joe-icon-eye"></i>0</li>
            
              <li><i class="joe-font joe-icon-message"></i>0</li>
            
            
            <li><i class="joe-font joe-icon-dianzan"></i>0</li>
          </ul>
          
            <ul class="categories">
              <li class="pcate">
                <svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="15" height="15">
                  <path 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" fill="var(--minor)"></path>
                  <path 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" fill="#ff6a18"></path>
                </svg>
                <a class="link" target="_blank" rel="noopener noreferrer" href="/categories/ge-ren-xiang-mu">个人项目</a>
              </li>
            </ul>
          
        </div>
      </div>
    </li>
  
                    
                  </ul>
                </div>
              </div>
            </div>
            <!--                  pagination-->
            
              
    
      
    
    
    
    
        

    

    

  
            
            
          </div>
          <!--              aside-->
          
            
    <aside class="joe_aside">
      
        
          
            <!--        博主信息-->
            
    
    <section class="joe_aside__item author">
      <img width="100%" height="120" class="image lazyload" data-src="/upload/userbg.png" src="/themes/theme-Joe3/assets/img/author_bg.jpg" alt="博主栏壁纸" onerror="Joe.errorImg(this)">
      <div class="user">
        <div class="avatar_wrapper round">
          <img class="avatar lazyload" data-src="/upload/avatar.jpg" src="/themes/theme-Joe3/assets/svg/spinner-preloader.svg" alt="博主头像" data-text-avatar="机不可失" onload="Joe.loadedPlaceholderReplaceImg(this, 'AvatarImg')" onerror="Joe.errorImg(this, 'ErrAvatarImg')">
          
          
        </div>
        <a class="link" href="https://jibukeshi.us.kg/" target="_blank" rel="noopener noreferrer nofollow">
          机不可失

          
        </a>
        
          <p class="motto joe_motto">永远相信美好的事情即将发生</p>
        
        

        <!--    <p class="motto joe_motto">${user.description!'一句话介绍自己吧!'}</p>-->
      </div>
      <div class="count">
        <!--  <div class="item" th:title="'累计访问数 '+${stats.visit}">-->
        <!--    <span class="num">4</span>-->
        <!--    <span>访问量</span>-->
        <!--  </div>-->
        <!--    搭配A-->
        
        <!--    搭配B-->
        
        <!--    搭配C-->
        
          <div class="item" title="累计分类数 3">
            <span class="num">3</span>
            <span>分类数</span>
          </div>
          <div class="item" title="累计文章数 4">
            <span class="num">4</span>
            <span>文章数</span>
          </div>
          
            <div class="item" title="累计评论数 0">
              <span class="num">0</span>
              <span>评论数</span>
            </div>
          
          
        
        <!--    搭配D-->
        
      </div>
      
      
      
    </section>
  
  
          
          
          
          
          
          
          
          
          
          
          
          
          
        
      
        
          
          
          
          
          
          
            <!--        最新文章-->
            
    
    <section class="joe_aside__item newest">
      <div class="joe_aside__item-title">
        <i class="joe-font joe-icon-huo"></i>
        <span class="text">最新文章</span>
      </div>
      <div class="joe_aside__item-contain">
        <ul class="list">
          
            <li class="item">
              <a class="link" href="/archives/ji-yi-ci-yin-shu-ju-ku-diu-shi-er-bu-de-bu-chong-zhuang-ben-zhan-de-jing-li">记一次因数据库丢失而不得不重装本站的经历</a>
              <i class="joe-font joe-icon-link"></i>
            </li>
            <li class="item">
              <a class="link" href="/archives/hello-halo">Hello Halo</a>
              <i class="joe-font joe-icon-link"></i>
            </li>
            <li class="item">
              <a class="link" href="/archives/an-zhuo-xi-tong-tong-guo-qemu-yun-xing-windows-zui-jian-dan-jiao-cheng">安卓系统通过 QEMU 运行 Windows 最简单教程</a>
              <i class="joe-font joe-icon-link"></i>
            </li>
            <li class="item">
              <a class="link" href="/archives/shi-yong-php-bian-xie-de-yun-hu-xin-xi-huo-qu-api-kai-fa-li-cheng">使用 PHP 编写的云湖信息获取 API 开发历程</a>
              <i class="joe-font joe-icon-link"></i>
            </li>
          
        </ul>
      </div>
    </section>
  
  
          
          
          
          
          
          
          
          
        
      
        
          
          
          
          
          
          
          
          
          
          
            <!--        标签云-->
            
    <section class="joe_aside__item tags-cloud" id="tags-cloud">
      <div class="joe_aside__item-title">
        <i class="joe-font joe-icon-tag"></i>
        <span class="text">标签云</span>
        <a class="tags_more" href="/tags">更多<i class="joe-font joe-icon-more-right"></i></a>
      </div>
      <div class="joe_aside__item-contain">
        <div class="tags-cloud-list static">
          
          
        </div>
        
      </div>
    </section>
  
          
          
          
          
        
      
    </aside>
  
          
        </div>

        <!--悬浮按钮-->
        
          
    <div class="joe_action">
      
      
      
      
        <div class="joe_action_item mode">
          <svg class="mode-light" height="25" viewBox="0 0 1024 1024" width="25" xmlns="http://www.w3.org/2000/svg">
            <path 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"></path>
          </svg>
          <svg class="mode-dark active" height="25" viewBox="0 0 1024 1024" width="25" xmlns="http://www.w3.org/2000/svg">
            <path 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"></path>
            <path 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"></path>
          </svg>
        </div>
      
      
        <div class="joe_action_item back2top">
          <svg height="25" viewBox="0 0 1024 1024" width="25" xmlns="http://www.w3.org/2000/svg">
            <path 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"></path>
          </svg>
        </div>
      
    </div>
  
        
        
          
    <footer class="joe_footer   ">
      <div class="joe_container">
        <div class="item">
          <p>
            © 2023 - 2024<a href="https://jibukeshi.us.kg/" target="_blank" rel="noopener noreferrer">
              机不可失的小站
            </a>
            
          </p>
          
            
              <p class="site_powered">
                Powered by<a class="a-powered" href="https://halo.run/" target="_blank" rel="noopener noreferrer">
                  Halo</a>&nbsp;|&nbsp;🌈 Theme by<a class="a-theme" title="Theme Joe3v1.4.0" href="https://github.com/jiewenhuang/halo-theme-joe3.0" target="_blank" rel="noopener noreferrer">
                  M酷&amp;Jiewen
                </a>
              </p>
            
          

          
          
          
        </div>
        <div class="side-col">
          
            <div class="item">
              
                <a class="rss" href="/rss.xml" target="_blank" rel="noopener noreferrer"><i class="joe-font joe-icon-rss-fill"></i>&nbsp;RSS</a>
              
              
                <a href="/sitemap.xml" target="_blank" rel="noopener noreferrer">
                  站点地图
                </a>
              
            </div>
          
          
        </div>
      </div>
    </footer>
  
        
      </div>
      
    <!--    ===== 引入脚本 start ===== -->
    <!--    <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}">-->
    <script src="/themes/theme-Joe3/assets/lib/wowjs/wow.min.js"></script>
    <!--    </th:block>-->
    <script src="/themes/theme-Joe3/assets/lib/lazysizes/lazysizes.min.js"></script>
    <script src="/themes/theme-Joe3/assets/lib/qmsg/qmsg.js"></script>
    
    <script src="/themes/theme-Joe3/assets/js/min/utils.min.js"></script>

    
    
    
    <script src="/themes/theme-Joe3/assets/lib/fancybox/jquery.fancybox.min.js"></script>
    
    <script src="/themes/theme-Joe3/assets/js/min/custom.min.js?v=1.4.0"></script>
    
    
    
    <!--相册-->
    

    <!--===== 引入页面级js start =====-->
    <script src="/themes/theme-Joe3/assets/js/min/common.min.js?v=1.4.0"></script>
    
    
      <script src="/themes/theme-Joe3/assets/js/min/index.min.js?v=1.4.0"></script>
    
    
    
        
    
    
    
    

    <!-- ===== 引入页面级js end ===== -->

    <!-- ===== 引入脚本 start ===== -->

    

    <!-- ===== 引入脚本 end =====-->

    
    
    

    <!--搜索点击-->
    <script>
      const searchButton = document.getElementById('halo-search');
      searchButton.addEventListener('click', function () {
        SearchWidget.open();
      });
    </script>
    <!--    大图配置-->
    
    
    
  
    
  

<div id="nprogress"><div class="bar" role="bar" style="transform: translate3d(-89.7363%, 0px, 0px); transition: all 500ms ease 0s;"><div class="peg"></div></div></div><search-modal></search-modal></body></html>