自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

西代零零发

既然选择远方,便只顾风雨兼程

原创 程序员修炼之路

0.前言:在路上,再上路在前言《程序员修炼之路-(0)前言:在路上, 再上路》中已经对知识体系进行了梳理,主要分为问题定义、算法与数据结构、系统平台API、编程语言实现、代码设计、测试验证等等。目前集中精力编写算法与数据结构部分,这可能也是最艰难的一部分。其他部分之前零零散散有所涉及,之后再慢慢补...

2016-02-10 11:02:35 6352 6

原创 内存计算技术资料整理

先来看一下一张技术的全景图,其中涉及内存计算的技术标成红色。 1)事务处理:主要分为Cache(Memcached, Redis, GemFire)、RDBMS、NewSQL(以VoltDB为首的)三部分,缓存和NewSQL数据库是关注的重点。2)流式处理:Storm本身只是计算的框架,而Spar...

2014-12-13 14:22:32 14599 2

原创 Redis之父的“退役”感言

Redis之父Antirez今早发布了一篇文章,题为《The end of the Redis adventure》。多年以前深入学习过Redis,这个最流行的缓存解决方案。当时惊叹于其近乎“变态”的性能表现,简直就是一个性能猛兽。而更令人印象深刻的是,在优异的外在表现背后,其代码质量也同样优秀。...

2020-07-02 01:59:59 469 5

原创 测试驱动开发下的软件生长

测试驱动开发下的软件生长 1.前言 最近读完了《Growing Object-Oriented Software, Guided by Tests》,这本在豆瓣上高达9.5分的好书。事实证明,群众的眼睛是雪亮的。除去中间那个很长的实际项目案例没耐下心来看完,其他部分我都看了不止一遍。虽然还没有读过...

2020-06-02 13:11:43 323 1

原创 对《如何解题》思路的补充

1.前言 《如何解题》(《How to Solve it》)是波利亚的经典著作,列举了很多数学问题,总结了解决问题的主要思路和步骤,即定义问题,设计方案、实现、验证。虽然全书主要是以数学问题为例,但其思路适用于生活和学习的其他方面。比如在软件开发领域,我们通常也是按照这四步。首先收集客户需求、找到...

2020-05-29 14:32:27 249 0

原创 三本有趣的科普书

1.《The Joy Of X》 第25章—— 最孤独的数 Computers have found twin primes at unbelievably remote parts of the number line. The largest known pair consists of t...

2020-05-29 14:31:28 141 0

原创 数据库引擎学习导读

因为目前项目涉及到数据库查询引擎的实现,所以近来愈发觉得数据库引擎开发是一个很好的技术领域。首先,一个数据库引擎与传统编译器很像,可以细分为三大部分,前端、中端和后端。所谓前端,就是一个SQL解析器把用户的SQL语句转换成语法树(Parse Tree或者叫Concrete Syntax Tree,...

2020-03-28 11:36:44 215 0

原创 迟来的2019年总结

2018年的个人总结内容很丰富,2019年也已经过去两周了,想提笔写点什么却好像素材不多。 这一年最大的收获应该就是,一直在做的主项目3月份在GitHub上开源了。以前对GitHub上如何开发和协作一点都不了解,没想到在Amazon竟然有机会参与到开源软件的开发。于是在接下来的大半年时间,如果管理...

2020-01-20 09:54:05 241 1

原创 GitHub Action开启自动化

这周突然发现公司项目的GitHub代码库多了一个Tab页,叫做GitHub Action。于是了解了一下,发现这就是大家期待已久的自动化功能。自动化不只是我们常说的CICD(持续集成和持续部署),通过定义一个yml文件我们可以实现更多的动作。这个yml配置文件会保存在代码库的.github文件夹,...

2019-11-16 14:24:17 1983 0

原创 Grammarinator:基于ANTLR4语法自动生成语句

Grammarinator是一个基于ANTLR 4的grammar文件,自动生成语句的开源项目:https://github.com/renatahodovan/grammarinator。从语言的grammar生成语句或者所谓的Fuzzy Testing,对软件测试很帮助。就像Grammarin...

2019-10-28 03:53:15 269 0

原创 深入学习关系理论

周末阴雨连绵,在家闲来无事,抽空读了《Database In Depth: Relational Theory for Practitioners》这本评价不错的关系理论书的开篇。作者C.J.Date是关系理论之父Codd的好友,所以对关系理论的理解是足够深入的。甚至在开篇不久,作者就提到了与Co...

2019-10-24 14:02:00 199 0

原创 疯狂的罗素

原书《Logicomix》,中文名《罗素的故事》或《疯狂的罗素》。讲述的是逻辑学家、哲学家罗素追寻真理的故事。以罗素的回忆为主线,穿插了许多史实和一些虚构的情节,比如罗素与一些人物的会面和对话。主要内容上与《逻辑的引擎》类似,毕竟如罗素悖论、哥德尔不完备性等大事件是一定会提及的。不同的是轻松有趣的...

2019-10-13 07:25:27 204 0

原创 超越离散数学

早些时候曾写过一篇程序员的数学修养,介绍了一些程序员可以学习的数学分支。虽然与编程有一定的相关,但自学起来也不是一件容易的事。所以本文再推荐一些专门为程序员写的数学书,可以用作入门。有了一定基础知识,可以再根据需要去学习和选读一些更偏向数学的书。说到程序员数学,可能第一反应就是离散数学,再就是算法...

2019-10-13 06:34:48 218 0

原创 如何实现语义分析中的类型检查

之前曾写过一篇语义分析的概念性介绍:https://daichen.blog.csdn.net/article/details/100097850。最近,终于开发完了一套基于SQL的语义分析器,算是对之前学习到的理论的一次工程实践。本文只是点出一下实践时的一些关键点和经验,具体细节还请看这里的设计...

2019-10-12 13:48:20 369 0

原创 编译器中的语义分析

最近一直在看编译原理方面的书,之前着重研究过词法解析和语法解析,这一次因为工作原因比较侧重语义分析。简单来说,语义分析是发生在词法和语法解析之后,输入是Concrete Syntax Tree又名Parse Tree。语义分析器对Parse Tree进行分析,同时可以产生Abstract Synt...

2019-08-27 13:34:35 460 0

原创 逻辑的引擎

最近利用通勤时间又读完了一本好书,《Engines of Logic——Mathematicians and the Origin of the Computer》。可能由于作者本身也是数学和计算方面的牛人,所以这本书并不那么容易读。一是字里行间可以立即感受到的不舒服,即句式有些太复杂,随便翻开一...

2019-07-20 13:14:19 253 1

原创 如何高效地做设计评审

设计评审(Design Review),即在真正开始开发之前,组织一次或多次会议,先评审设计,以降低日后返工甚至项目失败的风险。相信工作过一段时间,开始主导一个功能模块甚至整个系统的同学,都对设计评审不会陌生。今天偶然看到了一篇亚马逊VP及Distinguished工程师Brad Porter的一...

2019-07-17 13:46:46 279 0

原创 Linux Mint从HDD升级到SSD

Linux Mint从HDD升级到SSD 两年前的黑五,几乎不到五折入手了Thinkpad P50,一款非常不错的个人工作站。可因为当时预算有限,所以买的是“乞丐版”配置,处理器、内存、屏幕、背光键盘都还是次要的,最主要的是没有固态硬盘。之后便一直嫌麻烦没有升级。最近恰逢打折,于是直接买了三星的9...

2019-07-16 13:52:42 351 2

原创 有品位的程序员

本文主要是一本老书《黑客与画家》部分章节的读后感,包括了我个人最最喜欢的两章《Hackers and Painters》和《Taste for Makers》。两个观点深入我心: 不管做什么行业,一定要做一个Maker,方式不重要,重要的是你想不想表达自己的思想。 能站在别人角度写出好代码是一种...

2019-07-01 04:36:44 250 0

原创 ElasticSearch近实时搜索的实现

ElasticSearch近实时搜索的实现 1.近实时搜索 1.1 实时与近实时 实时搜索(Real-time Search)很好理解,对于一个数据库系统,执行插入以后立刻就能搜索到刚刚插入到数据。而近实时(Near Real-time),所谓“近”也就是说比实时要慢一点点。 1.2 近实时的挑...

2019-06-30 03:38:15 2165 0

原创 AWS开源Elasticsearch插件

今天Amazon Web Service发布了Elasticsearch的开源分发包,项目名为Open Distribution for Elasticsearch。其中包括了Security,Alerting,SQL,performance工具等一组套件。因为有幸参与了其中SQL插件的开发,所以...

2019-03-12 07:16:24 1367 0

原创 2019想要完善的几点

最近发现了自己学习时的一些不足,先简单地列在这里。以后发现了好的解决方法,或者更多可以改善的地方,再继续补充。 1.勤做读书笔记 读书笔记是这个博客的主要组成部分,但如何能做好却不是一件简单的事。主要原因就在做笔记的频率。过频则会不断打断阅读思路,纯粹成了为了做笔记而做笔记。而过晚则会导致当时的短...

2019-02-25 14:08:00 374 0

原创 启发式面向对象设计(上)

前一阵子断断续续读完了一本老书《Object-Oriented Design Heuristics》,中文名被译作《面向对象沉思录》。虽然是一本老书,但里面的一些观点对我真的是很新奇,比如对象的动态语义、类之间的关系、关系的拓扑结构、对象树与编译器中抽象语法树的相似等,总而言之非常值得一读。 1...

2019-01-02 15:13:12 354 0

原创 我的2018年总结

转眼又是一年,2018年也要离我们远去。最近半年没有怎么更新博客,落笔有些生疏,但其实一直都零星地写一些。只不过写作时间碎片化,导致好多文章半途而废。趁着这年底最后的几天,赶紧好好总结一下这充实的一年。以下是前几年的总结,记录着自己成长的轨迹: 我的2015技术学习流水账:https://blo...

2018-12-31 04:05:39 1337 0

原创 那些年我错过的Java

最近在看面向对象设计的书,有了一些新的感悟。于是周末闲来无事,想写个小东西练练手。最近一直用Python,所以想回归一下更面向对象、更“静态”一些的Java。正研究怎么升级到Java 9尝尝鲜,结果发现再有80天Java 11都要发布了!真是山中方一日,世上已千年。才不关注Java没多久,已经快成...

2018-08-26 06:34:20 544 0

原创 当我通勤时我该读什么

今年夏天房子到期后搬出了西雅图市区,从此开始了通勤上下班的生活。可能因为公交不太拥挤的缘故,在车上经常能看见捧着书读的人,有的还是厚厚的精装书。坐的每一趟车上平均都会有三到五个,甚至还有没有座位站着也要读书的。本以为亚马逊的Kindle会更为流行,结果好像很少见到,没想到实体书还如此顽强地生存着。...

2018-08-24 12:22:14 664 6

原创 优雅的对象

最近一口气读完了二百多页的《Elegant Objects》。可能因为整理自博客所以排版一般,而且才二百多页定价却40多刀。但读过之后发现超值,甚至还想去买第二卷。作者观点大多比较激进,对自己的理念异常坚定,所以经常使用诸如“绝对不要使用XXX”、“记住XXX,就这样,句号”。但作者绝不故弄玄虚,...

2018-07-16 08:38:19 690 3

原创 在GitHub上轻松搭建博客

从2011年开始正式定期地写文章,最开始在Google AppEngine搭建了Wordpress,几个月后又将文章都转移到了CSDN。时间飞逝,一看自己的历史文章列表发现都快七年整了。CSDN也在进步,美观方面加了各种皮肤,功能方面支持了Markdown。用得时间长了也觉得有很不方便的地方,可能...

2018-07-16 01:43:05 690 3

原创 Haskell带你玩转函数

函数,再简单不过的概念。不管是什么范式的编程语言,都离不开用函数来表达逻辑。而函数式编程,当然核心就是函数。但函数式编程中的函数与其他语言有什么区别呢?本节都带着大家领略一下Haskell中强大的函数。这也是我们最应该从Haskell中学习,如果你觉得Haskell或其他函数式语言中的其他概念都太...

2018-07-01 03:15:10 2942 4

原创 程序员的数学修养

1.什么是数学 按照维基百科上的解释,数学没有准确的概念,它可以笼统地分为纯数学和应用数学。纯数学研究数量(Quantity)、结构(Structure)、空间(Space)、变化(Change),使用各种符号找寻规律,将各种猜想形式化,并证明其真伪。数学的基础包括了:数理逻辑、集合论、...

2018-06-10 07:46:17 1485 4

原创 程序员的理想桌面

最近搬家换了新公寓,地方大了一些,配了一个书桌,于是又开始折腾起了自己的开发环境。之前近一年的时间,连个书桌都没有,基本上处于晚上在床上看看书,白天工作时间有空就整理一下。但经常忙起来就搁浅了,所以写文章的时间也少了不少。现在准备重新弄好自己的环境,继续奋笔疾书:) 1.显示器 关于屏幕大...

2018-06-04 01:13:41 10007 25

原创 X的奇幻之旅

顺应之前《程序员如何学数学》的指导思想,买了不少比较轻松的数学科普书,《The Joy of X》就是其中之一。闲来无事随手拿起,没想到却基本读完了。看似不起眼的一本小书,内容的编排、文笔的轻松令人叹为观止。有的章节让人觉得精妙无比,有的章节又扣人心悬。本文就简单地加以整理,稍微打乱了原书的顺序,...

2018-06-03 07:53:07 1108 0

原创 编程这件小事(续)

经常听人(大部分时候是领导:)说的一句话就是写代码简单,业务/设计才是最重要、最值钱的。个人一直不以为然,这种思想的存在当然肯定是有道理。本文的目的也不是要说代码才是最重要的,那无异于走入了另一个极端。这里只是想说:除非把设计做的非常细致,甚至达到了“能运行”的伪代码的级别,否则我们真的没有资格说...

2018-05-23 02:24:42 1690 4

原创 软件开发复杂度分析

1.软件开发的本质 软件开发的首要难题是什么?需求的收集?技术的选型?项目管理?都没错,但用一个词来总结那就是:复杂度!《Code Complete》中引用了Brooks(没错,就是写出了著名的《人月神话》的那位)论文《No Silver Bullets: Essence and Acciden...

2018-02-01 05:00:58 2493 2

原创 编程这件小事

大家都知道编程很复杂,工作流程包含需求分析、架构设计、代码实现、测试发布等。每一步又都包含了很多学问,比如架构设计要考虑正确性、扩展性、安全、性能等,如果是分布式系统则还要考虑伸缩性、健壮性等等。这样大的一个主题,那本文为什么说编程是一件小事呢?因为要想一下说清楚一个学科是不可能的,大的方面我们暂...

2018-01-18 06:14:50 1367 0

原创 Vim终极指南:所思即所得

关于开发工具方面的书,有两本获得了超高的评价,一本是《Pro Git》,另一本就是本文的主要参考《Practical Vim》,副标题Edit Text at the Speed of Thought更为形象生动——以思考的速度去编辑。这本书中包含了一百多个非常实用的Vim使用技巧,不管你是已经使...

2018-01-05 15:20:35 2172 2

原创 对2018的展望

之前写过一篇《我的2015技术学习流水账》,最近两年因为读研的缘故导致职场的空白期,所以就不做总结(关于读研所学的总结可以参考之前的文章《北美CS求学找工指南》),而是展望一下即将到来的2018年。本文提到的资料书籍都可在《高分编程佳作推荐》中找到,都是高分好书。1.两条战线如果从实习的那年算起,...

2018-01-03 06:01:02 1376 12

原创 Python+Vim:天作之合

1.与Vim的缘分7年的Java开发生涯,一年半Java和Python混合的研究生学习,到现在最近全职Python开发,不知不觉已经半年没碰Java了。从2013年开始从Eclipse转到Intellij,完全习惯了用JetBrain的产品做各种语言的IDE。现在Python开发也不例外,依旧沿用...

2017-12-29 03:33:48 16768 2

原创 设计模式沉思录

最近在读一本超高分的编程语言书《Fluent Python》,网评的高分绝对实至名归。这本书引起了两方面的反思:其一是语言学习方面,Fluent用得非常恰当,流利二字反映出我们在学习任何一门新语言时(不管是编程语言还是自然语言),都试图用旧的(母语的)思维去“扭曲”它而没有做到真正的地道和流利,关...

2017-10-02 02:16:14 1532 2

原创 高分编程佳作推荐

编程方面书籍的Top 10榜单大家可能都已经烂熟于心,TAOCP、GoF、CLRS、SICP、《The C Programming Language》、《Clean Code》、《Refactoring》、《Code Complete》、人月神话、龙书等等,这些都是经过了时间考验、需要反复阅读的经...

2017-09-25 09:09:32 2223 2

提示
确定要删除当前文章?
取消 删除