-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
417 lines (383 loc) · 18.2 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
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta name="theme-color" content="#f8f5ec" />
<meta name="msapplication-navbutton-color" content="#f8f5ec">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="#f8f5ec">
<link rel="alternate" href="/atom.xml" title="cloudfeng"><link rel="shortcut icon" type="image/x-icon" href="/favicon2.ico?v=2.11.0" />
<link rel="canonical" href="https://cloudfeng.github.io/"/>
<link rel="stylesheet" type="text/css" href="/lib/fancybox/jquery.fancybox.css" />
<link rel="stylesheet" type="text/css" href="/css/style.css?v=2.11.0" />
<script id="baidu_analytics">
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?818f849375e8a1bf104811a5562384b8";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script id="baidu_push">
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<script>
window.config = {"leancloud":{"app_id":null,"app_key":null},"toc":true,"fancybox":true,"pjax":"","latex":false};
</script>
<title>cloudfeng</title>
<meta name="generator" content="Hexo 4.2.0"></head>
<body><div id="mobile-navbar" class="mobile-navbar">
<div class="mobile-header-logo">
<a href="/." class="logo">cloudfeng</a>
</div>
<div class="mobile-navbar-icon">
<span></span>
<span></span>
<span></span>
</div>
</div>
<nav id="mobile-menu" class="mobile-menu slideout-menu">
<ul class="mobile-menu-list"><a href="/">
<li class="mobile-menu-item">Home
</li>
</a><a href="/archives/">
<li class="mobile-menu-item">Archives
</li>
</a><a href="/tags/">
<li class="mobile-menu-item">Tags
</li>
</a><a href="/categories/">
<li class="mobile-menu-item">Categories
</li>
</a><a href="/about/">
<li class="mobile-menu-item">About
</li>
</a></ul>
</nav>
<div class="container" id="mobile-panel">
<header id="header" class="header"><div class="logo-wrapper">
<a href="/." class="logo">cloudfeng</a>
</div>
<nav class="site-navbar"><ul id="menu" class="menu"><li class="menu-item">
<a class="menu-item-link" href="/">
Home
</a>
</li>
<li class="menu-item">
<a class="menu-item-link" href="/archives/">
Archives
</a>
</li>
<li class="menu-item">
<a class="menu-item-link" href="/tags/">
Tags
</a>
</li>
<li class="menu-item">
<a class="menu-item-link" href="/categories/">
Categories
</a>
</li>
<li class="menu-item">
<a class="menu-item-link" href="/about/">
About
</a>
</li>
</ul></nav>
</header>
<main id="main" class="main">
<div class="content-wrapper">
<div id="content" class="content"><section id="posts" class="posts"><article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2020/06/02/2020/06/10x_work_method_0/">【撸码系列】10x程序员高效工作方法之思考框架</a>
</h1>
<div class="post-meta">
<span class="post-time">
2020-06-02
</span><span class="post-category">
<a href="/categories/%E5%B7%A5%E4%BD%9C%E6%96%B9%E6%B3%95/">工作方法</a>
</span>
</div>
</header>
<div class="post-content"><h2 id="缘起"><a class="header-anchor" href="#缘起">¶</a>缘起</h2>
<p>毕业参加工作3年多了,一直没有去其他公司看看。回想这几年的工作经历,居然没啥说得出口的。没有什<br>
么太多的成长。有时候忙得天昏地暗的,但是效果不佳。公司给了个账号,可以选10门课,无意选了一门《10x程序员工作方法》,这两天阅读GK上面看了一下《开篇词:程序员解决的问题,大多不是程序问题》和 《10x 程序员是如何思考的?》。</p>
<div class="read-more">
<a href="/2020/06/02/2020/06/10x_work_method_0/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2020/03/17/2020/03/20200317_gogin_graceful_shutdown/">【Golang】Gin 优雅停机</a>
</h1>
<div class="post-meta">
<span class="post-time">
2020-03-17
</span><span class="post-category">
<a href="/categories/go-go-gin/">go/go-gin</a>
</span>
</div>
</header>
<div class="post-content"><p>我们在web开发中,你的应用可能会在不同国家使用,所以需要将相关的错误提示根据本地语言进行相应的提示,也即是所谓的国际化。本文简单的介绍一下,在Gin中如何实现多语言的验证。我们借助<code>validator.v10</code>以及相应的语言包。</p>
<div class="read-more">
<a href="/2020/03/17/2020/03/20200317_gogin_graceful_shutdown/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2020/03/16/2020/03/20200316_gogin_mutil_lan/">【Golang】Gin 框架之请求参数多语言验证</a>
</h1>
<div class="post-meta">
<span class="post-time">
2020-03-16
</span><span class="post-category">
<a href="/categories/go-go-gin/">go/go-gin</a>
</span>
</div>
</header>
<div class="post-content"><p>我们在web开发中,你的应用可能会在不同国家使用,所以需要将相关的错误提示根据本地语言进行相应的提示,也即是所谓的国际化。本文简单的介绍一下,在Gin中如何实现多语言的验证。我们借助<code>validator.v10</code>以及相应的语言包。</p>
<div class="read-more">
<a href="/2020/03/16/2020/03/20200316_gogin_mutil_lan/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2020/03/13/2020/03/20200311_go_gin_request_bind_type/">【Golang】Gin 框架之请求参数绑定</a>
</h1>
<div class="post-meta">
<span class="post-time">
2020-03-13
</span><span class="post-category">
<a href="/categories/go-go-gin/">go/go-gin</a>
</span>
</div>
</header>
<div class="post-content"><p>最近在用Gin来做一个side project,用于练手以及学习前端。看了Gin的文档,此文只是将相关的文档作为一个归类,留存起来。首先我们看看,Gin中模型绑定和校验,是其他绑定类型请求的基础;后面再分别介绍Gin中相关的绑定类型(见下面的表)。</p>
<table>
<thead>
<tr>
<th style="text-align:center">类型</th>
<th style="text-align:center">重要程度</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">绑定Url</td>
<td style="text-align:center">重要</td>
</tr>
<tr>
<td style="text-align:center">请求参数与自定义结构绑定</td>
<td style="text-align:center">重要</td>
</tr>
<tr>
<td style="text-align:center">请求参数是前端上送的CheckBox</td>
<td style="text-align:center">重要</td>
</tr>
<tr>
<td style="text-align:center">仅仅绑定查询</td>
<td style="text-align:center">一般,特殊化</td>
</tr>
<tr>
<td style="text-align:center">绑定Header</td>
<td style="text-align:center">一般</td>
</tr>
<tr>
<td style="text-align:center">绑定查询类型或者POST数据</td>
<td style="text-align:center">重要</td>
</tr>
</tbody>
</table>
<div class="read-more">
<a href="/2020/03/13/2020/03/20200311_go_gin_request_bind_type/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2020/02/15/2020/02/20200215_design_pattern_singleton/">如何正确地写出单例模式</a>
</h1>
<div class="post-meta">
<span class="post-time">
2020-02-15
</span><span class="post-category">
<a href="/categories/%E5%9F%BA%E7%A1%80-%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/">基础/设计模式</a>
</span>
</div>
</header>
<div class="post-content"><h2 id="什么是单例模式"><a class="header-anchor" href="#什么是单例模式">¶</a>什么是单例模式</h2>
<p>一个类在<code>JVM</code>只有一个实例,并且提供一个全局访问入口。单例模式适用无状态的工具类,比如日志工具、字符串工具;<br>
还有全局信息类,比如全局计数、环境变量;在Java中如下类库是适用单例模式:</p>
<ul>
<li><code>java.lang.Runtime#getRuntime()</code>;</li>
<li><code>java.awt.Desktop#getDesktop()</code>;</li>
<li><code>java.lang.System#getSecurityManager()</code>;</li>
</ul>
<p>单例模式的作用:节省内存;节省计算;结果的正确,比如全局计数器;方便管理。其实现方式很多,但不管何种实现方式,共同点:</p>
<ul>
<li>私有的构造函数;</li>
<li>私有静态类对象;</li>
<li>公有静态方法,唯一一个访问私有静态对象实例的方法。</li>
</ul>
<div class="read-more">
<a href="/2020/02/15/2020/02/20200215_design_pattern_singleton/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2020/02/09/2020/02/intelli_log4j_20200209/">Maven项目搭建Log4j日志(带颜色)环境</a>
</h1>
<div class="post-meta">
<span class="post-time">
2020-02-09
</span><span class="post-category">
<a href="/categories/Java%E5%BC%80%E5%8F%91/">Java开发</a>
</span>
</div>
</header>
<div class="post-content"><h2 id="maven项目搭建log4j日志环境"><a class="header-anchor" href="#maven项目搭建log4j日志环境">¶</a>Maven项目搭建Log4j日志环境</h2>
<p>介绍一下Maven项目中如何搭建Log4j日志,具体如下:</p>
<ol>
<li>构建一个<code>Maven</code>项目;</li>
<li>在项目的POM文件中引入Log4j的相关依赖包:</li>
</ol>
<div class="read-more">
<a href="/2020/02/09/2020/02/intelli_log4j_20200209/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2020/02/03/2020/02/macos_nodejs_update_20200203/">macOS升级Nodejs版本</a>
</h1>
<div class="post-meta">
<span class="post-time">
2020-02-03
</span><span class="post-category">
<a href="/categories/front-dev/">front-dev</a>
</span>
</div>
</header>
<div class="post-content"><h2 id="nodejs版本升级"><a class="header-anchor" href="#nodejs版本升级">¶</a><code>Nodejs</code>版本升级</h2>
<p>今天开始上班,但由于新肺炎只能远程,在家办公。学习前端开发,所以把之前的<code>nodejs</code>版本太老了,准备<br>
把版本升级一下,这里把升级的步骤写一下,做一个备份:</p>
<div class="read-more">
<a href="/2020/02/03/2020/02/macos_nodejs_update_20200203/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2020/01/01/summary/20200101_2019summary/">展望2020,回顾2019</a>
</h1>
<div class="post-meta">
<span class="post-time">
2020-01-01
</span><span class="post-category">
<a href="/categories/%E6%80%BB%E7%BB%93/">总结</a>
</span>
</div>
</header>
<div class="post-content"><h2 id="概要"><a class="header-anchor" href="#概要">¶</a>概要</h2>
<HR style="border:1 dashed #987cb9" width="100%" color=#987cb9 SIZE=1>
<p>今天是2020年的第一天,回顾2019年,平时没有做多少的记录总结。生活上最大的收获就是娃在出来了。<br>
陪伴的时候出了很多问题,大都是家庭问题,与老婆拌嘴更多了。总之各种辛酸不为外人道。工作上,一直<br>
打算换份工作,出于成长和心脏,但出去面了几次,没有拿到过offer。其实最大的问题自己也清楚,就是<br>
去外面看看,根本没有下定决心要走。学的东西也是杂乱的,不成体系,不够深度。2019年就这样浑浑噩噩<br>
过了。下面具体说说2019年经历了啥。</p>
<div class="read-more">
<a href="/2020/01/01/summary/20200101_2019summary/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2019/07/31/java/java_thread_dump_analysis/">Java Thread Dump 日志分析</a>
</h1>
<div class="post-meta">
<span class="post-time">
2019-07-31
</span><span class="post-category">
<a href="/categories/java/">java</a>
</span>
</div>
</header>
<div class="post-content"><h2 id="thread-dump是什么"><a class="header-anchor" href="#thread-dump是什么">¶</a><code>Thread Dump</code>是什么</h2>
<p>Thread Dump(javacore文件)是当前虚拟机内每一条线程正在执行的方法堆栈集合,生成线程快照的主要目的<br>
定位线程出现长时间停顿的原因:</p>
<ul>
<li>线程间死锁</li>
<li>死循环</li>
<li>请求外部资源导致长时间等待等</li>
</ul>
<h2 id="如何生成thread-dump"><a class="header-anchor" href="#如何生成thread-dump">¶</a>如何生成<code>Thread Dump</code></h2>
<p>可以使用<code>jstack(Stack Trace for Java)</code>命令,它用于生成虚拟机当前时刻的线程快照,就可以查<br>
看各个线程的调用栈。以部署在Tomcat上Java Web应用为例,当我们遇到CPU飙升或者100%时,执行如下步骤<br>
获取<code>Thread Dump</code>:</p>
<div class="read-more">
<a href="/2019/07/31/java/java_thread_dump_analysis/" class="read-more-link">Read more..</a>
</div>
</div></article>
<article class="post">
<header class="post-header">
<h1 class="post-title"><a class="post-link" href="/2019/04/08/distributed_system/distributed_cache/20190408_cache_problem_int/">分布式缓存遇到的问题汇总</a>
</h1>
<div class="post-meta">
<span class="post-time">
2019-04-08
</span><span class="post-category">
<a href="/categories/%E5%88%86%E5%B8%83%E5%BC%8F/">分布式</a>
</span>
</div>
</header>
<div class="post-content"><h2 id="概述"><a class="header-anchor" href="#概述">¶</a>概述</h2>
<p>在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都直接查数据库或者调用第三方接口。特别是出现内存数据库之后,使用缓存场景更多了。而对于高 QPS 的系统尤为如此,如果每次都去查数据库,对数据库来说将是灾难。使用缓存业务系统一般的流程如下:</p>
<div class="read-more">
<a href="/2019/04/08/distributed_system/distributed_cache/20190408_cache_problem_int/" class="read-more-link">Read more..</a>
</div>
</div></article>
<nav class="pagination"><a class="next" href="/page/2/">
<span class="next-text">Next</span>
<i class="iconfont icon-right"></i>
</a>
</nav></section></div></div>
</main>
<footer id="footer" class="footer"><div class="social-links"><a href="mailto:zsm0107@126.com" class="iconfont icon-email" title="email"></a>
<a href="https://github.com/CloudFeng" target="_blank" rel="noopener" class="iconfont icon-github" title="github"></a>
<a href="https://weibo.com/1812591120/profile?topnav=1&wvr=6" target="_blank" rel="noopener" class="iconfont icon-weibo" title="weibo"></a>
<a href="https://www.douban.com/people/July__/" target="_blank" rel="noopener" class="iconfont icon-douban" title="douban"></a>
<a href="/atom.xml" class="iconfont icon-rss" title="rss"></a>
</div><div class="copyright">
<span class="power-by">
Powered by <a class="hexo-link" href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a>
</span>
<span class="division">|</span>
<span class="theme-info">
Theme -
<a class="theme-link" href="https://github.com/ahonn/hexo-theme-even" target="_blank" rel="noopener">Even</a>
</span>
<span class="copyright-year">©2018 - 2020<span class="heart">
<i class="iconfont icon-heart"></i>
</span>
<span class="author">cloudfeng</span>
</span>
</div>
</footer>
<div class="back-to-top" id="back-to-top">
<i class="iconfont icon-up"></i>
</div>
</div><script type="text/javascript" src="/lib/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/lib/slideout/slideout.js"></script>
<script type="text/javascript" src="/lib/fancybox/jquery.fancybox.pack.js"></script>
<script type="text/javascript" src="/js/src/even.js?v=2.11.0"></script>
</body>
</html>