-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
269 lines (240 loc) · 50.6 KB
/
index.html
File metadata and controls
269 lines (240 loc) · 50.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>ForeverYolo的博客 - Always Going On</title><meta name="author" content="ForeverYolo"><meta name="copyright" content="ForeverYolo"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="这是ForeverYolo的博客网站">
<meta property="og:type" content="website">
<meta property="og:title" content="ForeverYolo的博客">
<meta property="og:url" content="https://foreveryolo.github.io/index.html">
<meta property="og:site_name" content="ForeverYolo的博客">
<meta property="og:description" content="这是ForeverYolo的博客网站">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://foreveryolo.github.io/img/avatar.jpg">
<meta property="article:author" content="ForeverYolo">
<meta property="article:tag" content="ForeverYolo">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://foreveryolo.github.io/img/avatar.jpg"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="https://foreveryolo.github.io/index.html"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><meta name="baidu-site-verification" content="3cb4bb475c7dde65b56ca90f7afdabed"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: {"path":"/search.xml","preload":false,"languages":{"hits_empty":"找不到您查询的内容:${query}"}},
translate: undefined,
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: '复制成功',
error: '复制错误',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '',
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: undefined,
source: {
justifiedGallery: {
js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
}
},
isPhotoFigcaption: false,
islazyload: false,
isAnchor: false,
percent: {
toc: true,
rightside: false,
}
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'ForeverYolo的博客',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2026-03-05 22:13:04'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
}
}
const t = saveToLocal.get('theme')
if (t === 'dark') activateDarkMode()
else if (t === 'light') activateLightMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><link rel="stylesheet" href="/css/iconfont.css"><link rel="stylesheet" href="/css/myStyle.css"><link rel="stylesheet" href="/css/myIco.css"><link rel="stylesheet" href="/css/fontsetting.css"><script defer src="/live2d-widget-master/autoload.js"></script><!-- hexo injector head_end start -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css">
<!-- hexo injector head_end end --><meta name="generator" content="Hexo 6.3.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/img/avatar.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">70</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">29</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">10</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间线</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 休闲</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/books/"><i class="fa-fw fas fa-video"></i><span> 书籍</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> Link</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background-image: url('https://s1.ax1x.com/2022/12/27/zzgHfK.jpg')"><nav id="nav"><span id="blog-info"><a href="/" title="ForeverYolo的博客"><span class="site-name">ForeverYolo的博客</span></a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间线</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page group" href="javascript:void(0);"><i class="fa-fw fas fa-list"></i><span> 休闲</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></li><li><a class="site-page child" href="/books/"><i class="fa-fw fas fa-video"></i><span> 书籍</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> Link</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">ForeverYolo的博客</h1><div id="site-subtitle"><span id="subtitle"></span></div><div id="site_social_icons"><a class="social-icon" href="https://github.com/ForeverYolo/" target="_blank" title=""><i class="fab fa-github"></i></a><a class="social-icon" href="tencent://message/?uin=2572131118&Site=Sambow&Menu=yes" target="_blank" title="QQ"><i class="iconfont icon-QQ"></i></a><a class="social-icon" href="mailto:2572131118@qq.com" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left"><a href="/posts/38081/" title="Knowledge Graph Guided Retrieval Augmented Generation 论文阅读"><img class="post-bg" src="https://s41.ax1x.com/2026/03/05/peCA6xA.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Knowledge Graph Guided Retrieval Augmented Generation 论文阅读"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/38081/" title="Knowledge Graph Guided Retrieval Augmented Generation 论文阅读">Knowledge Graph Guided Retrieval Augmented Generation 论文阅读</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2026-03-05T13:58:27.000Z" title="发表于 2026-03-05 21:58:27">2026-03-05</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/">人工智能</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/Transformer/">Transformer</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/">知识图谱</a></span></div><div class="content">写在开头该文是 RAG(Retrieval-augmented generation 检索增强生成)领域的一篇论文,发表于 NAACL 2025.
原文链接:Knowledge Graph-Guided Retrieval Augmented Generation
相关工作重排序模型重排序模型(通常是 Cross-Encoder)会让问题和文档“面对面”。
工作方式: 它把“用户问题”和“候选文档”拼接在一起,作为一个整体输入进模型(比如 BERT)。
计算逻辑: 模型内部的注意力机制(Attention)会逐字逐句地对比两者。
优点: 极度精准。它能捕捉到两者之间极其细微的语义交互。
缺点: 极慢。它无法预先计算。如果有 100 万个文档,将不可能把问题和每个文档都拼在一起跑一遍深度模型。
密集检索模型密集检索通过模型将问题和文档分别转化成向量。
工作方式: 就像把问题和每个文档都变成坐标系里的一个“点”。
计算逻辑: 在搜索时,它不让问题和文档直接见面,而是计算两个向量之间的距离(如余弦相似度)。
优点: 极快。因为文档向量可以提前算好存进数据库(Vector DB),搜索时 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/posts/57548/" title="Think On Graph 2.0:Deep And Faithful Large Language Model Reasoning With Knowledge Guided Retrieval Augmented Generation 论文阅读"><img class="post-bg" src="https://s41.ax1x.com/2026/03/04/pe90WuR.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Think On Graph 2.0:Deep And Faithful Large Language Model Reasoning With Knowledge Guided Retrieval Augmented Generation 论文阅读"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/57548/" title="Think On Graph 2.0:Deep And Faithful Large Language Model Reasoning With Knowledge Guided Retrieval Augmented Generation 论文阅读">Think On Graph 2.0:Deep And Faithful Large Language Model Reasoning With Knowledge Guided Retrieval Augmented Generation 论文阅读</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2026-03-04T12:04:28.000Z" title="发表于 2026-03-04 20:04:28">2026-03-04</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/">人工智能</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/Transformer/">Transformer</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/">知识图谱</a></span></div><div class="content">写在开头该文是 RAG(Retrieval-augmented generation 检索增强生成)领域的一篇论文,发表于 ICLR 2025.
原文链接:Think-on-Graph 2.0: Deep and Faithful Large Language Model Reasoning with Knowledge-guided Retrieval Augmented Generation
相关工作RAG 的定义RAG(检索增强生成,Retrieval-Augmented Generation) 是一种结合了信息检索技术和大型语言模型(LLM)生成能力的人工智能框架。它的核心思想是:在生成答案之前,先像人类查资料一样,从外部知识库中检索相关信息,然后将这些信息作为“参考资料”提供给大模型,以生成更准确、更可靠、更具时效性的回答。
该方法在近现代被认为是解决 AI 幻觉和领域知识匮乏的重要手段。
RAG 的分类
基于文本的 RAG 方法:主要依据问题与文本之间的语义相似性来检索信息。这类方法在捕捉文本间的深层关系方面存在困难,且检索到的文本可能包含冗余内容。例如:2008年经济衰 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/posts/23278/" title="Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer 论文阅读"><img class="post-bg" src="https://s41.ax1x.com/2026/02/13/pZqrYXF.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer 论文阅读"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/23278/" title="Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer 论文阅读">Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer 论文阅读</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2026-02-13T05:13:36.000Z" title="发表于 2026-02-13 13:13:36">2026-02-13</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/">人工智能</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/Transformer/">Transformer</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/">知识图谱</a></span></div><div class="content">总结这篇论文是发表在 WWW’23 上的一篇知识图谱融合方向的论文,使用的是 Transformer 架构。整体思想上借鉴了 NLP 领域的预训练 + 微调的设计思想。
通过大量的知识图谱训练样本预训练出一个知识图谱模型。
之后在面对下游任务时冻结模型参数,重新训练 embedding 用于适配下游任务的任务场景。
继续冻结模型参数,用 Prompt Tuning 的方法将任务表示为 Prompt 的一部分,进行微调,适配下游任务的任务内容。
论文原文链接:Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer
相关知识知识图谱表示方法知识图谱表示方法是指通过模型中的参数和函数对知识图谱中的信息进行编码,它们可以恢复图结构并捕捉实体与关系之间的语义。在分类上,可以分为 3 类:
基于嵌入的方法:模型直接学习知识图谱三元组中实体和关系的 embedding。经过学习之后,这些 embedding 就可以隐式捕捉知识图谱元素中的相似性、关系、层次、公理等信息。例如 RotatE。
该方法学习到的都是特 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/posts/40451/" title="MLP-多层感知机"><img class="post-bg" src="https://s21.ax1x.com/2025/03/31/pEy9yEq.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="MLP-多层感知机"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/40451/" title="MLP-多层感知机">MLP-多层感知机</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-03-31T12:57:35.000Z" title="发表于 2025-03-31 20:57:35">2025-03-31</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/">人工智能</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/%E5%A4%9A%E5%B1%82%E6%84%9F%E7%9F%A5%E6%9C%BA/">多层感知机</a></span></div><div class="content">写在开头最近在学习深度学习中的简单模型——多层感知机(Multilayer Perceptron 简称 MLP),将学习内容和代码模板、实例记录一下,以便后续利用。
多层感知机原理一句话总结,通过在线性模型中加入隐藏层来克服线性模型的限制,使得该结构有逼近任意真实函数的能力。
数据流流动MLP 的每一层的节点间都是全连接的,数据从前向后流动,层与层之间和线性模型类似,是一个线性组合函数。每一层得到运算结果后,还会叠加一次激活函数,再作为下一层的输入。图中 $\sigma $ 就是激活函数。
数学原理模型退化模型退化是指一个复杂模型退化到一个简单模型的情况,即利用简单模型就可以发挥复杂模型的全部性能。MLP 就存在这样的情况,在每一层都表达线性函数的条件下 MLP 将会退化为线性模型。简单来讲,这是因为线性函数叠加线性函数还是线性函数。所以无论叠加多少层隐藏层,本质上都是线性函数的叠加,最终得到的输入输出之间的关系仍然是线性的。
而线性模型能表示所有输入输出之间是线性的情形,此时用线性模型就能表达上述 MLP 所表达的函数。因而 MLP 失去了本应有的作用。
理解有困难的话可以想这个例 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/posts/17937/" title="嵌入式平台快速开发-Tftp 服务器搭建与配置"><img class="post-bg" src="https://s21.ax1x.com/2025/03/18/pEdouTK.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="嵌入式平台快速开发-Tftp 服务器搭建与配置"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/17937/" title="嵌入式平台快速开发-Tftp 服务器搭建与配置">嵌入式平台快速开发-Tftp 服务器搭建与配置</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-03-18T12:04:36.000Z" title="发表于 2025-03-18 20:04:36">2025-03-18</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Unix-Linux-%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0/">Unix & Linux 系统学习</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/ZCU102/">ZCU102</a></span></div><div class="content">写在开头经常在嵌入式开发板做研发的人都知道,在编译机编译出产物后,如何在开发板上使用是一个比较繁琐的问题,一个比较简单易行的方法是准备一个 SD 卡,将内容通过读卡器写到 SD 卡里,然后插入到开发板上使用。
这样的流程虽然很简单易行,但对 SD 卡的反复拔插对 SD 插槽寿命是一个极大的考验。且如果需要在短期内依次做出大量的修改,反复拷贝/插入SD卡也是一种折磨的体验。
本文就是为了解决这个问题,通过在主机建立 Tftp 服务器,用网线连接开发板与主机,每次启动时开发板可以直接下载主机的编译产物来使用。
物理配置使用网线将 PC 与 开发板连在一起。
PC 配置
主机的版本 Ubuntu 22.04
安装 TFTP 服务器软件包 12sudo apt-get updatesudo apt-get install tftpd-hpa tftp-hpa
创建 TFTP 根目录并设置权限,这里以在用户目录下 TFTP 目录为例。 123mkdir -p ~/tftpsudo chown -R $USER:$USER ~/tftpsudo chmod -R 755 ~/tftp
编辑 tft ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/posts/26319/" title="ZCU102提升-USB 实际测试"><img class="post-bg" src="https://s21.ax1x.com/2025/03/13/pEUaotg.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="ZCU102提升-USB 实际测试"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/26319/" title="ZCU102提升-USB 实际测试">ZCU102提升-USB 实际测试</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-03-12T16:42:15.000Z" title="发表于 2025-03-13 00:42:15">2025-03-13</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/FPGA/">FPGA</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/ZCU102/">ZCU102</a></span></div><div class="content">写在开头接上篇,研究完 ZCU102 USB 理论后,进行在 Hvisor 上进行 USB 直通的尝试。
设备树修改在现有能够正常在 ZCU102 上工作的精简设备树进行修改,加入 USB 及其关联设备的设备树节点。关系图如下:
可见引入一个 USB 会同时引入很多设备。这使得此次尝试变得复杂起来。
Hvisor 修改为前述所有新增设备在 Hvisor 中配置直通区域和中断号。
Qemu 测试自行编译的内核测试使用自行编译的内核测试,成功启动 RootLinux,但 USB 为启动,提示 USB 驱动因为前置驱动未启动而被挂起。排查过配置本身后怀疑自行编译内核缺少相关驱动,换为 BSP 中自带的内核进行测试。
BSP 内核测试使用 BSP 中自带的内核进行测试,成功启动 RootLinux,且内核日志有了正确的 USB 启动信息。
上板测试有了 Qemu 测试的经验,直接在板上使用 BSP 自带内核进行尝试,发现卡死在内核启动,回档到最开始的精简设备树,可以正常启动。证明此问题由最近对设备树的改动产生。一个个增减设备,最后定位到 Clock-generator,其设备树描述如下: ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/posts/60292/" title="ZCU102提升-USB 理论研究"><img class="post-bg" src="https://s21.ax1x.com/2025/03/02/pEGFvGV.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="ZCU102提升-USB 理论研究"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/60292/" title="ZCU102提升-USB 理论研究">ZCU102提升-USB 理论研究</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-03-02T07:30:43.000Z" title="发表于 2025-03-02 15:30:43">2025-03-02</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/FPGA/">FPGA</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/ZCU102/">ZCU102</a></span></div><div class="content">写在开头最近在研究 ZCU102 的 USB 模块,借此把此 USB 模块及其边缘内容一起研究总结一下。
实物结构ZCU102 的 USB 接口在图中 5 标,其中用红框圈起来的是跳线位置,关于跳线是什么后面会介绍。
USB 接口为不常见的 Micro USB(3.0) Type-B 接口,主要用于移动硬盘盒。
我不是很理解为什么 ZCU102 USB 做成了如此罕见的接口,让使用变得困难,但好在 ZCU102 开发板随箱子附带了 TypeB 转 Type-A 母口的转换器。
USB 模块架构图本篇文章以下图作为主线,分别对每个模块展开研究。
USB MIO
GPIOGPIO 是一种芯片与外部电路相连接的引脚(划重点),全称是 General Purpose Input Output 通用功能输出输出,目的是实现功能复用,其结构如图所示,左边接到外设、右边接到芯片。
功能复用是指:GPIO的引脚可以由CPU配置成不同的工作模式和工作电压,一共有八种工作模式:上拉输入、下拉输入、浮空输入、模拟输入、推挽输出、开漏输出、复用推挽输出、复用开漏输出。
举个例子,在输入功能下,CPU可以 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/posts/45361/" title="Vue3 + Fastapi 前后端框架搭建"><img class="post-bg" src="https://s21.ax1x.com/2025/01/22/pEAgVNF.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Vue3 + Fastapi 前后端框架搭建"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/45361/" title="Vue3 + Fastapi 前后端框架搭建">Vue3 + Fastapi 前后端框架搭建</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-01-22T09:48:32.000Z" title="发表于 2025-01-22 17:48:32">2025-01-22</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E5%85%A8%E6%A0%88%E5%BC%80%E5%8F%91/">全栈开发</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/%E8%AE%B0%E5%BF%86%E7%95%99%E5%AD%98/">记忆留存</a><span class="article-meta-link">•</span><a class="article-meta__tags" href="/tags/%E6%A8%A1%E6%9D%BF%E8%AE%B0%E5%BD%95/">模板记录</a></span></div><div class="content">写在开头时隔一年,重走前后端开发路,正好比较有时间,打算好好将开发过程中有价值的点记录一下,对自己也是一种记忆,也方便后来使用相同框架的人快速上手。
Vue3 前端介绍
截止 2025 年 1 月 22 日,Vuetify 3 框架在 github 上有着 40.2 k 的 Star,我在前几年完全没听过这个,可见其这几年发展之快。
笔者了解了一下发现其组件较为全面,社区也比较完善。并且完全开源
搭建从原生的 vite 搭建 vue3 前端我认为是吃力不讨好的,所以直接基于 Vuetify 3 框架的模板来作为前端的 base。
初始化模板非常简单,只需要 npm create vuetify@latest 即可,期间会有一些选项要求配置,例如:1234567891011success Installed "create-vuetify@x.x.x" with binaries: - create-vuetify? Project name (项目名): ❯ vuetify-project //生成应用程序的文件夹? Use TypeScript (使用 Ty ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/posts/60156/" title="基于ubuntu_base构建文件系统"><img class="post-bg" src="https://s21.ax1x.com/2025/01/08/pECmGH1.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="基于ubuntu_base构建文件系统"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/60156/" title="基于ubuntu_base构建文件系统">基于ubuntu_base构建文件系统</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-01-08T10:32:40.000Z" title="发表于 2025-01-08 18:32:40">2025-01-08</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Unix-Linux-%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0/">Unix & Linux 系统学习</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/%E8%AE%B0%E5%BF%86%E7%95%99%E5%AD%98/">记忆留存</a></span></div><div class="content">写在开头经常搞 Liunx 的人都知道,文件系统是 Liunx 不可或缺的一部分,难免会遇到需要自己定制一个文件系统的情形,本篇文章就是讲述了基于 ubuntu_base 来定制一个文件系统的方法。
环境准备
如果想要构建的文件系统和构建时所用的平台不一样,则需要创建一个模拟环境,创建也很简单,安装 qemu-user-static 即可。例如apt install qemu-user-static。
获取 ubuntu_base,直接从官网下载即可,如果访问异常就挂一个代理,至于版本选择,一般情况选新不选旧,但也要结合你的实际情况。
配置根文件系统以 ubuntu-base-24.04.1-base-arm64 为例:
解压根文件系统: tar -xvf ubuntu-base-24.04.1-base-arm64 -C 目标文件夹
为根文件系统配置网络: cp /etc/resolv.conf ubuntu-base-24.04.1-base-arm64/etc/resolv.conf
更换 apt 的软件源: sudo vim ubuntu-base-24.04.1-ba ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/posts/60155/" title="扩充ext4镜像的几种方法"><img class="post-bg" src="https://s21.ax1x.com/2025/01/07/pE9TKqP.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="扩充ext4镜像的几种方法"></a></div><div class="recent-post-info"><a class="article-title" href="/posts/60155/" title="扩充ext4镜像的几种方法">扩充ext4镜像的几种方法</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2025-01-07T10:32:40.000Z" title="发表于 2025-01-07 18:32:40">2025-01-07</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/Unix-Linux-%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0/">Unix & Linux 系统学习</a></span><span class="article-meta tags"><span class="article-meta-separator">|</span><i class="fas fa-tag"></i><a class="article-meta__tags" href="/tags/%E8%AE%B0%E5%BF%86%E7%95%99%E5%AD%98/">记忆留存</a></span></div><div class="content">写在开头使用 ext4 镜像作为文件系统时,如果需要向其中添加某些大型文件,则可能会遇到镜像空间不足的问题,本篇尝试对此给出几种解决方案。
无大小对齐要求的扩容如果对最终的大小没有对齐要求,则可以直接采用如下方式:
创建一个空的镜像,需求扩容多大创建多大:dd if=/dev/zero of=blank.ext4 bs=1M count=需求大小
将额外的空白文件追加到镜像文件中:cat blank.ext4 >> myimage.ext4
修复文件系统:e2fsck -f myimage.ext4
调整文件系统大小:resize2fs myimage.ext4
有大小对齐要求的扩容操作如果对最终的大小有对齐要求,则推荐创建一个指定大小的空的ext4新镜像,将旧镜像内容复制到新的镜像中:
创建一个空的镜像,需求扩容多大创建多大:dd if=/dev/zero of=myimage.ext4 bs=1M count=需求大小
在空镜像上建立ext4文件系统:mkfs.ext4 myimage.ext4
将空镜像、旧镜像挂载:1234mkdir myimagesudo m ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><span class="space">…</span><a class="page-number" href="/page/7/#content-inner">7</a><a class="extend next" rel="next" href="/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="/img/avatar.jpg" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">ForeverYolo</div><div class="author-info__description">这是ForeverYolo的博客网站</div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">70</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">29</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">10</div></a></div><a id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/ForeverYolo/"><i class="fab fa-github"></i><span>Follow Me</span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="https://github.com/ForeverYolo/" target="_blank" title=""><i class="fab fa-github"></i></a><a class="social-icon" href="tencent://message/?uin=2572131118&Site=Sambow&Menu=yes" target="_blank" title="QQ"><i class="iconfont icon-QQ"></i></a><a class="social-icon" href="mailto:2572131118@qq.com" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>公告</span></div><div class="announcement_content">北大 CS 就读、记录、分享</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/posts/38081/" title="Knowledge Graph Guided Retrieval Augmented Generation 论文阅读"><img src="https://s41.ax1x.com/2026/03/05/peCA6xA.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Knowledge Graph Guided Retrieval Augmented Generation 论文阅读"/></a><div class="content"><a class="title" href="/posts/38081/" title="Knowledge Graph Guided Retrieval Augmented Generation 论文阅读">Knowledge Graph Guided Retrieval Augmented Generation 论文阅读</a><time datetime="2026-03-05T13:58:27.000Z" title="发表于 2026-03-05 21:58:27">2026-03-05</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/57548/" title="Think On Graph 2.0:Deep And Faithful Large Language Model Reasoning With Knowledge Guided Retrieval Augmented Generation 论文阅读"><img src="https://s41.ax1x.com/2026/03/04/pe90WuR.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Think On Graph 2.0:Deep And Faithful Large Language Model Reasoning With Knowledge Guided Retrieval Augmented Generation 论文阅读"/></a><div class="content"><a class="title" href="/posts/57548/" title="Think On Graph 2.0:Deep And Faithful Large Language Model Reasoning With Knowledge Guided Retrieval Augmented Generation 论文阅读">Think On Graph 2.0:Deep And Faithful Large Language Model Reasoning With Knowledge Guided Retrieval Augmented Generation 论文阅读</a><time datetime="2026-03-04T12:04:28.000Z" title="发表于 2026-03-04 20:04:28">2026-03-04</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/23278/" title="Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer 论文阅读"><img src="https://s41.ax1x.com/2026/02/13/pZqrYXF.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer 论文阅读"/></a><div class="content"><a class="title" href="/posts/23278/" title="Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer 论文阅读">Structure Pretraining and Prompt Tuning for Knowledge Graph Transfer 论文阅读</a><time datetime="2026-02-13T05:13:36.000Z" title="发表于 2026-02-13 13:13:36">2026-02-13</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/40451/" title="MLP-多层感知机"><img src="https://s21.ax1x.com/2025/03/31/pEy9yEq.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="MLP-多层感知机"/></a><div class="content"><a class="title" href="/posts/40451/" title="MLP-多层感知机">MLP-多层感知机</a><time datetime="2025-03-31T12:57:35.000Z" title="发表于 2025-03-31 20:57:35">2025-03-31</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/posts/17937/" title="嵌入式平台快速开发-Tftp 服务器搭建与配置"><img src="https://s21.ax1x.com/2025/03/18/pEdouTK.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="嵌入式平台快速开发-Tftp 服务器搭建与配置"/></a><div class="content"><a class="title" href="/posts/17937/" title="嵌入式平台快速开发-Tftp 服务器搭建与配置">嵌入式平台快速开发-Tftp 服务器搭建与配置</a><time datetime="2025-03-18T12:04:36.000Z" title="发表于 2025-03-18 20:04:36">2025-03-18</time></div></div></div></div><div class="card-widget card-categories"><div class="item-headline">
<i class="fas fa-folder-open"></i>
<span>分类</span>
<a class="card-more-btn" href="/categories/" title="查看更多">
<i class="fas fa-angle-right"></i></a>
</div>
<ul class="card-category-list" id="aside-cat-list">
<li class="card-category-list-item "><a class="card-category-list-link" href="/categories/ARM-%E7%9B%B8%E5%85%B3/"><span class="card-category-list-name">ARM 相关</span><span class="card-category-list-count">6</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/FPGA/"><span class="card-category-list-name">FPGA</span><span class="card-category-list-count">9</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Hypervisor-%E5%AD%A6%E4%B9%A0/"><span class="card-category-list-name">Hypervisor 学习</span><span class="card-category-list-count">2</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Unix-Linux-%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0/"><span class="card-category-list-name">Unix & Linux 系统学习</span><span class="card-category-list-count">9</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/"><span class="card-category-list-name">人工智能</span><span class="card-category-list-count">4</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E5%85%A8%E6%A0%88%E5%BC%80%E5%8F%91/"><span class="card-category-list-name">全栈开发</span><span class="card-category-list-count">1</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E5%8C%97%E8%88%AA%E8%AF%BE%E7%A8%8B%E4%BD%93%E7%B3%BB/"><span class="card-category-list-name">北航课程体系</span><span class="card-category-list-count">29</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E7%AE%97%E6%B3%95/"><span class="card-category-list-name">算法</span><span class="card-category-list-count">6</span></a></li>
</ul></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/tags/ARM-%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/" style="font-size: 1.1em; color: #999">ARM 体系结构</a> <a href="/tags/ATF/" style="font-size: 1.1em; color: #999">ATF</a> <a href="/tags/AXI%E6%80%BB%E7%BA%BF/" style="font-size: 1.1em; color: #999">AXI总线</a> <a href="/tags/CPU%E6%8E%A5%E5%8F%A3/" style="font-size: 1.1em; color: #999">CPU接口</a> <a href="/tags/GIC/" style="font-size: 1.21em; color: #999ea4">GIC</a> <a href="/tags/Hyper-V/" style="font-size: 1.1em; color: #999">Hyper-V</a> <a href="/tags/Linux/" style="font-size: 1.21em; color: #999ea4">Linux</a> <a href="/tags/OS%E5%AD%A6%E4%B9%A0/" style="font-size: 1.39em; color: #99a4b4">OS学习</a> <a href="/tags/Transformer/" style="font-size: 1.16em; color: #999b9e">Transformer</a> <a href="/tags/Uboot/" style="font-size: 1.1em; color: #999">Uboot</a> <a href="/tags/Unix/" style="font-size: 1.16em; color: #999b9e">Unix</a> <a href="/tags/ZCU102/" style="font-size: 1.33em; color: #99a2af">ZCU102</a> <a href="/tags/%E5%88%86%E6%94%AF%E9%A2%84%E6%B5%8B/" style="font-size: 1.1em; color: #999">分支预测</a> <a href="/tags/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/" style="font-size: 1.1em; color: #999">动态规划</a> <a href="/tags/%E5%A4%9A%E5%B1%82%E6%84%9F%E7%9F%A5%E6%9C%BA/" style="font-size: 1.1em; color: #999">多层感知机</a> <a href="/tags/%E5%A5%87%E6%8A%80%E6%B7%AB%E5%B7%A7/" style="font-size: 1.1em; color: #999">奇技淫巧</a> <a href="/tags/%E6%95%B0%E8%AE%BA/" style="font-size: 1.1em; color: #999">数论</a> <a href="/tags/%E6%A8%A1%E6%9D%BF%E8%AE%B0%E5%BD%95/" style="font-size: 1.1em; color: #999">模板记录</a> <a href="/tags/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/" style="font-size: 1.16em; color: #999b9e">知识图谱</a> <a href="/tags/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/" style="font-size: 1.16em; color: #999b9e">算法学习</a> <a href="/tags/%E7%AE%97%E6%B3%95%E6%A8%A1%E6%9D%BF/" style="font-size: 1.1em; color: #999">算法模板</a> <a href="/tags/%E7%BC%96%E8%AF%91%E4%BC%98%E5%8C%96/" style="font-size: 1.1em; color: #999">编译优化</a> <a href="/tags/%E7%BC%96%E8%AF%91%E6%80%BB%E7%BB%93/" style="font-size: 1.1em; color: #999">编译总结</a> <a href="/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA%E9%85%8D%E7%BD%AE/" style="font-size: 1.1em; color: #999">虚拟机配置</a> <a href="/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90/" style="font-size: 1.44em; color: #99a7ba">计算机组成</a> <a href="/tags/%E8%AE%B0%E5%BF%86%E7%95%99%E5%AD%98/" style="font-size: 1.5em; color: #99a9bf">记忆留存</a> <a href="/tags/%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0/" style="font-size: 1.21em; color: #999ea4">语言学习</a> <a href="/tags/%E8%BF%9B%E9%98%B6%E8%B0%83%E8%AF%95/" style="font-size: 1.1em; color: #999">进阶调试</a> <a href="/tags/%E9%AB%98%E7%BA%A7%E8%AF%AD%E8%A8%80/" style="font-size: 1.27em; color: #99a0a9">高级语言</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span><a class="card-more-btn" href="/archives/" title="查看更多">
<i class="fas fa-angle-right"></i></a></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/03/"><span class="card-archive-list-date">三月 2026</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/02/"><span class="card-archive-list-date">二月 2026</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/03/"><span class="card-archive-list-date">三月 2025</span><span class="card-archive-list-count">4</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/01/"><span class="card-archive-list-date">一月 2025</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/12/"><span class="card-archive-list-date">十二月 2024</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/11/"><span class="card-archive-list-date">十一月 2024</span><span class="card-archive-list-count">4</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/10/"><span class="card-archive-list-date">十月 2024</span><span class="card-archive-list-count">4</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/09/"><span class="card-archive-list-date">九月 2024</span><span class="card-archive-list-count">1</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">70</div></div><div class="webinfo-item"><div class="item-name">本站总字数 :</div><div class="item-count">162.6k</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2026-03-05T14:13:03.984Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">©2020 - 2026 By ForeverYolo</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><span class="scroll-percent"></span><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><span id="loading-status"></span><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="is-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span> 数据库加载中</span></div><div class="search-wrap"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div><hr/><div id="local-search-results"></div></div></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><script src="/js/search/local-search.js"></script><div class="js-pjax"><script>function subtitleType () {
if (true) {
window.typed = new Typed("#subtitle", {
strings: ["Always Keep Going"],
startDelay: 300,
typeSpeed: 150,
loop: true,
backSpeed: 50
})
} else {
document.getElementById("subtitle").innerHTML = 'Always Keep Going'
}
}
if (true) {
if (typeof Typed === 'function') {
subtitleType()
} else {
getScript('https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js').then(subtitleType)
}
} else {
subtitleType()
}</script></div><script src="/js/jquery.js"></script><script src="/js/foot.js"></script><canvas class="fireworks" mobile="true"></canvas><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/fireworks.min.js"></script><script defer="defer" id="fluttering_ribbon" mobile="true" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-fluttering-ribbon.min.js"></script><script id="canvas_nest" defer="defer" color="0,0,255" opacity="0.8" zIndex="-1" count="150" mobile="true" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-nest.min.js"></script><script id="click-show-text" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/click-show-text.min.js" data-mobile="true" data-text="青青子衿,悠悠我心。,纵我不往,子宁不嗣音?,青青子佩,悠悠我思。,纵我不往,子宁不来?,挑兮达兮,在城阙兮。,一日不见,如三月兮。,野有蔓草,零露漙兮。,有美一人,清扬婉兮。,邂逅相遇,适我愿兮。,野有蔓草,零露瀼瀼。,有美一人,婉如清扬。,邂逅相遇,与子偕臧。,没啦!别点啦!要循环啦!" data-fontsize="20px" data-random="false" async="async"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>