13 cdai

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 419

Redis之父的“退役”感言

Redis之父Antirez今早发布了一篇文章,题为《The end of the Redis adventure》。多年以前深入学习过Redis,这个最流行的缓存解决方案。当时惊叹于其近乎“变态”的性能表现,简直就是一个性能猛兽。而更令人印象深刻的是,在优异的外在表现背后,其代码质量也同样优秀。当年又不少的文章和书籍,都是关于Redis源码解析的。因为工作的缘故,我也写了不少文章,对Redis这个好产品还是有些怀念的。出于这些缘由,今天特意仔细读了一下Redis之父的这篇博客。文章虽然不长,但有的地方还

2020-07-02 01:59:59

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

测试驱动开发下的软件生长1.前言最近读完了《Growing Object-Oriented Software, Guided by Tests》,这本在豆瓣上高达9.5分的好书。事实证明,群众的眼睛是雪亮的。除去中间那个很长的实际项目案例没耐下心来看完,其他部分我都看了不止一遍。虽然还没有读过那本名气很大的《Test Driven Development: By Example》,但到目前为止,这本书已经成了我心中测试驱动开发的“圣经”。读完全书,印象深刻的地方实在太多了,比如快速反馈的重要性、软件系

2020-06-02 13:11:43

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

1.前言《如何解题》(《How to Solve it》)是波利亚的经典著作,列举了很多数学问题,总结了解决问题的主要思路和步骤,即定义问题,设计方案、实现、验证。虽然全书主要是以数学问题为例,但其思路适用于生活和学习的其他方面。比如在软件开发领域,我们通常也是按照这四步。首先收集客户需求、找到客户的痛点和要解决的问题,然后进行产品设计、架构设计和每个模块的详细设计,接下来就是编码实现和最终测试验证了。这四步法的确非常有效,然而很多时候,现实世界的问题与纯粹的数学问题还是有很大差别的。最近读了一些其他这

2020-05-29 14:32:27

三本有趣的科普书

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 two numbers with 100355 decimal digits each, snuggling in the darkness.所谓Twin Primes就是两个紧邻的质数,比如11和13,17和1

2020-05-29 14:31:28

数据库引擎学习导读

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

2020-03-28 11:36:44

迟来的2019年总结

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

2020-01-20 09:54:05

GitHub Action开启自动化

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

2019-11-16 14:23:18

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

Grammarinator是一个基于ANTLR 4的grammar文件,自动生成语句的开源项目:https://github.com/renatahodovan/grammarinator。从语言的grammar生成语句或者所谓的Fuzzy Testing,对软件测试很帮助。就像Grammarinator的README里所说,它已经帮助一些项目发现了很多缺陷。本文通过一个简单例子,让大家先了解一下...

2019-10-28 03:52:32

深入学习关系理论

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

2019-10-24 14:01:22

疯狂的罗素

原书《Logicomix》,中文名《罗素的故事》或《疯狂的罗素》。讲述的是逻辑学家、哲学家罗素追寻真理的故事。以罗素的回忆为主线,穿插了许多史实和一些虚构的情节,比如罗素与一些人物的会面和对话。主要内容上与《逻辑的引擎》类似,毕竟如罗素悖论、哥德尔不完备性等大事件是一定会提及的。不同的是轻松有趣的漫画风格,而且是制作漫画的画师和数学家、演讲中的罗素、以及罗素回忆的故事三重场景不断转换,像盗梦空间一...

2019-10-13 06:36:18

超越离散数学

早些时候曾写过一篇程序员的数学修养,介绍了一些程序员可以学习的数学分支。虽然与编程有一定的相关,但自学起来也不是一件容易的事。所以本文再推荐一些专门为程序员写的数学书,可以用作入门。有了一定基础知识,可以再根据需要去学习和选读一些更偏向数学的书。说到程序员数学,可能第一反应就是离散数学,再就是算法。国外的几本经典教材可能大家也都耳熟能详,所以本文会侧重一些不是很热门或者新出版的书籍。1.抽象代...

2019-10-13 06:03:48

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

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

2019-10-12 13:47:13

编译器中的语义分析

最近一直在看编译原理方面的书,之前着重研究过词法解析和语法解析,这一次因为工作原因比较侧重语义分析。简单来说,语义分析是发生在词法和语法解析之后,输入是Concrete Syntax Tree又名Parse Tree。语义分析器对Parse Tree进行分析,同时可以产生Abstract Syntax Tree(AST)。AST即忽略了语法细节的语法树,可能大家更熟悉一些。AST一般作为编译器前端...

2019-08-27 13:34:35

逻辑的引擎

最近利用通勤时间又读完了一本好书,《Engines of Logic——Mathematicians and the Origin of the Computer》。可能由于作者本身也是数学和计算方面的牛人,所以这本书并不那么容易读。一是字里行间可以立即感受到的不舒服,即句式有些太复杂,随便翻开一页就能发现很多可以用作GRE阅读理解的长难句。二是每一章都大概用了至少一半的篇幅,对年代和人物生平进行...

2019-07-20 13:14:19

如何高效地做设计评审

设计评审(Design Review),即在真正开始开发之前,组织一次或多次会议,先评审设计,以降低日后返工甚至项目失败的风险。相信工作过一段时间,开始主导一个功能模块甚至整个系统的同学,都对设计评审不会陌生。今天偶然看到了一篇亚马逊VP及Distinguished工程师Brad Porter的一篇博客,讲述了设计评审容易陷入的问题以及他主张的一些最佳实践。也许并不适用于所有公司和项目组,但不妨一...

2019-07-17 13:46:46

Linux Mint从HDD升级到SSD

Linux Mint从HDD升级到SSD两年前的黑五,几乎不到五折入手了Thinkpad P50,一款非常不错的个人工作站。可因为当时预算有限,所以买的是“乞丐版”配置,处理器、内存、屏幕、背光键盘都还是次要的,最主要的是没有固态硬盘。之后便一直嫌麻烦没有升级。最近恰逢打折,于是直接买了三星的970 Pro固态硬盘,又从联想官网买了支架,准备折腾一下。1.拆机安装首先要感慨的一点就是这SS...

2019-07-16 13:52:42

有品位的程序员

本文主要是一本老书《黑客与画家》部分章节的读后感,包括了我个人最最喜欢的两章《Hackers and Painters》和《Taste for Makers》。两个观点深入我心:不管做什么行业,一定要做一个Maker,方式不重要,重要的是你想不想表达自己的思想。能站在别人角度写出好代码是一种天赋,即同情心和同理心,它远比想象的难,甚至无法后天习得。1.创造者们黑客与画家,看似没有什么...

2019-07-01 04:36:44

ElasticSearch近实时搜索的实现

ElasticSearch近实时搜索的实现1.近实时搜索1.1 实时与近实时实时搜索(Real-time Search)很好理解,对于一个数据库系统,执行插入以后立刻就能搜索到刚刚插入到数据。而近实时(Near Real-time),所谓“近”也就是说比实时要慢一点点。1.2 近实时的挑战对于一个单机系统来说,这也并不容易实现,因为还要保证数据的持久化,还要利用缓存等技术加快数据的访问...

2019-06-30 03:38:15

AWS开源Elasticsearch插件

今天Amazon Web Service发布了Elasticsearch的开源分发包,项目名为Open Distribution for Elasticsearch。其中包括了Security,Alerting,SQL,performance工具等一组套件。因为有幸参与了其中SQL插件的开发,所以在这里打一打广告,欢迎大家Fork!官方介绍:https://opendistro.github.i...

2019-03-12 07:16:24

2019想要完善的几点

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

2019-02-25 14:08:00

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。