-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.xml
736 lines (592 loc) · 56.1 KB
/
index.xml
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
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>韦昊斯的博客</title>
<link>http://www.weihaosi.me/</link>
<description>Recent content on 韦昊斯的博客</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-cn</language>
<lastBuildDate>Mon, 01 Apr 2019 10:42:16 +0800</lastBuildDate>
<atom:link href="http://www.weihaosi.me/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Postgresql 10 主从配置</title>
<link>http://www.weihaosi.me/post/postgresql-10-%E4%B8%BB%E4%BB%8E%E9%85%8D%E7%BD%AE/</link>
<pubDate>Mon, 01 Apr 2019 10:42:16 +0800</pubDate>
<guid>http://www.weihaosi.me/post/postgresql-10-%E4%B8%BB%E4%BB%8E%E9%85%8D%E7%BD%AE/</guid>
<description>实验环境 主从方案: 主数据库: db1 从数据库: db2 主从方式: 流复制 数据库版本: 10.3 操作系统: Centos 7.3 数据库安装 具体手动安装的详细方法,自行百度,这里提供一</description>
</item>
<item>
<title>Appium 的 Android 平台源码分析[转载]</title>
<link>http://www.weihaosi.me/post/appium-%E7%9A%84-android-%E5%B9%B3%E5%8F%B0%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E8%BD%AC%E8%BD%BD/</link>
<pubDate>Wed, 16 Jan 2019 15:56:06 +0800</pubDate>
<guid>http://www.weihaosi.me/post/appium-%E7%9A%84-android-%E5%B9%B3%E5%8F%B0%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E8%BD%AC%E8%BD%BD/</guid>
<description>[转载声明]内容整理来自csdn 的Q博士 appium框架之bootstrap bootstrap之Click事件 bootstrap之WaitF</description>
</item>
<item>
<title>Python Nose测试框架命令行详解</title>
<link>http://www.weihaosi.me/post/python-nose%E6%B5%8B%E8%AF%95%E6%A1%86%E6%9E%B6%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%AF%A6%E8%A7%A3/</link>
<pubDate>Wed, 16 Jan 2019 15:41:59 +0800</pubDate>
<guid>http://www.weihaosi.me/post/python-nose%E6%B5%8B%E8%AF%95%E6%A1%86%E6%9E%B6%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%AF%A6%E8%A7%A3/</guid>
<description><p><strong>-V, &ndash;version</strong></p>
<p>Output nose version and exit 打印nose的版本号</p>
<p><strong>-p, &ndash;plugins</strong></p>
<p>Output list of available plugins and exit. Combine with higher verbosity for greater detail</p>
<p><strong>-v=DEFAULT, &ndash;verbose=DEFAULT</strong></p>
<p>Be more verbose. [NOSE_VERBOSE] nose日志输出等级</p>
<p><strong>&ndash;verbosity=VERBOSITY</strong></p>
<p>Set verbosity; –verbosity=2 is the same as -v 和上面-v是一样</p>
<p><strong>-q=DEFAULT, &ndash;quiet=DEFAULT</strong></p>
<p>Be less verbose 精简的日志输出</p></description>
</item>
<item>
<title>阿里云NTP时间同步服务器</title>
<link>http://www.weihaosi.me/post/%E9%98%BF%E9%87%8C%E4%BA%91ntp%E6%97%B6%E9%97%B4%E5%90%8C%E6%AD%A5%E6%9C%8D%E5%8A%A1%E5%99%A8/</link>
<pubDate>Wed, 16 Jan 2019 15:35:25 +0800</pubDate>
<guid>http://www.weihaosi.me/post/%E9%98%BF%E9%87%8C%E4%BA%91ntp%E6%97%B6%E9%97%B4%E5%90%8C%E6%AD%A5%E6%9C%8D%E5%8A%A1%E5%99%A8/</guid>
<description>1 2 3 4 5 6 7 ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com ntp5.aliyun.com ntp6.aliyun.com ntp7.aliyun.com</description>
</item>
<item>
<title>华为手机优化办法</title>
<link>http://www.weihaosi.me/post/%E5%8D%8E%E4%B8%BA%E6%89%8B%E6%9C%BA%E4%BC%98%E5%8C%96%E5%8A%9E%E6%B3%95/</link>
<pubDate>Wed, 16 Jan 2019 15:31:43 +0800</pubDate>
<guid>http://www.weihaosi.me/post/%E5%8D%8E%E4%B8%BA%E6%89%8B%E6%9C%BA%E4%BC%98%E5%8C%96%E5%8A%9E%E6%B3%95/</guid>
<description>查看所有的已经安装的包名: adb shell pm list packages 无ROOT停用内置应用: adb shell pm disable-user &lt;name of package&gt; 无root卸载内置应用: pm uninstall -k --user 0 &lt;name of package&gt; 9.0 系统启用第三方桌面: 第一</description>
</item>
<item>
<title>新的启程!</title>
<link>http://www.weihaosi.me/life/2019-01-15-newlife/</link>
<pubDate>Tue, 15 Jan 2019 00:00:00 +0000</pubDate>
<guid>http://www.weihaosi.me/life/2019-01-15-newlife/</guid>
<description><p>2018 已经过去了半个月,感觉岁月的时差还是没让我一下子适应过来。修修补补的填坑已经成为2018年的常态。</p>
<p><strong>事情在总是感觉都有了计划,计划总是执行到一半就被否决。</strong></p>
<p><strong>愿望总是美好,最后的结果总是差强人意。</strong></p>
<p><strong>总感觉做了好多事情,关键的时候总没有可以拿出手的成果。</strong></p>
<p>2018年的工作对于我来说是不尽人意的。2017年计划的工作,就像上面说的一样,做了,总是磕磕绊绊,到年底拿出来见人,总觉得鸡肋,真是食之无味弃之可惜!</p>
<p>这些天,城里因为准备过年,空气中似乎开始弥漫一种忙碌而温暖的味道,少了往日的芜杂喧闹之后,难得的有了一份空寂的心态。然后慢慢的去反思这一年过来的点点滴滴。</p></description>
</item>
<item>
<title>11.3.6 Spring MVC Test Framework</title>
<link>http://www.weihaosi.me/post/2017-03-26-11-3-6-spring-mvc-test-framework/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2017-03-26-11-3-6-spring-mvc-test-framework/</guid>
<description><blockquote>
<p>独立的项目
在包括 Spring Framework 3.2之前,Spring MVC Test framework都是作为一个独立的项目挂在GitHub上面,通过不同人的实际使用、反馈和非常多的贡献来不断的成长。
这个独立的项目目前依然还是可以在Gihub上面找到,并且能在包括 Spring Framework 3.1.x之前的版本中去使用。使用3.2版本以上的应用必须替换依赖<code>spring-test-mvc</code>为<code>spring-test</code>
<code>spring-test</code>使用了不一样的包<code>org.springframework.test.web</code>,但是除了两点不同外,其他都是一样的。一点是在3.2版本新增的特性(比如web的异步请求)。另外一点是创建<code>MockMvc</code>实例的一些选项。在3.2以上的版本中,可以只需要通过<code>TestContext</code>框架来做这样的工作,这能够更好的加载配置文件。</p>
</blockquote></description>
</item>
<item>
<title>12. Spring MVC Test Integration</title>
<link>http://www.weihaosi.me/post/2017-03-26-12-spring-mvc-test-integration/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2017-03-26-12-spring-mvc-test-integration/</guid>
<description><h1 id="spring-mvc-test-集成">Spring MVC Test 集成</h1>
<h2 id="设置mockmvc和spring安全认证机制">设置MockMvc和Spring安全认证机制</h2>
<p>为了要在Spring MVC Test 中使用spring 的安全认证,必须添加spring 安全认证<code>FilterChainProxy</code>作为一个<code>Filter</code>。同时也必须要添加Spring 安全认证的<code>TestSecurityContextHolderPostProcessor</code>,以便支持使用注解方式来执行Spring MVC Test。这可以通过使用spring安全认证的<code>SecurityMockMvcConfigurers.springSecurity()</code>来实现。例子如下:</p></description>
</item>
<item>
<title>CentOS 挂载ISO镜像文件为本地源</title>
<link>http://www.weihaosi.me/post/centos-%E6%9C%AC%E5%9C%B0iso-%E6%8C%82%E8%BD%BD%E5%B9%B6%E9%85%8D%E7%BD%AE%E6%9C%AC%E5%9C%B0%E8%BD%AF%E4%BB%B6%E6%BA%90/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/centos-%E6%9C%AC%E5%9C%B0iso-%E6%8C%82%E8%BD%BD%E5%B9%B6%E9%85%8D%E7%BD%AE%E6%9C%AC%E5%9C%B0%E8%BD%AF%E4%BB%B6%E6%BA%90/</guid>
<description>CentOS 挂载ISO镜像文件为本地源 操作系统:CentOS5.5 ISO文件:CentOS5.5的ISO镜像一个 操作步骤: 一、挂载iso文件到挂载点 [root@server</description>
</item>
<item>
<title>Centos 7 安装Oracle 11G R2</title>
<link>http://www.weihaosi.me/post/centos-7%E5%AE%89%E8%A3%85oracle-11g-r2/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/centos-7%E5%AE%89%E8%A3%85oracle-11g-r2/</guid>
<description>1.Oracle 软硬件配置要求 1.1. 内存: 最小1G,推荐2G或者更高 查看命令:grep MemTotal /proc/meminfo 1.2. swap RAW Swap 1G至2G 1.5倍 2G至16G 同RAW相等 16G以上 16G 查看命</description>
</item>
<item>
<title>Centos Firewall 说明</title>
<link>http://www.weihaosi.me/post/centos-firewall-%E8%AF%B4%E6%98%8E/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/centos-firewall-%E8%AF%B4%E6%98%8E/</guid>
<description>安装 # yum install firewalld 如果需要图形界面的话,则再安装 # yum install firewall-config #一、介绍 防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与</description>
</item>
<item>
<title>Centos Hbase安装</title>
<link>http://www.weihaosi.me/post/centos-hbase%E5%AE%89%E8%A3%85/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/centos-hbase%E5%AE%89%E8%A3%85/</guid>
<description>JDK环境配置 具体这里不描述,步骤请百度 下载Hbase 下载地址:清华大学Hbase镜像 安装 直接解压文件就好tar -xzvf hbase-1.2.5-bin.tar.gz -C /data/。 单机版本</description>
</item>
<item>
<title>Centos Systemctl服务配置例子</title>
<link>http://www.weihaosi.me/post/centos-systemctl-%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/centos-systemctl-%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90/</guid>
<description>CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能</description>
</item>
<item>
<title>Fastdfs 并发测试和相关配置说明</title>
<link>http://www.weihaosi.me/post/fastdfs-%E5%B9%B6%E5%8F%91%E6%B5%8B%E8%AF%95/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/fastdfs-%E5%B9%B6%E5%8F%91%E6%B5%8B%E8%AF%95/</guid>
<description><blockquote>
<p>最近接触了一个新的平台,准备对平台的性能进行测试。开始收集性能需求和问题的时候,反馈最多的是平台的图片加载非常慢,甚至错乱。新平台的图片存储使用了Fastdfs服务进行管理,只有一个tracker和storage。那很明显,这个性能问题首先要从图片服务器Fastdfs开始测试。</p>
</blockquote></description>
</item>
<item>
<title>Linux iptables 端口转发配置 -- 基于ubuntu</title>
<link>http://www.weihaosi.me/post/2017-03-20-linux-iptables-%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E9%85%8D%E7%BD%AE-%E5%9F%BA%E4%BA%8Eubuntu/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2017-03-20-linux-iptables-%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E9%85%8D%E7%BD%AE-%E5%9F%BA%E4%BA%8Eubuntu/</guid>
<description><h1 id="打开端口转发功能">打开端口转发功能</h1>
<ul>
<li>临时设置</li>
</ul>
<p><code>sudo echo 1 &gt;/proc/sys/net/ipv4/ip_forward</code></p>
<ul>
<li>设置永久生效</li>
</ul>
<p>vim 打开 <code>/etc/sysctl.conf</code>文件 ,在文件中添加<code>net.ipv4.ip_forward=1</code>,通过命令<code>sudo sysctl -p</code>使其生效</p></description>
</item>
<item>
<title>《Flask Framework Cookbook》 学习笔记 - Flask 应用的配置</title>
<link>http://www.weihaosi.me/post/flaskcoolbook_1/</link>
<pubDate>Mon, 20 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/flaskcoolbook_1/</guid>
<description><blockquote>
<p>简单的Flask例子和安装就不讲了,大家去看官网的文档吧。</p>
</blockquote>
<h2 id="1-基础的配置">1. 基础的配置</h2>
<p>想让我们的程序运行在调试模式下,可以这样配置:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-python" data-lang="python"><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-python" data-lang="python"> <span class="n">app</span> <span class="o">=</span> <span class="n">Flask</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;DEBUG&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span></code></pre></td></tr></table>
</div>
</div>
<p>这个布尔值也可以通过Flask对象来设置:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-python" data-lang="python"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-python" data-lang="python"> <span class="n">app</span><span class="o">.</span><span class="n">debug</span> <span class="o">=</span> <span class="bp">True</span></code></pre></td></tr></table>
</div>
</div>
<p>一般情况下,我们都使用最开始那种方式去配置这个选项。</p></description>
</item>
<item>
<title>[转]移动端之Chrome远程调试</title>
<link>http://www.weihaosi.me/post/2017-03-10-%E8%BD%AC-%E7%A7%BB%E5%8A%A8%E7%AB%AF%E4%B9%8Bchrome%E8%BF%9C%E7%A8%8B%E8%B0%83%E8%AF%95/</link>
<pubDate>Fri, 10 Mar 2017 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2017-03-10-%E8%BD%AC-%E7%A7%BB%E5%8A%A8%E7%AB%AF%E4%B9%8Bchrome%E8%BF%9C%E7%A8%8B%E8%B0%83%E8%AF%95/</guid>
<description><blockquote>
<p>原文:<a href="http://www.jianshu.com/p/ccd3a53ad075?utm_campaign=haruki&amp;utm_content=note&amp;utm_medium=reader_share&amp;utm_source=qq">移动端之Chrome远程调试</a></p>
</blockquote>
<h1 id="原理">原理</h1>
<p>安卓远程调试支持所有操作系统(Windows,Mac, Linux, and Chrome OS.)中调试,支持:</p>
<p>调试站点的页面</p>
<p>调试安卓原生App中的WebView</p>
<p>实时将安卓设备的屏幕图像同步显示到开发机器</p>
<p>通过端口转发(port forwarding)与虚拟主机映射(virtual host mapping)实现安卓移动设备与开发服务器进行交互调试</p></description>
</item>
<item>
<title>Gatling 一步一步进阶 3 - 脚本结构</title>
<link>http://www.weihaosi.me/post/2016-12-09-gatling-%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E8%BF%9B%E9%98%B6-3/</link>
<pubDate>Fri, 09 Dec 2016 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2016-12-09-gatling-%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E8%BF%9B%E9%98%B6-3/</guid>
<description><h1 id="simulation-脚本结构">Simulation 脚本结构</h1>
<p>脚本是基于Scala类,包含四个部分:
* HTTP 协议配置
* 请求头定义
* 测试方案定义
* 测试策略定义</p>
<h2 id="http协议配置">HTTP协议配置</h2>
<p>最基本的配置是baseURL属性,这个地址将会作为每个测试方案测试时的http地址的前缀。除了这个,还可以配置通用的请求头属性,这里的这个请求头在每个请求都有效。
实例:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-python" data-lang="python"><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-python" data-lang="python"><span class="n">val</span> <span class="n">httpConf</span> <span class="o">=</span> <span class="n">http</span>
<span class="o">.</span><span class="n">baseURL</span><span class="p">(</span><span class="s2">&#34;http://computer-database.gatling.io&#34;</span><span class="p">)</span> <span class="o">//</span> <span class="err">主路径</span>
<span class="o">.</span><span class="n">acceptHeader</span><span class="p">(</span><span class="s2">&#34;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#34;</span><span class="p">)</span> <span class="o">//</span><span class="err">通用头</span>
<span class="o">.</span><span class="n">doNotTrackHeader</span><span class="p">(</span><span class="s2">&#34;1&#34;</span><span class="p">)</span> <span class="o">//</span> <span class="err">不跟踪</span>
<span class="o">.</span><span class="n">acceptLanguageHeader</span><span class="p">(</span><span class="s2">&#34;en-US,en;q=0.5&#34;</span><span class="p">)</span> <span class="o">//</span> <span class="err">头语言</span>
<span class="o">.</span><span class="n">acceptEncodingHeader</span><span class="p">(</span><span class="s2">&#34;gzip, deflate&#34;</span><span class="p">)</span> <span class="o">//</span> <span class="err">编码方式</span>
<span class="o">.</span><span class="n">userAgentHeader</span><span class="p">(</span><span class="s2">&#34;Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0&#34;</span><span class="p">)</span> <span class="o">//</span> <span class="err">用户代理</span></code></pre></td></tr></table>
</div>
</div></description>
</item>
<item>
<title>Jmeter命令行执行测试,自动备份log,输出jtl和html报告</title>
<link>http://www.weihaosi.me/post/2017-03-08-jmeter%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%89%A7%E8%A1%8C%E6%B5%8B%E8%AF%95%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BDlog%E8%BE%93%E5%87%BAjtl%E5%92%8Chtml%E6%8A%A5%E5%91%8A/</link>
<pubDate>Fri, 09 Dec 2016 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2017-03-08-jmeter%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%89%A7%E8%A1%8C%E6%B5%8B%E8%AF%95%E8%87%AA%E5%8A%A8%E5%A4%87%E4%BB%BDlog%E8%BE%93%E5%87%BAjtl%E5%92%8Chtml%E6%8A%A5%E5%91%8A/</guid>
<description>脚本大部分上是基于Jmeter自己的启动脚本进行修改 环境条件 配置JMETER_HOME 配置JAVA_HOME 配置ANT_HOME 脚本说明 启动</description>
</item>
<item>
<title>Gatling 一步一步进阶 2 - 配置</title>
<link>http://www.weihaosi.me/post/2016-12-08-gatling-%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E8%BF%9B%E9%98%B6-2/</link>
<pubDate>Thu, 08 Dec 2016 16:18:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2016-12-08-gatling-%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E8%BF%9B%E9%98%B6-2/</guid>
<description><h1 id="gatling-目录结构">Gatling 目录结构</h1>
<ul>
<li>bin 保存Gatling执行脚本和录制工具的脚本</li>
<li>conf 保存Gatling, Akka and Logback的配置文件.</li>
<li>lib 保存Gatling的一些库文件</li>
<li>user-files:
<ul>
<li>simulations 保存测试脚本,以包名为文件夹方式保存</li>
<li>data 保存参数化需要用的测试数据.</li>
<li>bodies 测试请求的body内容的模板.</li>
</ul></li>
<li>results 保存测试日志和测试报告.</li>
</ul></description>
</item>
<item>
<title>Gatling 一步一步进阶 0 - 入门实例</title>
<link>http://www.weihaosi.me/post/gatling-%E5%88%9D%E6%AD%A5%E5%AD%A6%E4%B9%A0/</link>
<pubDate>Thu, 08 Dec 2016 14:51:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/gatling-%E5%88%9D%E6%AD%A5%E5%AD%A6%E4%B9%A0/</guid>
<description><h1 id="下载与安装">下载与安装</h1>
<ul>
<li>下载地址:</li>
</ul>
<p><a href="http://gatling.io/#/resources/download">http://gatling.io/#/resources/download</a></p>
<ul>
<li>安装</li>
</ul>
<ol>
<li>解压文件</li>
<li>确保已经安装或者配置好JDK,最新版本的Gatling需要JDK8</li>
<li>Gatling的启动脚本和maven插件需要配置JAVA_HOME环境变量。</li>
<li>Gatling解压后就可以使用了,启动脚本在bin目录下,gatling.sh是启动测试,recorder.sh是启动录制</li>
</ol>
<blockquote>
<p>Gatling默认字符编码是UTF-8,你如果要修改,则需要改动下面几项:
1、 录制的时候要选择编码方式
2、 在gatling.conf配置中修改编码方式
3、保证你修改的文件和脚本的编码方式是正确的</p>
</blockquote></description>
</item>
<item>
<title>Gatling 一步一步进阶 1 - 入门实例拓展</title>
<link>http://www.weihaosi.me/post/2016-12-08-gatling-%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E8%BF%9B%E9%98%B6-1/</link>
<pubDate>Thu, 08 Dec 2016 14:51:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2016-12-08-gatling-%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E8%BF%9B%E9%98%B6-1/</guid>
<description><h1 id="独立过程处理">独立过程处理</h1>
<p>其实 <a href="https://blog.idriverclub.com/2016/12/08/2016/12/gatling-%E5%88%9D%E6%AD%A5%E5%AD%A6%E4%B9%A0/#more">上节</a>就已经使用了。
简单的方式就是如下(官方例子):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-scala" data-lang="scala"><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-scala" data-lang="scala"><span class="k">object</span> <span class="nc">Search</span> <span class="o">{</span>
<span class="k">val</span> <span class="n">search</span> <span class="k">=</span> <span class="n">exec</span><span class="o">(</span><span class="n">http</span><span class="o">(</span><span class="s">&#34;Home&#34;</span><span class="o">)</span> <span class="c1">// let&#39;s give proper names, as they are displayed in the reports
</span><span class="c1"></span> <span class="o">.</span><span class="n">get</span><span class="o">(</span><span class="s">&#34;/&#34;</span><span class="o">))</span>
<span class="o">.</span><span class="n">pause</span><span class="o">(</span><span class="mi">7</span><span class="o">)</span>
<span class="o">.</span><span class="n">exec</span><span class="o">(</span><span class="n">http</span><span class="o">(</span><span class="s">&#34;Search&#34;</span><span class="o">)</span>
<span class="o">.</span><span class="n">get</span><span class="o">(</span><span class="s">&#34;/computers?f=macbook&#34;</span><span class="o">))</span>
<span class="o">.</span><span class="n">pause</span><span class="o">(</span><span class="mi">2</span><span class="o">)</span>
<span class="o">.</span><span class="n">exec</span><span class="o">(</span><span class="n">http</span><span class="o">(</span><span class="s">&#34;Select&#34;</span><span class="o">)</span>
<span class="o">.</span><span class="n">get</span><span class="o">(</span><span class="s">&#34;/computers/6&#34;</span><span class="o">))</span>
<span class="o">.</span><span class="n">pause</span><span class="o">(</span><span class="mi">3</span><span class="o">)</span>
<span class="o">}</span>
<span class="k">object</span> <span class="nc">Browse</span> <span class="o">{</span>
<span class="k">val</span> <span class="n">browse</span> <span class="k">=</span> <span class="o">???</span><span class="n">这里写动作</span>
<span class="o">}</span>
<span class="k">object</span> <span class="nc">Edit</span> <span class="o">{</span>
<span class="k">val</span> <span class="n">edit</span> <span class="k">=</span> <span class="o">???</span><span class="n">这里写动作</span>
<span class="o">}</span>
<span class="c1">//这里这样使用
</span><span class="c1"></span>
<span class="k">val</span> <span class="n">scn</span> <span class="k">=</span> <span class="n">scenario</span><span class="o">(</span><span class="s">&#34;Scenario Name&#34;</span><span class="o">).</span><span class="n">exec</span><span class="o">(</span><span class="nc">Search</span><span class="o">.</span><span class="n">search</span><span class="o">,</span> <span class="nc">Browse</span><span class="o">.</span><span class="n">browse</span><span class="o">,</span> <span class="nc">Edit</span><span class="o">.</span><span class="n">edit</span><span class="o">)</span></code></pre></td></tr></table>
</div>
</div></description>
</item>
<item>
<title>Spring 模块说明</title>
<link>http://www.weihaosi.me/post/spring-%E6%A8%A1%E5%9D%97%E8%AF%B4%E6%98%8E/</link>
<pubDate>Thu, 08 Dec 2016 14:51:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/spring-%E6%A8%A1%E5%9D%97%E8%AF%B4%E6%98%8E/</guid>
<description><blockquote>
<p>Spring 是模块化的,这意味着可以只使用自己需要的模块</p>
<h1 id="模块框架">模块框架</h1>
<p><img src="http://onj0ixn0u.bkt.clouddn.com/20170405201337655.png" alt="20170405201337655" /></p>
</blockquote>
<h1 id="核心容器-core-container">核心容器(Core container)</h1>
<ul>
<li>Spring-Core: 核心工具类,Spring 其他模块大量使用Spring-Core</li>
<li>Spring-Bean: Spring定义Bean的支持</li>
<li>Spring-Context: 运行时Spring容器</li>
<li>Spring-Context-Support: Spring容器对第三方包的集成支持</li>
<li>Spring-Expression: 使用表达式语言在运行时查询和操作对象。</li>
</ul></description>
</item>
<item>
<title>Tomcat 启动关闭重启脚本</title>
<link>http://www.weihaosi.me/post/tomcat-%E5%90%AF%E5%8A%A8%E5%85%B3%E9%97%AD%E9%87%8D%E5%90%AF%E8%84%9A%E6%9C%AC/</link>
<pubDate>Thu, 08 Dec 2016 14:51:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/tomcat-%E5%90%AF%E5%8A%A8%E5%85%B3%E9%97%AD%E9%87%8D%E5%90%AF%E8%84%9A%E6%9C%AC/</guid>
<description><blockquote>
<p>这个脚本是从网上服务之过来使用的,具体是谁的我这里已经找不到了,如果作者看到可以给我信息,我会把原链接补充上。</p>
<p>脚本做了一些改动,主要是获取PID的时候缺少了一些过滤</p>
</blockquote></description>
</item>
<item>
<title>ubuntu引导修复和emergenc mode修复</title>
<link>http://www.weihaosi.me/post/ubuntubootrecuse/</link>
<pubDate>Thu, 08 Dec 2016 14:51:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/ubuntubootrecuse/</guid>
<description>修复引导 系统直接进入grub rescuse模式 * 输入命令ls 显示所有的盘符,通过ls对应的盘符显示盘符的文件系统来确认目标分区, 1 ls (hd0,msdos5) 应该正</description>
</item>
<item>
<title>单元测试和自动化脚本简要教程</title>
<link>http://www.weihaosi.me/post/junit-4-%E7%AE%80%E6%98%8E%E6%95%99%E7%A8%8B/</link>
<pubDate>Thu, 08 Dec 2016 14:51:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/junit-4-%E7%AE%80%E6%98%8E%E6%95%99%E7%A8%8B/</guid>
<description>Junit 4 简明教程 规范与要求 Junit 需要使用的版本都是4.x以上的版本,不可以使用3.x以下的版本 Junit 测试脚本在Maven项目中统一放在在src/main</description>
</item>
<item>
<title>Python 装饰器深入学习 - 基础</title>
<link>http://www.weihaosi.me/post/2016-12-05-python-%E8%A3%85%E9%A5%B0%E5%99%A8%E6%B7%B1%E5%85%A5%E5%AD%A6%E4%B9%A0/</link>
<pubDate>Mon, 05 Dec 2016 10:50:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2016-12-05-python-%E8%A3%85%E9%A5%B0%E5%99%A8%E6%B7%B1%E5%85%A5%E5%AD%A6%E4%B9%A0/</guid>
<description><blockquote>
<p>相关的官方wiki文档:<a href="https://wiki.python.org/moin/PythonDecorators#About_this_page">https://wiki.python.org/moin/PythonDecorators#About_this_page</a></p>
</blockquote>
<h1 id="概述">概述</h1>
<p>装饰器是软件设计模式的一种名词。装饰器可以动态改变函数,方法,类的功能,不需要写个子类或者修改原先函数中已经编写好的代码。
常见的装饰器设计模式可以查看维基<a href="http://en.wikipedia.org/wiki/Decorator">http://en.wikipedia.org/wiki/Decorator</a>
在Python语言中有关的装饰器并不和上面说的这些完全一样。Python中的装饰器是具体的Python语法,以方便的改变函数或者方法。Python装饰器是从2.4版本开始支持,在<a href="http://www.python.org/peps/pep-0318.html">PEP 318</a>中提出的。</p>
<h1 id="官方实例">官方实例</h1>
<p>地址在<a href="https://wiki.python.org/moin/PythonDecoratorLibrary">PythonDecoratorLibrary</a>,另外可以查看<a href="vhttps://wiki.python.org/moin/MixIns">MixIns</a>和<a href="https://wiki.python.org/moin/MetaClasses">MetaClasses</a></p>
<h1 id="关于写法">关于写法</h1>
<p>关于Python装饰器的写法有很多种,具体的可以去查看一下官方wik的<a href="https://wiki.python.org/moin/PythonDecorators#Current_Python_Decorator_Proposals">Current Python Decorator Proposals</a>]章节</p></description>
</item>
<item>
<title>Python with 上下文实例</title>
<link>http://www.weihaosi.me/post/2016-12-03-python-with-%E4%B8%8A%E4%B8%8B%E6%96%87%E5%AE%9E%E4%BE%8B/</link>
<pubDate>Sat, 03 Dec 2016 17:48:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2016-12-03-python-with-%E4%B8%8A%E4%B8%8B%E6%96%87%E5%AE%9E%E4%BE%8B/</guid>
<description><blockquote>
<p>本节涉及的内容包括装饰器,生成器,迭代器的相关内容,如果不很清楚请先查看这方面的内容</p>
</blockquote>
<h1 id="需求">需求</h1>
<p>本次实例的需求是要记录么次调用过程中的API,调用完成后清理程序的运行环境</p>
<h1 id="如何实现">如何实现</h1>
<h2 id="首先实现建立两个测试类">首先实现建立两个测试类</h2>
<p>建立的类如下:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-python" data-lang="python"><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-python" data-lang="python"><span class="k">class</span> <span class="nc">One</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&#34;Log One class init for debug&#34;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_private</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="k">def</span> <span class="nf">one</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">two</span><span class="p">()</span>
<span class="n">other</span><span class="o">.</span><span class="n">thing</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_private</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">two</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="k">class</span> <span class="nc">Two</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&#34;Log Two class init for debug&#34;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">thing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="n">other</span><span class="o">.</span><span class="n">two</span><span class="p">()</span></code></pre></td></tr></table>
</div>
</div></description>
</item>
<item>
<title>Python进阶学习 - 低于类级 协同程序</title>
<link>http://www.weihaosi.me/post/2016-12-02-python%E8%BF%9B%E9%98%B6%E5%AD%A6%E4%B9%A0-%E4%BD%8E%E4%BA%8E%E7%B1%BB%E7%BA%A7-2/</link>
<pubDate>Fri, 02 Dec 2016 13:41:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2016-12-02-python%E8%BF%9B%E9%98%B6%E5%AD%A6%E4%B9%A0-%E4%BD%8E%E4%BA%8E%E7%B1%BB%E7%BA%A7-2/</guid>
<description><h1 id="协同程序">协同程序</h1>
<blockquote>
<p>协同程序是可以挂起,恢复,并且有多个进入点的函数。比如Io,lua,可以实现协同多个任务和管道机制。
在Python中,协同程序的替代者是线程
线程要关注资源锁,协同程序不需要。
生成器几乎就是协同程序,在<a href="https://www.python.org/dev/peps/pep-0342">PEP 342</a>中实例化了生成器的新行为,提供了创建协同程序的调度程序的完整实例,Trampoline模式,通过队列把多个协同程序连接在一起</p>
</blockquote>
<p>生成器本身是可以提供挂起,产生一个值的功能,但还算不是最好的协同程序。当别的函数在执行的时候生成器不能通过yield进行控制,除非这些函数本身也是生成器,并且外部生成器yield的值是通过内部生成器yield控制的。
然而,如果要通过传一个值或者异常到生成器中(当生成器被挂起),一个简单的调度程序或者递归程序将会异步的进行调用。例如异步socket I/O可以这样做</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-Python" data-lang="Python"><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-Python" data-lang="Python"><span class="c1"># 伪代码</span>
<span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">yield</span> <span class="n">nonblocking_read</span><span class="p">(</span><span class="n">my_socket</span><span class="p">,</span> <span class="n">nbytes</span><span class="p">))</span></code></pre></td></tr></table>
</div>
</div></description>
</item>
<item>
<title>Python进阶学习 - 低于类级 列表推导、迭代器、生成器</title>
<link>http://www.weihaosi.me/post/2016-12-01-python%E8%BF%9B%E9%98%B6%E5%AD%A6%E4%B9%A0-%E5%88%97%E8%A1%A8%E6%8E%A8%E5%AF%BC/</link>
<pubDate>Thu, 01 Dec 2016 15:14:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/2016-12-01-python%E8%BF%9B%E9%98%B6%E5%AD%A6%E4%B9%A0-%E5%88%97%E8%A1%A8%E6%8E%A8%E5%AF%BC/</guid>
<description><h1 id="列表推导">列表推导</h1>
<blockquote>
<p>列表推导式(list comprehension)是利用其他列表创建新列表(类似于数学术语中的集合推导式)的一种方法。它的工作方式类似于for循环,但在简单场景下比for循环效率更高。
** 关键语:没当对序列进行循环处理时,应该考虑使用列表推导式 **</p>
</blockquote>
<p>下面做了个简单的测试:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-Python" data-lang="Python"><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-Python" data-lang="Python"><span class="kn">import</span> <span class="nn">time</span>
<span class="c1"># 没有用推导式</span>
<span class="n">begin</span><span class="o">=</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
<span class="n">num</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100000</span><span class="p">)</span>
<span class="n">even</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">num</span><span class="p">)</span>
<span class="k">while</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">size</span><span class="p">:</span>
<span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">even</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="n">i</span> <span class="o">+=</span><span class="mi">1</span>
<span class="n">end</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
<span class="k">print</span> <span class="s2">&#34;没使用推导式耗时:</span><span class="si">%f</span><span class="s2">&#34;</span> <span class="o">%</span><span class="p">(</span><span class="n">end</span><span class="o">-</span><span class="n">begin</span><span class="p">)</span>
<span class="c1"># print even</span>
<span class="c1"># 使用推导式</span>
<span class="n">begin</span><span class="o">=</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
<span class="n">even</span><span class="o">=</span><span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100000</span><span class="p">)</span> <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span><span class="mi">0</span><span class="p">]</span>
<span class="n">end</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
<span class="k">print</span> <span class="s2">&#34;使用推导式耗时:</span><span class="si">%f</span><span class="s2">&#34;</span> <span class="o">%</span><span class="p">(</span><span class="n">end</span><span class="o">-</span><span class="n">begin</span><span class="p">)</span></code></pre></td></tr></table>
</div>
</div>
<p>结果如下:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell"><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-shell" data-lang="shell">没使用推导式耗时:0.020000
使用推导式耗时:0.012000</code></pre></td></tr></table>
</div>
</div></description>
</item>
<item>
<title>《Flask Framework Cookbook》 学习笔记 - RESTful API</title>
<link>http://www.weihaosi.me/post/flask-framework-cookbook-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-restful-api/</link>
<pubDate>Tue, 29 Nov 2016 11:03:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/flask-framework-cookbook-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-restful-api/</guid>
<description>REST 全名:REpresentational State Transfer,意思是指表征状态转移,Roy Fielding博士在2000年他的博士论文中提出来</description>
</item>
<item>
<title>《Flask Framework Cookbook》 学习笔记 - Facebook、Google、Twitter等认证</title>
<link>http://www.weihaosi.me/post/flask-framework-cookbook-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-flask-%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81-3/</link>
<pubDate>Wed, 23 Nov 2016 15:02:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/flask-framework-cookbook-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-flask-%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81-3/</guid>
<description>这些第三方的登录认证方式都是采用了Oauth2.0的授权机制,所以方法都是类似的。 在做这个之前,首先要到各个相关网站去注册相应的开发者账号,</description>
</item>
<item>
<title>《Flask Framework Cookbook》 学习笔记 - Flask 用户认证 - OpenID认证</title>
<link>http://www.weihaosi.me/post/flask-framework-cookbook-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-flask-%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81-2/</link>
<pubDate>Tue, 22 Nov 2016 13:22:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/flask-framework-cookbook-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-flask-%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81-2/</guid>
<description>通过OpenID,我们可以使用第三方的帐号登录,而不需要再注册帐号 这些只是需要授权必要的用户信息,也可以通过OpenID设置哪些用户信息可以</description>
</item>
<item>
<title>《Flask Framework Cookbook》 学习笔记 - Flask 用户认证 - 基本认证方式</title>
<link>http://www.weihaosi.me/post/flask-framework-cookbook-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-flask-%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81/</link>
<pubDate>Wed, 16 Nov 2016 13:25:28 +0800</pubDate>
<guid>http://www.weihaosi.me/post/flask-framework-cookbook-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0-flask-%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81/</guid>
<description>基于session的简单用户认证 当第一时间登录后,用户的信息将会在应用服务端的session中和浏览器的cookie中进行保存 这种情况下,必</description>
</item>
<item>
<title>关于我</title>
<link>http://www.weihaosi.me/about/</link>
<pubDate>Wed, 09 Apr 2014 00:00:00 +0000</pubDate>
<guid>http://www.weihaosi.me/about/</guid>
<description>没有什么好介绍的😊</description>
</item>
<item>
<title></title>
<link>http://www.weihaosi.me/post/newnote_1551539053537/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>http://www.weihaosi.me/post/newnote_1551539053537/</guid>
<description>dddd</description>
</item>
</channel>
</rss>