- ID de l'analyse :
- c1e23fd1-046a-45ce-ad3c-7a96bc5eda59Terminée
- URL soumise :
- https://jibukeshi.us.kg/
- Fin du rapport :
Liens : 2 trouvé(s)
Liens sortants identifiés à partir de la page
Lien | texte |
---|---|
https://halo.run/ | Halo |
https://github.com/jiewenhuang/halo-theme-joe3.0 | M酷&Jiewen |
Variables JavaScript : 22 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
detectIE | function |
initThemeMode | function |
Joe | object |
NProgress | object |
$ | function |
jQuery | function |
CommentWidget | object |
Messages de journal de console : 2 trouvé(s)
Messages consignés dans la console web
Type | Catégorie | Enregistrement |
---|---|---|
error | network |
|
error | network |
|
HTML
Le corps HTML de la page en données brutes
<!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>