-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
282 lines (248 loc) · 45.4 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
<!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>J's Blog</title><meta name="author" content="Tiam"><meta name="copyright" content="Tiam"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="记录自己的一些笔记">
<meta property="og:type" content="website">
<meta property="og:title" content="J's Blog">
<meta property="og:url" content="https://www.yujing.icu/index.html">
<meta property="og:site_name" content="J's Blog">
<meta property="og:description" content="记录自己的一些笔记">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://qiniu.yujing.icu/headImage/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20201030005750.jpg">
<meta property="article:author" content="Tiam">
<meta property="article:tag" content="Tiam">
<meta property="article:tag" content="J's Blog">
<meta property="article:tag" content="Blog">
<meta property="article:tag" content="yujing">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://qiniu.yujing.icu/headImage/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20201030005750.jpg"><link rel="shortcut icon" href="https://qiniu.yujing.icu/headImage/icon.png"><link rel="canonical" href="https://www.yujing.icu/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><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/node-snackbar/dist/snackbar.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":200},
copy: {
success: '复制成功',
error: '复制错误',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '天',
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#49b1f5","bgDark":"#2d3035","position":"bottom-left"},
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: true,
isAnchor: true
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'J\'s Blog',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2024-05-04 22:29:18'
}</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/universe.css"><link rel="stylesheet" href="/css/background.css"><!-- hexo injector head_end start --><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/font-awesome-animation.min.css" media="defer" onload="this.media='all'"><link rel="stylesheet" href="https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/tag_plugins.css" media="defer" onload="this.media='all'"><script src="https://npm.elemecdn.com/hexo-butterfly-tag-plugins-plus@latest/lib/assets/carousel-touch.js"></script><!-- 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= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/headImage/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20201030005750.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">59</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">75</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">25</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 group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa fa-graduation-cap"></i><span> 博文</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/categories/"><i class="fa-fw fa fa-archive"></i><span> 分类</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fa fa-tags"></i><span> 标签</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw fa fa-folder-open"></i><span> 归档</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/photos/"><i class="fa-fw fa fa-camera-retro"></i><span> 相册</span></a></div><div class="menus_item"><a class="site-page" href="/links/"><i class="fa-fw fa fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/comment/"><i class="fa-fw fa fa-paper-plane"></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('http://qiniu.yujing.icu/katong/index.jpg')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">J's Blog</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 group" href="javascript:void(0);" rel="external nofollow noreferrer"><i class="fa-fw fa fa-graduation-cap"></i><span> 博文</span><i class="fas fa-chevron-down"></i></a><ul class="menus_item_child"><li><a class="site-page child" href="/categories/"><i class="fa-fw fa fa-archive"></i><span> 分类</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fa fa-tags"></i><span> 标签</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw fa fa-folder-open"></i><span> 归档</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/photos/"><i class="fa-fw fa fa-camera-retro"></i><span> 相册</span></a></div><div class="menus_item"><a class="site-page" href="/links/"><i class="fa-fw fa fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/comment/"><i class="fa-fw fa fa-paper-plane"></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"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">J's Blog</h1><div id="site-subtitle"><span id="subtitle"></span></div><div id="site_social_icons"><a class="social-icon" href="https://githubfast.com/tiam-bloom" rel="external nofollow noreferrer" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="https://blog.csdn.net/qq_50969362" rel="external nofollow noreferrer" target="_blank" title="CSDN"><i class="fa fa-book-open"></i></a><a class="social-icon" href="mailto:[email protected]" rel="external nofollow noreferrer" target="_blank" title="Email"><i class="fas fa-envelope-open-text"></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="/artical/4966f9af.html" title="protobuf协议逆向解析"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/katong/201941-16228091810a47.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="protobuf协议逆向解析"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/4966f9af.html" 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">发表于</span><time datetime="2024-05-04T14:26:14.000Z" title="发表于 2024-05-04 22:26:14">2024-05-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/Python/">Python</a></span></div><div class="content">protobuf协议逆向解析
地址:
1aHR0cHM6Ly93d3cudGlrdG9rLmNvbS9tZXNzYWdlcz9sYW5nPWVu
找到接口/v2/message/get_by_user_init
如图所示, 参数和响应并不是可直接使用的, 虽然部分内容可读。
跟栈到这里, 找到封包前的数据
打上断点, 查看变量t就是请求参数, 经过encode封包为二进制数据后 发送请求
把变量对象t复制到一个json格式化的地方, 方便后续查看
12345678910// 接收一个 ArrayBuffer, 转为base64字符串window.arrayBufferToBase64 = function(buffer) { let binary = ''; const bytes = new Uint8Array(buffer); const len = bytes.byteLength; for (let i = 0; i < len; i++) { binary += String.fromCharCode(by ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/artical/26023127.html" title="Qexo"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/image/nice/ali.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Qexo"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/26023127.html" title="Qexo">Qexo</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="2023-11-24T01:00:24.495Z" title="发表于 2023-11-24 09:00:24">2023-11-24</time></span></div><div class="content">这是一篇在Qexo中写的新文章
</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/artical/cc502626.html" title="原型与继承"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/img/2023/2.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="原型与继承"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/cc502626.html" title="原型与继承">原型与继承</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="2023-08-16T05:36:48.000Z" title="发表于 2023-08-16 13:36:48">2023-08-16</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/JavaScript/">JavaScript</a></span></div><div class="content">原型与继承
在 JavaScript 中,对象有一个特殊的隐藏属性 [[Prototype]](如规范中所命名的),它要么为 null,要么就是对另一个对象的引用。该对象被称为“原型。
当我们从 object 中读取一个缺失的属性时,JavaScript 会自动从原型中获取该属性。在编程中,这被称为“原型继承”。
1234567891011121314151617181920212223242526272829303132333435363738394041'use strict';const user = { name: 'user', age: 18}const admin = { __proto__: user, // __proto__ 的值可以是对象,也可以是 null。而其他的类型都会被忽略。一个对象只能有一个 [[Prototype]]。一个对象不能从其他两个对象获得继承。 name: 'admin',}console.log(admin.na ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/artical/5ba3d.html" title="websocket聊天室"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/katong/223855-1603895935efcd.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="websocket聊天室"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/5ba3d.html" title="websocket聊天室">websocket聊天室</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="2023-06-26T03:20:12.000Z" title="发表于 2023-06-26 11:20:12">2023-06-26</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/JavaScript/">JavaScript</a></span></div><div class="content">websocket聊天
代码#
12345678910111213141516171819202122232425262728293031323334353637// server.jsconst http = require("http");const fs = require("fs");const ws = require("socket.io"); // 引入socket.ioconst server = http.createServer((req, res) => { const html = fs.readFileSync("./client.html"); // client.html是发送给客户端的文件(客户端界面) res.end(html);});server.listen(8000, () => { console.log("服务运行在8000端口");});// http服务与ws服务相关联, 返回io服 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/artical/85116811.html" title="Promise、async和await"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/img/2023/1.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Promise、async和await"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/85116811.html" title="Promise、async和await">Promise、async和await</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="2023-06-13T14:34:12.000Z" title="发表于 2023-06-13 22:34:12">2023-06-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/JavaScript/">JavaScript</a></span></div><div class="content">Promise、async和await
async和await#
123456789101112131415161718192021222324252627282930313233343536function getName() { return new Promise((resolve, reject) => { setTimeout(() => { resolve("John Doe"); }, 2000); });}// 被async修饰的函数, 总是返回一个 promise, 其值被包装在一个Promise对象中返回async function getAge() { return 25;}function getPwd() { return Promise.resolve(123456); // 封装一个值为Promise对象}// await: 让 JavaScript 引擎等待直到 promise 完成(set ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/artical/2766932d.html" title="位运算的应用"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/img/2023/3.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="位运算的应用"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/2766932d.html" title="位运算的应用">位运算的应用</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="2023-06-01T12:32:04.000Z" title="发表于 2023-06-01 20:32:04">2023-06-01</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/%E7%AE%97%E6%B3%95/">算法</a></span></div><div class="content">位运算的应用
判断奇偶#
奇数的二进制最低位一定是1, 而偶数的二进制最低位一定是0, 所以有
123if((1 & num) == 1) // num 为奇数 if((1 & num) == 0) // num 为偶数
乘2除以2#
1234567num >> 1 == num / 2 num << 1 == num * 2 1 << n == Math.pow(2, n)
移除最低位的1#
比如num的二进制为0000 1010, 移除最低位的1后变成 0000 0100
1int res = num & (num - 1);
相关题:
191. 位1的个数 - 力扣(Leetcode)
231. 2 的幂 - 力扣(Leetcode)
461. 汉明距离 - 力扣(Leetcode)
获取最低位的1#
比如num的二进制为0000 1010, 获取最低位的1的值应该是 0000 0010, 即只保存最低位的1, 移除其他所有1
1int res = num & (-nu ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/artical/d807e6df.html" title="模拟实现Spring的IOC"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/img/2023/20.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="模拟实现Spring的IOC"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/d807e6df.html" title="模拟实现Spring的IOC">模拟实现Spring的IOC</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="2023-05-02T10:06:02.000Z" title="发表于 2023-05-02 18:06:02">2023-05-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/Java/">Java</a></span></div><div class="content">创建两个注解
@Bean实现类似@Component的作用
@DI实现类似@Autowired的作用
12345// 可使用的范围, 类、接口(包括注释接口)、枚举或记录声明@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface Bean {}
12345// 字段声明(包括枚举常量)@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME) // 运行时保留public @interface DI {}
1234public interface ApplicationContext { // 根据类型获取Bean对象 Object getBean(Class<?> clazz);}
12345678910111213141516171819202122232425262728293031323334353637383940414243444 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/artical/27397cfd.html" title="Spring中的AOP"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/katong/201941-16228091810a47.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Spring中的AOP"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/27397cfd.html" title="Spring中的AOP">Spring中的AOP</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="2023-05-02T09:15:24.000Z" title="发表于 2023-05-02 17:15:24">2023-05-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/Java/">Java</a></span></div><div class="content">现在有一个接口Calculator
123456public interface Calculator { int add(int a, int b); int sub(int a, int b); int mul(int a, int b); int div(int a, int b);}
其实现类CalculatorImpl实现了基本的算数
123456789101112131415161718192021public class CalculatorImpl implements Calculator { @Override public int add(int a, int b) { return a + b; } @Override public int sub(int a, int b) { return a - b; } @Override public int mul(int a, int b)  ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/artical/93faae0c.html" title="docker部署war包"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/img/2023/23.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="docker部署war包"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/93faae0c.html" title="docker部署war包">docker部署war包</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="2023-04-30T13:41:59.000Z" title="发表于 2023-04-30 21:41:59">2023-04-30</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/Deploy/">Deploy</a></span></div><div class="content">docker部署war包
下载docker
1yum install docker
检查是否安装docker
123[root@alibaba-linux home]# docker -vEmulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.podman version 4.2.0
拉取tomcat镜像
12docker pull tomcat # 默认下载最新版本docker pull tomcat:8 # 下载tomcat8版本(指定版本)
查看镜像
123456[root@alibaba-linux home]# docker imagesEmulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.REPOSITORY TAG IMAGE ID CREATED SIZElocalhost/local- ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/artical/2ba898ad.html" title="Spring注册Bean对象的几种方式"><img class="post_bg" src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/img/2023/5.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Spring注册Bean对象的几种方式"></a></div><div class="recent-post-info"><a class="article-title" href="/artical/2ba898ad.html" title="Spring注册Bean对象的几种方式">Spring注册Bean对象的几种方式</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="2023-04-27T14:24:47.000Z" title="发表于 2023-04-27 22:24:47">2023-04-27</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/Java/">Java</a></span></div><div class="content">一、xml配置文件形式#
1234package org.example.pojo;// 只是一个普通的Java类public class User {}
12345678<!-- bean.xml --><?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 注册到IOC容器中, 注册为bean对象 ...</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/6/#content-inner">6</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= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/headImage/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20201030005750.jpg" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">Tiam</div><div class="author-info__description">慢慢而漫漫</div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">59</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">75</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">25</div></a></div><a id="card-info-btn" target="_blank" rel="noopener external nofollow noreferrer" href="https://githubfast.com/tiam-bloom"><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://githubfast.com/tiam-bloom" rel="external nofollow noreferrer" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="https://blog.csdn.net/qq_50969362" rel="external nofollow noreferrer" target="_blank" title="CSDN"><i class="fa fa-book-open"></i></a><a class="social-icon" href="mailto:[email protected]" rel="external nofollow noreferrer" target="_blank" title="Email"><i class="fas fa-envelope-open-text"></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"><b><font color="#e66b6d">知</font> <font color="#e66d98">不</font> <font color="#e66cc6">足</font> <font color="#cc6de6">而</font> <font color="#9770e6">奋</font> <font color="#6d93e6">进</font> ,<font color="#6fcde6">望</font> <font color="#72e6b6">远</font> <font color="#72e689">山</font> <font color="#99e670">而</font> <font color="#cde670">前</font> <font color="#e6df72">行</font> </b> <p align="center"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="https://alioss.yujing.icu/image/fcat.gif?Expires=1683185404&OSSAccessKeyId=TMP.3KiUEwF2Hu1EffFTz8jLsuvtfLJAM8ZNSbFPanzKr7DgqvANZZHJTbPWB8CoySoXmkvbsvWasAztnmzzbdnbSoeEJKec6B&Signature=sND%2FsdRhhK45qA%2Bn938960pEbXI%3D" width="50" alt="mao"></p> <p align="center">微信公众号:带着月亮</p> <p align="center">QQ号:3036293856</p></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="/artical/4966f9af.html" title="protobuf协议逆向解析"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/katong/201941-16228091810a47.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="protobuf协议逆向解析"/></a><div class="content"><a class="title" href="/artical/4966f9af.html" title="protobuf协议逆向解析">protobuf协议逆向解析</a><time datetime="2024-05-04T14:26:14.000Z" title="发表于 2024-05-04 22:26:14">2024-05-04</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/artical/26023127.html" title="Qexo"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/image/nice/ali.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Qexo"/></a><div class="content"><a class="title" href="/artical/26023127.html" title="Qexo">Qexo</a><time datetime="2023-11-24T01:00:24.495Z" title="发表于 2023-11-24 09:00:24">2023-11-24</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/artical/cc502626.html" title="原型与继承"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/img/2023/2.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="原型与继承"/></a><div class="content"><a class="title" href="/artical/cc502626.html" title="原型与继承">原型与继承</a><time datetime="2023-08-16T05:36:48.000Z" title="发表于 2023-08-16 13:36:48">2023-08-16</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/artical/5ba3d.html" title="websocket聊天室"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="http://qiniu.yujing.icu/katong/223855-1603895935efcd.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="websocket聊天室"/></a><div class="content"><a class="title" href="/artical/5ba3d.html" title="websocket聊天室">websocket聊天室</a><time datetime="2023-06-26T03:20:12.000Z" title="发表于 2023-06-26 11:20:12">2023-06-26</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/artical/85116811.html" title="Promise、async和await"><img src= "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/img/2023/1.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Promise、async和await"/></a><div class="content"><a class="title" href="/artical/85116811.html" title="Promise、async和await">Promise、async和await</a><time datetime="2023-06-13T14:34:12.000Z" title="发表于 2023-06-13 22:34:12">2023-06-13</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/API/"><span class="card-category-list-name">API</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/CSS/"><span class="card-category-list-name">CSS</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/C%E8%AF%AD%E8%A8%80/"><span class="card-category-list-name">C语言</span><span class="card-category-list-count">8</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/Deploy/"><span class="card-category-list-name">Deploy</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/Docker/"><span class="card-category-list-name">Docker</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/HTML/"><span class="card-category-list-name">HTML</span><span class="card-category-list-count">2</span></a><ul class="card-category-list child"><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/HTML/CSS/"><span class="card-category-list-name">CSS</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/Java/"><span class="card-category-list-name">Java</span><span class="card-category-list-count">5</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/idea/" style="font-size: 1.15em; color: rgb(69, 47, 40)">idea</a><a href="/tags/powershell/" style="font-size: 1.15em; color: rgb(121, 60, 116)">powershell</a><a href="/tags/cmd/" style="font-size: 1.15em; color: rgb(86, 90, 107)">cmd</a><a href="/tags/CORS/" style="font-size: 1.15em; color: rgb(4, 69, 26)">CORS</a><a href="/tags/%E5%90%8C%E6%BA%90%E7%AD%96%E7%95%A5/" style="font-size: 1.15em; color: rgb(174, 98, 71)">同源策略</a><a href="/tags/Proxy/" style="font-size: 1.15em; color: rgb(125, 72, 88)">Proxy</a><a href="/tags/render/" style="font-size: 1.15em; color: rgb(130, 29, 25)">render</a><a href="/tags/hyperscript/" style="font-size: 1.15em; color: rgb(140, 46, 33)">hyperscript</a><a href="/tags/VNode/" style="font-size: 1.15em; color: rgb(0, 69, 119)">VNode</a><a href="/tags/cookie/" style="font-size: 1.15em; color: rgb(12, 132, 72)">cookie</a><a href="/tags/js/" style="font-size: 1.45em; color: rgb(70, 161, 32)">js</a><a href="/tags/npm/" style="font-size: 1.22em; color: rgb(104, 178, 35)">npm</a><a href="/tags/java/" style="font-size: 1.38em; color: rgb(133, 2, 161)">java</a><a href="/tags/margin/" style="font-size: 1.15em; color: rgb(88, 148, 173)">margin</a><a href="/tags/%E5%B1%85%E4%B8%AD/" style="font-size: 1.15em; color: rgb(97, 1, 157)">居中</a><a href="/tags/font-size/" style="font-size: 1.15em; color: rgb(168, 155, 181)">font-size</a><a href="/tags/vertical-align/" style="font-size: 1.15em; color: rgb(5, 111, 97)">vertical-align</a><a href="/tags/spring/" style="font-size: 1.3em; color: rgb(42, 124, 58)">spring</a><a href="/tags/%E4%BD%8D%E8%BF%90%E7%AE%97/" style="font-size: 1.22em; color: rgb(199, 12, 144)">位运算</a><a href="/tags/docker/" style="font-size: 1.15em; color: rgb(123, 39, 75)">docker</a><a href="/tags/tomcat/" style="font-size: 1.15em; color: rgb(198, 156, 102)">tomcat</a><a href="/tags/war/" style="font-size: 1.15em; color: rgb(23, 81, 181)">war</a><a href="/tags/Consumer/" style="font-size: 1.15em; color: rgb(143, 200, 7)">Consumer</a><a href="/tags/InvocationHandler/" style="font-size: 1.15em; color: rgb(142, 78, 35)">InvocationHandler</a><a href="/tags/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/" style="font-size: 1.15em; color: rgb(172, 162, 143)">排序算法</a><a href="/tags/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/" style="font-size: 1.15em; color: rgb(134, 175, 125)">快速排序</a><a href="/tags/C/" style="font-size: 1.22em; color: rgb(90, 130, 145)">C</a><a href="/tags/%E5%BC%82%E6%AD%A5/" style="font-size: 1.15em; color: rgb(108, 176, 117)">异步</a><a href="/tags/aop/" style="font-size: 1.15em; color: rgb(60, 11, 75)">aop</a><a href="/tags/websocket/" style="font-size: 1.15em; color: rgb(14, 46, 49)">websocket</a><a href="/tags/socket-io/" style="font-size: 1.15em; color: rgb(61, 180, 93)">socket.io</a><a href="/tags/node-js/" style="font-size: 1.15em; color: rgb(2, 65, 1)">node.js</a><a href="/tags/Docker/" style="font-size: 1.15em; color: rgb(4, 10, 2)">Docker</a><a href="/tags/Git/" style="font-size: 1.15em; color: rgb(12, 180, 140)">Git</a><a href="/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/" style="font-size: 1.15em; color: rgb(183, 99, 117)">学习笔记</a><a href="/tags/ES6/" style="font-size: 1.15em; color: rgb(197, 149, 10)">ES6</a><a href="/tags/JavaScript/" style="font-size: 1.15em; color: rgb(30, 172, 172)">JavaScript</a><a href="/tags/git/" style="font-size: 1.15em; color: rgb(189, 153, 5)">git</a><a href="/tags/%E7%AC%94%E8%AE%B0/" style="font-size: 1.22em; color: rgb(55, 2, 154)">笔记</a><a href="/tags/maven/" style="font-size: 1.15em; color: rgb(65, 137, 168)">maven</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/2024/05/"><span class="card-archive-list-date">五月 2024</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/2023/11/"><span class="card-archive-list-date">十一月 2023</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/2023/08/"><span class="card-archive-list-date">八月 2023</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/2023/06/"><span class="card-archive-list-date">六月 2023</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/2023/05/"><span class="card-archive-list-date">五月 2023</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/2023/04/"><span class="card-archive-list-date">四月 2023</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/2023/03/"><span class="card-archive-list-date">三月 2023</span><span class="card-archive-list-count">9</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2023/02/"><span class="card-archive-list-date">二月 2023</span><span class="card-archive-list-count">17</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">59</div></div><div class="webinfo-item"><div class="item-name">已运行时间 :</div><div class="item-count" id="runtimeshow" data-publishDate="2022-11-17T16:00:00.000Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总字数 :</div><div class="item-count">99.4k</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="2024-05-04T14:29:17.744Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer" style="background-image: url('http://qiniu.yujing.icu/katong/index.jpg')"><div id="footer-wrap"><div class="copyright">©2021 - 2024 By Tiam</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener external nofollow noreferrer" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div><div class="footer_custom_text"><a href="https://beian.miit.gov.cn/" rel="external nofollow noreferrer" target="_blank">渝ICP备2021008108号-1</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="chat_btn" type="button" title="聊天"><i class="fas fa-sms"></i></button><button id="go-up" type="button" title="回到顶部"><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="https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js"></script><script src="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js"></script><script src="/js/search/local-search.js"></script><div class="js-pjax"><script>function subtitleType () {
getScript('https://sdk.jinrishici.com/v2/browser/jinrishici.js').then(() => {
jinrishici.load(result =>{
if (true) {
const sub = []
const content = result.data.content
sub.unshift(content)
window.typed = new Typed('#subtitle', {
strings: sub,
startDelay: 300,
typeSpeed: 150,
loop: true,
backSpeed: 50,
})
} else {
document.getElementById('subtitle').innerHTML = result.data.content
}
})
})
}
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><canvas id="universe"></canvas><script defer src="/js/universe.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 src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/activate-power-mode.min.js"></script><script>POWERMODE.colorful = true;
POWERMODE.shake = false;
POWERMODE.mobile = false;
document.body.addEventListener('input', POWERMODE);
</script><script id="click-show-text" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/click-show-text.min.js" data-mobile="false" data-text="富强,民主,文明,和谐,自由,平等,公正,法治,爱国,诚信,敬业,友善" data-fontsize="15px" data-random="true" async="async"></script><script>((window.gitter = {}).chat = {}).options = {
disableDefaultChat: true,
};
document.addEventListener('gitter-sidecar-ready', (e) => {
const GitterChat = e.detail.Chat
let chat
function initGitter () {
chat = new GitterChat({
room: 'blog-develop-communication/Tiam-room',
activationElement: '#chat_btn'
});
}
initGitter()
if (false) {
document.addEventListener('pjax:complete', () => {
chat.destroy()
initGitter()
})
}
})</script><script src="https://sidecar.gitter.im/dist/sidecar.v1.js" async="async" defer="defer"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div><!-- hexo injector body_end start --><script async src="//at.alicdn.com/t/font_2032782_8d5kxvn09md.js"></script><!-- hexo injector body_end end --></body></html>