-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.xml
2091 lines (2065 loc) · 482 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
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Jinming Hu</title>
<link>https://conanhujinming.github.io/</link>
<atom:link href="https://conanhujinming.github.io/index.xml" rel="self" type="application/rss+xml" />
<description>Jinming Hu</description>
<generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><lastBuildDate>Wed, 10 May 2023 08:03:02 +0800</lastBuildDate>
<image>
<url>img/map[gravatar:%!s(bool=false) shape:circle]</url>
<title>Jinming Hu</title>
<link>https://conanhujinming.github.io/</link>
</image>
<item>
<title>CMU15-721课程总结</title>
<link>https://conanhujinming.github.io/post/15721summary/</link>
<pubDate>Wed, 10 May 2023 08:03:02 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/15721summary/</guid>
<description><p>首先关于15-721的课程介绍请参见我的上一篇文章。昨天晚上刷完了CMU 15-721 2023 Spring课程的全部视频,也看了一部分的推荐论文,这里做一下课程总结。</p>
<p>首先评价一下课程质量,个人认为这是网上现有的关于OLAP技术教学的最佳资源,没有之一。Andy自身水平极高,对数据库又非常的热爱,花了巨量的时间在课程设计和准备上,加上CMU的研究生同学水平也相当厉害(特别的指@迟先生),这一切合在一起,成就了这样一门顶尖的课程。</p>
<p>其次是关于这门课学习中的一些心得。首先推荐论文和教学课程是必读必看的,价值超过黄金。其次是学了之后,我个人建议要自己去写一下代码体验一下这些技术。比方说我本人是DolphinDB的研发负责人之一,我在学到一些技术之后,会看这项技术是否已经应用在DolphinDB里了。如果还没应用,那么我会自己实现一下,并判断在DolphinDB里这项技术有没有效果,也碰到过一些完全没有效果的情况。举个例子,Andy有一课说branchless coding,我试了一下,其实三目运算符?:和if else生成的汇编是完全一样的,所以这项技术在现代编译器下已经没什么用了。当然大部分学到的技术加到DolphinDB都是有效果的。这里想重点强调的是,纸上得来终觉浅,绝知此事要躬行。</p>
<p>第三是关于这门课刷完之后,个人推荐下一步可以做的事情。我最推荐的就是结合duckdb的源码来学习课上学到的知识在实践中是如何应用的,甚至可以参与duckdb这一顶级开源项目。</p>
<p>最后非常感谢Andy以及TA们的努力,成就了一门顶尖的课程,还要特别感谢Andy将这门课程开放出来,真的是学习到了很多。</p>
</description>
</item>
<item>
<title>2022年度总结</title>
<link>https://conanhujinming.github.io/post/2022_summary/</link>
<pubDate>Thu, 29 Dec 2022 20:15:40 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/2022_summary/</guid>
<description><p>2022真是魔幻的一年,开年的时候怎么也没想到今年会在阳中结束这一年。正好在家养病没事做,遂写一篇年度总结,总结一下这一年的林林总总。</p>
<p>总得来说,比起去年,这一年在工作上投入的精力更多了一些。事情的起因要从去年7月说起。当时我刚完成了项目存储引擎TSDB的数据读取与计算的工作以及分布式join的工作。公司的CEO Davis找我说希望我能担任公司的研发副总监一职。当时我就慌了,我说我也不是谦虚,我怎么有能力承担这样一个角色?你们还是另请高明吧。但是呢,Davis讲“大家已经决定了”。后来我就念了一句成语,叫“当仁不让”。后来就觉得,在其位,谋其政,既然选择了接受这个职位,就应该认真做这个职位该做的事情,就投入了更多的精力到工作上。</p>
<p>这样的投入带来了一个最直接的“负面影响”就是今年刷的课明显比往年少了。去年我刷了三门课程,今年就只刷了一门课程:
<a href="https://dlsyscourse.org/" target="_blank" rel="noopener">CMU的DLSys</a>。这里不妨先介绍一下这门课程,以及给出我对它的评价。DLSys是CMU的Kolter和Tianqi两位老师共同执教的一门课程,其内容主要是深度学习系统的实现。学习了这门课程并完成它的作业,就会对pytorch这样的框架原理上是怎么实现的有一个基本的认识。两位老师从最基本的神经网络讲起,介绍了反向传播、自动求导、优化、normalization、dropout、CNN、GPU、训练大网络、LSTM、Transformer、部署和编译等内容。最重要的是,两位老师还介绍了这些内容的具体实现,并要求学生在作业中实现其中的大部分内容。这门课程还有一些很赞的implementation课程,就是两位老师step by step地带学生写代码实现一些功能,如卷积、LSTM、transformer等。**可以说,这门课程是目前学习深度学习系统的最佳资源。**与其他课程不同的是,这门课程不仅公开了所有的资源,甚至还对通过网络学习的学生做出了优化:Kolter和Tianqi专门为通过网络学习的学生录了所有的视频课程,并且还提供了一个供大家使用的论坛。当然,这门课也是有一些缺点的。比如其作业(尤其是最后几次的)的坑点不少,以及Lecture 22, Lecture 25和Lecture 26到现在也没有放出对应的视频。但瑕不掩瑜,我个人认为这门课还是挺值得感兴趣的同学学习一下的。说回来我现在一个做数据库的人为啥要学这门课程,主要原因是以前我是搞机器学习的,自己也改过TensorFlow、ncnn等框架的代码,所以对这方面有一些兴趣;而且我认为机器学习尤其是深度学习在未来几年内应该还是会保持很高的热度,我也对其与数据库的结合有一些兴趣。总之,欢迎大家点击了解。</p>
<p>当然,对工作上的投入也是带来了一些成效。最直接的数据是,我今年完成了1000多个jira,是公司完成jira数最多的人,占公司今年所有完成的jira的20%左右。考虑到我们研发部门有30多位同学,一个人能有这个产出还是相当可观的。</p>
<p>今年的工作大部分集中在计算引擎上。今年一方面是做了比较多的性能优化,比如将TSDB在特地场景下更新少量数据的性能从几十秒降到了30ms左右(从修改整个level file改成了append数据),将pivot by(DolphinDB独有的SQL语句,可以将单值模型的窄表转置为多值模型的宽表)在一些使用场景下的性能提升了40倍左右,将TSDB表的join的性能提升了10倍&hellip;&hellip;另一方面在数据库立身之本的稳定性上花了比较多的时间,帮助系统大大提升了稳定性。最大的遗憾是今年没什么时间精力参与内存OLTP数据库的开发,感觉少学了不少东西。</p>
<p>在技术方面,自己也有了一些心得。这些心得说起来也不复杂。<strong>最大的一个心得是要抓住主要矛盾</strong>。例如,在实现一个系统的时候,设计方案时要尽量设计出一个简单可靠易维护的方案,实现前与实现完都要分析关键路径,在关键路径上做好性能优化,在非关键路径上注重简单易懂易维护。这样,设计出来的系统就会高效又稳定。</p>
<p>为了实现一些高性能的模块,也研究了一些开源的实现。这里直接给出对比的结论。首先是内存分配器,现在世界上最好的内存分配器当属微软的
<a href="https://github.com/microsoft/mimalloc" target="_blank" rel="noopener">mimalloc</a>,具体的比对可以使用这个开源项目
<a href="https://github.com/daanx/mimalloc-bench" target="_blank" rel="noopener">mimalloc-bench</a>。我觉得最神奇的是google开源的最新的
<a href="https://github.com/google/tcmalloc" target="_blank" rel="noopener">tcmalloc</a>相对于较早的
<a href="https://github.com/gperftools/gperftools" target="_blank" rel="noopener">gperftools的版本</a>做了很多优化,如per CPU cache,但在这些benchmark上竟然还是老的版本会更优异一些&hellip;&hellip;还研究了hash函数的实现,这个没啥可说的,最快的当属
<a href="https://github.com/Cyan4973/xxHash" target="_blank" rel="noopener">xxHash</a>。google的
<a href="https://github.com/abseil/abseil-cpp" target="_blank" rel="noopener">abseil项目</a>还提供了大量高性能的C++基础设施,这里就不赘述了,感兴趣的同学自己前往了解吧。</p>
<p>再讲讲自己认为自己做得最好的地方吧,我觉得是招人。我一直觉得招人对一家公司来说重要性极高,所以一直投入了比较多的精力在这个上面。今年的招人总体上我觉得还是比较成功的。校招方面,暑期实习的时候招了10来个实习的同学,其中也有放弃阿里云offer来dolphindb的同学,日常实习也招到了来自top2的选手,秋招的时候还招到了ACM金牌爷。社招上也招了几个不错的同学,比如有一位同学是从阿里钉钉跳槽过来的,进来之后表现也相当不错。招来优秀的同学的效果是立竿见影的,他们很快都有了不错的产出。这里也再打个广告,欢迎感兴趣的同学随时投递dolphindb。</p>
<p>也讲讲自己做得不是很好的地方吧,个人觉得是今年年初的时候对实习生的管理做得不是很好。当时招了比较多的实习生,但自己也有比较多的其他任务要做,对于有几位实习生就没有很花时间精力去带。后来在带暑期实习生和后面招进来的日常实习生的时候就特地注意了这一点,增多了在带实习生上的时间与精力的投入。总得来说,大家对这边的工作体验的认可度还是比较高的,详情可见这个知乎问题:
<a href="https://www.zhihu.com/question/481846135/answer/2380845228" target="_blank" rel="noopener">在dolphindb工作是一种怎样的体验?</a></p>
<p>讲完了工作,再讲讲生活上的感悟吧。最大的感悟就是健康真的很重要。疫情的来袭让我回想起了多年前身体虚弱飘摇的自己。其次是<strong>对付新冠的时候提醒大家不要吃含有咖啡因的感冒药</strong>。我买的感冒药是复方氨酚烷胺胶囊,这种感冒药的主成分是对乙酰氨基酚,这个没问题,但这种感冒药里有咖啡因(我也是后来才知道)。按照我的理解,这种药中放咖啡因的原因是为了提神,让吃了药的人即使在感冒中也有力气去干活,我称之为卷王感冒药。但是得了新冠之后,我觉得还是应该躺平睡大觉,应该吃泰诺这种含有助眠成分的感冒药。我吃了复方氨酚烷胺胶囊,退烧是很快,但是阳了的前两天我几乎都没睡着觉,相当痛苦。如果只能搞到这种含有咖啡因的感冒药,那我建议不要像我一样傻傻地睡前吃。</p>
<p>最后,希望自己在未来一年里能继续和优秀的人一起做有意思的项目。祝大家身体健康,新年快乐!</p>
</description>
</item>
<item>
<title>在DolphinDB智臾科技工作的这一年</title>
<link>https://conanhujinming.github.io/post/a_year_in_dolphindb/</link>
<pubDate>Tue, 08 Mar 2022 22:34:17 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/a_year_in_dolphindb/</guid>
<description><p>今天突发奇想,看了下我在DolphinDB智臾科技入职的时间,看到是2021年3月3日,算了算距今刚好一年零几天,遂写篇文章,作为对过去一年工作的总结,同时展望一下未来一年的工作计划。在工业界工作,工作内容往往由一个个项目组成,故这篇文章也借一个个我在DolphinDB主导或者参与的几个比较大的项目,来总结我过去这一年的工作。</p>
<h2 id="新的存储引擎tsdbtime-series-database">新的存储引擎TSDB(Time Series DataBase)</h2>
<p>新加入公司的第一个项目是与@无敌大饺子一起开发一个新的存储引擎TSDB。这里首先要讲讲为什么要开发一个新的存储引擎,以及这个存储引擎是做什么的。DolphinDB原先是有一款存储引擎的,叫OLAP。OLAP的设计比较简单,基本上就是按列存储,每个文件是表格的一个列,数据写入时的顺序即为数据存储的顺序。这样设计的好处是当列并不是很多的时候写入非常快:只需要在每个列文件上进行追加写即可。同时(当列并不是很多的时候)如果要对表格数据进行大规模的分析(例如策略回测)的效率也比较高。但是随着DolphinDB的应用场景在拓宽,OLAP的存储引擎逐渐碰到了一些问题。其中最大的问题就是在物联网中的点查需求。这里又需要简单介绍一下物联网的时序数据库应用场景是一个怎么样的场景。物联网通常的应用场景都相当简单,会有大量的设备(如几十万,甚至上千万的设备)接入数据库,例如一个省份的电表。每个设备每隔一段(固定的)时间(如一秒)会产生一条数据。<strong>而用户对数据的最主要的需求是去查某个或少数几个设备在给定时间段内的数据</strong>,这样的需求我们称之为点查。在我们试图将DolphinDB应用到物联网的场景时,OLAP存储引擎遇到了困难,这个困难就是点查效率的低下。具体地说,对于OLAP引擎,由于存储数据的顺序即为数据写入的顺序,而对于同一个设备来说,它的数据在写入的时候往往是分散在表格的各个位置的。例如,假设数据库总共有3个设备接入,数据写入的顺序往往是先写入1号设备的第1秒的数据,再写入2、3号设备的第1秒的数据,然后再写入1号设备的第2秒的数据,再写入2、3号设备第2秒的数据,以此类推。很显然,如果数据的存储顺序与写入顺序是一致的,那么假如我们要查询1号设备的数据,就需要遍历整个列文件才能找到所有1号设备的数据,这样的效率是相当低下的。设想如果有1000万个设备,而查询1个设备的数据就需要访问所有的数据,这个效率自然是不会高的。当然,实际情况没有这么糟,DolphinDB有完善的分布式表分区机制(具体可以可以参考
<a href="https://github.com/dolphindb/Tutorials_CN/blob/master/database.md" target="_blank" rel="noopener">这篇文章</a>),使得一个分区的设备数不会太多,但即便如此,在OLAP引擎中进行点查,也往往需要几百毫秒的延时。而TSDB就是一款我们为了解决这个核心的点查问题而设计出来的存储引擎,我们期望它的点查效率能够低至几十毫秒,甚至是几个毫秒。</p>
<p>TSDB的设计是我和@无敌大饺子以及公司的两位领导Davis和大飞哥一起讨论得出的。设计的思路也不复杂:<strong>既然OLAP中点查效率的低下是由于同一个设备的数据是散落在文件四处的,那简单,我们TSDB中就将同一个设备的数据连续存储在一块就可以了</strong>。这很自然地就需要将写入数据进行排序,在结合其他的一些实际需求,我们很自然地引用了LSMT(Log Structured Merge Tree)架构作为TSDB的设计基础。关于TSDB设计的详细介绍可以参考我和@无敌大饺子之前的一个
<a href="https://www.bilibili.com/video/BV1V54y1p7vX?from=search&amp;seid=11666148510380071180&amp;spm_id_from=333.337.0.0" target="_blank" rel="noopener">直播录像</a>,我这里就不展开介绍了。在设计完之后,我们进行了任务分工,我负责存储引擎的读取、计算部分,@无敌大饺子负责存储引擎数据的写入部分,大飞哥负责存储引擎的WAL和recovery模块。我们大约花了一个月的时间给出了第一个内部测试的beta版本,后面又陆陆续续地花了一些时间来加入一些新的功能如数据自动去重、增加列、支持blob类型,以及修复系统中存在的bug。在我加入公司的第三个月,我们终于决定将这个存储引擎推出供客户使用。</p>
<p>TSDB这个项目对我来说意义非凡。首先,这是我第一个参与甚至是主导的数据库相关的项目,我借此机会学了众多数据库的知识。其次,这是我第一次参与的复杂的大型项目。之前在前东家也有进行过交易系统的开发,但说实话,那样的项目我觉得称不上大型与复杂,虽然也有很多的代码量,但主要也就是业务逻辑的堆积。TSDB不一样,它中间有大量的状态需要维护,完完全全是一个复杂的系统,想要让它稳定的运行并不容易。而且TSDB大量地涉及到与计算机系统底层打交道,而且我负责的是数据查询与计算部分,性能的重要性不言而喻,我借此机会学会了诸多的性能优化技巧,如leaky buffer, 尽量减少内存拷贝,合理规划读盘的顺序,避免多线程对磁头的争抢等等等等。最后,我们在一个真实的物联网数据集上进行了TSDB与其他数据库的性能对比评测。这个数据集有两百万个设备,我们使用了三台机器组成的集群来进行评测,主要对比了物联网领域常用的数据库在点查方面与TSDB的性能比较。下图给出我们的实验结果:</p>
<p><img src="C:%5CUsers%5Cjinming%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20220308232255885.png" alt="image-20220308232255885"></p>
<p>可以看到,TSDB的点查性能显著优于在物联网中以点查性能著称的ClickHouse与TDEngine。能够做到这一点,毫无疑问TSDB是一个成功的项目,也让我为之自豪。</p>
<h2 id="分布式join">分布式join</h2>
<p>这是我独立完成的一个项目。具体地说,之前的DolphinDB在分布式join方面只支持同数据库下相同分区方式的分布式表做join,且join的列必须全部为分区列。这显然是有较大局限性的。我的方案也很简单,就是对数据进行re-shuffle(或称re-hash)。若join列为左表的分区列,则我们将右表的数据进行re-shuffle,使得re-shuffle后的数据也按join列进行分区,且将左表与右表相同分区方式的子表存储于同一节点上,这样就可以实现将整个分布式join分解为每个节点上的join,最后再将join的结果合并到一块去。类似的,若join列为右表的分区列,则我们将左表的数据进行re-shuffle。倘若join列既不是左表的分区列,又不是右表的分区列,则这是最糟情况,这种情况下会涉及到大量的数据移动,需要将左表和右表的数据都按join列进行re-shuffle,再进行join操作。</p>
<p>这个项目从设计到开发完成总共花了大约两周的时间,作为第一个我独立完成的项目,我还是比较满意的。</p>
<h2 id="在线机器学习online-machine-learning">在线机器学习(online machine learning)</h2>
<p>这是一个我至今尚未完成的项目。这个项目的背景大概是这样的:现在机器学习非常火热,应用的场景很多,DolphinDB当然也是支持机器学习模型的训练和预测的。然而,目前DolphinDB仅支持先训练机器学习模型,再部署机器学习模型这一批数据处理的范式,而不支持在线地根据最新的数据来更新模型。所以在线机器学习这个项目自然就是想支持在线地根据最新的数据来更新模型。由于我之前对机器学习和机器学习系统,所以我很快地就给出了这个项目的设计方案。再由于我一直有其他优先级更高的任务要做,所以我一直试图找一位实习生或者正式工的同学来按照我的设计方案完成这个项目。无奈直到今天还没寻到相应的同学。如果有同学对这个项目感兴趣,请一定要联系我&gt;_&lt;</p>
<h2 id="内存oltp存储引擎">内存OLTP存储引擎</h2>
<p>这个项目其实我参与不多。在9月份之前,这个项目是由@无敌大饺子牵头在设计与实现,后来他去MIT读PhD去了,就由我们的实习生同学@river接过了实现的大旗,并完成了大部分的代码编写,其他一些同学如实习生hj同学完成了B+树的代码实现,实习生@olaoo 实现了logging模块等。这个项目的背景很简单,我们的很多金融客户有内存OLTP数据库的需求,如金融的交易场景等,而DolphinDB其他的存储引擎都是OLAP的,对于高频的删除、修改、更新的支持有限。这个项目的最大的复杂度来源于二级索引的支持和MVCC的支持,尤其当这二者结合到一块去之后,事务的处理将会变得非常复杂。其实我本来也想深度参与这个项目的,但无奈个人精力有限,又不愿意加班,所以最后只能是摸鱼划水了一波。目前这个项目的单机版已经初具雏形了,在性能调优阶段;而之后我们将会开始进行这个项目的分布式版本,这则会有新的挑战:现有的2PC等框架都太重了,性能不够优秀,如何高效地支持分布式事务,以及分布式场景下如何支持二级索引等等。对这个项目感兴趣的同学,可以联系我&gt;_&lt;</p>
<h2 id="python-parser">Python Parser</h2>
<p>这个项目实际上我完全没有参与,是由我的好友jc与公司CEO/CTO Davis一直在牵头设计与实现的。具体地说,为了提供更强大更灵活的计算能力,DolphinDB提供了一门自带的编程语言DolphinDB Script,其语法类似于Python与SQL的结合。使用这门编程语言,用户就可以在数据库中方便而高效地完成各种复杂的计算操作。然而,语法类似Python,也终究不是Python,用户仍然有一定的学习成本;更重要的是,在数据分析领域,Python的两大重量级的包numpy和pandas早已深入人心,大家已经习惯了它们的操作语法与方便性。Python Parser这个项目,<strong>目标就是让DolphinDB原生地支持使用Python来管理存储与计算,这样用户的学习成本就可以降至最低,而且Python Parser还将原生地支持numpy和pandas的操作</strong>。具体地说,我们自行在DolphinDB内部实现了一个Python的解释器,而且这个解释器将没有GIL的束缚,计算性能会非常出色。我们将在今年三月底四月初推出第一个beta版本的Python Parser,但之后仍然有非常多的工作需要做。对这个项目感兴趣的同学,可以联系我&gt;_&lt;</p>
<p>总结完了过去一年里我参与、主导的一系列较大的项目,下面我将简单介绍我们未来一段时间内打算做的项目,欢迎对这些项目感兴趣的同学加入我们。大家也可以看到,在我们公司,即便是实习生也可以承担重任,所以不用担心自己资历不深而无法参与到核心的项目~</p>
<h2 id="分布式内存oltp数据库">分布式内存OLTP数据库</h2>
<p>这个在前面我已经介绍过了,这里就不详细介绍了。</p>
<h2 id="python-parser-1">Python Parser</h2>
<p>同样,在前面已经介绍过了,这里就不赘述了。</p>
<h2 id="流式数据库">流式数据库</h2>
<p>DolphinDB已经有一个非常强大的流计算引擎了。然而目前的流计算引擎的管理和运维还比较麻烦。之后我们计划实现一个流式数据库,能够方便地进行流计算的管理和运维,并支持自动化的流式复杂指标计算。</p>
<h2 id="基于k8s和容器的自动化部署">基于k8S和容器的自动化部署</h2>
<p>目前DolphinDB的部署和升级还比较麻烦。我们目前已经在开发基于k8S和容器的自动化部署,未来希望能够继续强化这项功能。</p>
<h2 id="新硬件的支持">新硬件的支持</h2>
<p>过去的数年内涌现了众多的新的硬件,如NVM, Infinity Band, RDMA, 高性能的GPU等,然而却鲜有将这些新硬件融入到数据库内的。我们计划未来一段时间内探索如何将这些新硬件与数据库结合,以进一步地提高数据库的性能。</p>
<p>对以上任一项目感兴趣的同学都可联系我~</p>
<h2 id="总结">总结</h2>
<p>过去的一年里,我在DolphinDB按照自己期望的方式成长了很多。希望在接下来的一年里,我能够继续这样的成长。</p>
</description>
</item>
<item>
<title>名校公开课程评价项目</title>
<link>https://conanhujinming.github.io/post/comments_for_awesome_courses/</link>
<pubDate>Sun, 20 Jun 2021 21:46:13 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/comments_for_awesome_courses/</guid>
<description><h2 id="前言">前言</h2>
<p>近几年来,越来越多的名校课程选择公开课程的资源供大家学习。学习这些课程不仅能够让我们很好地学习和掌握知识,更能培养我们的学习兴趣和学习能力。公开的资源包括且不限于授课录像、课件(slide)、课程阅读资料(reading)、课程作业(lab)、自动评测系统(autograder)、期中期末试卷等等。因此,我们很幸运地能够免费地享受到这些最顶级的教育资源。另一方面,国内本科阶段的大部分课程的质量一言难尽,这也让我们更需要使用这些顶级的公开课程来学习知识。</p>
<p>我在过去的数年间就大大受益于这些公开的课程,前前后后自学了有几十门各种各样的课程,受益无穷。也因此,我也一直在不遗余力地推广我所学过的优质课程。在学习课程的过程中,我发现自学这些课程终究还是存在一些困难,如:</p>
<ol>
<li>有多所名校公开了某门课程的资源,那么该用哪门课程学习呢?它们相互比较各有什么优缺点呢?</li>
<li>我想学一门课程,但是这门课程的难度如何呢?适合现阶段的我吗?</li>
<li>这门课程公开的资源有哪些呢?是否有视频呢?是否有自动评测系统呢?</li>
<li>自己完成作业的时候常常碰到很多坑,又没有助教TA可以询问这些坑,导致常常在一些没意义的地方浪费大量时间。如果有前人总结出来有哪些坑、如何绕过就好了&hellip;&hellip;</li>
<li>学这门课之前,需要有哪些前置课程呢?这门课学完之后,又有哪些合适的进阶课程可以学习呢?</li>
<li>这门课程的授课质量如何呢?值得花时间去好好观看吗?</li>
<li>这门课有没有非官方的优秀资源呢?(如课堂内容的中文翻译)</li>
</ol>
<p>&hellip;&hellip;.</p>
<p>正是因为有这些问题存在,我在写文章的时候往往也力求能给出这些问题的回答,帮助后人能够更高效更合理地去学习这些课程资源。然而写文章终究还是太散乱了,且一个人的力量终究是有限的。受启发于
<a href="https://zhuanlan.zhihu.com/p/253232863" target="_blank" rel="noopener">CS公开课程学习群</a>一位同学的建议与
<a href="https://github.com/QSCTech/zju-icicles" target="_blank" rel="noopener">浙江大学课程攻略共享计划</a>,我们创立了
<a href="https://github.com/conanhujinming/comments-for-awesome-courses" target="_blank" rel="noopener">这个项目</a>,
<a href="https://conanhujinming.github.io/comments-for-awesome-courses/index.html" target="_blank" rel="noopener">对应的网站在这里</a>,意在整合大家对于高质量公开课程的评价、总结、与建议等等,期望这些评价能对后来的同学在选择、学习课程的时候能有一些帮助。</p>
<h2 id="特性">特性</h2>
<p>本项目的目标是收录以下内容:</p>
<ul>
<li>课程资源链接</li>
<li>是否有视频</li>
<li>有哪些作业(homework)、实验(lab/assignment)</li>
<li>是否有自动测评程序(autograder)</li>
<li>课程简介,包括前置课程知识,适合哪个阶段学习等等</li>
<li>课程评价,包括难度、有趣程度、讲课质量、作业难度与质量等等</li>
<li>非官方的优质课程资源链接(如笔记、课程内容翻译等等)</li>
<li>后续课程推荐</li>
</ul>
<p>等等。由于一门课程可能会有多个评价,大家可以在提供个人评价的时候附上自己的相关信息(如ID或主页)。</p>
<h2 id="贡献">贡献</h2>
<p><strong>欢迎贡献!</strong></p>
<p>Issue、PR、纠错、资料、攻略,各种欢迎!</p>
<p>来自大家的关注、维护和贡献,才是让这个项目质量越来越好的动力~</p>
<h2 id="警告">警告</h2>
<p>下列内容为不适合上传的内容。如果你认为缺少这些资料将会影响资源的完整性,请优先考虑放在校内资源平台,或联系你的教师并由教师发布。建议你撰写一个 README 文档并放置一些链接或指引文字来帮助找到这些资源。</p>
<ul>
<li>盗版电子书/付费电子书</li>
<li>盗版/破解版/绿色版付费软件及其安装包</li>
</ul>
<p>如果你认为本仓库的一些文件侵犯了您的权益,请
<a href="[email protected]">向我们发送邮件</a> 。我们将会从仓库中彻底清除这些文件。</p>
<h2 id="项目现状">项目现状</h2>
<p>从昨晚发起项目,到现在已经有10多门名校课程的评价了,其实已经覆盖了大量计算机的基础课程了,欢迎大家关注与贡献!</p>
<p>
<a href="https://github.com/conanhujinming/comments-for-awesome-courses" target="_blank" rel="noopener">项目地址在此</a>,
<a href="https://conanhujinming.github.io/comments-for-awesome-courses/index.html" target="_blank" rel="noopener">对应的网站在此</a>。</p>
<h2 id="致谢">致谢</h2>
<p>感谢提出这个想法的同学@itwangashao,同时本项目大量参考了
<a href="https://github.com/QSCTech/zju-icicles" target="_blank" rel="noopener">浙江大学课程攻略共享计划</a>,一并感谢~</p>
</description>
</item>
<item>
<title>系统论文阅读研讨会完结撒花与总结</title>
<link>https://conanhujinming.github.io/post/paper_reading_seminar_summary/</link>
<pubDate>Sun, 20 Jun 2021 21:19:37 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/paper_reading_seminar_summary/</guid>
<description><p>之前我们自发地组织了一次系统论文阅读研讨会,
<a href="https://zhuanlan.zhihu.com/p/347150916" target="_blank" rel="noopener">详情见此</a>。一开始我们还有些担心怕聚不起足够的同学来举行这次活动,但后来我们惊讶地发现小伙伴们学习的热情十分之高,以至于我们不仅没几天就组起了开始计划的32人,甚至很快就显著地超过了这个人数。也因此,我们将原计划的8周的研讨会延长到了15周,前前后后涉及的paper大概有30多篇。同时让我们还略感惊讶的是,许多参与活动的同学水平非常得高,甚至有不少同学以一作身份在系统相关领域的顶级会议(如OSDI, SIGMOD, VLDB, ASPLOS等等)上发表了数篇论文,也有不少同学是各大名校的在读博士生或准博士生,当然像我这样的普通的系统学习者也不在少数。而大家都很认真地准备自己的presentation,保证了本次活动的高质量举行。总之,这次活动大获成功,相信认真参加活动的各位同学应该也觉得有所收获。</p>
<p>15周是一段很长的时间,且研讨会撞上春节、劳动节这样的节假日的时候都会暂停一周,所以这次活动前后横跨了几乎有半年之久。这样长的时间里,每周都要去阅读论文准备研讨会,并参与研讨会的交流与讨论,这不是一件容易坚持下来的事情。我个人是从头到尾每周的活动都参加,并且每次活动之前都认真准备(谁让我是大部分场次的主持人呢&gt;_&lt;),有时候真的非常忙的时候,还得费劲挤出时间来准备研讨会,我当时还和朋友们吐槽“这活动咋还没结束”。不过吐槽归吐槽,这样每期的认真准备也大大开阔了我这个系统领域初学者的视野,学到了非常多的东西,这里也要感谢各位参与的同学的付出Orz</p>
<p>这次活动的成功,我想也一定程度上验证了这种学习形式的有效性,我们也鼓励其他同学组织类似的活动来帮助各自的学习~</p>
<p>最后,也是最重要的是,本次活动的所有资源都已开放在网上,包括每期的阅读资料、录像、课件等等,涉及的内容从FPGA到操作系统内核再到虚拟化, 从分布式系统到机器学习系统再到系统中的机器学习,还包括程序自动分析、计算机网络、LSMT、新硬件、serverless等等,可以说覆盖的内容非常得广,具体资源
<a href="https://learn-sys.github.io/cn/reading/" target="_blank" rel="noopener">详见此处</a>,且录像都是中文的。也希望我们公开的这些资源能帮助到各位系统领域的学习者,为中文社区做一份贡献~</p>
</description>
</item>
<item>
<title>硕士毕业半年的茫茫社招路</title>
<link>https://conanhujinming.github.io/post/thoughts_of_hunting_jobs/</link>
<pubDate>Sun, 30 May 2021 22:40:09 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/thoughts_of_hunting_jobs/</guid>
<description><blockquote>
<p>原文发于
<a href="https://github.com/conanhujinming/tips_for_interview/blob/master/After_Half_A_Year.md" target="_blank" rel="noopener">这里</a>。</p>
<p>前篇为
<a href="https://github.com/conanhujinming/tips_for_interview/blob/master/README-zh_CN.md" target="_blank" rel="noopener">校招找工作总结</a>。</p>
<p>本文旨在分享自己硕士毕业一年以来在工作上、学习上、找工作上的经历与思考,希望能对一部分同学有一定的启发作用。同时需要强调,本文全文均仅代表个人观点,限于个人的水平与经历有限,许多观点不免片面甚至是错误,欢迎指正。</p>
</blockquote>
<p>在写前一篇校招总结的文章的时候,我怎么也没想到,自己会在硕士毕业半年后就主动辞职。</p>
<p>这还要从第一份工作的经历开始讲起。</p>
<ul>
<li>
<a href="#%e5%88%9d%e5%85%a5%e8%81%8c%e5%9c%ba%e6%9c%9f%e5%be%85%e4%b8%8e%e7%8e%b0%e5%ae%9e%e4%b9%8b%e9%97%b4%e7%9a%84%e9%b8%bf%e6%b2%9f">初入职场:期待与现实之间的鸿沟</a></li>
<li>
<a href="#%e4%bf%9d%e6%8c%81%e5%ad%a6%e4%b9%a0%e4%b8%8e%e6%88%90%e9%95%bf">保持学习与成长</a></li>
<li>
<a href="#%e5%86%b3%e5%ae%9a%e8%be%9e%e8%81%8c">决定辞职</a></li>
<li>
<a href="#%e4%bd%93%e9%aa%8c%e6%8e%88%e8%af%be%e7%94%9f%e6%b4%bb">体验授课生活</a></li>
<li>
<a href="#%e5%85%b3%e4%ba%8e%e6%9c%aa%e6%9d%a5%e7%9a%84%e6%80%9d%e8%80%83">关于未来的思考</a></li>
<li>
<a href="#%e7%a4%be%e6%8b%9b%e4%b9%8b%e8%b7%af">社招之路</a>
<ul>
<li>
<a href="#%e5%ad%97%e8%8a%82%e8%b7%b3%e5%8a%a8%e6%8a%96%e9%9f%b3">字节跳动抖音</a></li>
<li>
<a href="#ponyai%e5%b0%8f%e9%a9%ac%e6%99%ba%e8%a1%8c">Pony.AI小马智行</a></li>
<li>
<a href="#%e5%bf%ab%e6%89%8bmmu">快手MMU</a></li>
<li>
<a href="#dolphindb%e6%99%ba%e8%87%be%e7%a7%91%e6%8a%80">DolphinDB智臾科技</a></li>
<li>
<a href="#%e7%a4%be%e6%8b%9b%e6%80%bb%e7%bb%93">社招总结</a></li>
</ul>
</li>
<li>
<a href="#%e6%80%bb%e7%bb%93">总结</a></li>
</ul>
<h2 id="初入职场">初入职场</h2>
<h2 id="初入职场期待与现实之间的鸿沟">初入职场:期待与现实之间的鸿沟</h2>
<p>说实在的,在第一份工作开始之前,我是颇有些期待的。我第一份工作的行业是很有些“神秘色彩”的“高逼格”的高频交易行业。不得不承认,我在进入这个行业之前是不太了解这个行业的,所以对于这个行业是做什么的、工作内容是什么都不怎么了解,仅凭一些与业内人士简短的交流就略有些略草率地做出了决定。不过这倒也容易理解,当时的我仅仅对于自己想从事的工作内容有了初步的思考(算法还是开发),但对于自己想从事的行业仍没有清晰的思考。况且纵使当时开始了这方面的思考,我擅长的终究只有排除法,只有亲身尝试过,才知道自己适合不适合。</p>
<p>言归正传,我抱着期待入了职,开始了在这家公司的工作(当然,出于保密要求,我不会透露任何具体工作内容相关的信息)。但是,我的喜悦之情只维持了一小段时间,我很快发现这里的工作内容绝大多数时候是在实现一些(在我看来颇为无聊的)业务逻辑,而我其实更感兴趣的是底层的系统架构和性能优化。这还不是最致命的,最致命的是我并不觉得我每天所做的事情会对社会有什么贡献。说来惭愧,在工作之前,迫于生计,我一直忙活着从一个里程碑奔往另一个里程碑,高考、刷GPA、考研、读研、找工作&hellip;&hellip;很难有时间静下心来好好思考自己内心所追寻的究竟是什么。而且即便偶尔放慢脚步认真思考,限于校园里的经历,仍然得不出什么靠谱的结论。社会是另外一所学校,它很快用我的亲身经历告诉我自己,<strong>我渴望做对社会有贡献的工作</strong>,但是在这里的工作内容却让我很难感受到自己在为社会做贡献。</p>
<p>使情况更糟糕的是,这里的工作并不容易,而我又是一个认真做事情的人,就算我不喜欢不认可这边的工作内容,我仍然会努力去把我的任务完成好,这就使得我更加痛苦,每天在自己内心的斗争中努力挣扎着工作。这种痛苦很是折磨了我很长一段时间。那换一份更感兴趣更认可的工作呢?我才毕业这么点时间就辞职参加社招,这会不会难度很大啊,我内心犯着嘀咕。就这样,我日复一日地挣扎着,直到半年过去。</p>
<h2 id="保持学习与成长">保持学习与成长</h2>
<p>很幸运的是,我深知自己在计算机基础知识上的薄弱与匮乏,因此在工作之后,我仍然保持着之前养成的学习习惯。在刚工作的半年里,我主要学习了以下几门课程/资源:MIT 6.NULL,MHRD游戏,Stanford CS144和MIT 6.S081。值得一提的是,我时常因学习这些课程而感到兴奋不已,以至于常常debug到很晚;这样的兴奋与白天工作的无聊形成鲜明对比,这更坚定了我对自己工作方向的选择。关于这些资源的学习经验和心得,我基本都写成了对应的文章,这里再简单总结一下。</p>
<p>MIT 6.NULL,
<a href="https://zhuanlan.zhihu.com/p/139361685" target="_blank" rel="noopener">我的文章在此</a>。这是一门非常好的课程,主要介绍了众多编程时常用、好用的工具。我尤其推荐刚入计算机领域不久的同学学习一下,也许能够大大提高自己的工作效率。对我来说帮助最大的应该是对dotfile的管理和自动化部署、以及zsh的一些好用的插件。</p>
<p>MHRD游戏,
<a href="https://zhuanlan.zhihu.com/p/148077075" target="_blank" rel="noopener">我的文章在此</a>。这是我的好朋友
<a href="https://www.zhihu.com/people/Comzyh" target="_blank" rel="noopener">@comzyh</a>推荐我的游戏。这位好友在计算机系统、体系结构、计算机网络等众多方面都有非常深的造诣,是我认识的同龄人中工程能力最强的之一,尤其在广度方面堪称一骑绝尘。当时我俩是室友,有天我就请教他有没有计算机体系结构的学习心得可以分享给我。他告诉我说他也不知道自己怎么学的,“不过我觉得了解整个计算机体系结构的历史发展对于学习是有很大帮助的”,于是那天晚上搬了个小板凳在我房间讲了一晚上的计算机体系结构发展史Orz 第二天早上,他突然想起来说还有MHRD这款游戏,“我觉得这款游戏对于学习计算机硬件的原理有很大帮助,你去玩玩看吧”。于是我就人生头一次地下载了传说中的steam,并购买了游戏玩了起来。应该说这是一款非常优秀的游戏,真正做到了寓教于乐,不仅让我一定程度上地了解了计算机的硬件搭建的原理,更让我很大程度上克服了对硬件的恐惧。我现在还在期待着这款游戏传说中的续作。</p>
<p>Stanford CS144,
<a href="https://zhuanlan.zhihu.com/p/175998415" target="_blank" rel="noopener">我的文章在此</a>。计算机网络对我来说可以说是最难学的计算机基础课程了,我完全是因为我没找到一门特别完善的公开课程资源。美国的诸多名校似乎都没有开放该课程的课堂录像,而这对我的学习来说常常是很重要的。当时找来找去,只找到了CS144这门课程是有授课视频的。然而这些授课视频是当时Stanford提供的MOOC版本,我(以及很多同学)看了之后都觉得不太适应。好在这门课现在开放的课程作业(Lab)质量还是相当不错的,是让手写一个简易版的TCP。在学习这门课程之前,我对TCP的理解基本上停留在对中文教材上相关内容的背诵阶段,什么三次握手四次挥手之类的,说实在的与八股文无异;但在完成这门课的课程作业的过程中,我实实在在地较深入地理解了为什么TCP协议要这样设计、以及许多TCP协议中的细节。对TCP我已不再感到恐惧和头疼。</p>
<p>MIT 6.S081,
<a href="https://zhuanlan.zhihu.com/p/347108301" target="_blank" rel="noopener">我的文章在此</a>。这门课程对我来说是有一些特殊意义的,因为这是我和我的小伙伴们第一次尝试组队刷课。毫无疑问,6.S081的作业设计是我上过的课程最好的之一,它们让我具体而又切实地去了解了操作系统的实现原理。以进程、线程和上下文切换(context switch)为例,以前问我相关的问题,我虽然也能够侃侃而谈,但那更多的是停留在一些中文教材上的概念,或者是一些面经中的所谓“答案”;换言之,我能说出一些相关概念,但我从未真正地“理解”它们。而6.S081的其中一次作业则是让我们去结合已有的代码,实现简单的线程/协程切换。这次作业涉及到的代码不过100多行,却让我忍不住感叹“原来一个最简的线程/协程实现竟然可以这么简单,原来上下文切换是这么一回事”。在学这门课之前,我面试的时候还是略有些害怕操作系统相关的问题的,因为我知道一旦深挖了,就会暴露出我基础不扎实的事实;但是在学了6.S081之后,我甚至会颇有些期待面试官问相关的问题。这就是一门好的课程给我带来的改变,6.S081绝对是我毕业以来让我收获最多的一门课程。也为两位老教授一把年纪了还亲自操刀写lab的代码而感到敬仰,希望自己到60岁的时候也还能像他们一样。</p>
<p>《恰同学少年》,
<a href="https://www.zhihu.com/question/21038206/answer/1396707596" target="_blank" rel="noopener">我的文章在此</a>。等一下,这不是介绍计算机学习的文章吗,怎么突然出现一部红色电视剧?这是因为我想把我各方面的成长的经历都分享出来,而这部电视剧,是我毕业以来成长的非常重要的一部分,它很大程度上影响了我对职业生涯的考虑与选择,也很大程度上影响了我的人生观与价值观,当之无愧的是我毕业以来对我影响最大的“学习资源”。这部电视剧从毛泽东同志决定考取湖南第一师范讲起,讲述了毛教员、蔡和森、杨开慧、向警予、陶斯咏等一批志同道合的优秀青年的学习生活故事。除了几位主角的学习生活,还讲述了当时在一师的一批优秀教师(如杨昌济、孔昭绶等)立志教育救国,“欲栽大木柱长天”的宏伟志向与相应行动。看着恰同学少年、风华正茂、书生意气、挥斥方遒的他们,看着志同道合不懈追求真理的他们,看着以改造社会为己任、立志救国的他们,我忍不住开始思考,自己想要过一个什么样的人生呢?现在的道路能让我过上这样的人生吗?继续这样走下去,未来回首往事的时候,我是否能够不因自己虚度年华而悔恨呢?我应该做些什么,才能过上我想要的人生呢?我又能为这个国家和社会做些什么呢?</p>
<h2 id="决定辞职">决定辞职</h2>
<p>乔布斯多年前在斯坦福的毕业典礼上有一场
<a href="https://www.bilibili.com/video/BV1oW411h7Ea?from=search&amp;seid=7650419149020317509" target="_blank" rel="noopener">很著名的演讲</a>,那场演讲里几乎所有内容我都非常赞同,不过可惜的是我在两三个月前才偶然看到那场演讲:如果我能早看到一些,或许对我做人生选择会有更大的帮助。在那场演讲中,乔布斯说了这样一段话:</p>
<blockquote>
<p>如果你把每一天都当作是生命的最后一天</p>
<p>If you live each day as if it was your last</p>
<p>总有一天,你会是对的</p>
<p>someday you&rsquo;ll most certainly be right</p>
<p>每天早晨我都对着镜子问自己</p>
<p>I have looked in the mirror every morning and ask myself</p>
<p>“如果今天是我生命中的最后一天</p>
<p>&ldquo;If today was the last day of my life</p>
<p>我还会做我今天要做的这些事吗?”</p>
<p>would I want to do what I am about to do today?&rdquo;</p>
<p>如果连续很多天答案都是“不”</p>
<p>And whenever the answer has been &ldquo;No&rdquo; for too many days in a row</p>
<p>我就知道我需要改变了</p>
<p>I know I need to change something</p>
</blockquote>
<p>我没有乔布斯那么夸张,但我也偶尔会想,如果我的寿命只剩下十年了,我还会继续做今天要做的这些事吗?</p>
<p>而自工作以来,连续很多很多天,我的答案都是不。</p>
<p>我知道我需要改变了。</p>
<p>我不能长时间一直做我觉得没意思也没意义的事情。</p>
<p>我很痛苦。</p>
<p>下决定的那天晚上,我一个人从公司里出来。饥饿迫使我去便利店买了份饭团,于是拿着它一边走着一边啃。虽然已是夜晚,陆家嘴仍然是灯火通明。我背着书包,左手拿着饭团,右手拿着水壶,看着这灯红酒绿的繁华都市,看着这人来人往的热闹街头,看着这些鳞次栉比的摩登大厦,明明它们近在咫尺,我却觉得离它们很远。</p>
<p>因为我知道,我不属于这里。</p>
<p>第二天下午,我找领导,提了离职。印象比较深的是有位领导问我说“才毕业半年就辞职,不担心之后找工作的难度吗?”我说,如果一个方向,我不想继续做它十年,那我就不想做了。挽留无果后,公司非常干净利落地给我办完了离职手续,当天晚上就送我离开了公司。</p>
<h2 id="体验授课生活">体验授课生活</h2>
<p>离职之后,适逢当时有个去大学里授课的机会。熟悉我的人都知道,我是一直很想有讲课的机会的,所以我毫不犹豫地就抓住了这个授课的机会。关于这次经历的心得,我整理在了
<a href="https://zhuanlan.zhihu.com/p/372804808" target="_blank" rel="noopener">这篇文章里</a>,而连带着其他在教育方面的探索则整理成了
<a href="https://zhuanlan.zhihu.com/p/357360797" target="_blank" rel="noopener">这篇文章</a>。这次特殊又有趣的授课经历带给我的思考和收获是我之前想象不到的,除了让自己进一步地扎实了自己的机器学习基础(因为要给学生们讲懂),更是带给了自己许多技术与知识以外的思考。</p>
<p>在最后一堂课上,我非常“中二”地当堂背了一段《少年中国说》。我说:“各位同学,往小了说,机器学习、深度学习还有很多问题没有解决,我们不知道怎么解决,也许没人知道怎么解决;往大了说,我们这个国家、这个社会、甚至是这个世界,都还有很多问题没有解决,我们更加不知道怎么解决,现在谁都不知道该怎么解决,也许你们未来就有人会去解决其中的一部分。少年强则国强,去创造属于你们自己的未来吧。”</p>
<p>下课之后,我一个人在校园里静静地散着步,虽然那时候还是寒冬腊月,但那天的阳光十分温暖和煦,晒得人暖洋洋的。</p>
<p>虽然这次机会没给我带来多少金钱与物质方面的回报,但看到学生们求知的眼神、看到他们对我努力讲课的认可、看到他们在听了我的讲解之后由困惑到明晰的表情,我感到欣喜而又快乐。我更加明确了自己未来的道路,我知道,做(在我看来)对社会产生贡献的事业,这就是我想做的事情。</p>
<h2 id="关于未来的思考">关于未来的思考</h2>
<p>在找工作之前,我纠结着之后做什么行业,还是在国内读个博士。于是我联系了几位实验室毕业的优秀师兄聊了聊职业规划,这里也感谢各位师兄百忙之中抽出时间来回答我的问题。最触动我的是一位师兄说的话:“<strong>其实读博也好工作也罢,最重要的还是要做自己觉得有意思有意义的事情</strong>。”那段时间我也找了些国内读博的机会,不过最终还是选择了继续工作。</p>
<h2 id="社招之路">社招之路</h2>
<p>终于讲到自己的社招经历了。到了课程快要讲完的时候,我就开始联系各家公司开始面试。去之前秋招不同,这次我几乎没怎么投递公司,而是从之前挖我的公司中挑出了自己有一定兴趣的公司来面试。最终我面的公司部门有:字节跳动抖音数据策略团队、Pony.AI小马智行、快手、DolphinDB智臾科技、还有几家量化公司(比较好奇他们在同样问题上的解决方案)。由于量化公司的保密性,这里就不再介绍了,而是主要讲讲其他四家公司的面试经验和心得。</p>
<h3 id="字节跳动抖音">字节跳动抖音</h3>
<p>最早大概是2020年的11月,HR在领英上勾搭我,由于我一直忙着其他的事情,就没有开始他们的面试流程,直到2021年1月多的时候,才继续跟进他们的流程。我面试的团队是一个叫“数据策略”的团队,主要是利用机器学习、优化方法等方式来实现更高的用户增长。例如春节瓜分红包,这么多红包的金钱,该如何分配才能最大化有效的用户增长呢,这个项目就是他们部门所负责的事情。这个团队原先是全部在北京的,后来决定在上海也组建一个团队,故联系我面试。</p>
<p>其实面试也没有很多可以说的事情。几场面试都有按照流程地让我做了几道LeetCode题,题目也都是一些非常经典的题,没记错的话应该都是top 100 liked这个标签下的题目。面对这种难度的题,我自然都是很快地写出bug-free的代码。除此以外以外,还问了我之前做的一些项目,尤其是正式工作的项目。大家还比较喜欢问的就是所谓的“场景题”,即描述一个他们在真实场景下碰到的问题,问我的解决方案会是什么。比较有趣的是,有两场面试的面试官,我在最后的提问环节问他们那几个场景问题,他们实际在生产中是怎么解决的,他们说基本上和我描述的差不多XD 还有一件很有趣的事情是大家基本都没问我机器学习、深度学习的基础知识的问题,可能是看我有这方面的授课经历,就觉得没必要再多问了。印象比较深的是几位面试官都看上去有些疲惫,可能是因为春节降临,他们的活很多压力很大吧。</p>
<p>这个部门让我感觉最有诚意的地方是,HR和leader问我之后想做的方向,我说我开发和算法都想做一些,能不能都做,他们一开始说不行,只能选择一个方向做,这当然是很合理的;但是最后他们开会讨论并且给我发offer的时候,却告诉我说如果过去的话,算法与开发的工作我自己任选,二者的比例也自己调控,这个结果还是让我颇有些意外的。最后也给我开了一个相当高的薪水和评级。不过由于种种原因,我选择拒了offer。</p>
<h3 id="ponyai小马智行">Pony.AI小马智行</h3>
<p>与抖音类似,小马也是在上海新建了一个office,团队在慢慢地扩招,HR也是很早在领英上联系的我,我拖到了1月多才回复。印象比较深的是HR一开始电话联系我的时候,问我:“你是不是以前打竞赛的啊?”我说:“不存在的,我从没参加过竞赛。”她说:“那你是不是刷了很多题啊?”我说:“也还好吧,没有特别多。”心里还想着她为啥会问这样的问题。结果她接着问:“那你之前是怎么进的Google啊?”我差点笑出了声,原来是因为这个原因才问我这几个问题。于是我回她:“因为我强啊。”(笑)</p>
<p>后来就安排我开始面试。这次面试的开发岗位,所以除了做题和项目以外,基本上全都是与系统开发相关的面试问题。后面还安排了一轮系统设计面。感谢自己学了MIT 6.S081,面试全程没碰到什么自己觉得有难度的问题。还有比较有趣的是给我的定级一涨再涨,可能是觉得我的面试表现还不错吧&gt;_&lt; 最后一轮面试是小马的CTO楼天城、也即传说中的楼教主来面我。我虽非竞赛选手,但也听说过不少楼教主的事迹。我原以为楼教主会是那种“恃才傲物”的天才形象,没想到他本人相当地接地气,剪了个平头戴着副黑框眼镜,面试刚开始的时候有一搭没一搭的和我聊一些生活上的事情。之后出了一道数学与编程结合的题目,然后是几道场景题。最后我们一起聊了聊对无人驾驶这个行业现状与未来的看法。没经过他本人同意,这些内容就不分享了。</p>
<p>不过由于种种原因,我选择拒了offer。</p>
<h3 id="快手mmu">快手MMU</h3>
<p>
<a href="https://www.zhihu.com/people/zhang-de-bing-78" target="_blank" rel="noopener">德兵师兄</a>是我们实验室传说级的博士师兄,早在我还在校园的时候就听了不少他的传说,听说他现在在快手MMU担任多模态智能创作负责人,于是就联系了他投递了一波。面试流程与抖音相仿,基本就是算法题+项目+场景题,估计也是因为我的履历,没怎么问我机器学习基础的题。我同样表示了同时做算法与开发的想法,他们也很爽快地同意了。最后一轮面试是德兵师兄面我,除了技术以外,我们也聊了很多对未来行业发展和技术发展的看法。德兵师兄的确名副其实,做事情非常地扎实,是少见的对技术细节研究得非常透彻的团队负责人。最后快手开了一个非常有诚意的offer。不过我因为种种原因,还是选择了另外的offer。但是德兵师兄真的是一位非常靠谱的leader,如果是对CV/NLP/多模态/智能创作感兴趣的同学,可以联系他[email protected]</p>
<h3 id="dolphindb智臾科技">DolphinDB智臾科技</h3>
<p>要说自己为什么会投递甚至最后还选择了这么一家对很多人来说颇有些“名不见经传”的公司,还得从较早的故事开始讲起。</p>
<p>我很幸运地有一些好朋友,我们常常会交流讨论学习、技术、学术以及生活等方方面面的问题。其中有一位好友xj在腾讯做数据库,他和我的交流尤其得多。印象最深的一次是2020年6月的时候他在做mysql的并发写入优化。这个问题是说mysql现在在高性能服务器的存储设备下,常常没法跑满带宽,这很大一部分原因是软件跟不上,mysql里的锁太多了,xj当时就在做锁的一些优化。我记得他做了一两天后,在群里说:“啊好难啊,我搞定不了了,要炸了。”我们刚开始安慰他,发一些萌萌的安慰人的表情,这时候他又补了一句“但是好有意思啊”Orz 类似的学术和工程上的交流几乎每天都会发生。在这样的影响下,我渐渐也开始对数据库领域有了一些好奇与了解。</p>
<p>自离职之后,我就开始思考下一步要做什么方向。高频交易自然是不适合的;纯机器学习的算法岗也不合适,我还是更想做开发。但是究竟做哪一块的开发呢?我拿出一张纸,在上面开始写下自己期望的东西。我期望从工作中获得什么呢?我写下了以下几点:</p>
<ol>
<li>从事的行业和工作内容要有意义,对社会有贡献。最好是那种能帮助国家突破卡脖子技术的领域。</li>
<li>从事的工作内容要有意思,我得喜欢,最好甚至是能够让我感到激动人心的(exciting)。这样的话我就希望其中的工程味道比较重。另一方面,我个人喜欢做自己能够解释的工作、能够知晓从里到外每一个细节的工作,也就是说,当一个系统表现效果好(work)的时候,我能很清楚其中的原因,并且能够清晰地做实验来验证;当一个系统表现效果不好(不work)的时候,我也能用实验和逻辑来解释清楚原因,找到问题所在,并且去解决问题,让系统性能提升。这样的话,深度学习相关的工作就不适合我了。</li>
<li>如果是一个我之前比较陌生的领域,最好是有熟识的靠谱的人能够带我。</li>
<li>我希望这份工作能给我带来持久的、我所期望的成长。而这个领域最好是我觉得自己能够再做至少十年的领域。</li>
<li>我希望是不要求加班的工作岗位,也即能够做到工作与生活的平衡(work-life balance)。因为对于公司老板来说,他们对你的期望几乎永远是为公司盈利,而你自己的期望可能是成长,这两者有些时候是矛盾的;当这二者矛盾的时候,我希望至少还能有自己的工作之外的时间来成长。<strong>我绝不希望自己停下成长的步伐。</strong></li>
<li>收入较高,能够支持我赡养没有缴纳五险一金保障的父母。这点比较容易,只要我还是继续当程序员的话,是肯定可以满足这点要求的。</li>
</ol>
<p>有点讽刺的是,这些需求,尤其是第5点,在国内的工作环境下是很难达到的。那如果一定要划掉一个,我会划掉哪个呢?我想了很久,觉得还是要具体情况具体分析。</p>
<p>那么有哪个领域可以满足我的这些需求呢?我突然想到我那位在腾讯工作的好友xj。于是我写下了数据库这三个字。的确,从事数据库方面的研发,是可以满足前四点和第六点的。于是我当时就给xj发了条消息,我说,要不你去哪儿工作,我就去哪儿工作吧,以后就跟着你混了。</p>
<p>当时他还在腾讯工作,我说那我就去你的组吧。虽然这需要我划掉上面六点中的第五点,但是有些时候只能做一些牺牲了。结果事情变化得很快,没多久他就收到了阿里云的邀请。这下我可就犯难了,这倒不是完全因为阿里的工作环境和氛围可能不适合我,还因为我知道我的简历去投阿里云数据库组的社招,很可能连表刷(简历筛选)都过不了。我找了在阿里的同学帮我问了一下,果然和我说他们leader觉得工作经验两年以下的社招不考虑。而且纵使过了,阿里的工作生活平衡是比腾讯还要再糟糕不少的,这让我心里不禁犯了嘀咕。我和他说,容我再考虑考虑。</p>
<p>好在世事时常柳暗花明又一村。xj在读研之前曾经在一家叫DolphinDB的时序数据库公司实习了相当长的一段时间。我们之前也聊起过多次他在那边实习时做的许多有意思的工作。2021年年初的时候,DolphinDB邀请xj回去工作,xj就和我说了这件事情。我当时就回他:“他们还招人吗?你去的话,我也去,认真的。”随即就把我的简历发给了xj。</p>
<p>于是DolphinDB很快就开始联系我。HR很好奇我的经历(我还没碰到过一个不好奇的),问了问我这么选择的理由,我解释清楚之后,他们很快就安排好了和我的面试流程,邀请我去office进行线下的面试。</p>
<p>虽然我因为xj的缘故,毫不犹豫地就想选择这家公司作为我职业生涯的下一站,但坦白说,此时我对这家公司还是不甚了解,无论是氛围文化也好、还是技术背景也罢、还是最重要之一的是领导的水平与风格,我都不清楚,所以这几轮面试,不仅是他们对我的考察,也是我对DolphinDB的考察。或者说,实际上,面试本身就是候选人与面试官的双向选择。对我来说,面试的体验是极大程度上影响我对于一家公司的观感的,技术好性格好的面试官会让我好感大增,反过来水平一般或是态度傲慢或是显得异常疲惫的面试官(或者是兼而有之Orz)则会让我打退堂鼓。有句话说“面试官是一家公司招人的门面”,这句话绝没有夸张的成分。所以很自然的,我会把在DolphinDB的面试看作是一个很好的提前了解潜在的未来同事的机会。</p>
<p>DolphinDB的面试官们也果然没有让我失望。首先是HR与我聊了聊过去的经历与未来的规划。HR非常专业,也没有任何要彰显自己存在感的意思。接下来是研发主管的面试。主管从一些小问题切入,深入地与我探讨了系统编程相关的问题。之后主管问我对数据库有没有什么了解,我说我只有对levelDB有一定的了解,于是主管和我深入探讨了在时序数据库场景下应用LSMT时需要注意的问题和可优化的地方。非常有意思的是,我和xj加入公司后,到目前为止做的最大最重要的一个项目物联网(Internet of Things, IoT)存储引擎,正是基于LSMT设计和开发的 XD</p>
<p>最后一轮面试,是公司的创始人、CEO兼CTO
<a href="https://www.linkedin.com/in/daviszhou/" target="_blank" rel="noopener">周小华 Xiaohua/Davis Zhou</a> 来面试我。之前每次和xj谈到Davis的时候,他都会赞不绝口,我也因此很好奇他究竟是怎么样的人。Davis本硕在上海交大就读,博士在美国Drexel University就读,博士期间
<a href="https://scholar.google.com/citations?user=zOSjZA8AAAAJ&amp;hl=zh-CN" target="_blank" rel="noopener">发了很多顶级的信息检索、数据挖掘的文章</a>。博士毕业后,他在美国多家金融公司先后就职,后于2016年回国与另外两位创始人一起创立
<a href="http://dolphindb.cn/" target="_blank" rel="noopener">DolphinDB智臾科技</a>。DolphinDB是一款完全自研、拥有完全自主产权的国产分布式时序数据库,拥有强大的计算引擎和存储引擎,支持每秒百万级数据写入,在万亿级规模下支持数据毫秒级查询和秒级计算分析(突然有种广告的感觉是怎么回事,总之欢迎感兴趣的同学了解)。</p>
<p>Davis进了面试的房间,和我握了个手,就开始了与我的面试交流。说是面试,但与其说是他面试我,更有点像是他在和我交流公司的现状以及未来发展,询问我对公司的期望,看看我们双方是否能够满足对方的期望。Davis首先问我对于公司的期望是什么。这是一个正中我下怀的问题,我立刻将前面提到的那几点需求描述了一通。这里要说明的是,我以前认为在面试中这样诚实地说出自己的期望是不合适的,因为有可能这家公司不符合这样的期望,最后就不发offer了;但我后来觉得既然我不缺offer,不如说得直接一些,也免得去了公司之后发现期望与现实落差太大而离职,那样对双方的代价还要大得多。总之,我很诚实地和Davis说了我的全部期望。Davis很高兴地告诉我说他认为DolphinDB可以满足这几点的:</p>
<ol>
<li>从事的行业和工作内容要有意义,对社会有贡献:时序数据库在物联网和金融领域均有广泛的应用。而这其中,金融中的银行等机构与物联网中制造业、研究院、水电煤国企等都是对国家非常重要的战略性机构。前些年的技术卡脖子,让国家政府意识到不能再这样下去,因此提出了去IOE的口号,希望在这些机构都能使用具有完全自主知识产权的基础软件(如数据库)。而这些领域应用高性能的时序数据库,还能够实现一些以前很难实现的功能,如核电站的实时异常检测等,这些功能的实现对于国家与社会显然是具有重要意义的。而且,在我国物联网领域,由于我国的人口规模,很多场景面临的难题是现在市面上没有一款软件能够解决的,所以在DolphinDB做开发,不仅仅是“去IOE”(指脱离对IBM, Oracle, EMC三大基础软件外企的依赖),更是要去做到一些之前没有产品能做到事情,去突破最前沿的数据库难题。</li>
<li>从事的工作内容要有意思,我得喜欢,工程味道要重而且能够从内到外理解每一个细节:数据库可以说是完美的符合这些要求,而在技术方面,分布式时序数据库显然也是站在最前沿的。</li>
<li>最好是有熟识的靠谱的人能够带我:xj就可以带我。</li>
<li>我希望这份工作能给我带来持久的、我所期望的成长:数据库这类基础架构的开发能力磨练的是最核心的开发能力,自然可以带来持久的成长。</li>
<li>我希望能够做到工作与生活的平衡:公司工作时间965,而且公司认为这样的制度是更能帮助员工的产出的,因为员工需要锻炼身体来保证强健的体魄,需要下班之后自己学习额外的知识来获得技术上的成长,需要陪伴家人等等。</li>
<li>收入较高,能够保障我的父母:这个自不必多说。</li>
</ol>
<p>于是Davis和我一起讨论了未来公司的一些规划,以及如果我来的话愿意做哪方面的工作。令我非常惊讶的是,Davis是公司的CEO&amp;CTO,有非常多的事情在忙,但从和他的交流中,我能很明显感觉到他还在一线上写非常多的代码,甚至仍然是代码库的最主要的贡献者。而且不夸张地说,问到DolphinDB的几乎所有实现的细节问题,他都能了如指掌地回答出来。这真是非常令人印象深刻!因为在国内的大环境下,技术管理层不写代码的情况实在是太普遍了。当然我不是想说孰优孰劣,只是我更想和写代码的CTO甚至是写代码的CEO一起工作。除了扎实和雄厚的技术功底以外,Davis对市场的判断和对技术架构的视野(vision)也让我叹为观止。写这篇文章的时候,距离我的面试已经过去了快5个月,而这段时间市场的发展基本上与当时Davis和我描述的一致。在面试最后,Davis当场就给我发了offer,这反而让我有些紧张,我说:“你不需要再考察一下我的技术能力吗?我们都没怎么聊具体的技术。”Davis笑了下,说道:“你的履历以及xj对你的评价就足够说明你的能力了,况且刚刚和你的交流中我也能感受到你各方面的能力。虽然你之前不是做数据库的,但我对你在这边的发展没有任何顾虑。”</p>
<p>之前曾经看过一篇沈向洋的文章,其中他提到了Jim Gray对他说的关于程序员生涯的一段话。Jim Gray说(此为意译):“程序员的生涯是由一个个项目组成的,这些项目的好坏就定义了你的职业生涯的成功与否。所以,要选择好每一个项目,做好每一个项目。“我又想起来我在Google的Host和我说的一段话,他说:”人在选择工作的时候,有的时候很难看清一家公司一个部门一个行业的未来发展。所以,选公司,不如选人,至少一个熟悉的靠谱的人,是可以看清的。”DolphinDB就是我此次选择的项目,Davis和xj就是我此次选择的人。</p>
<p>于是最后,我就和xj一起加入了DolphinDB,工作至今。从我加入公司到现在也差不多有三个月了。这三个月里,我们的主要工作是一起开发了基于LSMT(Log Structured Merge Tree)的新的IoT存储引擎,新的存储引擎主要是针对物联网的大规模场景的,典型的场景可能是有千万台设备(如千万个电表)每秒都会产生一条数据,在支撑这个级别的数据量写入的前提下,新的存储引擎同时要支持毫秒级的点查(即查询某设备在某段时间内的数据),以及要高效地支持其他类型的数据查询与数据分析系统(OLAP负载)。这个项目非常有挑战性,但同时也非常得有意思,我在这中间学到了很多。除此以外,我也负责了一部分计算引擎的开发工作,做了一些计算函数的实现与查询优化,这些同样是很有意思也很锻炼工程能力的项目。经过这三个月的工作,我很确信,这就是我想做的工作。除了工作内容以外,公司的同事也非常的nice又好相处,技术主管和CEO Davis可以说是我处过的最好的领导之一。总之,这里的工作完美地符合了我的期望。</p>
<h3 id="社招总结">社招总结</h3>
<p>整个社招过程中,对我帮助最大的当属MIT的6.S081课程,它让我的操作系统基础比以往任何时候都要扎实,而这样扎实的“地基”,使得我在面对几乎所有来自面试官在这个方向上的“狂风”都可以自如应对、岿然不动。我很庆幸自己即使在工作之后也没有停下学习和成长的脚步,也庆幸自己之前对自己基础不扎实的清晰认识与这段时间对基础的认真打磨。</p>
<p>除此以外,还有一个体会颇深的是面试中的“气场”。面试中个人应该保持一个什么样的气场呢?我想这个问题见仁见智。就我个人而言,我的气场往往是“自信而求是,扎实而敏锐”,所谓自信,是说自己对自己所做的项目、所学的知识具有应有的自信,绝不畏畏缩缩唯唯诺诺;所谓求是,是说自己知道的就是知道的,不知道就是不知道,绝不不懂装懂;所谓扎实,是说自己对自己的项目与所学的知识了解到应该了解的每个细节,而不是夸夸其谈金玉其外败絮其中;所谓敏锐,是说自己能够灵活应用自己的知识来解决新的问题,能够利用自己解决的问题来系统地分析问题、找到其中的关键点。当然了,这样的气场的背后是我多年时间勤勤恳恳的学习,这是无可替代的。而据我观察,我这样的气场配合上我的能力,就可以大大提升面试官对我的评价,我想这也是为什么有些公司面试我的时候,对我的评级会一涨再涨了。当然了,我仍然深知我现在的知识与能力在真理面前仍然不值一提,我仍然有数不尽的东西需要去学习;但我也知道,我的能力已算不错,我已具备较扎实的基础和有一定体系的解决问题的能力。</p>
<p>最后一个体会就是,看到一些公司给自己开出的非常高的offer,我深知这很大程度上是因为自己幸运地选择了一个在风口上的行业。前方还有无数的知识等待我去学习、还有无数有趣有意义的问题等待我去解决,绝不能骄傲自大、固步自封。前进、前进,永不止步!</p>
<h2 id="总结">总结</h2>
<p>工作半年就辞职找工作,这本是一件非常致命的事情,因为工作经验不多,但又没了校招应届生的身份,同时一些公司可能还会担忧我是不是自身存在什么问题。但是回过头看,我无比庆幸自己当初辞职的决定,这也许是我做过的最正确的决定之一。</p>
<p>同时要感谢这个过程中一直支持和帮助我的各位朋友与师长。大家总是能在我需要的时候给我以支持。</p>
<p>也希望我的这些经历和思考能对一部分读者有所启发。</p>
<p>最后以乔布斯演讲中的一段话作为本文的结束:</p>
<blockquote>
<p>工作将占据你生命中很大的一部分</p>
<p>Your work is going to fill a large part of your life</p>
<p>只有相信自己所做的是伟大的工作,你才能获得快乐</p>
<p>and the only way to be truly satisfied is to do what you believe is great work</p>
<p>而伟大的工作就源自你的爱</p>
<p>And the only way to do great work is to love what you do</p>
<p>如果你还没有找到</p>
<p>If you haven&rsquo;t found it yet</p>
<p>继续寻找,不要止步</p>
<p>Keep looking and don&rsquo;t settle</p>
<p>全心全意地寻找</p>
<p>As with all matters of the heart</p>
<p>当你遇到它时,你就会明白</p>
<p>You&rsquo;ll know when you find it</p>
<p>就像那些美好的爱情</p>
<p>And like any great relationship</p>
<p>随着岁月的流逝,愈加醇美</p>
<p>it just gets better and better as the years roll on</p>
<p><strong>所以,继续寻找,绝不止步!</strong></p>
<p><strong>So keep looking, don&rsquo;t settle</strong></p>
</blockquote>
</description>
</item>
<item>
<title>追寻快乐的人生:积极心理学课程简介</title>
<link>https://conanhujinming.github.io/post/positive_psychology/</link>
<pubDate>Sat, 15 May 2021 22:43:42 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/positive_psychology/</guid>
<description><h3 id="前言">前言</h3>
<p>我在之前的
<a href="https://zhuanlan.zhihu.com/p/357360797" target="_blank" rel="noopener">一篇文章</a>中谈过我对大学教育的看法,在讲到<strong>保持身心健康</strong>的时候,我推荐了一门课程,或者说是一门学科,叫《积极心理学》。在过去的一段时间内,我刚好有机会实现了对一些精神专科医院的走访、心理咨询师的走访、和对杭州部分大学、高中、初中的走访。在走访中,我也了解到,由于社会压力的增大(以及去年疫情的隔离),过去几年内社会上不幸得心理疾病、精神疾病的人的数量明显增加,且越来越显出青少年化的趋势,“有60%-70%都是青少年”。这样的形势显然是异常严峻的。</p>
<p>更加严峻的是,我国对于心理疾病、精神疾病的认识似乎还处在比较“谈虎色变”的阶段,许多人(包括青少年的家长)并不了解心理与精神疾病是什么,更别说是有勇气承认自己(或是孩子)生病了并选择去医院就医。况且,我国的优质心理、精神疾病的治疗资源极为紧缺,这就使得本已严峻的形势雪上加霜。</p>
<p>针对这种情况,我个人的观点是,合理的治疗极为重要,但疾病的预防也是非常重要的。这篇文章就再来推荐一下我认为对预防心理与精神疾病有很好效果的一门学科,积极心理学。主要来简单介绍一下这门学科是研究什么东西的,学了与实践之后会有什么作用,并推荐一些优质的学习资源,希望能够对一些读者起到帮助。</p>
<p>当然,我这里要强调一句,我本人并不是学心理学专业的,对于积极心理学的了解仅限于一个普通的学习者的程度,所以这篇文章很可能会有一些错误,还请懂行的大佬轻拍,也请对积极心理学感兴趣的同学参考最后的推荐资源去用更权威的资料来了解这门学科。</p>
<h3 id="积极心理学是什么">积极心理学是什么?</h3>
<p>就我个人理解而言,<strong>积极心理学是研究如何让人变得更加快乐的一门学科。<strong>许多人认为,一个人是否快乐,这似乎是不可学得的。很多人生而乐天或者悲观,而另外一些人的快乐则似乎很大程度上由环境所影响。的确如此,一个人的快乐程度的确受到先天、后天环境等众多因素影响,但幸运的是,积极心理学的研究证明了一个人的快乐程度还可以由后天个人努力“习得”。用哈佛心理学教授Tal的话来说,就是</strong>”它是可学得的 (it is learnable)“</strong>,而这句话在我看来,就是积极心理学中最重要的一句话。因此,就算我们目前是一个不太快乐的人,我们也可以而且应该拥有这样的心态来学习和实践积极心理学。</p>
<p>那么积极心理学是如何做研究的呢?简单来说,积极心理学的研究者会找寻一些”非常快乐的人“,去研究他们为什么能够这么快乐,探寻背后的原因。当研究者有一些想法之后,他们会设计严谨的心理学实验,这通常是找一组实践组和一组对照组,在他们的身上应用自己的想法,并验证想法的有效性。因此,<strong>积极心理学是一门严谨的科学,其所提倡的一些让人变得更快乐的方法都是有严谨的实验证明的</strong>,这与一些空口白话的鸡汤或者伪科学是截然不同的。</p>
<h3 id="那么学习与实践积极心理学会有什么作用呢">那么学习与实践积极心理学会有什么作用呢?</h3>
<p>这个问题很容易回答,就是<strong>能够让你自己变得更加快乐</strong>。请注意,这里说的是变得更加快乐,是说你这个人整体的幸福度能够提高。这并不是说学习了积极心理学之后,你就不会再有烦恼、不会再悲伤与忧愁了,那是不可能的,因为你毕竟是人,而不是神。这说的是,你的整体幸福度能够提高,在碰到悲伤的事件的时候也可能不像以前那么难过。</p>
<h3 id="那么积极心理学是能让自己突然变快乐的黑魔法吗">那么积极心理学是能让自己突然变快乐的黑魔法吗?</h3>
<p>当然不是,这世上没有魔法。我这里可以简单列举一些积极心理学研究得出的对提高个人幸福程度的方式:</p>
<ol>
<li>
<p>每周3次及以上的有氧运动,每次运动时间最好大于30分钟。</p>
</li>
<li>
<p>微笑,多多微笑。</p>
</li>
<li>
<p>写日记。</p>
</li>
<li>
<p>培养健康的爱情与社交关系。</p>
</li>
<li>
<p>养成良好习惯</p>
<p>&hellip;&hellip;</p>
</li>
</ol>
<p>大家可以看到,这些都是一些“老生常谈”的话题,甚至很多同学可能会表示:“就这?”没错,就是这样。积极心理学研究的并不是什么黑魔法,而且很多研究结论甚至是我们都知道的东西;但是对很多人来说,往往是“听了很多大道理,却还是过不好这一生”,对于积极心理学也是一样,<strong>让自己变得更快乐的最重要的一点就是,要相信自己能够变得更快乐,然后去实践这些方法,要有意识地去改变</strong>,因为如果你不去改变,那么最终就什么也不会改变。而且这样的改变大概率不是一蹴而就的,而会是慢慢地、一步一步地变得更加快乐的。也许有些不做改变的人最后会感慨,“积极心理学也不过如此,果然没啥用啊!”也希望大家记住,快乐是自己的,追寻快乐也必须也只能是靠自己。</p>
<h3 id="那么怎么去学习积极心理学呢">那么怎么去学习积极心理学呢?</h3>
<p>我最推荐的是哈佛大学Tal Ben教授开设的该项课程,这门课在当时还多次破了哈佛大学的选课记录,成为最受学生欢迎的课程。Tal在2004年的课程是有全程录像的,其地址在
<a href="https://www.bilibili.com/video/BV1kx411S7ZU?p=1" target="_blank" rel="noopener">这里</a> 。这门课我是自己看过不止一遍的,抛开内容不谈,Tal本人的人格魅力与授课魅力也绝对是超一流的。</p>
<p>除了这门课程之外,Coursera上也有几门积极心理学课程,是我的心理咨询师朋友推荐给我的。不过我都没看过,所以也不敢保证质量,这里也一并给出,供大家参考吧:</p>
<ol>
<li>
<a href="https://coursera.org/learn/positive-psychiatry" target="_blank" rel="noopener">悉尼大学 Positive Psychiatry and Mental Health</a></li>
<li>
<a href="https://coursera.org/learn/positive-psychology-visionary-science" target="_blank" rel="noopener">宾夕法尼亚大学 Positive Psychology: Martin E. P. Seligman’s Visionary Science</a></li>
<li>
<a href="https://coursera.org/learn/positive-psychology-applications" target="_blank" rel="noopener">宾夕法尼亚大学 Positive Psychology: Applications and Interventions</a></li>
</ol>
<p>祝大家都能追寻到属于自己的快乐与幸福~ 在追求幸福的路上,你我都不孤单。</p>
</description>
</item>
<item>
<title>高效学习的几个技巧</title>
<link>https://conanhujinming.github.io/post/the_art_of_learning/</link>
<pubDate>Sun, 02 May 2021 19:39:17 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/the_art_of_learning/</guid>
<description><p>这篇文章主要是推荐一个我前段时间无意中看到的视频:Marty Lobdell—Study Less Study Smart,
<a href="https://www.youtube.com/watch?v=IlU-zDU6aQ0" target="_blank" rel="noopener">油管链接</a>,
<a href="https://www.bilibili.com/video/BV1Pz4y1f7oi?from=search&amp;seid=7519212517238338543" target="_blank" rel="noopener">B站链接</a>演讲者Marty是美国Pierce College的心理学系的教授,他当年读书期间就钻研出来自己的一套学习方法,并用这套方法取得了全A/A+成绩。Marty认为长时间却低效的学习带不来较多产出,反而容易让人产生挫败感,而科学地高效学习则可以让人快乐又有成就感地实现学习目标。这个一小时的视频就给出了他认为最重要的一些关键点。总得来说,Marty所建议的技巧与我多年摸索出来的技巧基本一致,只恨自己没有当年早早地看到这个视频。这篇文章简单概括一下Marty提出的几点。当然,我强烈推荐去看Marty的演讲,他讲得比我这边写得清楚、有趣得多,我这里只是简单地介绍与推广。</p>
<h3 id="劳逸结合每工作一段时间如30分钟就休息一下">劳逸结合,每工作一段时间(如30分钟)就休息一下</h3>
<p>这个技巧现在已经相当知名了,一般称作“番茄工作法”。其原理相当简单:人在相当长地工作一段时间(如30分钟)之后,注意力和精力会显著下降,这时候就算继续学习、工作,效率也会很低,只是白白地浪费时间;而这时候如果休息5分钟,则注意力可以显著地回升到一个可以继续高效工作的水平。这其实也就是为什么学校课程的安排要在45分钟的授课之后安排10分钟左右的休息了。除此以外,在自己忙活完一天的学习之后,也可以犒劳一下自己,让大脑形成这样一个正反馈机制,下次就更愿意专心学习了。</p>
<h3 id="创建一个专门的学习区域并养成在那里学习的习惯">创建一个专门的学习区域,并养成在那里学习的习惯</h3>
<p>这点我自己就深有体会。我以前特别喜欢靠在床上看书,且不提这种方式对脊柱和颈椎的伤害,单说学习效率而言,我每次一坐到床上就会开始犯困,然后所谓的看书最后就会变成睡大觉。这个现象不单单揭露了我的懒惰,实际上也是有一些科学原理在里面的。人的大脑和身体会对不同的环境培养出专属的“形态”:就好像迪迦奥特曼在碰到敏捷的敌人要变身速度型、碰到力大的怪兽要变身强力型一样,人也会对自己的学习区域、睡眠区域等地方培养出专属的形态。一旦我坐到床上,我的大脑和身体就自动识别出来这是我平时睡觉的区域,那么是时候切换睡眠形态睡大觉了。这样的话,我的学习效率自然是低得可怜的了。因此,Marty建议大家去创建一个专门用来学习的区域,并且一旦学习,就在那个区域学习。如果家里没有书房的话,他也提供了一个小小的建议,就是买一盏台灯放在书桌上,然后用某种专门的台灯颜色来表示自己要变身成学习形态了——实验证明,这个看似简单又有点好笑的小技巧是能实实在在地提升学习效率的。</p>
<h3 id="知道视觉辨认recognition和回忆recollection的区别看了课本之后合上用自己的语言复述一遍">知道视觉辨认(recognition)和回忆(recollection)的区别,看了课本之后合上用自己的语言复述一遍</h3>
<p>这里说的其实是一个很有意思的现象。譬如我背四六级单词,背诵良久之后,我终于背下了Abandon是抛弃、放弃的意思,我喜出望外,觉得自己英语大成之日已然不远;但实际上可能只是因为我记住了这本单词本的第一个单词是抛弃、放弃,如果换一本单词本,abandon是第三个单词,那我可能就认不出来了,这种情况就叫做视觉辨认(recognition)。而我们追求的其实是不依赖于这个单词在单词本上的位置而真正地记下了这个单词。那怎么确认自己达成了这个目的呢?如果是单词的话,那么可以打乱顺序(借助APP)再背一遍;而如果是其他的知识如数学、计算机等,则可以合上课本,用自己的语言再复述一遍这部分课本讲了什么东西,直到自己能够准确地复述出来,这才确认自己是真的懂了。</p>
<h3 id="获得足够的睡眠来帮助记忆">获得足够的睡眠来帮助记忆</h3>
<p>这个也是一个老生常谈的话题了。人在睡眠的时候,大脑会做很多乱七八糟的事情,来帮助把白天的临时记忆给存储下来,固化成长期记忆,就类似于把计算机内存中的数据给存到硬盘上一样。所以,如果想要比较好地记住东西,那么就从拥有足够的睡眠开始吧。除此以外,高质量的充足睡眠还有数不清的好处,甚至可以说这是人的“超能力”之一。所以无论如何,让自己拥有充足的、高质量的睡眠吧!</p>
<h3 id="记了笔记之后再花些时间来理解自己记了什么">记了笔记之后,再花些时间来理解自己记了什么</h3>
<p>这个是说很多同学在课堂上会疯狂记笔记,然后下课之后就夹着笔记离开教室了;而Marty则建议再多花些时间来“理解”自己的笔记。孔子说过一句类似的话,“学而不思则罔,思而不学则殆”。也就是说,仅仅机械地去学习,那么可能会是收效甚微的,更好的方式则是在学习的过程中,自己也要主动地去思考和理解,这样才能产生更深刻的认识,甚至是提升自己的“元学习”能力,即下次去学新的东西的时候,效率会比之前更高。</p>
<h3 id="组团学习把自己学到的东西给别人讲懂">组团学习,把自己学到的东西给别人讲懂</h3>
<p>说到这个,不得不提一下现在很流行的“内卷”。我是非常反对内卷的,每次看到许多聪明优秀的学生将时间精力浪费在无谓的内卷中,我就感到非常可惜。相反地,我非常提倡内卷的反面,即组团学习、共同进步。组团学习的好处实在太多太多了。我之前写的一些文章让一些同学感慨说我周围的朋友都是大神,其实我们刚认识的时候也许也并不算多么厉害,但是我们这几年一直组团学习、共同进步,且不说现在实力如何,但比起几年前我们刚认识的时候应该说已经有了极大的成长,这在一定程度上要归功于我们一起在组团学习。这里简单列举几点组团学习的好处:</p>
<ol>
<li>互相激励。很多人比如我就是非常懒惰的,如果自己一个人学习的话,往往最后就变成摸鱼玩游戏或者躺床上睡大觉了,而如果与朋友组团学习,则我们会互相激励好好学习,大家都会变得更努力。</li>
<li>共享资源。一个人自己能够接触到、发现的学习资源是有限的,但多个人一起,相当于每个人都能享受到所有人接触的学习资源。比如我们就会经常互相分享高质量的课程(甚至是一起刷)、有趣有意义的演讲、觉得有价值的书等等。</li>
<li>讨论问题、互相教授知识。对于被教授知识的同学,那自然是能学到更多的东西;而对于教授的一方,也常常会通过讨论的形式更深刻地理解了知识,甚至经常会发现自己之前理解错误的地方(这种学习方法也叫费曼学习法)。</li>
<li>&hellip;&hellip;</li>
</ol>
<p>总之,我强烈推荐大家反对内卷,组团学习,共同进步!</p>
<h3 id="对教科书使用sq3rsurvey-question-read-recite-review">对教科书使用SQ3R(Survey, Question, Read, Recite, Review)</h3>
<p>这个比较复杂,这里就不展开说了,请大家参考原视频。</p>
<h3 id="使用助记符来帮助记忆">使用助记符来帮助记忆</h3>
<p>Marty建议用一些个人的助记符来帮助记忆。坦白说,这个我是学不来,这里就不展开说了。我反而认为视觉化(visually)地联想对我的记忆会比较有帮助。</p>
<h3 id="总结">总结</h3>
<p>我最后再补充一点Marty没提到但我认为对提高学习效率很重要的点,就是养成良好的锻炼习惯。这个也是老生常谈的话题了,这里就不展开说了。最后想说,在学习这条路上,勤奋和努力是不可替代的,但是我们可以用一些技巧,来更高效地利用自己的勤奋和努力。Marty提出的这几点是我认为很有价值和效果的技巧,因此强烈推荐大家花一小时看一看这个视频。同时也要说,不是每个技巧都适用于所有人,因此也建议大家在实践这些技巧的同时,也可以自己摸索出更适合自己的技巧。最后祝大家学习快乐~~</p>
</description>
</item>
<item>
<title>CMU 15-445:知名教授历时多年打磨,数据库神级课程限时免费!</title>
<link>https://conanhujinming.github.io/post/cmu_15_445_intro_to_db/</link>
<pubDate>Tue, 20 Apr 2021 22:14:34 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/cmu_15_445_intro_to_db/</guid>
<description><p>本文原标题为《一起来通关CMU 15-445数据库系统导论吧~》。前几日深刻学习了某些卖课广告的风格,故想出了这个标题。(受启发于@迟先生的
<a href="https://zhuanlan.zhihu.com/p/348225926" target="_blank" rel="noopener">这篇文章</a></p>
<p>
<a href="https://15445.courses.cs.cmu.edu/fall2020/" target="_blank" rel="noopener">15-445 Introduction to Database System</a>可能是数据库领域最出名的一门课程。这主要是因为是这门课的授课老师
<a href="http://www.cs.cmu.edu/~pavlo/" target="_blank" rel="noopener">Andy Pavlo</a>多年来一直坚持将这门课几乎所有的资源都开放出来供全世界所有对数据库感兴趣的人学习。虽然在2020年由于一些政策的原因,Andy没能将授课视频公开出来,但是仍然可以轻易地在
<a href="https://search.bilibili.com/all?keyword=15-445&amp;from_source=webtop_search&amp;spm_id_from=333.851" target="_blank" rel="noopener">B站上</a>或者
<a href="https://www.youtube.com/watch?v=oeYBdghaIjc&amp;list=PLSE8ODhjZXjbohkNBWQs_otTrBTrjyohi" target="_blank" rel="noopener">Youtube上</a>找到这门课2019年的全套授课视频。而且,Andy还提供了2020年project在GradeScope上的评测接口,
<a href="https://15445.courses.cs.cmu.edu/fall2020/faq.html#q5" target="_blank" rel="noopener">详情见此</a>。因此,即便是自学的同学,也几乎可以完全享受到这门课除了助教以外的所有资源,这对于数据库爱好者和学习者来说无疑是无价之宝~ 这里也向Andy多年来对数据库教育的贡献表示最崇高的敬意Orz</p>
<p>这里顺带讲一讲Andy的八卦。Andy可以说是计算机知名教授中最有梗的人之一,人称搞事大王。他的梗太多了,以至于这里不得不分列几点:</p>
<ol>
<li>Andy的课程有自己的BGM,甚至还有专门的DJ。这个大家去看视频就会见识到了。</li>
<li>Andy是一个乐队武当帮的超级粉丝。他在第一节课最后说了一大堆奇怪的话,大意是“对于你们来说,这学期最重要的是知道A、B、C、D、E这些人”。一开始我听了之后感觉莫名其妙,后来才知道这些人都是武当帮的成员。亮点来了。期末的时候,Andy在试卷上出了一道题,内容是写出这个乐队成员的名字,分值是100分,全部写出来才能拿到(终于知道为什么认识这些人是最重要的了LOL)。然后全班没有一个人写对的。Andy为此还专门发了一条推特:“这是我教学生涯中最尴尬的一幕,竟然没有一个人答对!“</li>
<li>Andy在课上说(翻译):我告诉你们,这世上我只在乎两件事情,第一是我的老婆,第二是数据库,其他的我一点都不在意!</li>
<li>Andy在学期中间让学生投票决定他的新发型。</li>
<li>&hellip;&hellip;</li>
</ol>
<p>应该说,Andy不仅在学术和教育领域有着极高的成就,在玩梗上也是独树一帜。</p>
<p>八卦讲完了,那么回到正题,这篇文章的目的和之前的系列文章一样,都是号召大家组队刷课。我个人认为15-445是一门比6.S081更需要组队刷的课,因为这门课的测试用例是没有开放给学生的,而且这门课的project由于每年都是新出的,所以在文档描述方面以及设计方面不可避免地不如6.S081那样历经多年打磨的lab成熟,而自学的话又没有助教可以询问,所以很容易陷入一些没意义的坑而浪费大量时间。同样,<strong>每一位加群的同学都应该以独立通关15-445的project为目标</strong>。这里的独立,不是说大家不能交流,而只能一个人埋头苦干;恰恰相反,交流是非常重要的。这里独立指的是:</p>
<ol>
<li>不能阅读其他人的代码实现,自己的代码必须自己完成。</li>
<li>不能找其他人帮忙debug。</li>
<li>可以交流思路、碰到的问题,但不应该提问一些应该自己解决的问题。例如:有没有人能帮我看一下我这段代码哪里有bug等等。</li>
</ol>
<p>为了尽量保证每一位入群的同学都是冲着独立通关15-445来的,入群有一个简单的条件,即<strong>必须自己先独立完成第一个project,而第二个project至少要拿到80%以上的分数</strong>。实际上project0(c++ primer)和project1(buffer pool manager)与后面的project相比都比较简单,属于热身性质的project。我个人认为这样的入群条件能更好地维护学习交流群的单纯性。</p>
<p>另外,为了保证交流群的氛围,这边也简单写一些规则,如果不愿意遵守的同学就算啦:</p>
<ol>
<li>请不要阴阳怪气他人。</li>
<li>请不要参考他人代码或请他人debug,应该要独立完成Lab。</li>
<li>请不要或尽量少无意义地水群,15-445学习交流群应该供学习交流15-445使用。</li>
<li>欢迎大家在群里提问,**但提问者在获得了满意的回答之后,必须将回答自觉地整理到群内提供的piazza页面,以方便后来的学习者。**因为之前6.S081群里面很多同学光提问不整理,导致有很多重复的提问,所以这次专门规定这一点。<strong>如果不主动整理的话,将会被踢出群</strong>&gt;_&lt;</li>
<li>另外强调一下,<strong>请遵守Andy的要求,不要公开自己的作业代码,如放在GitHub上</strong>。</li>
</ol>
<p>之前不熟悉C++的同学,可能做project0会遇到一些困难,因此这里提一下这个project需要了解的C++知识:</p>
<ol>
<li>类与继承</li>
<li>虚函数</li>
<li>模板</li>
<li>stl里的智能指针,这里的话特别是unique_ptr</li>
<li>std::move语法</li>
</ol>
<p>我注意到project1的一个坑,这里也给出来,避免大家再次踩坑:</p>
<ol>
<li><code>UnpinPageImpl</code>里如果<code>page_id</code>不在<code>page_table</code>,那么要<code>return true</code>而不是<code>false</code>。实际上这个函数的描述是正确的,但我个人认为这个行为有点反我的直觉。</li>
<li>想到其他的坑点会再补充。</li>
</ol>
<p>好的,那么我就先写到这里,感兴趣的同学请达到入群要求之后加群交流~<strong>群号为878405016,加群的时候请附上自己在gradescope上的leaderboard name~~并且在加群之后的24小时内主动把截图发给群主,否则将会被踢出群&gt;_&lt;</strong> 这边也强烈建议大家加一下课程的
<a href="https://discord.gg/YF7dMCg" target="_blank" rel="noopener">Discord channel</a>,里面也有很多很好的讨论~</p>
<p>谢谢大家啦~~</p>
</description>
</item>
<item>
<title>(转)OPTO的奋斗史:从中专到伯克利PhD</title>
<link>https://conanhujinming.github.io/post/the_story_of_opto/</link>
<pubDate>Sat, 03 Apr 2021 20:37:10 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/the_story_of_opto/</guid>
<description><p>简介:这篇文章是在我上次写了
<a href="https://zhuanlan.zhihu.com/p/360390223" target="_blank" rel="noopener">信静的故事</a>,有位同学分享在评论区里的。这篇文章的作者的经历非常曲折而传奇。他先是考取了中专,而后回到自己毕业的初中当了数年初中老师。结果因为自己曾经的同学与当时的同事的陷害,被逼无奈离开自己工作的初中,开始了一段时间的流浪生活。之后作者决定自考本科,在考上本科之后又决定考研到浙大光学,于是成为浙大99级的光电研究生。最后,作者申请到了伯克利的光学PhD,并前往伯克利继续求学。这篇文章就写在作者读PhD的第一年,是一篇自传性质的文章。我看了这篇文章之后深受触动,尤其是看到作者的一些经历的时候也联想到了自己一些的相似遭遇(如被陷害不得不与校长闹崩、自己一个人在宿舍时的情绪崩溃,还有流浪时睡火车站等),也从字里行间感受到作者的求是精神与永不向挫折低头的少年意气。</p>
<p>原文是发在飘渺水云间(88,当年的浙大校内论坛)上,由于我看到转载的网站的排版十分糟糕,故我重新整理了一下排版转载至此,希望也能对其他同学有所启发或激励。</p>
<hr>
<p>——往事随风飘飘</p>
<p>opto以拙文献给所有关心和帮助过我的人</p>
<h2 id="0-序">0. 序</h2>
<p>像我这样平淡了半生,并且也许将平淡一生的人,居然不知天高地厚想写一个自传似的东西。姑且不管他人怎么瞪眼睛吹胡子,就连自己都觉得有点滑稽。只是由于多年教书的职业病后遗症,比较爱卖弄嘴皮子,并且经常有玩弄文字的冲动。身在异国他乡,平时想找个人聊天都比较难,想打电话还得考虑别人是否有时间有闲心聊,郁闷得要紧,想找个地方自作多情卖弄风骚。 一直觉得BBS是适合我这样时常无聊的人折腾的地方,所以也就不管三七二十一,决定揭开自己的伤疤,回忆一下尘封已久的往事。这些发酵过的农民菜坛子里的东西味道多半不太适合儒雅之士,也不适合那些聪明的贤达。如果那些跟我一样当过贫苦农民、在火车站卖过稀饭、或者和民工一起睡过街边的人看后能和我一样有些许的感慨,我就心满意足了。是为序。</p>
<h2 id="1-童年">1. 童年</h2>
<p>童年留下来的印象只有两个,饥饿和父亲的早逝。 那些和我一样出生在70年代初的贫困农村家庭的兄弟姐妹应该还记得那时的生活是什么样子。父母整天在生产队里干活,分得的粮食却根本无法满足一家5口的需要。经常在想当年母亲为什么坚持要把我生下来,只是一直没有勇气问。母亲生我前几个小时竟然还在生产队出工,按照她的迷信说法,我是天生注定的苦命。每次听她说起这个,我都无言以对在她面前,我只能收敛起我狂放而浮躁的夸夸其谈,保持沉默以示认同,同时在心底发出强烈的没有目标也没有结果的抗议。家里时常揭不开锅,除了营养不良,我的童年几乎没有什么我还记得的东西。时至今日,我也还没有养成吃零食和送人礼物的习惯,因为在我的记忆中,这些都是富人的事情。那时最大的礼物可能就是春节时姨妈或舅舅等长辈每人给的一毛压岁钱,所以每到除夕就兴奋得睡不着觉,想象着那些花花绿绿的小纸片揣在怀里的幸福景象,和母亲一起“守田埂”(可能是迷信的传统吧,好象说除夕之夜睡得迟,第二年的田埂便不会被洪水冲跨),偶尔还会有几个糖果作为奖赏。幼儿园对我们这种真正的穷人来说只是一种奢侈的地方,幸好当时上学基本上相当于免费(当时一学期的学杂费好象不到两元钱),我在7岁那年幸运地进了村里的小学。感谢父母的英明, 我没有象我的另一些儿时的伙伴那样成为文盲。</p>
<p>父亲在&quot;病床&quot;上睡上一年多后,还是撒手去了。那一年我才9岁, 刚好农村土地下放有点期望过好一点的日子的年头。到今天我也不清楚他究竟死于何种病症。当时全村只有一个&quot;赤脚医生&rdquo;,连最基本的药都找不到,更不用提什么医疗设备了。而城里的医院,当时似乎只是&quot;工人阶级&quot;和&quot;人民的奴仆&quot;们才能出入的地方。当我嫩弱而瘦小的膝盖跪在父亲的灵堂前时,我更深地体会到了&quot;人生来就是不平等的&quot;含义。我默默地接受人们投来的可怜我的眼光,突然知道了父亲的烟枪打在身上的痛原来是一种幸福。当我戴着孝布去看他最后一眼时,我多么希望他能从那个木箱子里站起来重重地在我头上敲上几烟枪啊!!!可是此时的他却那么地安详,他那粗暴的脾气竟然就这样消失得无影无踪。我很快就知道了,消失的,还不仅仅是他粗暴的脾气。</p>
<p>当吊唁的人们散去时,母亲的泪已经流干了。面对四壁空空的茅草屋,我却哭不出来。泪,只能往心里流!此后的日子无须多说,我还记得很清楚的一幕是:背一个跟自己差不多一样高的筐跟在母亲后面割高粱穗,回家用簸箕搓出还没成熟的高粱籽,再和母亲一起推石磨做高粱羹。</p>
<h2 id="2-抑郁少年">2. 抑郁少年</h2>
<p>日子就这样不紧不慢地过去,到了小学五年级。同班的一个女生的妈妈是学校的老师,想让她提前一年去考中学。不知从什么地方来的激情,一时冲动我也决定跳级考试,还跑到毕业班去上了两天课。我的两个老师当然不愿意我考上,因为那样会影响他们的升学率。结果毕业班的老师碍于面子只好把我赶出教室。当我拿到镇里最好的中学的录取通知时,他们已经无可奈何了,路上碰到还是满脸笑容地祝贺。只是我并没有觉得这是值得高兴的事,因为我知道母亲拿不出录取通知书上要求一次付清的¥25学杂费。但是母亲又英明一次,决定借钱让我赶在截止日期以前报名。当时哥哥已经在外打跟着一个木匠师傅当学徒去了,母亲觉得等他过年回家时这笔债就不是什么大问题。于是我有了一生中第二次刻骨铭心的经历,当时的一幅幅场景,和父亲葬礼上的镜头一起,成为我近二十年来时常回味的电影剪辑,让我细细体会人生。</p>
<p>那是一个酷热无比的盛夏午后,镇中学报名截止的前一天。赤脚的我跟在母亲后面,在几近40度的高温烧烤下,去生产队里&quot;有钱人家&rdquo;(相对于当时穷苦农民而言)借学费。走了一家又一家,问了一户又一户,却没有人愿意把钱借给一个一贫如洗,带着三个孩子的寡妇。当我腹中和手中都空空如已地回到我们的茅草屋时,我已经分不清身上哪些是汗水哪些是泪水了。那些不可一世的鄙夷的表情,在我的脑海中定格为永恒。</p>
<p>可惜我太不争气,用千辛万苦才从亲戚家借到的学费,换来的是第一学期三门课不及格。由于没钱买学校食堂5分钱一份的菜,虽然学校离家三公里, 我和附近一帮年龄相近的伙伴每天中午都回家吃饭。我们在碎石和泥土铺成的公路上,每天走四趟,天晴时呼吸漫天的灰尘,下雨时带着一身的泥浆。于是和这帮哥们有了阶级感情,天天在一起鬼混,要么在上学在路上打牌,要么在回家的路上去偷别人的水果。母亲从来不管我的学校的成绩之类的事,她觉得她尽到责任了,我要怎么做是我自己的事。并且那时附近也没有几个读书跳出龙门的先例,母亲相信命,所以不侈望我能有什么出息。只是希望我不要象她和父亲好样成为文盲,并且等我长大种菜卖时要算得清。第二学期有所好转,打牌依旧,但上课时开始真了,所以课程全部及格。上学的路上帮着哥哥和母亲将他们准备好的菜搬到镇上,周末帮着带哥哥的小孩。哥哥在外面跑了两年,认识了一些&quot;狐朋狗友&rdquo;,这帮人虽然没读过多少书,但在我们那种偏远的农村,还算见过世面的人,也算是有&quot;学识&quot;了。这帮人经常在我家进出,对我多少还是产生了一点影响,使我知道了外面的世界很精彩。于是跳出龙门的想法开始发育了。</p>
<p>但哥哥嫂嫂明确说过不会让我上高中,所以当时唯一的希望就是上中师中专。在那个时候的农村甚至小城市里,最好的学生都想考这种现在请都没人去的学校,考不上才去上高中。初一暑假,跳出龙门的决心已下,并且找了几个志同道合的同学准备&quot;共同奋斗&rdquo;。我还不计前歉帮一个小学时扭伤我胳膊还不赔医药费的家伙,因为他当时也和我&quot;志同道合&quot;了,让我班主任老师接受他从另一个比较差的学校转到镇中,条件是多交¥80什么什么费。这位先生中考没有如愿,只好去念高中,后来师专毕业成了我的同事。他来上班时我已经在单位算是有点资格了,帮了他不少忙。可惜此君不但不报恩,反倒在半年后给我来了个马后炮,使我彻底放弃了那个工作,离开了那个鬼地方。现在看来倒也不是什么坏事,这些是后话。 总的来说,初中的三年过得很抑郁,与哥哥的年龄差距太大,基本没有成年男人和我交流,给我人格上影响,所以我身上除了遗传的一点父亲的性格暴躁的东西外,没有我们那个家族的男性特征。除了与很熟悉的人在一起,表现得非常的孤僻和害羞,据当年的女同学说,我在路上碰到她们都要脸红,更不用说跟她们说话了。初二开始全面改邪归正,不再跟那帮玩友打牌,不再和他们一起跑去看电影(那时农村有什么大事时,经常在晒场上放露天电影以示庆贺)。我把压岁钱买了一些纸自己做成笔记本认真记录不懂的东西,买了一些电池和小灯泡以备晚上母亲熄灯后好在被窝里看看书。初三以前家里没通电,母亲点油灯很省,只让火苗燃得很小,后来用电灯家里也基本上只用15W的,并且晚上必须早早熄灯, 我就用我的自制小电筒对付母亲过分的节省。</p>
<p>由于受&quot;学好数理化走遍天下都不怕&quot;的影响,平时文科根本就不学,所以成了&quot;跛脚鸭&rdquo;。特别是英语,因为以前中师中专入学考试不考,我完全就放弃了,最后中考也只得了59分,幸好当年只计算20%,影响不大; 数理化则考了一个等差数列(98、99、100)。最终我以全校应届生最高分如愿考入县师范学校, 作为镇上最好的中学,全校120个人考上中师中专的只有9个。我成了附近每一个靠 &ldquo;读书跳出龙门&quot;的人,有&quot;铁饭碗&quot;了。&ldquo;铁饭碗&quot;这三个字在当时的农村, 还算份量不轻。我想这是我这一生做过的事中对母亲最有精神意义的了,周围的人忽然都对她尊敬起来,包括那些当年以鄙夷的眼光斜视着我们母子的&quot;有钱人&rdquo;,她的精神也似乎开始变得很好。并且对母亲而言,我后来考研上浙大和考G&T出国对她已经没有多少意义,因为她觉得我在家乡工作是最好的,并且她也不知道读研究生和出国究竟是什么东西。当我三个月前离开她时,我只能给她说我到美国工作,可以多挣点钱,我无法给她解释清楚花几年时间读PHD的意义。</p>
<p>总而言之,当我拿到师范学校的录取通知书那天,天空似乎突然变得明亮起来,生活似乎不再那么灰暗,特别看着守寡为了几个孩子辛劳多年的母亲脸上的笑容时感觉特别好。走到每个地方都有人和我打招呼,对我微笑,一下子觉得自己腰杆比以前直,觉第一次进城竞赛时穿的屁股上贴了一个大圆的裤子也不再难看了。现在看来,这是多么的自以为是和阿Q啊!!!</p>
<h2 id="3-无知青年">3. 无知青年</h2>
<p>可悲的是这种阿Q式的自我感觉良好一直持续了多年。 没有任何人给我浇冷水,我就陶醉在这种以为是的成就感中,在师范学校里开始过着麻木的生活。那时人实在很小,相当于大家上高中的年龄,又孤陋寡闻,成了所了名符其实的井底之蛙。我个人觉得,在收费这一点上,那时国家的教育政策比现在不知道好多少倍。中学的学费很低,而中师和中专的补贴基本上够比较省的学生生活了,更不用说当时上大学有多么的幸福!我当时的补助是每个月¥28的菜票,外加30斤粮票,再用开水票跟女生换点粮票和菜票基本上就不向家里要钱了。非常感谢那些和食堂的职工经常打架的师兄们,他们使当时食堂的饭和菜的量能够得到很好的保证。在这种天天有肉吃,又有大量的自由时间的环境里,我这个受穷受难十几年的小青年开始&quot;腐化&quot;了,到高年级时相对于当时的条件简直就是玩起了小资。80年代中期,写诗是一件很时髦的事;而我们的文学老师作为当时一个刚从大学毕业的文学青年,整天跟我们吹嘘海子的诗和《河殇》这类的东西。我对诗、书、棋、琴、画和运动的爱好始于此。看看我发表的第一首诗的题目就知道年少的我多么的滑稽了:《我们相爱于墙上》,其实那时连女孩子的手都碰过,更不要说约会之类的事了。那时我很推崇印象派和抽象派,这首诗也是印象派泛滥的产物。后来也写过一些比较现实的东西,还记得有一首发在校报上的诗叫《农民的儿子》,不过总的说来,那时玩的这些东西都很幼稚。倒是在书法上有实质性的进步,从初中时经常被抨击的&quot;鬼画符&rdquo;,到后来参加全国书法比赛得一个安慰性的奖励,我已经很满足了。棋和琴的水平更不过尔尔,直到现在,象棋和围棋的水平都不敢卖弄,而琴则没有超出师范毕业时用吉他自弹自唱一首《大约在冬季》的水平,风琴和画则更是早就还给老师了。唯一保留下来的是运动的爱好,几天不动就脚痒痒。还好,师范的课程要求面很宽,除了英语,从哲学心理学教育学到数理化生到语文逻辑体音美劳都得学,只是学得都很简单。小资之外,我的总成绩在全年级180个人中从来没掉出过前三。当时的理想就是做一个好老师, 所以似乎没有什么前途好担忧的。</p>
<p>可我还是在不知不觉中就卷入了一起所谓的&quot;政治事件&rdquo;。当年学校罢课有好几次,其中最大的两次是89年在全国性的风潮中那一次和几个流氓追到学校打年青老师。90年五四,本来下午要放假,可是那个为了我们准备全省联考安排的数学老师要让全班补课。上午最后一节课是体育课,在训练时一帮男生就商量着说大家都不去然后跟老师撒谎说大家都不知道,当时几个班一的负责干部都在起哄,我也就跟着随大流。结果有一个因为曾经偷东西被处分的男生为了尽早取消处分出卖了大家,就他一个人去了,并且如实汇报了体育课时大家说的很多话。学校以&quot;纪念89事件为的恶性事件&quot;为名,将我和另外几处班委干部捉到学校办公室&quot;审&quot;了一个通宵,要我们&quot;交代&quot;问题。虽然后来写一个反省不了了之,可以我们几个所谓的负责人的操行都没能得优,这也成了我三年中唯一没能拿一等奖和三好生的一学期,并成了我毕业保送大学的唯一障碍。我对政治的反感始于此,虽然我很关心政治问题,但自己绝不参与。</p>
<p>此后经常一个人跑到离学校不远的山上喝闷酒,并且开始&quot;思考&quot;一些没有答案的所谓的人生问题,诸如人生的意义是什么?什么是幸福?我想要过什么样的生活?三十岁时我会是什么样子?时光就这样流逝,正如在这里灌水时青春流逝一样,我自己浑然不觉。转眼就实习了,保送大学没希望了,老老实实先到小学做&quot;人民教师&quot;去。实习的一个月过得很爽,我们11个实习生和学校的领导和老师关系搞得很热乎,还跑到校长家去帮他插秧(校长夫人在农村)。我们轮流回家自带肉和菜之类的东西,学校食堂统一免费做,每天下午放学后就和学校的老师打球,小日子过得红红火火。正好自己平时很喜欢的一个MM和我在一个实习组,那种感觉不用我说大家都可以想象。加上小学生在实习老师面前都很听话,那是我教书生涯中感觉最舒服的一段时光。实习结束时,学生们抱着一包包礼物送行,我这个一向比较冷酷的大男孩居然也和那些小孩子们一起哭了。</p>
<p>带着幸福的眼泪和满分的实习成绩回到学校,感觉教书育人的日子其实还真的不错呢。那时候哪里知道,有时候现实的生活和模拟的生活差距是很大的。几年后当我得知那个我喜欢的MM嫁了一个暴发户的初中都没毕业的儿子时,我除了麻木地听着最爱的老崔的&quot;一无所有&quot;和何勇的&quot;姑娘姑娘,漂亮漂亮….&ldquo;外,不能有任何反应。 我这个弱智的小青年,自以为写得飘飘洒洒的的装帧精美的书法作品似的情诗可以战胜金钱,以为自己忧郁感伤的吉他伴奏的男低音可以抗衡权势,自以为……</p>
<p>当我渐渐在现实中清醒过来的时候,才发现自己用心良苦的书法情诗只不过是一张废纸,自己沙哑如破弹簧的嗓子制造的只是噪音……这就是当年的无知青年!</p>
<h2 id="4-生活的课堂">4. 生活的课堂</h2>
<p>现实生活的课堂才是真正学知识的地方,因为这种知识通常不可能在教材中找到,能够真正传道、授业还解惑的活生生的老师,我还真没遇到过,能够比较好的授业就已经不错了。 不管多么的无知和幼稚,18岁的我完全独立了, 从三年前155cm40kg瘦小如非洲难民且不善言语的小男孩变成了171cm60kg灵活如猴子活跃如麻雀的可爱青年, 回到自己毕业的中学开始误人子弟,从此没在家里要过一分钱。虽然一开始就三个月没发工资,虽然只能住在一间空荡荡的漏雨的土房里,心情还是比加州的阳光还要亮丽。初入社会和真正地独立生活的新鲜感强烈而持久。一开始学校的两个领导似乎都不太高兴我的来临,因为他们各自盘算着要我的同学中他们喜欢的人。也许他们是正确的,因为我那两个同学后来都在我开始流浪前就当上了另外两所学校的校长,事实也证明了他们的&quot;领导&quot;才能。</p>
<p>毕业的时候哥哥不在家,母亲又不懂分配中的人情世故,虽然我在师范的成绩是Top3/180, 我知道这些东西并不起决定性作用,只好自己去挖掘一些&quot;关系&rdquo;。搞定后,我第一次离开泸州跑到宜宾找舅舅买正宗的五粮液以示谢意。呜呼,无知的小青年竟然也知道用此等卑劣手段谋利。稍微感到宽慰的是,最终我还是凭着自己教书方面全面的实力征服了领导和同事,后来竟然让我连续上大家都明争暗抢的毕业班。第二年我就分到了当时学校单身职工最好的套房,虽然只是一室一厅加橱卫,比起那间一下大雨我就担心墙会被冲跨而睡不着觉的土坯屋,简直就是天堂了。</p>
<p>第一个月做饭就算坏了三口锅,成了当时镇上的一大笑话。当时用&quot;蜂窝煤&rdquo;,做饭只能在土坯屋外,每天下课后把米放在锅里后我就在土坪球场上去消耗自己的还没用完的体力。有时玩得起劲就忘了锅里的事,饭烧糊了自己也不知道,严重的一次锅被熔成了一团。另外两次烧坏锅则是那帮淘气的学生做的好事,乘我不在家时把我盖好的炉子打开。赶集时母亲经常会给我送一些菜和她认为家里比较好的东西,让我改善生活。虽然那时我只有¥87.5的工资,物价之低足以让我在小镇上过比家在农村的哥哥好得多的生活。不过我无法阻拦她,在这种事情上她的固执比的的固执还要强几个数量级,也许是她只遗传了一小部分给我的缘故吧。我只是把学生们放在和自己同等的地位,毕竟我也才从那里毕业三年,又有好多学生的父母都是熟人或者他们的哥哥姐姐是我同学,所以我和学生们的关系非常要好。他们经常跑到我的土坯里来喝水要茶或是借书问问题,打球总要拉上我上场或是当个裁判,办板报总要找我去指点和写几个漂亮的标题。没想到自己的友好很快就给自己带来了麻烦。有一天校长亲自登门造访我那地面上都长了青苔的土坯屋,搞得我受宠若惊;我被善意地告知有人造谣说我和学生过于亲近,建议我保持和学生的距离。天啊,一心一意想做个好老师,教育学和心理学书上都说和学生们保持良好的关系可以树立积极的教师形象,提高教学效果,却被这样当头打了一捧。幸好有人帮我证明那个谣言中的学生是我亲戚,否则我自己真不知道如何处理这种事情。于是我重新启用自己冷酷无情的面孔,上课很少有笑容,下课也不和学生们掺和在一起,以为这下应该没事了吧。没想到过了两个月又有一班主任说她班上一个学生辍学是因为被我吓走了。事过之后,经过别人的点拨,我才渐渐明白其实是自己当时锋芒毕露,又不懂一些人情事故,个别对我心怀鬼胚的别有用心的人想打击我。于是我开始学习在任何人面前都表现得谦逊和稳重,不要开口就把一些不该说的话说出来了,要用间接的隐晦的方式表达自己的欲望和不满,要……</p>
<p>可是我无法改变自己骨子里的一些东西,可能是母亲的基因在起作用,说话总是直来直去,喜怒哀乐溢于言表,学不会象我的有些同事那样在领导面前明明是红色也偏要说成是领导喜欢的蓝色。我不去斤斤计较那点奖金,我不在乎能不能得到升迁。由于这种始终如一的爽快,我和领导及大多数同事的关系还是处得比较和谐。日子一长,同事们的言传身教使我慢慢染上了一些那种小地方的恶习。不思进取,无聊时就喝酒、打牌和赌钱。我知道母亲对赌钱深恶痛绝,一直死守着这道关口,绝不卷入。喝酒尽力去培他们,打牌不赌钱我就参与,打球下棋只要我有空就来,吹牛更是乐在其中。我一生的黄金时间就这样被挥霍!!!其实自己也时常对自己感到不满,可是一直没有勇气跳出这个泥潭。现在看来,当时自己已经几乎不能自制,很难拒绝朋友或同事的&quot;邀请&rdquo;,通宵吹牛不知道有多少次,下棋来赌喝酒达旦也不是一回两回,醉得死去活来的情景现在还历历在目。平时自己一个人能安心练字或弹琴的时候都很少,白天一个人时基本上都泡在噪声如雷的Rock&amp;Roll中。这种状态下的保留下来的成果就只有一堆废纸, 一些自以为是诗和小说的充满&quot;激情&quot;的草稿和一些仅供自己欣赏的书法作品。值得庆幸的是我还没有完全放弃自己做一个好老师和拿一个本科文凭的&quot;理想&rdquo;。有时夜深人静时还看看书。就在这种混混的状态下,终于在工作四年后拿到一个中文(自考)和一个物理教育(函授)的专科文凭。这在那种单位已经是破天荒了。虽然这四年没学到什么书本上的东西,但奠定了后来想认真读书时的基本条件。</p>
<p>糟糕的事(在看来也许是好事)不经意间在第四年发生了。自从我住进校长隔壁的小套间,我就觉得校长夫妇对我非常关心。他们经常在我从农村的老家或是出差回到学校时盛情邀请我和他们一家人共用晚餐,他们的小女儿也正好在我教的班上,我也经常耐心地给她补习功课。如果我离开学校的时间比较长,通常会把钥匙留在校长家,这样他们有客人时可以用我的房间。总之,我们当时的关系让我觉得非常得意,不用拍马屁也可以处理好和领导的关系,真是一大快事。</p>
<p>第四年,我从高中考入师专的同学成了我的同事。此时学校已经不提供住房,他们租的房子离学校又有一段距离,我的寝室就成了他们办公、休息和做饭的地方。其中前面提到过的那位曾经&quot;志同道合&quot;的先生更是把我本已凌乱的房间来了个彻底搅拌,当我从成都函授学习一个月后回到学校时,我几乎已经忍无可忍了。我用一种比较委婉的说法让他把所有的东西从我的房间搬出去。我很快就知道我也许做错了。当学校领导层的同志找我谈心,告诉我他们例会讨论的话题时,我彻 蹦溃了。我居然成了学校领导层例会的中心话题,我那位被我赶走的同学向校长报告说我曾经推心置腹地说过校长想把他大女儿嫁给我被我拒绝了!!!当然其中很多具体细节都是我出去流浪归来时知情人告诉我的,此时校长已经换人。我可以理解校长同志当时怒火中烧的感受,那种在下属面前相当于被当面羞辱的感受。我知道我没有任何解释的余地,虽然我可以对天发誓我没有说过那种弱智的话,因为我突然想起几个月前我的初中老师兼同事和我一起在校长家喝醉后在我房间里和我&quot;谈心&quot;时关心我的人生大事时的情景,关怀备至地问我觉得校长的大女儿怎么样。我突然明白其实校长一家对我的关心也许不是一般的领导关心群众,不是一般的长辈关心后辈,不是一般的同事关心同事,那个老师也并不是真的醉,不是老师关心学生,而是一次用心良苦的安排。而我,依然幼稚如旧的我,两年中竟没有感觉到半点异常,并且不加思索地向自己&quot;喝醉&quot;的老师说:&ldquo;我还年轻,不急不急。&rdquo;</p>
<p>我知道我没办法再在那个地方呆下去了,整个95年暑假我都在痛苦地作思想斗争,何去何从?虽然早已经对那个单位满意,虽然自己也想出去闯一闯,可让我就这样含冤放弃几年青春换来的一点东西,放弃我的学生,放弃满是血汗的职称和在小圈子里的名声,放弃近在眼前的三室两厅的住房,放弃自己曾经引以为荣的工作,对于当时的我,并不是容易的事。我无法向母亲解释我放弃的理由!我无法向自己交代四年的青春!我最终还是选择了放弃,并且选择了一个看起来很极端的方式。我先在暑假快结束时搬出了校长隔壁的套间。然后在秋季开学后的第一次全校老师大会上,我故意指责校长工作中的一些失责,然后开始和他拍着桌子对骂,直到把事个大会吵散伙。其实只是想给我们都提供一个台阶,因为我知道在这件事中他也是无辜的。这样我堂而皇之的走,他也可以有一个抨击我的理由。虽然是自己一手导演的戏,回到自己的房间我还是无法再控制自己,眼泪如决堤的洪水,一发不可收拾。我抱着一堆刚刚收到的和别人合写的中学物理教学参考书,任泪水奔流,直到所有的书都浸透。这是成年后第一次,也是到目前为止的最后一次彻底的宣泄。在自己的泪水过后,我感到自己又向成熟迈进了一步。</p>
<p>生活是我一生最好的老师。</p>
<p>第二天,在我生日的时候,我收拾起一个小小的牛仔包,写了一封简短的信托人转交母亲,然后离开了那个让我曾经牵肠挂肚地方,一路上默默地唱着:我挥一挥衣袖,不带走一片云彩。除了两个铁哥们,我没有对任何人说。我不敢回家向母亲说我的打算,我不敢去向学生告别,因为我知道,如果我站到讲台上,我的泪水又会 豪某稍 。我无法向那些天真无邪的孩子解说我对人生的感受,还是让我故作坚强的背影留给他们吧,所以,我在他们刚刚下课走出教室的时候,让我的背景从他们眼底从容地滑过……想起他们,我的泪水竟又不听使唤地往外涌,就象他们涌到我寝室来吵闹时一样,不听话……</p>
<p>那一天,我又写下了如下的文字:</p>
<p>站在历史的车轮之上张望</p>
<p>忧伤已经死亡</p>
<p>复活季节的到来</p>
<p>漫长。于我歌唱</p>
<p>写下一些毫无情节的印象</p>
<p>人群如断线的风筝</p>
<p>遗忘了自己的方向</p>
<p>在浩浩荡荡的洪流里追波逐浪</p>
<p>理想的旗帜之下欲望膨胀</p>
<p>茫然站在历史的车轮之上我东张西望</p>
<p>历史的一条裤腿 在寒风中</p>
<p>飘扬。先哲的嗓音依然洪亮</p>
<p>轻轻地,我退出舞场</p>
<p>到一个荒凉的地方,种植思想</p>
<h2 id="4--流浪生活">4. 流浪生活</h2>
<p>就这样带着一身的憔悴来到了重庆流浪。选择重庆也许只是潜意识里觉得姐姐在那里,万一不行了不至于饿死街头。所谓世事难料,是我在重庆的流浪生活的一个很好的注解。我向姐姐姐夫撒谎说,自己停薪留职出来边打工边读书来了。他们虽然也没受过多少教育,毕竟在大城市里呆了十来年了,只是用疑惑的眼光看了我一会儿,倒也没说什么。可是象我这样一个穷山沟里出来的满脑子诗书理念的教书匠,要找个觉得满意的工作,谈何容易!于是一边找工作,一边开始在重庆火车站卖稀饭。几天下来觉得其实收入还真的很可观呢,一天可能净收入¥50-100,比起当时教书几百快钱一个月, 简直可以算高薪了。可以好景不长,姐姐提供的锅碗等家当,在一次城监的扫荡活动中被统统装进了警车。我的伤口上刚刚长出来的一点希望,就在警车的笛声中被收割了。</p>
<p>祸不单行,姐夫刚好又跟他的单位的头头搞僵了,失业在家。晚上喝洒,不知道是他喝醉了还是我喝醉了,老觉得他的话中带话,似乎说我在那里依赖着他。我无言以对,只能慢慢口味酒中的苦味,心里想着,这就是生活。从此对比较苦食物尤其钟爱,如苦瓜、啤酒和苦丁茶。晚上又跑到火车站去,不是去卖稀饭,因为我已经决定寻找自己独立的空间了。那一晚和民工们睡在车站,旁观着他们苦中取乐的各种把戏,似乎又明白了很多道理,幸福不是我想象的富人才有的专利,如果我改变一下自己的心态,也许情况就不一样了。</p>
<p>第二天到 称 坝的一个职介所去找工作,穿上了西装,系上领带,还在头上弄了一点摩丝,随身带了两个毕业证、自己发表的诗、小小说、书法比赛的获奖证明和两幅书法作品。没想到这些无聊时玩的把戏,竟然在我人生最失意的时候派上了用场。一个重大的开公司的教授正好到中介公司来招一个办公室的助理,一看我的打扮和带的东西,马上决定要我了。虽然只给了¥500的工资,提供吃住,公司又在大学里面, 我毫不犹豫就接受了他的条件。只是我没有想到,这成了我这一生中继考上师范后的最重要的转折点。</p>
<p>公司的办公室的提供的宿舍(其实就是学生宿舍)都在重庆大学里,于是我开始天天呆在大学里,吃住行玩都与&quot;天之娇子&quot;们共用着学校的种种实施。这是一段虽然短暂却不失美好的时光。教授在电气工程系还算有点名气,我也通过他认识了不少一直让我敬仰万分的教授和大学生。我在公司的职责说白了就是当文秘,负责客户的函件处理的第一个流程,给老板起草信件和公司宣传材料和规章制度,接待来访的客户……虽然公司只有几十号人,办公室里的活却还真不少。用现在时髦的话来说,那是一个高科技公司,公司的产品大都是基于教授的几个专利。于是我有机会接触那帮技术人员,这是生平第一次目睹并参与科学和技术创造财富,基本奠定了我接下来几年绝地反击的思想基础。我开始全面放弃多年来自我培养的中国传统文人式的那些兴趣和爱好,晚上有时间就跑去听听自己还算比较熟悉的数电和模电之类的课,因为我不想老在办公室干打杂的活。</p>
<p>这段时间完全重建起了我的自信和对生活的激情。在与&quot;天之娇子&quot;们接触的过程中,收获很多,同时也把他们在我心目中&quot;神圣&quot;的地位还原到了比较合理的认识。我认识到其实我并不比他们笨,如果我象他们一样,在读书这一点上应该不会比他们差多少,于是我开始自我安慰,又开始有了一点阿Q的精神,只是此时的阿Q已经不再是年少时狂放无知的阿Q了。我是一块不起眼的鹅卵石,虽然生活将我的棱角渐渐磨去, 但剩下的部分却也因此而变得更有韧性和强度,变得更加内在。</p>
<p>就是在这样的背景下,Z走进了我的生活。Z是重大经济系的高材生,可能是我一生中比较了解的女孩子中最聪明的一个。我不得不承认我对她是一见钟情,她给人的清水出芙蓉般的感觉在三分钟内就击溃了我用冷漠树起的防线。虽然明白自己只是一个来自农村的民工,只是一个空有诗人气质没有诗人才气的流浪着的小青年,但我还是无法抑制来自内心深处的那种触电的感觉和冲动。于是我开始隔三差五地跑到她寝室外面去找她,这是我一生中第一次大胆主动出击博取女孩子的欢心。我用自己那点可怜的工资买她喜欢的吉他、书和CD,并且史无前例地特别在意自己的外表和形象。我生平第一次为了自己喜欢的MM走进了花店,小心翼翼放地把自己得意的书法作品兼情书系在包装纸外。</p>
<p>情书写得很简短明快,正如她的风格:</p>
<p>日子悄无声息地重叠。我毕生的信念,在那个阳光明媚的下午坚定起来。月色如银,我看见那朵并不艳丽的梨花渐渐绽放,秋日的脚步在眼光里逐渐有力。晶莹的露珠,小心翼翼地降落,在花瓣上散发清香。沁人心脾的清香,源源不断…… 所有的伤与痛就这样悄然而逝。背负雪花或月影,我看见夜里的花朵成为一帧风景,我是风景外那根遍体伤痕的枯藤,凝固的姿势微微前倾。</p>
<p>一句话,我一头潜入了爱河,并使出混身的解数拼命地在爱河中搏击。为了陪她看《Gone with Wind》,我对她撒谎说自己没看过,其实已经是第三次温习了。我偷偷从公司跑出来去帮她买早饭却被老板碰了个正着。我打肿脸充胖子,打的陪她到鹅岭公园欣赏山城有名的两江夜景……只是我没有想到,爱河的水性与自己多年来熟悉的池塘是如此地截然不同。当我这个从五岁起夏天就天天在池塘中&quot;踩水&quot;的游泳迷在爱河中被水呛得天昏地暗的时候,我才知道就算我一次潜水能达100米,我在爱河中也只能被淹死。</p>
<p>是的,我太没有自知之明了,以一个农村出来流浪的穷教书匠的资格,竟然找了个&quot;天之娇子&quot;里的一个&quot;天之娇子&quot;做GF!经历了那么多,怎么还象小孩子一样天真和幼稚呢?!&ldquo;让它随风去,让它无痕迹,所有快乐悲伤所有快乐统统都放弃……&quot;,当我后来听到这首歌时,我真想问问伍佰是不是专门为我写的。是的,当她开始找种种借口不再接受我的约会时,当我只是为了看她一下在她寝室外撑着小雨伞苦等着故意回避我的她时,当她终于用她可爱的樱桃小嘴亲口对我说出&quot;我不适合你,我想出国&quot;八个字时,当我魂牵梦绕的婀娜的身影在我的视网膜上不能再激发出任何细胞信号时,任凭秋风秋雨抽打着我本已沧桑单薄的心。第二天,我没再去公司,打了个电话向老板辞职。一个人来到菜园坝火车站,来到那个我曾经卖稀饭的地方,我想看看那些曾经让我明白了些许人生道理的共同落难过的民工哥们。只是我的心中,已经有了他们觉得crazy的想法 …..</p>
<p>傍晚,我再一次在菜园坝下面横渡长江,让长江的滔滔江水冲走我所有的怯懦和卑微……</p>
<h2 id="5-寒窗苦读">5. 寒窗苦读</h2>
<p>横渡长江后,我开始计划如何实现我的朋友们觉得&quot;疯狂&quot;的目标。其实我当时的目标并不高,我只是想考一个国内&quot;名牌&quot;大学的研究生,一种当时觉得非常神秘和神圣的东西。</p>
<p>我回到老家和工作单位签了一个停薪留职的协议,因为我知道考研还得要单位签字,我的档案还在县教育局。这一次我向学生们作了一个交待:我也要读书了!然后回到重大继续听一些有兴趣的课,了解考研的要求,一边向我正在脱产学英语的哥们请教如何把我中考得59分后再也没学过的英语提高到考研的水平。&ldquo;天方夜谭!&ldquo;后来我考上浙大以后那个哥们跟我说他当时的第一反应,幸好他当时没有直接打击我刚刚新生的灵魂。</p>
<p>我听从他的建议找了一套高中英语教材,开始学习从来没有认真学过的E文。 同时考虑自己应该选择什么专业认认真真读个本科。最后放弃了已经考几门的中文本科,选择了计算机应用,一个刚刚开始进行自考的专业。</p>
<p>96年暑假,做了一段时间家教后,我离开了重庆,这个让我在我一无所有时收容了我的城市,这个美女如云的城市。是啊,美女如云,云在天上,不可得矣!刻骨铭心!此后在成都的两年是我一生中最充实的两年。住在电子科大附近的破房子里,旁边的厕所散发出来的味道让我保持着高度兴奋的状态,与苍蝇为伴,与蚊子共存。白天到成电的图书馆和&quot;天之娇子&quot;们一起自修,晚上和周末去计算机系听课,因为我选择的自考专业是由成电计算机系主考。不过我很快就对大学教授们的教书水平不敢恭维了,说句不好听的话,以很多教授的教学水平,到中学肯定被下岗。当然好的教授也有,只是似乎已经成了一种稀缺资源!所以我去听课的目的倒不是听他们讲解知识,只是想知道那些正宗的大学生到底学些什么东西,以此才能决定我要学些什么东西,并且与他们交往让我了解到很多大学和考研方面的信息。</p>
<p>最大的问题在于英语,因为我连高中课本中的很多问题都搞不清楚。曾经还寄期望于在成都脱产学英语专业的哥们,我还记得为了去上他的外教的课在几近零度北风呼呼的冬天早晨骑一个小时自行车在成都二环上飞奔的情景。有一次冲得太快,破自行车的刹车不灵,被一辆大卡车挂了一下,摔得头破血流。事后仔细分析了一下自己的实际情况,觉得其实听老外上课对我的目标并没有多大帮助,并且也体会到其实我那学英语的哥们也帮不了多少忙,单词还得自己记,阅读还得自己练,于是放弃了这种劳命的方式。</p>
<p>狠下心靠自己后,虽然也时常被自己可怜的记忆能力打击得失去信心,总是在修整几天后重新开始新一轮轰炸。我觉得当时学英语的状态可能有李阳式的疯狂,虽然那时我并不关心听力和口语。几个月后终于明显感受到了自己的进步。97年秋季考四级,在放弃听力的情况下得了76分。看到成绩时我虽然并没有觉得很兴奋,因为那时的我已经非常麻木,但心中慢慢不再是十五个吊桶打水――七上八下了,我看到了努力所带来的希望。当我就这样自己疯狂地学完上海外语教育出版社的那一套&laquo;大学英语&raquo;的精读,泛读,快速阅读和语法后,在放弃听力的情况下, 98年6月的六级考了一个和四级时差不多的分数。</p>
<p>就这样在成都苦苦挣扎了两年。这两年中,除了运动外,我终止了所有的业余活动,全身心地投入到学习中去。成都的大街小巷中有我做家教归来的憔悴的身影,府南河旁有我身无分文时徘徊苦闷的脚印,教室里有我困得无法抗拒时在寒冬中以书为枕以衣为被直挺挺躺在课桌上睡觉的丑态……</p>
<p>自考的课程进展很顺利,如期在98年夏天完成了所有要求的课程和所谓的毕业设计,拿到了计算机应用的本科文凭。毕业设计时很幸运地碰到了计算机系当年考入浙大的一个&quot;师兄&rdquo;,他在我决定考研报考的学校时给了我很多鼓励和帮助。当时自己可能在潜意识里觉得自考低人一等,还是觉得报考&quot;外校&quot;有点信心不足。并且我已经认识了好多成电计算机系的教授,了解成电计算机系考研的重点和出题特征,对考上成电的还是颇有信心。但我无法抑制自己进名校的欲望,这位师兄是当时唯一支持我考外校的人。是啊,我也理解朋友们的担心和关注,以我自考的学历,想进名校,无异于痴人说梦!</p>
<p>但我还是又一次让我的朋友、亲戚和家人大跌眼镜。 98年9月我回到了那个我曾经放弃了的单位,重新开始误人子弟。对大部分&quot;关心&quot;我的人,我只对他们淡淡一笑:&ldquo;在外面混不走了,还是回来好。&ldquo;我知道他们的心中有的在嘲笑,有的在同情,也有的以掷祸。</p>
<p>但我相信我已经基本成熟了,走自己的路吧。当时重新拿起毛笔,在自己的笔记本上写下了一首自勉的诗,其中一句是:&ldquo;以退为进暂将息,终有他人侧目时。&rdquo;</p>
<p>选择回去教书的原因是,我在成都实在穷得没办法了。我想要一个安静的环境准备考研,我不想每天吃了午饭还不知道晚饭在哪里,我需要安慰一下多年不曾问及的母亲……</p>
<p>只是母亲不知道,一年以后,我就又飞到了更远的地方。</p>
<p>在经过一个周的奔走和求人后,我终于拿到了县教育局出示的同意报考研究生的介绍信,但只同意我报考师范院校。拿到报名表后,我还是在第一志愿里填上了浙江大学-光学工程的字样,选考的是计算机系的专业课。当时对专业的决定很草率,看了几篇介绍光计算的文章,一时心血来来潮,自以为学了计算机再学光学,以后就可以将两者结合起来啦,梦想着做中国的第一台全光计算机呢!所以我这个人总还是有些孩子气,有时总在想一些不切实际的东西。我想很少有人体会到我当时考研时的压力,我已经破釜沉舟了,已经为考研付出了大多的东西,而自己身边又没有半个同道的人,更没有自己这样的先例可以参照,我压要就不知道浙大的考题是什么样子,更不用说象在本校的学生一样有复习课上并知道复习的重点了(幸好这些我都是进了浙大后才知道的,否则当时还真不敢来报考浙大)。每天上完课改完作业忙完必要的应酬打打球做饭洗衣后就把自己关进屋子里,奋战到凌晨三点。有时早上8点之前又得起床上课, 起不来就让学生科代表来叫我。可能学生们从其他一些老师中知道我的故事被感动了吧,对我非常宽容和理解,连班上最调皮的学生在我上课时都比较规矩听话。终于在考试前几天收到那位师兄寄来的往年的考题,却很快就发发现有好多题都不会做,那时候已经太晚了,不管三七二十一,向城里的考场一路奔向。考研时第一晚完全失眠,早早起来对着镜子笑了又笑,还是觉得自己很憔悴,终于看到一个自己比较满意的笑容后,走上了人生第一次如此盛大的考场,算是弥补了没参加过高考的遗憾。当时太激动了,填写考号时连续三次填错,那个监考老师以诡异的眼光看了我半天,好象觉得我这个人智力是不是有问题!第二晚吃了安眼药,还是只睡着了两三个小时,不过人始终还是高度的兴奋状态。</p>
<p>考完后回家老年,总有很多&quot;关心&quot;的人问及考试,触动我最敏感的一要神经。我总是只能淡淡一笑,作无所谓状,其实心里那个焦躁啊,只能让天知道!经过三个月漫长的等待,终于看到了自己两三年来疯狂的成果。考试成绩远远超过我的期望值,我居然考了396分。后来帮过我的那个师兄告诉我, 我的成绩在当年1000多考CS专业课的人中大概在13名吧,并且英语成绩好象是当年浙大最高的两三个人之一,我知道这对于各位大牛来说,简直是不值得一提的小儿科。但我真的太满足了,虽然考试并不意味着什么。</p>
<p>从96年3月开始自学高一教材到99年1月考试,能有这样的结果,应该算是我两年的血汗没有白流吧。再度阿Q!</p>
<h2 id="6-梦圆浙大">6. 梦圆浙大</h2>
<p>虽然我尽力想比较客观的叙述自己经历过的一些琐碎的事,但大家都知道我们的脑袋只能是一个自适应非线性滤波器,随着自己的环境和心态的变化,这个滤波器也许是低通,也许是高通,也有可能是带通,甚至还有各种无法预测的噪声。所以我无法保证绝对的客观,但求不会引起太大的误解。</p>
<p>我不知道当时是不是有范进中举的感觉,但我至少没有象范进那样到街上去发泄自己的兴奋。因为在那个集中了我平生大部分故事的地方,人们的眼界和心胸,我不知道如何评价。虽然我一向不太在乎别人如何对我评头论足,但我的老家还在哪个地方,并且这个家庭因为我这个不信邪的儿子成了那一带还算有点名气的家庭。我不想有太多的闲言碎语在我母亲耳朵旁边绕来绕去,因为母亲自己是一个很唠叨的人,我更需要保持沉默。在多年的挫折和抑郁中,我已经学会保持外表冷漠内心狂热的状态,让所有的锋芒在体内熔化成一种可以沉淀的东西。说实话,只有当我来到浙大以后,当我第一次踏上那条聚集了太多故事的有名的堤上看着梦寐以求的西子湖时,我才又象小孩子一样当着太阳的面天真无邪了一把。在那个我用5年最黄金的青春换取人生经验的地方, 我依然是人们眼中那个有点怪异的青年,晚上寝室灯火通明,白天时常关门睡觉,人长得象老鼠,行为也象老鼠。只是喝酒和打球的时间比以前多了一点。</p>
<p>当我兴冲冲地拿着印有&quot;浙江大学&quot;字样的调档函去县教育局提档案时,我再一次领教了那帮小官僚的势利和虚伪。我连续三天从镇上坐三个小时车去县城才找到那个自以为是个人物的人事科长,结果他和我拖着官腔,让我缴纳Y10000的培养费,理由是我本科毕业后没有工作满五年。如果我当时年轻几岁,我可能会象当年在师范和同学打架时那样抡起椅子就给他盖到头上。但我还是只能在心底骂他祖宗八代,同时挤出笑脸和他论理。我时常饥寒交迫,依靠打苦工做家教和向朋友借钱才完成一个本科,那两三年我没在单位领取一分工资,居然让我缴所谓的培养费!!!他还搬出所谓的文件让我看书看,我当时差点就把那堆盖着大红章有各种来头的文件一把扔到对门的厕所里去。</p>
<p>我只好再次求人,当天晚上去市里费尽周折找到师范时只教了我一年不到就调走的老师,他当时是县教育局局长。虽然老师的脸上已经不再象当年讲台上那样一直保持合理的微笑,但他还是很关切的问询了我的情况,并立刻给那个科长打了个电话。当我在旁边隐约听着听筒里科长大人奴才一样唯唯听命的声音时,我的心在痛!!就是这样的人,把握着国家机关的权力,在这个打着&quot;育人&quot;的牌子的国家机构里,形象地教育着我们如何&quot;做人&rdquo;。</p>
<p>第二天,当我再次走进他的办公室里,看着他满脸笑容清理我的档案。当我从邮局里寄完&quot;机要&quot;走上街头时,我知道我已经是一个浙江大学的学生了。从踏入社会算起,整整八年,我终于从一个十八岁的无知青年变成了一个二十六岁的心灵上千疮百孔的学生。虽然已经对国家的初等教育体系彻底失望,但我还是对高等教育充满了希望。向往着我在官方教育杂志上看到的中国高校排名榜上赫然列在第三的象牙塔。我知道这个地方曾经有过竺可桢、苏步青、王淦昌、谈家桢等国家科技真正的精英,曾经被人称为&quot;东方剑桥&rdquo;,梦想着耽听院士渊博纵横的讲解,协助教授做引人入胜的研究。我总是这样一个比较天真的人,把一切东西都想象得很美好。 怀抱着这些美好的梦想,在那个炎热的下午,我来到了美丽的杭州,来到了求是园,走在绿树成荫的校园里,看着满脸微笑的浙大人,空气是那么的清新,天空是那么的蔚蓝,阳光在树叶上欢快地起舞,虽然刚刚坐了48个小时的车,我似乎已经不再有热和累的感觉。</p>
<p>多年的辗转和流浪之后,终于又有了一个宁静、安稳而美丽的居所,似乎又有了一点刚入社会时的分到自己的房子时的感觉。到了一个舒适而安定的环境,人不知不觉就开始变得懒散而无所事事。我很快就成了学校里&quot;93&quot;学社的成员,只是此&quot;93&quot;非彼&quot;九三&quot;矣,而是所谓早上九点和下午三点才到实验室,在BBS上灌灌水,在ICQ上聊聊天,有的还打打游戏,然后到食堂吃饭的研究生的集合。当然,在BBS和网上花的时间也不是全部白费,虽然很多东西被作者滤波后已经严重失真,但至少可以让我知道某些存在。正是在Oversea, 我知道了onlyou,persian, shygun, christiana等等等等.一大堆牛人的ID,也认识了一大堆知名和不知名的朋友。正是Oversea上前辈们的一言一行,和班上几个同学的行动先例,让我认真考虑是否应该把眼光投向大洋彼岸。</p>
<h2 id="7-再度疯狂">7. 再度疯狂</h2>
<p>当三个月后选导师时,我已经基本上了解了光电系里的情况,没有人做我报考时一心想做的光计算方面的研究。整个重点实验室象样的课题一年也没几个。后来发现其实事个学校、整个国家都差不多。国家的所谓的科研经费不知道哪里去了,教授们大多只能自己想办法维持实验室的生计,曾经在我心目中如此如此神圣的教授的头衔,对我而言突然间变得不再那么有意义,原来他们的生存存状态也和普通人一样! 刚进学校时还想直接攻读读博士,很快我就放弃了这一想法。当时也听说了同学rainy本科时因为想出国放弃保研的事,但我还是无法下定决心考G&amp;T出国。我一方面尽量了解一些国外的消息,一方面重新考虑自己究竟要过什么样的生活。研一基本上就在这样的徘徊和矛盾中过去了,虽然很早就买了&quot;红宝书&rdquo;,却一直没背到20页之后。 经过无数的失眠和痛苦的权衡决策后,得到的结论是:试一试吧。</p>
<p>可能是多年后折腾自己潜意识里想寻找一个港湾,我的确喜欢在大学里过学生生活,没有社会上那么多明争暗斗,说话可以无所顾忌,吃饭睡觉都很有规律。同时我这个人也的确有很强好奇心,总是对新鲜的事物很有兴趣,总是想过一过与众不同的生活。在我决定出国的时候,自认为对欧美的研究生培养体制和在海外的中国学生的生存状态已经有了比较多的了解,觉得自己也许可以适应他们的模式。反正在学校闲着也是闲着,我觉得考GRE可以训练自己日渐衰退的记忆力,考TOEFL至少可以训练自己的听力,就算出国不成,也没有什么坏处。当我把想出国的决定告诉一直还算比较理解我的几个哥们时,他们一致投了反对票,虽然有的说的比较间接和含蓄。不过他们的意见已经对我的决定没有任何影响力了,我已经成了一个顽固不化分子,对家人和朋友的意见认真聆听,只是听而不信。</p>
<p>不过这一次的疯狂主要是在想法上,在行为上早已经没有了当年在成都时的锐气,那些锐气已经在浙大研究生们悠闲的环境中慢慢蒸发了,也许人在环境变好以后总是这样吧,自己也搞不清楚为什么睡觉时间比以前多了一半还是困,为什么无法抑制自己在BBS上无聊地逛来逛去。我甚至有很多时候都在懒得去上课。有点地位和名气的教授们都是让手下的博士之类完成自己的教学任务;教授们对上课的态度基本上是应付了事,从教育学心理学的角度来考虑过如何上课并认真准备的教授少得可怜,照本宣科和不知所云的情况也不是少数;一百多个历经各种考关筛选出来&quot;寄托着国家的希望&quot;的精英挤在一个教室里上课,听不清讲解可能是我耳朵不太好,但以我当时双眼1.3的视力都看不清黑板,我宁愿找个地方自己看看书了事。坦白地说,当时在浙大一个学期用于学习的时间不及我当年在成都饥寒交迫时一个月的学习时间。我不是想把自己的不务学习正业归咎于学校,我只是想客观地说明当时自己的真实状况。我知道浙大本科的学风在全国也是屈指可数的,并且很多研究生也保持着本科的优良传统。只是可能我自己辛辛苦苦考进浙大后期望值太高,当一个人的理想与现实有差距时,期望值越高摔得越痛。所以后来在申请学校时把期望值放在了比较低的位置。</p>
<p>我就是在这样堕落的情况下准备的G&amp;T。虽然听说过新东方的威名,周围也有好多人去了这个地方,只是我太不喜欢他们那种拼命鼓吹和灌输的风格,除了老师的激情外,似乎 也比浙大的课堂好不了多少。也可能是自己太穷,总之我没去北京为&quot;玉米糊&quot;们作大的贡献,只是买了几本他们的书,也算是为&quot;出国经济&quot;的繁荣昌盛尽了一份力。00年暑假开始正式准备G&amp;T,当时也曾几度热血来潮制定9月考G、10考T和11月考SUB的宏伟计划,只是最后全部计划都因为自己的一个懒字而付诸东流。研二正式进了实验室,开始时没有确定正式的课题,导师让我做一个单片机控制的照相机快门自动测试仪器。我一边画电路图做电路板和采购各种元件,一边继续学习&quot;红宝书&rdquo;,通常是在实验室呆半天,在图书馆或教室里呆半天,晚上在BBS上灌水,当然那个时候还没有起用现在这个ID。过了两个月,发现实验室的活和自己的&quot;红宝书&quot;都没什么进展,于是放弃了先考G的计划,报了01年1月的托福。</p>
<p>其实托福考的实在是比较弱智的东西,我想一个正常学习英语后顺利通过了6级的人,稍微准备一下就可以了。不过由于当时自己学英语时急功近利,从来没练习过听力,也没去注意过单词的发音之类的东西,所以在对中国学生来说最难的听力这一关上,我到浙大时的起点基本为零。我不知道有多少人第一次做托福听力时比我更沮丧,50个题我只做对了19个,并且还有几个是胡乱猜。由于知道实验室的两个师兄都直到准备推荐信才和导师说自己要申请出国,我一直不敢和导师说自己要考G&amp;T,后来发现这是一大失策,其实两位导师都非常宽容和理解学生的选择,只是我自己当时没有勇气去打破师兄们的先例而已。为了应付ETS,我在实验室里呆着的时候只能说是&quot;身在曹营心在汉&rdquo;,根本无法净下心来调试电路。加上自己不是做工程的材料,一学期下来那个仪器还是没有完成。因为没买到车票,考完托福又在学校呆了两天,晚上走到空无一人的苏堤上,看着对面楼外楼和湖滨一带的灯红酒绿和歌舞升平,脑袋里空白一片,迷茫又开始侵入我如柴的骨架,不知道以后的人生之路究竟在什么地方。浙大这种牛人聚居着的地方,时常让我为自己太普通的智商水平和太差的学术根基感到自卑,怀疑自己究竟有没有做学术的能力,到现在这种自卑和怀疑更甚,因为周围有太多的聪明绝顶的人。大年三十登上回家的火车,看着一个个四川民工满脸无所忧虑的笑容,突然觉得自己是不是庸人自扰,生活其实就是简简单单吃饭穿衣,想那么多前途忧那么多国家累不累啊?! 于是在家里安安心心过了一个年,一改往年尽力不去亲戚家串门的习惯,连母亲都觉得奇怪。</p>
<p>过完春节回到学校,心里变得更加坦然,虽然还是继续准备考G,准备期间却常常是晚上12点睡觉,早上9点起床,11点去打球,下午又睡到2点过。记得那时还在准备考研的总能给我们寝室带来笑声的可爱的bstar师弟还时常善意地笑话我怎么一天到晚都在睡觉。总能我是班上唯一一个在浙大两年半天天坚持睡午觉的人。晚上还是一如既往地做一个不散的幽灵在BBS上喝水或是灌水。结果可想而知,实验室的活还是原地踏步,考试也准备得稀里糊涂。大概考试前三个周吧,觉得实在不行了,不能把一千多大洋的报名费白送ETS吧,才心里惶惶不安地到导师家里去和他商量请假的事。真是感谢导师的支持,否则当时考试的成绩会更让我申请时没有信心。</p>
<p>5月11日考完G回到杭州时,才知道拿到offer的师兄已经在上海登上去底特律的飞机了,只能傻呆呆地一个人到西湖周围逛了一圈。然后和室友们一起骑自行车去莫干山玩了两天,回来拎着个相机想法设法拍点照片做做实验,就以最快的速度凑灌水文章寄给学术期刊,同时在BBS上关注着01年的飞友们传达出来的种种消息,并开始考虑自己的申请策略。说句实话,我那些所谓的论文其实根本就没有多少实质性的东西,唯一可以自豪是的绝对不是别人论文的克隆版或是修订版,至少idea还算是自己没有在别人的文章里看到过的东西。让我惊异的是国内所谓的一级刊物上发表文章是如此之容易,如果就以这种指数来评价研究生、教授或者是学校的科研能力和学术水平,只能说是国家教育和科研体系的彻底失败!很快我写这种灌水文章的兴趣就大减,当我已经完成了当初向导师许诺的任务的200%时,我觉得再凑这种文章还不如去考个SUB,因为自己心中的光学圣地Arizona和Rochester都要求或是建议考SUB。现在看看今年医学的Nobel奖得主当初10间埋头研究几乎未曾发表过文章,我不得不为自己发表第一篇劣质文章时沾沾自喜的丑态感到羞愧。但是在这个奇怪的社会中,人们往往需要无可奈何地用这种东西来证明自己,让别人和国家认可自己,否则无法生存。如果以这种标准来衡量爱因斯坦,我想他可能连应聘浙大的特聘教授都拿不到offer。他不会发表大量的文章,更没有能力挣钱来换业绩点,而只会傻乎乎地梦想着坐在光子上去遨游宇宙的奇妙之旅,只会在Princeton的街头头不梳脸不洗被小孩子们认为是无家可归的流浪汉。但是这个世界的本质竟然就是量子化,当这种量子化从物理世界被移植到社会机制中时,我不知道究竟是人类的进步还是不幸。但我只能接受现实,我只能在这个爱因斯坦不愿意承认的一切都充满不确定性的随机场中飘来飘去,无法确定自己将来的确切的轨道方程。一切都有可能发生也有可能不发生!</p>
<p>01年的Oversea聚会时,在座位上虔诚地仰视着一个又一个前辈,洗耳恭听他们酸甜苦辣的故事。当我发现那个上法语课时经常坐在我前面的留着披肩发的小青年原来就是Oversea名声赫赫的onlyou时,觉得特别滑稽,原来是他!回到9舍又是一个惊奇的发现,那条去MIT的牛牛原来就住在一层楼上离我不到10米远的地方,我怎么以前就从来没看到过这个斯文而秀气的小伙子呢?!此后洗脸上厕所有幸碰到我都用景仰不已的眼神想从他身上得到点什么。开始为自己过去两年间在浙大满腹牢骚却不干实事的所作所为反省,牢骚可以发,事还得靠自己做!申请的过程琐碎而繁杂,却又没有多少值得一提的东西。在一大堆要来的材料里挑来拣去却不知道究竟哪个更可好,不知道哪个更适合自己。那段时间再度经常感到苦闷和彷徨,总是想和别人喝酒和聊天。现在仔细想想,当时班上的cometo、rainy和Nature三位同学估计都被我烦得受不了了,只是不好发作而已,呵呵。班上几位同学的鼓励和帮助以及室友们的支持,在我申请过程中起了不可低估的作用。寝室的几个兄弟都是想在国内大展宏途的牛人,但在我考G&amp;T和申请的过程中宽容着我的不良习惯,并不断的鼓励和帮助我这个诡异的家伙,到现在我还欠着申请时我们的怪才huangh资助的¥2000,因为我走的时候他已经在欧洲幸福地on business。特别是一起申请美国学校的rainy, Nature, Jelimi和feline,更是给了我莫大的帮助。我们经常在一起交流信息,相互提建议,以至于bstar师弟又禁不住要&quot;嘲笑&quot;我们在搞什么阴谋出国集团。</p>
<p>11月考完SUB,又去了一次天台的挂职锻炼单位做做样子。正在为申请费费尽心思时,导师给我提供了一个去西博会给一个香港公司请的瑞士摄影师和德国模特儿当摄影助理的机会。虽然那时PS还没完成,我还是见钱眼开,欣然接受。那是我进浙大以后过得最劳累的几天,特别是中间有两天是一年一度的招聘会,早上起来还要收拾打扮一番,呼啦啦跑到招聘会场往那些看着顺眼一点又要招“光学工程”的单位桌子上丢一份简历,9点前打车赶到火车东站附近的饭店去接老外到世贸楼,然后就跟在那个干起活来不吃午饭的摄影师屁股后面跑上跑下又要当翻译又要当苦工一直干到晚上收工,陪他们吃完晚饭回到学校时差不多已经是晚上10点了,还要继续自己的申请事宜。还好结束时那个老板比较满意,出乎意料多给了我几百快钱作奖赏,还让我把身上所有发票都报销掉,八天时间挣了¥1800大洋,又解决了5个学校的申请费。不过这几天奔波彻底打乱了自己初步形成的申请计划,只好放弃了选好的12月15号以前截止的几个学校。看着Oversea上一帮人已经寄完材料讨论offer了我还在修改PS,只好手忙脚乱地寄出了第一批学校的材料。事后发现中间犯了N多弱智的错误,诸如把申请学校的地址写错材料被退回,漏掉了学校要求的表格,PS中的语法混乱不清,等等。经常有人问我的PS是如何写的,其实基本上就是这篇文章前面有利于体现自己个性的东西抽取出来写成英语而已。虽然我的PS错误连连,但我还是相信基本上是独一无二的,并且基本上是自己对生活真实感受和对自己未来的初步想法,没有故作呻吟,也没有现在这种夸夸其谈。</p>
<p>1月份终于寄完了大概共20所学校的材料,从美国到加拿大到欧洲再到新加坡和香港,如钓鱼时一样遍撒诱饵,当然这样的后果显而易见,诱饵的利用率很低。当然主要还是我无法评估自己的状况,自以为这样全方位的分布可以提高命中率。接下来就又如同三年前等考研成绩一样从一月等到四月,虽然已经没有了当年来自生存的压力,虽然觉得offer不是我的唯一,毕竟自己已经付出了时间、精力和金钱,还是想有一个比较满意的结果。我跑到南京去参加香港科技的面试大谈特谈自己的想法后傻头傻脑地告诉教授我在申请美国的学校,然后只能等着被拒;跑到上海参加法国N+1计划的面试,教授在对我的奋斗经历表示了一番赞赏后委婉地说我年龄太大,他们主要针对本科毕业生,TNND怎么不看看我的申请材料再通知我来面试,还好后来还算给了我半奖;然后又是在上海,在SMA的面试过程中被一个中国纺大毕业的和我的研究方向完全类似的教授狂扁我没有机械和制造的基础,TNND我做机器视觉和图像处理不懂机械和制造有什么关系,谁让你们的招生目录上全是误用光学工程专业的词汇;……在三月份的offer高潮的到来之前,班上所有女生都有offer了,有的还有两三个,只有我和Jelimi两个一封又一封地收拒信。当Louisville那个曾经口口声声说我背景很强推荐我拿学校的fellowship的教授有了更满意的人选后冷冰冰地踢了我后,当我已经拿到Cambridge、John Hopkins、Dartmout、Rice以及申请时最向往的的Rochester和Arizona 等学校的13封拒信等着毕业走人时,居然在3月15号左右收到了Berkeley的一个admission.虽然只是admission, 对于去年连找工作也处处被人打击的我来说却无疑是雪中送炭。正好那时答辩完了闲得无聊,为了准备上班当程序员看了几天Java和VC后觉得心有不甘,想想再多接受几次教授的打击也无所谓,于是决定再来套套词。当时一直没和任何人说自己拿了这个admission, 只是考虑如何把套词做得周全一点。</p>
<p>这一次我没有直接写信给教授,我选择了曲线救国,先从小秘那里开始。小秘只是回信说她也不知道有没有钱给外国学生,把我的信转给系主任了。我马上给主任写了一封信,得到的答复是:&ldquo;还要等committee开会讨论决定呢,你先等着吧。&ldquo;然后就不断地发email,以表示我对他们的研究的确是很有兴趣。经过一番交涉和等待,主任于一个周后说系里没钱了,只能给我10000美元奖学金,让我自己再想办法凑20000美元/年*5年的钱,并建议我联系联系看看有没有教授愿意资助。于是搜遍所有教授的网页,最后选中了一个网页上写着图像处理和光学等研究方向跟自己的背景最吻合的教授。信发出后一个周没有消息,当时基本上绝望了,这种学校的教授,谁会理我啊!又 过了两天,却意外收到主任的信,说那个教授对我有好感,只是他的钱可能不够,让我现联系其他教授。当时不知如何是好了,怕套了其他教授不成这个教授也不理我了,郁闷了好久;最后还是没套其他教授,我选择了从一而终。</p>
<p>4月1号开始到公司上班去了,坐在那里培训时哪里听得进,天天等着中午吃饭时间去网吧收信写信。我问主任是否可以先给一年的钱,如果表现好再给后面几年,并且王婆卖瓜式地吹嘘自己的Teaching experience, 希望能给我一个TA。 这时主任才给我说了实话,他们已经发完了offer,要求415前答复,如果有人不去就给我了,让我be patient;这就是传说中的Waiting list了。当时以为Berkeley的offer不要的人太少了,也就不抱什么希望了,安心上班吧。没想到 教授突然写信问我是否对他的一个研究方向有兴趣,我以为他有钱了, 一问才知道还是没有确定,他只是想在休假前和我讨论一下。为了继续跟教授联系,只好硬着头皮去查他说的那个研究方向到底是怎么回事,因为他想让我做的project以前我根本不知道是怎么回事。当时得到两个网友的热情帮助,在他们的建议下去书店找书,花了一整天找了杭州几大书店都没找到。最后找一个网友在湖滨的图书馆借了一本相关的书,在网上搜索了几篇相关的文章,大致看了一下就给教授表决心了。</p>
<p>就在这个时候,4月13号晚上,在我们班出国一帮的精神领袖rainy的实验室里,我终于收到了我的第一个offer。 虽然学校名不见经传,但在imaging这的方向上在美国却是业界知名的研究机构,并且有Nasa, Kodak和Canon等的大笔资金注入,钱是大大的有。并且第一年完全不用干活,相当于fellowship,我觉得很满足了,从苦海中彻底解救出来。没想到有时候福也不单行,第二天Berkeley的那位和谒可亲的主任来信说给我offer的可能性have increased dramatically, 只是要等教授度假回来才能最后决定。我知道肯定是有人拒了他们的offer了,于是心中天天就想着这事了,盼着教授早点结束他的享受之旅。现在我才明白,因为这个系每年都有不少医学背景的人申请,而他们如果拿到Harvard, JohnHopkins, UCSF 和Washington等医学牛校的offers时,拒掉Berkeley是情理之中的事情。也许不知情的人觉得UCSF太差了,但这个学校在美国医学界的地位之高,绝对超出中国学生的想象。这个学校据说以前是Berkeley的医学院,后来独立出去了,所有专业基本都与医学相关,并且只有研究生院,没有本科,过去十来年中就有三个Nobel医学奖获得者,神经科学更是经常排名第一。</p>
<p>总之,就这样凭着死皮赖脸加勇敢,在和系主任和教授进行了大概60封email的拉锯战后,靠别人拱手送给我的机会,我幸运地成了Berkeley的School of Optometry下的一个交叉学科Vision Science今年招收的PHD中的两个国际学生之一,而另一个国际学生,则是一个在这里做了一年访问学者的以前学生物的法国姐姐。有趣的是,我的教授现在成了这个学科的主任。当我看到他们当时晚上一两点给我发的email的时候,当教授到机场接我并带我去旧金山几个有名的地方观赏的时候,当他周末带着我和他全家去Hiking的时候,当我在学校里碰到他们时他们总是一脸灿烂的笑脸主动问询我的生活之类的事的时候,当六十多岁的教授和我们学生坐在一起象小孩子一样认真学习他不懂的东西的时候,当他花两个小时和我一起调试程序的时候,我才真正明白为什么美国大学能够成为很多中国学生向往的地方。虽然实验室的条件不一定就好多少,虽然生活是如此的艰难,但除了偶尔发发牢骚以缓解心理的沉闷,在学习和科研上实在是没有什么好埋怨的。</p>
<p>此后又断断续续收到3个半奖,Waterloo一个我曾经发信多次都不理我的教授问我还想不想去的。希望月底到旧金山开会碰到时她已经忘记了我的名字,否则坐在她当chair的分会场里时不好受。接下来就在公司如坐针毯等着落户口好办护照,写几个比较简单的API程序。</p>
<p>没想到莫名其妙档案在路上寄失踪了,正常情况下一个周就可以到的&quot;机要&quot;两个月都还没寄到。只好自己从系里开始骑着同学送的自行车一环环去查,在学校那个邮政办公室里等了整整等了半天才拿到那个&quot;机要&quot;号码,然后饿着肚子追到省机要局和高新区人才交流中心。在人才交流中心折腾了两天他们才在一个垃圾箱里找到了我和班上另一个同学的档案。当那个工作人员面红耳赤地给我解释时,我真是哭笑不得!如果我没是因为要办护照去查,说不定我们两个的档案哪天就进了垃圾堆,这可是政府看得和命根一样重要的东西啊!</p>
<p>后面的事就很顺利了,自己跑到派出所落好户口,开好证明,到市公安局申请护照。比较惭愧的是办护照时给公司撒谎说自己女朋友在美国读PHD,我要做F2过去,否则就红杏出墙了,还让同学给了一个在美国的MM的姓名和地址以填在护照申请表上以增强真实感。签证前始终觉得心里不踏实,怕VO问及我的历史时我无法在几分钟内跟他/她解释清楚而被拒,没想到VO根本不在乎历史问题,五分钟后有惊无险通过。不过今年还是有两个到这里的全奖在北京三次被拒,据说这边系里领导亲自跑到北京美国大使馆说情都没搞定。具体情况不太清楚了。人生的不确定性,我等奈何?!</p>
<h2 id="8--美国印象">8. 美国印象</h2>
<p>开始写这篇文章的时候正好是我到这里后三个月整,并且刚考完过来后的第一个final,考得极其失败,于是面壁思过,觉得自己这三个月太过于悠闲了,把心底那个好久没有清理过的地方翻出来晒晒太阳,也许可以使自己能清醒一点,不至于以后太丢浙大的脸。</p>
<p>其实我对美国根本说不上有多少认识,信口开河,不免有失偏颇。我只是想把文章写完整而已。小日本的飞机晚点三个小时,经过十几个小时的冷冻后,终于在机场见到了Prof StanleyKlein,为了便于我辨认,穿的T-shirt上印有学院那个滑稽的带着眼镜的熊的标志,一脸的笑容,问我在飞机上睡得如何,我只好假装睡得很好民,其实只睡着了一两个小时。由于自己没有准备长袖衣服留在行李箱中,尽管加州的阳光非常明媚,下飞机后还是冷得直打抖,赶紧钻进他的车,前往San Francisco城里。</p>
<p>在城里逛了一阵,教授居然迷路了,想找个中国餐馆却不知道Chinatown应该如何走了。只好让我开始学习适应美国生活,找了个西餐馆将就。硬着头皮把他向我推荐的一个什么饼吃完,还得装出非常满意的样子,因为我不想在第一天扫他的兴。我这个土包子看来要适应美国的生活还得经受一番训练才行。此后出去吃饭,只要是我一个人不到万不得也坚决不进西餐馆。可是为了和实验室的鬼子拉拢关系,每个周还是出去和他们一起吃一次饭,打一次游戏。师兄是Iran移民,早年毕业于UC Davis,搞了几年基因后来跟着老板做脑成像,一年前他休学在硅谷开的一个搞计算机图形的公司破产,又回实验室重操旧业。小秘去年毕业于这里的哲学系,在知道此君学历前一直以为他是学理工出生的,因为时常看他从PC,Mac和Sun Workstation一直玩到Linux,不得不承认美国人使用计算机的水平。让我最满意的是我已经把他们培养成了每天喝中国茶的有了共同语言的&quot;兄弟&rdquo;。</p>
<p>这一带满街都是华人(以此包括数量占绝对优势的ABC们)和中国餐馆,据说Berkeley有30%的亚裔学生,其中当然是华裔占了多数。所以每次与鬼子们打交道时他们总是把我当成Native English Speaker看待,不过多说两句后我的可怜的口语就让他们明白弄错了,才把语速慢下来。总的来说,美国人还是比较友好的一个民族,整个社会也不是我想象的那样混乱,刚开始时经常晚上10 点过后才坐地铁回家,也没发生过什么事。只有一回在中国餐馆看到一个黑人抢钱,很快就被一群警察带走了。</p>
<p>教授的敬业精神是最让我感动的一点,看到学院的前任院长七八十岁了还靠两个本科生当助手搞科研一年发表几篇有份量的文章,就知道为什么国内那么多向&quot;世界一流进军&quot;的高校这么多年就出不了一个Nobel奖,为什么那么多全球有名的高智商民族的精英最后都一无所成。虽然我也很恨小日本,但日本人在敬业精神这一点上是绝对是我们应该学习的模范,今年的两个Nobel奖也许就可以说明一些问题。上次与教授一起到Stanford做实验的路上对我说起课题的事时说:&ldquo;我现在最担心的是日本在这个方向上超过我们。&ldquo;我们中国人要真正赢得其他民族的尊重,真正得到我们中华民族应有的地位,还得靠我们自己实实在在努力,而不是靠宣传和吹嘘就可以实现世界强国的梦想。又犯了老毛病,扯得远了;只是我的民族自尊心太强,每每和鬼子争论都被问得哑口无言,心中无比感慨,不吞不快。我真的希望美国超市里那些made in china的衣服、食品和小电器,有一天能被高附加值的高技术商品替换为了能方便坐凭学生证免费的公交车,一个月前搬了一次家,现在和一个ABC小弟弟和一个从上海交大毕业在新加坡工作了六年在USC的CS呆了一年转到这里统计系来的大哥住在一起。小弟弟是我们的校友,三年前CS毕业,现在在UC总部工作。他属于ABC中不鄙视大陆学生的少数,时常主动开车带我们去Chinatown购物,解决了我最大的生活问题,有时还给我讲解一下电视上出现的一些我不懂的东西。可惜他不识汉字,也不会讲普通话,交流起来老觉得不顺畅。最有意思的是和房东一起的时候,他和房东只能说广东话,他和我只能说英语,而房东和我只能说普通话,这就是美国社会中三类华人的代表。大哥属于异常发奋的好学生,一般是凌晨三点睡,经常早上八点前就去上课,我对他的景仰之情,无法用&quot;滔滔江水&quot;四个字能形容。每天起床看着空荡荡的房间,不得不埋怨自己丧失了斗志变得跟猪一样。所以这几天一直在反思,为什么环境变好一点了自己就变得懒散。 所以我想以后出现在Oversea的时候不再那么多了。</p>
<h2 id="9--结语">9. 结语</h2>
<p>虽然时常有&quot;帘卷西风,人比黄花瘦&quot;的感觉,虽然时常也闷得心慌跑到BBS上来灌水,虽然时常要忍受着饥饿洗菜做饭,我还是觉得生活是美好的。不管将来能做点什么,只要自己能够真实地存在,夫复何求! 每个人都有自己的生活方式,只要自己过得快乐,没有金钱、美女和权势也无妨。</p>
<p>再次感谢所有关心和帮助过我的人!感谢Oversea各位虫虫这几天的捧场使我能支持写完! 虽然也曾写得自己以泪洗面,能够得到大家的支持,觉得通宵达旦的辛苦是值得的。真心祝愿各位能够过上自己想要的生活!</p>
<p>就用自己多年来一直百听不厌的一首歌中的两句词结尾吧:</p>
<p>云里去,风里来,带着一身的尘埃,心已伤,情已冷,泪已干;悲也好,喜也好,命运有谁能知道,梦一场,是非恩怨,随风飘。</p>
<p>往事随风飘飘……对洒当歌强乐还无味</p>
<p>衣带渐宽终不悔</p>
<p>为谁消得人憔悴</p>
</description>
</item>
<item>
<title>MIT 6.042J 计算机中的数学:数学好玩</title>
<link>https://conanhujinming.github.io/post/mit_6_042j_csmath/</link>
<pubDate>Thu, 17 Dec 2020 13:15:25 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/mit_6_042j_csmath/</guid>
<description><p>接上次的文章,这次介绍的是
<a href="https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/" target="_blank" rel="noopener">MIT 6.042J
Mathematics for Computer Science</a></p>
<p>也许可以翻译成计算机中的数学,或者计算机应用数学,其内容与一般说的离散数学比较接近。</p>
<p>在介绍这门课之前,我先讲讲标题的故事,这个故事是关于数学大师陈省身先生的。2002年8月的国际数学家大会(ICM2002)在北京举行,时年91岁高龄的陈省身先生也参加了这次大会。大会期间,大会的主办方邀请陈省身先生题一句词送一句话给当时参会的少年儿童,分享自己看待数学的观点,并激励大家。陈省身先生没有多想,就在纸上一挥而就了四个字:</p>
<p><img src="https://conanhujinming.github.io/img/math_is_fun.jpg" alt="math"></p>
<p>陈省身先生认为,这是最能代表他对数学的看法的四个字。</p>
<p>然而不幸的是,在国内现在的数学教育体系中,同学们往往感受不到数学的乐趣。无论是教材、还是课堂,数学课似乎总是”莫名其妙提出某个定理-&gt;证明之-&gt;莫名其妙提出下一个定理-&gt;证明之“这样一种循环,让人觉得枯燥乏味。这样的教学结果,会让同学很多时候只能死记硬背一些定理、证明等等,而不能形成自己对数学的理解,更不用说是自己的数学体系了。结果,不仅数学学得不扎实,还可能会失去对数学的兴趣,甚至是对数学产生恐惧。然而数学不仅仅是一门学科,还是一个非常重要的工具。学不好数学,掌握不好这门工具,说是贻害无穷也不足为过。</p>
<p>说回标题,我个人认为,数学,或者至少是基础的数学(如微积分、线性代数、概率论与数理统计、离散数学等),是可以而且教得非常好玩的。当然,这是一件很难做到的事情,比如说我自己就没有在现实中听过这样的课程。因此我个人对于一门数学课的最高评价,就是”这门课真好玩“。<strong>这次推荐的这门课程MIT 6.042J,在我看来就是一门好玩的课程</strong>,甚至可以说是我最喜欢的数学课程。</p>
<p>这门课程主要讲述了计算机中常用的一些数学知识,包括归纳演绎、集合论、数论、图论、计数、概率论、递归等等,包含的内容非常多。更重要的是,授课教授Tom Leighton利用非常高超的授课技巧、多种多样的授课道具和精巧的知识组织,使得这门课程的学习变得有趣又简单。这里举一个我印象深刻的例子。有一次课是讲级数。一开始,教授拿出了一些同等大小的木块,然后让学生们从讲台上的边缘开始叠小木块,使得叠起来的小木块能够尽量远地离开讲台,同时又不能翻下去。并且,教授让学生们和TA团队比赛,看谁搭得远,如果学生更远,他就输给学生100美元。最后的结果是学生团队和TA团队搭建的木块离讲台边缘同样远。这之后,教授开始分析这个数学模型,最后利用级数来证明,木块能够离开讲台的最远距离是一个很小的定值。这样的数学授课形式新颖又有趣,让人印象深刻。而这样的课堂在这门课程中比比皆是,真是让人叹服。</p>
<p>除了这一点以外,我从这门课程中学会的非常重要的一点是数学证明时的思维路径。举一个我第一次听到的时候觉得惊为天人的数学证明的例子。组合数中有一个定理是</p>
<p>$$
C_n^k=C_{n-1}^{k-1}+C_{n-1}^{k}
$$
国内的教学一般是怎么去证明这个公式的呢?就是拆开,各种化简,最后证明等号左右两边相等。完事证完了之后,并没有觉得自己学到了什么,而且下次要用还会忘了这个公式的形式,还得去翻书。Tom Leighton在这门课上是怎么证明这个公式的呢?非常简单。我们要从$n$个物体中选$k$个物体,假如我们任意指定一个物体,那么从$n$个物体中选$k$个物体,则可以分成两种情况:</p>
<ol>
<li>选这个物体。那么我们就需要从剩下的$n-1$个物体中选$k-1$个出来。所以有$C_{n-1}^{k-1}$种选法。</li>
<li>不选这个物体。那么我们就需要从剩下的$n-1$个物体中选$k$个出来。所以有$C_{n-1}^{k}$种选法。</li>
</ol>
<p>所以,从$n$个物体中选$k$个物体,就是这两种情况的选法之和,证毕。Orz</p>
<p>除了这类有趣的证明之外,我还从Tom Leighton身上学到的关于证明的一点是:<strong>数学证明在看公式推导的时候,一定要知道推导的目的是什么</strong>。通常来说,推导的时候都是带着motivation(动机)去推导的,希望把形式转成某个样子(比如我们更容易解的一种形式),而中间的各种变化,都是在为这个目的服务。</p>
<p>总之,我认为这门课程是一门非常好玩又非常有用的课程,强力推荐大家学习这种好玩的数学课,不仅能够扎实数学基础,更能培养对数学的兴趣。不过美中不足的是,Tom Leighton似乎比较忙,所以有接近1/3的课是他当时的博士生TA来代上。这位博士生上得就一言难尽了&hellip;&hellip;最后导致他上得部分我都直接去看教材了&hellip;&hellip;希望以后会有Tom Leighton自己一个人上课的录像公开出来吧。</p>
</description>
</item>
<item>
<title>MIT 18.06:线性代数易懂且有趣</title>
<link>https://conanhujinming.github.io/post/mit_18_06_linalg/</link>
<pubDate>Thu, 17 Dec 2020 11:26:08 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/mit_18_06_linalg/</guid>
<description><p>今天在给同学们讲东西的时候,发现他们之前没学过矩阵乘法的四种表述形式(或者说四种观点?),于是给大家简单地讲了一下这四种观点。其实矩阵乘法的不同视角是非常有用的,尤其是行组合的观点和列组合的观点,不仅在很多公式推导的时候非常好用,而且也更能帮助大家从更本质地角度来理解矩阵乘法的意义。</p>
<p>回想起来,国内多数学校多数老师的线性代数的教学我认为是存在非常大的问题的(这样是不是有点太一棍子打死所有人了)。从这门课程的教材中就可见一斑。国内的教材常常从行列式开始讲起,让人一头雾水地栽进疯狂计算的大坑。完事算了半天,也不知道行列式这玩意儿的意义究竟是啥,只知道好像可以用来按照某种机械地方式解方程。之后呢,教材就从行列式开始“引入”矩阵,然后开始给一些乱七八糟的定理和结论,什么伴随矩阵啥的。学生们则根本抓不住要点,不知道这些东西的意义是什么,有什么作用?学得是一头雾水(当然我怀疑很多老师自己也是一头雾水)。最后机械地把整本书学下来,但仍然感觉抓不住这门课的精髓,只觉得数学好难好抽象好难懂好难学啊。考试之前突记刷刷题背背定理证明啥的,也能考个不错的分数,然后就将其抛之脑后了。结果到了大二大三后续课程的学习中,甚至是到了研究生阶段的学习过程中,却往往发现这玩意儿无处不在,但自己又常常看不懂各种推导,痛苦得不行。归根结底,我觉得这种现象还是由国内的教学问题所引起的。</p>
<p>在这种情况下,<strong>我极为推荐大家用一门课程来正本清源一下线性代数:
<a href="https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/" target="_blank" rel="noopener">MIT的18.06</a></strong>。这门课由数学家Gilbert Strang讲授。Gilbert Strang的讲授非常清晰且富有insight,绝对能让你对线性代数的理解焕然一新。我印象最深刻的就是矩阵乘法的四种形式,以及矩阵的四种空间了。学了之后,感觉线性代数并不晦涩难懂,反而变得具体有意义且有趣了。按我自己学习的经验来看,这门课的学习对很多其他课程的帮助绝对可以说是让我受益无穷。值得一提的是Gilbert Strang教授同样是一位学术成就很高的数学家,然而早已功成名就的他,至今仍以接近80岁的高龄在教学一线上讲课,仍然每年执教这门课程,并在努力改进课程与教材内容。相比之下,国内的一些学校无论是课程质量本身,还是部分老师对待教学的态度,也许仍然需要好好追赶啊。师者,所以传道受业解惑也。所谓大学,当教书育人、为学生传授知识与帮助学生塑造健全的人格与价值观。一味地求仕创薪可不行啊。</p>
<p>附:关于这门课程,知乎上已经有了很多推荐和讨论了。去年清华大学将线性代数教材换成了Strang写的18.06的教材在知乎上还引起了大量讨论。其实在此之前,就有一些国内的老师(如北大、复旦、上交的部分老师)已经在用这本教材上课了。对于清华的这种行为,我只能说,请加大力度。</p>
</description>
</item>
<item>
<title>讲讲信静的故事:从职高到MIT计算机博士录取</title>
<link>https://conanhujinming.github.io/post/story_of_xinjing/</link>
<pubDate>Thu, 10 Dec 2020 16:09:51 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/story_of_xinjing/</guid>
<description><p>
<a href="https://zxjcarrot.github.io/" target="_blank" rel="noopener">周信静</a>是我最好的朋友之一,也是我最敬佩的同龄人。我早就想写写文章讲讲他的故事,但由于各种原因,始终未能动笔。适逢前段时间他成功申请到了MIT的CS PhD(计算机博士),遂趁此机会讲讲他的故事,或者说是讲讲我眼中的他吧。</p>
<h3 id="初识信静安静又狂热的技术极客">初识信静:安静又狂热的技术极客</h3>
<p>说实在的,与信静的相识颇有几分偶然。当时是2017年春季,那时我们都刚参加完浙大计算机学院的研究生考试。为了准备考研复试的机试,当时我天天埋头苦刷PAT。而我刚开始屁颠屁颠地刷PAT甲级题目的时候,就已经有一位同学早早地刷完了的所有题目。ID“无敌大饺子”在PAT的排行榜榜首上孤高地挂着,个性签名“:)”透露成一股绝世高手的气息。当时我就好奇,这位“绝世高手”究竟是何许人也。某次考研群里讨论问题的时候,信静现身回答了几句,我敏锐地注意到了他的QQ昵称就是“无敌大饺子”。怀着巴结大神的忐忑不安心情,我申请了信静的好友;他很快通过了。然而那时候我的水平还太次,并未达到能与他交流的程度,所以只是怯怯地打了个招呼,就没再进一步交流。</p>
<p>后来我们考研复试要确定实验室。彼时的我还有些迷茫,不知道该投递哪个实验室。于是我想,不如问问大神的意向吧。信静告诉我说他应该会去数据库实验室。于是,抱着跟着大神走的想法,我也同样投递了数据库实验室。后来我们都很轻松地拿到了数据库实验室的offer。他没有任何犹豫就选择了接受,而那时的我还并不懂他对数据库的热爱;而我则犹豫纠结了很久,最后也选择了数据库实验室。</p>
<p>2017年暑假,我们与其他两位比较熟悉的考研同学商量,打算在入学之前就提前组一个宿舍。于是我和信静前往学校办理宿舍手续。在土木科技馆的门口,我们见到了彼此的第一面。信静高高瘦瘦,身材与我颇有几分相似,一身都是运动装束。见到我之后,信静腼腆又羞涩地笑了笑,打了个招呼,”你好,我是周信静。“我上前和他握了个手,”百闻不如一见啊,我是胡津铭,以后就靠你带我了。“随后拍了拍他的肩以示好。他被我拍了之后有些不适应,往边上让了一小步,又略有些尴尬地笑了笑说,”互带,互带。“</p>
<p>之后我们在校园里边逛边聊。我一开始试图找一些共同话题,如动漫、电影之类的聊聊,但信静面对任何话题都是只说三两句,搞得我像追求女生时尬聊找话题的男生一般。无奈之下,我只能问他最近在干嘛。谁料这一下就打开了他的话匣子,他告诉我他最近在一家数据库创业公司实习,并开始滔滔不绝地讲他在那边做的工作,诸如什么重写hash map(哈希表)比STL快几十倍啦,什么Raft、PAXOS啦。这众多名词的突然袭来打得我是措手不及。他就这样脸色微红、语气略有些急促地开始讲那些数据库技术,手指不停地笔划,告诉我这些工作有多么得激动人心,而这与刚刚羞赧的、不善言辞的他判若两人。看着这样的他,我突然生出了一种感觉:这家伙以后可能是会改变数据库领域的。</p>
<h3 id="再识信静低调逆袭的奋斗者">再识信静:低调逆袭的奋斗者</h3>
<p>虽然很遗憾最后因为一些原因我们没能成功组成宿舍,但是开学之后我们还是会常常讨论一些学术问题。我俩的背景颇有些不同:我本科是毕业于航天专业的,所以计算机基础很是缺乏,因此我当时更倾向于好好补一些基础;而他本科则是正统科班出身,基础很是扎实,而且他有强烈的做research的意愿,因此会大量地去看paper、提idea与我讨论、并做实验尝试。在与他的讨论中,我常常被他深不见底的数据库、系统的知识储备所震惊。现在回顾起来,当时初入科研门槛的我们其实提出了不少有意思的想法。比如我们在2017年的时候就预见到了机器学习会在数据库/系统领域有广泛的应用,甚至我们在课堂演讲的时候还说了这么一句话“任何需要决策的地方、调整参数的地方,也许都可以使用机器学习”(when there is a decision needed, there is potentially ML needed)。我们也尝试了一些机器学习应用在系统上的想法 ,不过很遗憾的是,那时候我们并没有比较好的实验条件与机器,这些想法最终都没能变成完整的工作。</p>
<p>如果仅仅是这样的话,那信静在我心中只是一位基础扎实、动机强烈(highly self-motivated)、刻苦勤奋的很强的朋友罢了。真正让我震惊的是无意中得知的信静之前的故事。</p>
<p>有次我们在讨论算法题,信静随意说了一句自己之前有一些ACM经历。我闲着无聊,想搜搜看他之前的ACM成绩。这一搜不得了,无意中搜到了这样一条推送:
<a href="https://www.sohu.com/a/138212975_650145" target="_blank" rel="noopener">不忘初心 笃行致远——记软件技术122班毕业生周信静 </a>。我这才惊讶地得知原来信静不止是从杭电辛苦地考上浙大计算机的,他甚至之前还是专升本到的杭电!震惊之下,我把这条推送发给了信静,表示了自己的膜拜与佩服之心。谁想到信静转而说出了让我更震惊的事情。信静尴尬一笑,说自己小时候不懂事,也没啥人管,天天就知道乱玩。到了初三的时候,职高来他们初中宣传,一忽悠,信静就一冲动,放弃了中考而选择了去职高。结果在职高读到第三年,他突然醒悟,觉得自己不想就这样度过一生,于是开始奋发图强,努力学习。无奈积重难返,且偏科严重,后来仍然只有考上一所大专。信静并没有因此而绝望,而是进入大专之后,继续维持着之前努力的势头,积极学习高质量的公开课,最终完成了专升本和考研到浙大的逆袭。职高-&gt;大专-&gt;专升本-&gt;考研到浙大!我实在无法想象信静背后是付出了多少努力,才能走出这样的道路。</p>
<p>附:这里有信静在大专二年级时写的一些项目:
<a href="https://github.com/zxjcarrot/raftcore" target="_blank" rel="noopener">raft-core</a>。大家一看代码就知道他当时的水平了。诚实地说,现在的我仍然距此仍有相当距离,很难想象当时的他付出了多少努力。</p>
<h3 id="与信静的科研合作永不放弃的坚定前行者">与信静的科研合作:永不放弃的坚定前行者</h3>
<p>又过了一段时间,由于一些原因,我转出了原来的实验室。由于信静所在的数据库实验室已经基本没有同学做数据库(都去做机器学习了),故信静仍然常常来找我这个不做也不懂数据库的人来讨论想法(idea)、实验和写作方面的问题。某天晚上,信静突然非常激动地跑到我的寝室,和我说他新想出了一个想法。这个想法是针对一种新的存储硬件NVM的(Non-Volatile Memory,非易失存储)。这个想法的动机(motivation)是来源于NVM的一个特点:NVM的读很快,具有接近DRAM(Dynamic Random Access Memory,动态随机存取存储器,即我们平时所说的内存)的速度,但是写比DRAM慢很多。这样的特点使得NVM上的写在很多时候成为了一个瓶颈,因此这篇工作就希望能够降低NVM的写的频率。使用的方法启发于以前一篇数据库领域的论文。那篇论文设计了一种混合多阶段索引(hybrid multi-stage index)来减少写操作。启发于此,信静设计了一个双阶段(dual-stage)的索引来减少NVM上的写操作。(关于这篇论文详细的说明可以参考
<a href="https://zxjcarrot.github.io/post/dptree/" target="_blank" rel="noopener">这篇文章</a>)信静有些忐忑又有些期待地看向我:“你觉得这个想法怎么样?靠谱吗?做出来能中顶会吗?”我很肯定地告诉他:“我觉得非常靠谱,做出来的话应该能中。”信静欢欣雀跃地说:“我也这么认为!那我就去实现了!”</p>
<p>在这项工作中,还有一些让我印象深刻的事情。在与以前的相关工作进行实验对比的时候,我们发现之前的工作基本都没有开放源代码(开源)。数据库、系统方面的论文实现是极其复杂且困难的,常常会耗费巨大量的力气,因此如果之前的工作有开源的话,那就会大大减少复现的代价;否则的话,则可能要花大量的精力在复现论文上。信静抱着试试看的想法给作者们写了邮件,想看看能不能要到源代码,这样就可以省下大量精力。遗憾的是,所有最新的相关论文的作者都表示无法提供源代码,但是有几位作者表示,如果信静复现论文的过程中碰到问题的话,他们愿意提供帮助。“这怎么办呢?要不就比较一些老一些的但是开源了的工作?”我问信静。“不行,这样的话,实验结果就缺乏说服力了。不提供代码就不提供代码吧,我自己来实现!”信静坚定地回复我。后来,信静就凭借自己惊人的工程能力,将所有需要对比的工作都复现了出来。</p>
<p>这项工作在做了半年之后进行了第一次投递,投递在VLDB2020(VLDB是数据库领域最顶尖的两个会议之一)上。不幸的是,第一次审稿(review)结果出来,审稿人(reviewer)的意见都比较负面,主要的批评在于工作的实验是在NVM的模拟器上做的,审稿人觉得这不太具有说服力,希望能在真实硬件上做实验。审稿人写道(此为翻译):“如果是以前也就罢了,那时候Intel没有提供硬件给外界使用,那不得不用模拟器。现在Intel已经提供硬件了,那么没理由只是在模拟器上做实验。”“哼!提供个啥!明明只有和Intel有合作的企业才能拿到。”信静很委屈地和我吐槽。我当时和信静说,实在不行的话,就再投下一个会议吧,我想总有审稿人愿意接受模拟器上的实验结果的吧。信静不服气,觉得不能就这样放弃。后来他自己想办法联系到了阿里的一个数据库的组去实习,并与实习的组商量好,在实习期间把这篇工作的实验给做了。在真实硬件上重新做了实验之后,信静再次将这篇论文提交到VLDB。审稿人看到这样的改进之后都非常高兴,纷纷给了接收(accept),这篇工作就这样中了。</p>
<p>信静想办法拿到真实NVM硬件做实验的这件事情让我意识到了自己和信静的一个巨大差距的地方:信静是能够打破限制(break the box)来解决问题的人(problem solver),碰到没有NVM硬件这样的限制,他会想办法打破限制;而我则是一个只敢在限制内行动的人。</p>
<h3 id="三识信静沉默着扛起所有压力的男子汉">三识信静:沉默着扛起所有压力的男子汉</h3>
<p>接下来要说的这件事情,应该说是信静人生最曲折最悲惨的一件事情,却也是最让我震惊而敬佩他的一件事情。</p>
<p>2019年暑假的某天晚上,我问信静VLDB的审稿结果出来了吗。信静突然回我说:”我回家了,我爸因病去世了。”</p>
<p>信静的父亲是因为食管癌而去世的。信静告诉我说他父亲是在信静研究生入学前几天查出来食管癌晚期的,而像他父亲那样的病人,平均生存周期一般是不超过半年的,他父亲能坚持一年半多,家里人已经很知足了。我说你这几年怎么都不和我们说这事儿。他觉得也没啥好说的,说了也帮不上什么。我眼中彷佛看到了当年收到确诊噩耗的信静:他也许先是当场愣住了,没想到一直安分守命的他们会遭遇这样的天灾;而愣了一会儿之后,他握紧拳头告诉自己,自己已经是一个顶天立地的男子汉了,能够也必须扛起家里的负担了。尽管家里很穷苦,他也没有和任何其他人去说这件事情,也许是不希望大家不必要地去可怜他;他只是自己默默地找了个远程实习,一边读研一边赚钱给家里提供医药费的支持。他什么也没有说,什么也没有抱怨,沉默地扛下了所有压力。男子汉所谓顶天立地,不外如是。</p>
<h3 id="离开校园后的科研时间是海绵里的水">离开校园后的科研:时间是海绵里的水</h3>
<p>在那之后,许是上天不忍心再捉弄信静了,他的运气终于好了起来。DPTree的论文被接受了。而之后,这篇论文的一位审稿人
<a href="https://www.cc.gatech.edu/~jarulraj/" target="_blank" rel="noopener">Joy Arulraj</a> (他是佐治亚理工的助理教授)因为信静的出色工作而主动联系他寻求合作。在得知了信静还没有攻读博士后,Joy还主动找了funding(资金支持)并邀请信静去佐治亚理工读博。</p>
<p>到了秋招,我们都要找工作了。我和信静都非常希望能和彼此做同事。我先拿到了一家高频交易公司的offer,而后信静也非常希望能拿到这家公司的机会,我们一起当同事,但很遗憾这家公司秋招时候的系统开发岗位只有1个名额,不再继续面试信静。无奈之下,信静只能再去寻找其他大公司的数据库组的机会。后来我率先拿到了腾讯云数据库内核组的offer,之后介绍信静去面了这个组,信静也没有辜负大家的期望顺利地砍下了SSP。这本是我们成为同事的绝佳机会,然而我已经先答应了那家高频交易公司,而我向来是言出必行,故而也就未选择去腾讯与信静共事,现在想来还非常后悔和遗憾。</p>
<p>信静毕业去了腾讯,在那个组做了许多很不错的工作。更厉害的是,信静还利用业余时间与Joy合作做科研。那时候,信静工作日的白天上班,晚上和周末挤时间做科研。我们同届的几位朋友基本上都因工作忙得焦头烂额,挣扎在厂子里日复一日的搬砖之中,而他却能在将工作任务完成得非常出色的同时,还做了一项顶级的科研工作,真是令人敬佩。他们的这项工作
<a href="https://zxjcarrot.github.io/publication/spitfire/" target="_blank" rel="noopener">SpitFire</a>最终发在SIGMOD2021上(SIGMOD是数据库领域最顶级的两个会议中的另外一个)。</p>
<h3 id="博士申请百二秦关终属楚">博士申请:百二秦关终属楚</h3>
<p>读博是信静多年的梦想。我刚认识信静不久的时候,他就问过我了不了解申请美国大学博士的事情。他问我说有没有认识去CMU(卡耐基梅隆大学,美国计算机排名前四的大学)计算机系读博的同学。当时我告诉他说,这个级别的大学极难申请,浙大一年也不一定能有一位申请成功。说实话,那时候我和信静的交流还不多,对他的了解和认识都不够,心里还觉得他有些“好高骛远”,甚至是“不知天高地厚”;现在想来,当时的我是燕雀不知鸿鹄之志了。到了2020年的时候,我才知道为什么信静当时会问CMU的事情了。实际上,信静入门数据库的时候,用的是CMU的
<a href="http://www.cs.cmu.edu/~pavlo/" target="_blank" rel="noopener">Andy Pavlo</a>开放在网上的公开课程
<a href="https://15445.courses.cs.cmu.edu/fall2020/faq.html#q2" target="_blank" rel="noopener">15-445</a>和
<a href="https://15721.courses.cs.cmu.edu/spring2020/" target="_blank" rel="noopener">15-721</a>;Andy的课程让他产生了对数据库的强烈兴趣,并一直持续至今,也让当年的信静产生了对CMU的憧憬与向往。值得一提的是,信静的SIGMOD2021的论文,三作就是Andy,不得不让人感慨命运的神奇。</p>
<p>2020年年底,信静开始申请美国的博士机会,并且只申请了几所顶级学校,我也一起帮他参考了一些文书方面的工作。在申请的学校中,信静出人意料而又情理之中地拿下了MIT计算机系的PhD offer,并选择去MIT就读。说出人意料,是说考虑到信静的故事背景,他也许是唯一一个从职高大专走到MIT PhD(或同等水平的学校)的人,就我所知是前无古人,后会不会有来者我也说不准;说情理之中,是说以我对他的实力和秉性的了解,他能拿到MIT的offer我毫不意外,甚至可以说这也只不过是他的一个新起点,他的征程才刚刚开始。目前,MIT的数据库实验室已经有三位教授向信静抛出了橄榄枝,这其中就包括数据库领域现存的唯一图灵奖获得者
<a href="https://www.csail.mit.edu/person/michael-stonebraker" target="_blank" rel="noopener">Mike Stonebraker</a>,而Mike已经有好几年没有招学生了。</p>
<h3 id="生活中的信静">生活中的信静</h3>
<p>我与信静的交流颇多,甚至我们现在还是室友——他从腾讯离职以后,我们与另外一位好朋友三人一块合租。生活中,信静最令我印象深刻的当属他的勤奋。除了每天的锻炼身体以外,我几乎很少看到信静在做学习、工作以外的事情——而他最大的热爱就是在数据库与计算机系统上,几乎将全部的时间与精力投注于其上。前两天,我们三人在家里聊自己业余时间有什么兴趣爱好,当我们纷纷说出自己爱好的时候,信静却微笑着说:“对我来说,数据库就是我的兴趣爱好。”而且,由于信静多年以来一直坚持跑步,他也拥有强健的体魄,这更支持着他数年如一日般地专注学习。可以说,信静是我熟悉的人中最为勤奋的一位。这里顺带一提,就我个人观察到的情况而言,可以说计算机领域多数情况下就是这样一个领域,天赋在其中的作用或许不算多大,而努力与勤奋才是最重要的。我从未见过一个勤奋努力并使用正确学习方法却学不好计算机的人,也没见过任何一个“聪明”但却不勤奋努力但却能学好计算机的人。一分耕耘,一分收获。</p>
<p>除此以外,信静还是一位非常温柔善良的青年。记得2020年有一天晚上,我在上海某医院看病。由于某些原因,我个人的行动能力出了点问题。信静知道之后二话不说,从家里赶到医院,全程陪着我看完了病,并送我回家,确认我平安无事之后才离去。印象最深刻的还是信静刚到医院时,从包里掏出了两根(有点压坏了的)香蕉和一个苹果。我说你这是干嘛。信静说,怕你饿了,给你带点水果充饥。我笑了笑,说,还好你带的不是橘子。</p>
<p>不过,很高兴的是,信静近日脱离了我们的单身队伍,从此业余生活终于不再是一味的数据库了(笑)。</p>
<h3 id="结语">结语</h3>
<p>信静出生于浙江一个贫困的小岛。尽管早年他对读书没任何兴趣,因而进了职高大专,但他后来奋起读书,立足杭州,放眼世界,最终惊人地拿到了MIT CS PhD的offer,他的奋斗历程毫无疑问是极其励志的。更难能可贵的是,除了他出色的技术水平与学术研究水平以外,信静还是一位非常温柔、善良、诚恳、坚毅、果敢的青年,尽管生活在很长的一段时间内并未温柔地对待他,但他仍然对生命充满着热爱。抬头仰望星空,低头脚踏实地,这是对他的最好写照。他是我永远的学习榜样。</p>
<p>最后,希望所有出身贫寒的孩子,都能抬头看天,向着自己的梦想奋斗、努力;希望所有以前荒废了时光,现在却想“浪子回头”的同学都能相信自己,踏实勤奋地去学习,你永远想象不到未来的你会有多强大;希望所有出身“低下”的同学都能不再自卑,为自己的经历感到自豪;希望所有心中有梦的同学,都能脚踏实地而又勇敢地追寻自己的梦想。</p>
<p>谨以此文表达我们的这些希望。</p>
</description>
</item>
<item>
<title>关于浙大动科女博士自杀事件的感想</title>
<link>https://conanhujinming.github.io/post/cope_with_anxiety/</link>
<pubDate>Sun, 20 Sep 2020 14:18:15 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/cope_with_anxiety/</guid>
<description><p>看到最近的浙大动科女博士自杀事件,不禁一声长叹,这样的事情发生得实在是太多了。他们本是天之骄子、是初升的朝阳、是国家顶尖的学子、是社会的未来和希望。他们中许多人怀着对科研殿堂的憧憬与向往,怀着对冲击人类知识边界的期盼与渴望,也怀着对声名在外、头衔满目的导师的崇拜与仰望做了选择,却一头撞在残酷的现实面前,发现科研并不如自己所想的那般神圣,而导师也不像自己所想的那般为人师表。他们在剥削与压榨之下苦苦挣扎却又苦不堪言,他们中的一部分靠自身能力做出成果、成功毕业,一部分因为压力与压榨出现心理问题,还有一小部分甚至因此选择轻生。他们,就是在渣导压迫下生存的博士们。</p>
<p>老师是一个多么神圣的词,教书育人、为人师表、诲人不倦、百年树人、春风化雨&hellip;&hellip;我们有很多很多形容师德的词。一位好的老师对于学生教育的影响是巨大的。但是反过来,一位师德败坏的老师对于学生的影响也是毁灭性的。而研究生,尤其是博士生的导师,对于博士的影响几乎可以说是无出其右。想一想,绝大多数高校的博士生们的毕业都需要导师签字,那么得罪了导师之后,博士们还想不想毕业了?那么转导师呢?诚然,高校的确是有提供转导师这样的选项,可如果原先的导师不同意放人,那新的导师也不敢接收呀:谁会为了一位也许素未平生的学生而得罪自己可能要共事几十年的同事呢?那么直接退学呢?这个代价对绝大多数博士来说可能是巨大的,因为一旦退学,就意味着过去几年的努力与忍辱负重都随之而去,而自己可能只能拿一个本科学位。在这样的背景下,博士往往就成为了导师手心里的蚂蚁,任其拿捏,导师想让博士做什么,博士为了毕业,也只能忍辱负重,乖乖照做。当博士的生存境况几乎任由导师掌控,那也就只能寄希望于导师的师德优良了。</p>
<p>究其原因也非常简单:导师的权力过大,却又没有相应的监督机制。权力没有监督,就很容易导致权力的滥用。</p>
<p>那么如何引入针对这种权力的监督机制呢?我想还轮不到我这个小人物来给出什么有建设性的意见或者是建议,相关部门和机构应该很清楚怎么监督。我这里仅从个人经历出发,给各位同学一些我认为可能有帮助的建议。</p>
<h3 id="在选择导师之前一定要了解清楚导师">在选择导师之前,一定要了解清楚导师</h3>
<p>一定一定要想法设法去了解清楚自己的未来导师,尤其是人品、师德方面的情况。可以想办法去网上检索信息,去
<a href="https://github.com/kgco/RateMySupervisor" target="_blank" rel="noopener">这样的github项目</a>或者
<a href="www.urfire.com">这样的推荐网站</a>上获得一些信息;而更好的办法是能想方设法地去接触一些靠谱的在导师处就读的学长学姐(已毕业的可能更好)了解情况 ,甚至是自己去实验室观察、体验一段时间,看看导师对学生的态度是怎么样的,大家是不是比较开心等等。</p>
<h3 id="被压迫的同学要团结">被压迫的同学要团结</h3>
<p>如果不幸落入渣导手下,如果能走则尽量走;如果走不了,那么希望一个实验室的学生们能团结起来,至少可以互相鼓励、互帮互助、互相关注心理健康等,甚至可以进行一些反抗等&hellip;&hellip;强烈建议同学们不要背叛自己的阶级,而帮助渣导一起压榨剥削同学(还真听说过这样的例子)。往道德方面说,这是不仁不义;哪怕功利点说,这也无非是充当渣导的走狗,而且很可能哪天就被当弃子一般抛弃,而与自己的同学朋友的关系可能是能维持一生的。</p>
<h3 id="寻求多元化的价值观">寻求多元化的价值观</h3>
<p>最近有一篇很火的文章《绩点为王,中国顶尖高校年轻人的囚徒困境》,大概是说现在国内高校年轻人十分内卷,大家都为了GPA等“硬性指标”绞尽脑汁、焦头烂额;而尽管很多同学都已经拼尽全力,却仍然感到十分焦虑,对未来感到迷茫。我个人认为,导致这种情况的一个重要原因,就是如今相对单一的价值观。(单一的价值观则往往来源于单一的评价指标,而归根结底,可能还是教育资源的不足)</p>
<p>这种价值观不是仅仅在一个地方体现,甚至可以说我们自己就在这样的教育下长大。小学的时候要努力考到好的初中,初中的时候努力考到好高中,高中的时候努力考好大学,大学了又要好好刷GPA&hellip;&hellip;也许从小就接受教育“要赚大钱、要出人头地”等等。我不是要反对这样的价值观不好。只是过于单一的价值观更容易酿成悲剧。从小就一直是成绩拔尖的天之骄子,到了本科或者博士之后“泯然众人”了,甚至于退学了,在这样的价值观的压迫下会不会更容易产生心理问题呢?</p>
<p>
<a href="https://www.mgtv.com/b/6528/266359.html?cxid=95kqkw8n6" target="_blank" rel="noopener">《恰同学少年》第四集</a>中讲了杨昌济先生给一师的学生上的第一堂课,这一堂课的内容就是修身:</p>
<p> <em>何谓修身,修养一己之道德情操,勉以躬行实践,谓之修身。古人云,修身齐家治国平天下,也就是说,修身,是一个人,一个读书人,一个想成为堂堂君子之人,成才的第一道门槛&hellip;&hellip;你们会问,什么是修身的第一要务呢?两个字,立志。</em></p>
<p>立志,也就是树立自己的志向,这是认识自我的重要一步。我个人认为,人们不仅应该关注自己”针对外界的成长“,即所谓的名校、高GPA、金钱荣誉等,同时也应该关注自我内心的成长,而认识自我,就是其中重要的一环,是应该贯彻人的一生的一件事情。终其一生,我们应该思考自己的志向是什么,自己的优点与弱点是什么,自己向往的是怎么样的生活等等。那么,大家不妨问问自己,眼下周围所盛行的相对单一的价值观,真的是自己想要的吗?(学cs的同学,如果是打算找工作的话,我强烈建议不要死盯着GPA,来刷名校的网课与lab吧!)</p>
<h3 id="有条件的话坚持锻炼">有条件的话,坚持锻炼</h3>
<p>根据我个人经验,锻炼/健身可以很好地帮助个人调整状态、缓解焦虑情绪,也能帮助缓解焦虑带来的失眠等症状。而且,生活如此艰辛,那么更需要我们有一个健康的体魄来迎接挑战。本人有过几次心理状态非常糟糕的时期,所幸有朋友们带我健身,这才能挺过去。关于健身,推荐参考施瓦辛格的《施瓦辛格健身全书》,我跟着这本书前后练了一年左右(中间因为疫情停了半年),体重从60kg不到涨到了70kg左右。</p>
<h3 id="应对焦虑的一些方式">应对焦虑的一些方式</h3>
<p>这里给出一些与处理焦虑相关的TED演讲,供大家参考。(不好意思都是youtube链接,还请见谅)</p>
<p>
<a href="https://www.youtube.com/watch?v=8KkKuTCFvzI&amp;t=24s" target="_blank" rel="noopener">What makes a good life? 什么是快乐人生的秘密?</a>:如果问你这个问题,你会怎么回答?有些人可能会说是钱,有些人可能会说是荣誉,有些人可能会说是地位。这个演讲讲述了哈佛的一个长达八十年的研究,研究的结论是: good relationships make life better,好的关系造就快乐人生。所以,找一些志同道合的好友吧!一起分享生活的喜悦与苦涩,分享学习进步的开心,分享思考的点点滴滴,分享爱情的欢欣与失恋的落寞。与自己的家人成为好朋友吧!告诉他们你爱他们。当然,最重要的可能是,要找到适合的伴侣。</p>
<p>
<a href="https://www.youtube.com/watch?v=TFbv757kup4" target="_blank" rel="noopener">The Secret of Becoming Mentally Strong. 内心强大的奥秘</a>:内心强大的人是如何面对挫折却又百折不挠?他们是如何应对焦虑的呢?Amy Morin从反方向指出,对自我的”病态“认识是阻止很多人变得内心强大的重要阻碍,并给出了一些建议。</p>
<p>
<a href="https://www.youtube.com/watch?v=WWloIAQpMcQ&amp;t=724s" target="_blank" rel="noopener">How to cope with anxiety. 如何应对焦虑</a>剑桥大学的Olivia Remes做了一系列关于焦虑的研究。她首先指出,并不是所有焦虑都是对人有害的,有些焦虑情绪实际上是在保护人自身。同时,他们也研究发现,生活贫困的人相比生活富裕的人更容易出现焦虑问题。进一步的研究发现,并不是所有生活贫困的人都会出现焦虑问题:实际上,有一部分生活贫困的人有一些略有些与众不同的应对措施,而这些措施使得他们更不容易焦虑。这些措施包括:</p>
<ol>
<li>Feel like you are in control of your life. 感觉自己”像是“在掌控自己的生活。</li>
<li>Keep this in mind: anything worth doing is worth doing badly the first time. 任何值得做的事情,都值得第一次做得很糟糕。第一次论文写得很差?没关系,论文是值得写的,所以它值得第一次写得差。第一次演讲讲得很糟糕?没关系,演讲是值得讲的,所以它值得第一次讲得差。第一次面试表现糟糕?没关系,面试是值得面的,所以它值得第一次面得差。同样记住,practice makes perfect,万般磨练,方臻化境。从第一次的糟糕中吸取教训,会帮助下次做得更好。</li>
<li>Forgive yourself for any mistakes you think you might make. 原谅自己所犯下的错误。有的时候,越优秀的人,越不容易原谅自己犯下的错误。“啊!要是我当时论文这一段这么写就好了!”或者是”啊,如果我当年那门课没考这么差就好了“诸如此类。然而,研究表明,这样的想法更容易导致焦虑,而焦虑则会使得之后更容易犯错。更好的做法也许是原谅自己,吸取教训。</li>
<li>Having a purpose and meaning in life. 找到自己人生的追求。</li>
</ol>
<p>还有个找不着了:这个ted演讲大概是说,阻止一个人走出低谷的,不一定是这个人有哪些情绪上的好习惯,而恰恰是有哪些情绪上的坏习惯。实际上,一个情绪上的坏习惯,有可能就会拖拽着一个人久久走不出情绪低谷。因此,演讲者建议大家好好思考一下有哪些情绪上的坏习惯,并着手一个一个去改进。</p>
<p>
<a href="https://www.youtube.com/watch?v=w-HYZv6HzAs" target="_blank" rel="noopener">The skill of confidence 自信的技巧</a>:这个演讲首先告诉大家自信是极为重要的。而更为重要的是,自信是一个技巧,是可以通过一些方式来磨练的。Ivan Joseph给出了一些磨练自信的技巧,其中最重要的一个是:Stop negative talk to yourself. 不要自己给自己心理暗示,告诉自己不行。</p>
<p>
<a href="https://www.youtube.com/watch?v=RcGyVTAoXEU&amp;t=734s" target="_blank" rel="noopener">How to make stress your friend 如何和压力做朋友</a>:这个演讲是最有意思的,因为演讲者给出了一个有趣的研究观点:压力对人的身体有伤害,而这个现象,只会存在于那些相信压力对身体有伤害的人身上。听上去是不是很像一句古话,”信则有,不信则无“。还有一个非常重要的观点是,当人出现紧张、压力、焦虑反应的时候,如心跳加速、呼吸急促等,不要太害怕,告诉自己,这是身体在为应对挑战做准备。</p>
<p>另外还有很重要的一点,与朋友们多多交流。我自己感觉当自己压力很大很焦虑的时候,与朋友们的交流能够极大地缓解我的焦虑,哪怕只是和大家吐吐槽、闲聊等等。也不要太担心自己会让朋友们不高兴,大家往往都是很好的人。况且,生活会有如此多的波折,所以更需要互相扶持才能顺利地度过难关。在这里也特别感谢我的诸位亲人朋友们对唠叨的我的担待Orz</p>
<h3 id="如果感觉心理出现问题及时求助">如果感觉心理出现问题,及时求助</h3>
<p>中国人的传统文化似乎有些讳疾忌医,而在心理方面似乎尤其如此。一方面可能是不愿意承认自己心理也许出了问题;另一方面也许是怕其他人知道嘲笑;还有一些同学可能是觉得心理问题与疾病挂不上钩。其实大可不必如此。首先,心理问题严重到一定程度的时候则的的确确是疾病,就像感冒发烧一样。如果是发烧,那么人们往往会去看病,也许会吃药甚至挂点滴;心理问题也是一样,同样需要去咨询与治疗,必要的时候甚至需要服药。其次,我相信周围的同学朋友亲人们知道之后并不会嘲笑,而会有很多朋友很温暖地提供一些力所能及的帮助:你不是一个人在战斗。最后,让专业人来做专业事,严重的心理问题,外行人是很难解决的。</p>
<p>因此,我强烈建议自己怀疑有心理问题的同学及时做心理咨询、请求心理援助、甚至是就医。各大学校都有提供心理援助的方式,例如浙大的同学们可以在
<a href="http://www.xlzx.zju.edu.cn/redir.php?catalog_id=289" target="_blank" rel="noopener">这里</a>预约心理咨询等。</p>
<h3 id="活着就有希望">活着,就有希望</h3>
<p>记得以前某个夏日的午后,随手拿起余华的《活着》开始阅读。读着读着,就被里面人物之命途多舛所深深震撼:人生为什么会有这么多的苦难?但是更令我触动的还是福贵经历了这么多苦难之后,最后与一头老牛相伴时走在路上唱着歌的场景。很多人的人生的的确确会有许多苦难,但是没有什么比身体、比活着更为重要的。生死之外无大事。就像《飘》的结尾里,斯嘉丽只身一人回庄园时的背影所说,“不管怎么说,明天又是新的一天”。如果读研/读博的生活真的苦不堪言,那么可以考虑休学甚至是勇敢退学、从头再来。同时,也要有自信,就算自己眼下过得不如意,自己的学术生涯有些耽误甚至要退学重来,但自己一直勤勤勉勉、认真刻苦,也许眼下会有波动与起伏,但最终自己一定会收敛到自己这样的努力所对应的期望上的。</p>
<p>最后以一首我以前在别的地方写的打油诗结尾吧~</p>
<p><em> Let it go with the wind<br>
Among the road I should sing<br>
Tomorrow is another day<br>
With the hope I should say<br>
Although someone makes me ill<br>
I would like to keep me still</em></p>
<p><em> 就让往事随风而去<br>
继续一路哼着小曲<br>
明天又是新的一天<br>
无限希望就在眼前<br>
纵使未被温柔对待<br>
我将仍对生活充满热爱</em></p>
<p>祝大家都能拥有健康快乐的生活~</p>
</description>
</item>
<item>
<title>二十八画生征友:一起来通关6.S081/6.828吧~</title>
<link>https://conanhujinming.github.io/post/mit_6_828_together/</link>
<pubDate>Thu, 17 Sep 2020 23:20:50 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/mit_6_828_together/</guid>
<description><p>(标题是一个危险的致敬)</p>
<p>
<a href="https://pdos.csail.mit.edu/6.828/2020/index.html" target="_blank" rel="noopener">6.828 Operating System Engineering</a>是MIT久负盛名的一门操作系统相关的课程。这门课程有多牛呢?举个例子,以陈海波老师为首的上海交通大学IPADS实验室可以说是国内最强的操作系统相关实验室之一,而陈海波老师等人在他们读博的时候(早在2005年左右)就完成了6.828课程的学习,甚至还以6.828的JOS系统为基础开发了Corey操作系统,并发表了一篇ODSI2008论文<em>Corey: An operating system for many cores</em>,该论文也是陈老师至今引用最高的论文。而后,IPADS老师也基于6.828的资源,在上海交通大学软件学院开设了多年操作系统课程。</p>
<p>然而,在此之前,这门课程一直是参杂着操作系统的知识学习与前沿research内容一同教学。这样有一些问题:对于打基础的本科生或低年级研究生,前沿research的研究似乎有些难度过大而又不那么必要,而打扎实基础更为重要一些;对于高年级研究生与博士生,他们又往往早就有扎实的基础,再过一遍这些基础也许会有些浪费时间。因此,MIT今年决定将其拆为两门课程,分别是6.S081(Introduction to Operating System)和6.828(也许是Operating System Research Seminar),而让两门课程分别适配不同的受众人群。新的6.S081对于意图补基础的同学无疑是一门更为合适与smooth的课程。更重要的是,今年这门课程决定开放课程视频!(大家再也不用看同学偷偷录的山寨视频了)顺带一提,今年是极为特殊的一年,MIT大量开放了课程的视频,如6.824、6.826、6.828等等,这对于广大学习者无疑是一个福音。大家直接在
<a href="https://pdos.csail.mit.edu/6.828/2020/index.html" target="_blank" rel="noopener">课程主页</a>上就能看到全部的课程资源,还包括视频,惊喜不惊喜~~</p>
<p>顺便讲一个有趣的八卦。6.S081一位授课教授
<a href="https://pdos.csail.mit.edu/~rtm/" target="_blank" rel="noopener">Robert Morris</a>是互联网蠕虫病毒的发明者。当年Morris是康奈尔大学的一名学生,写了个小的实验程序即蠕虫病毒玩,据说他是想用蠕虫病毒“测量互联网的规模”。但是他又怕被抓,就选择了在MIT释放了蠕虫,以掩盖他是来自于康奈尔的事实。结果这个病毒造成了巨大的损伤。Morris受到审判,并被定罪违犯了1986年的《计算机欺诈及滥用法案》(他也是第一个适用于该法案的人)。经过上诉,他被判3年缓刑、400小时社区服务及10,000美元罚金。Morris也许是处于内疚(大雾),后来就去MIT担任教授至今。</p>
<p>八卦讲完了,那么来说说我写这篇文章的目的是什么。在我之前的一篇学习CS144的文章中我有提到自学网课的一个大问题是没有TA以及同学可以交流。所以当时建议大家自学网课的时候也可以找一些小伙伴一起学,搞一个“虚拟课程”甚至是“虚拟大学”。这篇文章的目的就是组织一个6.S081 Fall 2020的学习交流群。交流群的目的是供大家互相督促、鼓励,并交流学习经验与心得,以及互相帮助,避开一些lab里存在的坑,大家一起来通关6.S081~换言之,<strong>每一位加群的同学都应该以独立通关6.S081的Lab为目标</strong>。这里的独立,不是说大家不能交流,而只能一个人埋头苦干;恰恰相反,交流是非常重要的。这里独立指的是:</p>
<ol>
<li>不能阅读其他人的代码实现,自己的代码必须自己完成。</li>
<li>不能找其他人帮忙debug。</li>
<li>可以交流思路、碰到的问题,但不应该提问一些应该自己解决的问题。例如:为啥我过不了这个case呀?有没有人能帮我看一下我这段代码哪里有bug等等。</li>
</ol>
<p>为了尽量保证每一位入群的同学都是冲着独立通关6.S081来的,入群有一个简单的条件,即<strong>必须自己先独立完成前两个Lab的内容</strong>。实际上Lab1和Lab2与后面的Lab相比都比较简单,属于热身性质的lab。我个人认为这样能更好地维护学习交流群的单纯性。</p>
<p>另外,为了保证交流群的氛围,这边也简单写一些规则,如果不愿意遵守的同学就算啦:</p>
<ol>
<li>不准阴阳怪气他人。</li>
<li>不准参考他人代码或请他人debug,应该要独立完成Lab。</li>
<li>不准或尽量少无意义地水群,6.S081学习交流群应该供学习交流6.S081使用。</li>
</ol>
<p>我注意到前两个Lab里已经有一些坑,这里也给出来,避免大家再次踩坑:</p>
<ol>
<li>在开始lab之前,先按照
<a href="https://pdos.csail.mit.edu/6.828/2020/tools.html" target="_blank" rel="noopener">tools</a> 配环境。如果是使用ubuntu的话,我个人推荐用ubuntu20,这样可以免去自己配toolchain的痛苦;而如果是更早的ubuntu系统的话,那么需要按照页面上的指点自己build toolchain。另外使用<code>apt-get</code>安装的QEMU的版本估计是不够新的,如果版本号低于5.1.0,那么也需要自己手动build QEMU. 最后验证安装的时候,如果不是自己手动build的toolchain的话,可能不是按照官方说的用<code>riscv64-unknown-elf-gcc</code>之类的,而是其他的一些命令,具体可以在<code>/usr/bin</code>或者<code>/usr/local/bin</code> 下查看 。对于验证安装,我个人建议先确定qemu版本,再尝试在xv6运行<code>make qemu</code>,如果能够正常进入,应该就没有问题了。</li>
<li>之后阅读
<a href="https://pdos.csail.mit.edu/6.828/2020/labs/guidance.html" target="_blank" rel="noopener">guidance</a> 注意一个坑点是<code>make qemu-gdb</code>的部分,在另一个窗口跑<code>gdb</code>或者<code>riscv64-linux-gnu-gdb</code>可能都不一定有用,也许是<code>gdb-multiarch</code>或者是 <code>riscv64-unknown-elf-gdb</code> 具体同样可在<code>/usr/bin</code>或者<code>/usr/local/bin </code>下查看。可以自己试试哪个会work&gt;_&lt;</li>
<li>如果你要用xv6的某些自带的函数,发现它们不像你想得那样工作,那么请大胆地去看源码,也许它们的实现的behavior和标准库的是不一样的&gt;_&lt; 并且,要敢于而且主动地去看xv6的源码,甚至可以说这些Lab的目的就是帮助你熟悉了解xv6的源码的。</li>
<li>如果你的机器(像我一样)很烂,在某些case上可能会碰到timeout的问题(纯粹是因为机器太烂),那么可以把gradelib里默认的timeout调大一些&hellip;&hellip;</li>
<li>想到其他的坑点会再补充。</li>
</ol>
<p>好的,那么我就先写到这里,感兴趣的同学请独立完成前两个Lab之后加群交流~**群号为603579009,加群的时候请附上自己完成前两个Lab的github repo地址~~**谢谢大家啦</p>
</description>
</item>
<item>
<title>自学CS路线、资源推荐</title>
<link>https://conanhujinming.github.io/post/how_to_learn_cs/</link>
<pubDate>Fri, 28 Aug 2020 21:06:07 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/how_to_learn_cs/</guid>
<description><p>半年前我曾经写过一篇长文,主要是关于自己的面试、学习CS心得。这篇短文给出一个我认为比较合理的自学CS的路线,以供参考。</p>
<p>个人推荐首先学好英语,同时跟美国名校有视频的课程,并完成作业。这套方法是偏学院风的,比较适合时间比较多的学生。</p>
<p>如何学好英语?可以参考
<a href="https://conanhujinming.github.io/post/learn_english/" target="_blank" rel="noopener">这篇文章</a>。</p>
<p>需要说明的是,我的学习方法是比较偏学院风的,不适合时间不多的同学;而且这些资料也有一些门槛,所以这套学习路径可能只适合一部分人吧。注意以下推荐的课程都是我认为很好的课程,每一块内容挑选1-2门对自己胃口的课程就足够足够了,然后看视频、看reading材料**并完成作业。**这些课程有些我写了点简单的介绍文章,一并附上;还有些课程的介绍文章会在未来有空的时候写。不过我还是强烈推荐自己找到课程主页,看一下课程大纲,且课程资源都在课程主页上。至于课程视频,在B站或者Youtube上都有。</p>
<p>下面是路线推荐:</p>
<ol>
<li>首先建议从计算机导论课程开始。推荐MIT的6.001或者Harvard的CS50或者Berkeley的CS61A都是可以的。</li>
<li>之后建议学数据结构与算法。纯粹数据结构的话,Stanford的CS106系列是不错的,再包括算法的话MIT的6.006和6.046(进阶)都很好。学了之后也可以定期刷点leetcode。Berkeley的CS61A和CS61B当然也非常好,还有Coursera上的Princeton的课程。Stanford和UIUC也都有很好的进阶算法课程。</li>
<li>操作系统:推荐CMU的15-213和Berkeley的CS162,都是有视频有lab的好课。进阶的话推荐6.828(小伙伴都说很好,我还没做)。</li>
<li>组成原理、体系结构: MIT的6.004, CMU的15-213有一些,Berkeley的CS61C也非常好。有一个很有趣的游戏MHRD也不错,可以参考
<a href="https://conanhujinming.github.io/post/mhrd/" target="_blank" rel="noopener">这篇文章</a>。</li>
<li>MIT的6.null,实用工具介绍,可以参考
<a href="https://www.zhihu.com/question/29224038/answer/1214549826" target="_blank" rel="noopener">这篇文章</a>。</li>
<li>计算机网络:Stanford的CS144,lab很棒,可以参考
<a href="https://zhuanlan.zhihu.com/p/175998415" target="_blank" rel="noopener">这篇文章</a>。</li>
</ol>
<p>基本上学了第一门导论课程之后,就会知道自己接下来想学/需要学什么了,也可以参考
<a href="http://catalog.mit.edu/degree-charts/computer-science-engineering-course-6-3/" target="_blank" rel="noopener">MIT的CS本科的课表</a>。</p>
<p>我列出的这些课程的资源在网上都有,也基本都有视频。想要学好的话,作业一定要做。当然也有很多很好的课程这里没给出,大家可以自行发现,或者参考
<a href="https://github.com/prakhar1989/awesome-coursesgithub.com" target="_blank" rel="noopener">github项目awesome-courses</a>(这个项目近期更新得不是很多了)</p>
<p>之后看走开发岗还是算法岗路线。走开发的话,可能还要学数据库(CMU 15-445)、分布式(MIT 6.824)、软件工程(MIT 6.031) 等等;走算法的话,就从吴恩达的Coursera课程开始,然后Stanford的CS229或者CMU的10-701,然后Stanford的CS231n&hellip;&hellip;想走工程道路的话早日实习,有机会参加高质量的github项目开发;想走科研的话找靠谱老师跟着做,或者去发论文导向的靠谱的组实习;想去美国读phd的话找机会去参加暑研&hellip;&hellip;</p>
<p>关于编程部分,也推荐看看Norvig的这篇文章:
<a href="http://norvig.com/21-days.html" target="_blank" rel="noopener">Teach Yourself Programming in Ten Years</a></p>
<p>关于这么多课真的能自学下来吗,以及要多久,可以参考
<a href="https://www.zhihu.com/question/20571226/answer/1164008325" target="_blank" rel="noopener">这篇文章</a>。太长不读版:视课程难度与个人基础,一门CS课一般需要150小时-300小时的有效学习时间,因此请自己计算。</p>
<p>学下来能拿到什么样的offer?我只是偷懒地完成了以上部分课程的一大部分内容,大概拿到了10多个offer,且基本都是硕士能拿到的很top的offer了。所以全部学下来的话应该至少能拿到比我多比我好的offer吧~~</p>
<p>祝大家自学CS之路顺利、开心~Happy Learning, Happy Coding!</p>
</description>
</item>
<item>
<title>CS144: 什么,你学不会TCP?那就来自己写一个吧!</title>
<link>https://conanhujinming.github.io/post/cs144_tcp/</link>
<pubDate>Sun, 09 Aug 2020 08:48:37 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/cs144_tcp/</guid>
<description><p>计算机网络是CS极为基础和重要的一门课,但却一直是我的心病之一,其原因在于我并没有认真地学习过这门课:我对计网的了解基本局限于考研时拿着某本国内教材死记硬背的那点知识。这么重要的课程,我却掌握得如此不扎实,这一直让我非常惶恐,所以读研之后也一直有一些想法去补一下。但是自己实在是太懒了,且读研期间也几乎没有接触到什么需要用到相关知识的地方,故而就一直像鸵鸟一样,对自己的菜视而不见。然而学习终究是没有捷径可走的,当初欠下的终归是要还的:这不,我现在的工作内容就有很大一部分是需要与网络打交道。求生欲终究还是战胜了自己的懒惰,我这才终于下定决心补一补这部分的知识。</p>
<p>如之前的文章所述,我在补这些CS的知识的时候,比较喜欢找一门有视频的名校(通常是四大)课程跟着上一遍。搜了一圈,我发现四大中只有Stanford的
<a href="https://cs144.github.io/" target="_blank" rel="noopener">CS144</a>是有
<a href="https://search.bilibili.com/all?keyword=cs144&amp;from_source=nav_search_new" target="_blank" rel="noopener">视频</a>的,虽然这个视频版本是多年前的MOOC版本而非课程录像。除了视频以外,我认为自学课程最重要的一点就是这门课是否有很好的Assignment/Lab。我一看,这CS144的Lab是用C++自己实现一个TCP。就它了!于是就开始了CS144的学习。</p>
<p>可能是因不适应两位教授的授课风格,看CS144的视频总是让我犯困(我甚至在某个失眠的夜晚打开了CS144的授课视频,然后成功治好了我的失眠),再加上我之前还是多多少少知道一些计网的皮毛知识,我终于决定不看授课视频而直接上手完成Lab。不得不说,Lab的设计还是非常不错的。前5个Lab从byte_stream开始,一步一步地指导你实现出一个<strong>能真实使用的TCP</strong>,总得来说有趣而又有用,且难度也不算很大。不过由于我太懒,再加上中间有一段时间非常忙没时间去写,前后拖了一个月才终于完成了前面几个实现TCP的Lab。后面两个Lab涉及到的知识似乎暂时没什么需求,只能说“下次一定”了。</p>
<p>夸完了之后,也补充一下我认为CS144 Lab中存在的一些坑点。毕竟这个Lab系列只使用了一届,还不是特别完善,相信之后也会每年根据学生的反馈改进的。坑点大概有以下这些:</p>
<ol>
<li>有一些设计的选择细节并没有在PDF里给出,我有的时候需要去看test case才会知道Lab希望怎样去设计。不过也许这些内容在上课的时候会提到。另外这也暴露了自学网课的一个问题:没有TA以及同学可以交流。所以大家自学网课的时候也可以找一些小伙伴一起学,搞一个“虚拟课程”甚至是“虚拟大学”。</li>
<li>Lab2和Lab3的test case不够多,导致错误或者是与Lab期望的设计不符的实现也能通过全部的test case。然后在Lab4里,这些问题会全部暴露出来&hellip;&hellip;结果就是在做Lab4的时候完全不能信任自己在Lab2和Lab3里的相应实现,这样也大大增加了debug难度。</li>
<li>Lab4里有两个test case即fsm_ack_rst和fsm_ack_rst_relaxed期待的行为是完全相反的。实际上在官方的FAQ页面上给出的状态机是与fsm_ack_rst期待的行为一致,但Lab4默认启用的却是fsm_ack_rst_relaxed&hellip;&hellip;</li>
<li>官方提供的VirtualBox Image中的GDB是有bug的,在cmake_build_type=Debug生成的binary上不能正确地打断点。在Lab4之前我还能靠肉眼调试,但是Lab4实在是肉眼调不动了,不得不寻求解决方案。后来问了一位之前也做过这个Lab的清华大佬,他告诉我说他用的是LLDB。我就赶紧换了LLDB,这才能愉快的进行调试。顺带一提,这位大佬在GitHub上有自己
<a href="https://github.com/huangrt01/CS-Notes" target="_blank" rel="noopener">完成这门课程和Lab的笔记</a>,也是值得参考的Orz 我室友后来也来做这个Lab了,据他说开了-O0之后GDB就能正常工作了,但我自己之前尝试的时候这样还是不能正常工作。</li>
</ol>
<p>不过瑕不掩瑜,这门课程的Lab无疑是非常好的材料。扎实地掌握TCP的最好办法也许就是自己去写一个能用的TCP,写完之后对各种细节就会掌握得扎实很多,对背后的设计思想也会有更深的理解。真是眼红美国名校的课程资源啊,也希望国内的高等教育能迎头赶上吧。(如果我去当高校的授课老师,我就和CS144这类课程的授课老师沟通,基本照搬这些名校的授课内容再根据实际情况做一些小改变,简直就是不送包赢)</p>
<p>不多废话了,我要去和几位大佬同学商量下一个课程该上啥了。</p>
</description>
</item>
<item>
<title>MHRD: From NAND to CPU</title>
<link>https://conanhujinming.github.io/post/mhrd/</link>
<pubDate>Sun, 05 Jul 2020 11:23:53 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/mhrd/</guid>
<description><p>几天前下班回家的时候心血来潮,想玩玩单机游戏,但又不知道该玩什么,就问朋友们有没有推荐的游戏。室友
立马给我推荐了这款游戏MHRD,说我玩了之后肯定会爱不释手,一玩到底。我问他这游戏是玩啥的,他只是神秘一笑,说玩了就知道了。我对于他的提议向来是言听计从,就装了steam买了这款游戏,怀着好奇的心情打开了它。</p>
<p>刚打开这个游戏,我就从画面和声音中意识到事情并不简单。游戏的开机画面是一个黑底白字的画面。开始之后,首先跳出来的是“microhard is booting”,随后是ROM的加载提示,与之相伴的是软盘加载的次扎次扎的声音,与夸张的风扇转动声:我眼前仿佛跳出了一台来自上世纪70年代的庞大的机器怪兽。“这什么玩意儿?”我错愕道。随后,游戏加载完成,并提示我是microhard公司的一位工程师,现在公司正计划开发一个名为cpu的组件,公司相信cpu会成为一个具有划时代意义的重要发明。不过目前公司手头上只有一些能模拟NAND电路的基本组件,所以公司需要我从NAND开始,一步一步搭建出AND, NOT, XOR等其他基本组件,再逐渐完成Mux, Demux, PC, RAM, ALU, Decoder等其他更高阶的组件,直至最后完成CPU的开发。</p>
<p>“我这是玩游戏还是上课呢?”我向室友抱怨。室友嘿嘿一笑,说:“你这种跨专业的人应该好好补一补这些基础知识。我想来想去,感觉也没有比这个游戏更合适更有趣的方式了。不要慌,不懂就问我。”由于已经掏了钱上了贼船,本来只想好吃懒做玩点游戏打发时间的我只好硬着头皮继续玩了下去。</p>
<p>想不到游戏设计得非常合理有趣,点一下,玩几天,玩得根本停不下来。我按照游戏的指示一步一步走下去,竟然相对顺利地一路过关斩将,甚至直捣黄龙,将最终Boss Decoder和CPU一剑斩于马下。虽然中间有一些组件的设计让我抓耳挠腮、苦思冥想,但经过仔细思考之后还是成功给出了可行的设计方案。每次成功完成一个组件的设计,都会产生不小的成就感。而经过了这一趟精心设计的旅程,也的的确确让我对计算机的底层实现有了更深的理解。</p>
<p>值得一提的有几件事情:</p>
<ol>
<li>
<p>每个组件的实现方式是不唯一的,有的实现方式需要的NAND数量多一些,另一些则需要得更少一些。只是给出一个可行方案,和给出最优方案的难度差距是很大的。我虽然已经通关了游戏,但很多组件都不是最优的方案,之后还得再去研究改进。针对每个组件,游戏会告诉你,你的好友中最优的方案用了多少NAND,以及世界上所有玩家最优的方案用了多少NAND。需要注意的是,世界的最优方案的NAND数量很多时候没有参考意义,因为他们是面向test case编程的。</p>
</li>
<li>
<p>有一些组件的设计工作量巨大但又比较枯燥,于是microhard公司雇了个实习生来搞定这些。看到这里的时候我不禁笑出了声:这也太真实了。</p>
</li>
<li>
<p>个人认为最后Decoder的test case是有一点问题的,玩游戏的小伙伴到时候可以留意一下。</p>
</li>
</ol>
<p>最后想说,寓教于乐,让学习充满趣味又能确确实实地掌握到有用的知识,这在我看来无疑是教学中的最高境界之一。非常期待游戏制作商号称会出的续作,猜测可能是写流水线之类的。而我的室友也笑眯眯地凑过来给我推荐下一个“副本”了。</p>
</description>
</item>
<item>
<title>自学英语的经验分享</title>
<link>https://conanhujinming.github.io/post/learn_english/</link>
<pubDate>Fri, 22 May 2020 17:39:23 +0800</pubDate>
<guid>https://conanhujinming.github.io/post/learn_english/</guid>
<description><p>本文较长,大约会有万字左右,这里提供一个目录给大家各取所需~</p>
<ul>
<li>
<a href="#%e6%9c%ac%e6%96%87%e7%ae%80%e4%bb%8b">本文简介</a></li>
<li>
<a href="#%e7%bb%bc%e5%90%88%e8%8b%b1%e8%af%ad%e8%83%bd%e5%8a%9b%e7%9a%84%e6%8f%90%e5%8d%87%e6%96%b9%e6%b3%95">综合英语能力的提升方法</a>
<ul>
<li>
<a href="#%e5%86%99%e5%9c%a8%e5%89%8d%e9%9d%a2">写在前面</a></li>
<li>
<a href="#%e9%98%85%e8%af%bb">阅读</a>
<ul>
<li>
<a href="#%e5%a2%9e%e5%8a%a0%e8%af%8d%e6%b1%87%e9%87%8f">增加词汇量</a></li>
<li>
<a href="#%e9%95%bf%e9%9a%be%e5%8f%a5">长难句</a></li>
<li>
<a href="#%e9%98%85%e8%af%bb%e5%8e%9f%e8%91%97">阅读原著</a></li>
<li>
<a href="#%e8%af%ad%e6%b3%95">语法</a></li>
</ul>
</li>
<li>
<a href="#%e5%90%ac%e5%8a%9b">听力</a>
<ul>
<li>
<a href="#%e7%b2%be%e5%90%ac">精听</a></li>
<li>
<a href="#%e6%b3%9b%e5%90%ac">泛听</a></li>
</ul>
</li>
<li>
<a href="#%e5%8f%a3%e8%af%ad">口语</a>
<ul>
<li>
<a href="#%e7%ba%a0%e6%ad%a3%e5%8f%91%e9%9f%b3">纠正发音</a></li>
<li>
<a href="#%e7%a7%af%e7%b4%af%e8%af%ad%e6%96%99">积累语料</a></li>
<li>
<a href="#shadowing">Shadowing</a></li>
<li>
<a href="#%e6%bc%94%e8%ae%b2%e7%9a%84%e8%83%bd%e5%8a%9b">演讲的能力</a></li>
<li>
<a href="#%e5%bf%83%e6%80%81">心态</a></li>
</ul>
</li>
<li>
<a href="#%e5%86%99%e4%bd%9c">写作</a>
<ul>
<li>
<a href="#%e7%a7%af%e7%b4%af%e8%af%ad%e6%96%99-1">积累语料</a></li>
<li>
<a href="#%e6%94%b9%e6%96%87%e7%ab%a0">改文章</a></li>
<li>
<a href="#%e7%bf%bb%e8%af%91%e6%96%87%e7%ab%a0">翻译文章</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#%e6%89%98%e7%a6%8f%e9%9b%85%e6%80%9d%e7%ad%89%e8%80%83%e8%af%95%e7%9a%84%e5%87%86%e5%a4%87%e6%96%b9%e5%bc%8f">托福雅思等考试的准备方式</a>
<ul>
<li>
<a href="#%e9%9b%85%e6%80%9d%e5%a4%87%e8%80%83">雅思备考</a></li>
<li>
<a href="#%e9%9b%85%e6%80%9d%e5%86%99%e4%bd%9c">雅思写作</a></li>
<li>
<a href="#%e9%9b%85%e6%80%9d%e5%8f%a3%e8%af%ad">雅思口语</a></li>
<li>
<a href="#%e6%89%98%e7%a6%8f%e5%a4%87%e8%80%83">托福备考</a></li>
<li>
<a href="#%e6%89%98%e7%a6%8f%e9%98%85%e8%af%bb">托福阅读</a></li>
<li>
<a href="#%e6%89%98%e7%a6%8f%e5%90%ac%e5%8a%9b">托福听力</a></li>
<li>
<a href="#%e6%89%98%e7%a6%8f%e5%8f%a3%e8%af%ad">托福口语</a></li>
<li>
<a href="#%e6%89%98%e7%a6%8f%e5%86%99%e4%bd%9c">托福写作</a></li>
</ul>
</li>
<li>
<a href="#%e9%92%88%e5%af%b9%e9%9d%a2%e8%af%95%e7%9a%84%e8%8b%b1%e8%af%ad%e5%8f%a3%e8%af%ad">针对面试的英语口语</a></li>
<li>
<a href="#%e5%86%99%e5%9c%a8%e6%9c%80%e5%90%8e">写在最后</a></li>
</ul>
<h1 id="本文简介">本文简介</h1>
<p>英语是一项极为重要的个人能力。其作用至少体现在:</p>
<ol>
<li>
<p>许多优秀的学习资料是用英文承载的。如今互联网非常发达,许多高校也经常会在网上公开自己的课程与学习资料,而这些学习资料往往都是没有中文翻译版的。纵使有翻译版本,其翻译质量往往也不忍直视。如果英语不好,那么就很难利用这些优秀的资源,那学习质量就可能大打折扣。</p>
</li>
<li>