-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
341 lines (286 loc) · 45.6 KB
/
index.html
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
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
<!DOCTYPE html><html lang="en" 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,viewport-fit=cover"><title>Val-Blog - 欢迎来到val的博客!</title><meta name="author" content="Val,[email protected], [email protected]"><meta name="copyright" content="Val"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta property="og:type" content="website">
<meta property="og:title" content="Val-Blog">
<meta property="og:url" content="https://val213.github.io/index.html">
<meta property="og:site_name" content="Val-Blog">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://github.com/val213/image/blob/main/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230630230143.jpg?raw=true">
<meta property="article:author" content="Val">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://github.com/val213/image/blob/main/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230630230143.jpg?raw=true"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="https://val213.github.io/index.html"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//fonts.googleapis.com" crossorigin=""/><link rel="preconnect" href="//busuanzi.ibruce.info"/><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/fancybox.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium+Web&display=swap" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: undefined,
translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"繁","msgToSimplifiedChinese":"簡"},
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: 'Copy successfully',
error: 'Copy error',
noSupport: 'The browser does not support'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '',
dateSuffix: {
just: 'Just',
min: 'minutes ago',
hour: 'hours ago',
day: 'days ago',
month: 'months ago'
},
copyright: {"limitCount":50,"languages":{"author":"Author: Val","link":"Link: ","source":"Source: Val-Blog","info":"Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source."}},
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: true,
},
autoDarkmode: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'Val-Blog',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2024-12-28 02:28:47'
}</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.getCSS = (url,id = false) => new Promise((resolve, reject) => {
const link = document.createElement('link')
link.rel = 'stylesheet'
link.href = url
if (id) link.id = id
link.onerror = reject
link.onload = link.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
link.onload = link.onreadystatechange = null
resolve()
}
document.head.appendChild(link)
})
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><meta name="generator" content="Hexo 6.3.0"></head><body><div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div class="spinner-box"><div class="configure-border-1"><div class="configure-core"></div></div><div class="configure-border-2"><div class="configure-core"></div></div><div class="loading-word">Loading...</div></div></div><script>(()=>{
const $loadingBox = document.getElementById('loading-box')
const $body = document.body
const preloader = {
endLoading: () => {
$body.style.overflow = ''
$loadingBox.classList.add('loaded')
},
initLoading: () => {
$body.style.overflow = 'hidden'
$loadingBox.classList.remove('loaded')
}
}
preloader.initLoading()
window.addEventListener('load',() => { preloader.endLoading() })
if (false) {
document.addEventListener('pjax:send', () => { preloader.initLoading() })
document.addEventListener('pjax:complete', () => { preloader.endLoading() })
}
})()</script><div id="web_bg"></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="https://github.com/val213/image/blob/main/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230630230143.jpg?raw=true" 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">Articles</div><div class="length-num">141</div></a><a href="/tags/"><div class="headline">Tags</div><div class="length-num">110</div></a><a href="/categories/"><div class="headline">Categories</div><div class="length-num">12</div></a></div><hr class="custom-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 fa fa-heartbeat"></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="/Gallery/"><i class="fa-fw fas fa-images"></i><span> 照片</span></a></li><li><a class="site-page child" href="/movies/"><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> 友链</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://github.com/val213/image/blob/main/%E6%B2%99%E9%9D%A21.JPG?raw=true')"><nav id="nav"><span id="blog-info"><a href="/" title="Val-Blog"><span class="site-name">Val-Blog</span></a></span><div id="menus"><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 fa fa-heartbeat"></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="/Gallery/"><i class="fa-fw fas fa-images"></i><span> 照片</span></a></li><li><a class="site-page child" href="/movies/"><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> 友链</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" href="javascript:void(0);"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">Val-Blog</h1><div id="site-subtitle"><span id="subtitle"></span></div><div id="site_social_icons"><a class="social-icon" href="https://github.com/val213" target="_blank" title="Github"><i class="fab fa-github" style="color: #24292e;"></i></a><a class="social-icon" href="mailto:[email protected]" target="_blank" title="Email"><i class="fas fa-envelope" style="color: #4a7dbe;"></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="/2024/12/22/%E5%BC%80%E5%8F%91/%E4%B8%AD%E9%97%B4%E4%BB%B6/minikube/" title="minikube"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="minikube"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/12/22/%E5%BC%80%E5%8F%91/%E4%B8%AD%E9%97%B4%E4%BB%B6/minikube/" title="minikube">minikube</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-12-22T06:53:52.213Z" title="Created 2024-12-22 14:53:52">2024-12-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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">minikube部署所需要的文件:
deployment.yaml
service.yaml
configmap.yaml
</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2024/12/12/%E5%BC%80%E5%8F%91/cpp/protobuf/" title="Protobuf"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Protobuf"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/12/12/%E5%BC%80%E5%8F%91/cpp/protobuf/" title="Protobuf">Protobuf</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-12-12T11:54:32.065Z" title="Created 2024-12-12 19:54:32">2024-12-12</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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">什么是 Protobuf?Protobuf 是 Google 开发的一种 高效的数据序列化协议,全称是 Protocol Buffers,它用来定义和传输结构化数据。它特别适合在不同系统之间进行高性能的数据交换。相比传统的数据格式(如 XML 和 JSON),Protobuf 更快、更小、更高效。
1. 为什么需要 Protobuf?问题:效率与标准化在分布式系统中,不同服务之间需要交换大量的数据。传统方法有以下局限:
JSON/XML:文本格式,臃肿且慢
例如,{"name":"Alice", "age":25},需要重复字段名(如 name 和 age),导致传输数据量大。
XML 更严重,因为还需额外的标签嵌套结构(<name>Alice</name>)。
需要强类型定义
数据格式必须明确定义,以防止发送方和接收方的理解不一致(例如数据类型、字段顺序)。
跨语言支持
不同系统可能用不同编程语言,格式需要能被所有语言解析。
Protobuf ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2024/12/12/%E5%BC%80%E5%8F%91/cpp/style-guide/" title="Google C++ Style Guide"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Google C++ Style Guide"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/12/12/%E5%BC%80%E5%8F%91/cpp/style-guide/" title="Google C++ Style Guide">Google C++ Style Guide</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-12-12T07:28:41.150Z" title="Created 2024-12-12 15:28:41">2024-12-12</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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">Google C++ Style Guidetable of contents
Section
Subsections
C++ Version
Header Files
Self-contained Headers, The #define Guard, Include What You Use, Forward Declarations, Inline Functions, Names and Order of Includes
Scoping
Namespaces, Internal Linkage, Nonmember, Static Member, and Global Functions, Local Variables, Static and Global Variables, thread_local Variables
Classes
Doing Work in Constructors, Implicit Conversions, Copyable and Movable Types, Structs vs. Classes, Struct ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2024/12/12/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/leveldb/" title="google/LevelDB"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="google/LevelDB"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/12/12/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/leveldb/" title="google/LevelDB">google/LevelDB</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-12-11T16:36:12.083Z" title="Created 2024-12-12 00:36:12">2024-12-12</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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">Intro阅读和学习 LevelDB 源码是一项极具挑战性的任务,但也非常有意义。LevelDB 是 Google 开发的一款高效、轻量级的键值存储库,其核心基于 LSM 树(Log-Structured Merge Tree) 的设计。学习 LevelDB 源码的过程不仅有助于理解数据库底层存储的实现,还可以提高对系统设计和高性能编程的理解。
1. 理解 LevelDB 的基础概念在直接阅读源码前,先对 LevelDB 的核心原理有一个较深入的理解。包括:
LSM 树:LevelDB 的核心数据结构。
数据分为内存(MemTable)和磁盘(SSTable)两层。
数据写入先进入内存表,达到一定大小后转化为磁盘文件(SSTable)。
磁盘文件会进行后台合并(Compaction)以优化查询性能。
主要概念:
MemTable:存储在内存中的数据,基于跳表(SkipList)实现。
Immutable MemTable:达到大小限制后,转化为只读内存表,等待刷入磁盘。
SSTable:存储在磁盘上的有序不可变文件,支持高效的范围查询。
Write-Ahead Log (W ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2024/12/12/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/brpc/" title="apache/brpc"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="apache/brpc"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/12/12/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/brpc/" title="apache/brpc">apache/brpc</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-12-11T16:36:05.118Z" title="Created 2024-12-12 00:36:05">2024-12-12</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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">https://github.com/apache/brpc
bvarbthreadprotobuf</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2024/12/10/%E5%BC%80%E5%8F%91/rust/diesel/" title="【Rust crate】 Diesel"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="【Rust crate】 Diesel"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/12/10/%E5%BC%80%E5%8F%91/rust/diesel/" title="【Rust crate】 Diesel">【Rust crate】 Diesel</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-12-10T02:51:02.101Z" title="Created 2024-12-10 10:51:02">2024-12-10</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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">all-about-inserts
Diesel Migration</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2024/12/04/%E8%BF%90%E7%BB%B4/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/" title="内网穿透理论与实践"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="内网穿透理论与实践"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/12/04/%E8%BF%90%E7%BB%B4/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/" title="内网穿透理论与实践">内网穿透理论与实践</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-12-03T17:11:12.792Z" title="Created 2024-12-04 01:11:12">2024-12-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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">内网穿透理论与实践正向代理与反向代理代理就相当于是中介。正常来说客户端将请求发送给服务器端,服务器端收到请求后将响应结果返回给客户端。设置代理后,请求和响应都将经过代理到达彼此。当客户端发送请求时,代理对其进行拦截,再由代理将其发送给服务器端。服务器端收到请求后,代理再对响应结果进行拦截,再由代理返回给客户端。
正向代理和反向代理的区别在于代理的对象不同。正向代理代理的是客户端,而反向代理代理的是服务器端。从用户角度来说,其根本区别在于正向代理对客户端是透明的,即客户端设置的。而反向代理对服务器端是透明的,即服务器端设置的。
正向代理可以隐藏用户的信息,并能够将其作为跳板访问我们无法访问的资源,如翻墙。反向代理可以隐藏服务器的信息,保障了内网的安全,同时能够用来实现负载均衡。
NAT静态 NAT静态 NAT 指的是将一个内部 IP 地址映射到一个外部 IP 地址。静态 NAT 通常用于服务器,因为服务器需要一个固定的 IP 地址。
静态 NAT 通常需要在路由器上手动配置,将一个内部 IP 地址映射到一个外部 IP 地址。这样,当外部用户访问外部 IP 地址时,路由器会将请求转发给内部 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2024/11/27/%E5%A4%A7%E4%B8%89%E8%AF%BE%E7%A8%8B/%E3%80%90%E5%A4%A7%E4%B8%89%E4%B8%8A%E3%80%91%E5%B7%A5%E4%B8%9A%E6%95%B0%E6%8D%AE/" title="【大三上】工业数据"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="【大三上】工业数据"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/11/27/%E5%A4%A7%E4%B8%89%E8%AF%BE%E7%A8%8B/%E3%80%90%E5%A4%A7%E4%B8%89%E4%B8%8A%E3%80%91%E5%B7%A5%E4%B8%9A%E6%95%B0%E6%8D%AE/" title="【大三上】工业数据">【大三上】工业数据</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-11-27T06:13:09.184Z" title="Created 2024-11-27 14:13:09">2024-11-27</time></span></div><div class="content">HCCSA-iDME xMD-F 认证考试
工业软件产业及第一代工业软件体系工业软件导论工业软件的四梁八柱
研发设计类软件是四梁之一
四梁包括四大类核心的工业软件研发设计软件是工业软件的皇冠
凝结了制造业壁垒最高的多学科知识和机理CAD——Computer Aided Design 计算机辅助设计
CAD 是利用计算机进行工程涉及的研发设计类工业软件3D CAD:技术壁垒高,存在卡脖子风险CAE:Computer Aided Engineering 计算机辅助工程(仿真)
CAE 解决工业产品功能性能和机电热控等专业功能性能模拟仿真分析问题CAE 仿真:认识世界的第三范式
CAE 软件仿真方法是与理论方法、实验方法并列的人类认识世界的第三大方法CAE 典型学科及工具软件:涉及学科广EDA——Electronic Design Automation 电子设计自动化
EDA 解决了超大规模集成电路(VLSI)芯片的功能设计、综合、验证、物理设计(包括布线、发布、版图、设计规则检查等)等设计问题,相当于电子设计领域CAD、CAE、CAM的综合智能制造:生产数字孪生、资源(人、机、料)智能A ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2024/11/25/%E5%BC%80%E5%8F%91/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/dtm/" title="dtm"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="dtm"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/11/25/%E5%BC%80%E5%8F%91/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/dtm/" title="dtm">dtm</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-11-25T07:11:10.400Z" title="Created 2024-11-25 15:11:10">2024-11-25</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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">DTM 分布式事务管理器https://dtm.pub/
qs(Quick Start)二阶段消息
二阶段消息,可以完美替代现有的事务消息或本地消息表架构。无论从复杂度、便利性、性能,还是代码量,新架构都完胜现有架构方案,是这个领域的革命性架构。
二阶段消息是 dtm 首创的事务模式,用于替换本地事务表和事务消息这两种现有的方案。它能够保证本地事务的提交和全局事务提交是“原子的”,适合解决不需要回滚的分布式事务场景。下面我们来看看二阶段消息,如何解决这个业务场景的问题。
http_msg_doAndCommit 流程分析定义和实现与分布式事务相关的业务逻辑和数据库操作data.go 的主要作用是定义和实现与分布式事务相关的业务逻辑和数据库操作。在这里,我们定义了一个名为 SagaAdjustBalance 的函数,用于调整用户的余额。在这个函数中,我们首先判断事务的执行结果,如果事务执行失败,则返回错误;否则,我们执行核心的业务逻辑,即调整用户的余额。123456789// SagaAdjustBalance 1func SagaAdjustBalance(db dtmcli.DB, ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2024/11/23/%E5%BC%80%E5%8F%91/%E4%B8%AD%E9%97%B4%E4%BB%B6/redis/" title="Redis"><img class="post-bg" src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Redis"></a></div><div class="recent-post-info"><a class="article-title" href="/2024/11/23/%E5%BC%80%E5%8F%91/%E4%B8%AD%E9%97%B4%E4%BB%B6/redis/" title="Redis">Redis</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2024-11-23T03:33:20.230Z" title="Created 2024-11-23 11:33:20">2024-11-23</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/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/">技术分享</a></span></div><div class="content">Redis 是什么?架构是怎么样的?
Redis 基础认知redis 的数据类型redis 支持五种数据类型:
String 字符串
Hash 哈希
List 列表
Set 集合
Zset 有序集合
还有:
HyperLogLog:基数统计
Geo:地理位置
Pub/Sub:发布订阅
还有 Redis Module:
RedisBloom:布隆过滤器
RedisSearch:全文搜索
Redis-ML:机器学习Redis 和 Memcached 区别共同点
基于内存的数据库,都当作缓存来使用
都有过期策略
两者的性能都非常高不同
Redis 支持更多的数据类型
Redis 支持持久化,Memcached 不支持
Redis 原生支持集群模式,Memcached 需要依赖客户端来实现往集群中分片写入数据
Redis 支持发布订阅模型、Lua 脚本、事务等功能
为什么选择 Redis
高性能
高并发
Redis 是单进程Redis 是单进程的,这是 Redis 的特点之一。Redis 采用 IO 多路复用模型,通过监听多个文件描述符,来处理多个客户端的请求。Redis 通过非 ...</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/15/#content-inner">15</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="https://github.com/val213/image/blob/main/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20230630230143.jpg?raw=true" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">Val</div><div class="author-info__description"></div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">Articles</div><div class="length-num">141</div></a><a href="/tags/"><div class="headline">Tags</div><div class="length-num">110</div></a><a href="/categories/"><div class="headline">Categories</div><div class="length-num">12</div></a></div><a id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/val213"><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/val213" target="_blank" title="Github"><i class="fab fa-github" style="color: #24292e;"></i></a><a class="social-icon" href="mailto:[email protected]" target="_blank" title="Email"><i class="fas fa-envelope" style="color: #4a7dbe;"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>Announcement</span></div><div class="announcement_content">记录跬步 e/acc</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>Recent Post</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/2024/12/22/%E5%BC%80%E5%8F%91/%E4%B8%AD%E9%97%B4%E4%BB%B6/minikube/" title="minikube"><img src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="minikube"/></a><div class="content"><a class="title" href="/2024/12/22/%E5%BC%80%E5%8F%91/%E4%B8%AD%E9%97%B4%E4%BB%B6/minikube/" title="minikube">minikube</a><time datetime="2024-12-22T06:53:52.213Z" title="Created 2024-12-22 14:53:52">2024-12-22</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2024/12/12/%E5%BC%80%E5%8F%91/cpp/protobuf/" title="Protobuf"><img src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Protobuf"/></a><div class="content"><a class="title" href="/2024/12/12/%E5%BC%80%E5%8F%91/cpp/protobuf/" title="Protobuf">Protobuf</a><time datetime="2024-12-12T11:54:32.065Z" title="Created 2024-12-12 19:54:32">2024-12-12</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2024/12/12/%E5%BC%80%E5%8F%91/cpp/style-guide/" title="Google C++ Style Guide"><img src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Google C++ Style Guide"/></a><div class="content"><a class="title" href="/2024/12/12/%E5%BC%80%E5%8F%91/cpp/style-guide/" title="Google C++ Style Guide">Google C++ Style Guide</a><time datetime="2024-12-12T07:28:41.150Z" title="Created 2024-12-12 15:28:41">2024-12-12</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2024/12/12/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/leveldb/" title="google/LevelDB"><img src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="google/LevelDB"/></a><div class="content"><a class="title" href="/2024/12/12/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/leveldb/" title="google/LevelDB">google/LevelDB</a><time datetime="2024-12-11T16:36:12.083Z" title="Created 2024-12-12 00:36:12">2024-12-12</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2024/12/12/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/brpc/" title="apache/brpc"><img src="https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="apache/brpc"/></a><div class="content"><a class="title" href="/2024/12/12/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/brpc/" title="apache/brpc">apache/brpc</a><time datetime="2024-12-11T16:36:05.118Z" title="Created 2024-12-12 00:36:05">2024-12-12</time></div></div></div></div><div class="card-widget card-categories"><div class="item-headline">
<i class="fas fa-folder-open"></i>
<span>Categories</span>
<a class="card-more-btn" href="/categories/" title="More">
<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/AI/"><span class="card-category-list-name">AI</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/DragonOS/"><span class="card-category-list-name">DragonOS</span><span class="card-category-list-count">15</span></a><ul class="card-category-list child"><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/DragonOS/%E4%BC%9A%E8%AE%AE%E8%AE%B0%E5%BD%95/"><span class="card-category-list-name">会议记录</span><span class="card-category-list-count">1</span></a></li></ul></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E4%BA%BA%E6%96%87%E5%88%86%E4%BA%AB/"><span class="card-category-list-name">人文分享</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/%E5%85%B4%E8%B6%A3%E5%88%86%E4%BA%AB/"><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%A4%8D%E4%B9%A0%E7%AC%94%E8%AE%B0/"><span class="card-category-list-name">复习笔记</span><span class="card-category-list-count">23</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%89%BE%E4%B8%AA%E7%8F%AD%E4%B8%8A%E5%90%A7/"><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/%E6%89%BE%E4%B8%AA%E7%8F%AD%E4%B8%8A%E5%95%A6/"><span class="card-category-list-name">找个班上啦</span><span class="card-category-list-count">1</span></a></li>
</ul></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>Tags</span></div><div class="card-tag-cloud"><a href="/tags/%E5%8E%9F%E5%88%9B/" style="font-size: 1.35em; color: rgb(21, 20, 7)">原创</a><a href="/tags/%E6%95%B0%E5%AD%97%E9%80%BB%E8%BE%91/" style="font-size: 1.15em; color: rgb(37, 32, 2)">数字逻辑</a><a href="/tags/Data-structure/" style="font-size: 1.45em; color: rgb(172, 184, 73)">Data structure</a><a href="/tags/Hash-Table/" style="font-size: 1.15em; color: rgb(121, 183, 176)">Hash Table</a><a href="/tags/IBMclub/" style="font-size: 1.25em; color: rgb(130, 67, 199)">IBMclub</a><a href="/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" style="font-size: 1.25em; color: rgb(177, 145, 36)">设计模式</a><a href="/tags/MVC/" style="font-size: 1.15em; color: rgb(157, 186, 8)">MVC</a><a href="/tags/observer/" style="font-size: 1.15em; color: rgb(105, 25, 189)">observer</a><a href="/tags/CV/" style="font-size: 1.15em; color: rgb(196, 89, 105)">CV</a><a href="/tags/%E6%89%BE%E4%B8%AA%E7%8F%AD%E4%B8%8A%E5%95%A6/" style="font-size: 1.15em; color: rgb(85, 170, 5)">找个班上啦</a><a href="/tags/Singapore/" style="font-size: 1.15em; color: rgb(103, 170, 54)">Singapore</a><a href="/tags/%E5%A4%A7%E4%B8%80%E6%9A%91%E5%81%87/" style="font-size: 1.15em; color: rgb(27, 15, 70)">大一暑假</a><a href="/tags/Trie/" style="font-size: 1.15em; color: rgb(65, 193, 128)">Trie</a><a href="/tags/Linux/" style="font-size: 1.4em; color: rgb(9, 137, 27)">Linux</a><a href="/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/" style="font-size: 1.3em; color: rgb(19, 133, 193)">虚拟机</a><a href="/tags/%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6/" style="font-size: 1.15em; color: rgb(191, 111, 101)">开源软件</a><a href="/tags/%E5%A4%9A%E5%AA%92%E4%BD%93%E5%A4%84%E7%90%86/" style="font-size: 1.15em; color: rgb(22, 195, 147)">多媒体处理</a><a href="/tags/machine-learning/" style="font-size: 1.15em; color: rgb(164, 15, 98)">machine learning</a><a href="/tags/%E5%8F%AF%E8%A7%A3%E9%87%8A%E6%80%A7/" style="font-size: 1.15em; color: rgb(57, 166, 55)">可解释性</a><a href="/tags/AI%E7%BB%98%E7%94%BB/" style="font-size: 1.2em; color: rgb(88, 1, 190)">AI绘画</a><a href="/tags/web%E5%BC%80%E5%8F%91/" style="font-size: 1.15em; color: rgb(85, 91, 66)">web开发</a><a href="/tags/data-structure/" style="font-size: 1.25em; color: rgb(126, 57, 180)">data structure</a><a href="/tags/Java/" style="font-size: 1.25em; color: rgb(123, 176, 13)">Java</a><a href="/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/" style="font-size: 1.25em; color: rgb(75, 155, 66)">计算机组成原理</a><a href="/tags/%E8%BD%AC%E8%BD%BD/" style="font-size: 1.15em; color: rgb(124, 77, 6)">转载</a><a href="/tags/%E5%AD%A4%E7%8B%AC/" style="font-size: 1.2em; color: rgb(168, 177, 135)">孤独</a><a href="/tags/%E5%93%B2%E6%80%9D/" style="font-size: 1.2em; color: rgb(4, 32, 155)">哲思</a><a href="/tags/%E6%A0%91/" style="font-size: 1.3em; color: rgb(160, 200, 111)">树</a><a href="/tags/%E8%A1%A8/" style="font-size: 1.15em; color: rgb(71, 133, 187)">表</a><a href="/tags/%E6%A0%88/" style="font-size: 1.15em; color: rgb(60, 118, 197)">栈</a><a href="/tags/%E9%98%9F%E5%88%97/" style="font-size: 1.15em; color: rgb(172, 78, 3)">队列</a><a href="/tags/%E5%A4%A7%E5%AD%A6%E7%89%A9%E7%90%86/" style="font-size: 1.15em; color: rgb(28, 16, 89)">大学物理</a><a href="/tags/%E7%94%B5%E5%B7%A5%E5%AD%A6/" style="font-size: 1.15em; color: rgb(29, 187, 101)">电工学</a><a href="/tags/%E5%BD%B1%E8%AF%84/" style="font-size: 1.15em; color: rgb(55, 195, 11)">影评</a><a href="/tags/%E9%9A%8F%E7%AC%94/" style="font-size: 1.15em; color: rgb(81, 152, 181)">随笔</a><a href="/tags/%E7%A6%BB%E6%95%A3%E6%95%B0%E5%AD%A6/" style="font-size: 1.15em; color: rgb(82, 50, 5)">离散数学</a><a href="/tags/%E4%BC%98%E5%85%88%E9%98%9F%E5%88%97/" style="font-size: 1.15em; color: rgb(15, 130, 114)">优先队列</a><a href="/tags/graph/" style="font-size: 1.15em; color: rgb(110, 155, 59)">graph</a><a href="/tags/disjoint-set/" style="font-size: 1.15em; color: rgb(101, 191, 98)">disjoint set</a><a href="/tags/sorting/" style="font-size: 1.15em; color: rgb(17, 161, 153)">sorting</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>Archives</span><a class="card-more-btn" href="/archives/" title="More">
<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/2024/12/"><span class="card-archive-list-date">December 2024</span><span class="card-archive-list-count">7</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">November 2024</span><span class="card-archive-list-count">10</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">October 2024</span><span class="card-archive-list-count">11</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">September 2024</span><span class="card-archive-list-count">7</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/08/"><span class="card-archive-list-date">August 2024</span><span class="card-archive-list-count">14</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/07/"><span class="card-archive-list-date">July 2024</span><span class="card-archive-list-count">5</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2024/06/"><span class="card-archive-list-date">June 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/05/"><span class="card-archive-list-date">May 2024</span><span class="card-archive-list-count">5</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>Info</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">Article :</div><div class="item-count">141</div></div><div class="webinfo-item"><div class="item-name">UV :</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">PV :</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">Last Push :</div><div class="item-count" id="last-push-date" data-lastPushDate="2024-12-27T18:28:46.389Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer" style="background-image: url('https://github.com/val213/image/blob/main/%E6%B2%99%E9%9D%A21.JPG?raw=true')"><div id="footer-wrap"><div class="copyright">©2023 - 2024 By Val</div><div class="framework-info"><span>Framework </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>Theme </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div><div class="footer_custom_text">纯粹的心,感受意义不明</div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="translateLink" type="button" title="Switch Between Traditional Chinese And Simplified Chinese">繁</button><button id="darkmode" type="button" title="Switch Between Light And Dark Mode"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="Toggle between single-column and double-column"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="Setting"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="Back To Top"><span class="scroll-percent"></span><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="/js/tw_cn.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox/fancybox.umd.min.js"></script><div class="js-pjax"><script>window.typedJSFn = {
init: (str) => {
window.typed = new Typed('#subtitle', Object.assign({
strings: str,
startDelay: 300,
typeSpeed: 150,
loop: true,
backSpeed: 50,
}, null))
},
run: (subtitleType) => {
if (true) {
if (typeof Typed === 'function') {
subtitleType()
} else {
getScript('https://cdn.jsdelivr.net/npm/typed.js/dist/typed.umd.min.js').then(subtitleType)
}
} else {
subtitleType()
}
}
}
</script><script>function subtitleType () {
if (true) {
typedJSFn.init(["打个响指吧","海浪尽头的你啊,到底何时归来","而我还是想去跨越你,那条遥远却又近在咫尺的河","Why so serious?","To infinity and beyond!","You talking to me?","You jump I jump."])
} else {
document.getElementById("subtitle").textContent = "打个响指吧"
}
}
typedJSFn.run(subtitleType)</script></div><canvas class="fireworks" mobile="true"></canvas><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/fireworks.min.js"></script><script defer="defer" id="ribbon" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-ribbon.min.js" size="150" alpha="0.6" zIndex="-1" mobile="true" data-click="true"></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 src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/activate-power-mode.min.js"></script><script>POWERMODE.colorful = true;
POWERMODE.shake = true;
POWERMODE.mobile = true;
document.body.addEventListener('input', POWERMODE);
</script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>