-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathindex.html
632 lines (322 loc) · 24.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
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
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Zhenyu’s Blog</title>
<meta name="author" content="张振宇">
<meta name="description" content="我在和别人结对写C#代码的时候,只要有可能,我都会用list的forEach方法写循环,而不是用for-loop。同伴很不解,我打趣地说:“这完全是一个Java程序员的恶趣味,因为在Java的世界里没有Lambda”。说实话,我非常喜欢Lambda表达式,它简洁、明确、非常优雅。幸运的是, …">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://zyzhang.github.io">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<link href="/atom.xml" rel="alternate" title="Zhenyu's Blog" type="application/atom+xml">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/libs/jquery.min.js"></script>
<!--script>!window.jQuery && document.write(unescape(‘%3Cscript src=”./javascripts/libs/jquery.min.js”%3E%3C/script%3E’))</script -->
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-34484534-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">Zhenyu’s Blog</a></h1>
<h2>陌上发花,可以缓缓醉矣, 忍把浮名,换了浅酌低唱。</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="https://www.google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:zyzhang.github.io" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/18/java8-preview-lambda-expression/">Java 8 预览之Lambda表达式</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-06-18T00:00:00+08:00'><span class='date'><span class='date-month'>Jun</span> <span class='date-day'>18</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2013/06/18/java8-preview-lambda-expression/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2013/06/18/java8-preview-lambda-expression/">Comments</a>
</p>
</header>
<div class="entry-content"><p>我在和别人结对写C#代码的时候,只要有可能,我都会用list的forEach方法写循环,而不是用for-loop。同伴很不解,我打趣地说:“这完全是一个Java程序员的恶趣味,因为在Java的世界里没有Lambda”。说实话,我非常喜欢Lambda表达式,它简洁、明确、非常优雅。幸运的是,经历了Java 7的跳票之后,Java 8终于很有诚意的包含Lambda了。</p>
<p><a href="http://en.wikipedia.org/wiki/Lambda_expression">Lambda表达式</a>其实就是匿名函数,它可以作为参数传递给<a href="http://en.wikipedia.org/wiki/Higher-order_function">高阶函数</a>供其调用。</p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/06/18/java8-preview-lambda-expression/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/15/java8-preview-method-reference/">Java 8 预览之Method Reference</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-06-15T00:00:00+08:00'><span class='date'><span class='date-month'>Jun</span> <span class='date-day'>15</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2013/06/15/java8-preview-method-reference/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2013/06/15/java8-preview-method-reference/">Comments</a>
</p>
</header>
<div class="entry-content"><p>先看一个Lambda表达式的例子:</p>
<div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">Arrays</span><span class="o">.</span><span class="na">asList</span><span class="o">(</span><span class="s">"Windows"</span><span class="o">,</span> <span class="s">"Mac OSX"</span><span class="o">).</span><span class="na">forEach</span><span class="o">(</span><span class="n">x</span> <span class="o">-></span> <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">x</span><span class="o">));</span></code></pre></div>
<p>既然Lambda表达式<code>x->System.out.println(x)</code>相当于匿名函数(接受一个String类型的参数,无返回值),那么对于其使用者<code>forEach</code>而言,传给它一个匿名函数还是有名字的函数其实没有区别,只要这个函数满足<code>forEach</code>的参数规约即可。而且很多时候有名字的函数反而可读性更好并且更利于代码重用。如此说来,Java 8 引入方法引用(Method Reference)也就顺理成章了。上面的代码用方法引用可以写成:</p>
<div class="highlight"><pre><code class="language-java" data-lang="java"><span class="n">Arrays</span><span class="o">.</span><span class="na">asList</span><span class="o">(</span><span class="s">"Windows"</span><span class="o">,</span> <span class="s">"Mac OSX"</span><span class="o">).</span><span class="na">forEach</span><span class="o">(</span><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">::</span><span class="n">println</span><span class="o">);</span></code></pre></div>
</div>
<footer>
<a rel="full-article" href="/blog/2013/06/15/java8-preview-method-reference/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/15/java8-preview-functional-interface/">Java 8 预览之Functional Interface</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-06-15T00:00:00+08:00'><span class='date'><span class='date-month'>Jun</span> <span class='date-day'>15</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2013/06/15/java8-preview-functional-interface/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2013/06/15/java8-preview-functional-interface/">Comments</a>
</p>
</header>
<div class="entry-content"><p>在JDK的类库中,有很多只声明了一个方法的接口,比如<code>java.lang.Iterable<T></code>和<code>java.lang.Runnable</code>。这些接口被称为单抽象方法接口(Single Abstract Method interfaces),它表达了一种逻辑上的单一功能约定。</p>
<p>Java 8为这样的接口引入了一个新概念——函数式接口(<strong>Functional Interface</strong>),同时引入注解<code>@FunctionalInterface</code>以帮助编译器检查函数式接口的合法性。</p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/06/15/java8-preview-functional-interface/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/13/java8previewdefaultmethod/">Java 8 预览之Default Method</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-06-13T00:00:00+08:00'><span class='date'><span class='date-month'>Jun</span> <span class='date-day'>13</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2013/06/13/java8previewdefaultmethod/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2013/06/13/java8previewdefaultmethod/">Comments</a>
</p>
</header>
<div class="entry-content"><p>打开JDK 8的源代码,你会发现很多接口中多了一些标记为<strong>default</strong>的方法。在Java的早期版本中,<strong>default</strong>关键字只在switch语句中使用,在方法上使用代表什么含义呢?让我们一起来看一下Java 8新特性:<strong>Default Method</strong>。</p>
<h3>何为Default Method</h3>
<p>默认方法(Default Method),又称虚拟扩展方法(Virtual Extension Methods)或保卫者方法(Defender Method),是<a href="http://www.jcp.org/en/jsr/detail?id=335">JSR 335</a>的一部分。让我们先看一下JDK中的实际例子:</p>
<div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">Iterable</span><span class="o"><</span><span class="n">T</span><span class="o">></span> <span class="o">{</span>
<span class="n">Iterator</span><span class="o"><</span><span class="n">T</span><span class="o">></span> <span class="nf">iterator</span><span class="o">();</span>
<span class="k">default</span> <span class="kt">void</span> <span class="nf">forEach</span><span class="o">(</span><span class="n">Consumer</span><span class="o"><?</span> <span class="kd">super</span> <span class="n">T</span><span class="o">></span> <span class="n">action</span><span class="o">)</span> <span class="o">{</span>
<span class="n">Objects</span><span class="o">.</span><span class="na">requireNonNull</span><span class="o">(</span><span class="n">action</span><span class="o">);</span>
<span class="k">for</span> <span class="o">(</span><span class="n">T</span> <span class="n">t</span> <span class="o">:</span> <span class="k">this</span><span class="o">)</span> <span class="o">{</span>
<span class="n">action</span><span class="o">.</span><span class="na">accept</span><span class="o">(</span><span class="n">t</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span></code></pre></div>
</div>
<footer>
<a rel="full-article" href="/blog/2013/06/13/java8previewdefaultmethod/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/06/13/intellij-java8-compile-require-target-1-8/">IntelliJ中Java8编译错误-‘source Release 8 Requires Target Release 1.8’</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-06-13T00:00:00+08:00'><span class='date'><span class='date-month'>Jun</span> <span class='date-day'>13</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2013/06/13/intellij-java8-compile-require-target-1-8/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2013/06/13/intellij-java8-compile-require-target-1-8/">Comments</a>
</p>
</header>
<div class="entry-content"><p>在IntelliJ的Java8项目中,尽管已经将Project SDK和Project Launguage Level设置为Java 8,编译测试时仍然会出现编译错误:</p>
<blockquote><p>java: javacTask: source release 8 requires target release 1.8
这里列出了两种解决方案…</p></blockquote>
</div>
<footer>
<a rel="full-article" href="/blog/2013/06/13/intellij-java8-compile-require-target-1-8/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/04/28/test-pyramid/">测试金字塔(Test Pyramid)</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-04-28T00:00:00+08:00'><span class='date'><span class='date-month'>Apr</span> <span class='date-day'>28</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2013/04/28/test-pyramid/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2013/04/28/test-pyramid/">Comments</a>
</p>
</header>
<div class="entry-content"><p>本文翻译自Martin Fowler的著名文章‘Test Pyramid’,详细论述了敏捷测试中的金字塔结构。</p>
<ul>
<li>原文: <a href="http://martinfowler.com/bliki/TestPyramid.html">Test Pyramid</a></li>
<li>作者: <a href="http://martinfowler.com/">Martin Fowler</a></li>
</ul>
<hr />
<p>测试金字塔概念由<a href="http://www.mountaingoatsoftware.com/">Mike Cohn</a>提出,并在其著作<a href="http://www.amazon.com/gp/product/0321579364?ie=UTF8&tag=martinfowlerc-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0321579364">《Succeeding with Agile》</a><a href="#MyAnnotation1"><sup>译注1</sup></a>中做了详细论述。其核心观点是底层单元测试应多于依赖GUI的高层端到端测试。</p>
<p><img src="/assets/image/posts/TestPyramid.jpeg" alt="Test Pyramid" /></p>
<p>在我职业生涯的大部分时间中,测试自动化就是使用自动化测试工具在用户界面上操控应用程序。这些工具一般都提供录制和回放的功能,并验证应用程序返回了同样的结果。开始时,这种方式工作得很好。测试也很容易录制,即使没有程序设计经验,也可以轻松完成。</p>
<p>但是,这种方法很快就陷入了困境,演变成所谓的<a href="http://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone/">蛋卷冰淇淋</a>。主要问题包括:基于UI的测试运行缓慢,增加了构建时间;测试自动化工具往往还需安装授权许可,这意味着这些软件只能在特定的机器上运行;通常这些测试还很难以“傻瓜”模式运行,即通过脚本执行并置入合适的部署流水线(deployment pipeline)。</p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/04/28/test-pyramid/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/02/08/z-team-2012-popular-words/">Z Team 2012年度热门词汇</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-02-08T00:00:00+08:00'><span class='date'><span class='date-month'>Feb</span> <span class='date-day'>8</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2013/02/08/z-team-2012-popular-words/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2013/02/08/z-team-2012-popular-words/">Comments</a>
</p>
</header>
<div class="entry-content"><p>2013年2月7日,农历腊月廿七。在这辞旧迎新的美好时刻,Z Team 2012年度总结大会在北京隆重召开。参会的有Z Team的阿宝,晨仔,KK, 少年,xiaoyun; Z Team毕业生代表yuheng,张胖纸,风吹PP凉,以及友邻代表王胖纸。各界人士在热烈友好的气氛中就共同关心的问题深入交换意见,达成广泛共识。最后,与会各方一致评选出2012年度十大热门词汇,排名不分先后(据说只有Z Team的人才能看懂):</p>
<ul>
<li><strong>这不重要</strong></li>
<li><strong>你说什么</strong></li>
<li><strong>API(A读三声)</strong></li>
<li><strong>反省</strong></li>
<li><strong>我错了</strong></li>
<li><strong>转一个</strong></li>
<li><strong>成功了</strong></li>
<li><strong>你是最棒的</strong></li>
<li><strong>弱爆了</strong></li>
<li><strong>你是对的</strong></li>
</ul>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/01/28/z-team-memorise/">缅怀Z Team</a></h1>
<p class="meta">
<time class='entry-date' datetime='2013-01-28T00:00:00+08:00'><span class='date'><span class='date-month'>Jan</span> <span class='date-day'>28</span><span class='date-suffix'>th</span>, <span class='date-year'>2013</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2013/01/28/z-team-memorise/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2013/01/28/z-team-memorise/">Comments</a>
</p>
</header>
<div class="entry-content"><script type="text/javascript" src="../scripts/tagline.js"></script>
<p><img src="/assets/image/posts/z_team.png" alt="z_team" /></p>
<p>Z Team从前年几个人到LA做Inception,到巅峰时期两个Stream近二十人的团队,再到现在算上在美国的大哥一共六个人。就像人的一生,从出生后蹒跚学步咿呀学语,到少年时充满梦想挥洒青春,最后垂垂老矣闲时缅怀旧日时光。我们都知道,总有一天,Z Team会最终消失,但我相信,那些我们共同度过的时光,会在每个人心里慢慢发酵成美好的回忆。下面的歌词改编自《同桌的你》,缅怀那些我们共同拥有的欢笑和泪水。</p>
</div>
<footer>
<a rel="full-article" href="/blog/2013/01/28/z-team-memorise/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/09/10/avoid-dependency-of-github-pages-jekyll/">避免依赖Github Pages和Jekyll生成静态文件</a></h1>
<p class="meta">
<time class='entry-date' datetime='2012-09-10T00:00:00+08:00'><span class='date'><span class='date-month'>Sep</span> <span class='date-day'>10</span><span class='date-suffix'>th</span>, <span class='date-year'>2012</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2012/09/10/avoid-dependency-of-github-pages-jekyll/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2012/09/10/avoid-dependency-of-github-pages-jekyll/">Comments</a>
</p>
</header>
<div class="entry-content"><p>之前用Github Pages + Jekyll搭建了自己的博客,有一次玩Jekyll插件之后,博客里所有使用Pygments的代码高亮都不工作了,
即使revert代码也无济于事,更奇怪的是,本地运行jekyll完全没问题,折腾很久都没有解决… 最后,我只好采取了终极解决方案了。</p>
<p><a href="https://help.github.com/articles/using-jekyll-with-pages">Github Pages的文档</a>上说,当前(2012年9月)使用的是
Jekyll 0.11.0和Liquid 2.2.2,并且使用下面命令运行:</p>
<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>jekyll --pygments --no-lsi --safe</code></pre></div>
</div>
<footer>
<a rel="full-article" href="/blog/2012/09/10/avoid-dependency-of-github-pages-jekyll/">Read on →</a>
</footer>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/09/03/blog-with-github-pages-and-jekyll-seo/">Github Pages + Jekyll搭建博客之SEO</a></h1>
<p class="meta">
<time class='entry-date' datetime='2012-09-03T00:00:00+08:00'><span class='date'><span class='date-month'>Sep</span> <span class='date-day'>3</span><span class='date-suffix'>rd</span>, <span class='date-year'>2012</span></span> <span class='time'>12:00 am</span></time>
| <a href="/blog/2012/09/03/blog-with-github-pages-and-jekyll-seo/#disqus_thread"
data-disqus-identifier="http://zyzhang.github.io/blog/2012/09/03/blog-with-github-pages-and-jekyll-seo/">Comments</a>
</p>
</header>
<div class="entry-content"><p>对我自己的博客而言,有些内容仅仅是自娱自乐,有没有人看不重要;而有的内容我希望能分享出去被更多的人看到,比如nHibernate Mapping By Code的一系列文章,
都是项目中实际总结出来的,那时候nHibernate刚刚增加Mapping By Code的方式,官方文档内容几乎没有,google搜索很少能找到精确的结果。所以,如果这些文章能
被更广泛的传播会帮助更多的人。</p>
<p>在用<a href="http://pages.github.com">Github Pages</a> + <a href="http://jekyllrb.com">Jekyll</a>搭建博客的过程中,
学到了不少<a href="http://en.wikipedia.org/wiki/Search_engine_optimization">SEO(Search Engine Optimization)</a>
的知识,比如如何让博客被搜索引擎收录,需要注意哪些以提高排名等等。于是,便有了下面几条简单的总结。</p>
</div>
<footer>
<a rel="full-article" href="/blog/2012/09/03/blog-with-github-pages-and-jekyll-seo/">Read on →</a>
</footer>
</article>
<div class="pagination">
<a class="prev" href="/posts/2">← Older</a>
<a href="/blog/archives">Blog Archives</a>
</div>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/blog/2013/06/18/java8-preview-lambda-expression/">Java 8 预览之Lambda表达式</a>
</li>
<li class="post">
<a href="/blog/2013/06/15/java8-preview-method-reference/">Java 8 预览之Method Reference</a>
</li>
<li class="post">
<a href="/blog/2013/06/15/java8-preview-functional-interface/">Java 8 预览之Functional Interface</a>
</li>
<li class="post">
<a href="/blog/2013/06/13/java8previewdefaultmethod/">Java 8 预览之Default Method</a>
</li>
<li class="post">
<a href="/blog/2013/06/13/intellij-java8-compile-require-target-1-8/">IntelliJ中Java8编译错误-‘source Release 8 Requires Target Release 1.8’</a>
</li>
</ul>
</section>
<section>
<h1>GitHub Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating…</li>
</ul>
<a href="https://github.com/zyzhang">@zyzhang</a> on GitHub
<script type="text/javascript">
$(document).ready(function(){
if (!window.jXHR){
var jxhr = document.createElement('script');
jxhr.type = 'text/javascript';
jxhr.src = '/javascripts/libs/jXHR.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jxhr, s);
}
github.showRepos({
user: 'zyzhang',
count: 0,
skip_forks: true,
target: '#gh_repos'
});
});
</script>
<script src="/javascripts/github.js" type="text/javascript"> </script>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright © 2014 - 张振宇 -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'zhenyublog';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
</body>
</html>