-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
533 lines (333 loc) · 26.5 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
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HarryHappy([email protected])</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta property="og:type" content="website">
<meta property="og:title" content="HarryHappy([email protected])">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="HarryHappy([email protected])">
<meta property="og:locale" content="cn">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="HarryHappy([email protected])">
<link rel="alternate" href="/atom.xml" title="HarryHappy([email protected])" type="application/atom+xml">
<link rel="icon" href="/favicon.png">
<link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<div id="container">
<div id="wrap">
<header id="header">
<div id="banner"></div>
<div id="header-outer" class="outer">
<div id="header-title" class="inner">
<h1 id="logo-wrap">
<a href="/" id="logo">HarryHappy([email protected])</a>
</h1>
</div>
<div id="header-inner" class="inner">
<nav id="main-nav">
<a id="main-nav-toggle" class="nav-icon"></a>
<a class="main-nav-link" href="/">Home</a>
<a class="main-nav-link" href="/archives">Archives</a>
</nav>
<nav id="sub-nav">
<a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS Feed"></a>
<a id="nav-search-btn" class="nav-icon" title="Search"></a>
</nav>
<div id="search-form-wrap">
<form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit"></button><input type="hidden" name="sitesearch" value="http://yoursite.com"></form>
</div>
</div>
</div>
</header>
<div class="outer">
<section id="main">
<article id="post-深入理解java虚拟机" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2018/05/05/深入理解java虚拟机/" class="article-date">
<time datetime="2018-05-04T16:00:00.000Z" itemprop="datePublished">2018-05-05</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2018/05/05/深入理解java虚拟机/">深入理解java虚拟机</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="第一部分"><a href="#第一部分" class="headerlink" title="第一部分"></a>第一部分</h1><h2 id="第一章-走进java"><a href="#第一章-走进java" class="headerlink" title="第一章 走进java"></a>第一章 走进java</h2><p><strong>java的技术体系包含以下几个方面:</strong><br>Java程序设计语言<br>各种硬件平台上的Java虚拟机<br>Class文件格式<br>Java API类库<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">收获:</span><br><span class="line">符合Class文件的规范,就可以在Java虚拟机上执行,作为Java语言有很多替代品:grovvy、scala、jython...</span><br><span class="line">Android 系统使用了Java语言、Class格式以及编译规范、复用了Java API的类库,在最后环节没有使用Java虚拟机,而是搞了自己的DVM</span><br></pre></td></tr></table></figure></p>
<h1 id="第二部分-自动内存管理机制"><a href="#第二部分-自动内存管理机制" class="headerlink" title="第二部分 自动内存管理机制"></a>第二部分 自动内存管理机制</h1><h2 id="第二章-Java内存区域和内存溢出异常"><a href="#第二章-Java内存区域和内存溢出异常" class="headerlink" title="第二章 Java内存区域和内存溢出异常"></a>第二章 Java内存区域和内存溢出异常</h2><p>Java 与 C++ 之间有一堵内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。</p>
<p>在C++ 中对象的生命周期很清晰,需要考虑每个new出来对象的 delete/free<br>在Java中程序员把这个部分控制权交给了虚拟机,一旦发生问题如果不了解虚拟机是如何管理内存的排查错误将会比较难。<br><img src="/2018/05/05/深入理解java虚拟机/1.jpg" title="虚拟机内存管理"></p>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2018/05/05/深入理解java虚拟机/" data-id="cjgtkaibx0003tpl6z7zie75w" class="article-share-link">Share</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/java-虚拟机/">java 虚拟机</a></li></ul>
</footer>
</div>
</article>
<article id="post-领域驱动设计" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2018/05/05/领域驱动设计/" class="article-date">
<time datetime="2018-05-04T16:00:00.000Z" itemprop="datePublished">2018-05-05</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2018/05/05/领域驱动设计/">DDD</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2018/05/05/领域驱动设计/" data-id="cjgtkaic40008tpl6na3jmcly" class="article-share-link">Share</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/DDD/">DDD</a></li></ul>
</footer>
</div>
</article>
<article id="post-设计数据敏感服务" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2018/05/05/设计数据敏感服务/" class="article-date">
<time datetime="2018-05-04T16:00:00.000Z" itemprop="datePublished">2018-05-05</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2018/05/05/设计数据敏感服务/">DDID</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2018/05/05/设计数据敏感服务/" data-id="cjgtkaic60009tpl643t5420k" class="article-share-link">Share</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/DDID/">DDID</a></li></ul>
</footer>
</div>
</article>
<article id="post-读书笔记--高性能mysql" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2018/05/05/读书笔记--高性能mysql/" class="article-date">
<time datetime="2018-05-04T16:00:00.000Z" itemprop="datePublished">2018-05-05</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2018/05/05/读书笔记--高性能mysql/">高性能的mysql读书笔记</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2018/05/05/读书笔记--高性能mysql/" data-id="cjgtkaic8000btpl6dis0li2r" class="article-share-link">Share</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/mysql/">mysql</a></li></ul>
</footer>
</div>
</article>
<article id="post-SpringSecurity" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2018/02/09/SpringSecurity/" class="article-date">
<time datetime="2018-02-08T16:00:00.000Z" itemprop="datePublished">2018-02-09</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2018/02/09/SpringSecurity/">Spring Security 1</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="1-spring-security是用来做什么的?"><a href="#1-spring-security是用来做什么的?" class="headerlink" title="1. spring security是用来做什么的?"></a>1. spring security是用来做什么的?</h1><p>安全领域的问题应该谁来负责?后台开发面临一个比较大的问题就是安全问题,如何有效的防止开发人员能写出有逻辑漏洞,注入漏洞的问题呢?</p>
<p>开发人员你的安全意识是必须的,但是更重要的是在框架层面提供支持,在框架层面给予充分的约束和规约控制,这样写业务逻辑的同事可以在框架的约束下专注于自身业务的开发。</p>
<p>这就给框架层提了很高的要求,既要宽泛,还要足够的严谨,可以满足各个层面的个性化需求。</p>
<p>Spring Security 提供了一个专注于鉴权和授权的安全框架,和spring其他项目一样可以方便、快速的满足自定义的需求。</p>
<p>特性:</p>
<ul>
<li>满足鉴权和授权的需求</li>
<li>可以防范点击伪造,session伪造,阔爱站请求伪造等</li>
<li>servlet api 整合</li>
<li>springmvc 可选集成</li>
</ul>
<h1 id="2-demo项目搭建"><a href="#2-demo项目搭建" class="headerlink" title="2. demo项目搭建"></a>2. demo项目搭建</h1><h1 id="3"><a href="#3" class="headerlink" title="3."></a>3.</h1>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2018/02/09/SpringSecurity/" data-id="cjgtkaibz0004tpl6ap3x3luc" class="article-share-link">Share</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/压力测试使用/">压力测试使用</a></li></ul>
</footer>
</div>
</article>
<article id="post-Locust源码分析" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2018/02/06/Locust源码分析/" class="article-date">
<time datetime="2018-02-05T16:00:00.000Z" itemprop="datePublished">2018-02-06</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2018/02/06/Locust源码分析/">Locust源码分析(1)</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="官网demo运行追踪"><a href="#官网demo运行追踪" class="headerlink" title="官网demo运行追踪"></a>官网demo运行追踪</h1><h2 id="1-官网例子"><a href="#1-官网例子" class="headerlink" title="1. 官网例子"></a>1. 官网例子</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#coding=utf-8 </span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> locust <span class="keyword">import</span> HttpLocust, TaskSet</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get1</span><span class="params">(l)</span>:</span></span><br><span class="line"> l.client.get(<span class="string">"/get1"</span>);</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get2</span><span class="params">(l)</span>:</span></span><br><span class="line"> l.client.get(<span class="string">"/get2"</span>)</span><br><span class="line"> </span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">UserBehavior</span><span class="params">(TaskSet)</span>:</span></span><br><span class="line"> tasks = {get1 : <span class="number">2</span>, get2 : <span class="number">1</span>}</span><br><span class="line"> </span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">WebsiteUser</span><span class="params">(HttpLocust)</span>:</span></span><br><span class="line"> task_set = UserBehavior</span><br><span class="line"> min_wait = <span class="number">5000</span></span><br><span class="line"> max_wait = <span class="number">9000</span></span><br></pre></td></tr></table></figure>
<p>主要有三点内容:</p>
<ol>
<li>一个class 继承自HttpLocust,其中一个属性task_set 需要设置</li>
<li>一个class 继承自TaskSet</li>
<li>TaskSet中的tasks属性可以定义权重、设置setup等逻辑</li>
</ol>
<h2 id="2-官网例子运行"><a href="#2-官网例子运行" class="headerlink" title="2. 官网例子运行"></a>2. 官网例子运行</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">locust --host=http://example.com</span><br></pre></td></tr></table></figure>
<p>执行上面的命令后,发生了什么?<br>locust 的main<br>根据输入参数不同有几种模式:</p>
<ul>
<li>master模式</li>
<li>slave模式</li>
<li>local模式</li>
</ul>
<p>这三种Runner 都继承自<code>LocustRunner</code></p>
<p>上面的命令中没有指定任何运行相关配置,所以是local模式<br>spawn client spawning/hatching greenlet</p>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2018/02/06/Locust源码分析/" data-id="cjgtkaibt0001tpl6yp08tgtg" class="article-share-link">Share</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/压力测试使用/">压力测试使用</a></li></ul>
</footer>
</div>
</article>
<article id="post-压力测试" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2018/02/04/压力测试/" class="article-date">
<time datetime="2018-02-03T16:00:00.000Z" itemprop="datePublished">2018-02-04</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2018/02/04/压力测试/">压力测试</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="压力测试的关键组成:"><a href="#压力测试的关键组成:" class="headerlink" title="压力测试的关键组成:"></a>压力测试的关键组成:</h1><ol>
<li>压力源提供</li>
<li>调度控制器</li>
<li>结果报告收集和展示</li>
</ol>
<p>目前已经存在的压力测试工具。<br>制造轮子的可能性不大,应该是使用已有开源项目做二次开发来实现。</p>
<h1 id="Locust"><a href="#Locust" class="headerlink" title="Locust"></a>Locust</h1><h1 id="1-简介"><a href="#1-简介" class="headerlink" title="1. 简介"></a>1. 简介</h1><p><strong>Locust</strong> 是一个简单的压力测试工具,可以测试web服务或者其他服务,测试出系统并发数</p>
<p>想象一下这样一个场景:开始一个压力测试,一群蝗虫开始攻击你的站点。你定义的每一个”蝗虫”的行为都可以从实时的ui系统中展示,这将帮助你找到服务中性能的瓶颈,而不是等待真实用户的场景发生时才发现那些性能问题。</p>
<p>Locust 是一个完全的事件驱动系统,单个machine可以支持上万的并发用户数,</p>
<ol>
<li>特性</li>
</ol>
<ul>
<li><p>基于协程,和简单的python代码,比起复杂ui配置和臃肿的xml配置方式,使用起来更方便。</p>
</li>
<li><p>分布式,可伸缩的设计,支持更大的并发数</p>
</li>
<li>web 在线展示系统,因为是web服务,跨平台性更好。</li>
<li>可以测试任何类型的系统,只需要定制自己的client,</li>
</ul>
<h1 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h1><p>作者对比了jmeter Tsung 说了些这两个程序的缺点,主要是为了突出Locust使用协程,可以模拟跟多的并发用户数,使用纯净的python脚本编写,没有页面配置和xml配置那么麻烦。</p>
<h1 id="开始"><a href="#开始" class="headerlink" title="开始"></a>开始</h1><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">from locust import HttpLocust, TaskSet</span><br><span class="line"></span><br><span class="line">def login(l):</span><br><span class="line"> l.client.post("/login", {"username":"ellen_key", "password":"education"})</span><br><span class="line"></span><br><span class="line">def index(l):</span><br><span class="line"> l.client.get("/")</span><br><span class="line"></span><br><span class="line">def profile(l):</span><br><span class="line"> l.client.get("/profile")</span><br><span class="line"></span><br><span class="line">class UserBehavior(TaskSet):</span><br><span class="line"> tasks = {index: 2, profile: 1}</span><br><span class="line"></span><br><span class="line"> def on_start(self):</span><br><span class="line"> login(self)</span><br><span class="line"></span><br><span class="line">class WebsiteUser(HttpLocust):</span><br><span class="line"># 1. 继承HttpLocust 2.赋值task_set为UserBehavior 3.设置min max wait time </span><br><span class="line"> task_set = UserBehavior</span><br><span class="line"> min_wait = 5000</span><br><span class="line"> max_wait = 9000</span><br></pre></td></tr></table></figure>
<h1 id="写一个Locust-file"><a href="#写一个Locust-file" class="headerlink" title="写一个Locust file"></a>写一个Locust file</h1><p>LocustFile 是一个普通的python文件,单纯的需要类继承自locust ,这个类将作为配置的入口</p>
<h1 id="Locust-分布式程序"><a href="#Locust-分布式程序" class="headerlink" title="Locust 分布式程序"></a>Locust 分布式程序</h1>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2018/02/04/压力测试/" data-id="cjgtkaic10005tpl608e9qeig" class="article-share-link">Share</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/压力测试使用/">压力测试使用</a></li></ul>
</footer>
</div>
</article>
<article id="post-Java单元测试01" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2018/02/01/Java单元测试01/" class="article-date">
<time datetime="2018-02-01T14:20:44.000Z" itemprop="datePublished">2018-02-01</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2018/02/01/Java单元测试01/">Java单元测试</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h2 id="开始单元测试"><a href="#开始单元测试" class="headerlink" title="开始单元测试"></a>开始单元测试</h2><p>现在微服务框架,使得最初的debug调试变得非常难,对于Web服务架构通常分接入层,逻辑层,存储层…对于业务复杂的还可能分更多的层次。</p>
<p>开发者社区中一种说法:不使用debug的开发习惯,也就是说不依赖debug进行程序的开发。如果你开发的是一个复杂逻辑的程序,debug还是十分方便的,但是对于大多数程序来说使用全面的log体系可以完成程序的调试和验证工作。</p>
<p>对于微服务架构的程序,涉及到服务之间的相互调用,如果都依赖log来验证程序的正确性,开发成本就会变得很高。</p>
<p>单元测试就显得尤为重要了,首先微服务自身要保证单元测试通过,保证自身逻辑的正确性,这样才不会在服务pair的时候浪费很多时间来联调,在编写单元测试的过程中可能浪费了一些时间,但是这些投入会大大减少后期联调成本,同时对于程序将来的重构有很大的好处。</p>
<p>如果在服务之间联调、集成测试等过程中发现了新的逻辑bug,这时就需要考虑这个问题是否可以通过单元测试用例来弥补,保证下次不会出现这样的问题,同时如果服务面临重构保证了新的逻辑符合预期。</p>
<h2 id="Java单元测试"><a href="#Java单元测试" class="headerlink" title="Java单元测试"></a>Java单元测试</h2><p>第一步,告别main方法测试的时代。</p>
<p>在日常开发行为中,很多时候没有做单元测试,遇到一些复杂的逻辑需要做测试的时候,通常是写一个main方法入口。<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure></p>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2018/02/01/Java单元测试01/" data-id="cjgtkaibo0000tpl6kkfjrpn8" class="article-share-link">Share</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/java-单元测试-junit/">java 单元测试 junit</a></li></ul>
</footer>
</div>
</article>
</section>
<aside id="sidebar">
<div class="widget-wrap">
<h3 class="widget-title">Tags</h3>
<div class="widget">
<ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/tags/DDD/">DDD</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/DDID/">DDID</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/java-单元测试-junit/">java 单元测试 junit</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/java-虚拟机/">java 虚拟机</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/mysql/">mysql</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/压力测试使用/">压力测试使用</a></li></ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">Tag Cloud</h3>
<div class="widget tagcloud">
<a href="/tags/DDD/" style="font-size: 10px;">DDD</a> <a href="/tags/DDID/" style="font-size: 10px;">DDID</a> <a href="/tags/java-单元测试-junit/" style="font-size: 10px;">java 单元测试 junit</a> <a href="/tags/java-虚拟机/" style="font-size: 10px;">java 虚拟机</a> <a href="/tags/mysql/" style="font-size: 10px;">mysql</a> <a href="/tags/压力测试使用/" style="font-size: 20px;">压力测试使用</a>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">Archives</h3>
<div class="widget">
<ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2018/05/">May 2018</a></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2018/02/">February 2018</a></li></ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">Recent Posts</h3>
<div class="widget">
<ul>
<li>
<a href="/2018/05/05/深入理解java虚拟机/">深入理解java虚拟机</a>
</li>
<li>
<a href="/2018/05/05/领域驱动设计/">DDD</a>
</li>
<li>
<a href="/2018/05/05/设计数据敏感服务/">DDID</a>
</li>
<li>
<a href="/2018/05/05/读书笔记--高性能mysql/">高性能的mysql读书笔记</a>
</li>
<li>
<a href="/2018/02/09/SpringSecurity/">Spring Security 1</a>
</li>
</ul>
</div>
</div>
</aside>
</div>
<footer id="footer">
<div class="outer">
<div id="footer-info" class="inner">
© 2018 Harry<br>
Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
</div>
</div>
</footer>
</div>
<nav id="mobile-nav">
<a href="/" class="mobile-nav-link">Home</a>
<a href="/archives" class="mobile-nav-link">Archives</a>
</nav>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script src="/js/script.js"></script>
</div>
</body>
</html>