- 掃描 ID:
- c1e23fd1-046a-45ce-ad3c-7a96bc5eda59已完成
- 已提交的 URL:
- https://jibukeshi.us.kg/
- 報告完成時間:
連結 · 找到 2 個
從頁面中識別的傳出連結
連結 | Text |
---|---|
https://halo.run/ | Halo |
https://github.com/jiewenhuang/halo-theme-joe3.0 | M酷&Jiewen |
JavaScript 變數 · 找到 22 個
在頁面的視窗物件上載入的全域 JavaScript 變數是在函數外部宣告的變數,可從目前範圍內程式碼中的任何位置存取
名稱 | 類型 |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
detectIE | function |
initThemeMode | function |
Joe | object |
NProgress | object |
$ | function |
jQuery | function |
CommentWidget | object |
主控台記錄訊息 · 找到 2 條
記錄到 Web 主控台的訊息
類型 | 類別 | 記錄 |
---|---|---|
error | network |
|
error | network |
|
HTML
頁面的原始 HTML 主體
<!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:'',textColor:'',useTextGradient:false}';
if (generate_avatar_opts_str) {
// generate_avatar_opts_str 示例:{bgColor:'',textColor:'',useTextGradient:false}, 解析 generate_avatar_opts 配置
try {
// 防止 ' 等特殊字符导致 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="0.0s"" 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="0.1s"" 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="0.2s"" 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="0.3s"" 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> | 🌈 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酷&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> 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>