Files
home/index.html
hehh 1531be198d fix(sw): 延迟注册Service Worker以提升页面稳定性
- 在页面加载完成后延迟3秒再注册Service Worker
- 避免Service Worker注册影响页面初始渲染性能
- 确保页面资源加载完成后再进行Service Worker初始化
2025-11-25 18:49:29 +08:00

451 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<!-- 基础信息 -->
<meta lang="zh-cmn-Hans">
<meta charset="utf-8">
<meta name="renderer" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="force-rendering" content="webkit"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Honesty的主页,HeHouHui的主页,HeHui的主页,明厚的主页">
<meta name="keywords" content="Honesty,HeHouHui,HeHui,明厚">
<meta name="author" content="Honesty">
<!-- PWA相关配置 -->
<meta name="theme-color" content="#6c5ce7">
<link rel="manifest" href="./manifest.json">
<!-- 社交平台分享优化 -->
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.hehouhui.cn/">
<meta property="og:title" content="Honesty的主页 - Java后端 & AI工程师">
<meta property="og:description"
content="我是Honesty一名充满热情的Java后端开发工程师专注于AI技术的探索与应用。来自湖南现在上海工作享受在这座充满活力的城市中追求技术梦想。">
<meta property="og:image" content="images/avatar.jpeg">
<meta property="og:site_name" content="Honesty的主页">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://www.hehouhui.cn/">
<meta property="twitter:title" content="Honesty的主页 - Java后端 & AI工程师">
<meta property="twitter:description"
content="我是Honesty一名充满热情的Java后端开发工程师专注于AI技术的探索与应用。来自湖南现在上海工作享受在这座充满活力的城市中追求技术梦想。">
<meta property="twitter:image" content="https://www.hehouhui.cn/images/avatar.jpeg">
<meta property="twitter:site" content="@Honesty861024">
<!-- 微信小程序/朋友圈分享 -->
<meta property="wechat:image" content="https://www.hehouhui.cn/images/avatar.jpeg">
<meta property="wechat:title" content="Honesty的主页 - Java后端 & AI工程师">
<meta property="wechat:description"
content="我是Honesty一名充满热情的Java后端开发工程师专注于AI技术的探索与应用。">
<title>Honesty的主页</title>
<link rel="stylesheet" type="text/css" href="./css/style.css?version=3">
<link rel="stylesheet" type="text/css" href="./css/iconfont.css">
<link rel="apple-touch-icon" href="./images/logo.png">
<link rel="icon" href="favicon.ico?version=1">
<!--引入SweetAlert
<script src="https://fastly.jsdelivr.net/npm/sweetalert@2.1.2/dist/sweetalert.min.js"></script>-->
<script src="https://cdn.jsdmirror.com/npm/sweetalert2@10.15.5/dist/sweetalert2.all.min.js"></script>
<!--引入izitoast-->
<link rel="stylesheet" href="https://cdn.jsdmirror.com/npm/izitoast@1.4.0/dist/css/iziToast.min.css">
<script type="text/javascript"
src="https://cdn.jsdmirror.com/npm/izitoast@1.4.0/dist/js/iziToast.min.js"></script>
<!--引入fontawesome-->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
media="all">
<!--IE淘汰计划-->
<script>
if (/*@cc_on!@*/false || (!!window.MSInputMethodContext && !!document.documentMode)) window.location.href = "https://imsyy.top/upgrade-your-browser/index.html?referrer=" + encodeURIComponent(window.location.href);
</script>
</head>
<body oncontextmenu=self.event.returnValue=false onselectstart="return false">
<header id="panel" class="panel-cover">
<script>
WIDGET = {
"CONFIG": {
"modules": "01234",
"background": "5",
"tmpColor": "FFFFFF",
"tmpSize": "16",
"cityColor": "FFFFFF",
"citySize": "16",
"aqiColor": "FFFFFF",
"aqiSize": "16",
"weatherIconSize": "24",
"alertIconSize": "18",
"padding": "10px 10px 10px 10px",
"shadow": "1",
"language": "auto",
"borderRadius": "10",
"fixed": "false",
"vertical": "top",
"horizontal": "left",
"key": "782f2e580ace4a91bab6390d7d726f04"
}
}
</script>
<div class="panel-main">
<div class="panel-main__inner panel-inverted">
<div class="panel-main__content">
<div class="ih-item circle effect right_to_left" id="avatar">
<a class="blog-button">
<div class="img"><img
src="images/avatar.jpeg"
alt="img"
class="js-avatar iUp profilepic header-logo">
</div>
<div class="info iUp">
<div class="info-back">
<img alt="img" src="images/kl.gif"
class="js-avatar profilepic">
</div>
</div>
</a>
</div>
<h1 class="panel-cover__title panel-title iUp">
<!-- <br/>Honesty-->
</h1>
<!-- <p class="panel-cover__subtitle panel-subtitle iUp">众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。</p>-->
<p class="panel-cover__subtitle panel-subtitle iUp"></p>
<!-- <canvas class="navigation-wrapper iUp" id="canvas" style="width:50%;padding-top:0px;" width="920"-->
<!-- height="350"></canvas>-->
<!-- <script src="https://cdn.jsdmirror.com/gh/listener-He/Home/js/clock.js"></script>-->
<!-- 横线已移除 -->
<!--一言无法显示时的文字-->
<p id="description" style="margin-top: 10%" class="panel-cover__description iUp">人生天地之间,若白驹之过隙,忽然而已。
<br/>
<strong>-「Honesty」</strong>
</p>
<div class="navigation-wrapper iUp">
<div>
<nav class="cover-navigation cover-navigation--primary">
<ul class="navigation">
<li class="navigation__item">
<a href="./about.html"><span>关于我</span><i></i></a>
</li>
<li class="navigation__item">
<a href="https://blog.hehouhui.cn/"><span>博客</span><i></i></a>
</li>
<li class="navigation__item">
<a href="https://moments.hehouhui.cn" class="moments-link"><span>瞬间</span><i></i></a>
</li>
<li class="navigation__item">
<a href="javascript:void(0)"><span>简历</span><i></i></a>
</li>
</ul>
</nav>
</div>
<div>
<div class="social-icons-row">
<div class="social-icon">
<a href="https://github.com/listener-He" title="Github" target="_blank">
<svg width="20" height="20" viewBox="0 0 24 24">
<defs>
<linearGradient id="github-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1"/>
</linearGradient>
<linearGradient id="github-gradient-hover" x1="0%" y1="0%" x2="100%"
y2="100%">
<stop offset="0%" style="stop-color:#ff6b6b;stop-opacity:1"/>
<stop offset="50%" style="stop-color:#4ecdc4;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#45b7d1;stop-opacity:1"/>
</linearGradient>
</defs>
<path fill="url(#github-gradient)"
d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
</svg>
<span class="label">Github</span>
</a>
</div>
<div class="social-icon">
<a href="https://www.linkedin.com/in/honesty861024" title="Linkedin"
target="_blank">
<svg width="20" height="20" viewBox="0 0 24 24">
<defs>
<linearGradient id="linkedin-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1"/>
</linearGradient>
<linearGradient id="linkedin-gradient-hover" x1="0%" y1="0%" x2="100%"
y2="100%">
<stop offset="0%" style="stop-color:#ff6b6b;stop-opacity:1"/>
<stop offset="50%" style="stop-color:#4ecdc4;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#45b7d1;stop-opacity:1"/>
</linearGradient>
</defs>
<path fill="url(#linkedin-gradient)"
d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg>
<span class="label">Linkedin</span>
</a>
</div>
<div class="social-icon">
<a href="https://twitter.com/Honesty861024" title="Twitter" target="_blank">
<svg width="20" height="20" viewBox="0 0 24 24">
<defs>
<linearGradient id="twitter-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1"/>
</linearGradient>
<linearGradient id="twitter-gradient-hover" x1="0%" y1="0%" x2="100%"
y2="100%">
<stop offset="0%" style="stop-color:#ff6b6b;stop-opacity:1"/>
<stop offset="50%" style="stop-color:#4ecdc4;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#45b7d1;stop-opacity:1"/>
</linearGradient>
</defs>
<path fill="url(#twitter-gradient)"
d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/>
</svg>
<span class="label">Twitter</span>
</a>
</div>
<div class="social-icon">
<a onClick="weixin()" title="微信" class="weixin-link">
<svg width="20" height="20" viewBox="0 0 24 24">
<defs>
<linearGradient id="wechat-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1"/>
</linearGradient>
<linearGradient id="wechat-gradient-hover" x1="0%" y1="0%" x2="100%"
y2="100%">
<stop offset="0%" style="stop-color:#ff6b6b;stop-opacity:1"/>
<stop offset="50%" style="stop-color:#4ecdc4;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#45b7d1;stop-opacity:1"/>
</linearGradient>
</defs>
<path fill="url(#wechat-gradient)"
d="M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 01.213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 00.167-.054l1.903-1.114a.864.864 0 01.717-.098 10.16 10.16 0 002.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18 0 .659-.52 1.188-1.162 1.188-.642 0-1.162-.529-1.162-1.188 0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18 0 .659-.52 1.188-1.162 1.188-.642 0-1.162-.529-1.162-1.188 0-.651.52-1.18 1.162-1.18zm5.34 2.867c-1.797-.052-3.746.512-5.28 1.786-1.72 1.428-2.687 3.72-1.78 6.22.942 2.453 3.666 4.229 6.884 4.229.826 0 1.622-.12 2.361-.336a.722.722 0 01.598.082l1.584.926a.272.272 0 00.14.045c.134 0 .24-.111.24-.248 0-.06-.023-.12-.038-.177l-.327-1.233a.582.582 0 01.181-.556c1.52-1.186 2.506-2.952 2.506-4.992 0-3.563-3.359-6.446-7.069-6.446zm-2.496 3.778c.462 0 .837.382.837.853 0 .471-.375.854-.837.854-.462 0-.837-.383-.837-.854 0-.471.375-.853.837-.853zm4.992 0c.462 0 .837.382.837.853 0 .471-.375.854-.837.854-.462 0-.837-.383-.837-.854 0-.471.375-.853.837-.853z"/>
</svg>
<span class="label">微信</span>
</a>
</div>
<div class="social-icon">
<a href="mailto:hehouhui@hehouhui.cn" title="Email">
<svg width="20" height="20" viewBox="0 0 24 24">
<defs>
<linearGradient id="email-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1"/>
</linearGradient>
<linearGradient id="email-gradient-hover" x1="0%" y1="0%" x2="100%"
y2="100%">
<stop offset="0%" style="stop-color:#ff6b6b;stop-opacity:1"/>
<stop offset="50%" style="stop-color:#4ecdc4;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#45b7d1;stop-opacity:1"/>
</linearGradient>
</defs>
<path fill="url(#email-gradient)"
d="M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-20.728c-.904 0-1.636-.732-1.636-1.636v-13.909c0-.904.732-1.636 1.636-1.636h20.728c.904 0 1.636.732 1.636 1.636zm-1.636-1.636h-20.728l10.364 9.545 10.364-9.545zm0 2.909l-10.364 9.545-10.364-9.545v10.999h20.728v-10.999z"/>
</svg>
<span class="label">Email</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel-cover--overlay cover-slate"></div>
<div class="weixin-qrcode-overlay" id="weixinOverlay">
<div class="weixin-qrcode-container">
<div class="weixin-qrcode-title">扫描二维码</div>
<div class="weixin-qrcode-desc">请使用微信扫一扫添加关注</div>
<img src="https://blog-file.hehouhui.cn/wechat/mp-honesy.jpg" alt="微信二维码"
class="weixin-qrcode-image"
onerror="this.src='https://cdn.jsdmirror.com/gh/listener-He/Home/images/logo.png'; this.alt='二维码加载失败'">
<button class="weixin-qrcode-close" onclick="closeWeixin()">关闭</button>
</div>
</div>
<script>
function weixin() {
const overlay = document.getElementById('weixinOverlay');
overlay.style.display = 'flex';
// 防止滚动穿透
document.body.style.overflow = 'hidden';
// 添加ESC键关闭
document.addEventListener('keydown', closeOnEsc);
}
function closeWeixin() {
const overlay = document.getElementById('weixinOverlay');
overlay.style.display = 'none';
// 恢复滚动
document.body.style.overflow = '';
// 移除ESC键监听
document.removeEventListener('keydown', closeOnEsc);
}
function closeOnEsc(e) {
if (e.key === 'Escape') {
closeWeixin();
}
}
// 点击空白处关闭
document.getElementById('weixinOverlay').addEventListener('click', function (e) {
if (e.target === this) {
closeWeixin();
}
});
// 阻止点击弹框内容时关闭
document.querySelector('.weixin-qrcode-container').addEventListener('click', function (e) {
e.stopPropagation();
});
</script>
</div>
<div class="remark iUp">
<p class="power">
<a class="icp" href="https://beian.miit.gov.cn/" target="_blank">湘ICP备20014902号</a>
</p>
<p class="power">Copyright © 2018<span id="currentYear"></span> Honesty</p>
<script>
document.getElementById("currentYear").textContent = ' - ' + new Date().getFullYear();
</script>
<p class="power">Powered By
<a href="https://pages.edgeone.ai/" target="_blank"> Tencent EdgeOne </a> And
<a href="https://hitokoto.cn/" target="_blank"> Hitokoto </a>
</p>
</div>
</header>
<!-- iframe容器 -->
<div id="moments-container" style="display: none;">
<iframe id="moment-frame" src="" width="100%" height="500px" frameborder="0"></iframe>
</div>
<!-- 遮罩层 -->
<div class="overlay"></div>
<!--黑暗主题-->
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/fetch.min.js"></script>
<script type="text/javascript" src="js/config.js"></script>
<script type="text/javascript" src="js/main.js?version=3"></script>
<!--<script type="text/javascript" src="js/bj.js"></script>-->
<!--<script type="text/javascript" src="https://cdn.jsdmirror.com/gh/listener-He/Home/js/moments.js"></script>-->
<script async src="https://analyse.hehouhui.cn/tracker.js" data-ackee-server="https://analyse.hehouhui.cn"
data-ackee-domain-id="7887135f-a413-46e2-a98c-52d4f18d9973"></script>
<!-- 不蒜子统计 -->
<script>
document.addEventListener('DOMContentLoaded', function () {
// 动态加载不蒜子统计脚本
const script = document.createElement('script');
script.src = SiteConfig.analytics.busuanzi.src;
script.async = true;
document.head.appendChild(script);
});
</script>
<!-- 百度站点统计 -->
<script>
try {
const script = document.createElement("script");
script.src = SiteConfig.analytics.baidu.src;
script.defer = true;
document.head.appendChild(script);
script.onload = function () {
if (typeof _hmt !== 'undefined') {
_hmt.push(['_setAccount', SiteConfig.analytics.baidu.id]);
}
};
} catch (e) {
console.log("百度统计错误", e);
}
</script>
<!-- Google Analytics -->
<script type="text/javascript">
// 定义 gtag 函数作为安全兜底
try {
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
} catch (e) {
console.log("Google Analytics Init 错误", e);
}
</script>
<!-- 再异步加载 Google 的 gtag.js -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-DYWDEVKDP0"></script>
<!-- 可选:继续调用 config -->
<script type="text/javascript">
try {
gtag('config', 'G-DYWDEVKDP0');
} catch (e) {
console.error("Google Analytics config 失败", e);
}
</script>
<script>
!function (p) {
"use strict";
!function (t) {
var s = window, e = document, i = p,
c = "".concat("https:" === e.location.protocol ? "https://" : "http://", "sdk.51.la/js-sdk-pro.min.js"),
n = e.createElement("script"), r = e.getElementsByTagName("script")[0];
n.type = "text/javascript", n.setAttribute("charset", "UTF-8"), n.async = !0, n.src = c, n.id = "LA_COLLECT", i.d = n;
var o = function () {
s.LA.ids.push(i)
};
s.LA ? s.LA.ids && o() : (s.LA = p, s.LA.ids = [], o()), r.parentNode.insertBefore(n, r)
}()
}({id: "3OBGjwDdEIRS7XZ1", ck: "3OBGjwDdEIRS7XZ1"});
</script>
<!-- PWA注册 -->
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
setTimeout(() => {
navigator.serviceWorker.register('./js/sw.js')
.then(function(registration) {
console.log('SW registered: ', registration);
})
.catch(function(registrationError) {
console.log('SW registration failed: ', registrationError);
});
}, 3000); // 页面稳定后再注册
});
}
</script>
<!-- Apple PWA支持 -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Honesty">
<link rel="apple-touch-icon" href="./images/logo.png">
<!-- Windows PWA支持 -->
<meta name="msapplication-TileImage" content="./images/avatar.jpeg">
<meta name="msapplication-TileColor" content="#6c5ce7">
<meta name="msapplication-tap-highlight" content="no">
<!-- 其他PWA相关meta标签 -->
<meta name="mobile-web-app-capable" content="yes">
</body>
</html>