我的第一个玩具语言 JCScheme 问世了

记得在上大学那会,就想着能够实现个自己的编程语言。由于之前技能不足,一直没敢去尝试。现赶上国庆七天假期,SICP 看的也正起劲,终于鼓起勇气,把这个坑给填上了。甚是开心。
实现 JCScheme 这个语言前后大概用了一天时间,功能虽然简单,但是“麻雀虽小,五脏俱全”,编程语言中最基本的类型、作用域、函数都涵盖了,以后在扩展时也很方便。
如果你和之前的我一样,想实现一门语言但又苦于无从下手,那么你应该花半个小时看看本文,相信你肯定会有所收获。
本文没有复杂难懂的编译原理知识,没有学过编译原理的人不要害怕。

阅读更多

Java WeakHashMap 源码解析

前面把基于特定数据结构的Map介绍完了,它们分别利用了相应数据结构的特点来实现特殊的目的,像HashMap利用哈希表的快速插入、查找实现O(1)的增删改查,TreeMap则利用了红黑树来保证key的有序性的同时,使得增删改查的时间复杂度为O(log(n))

阅读更多

SICP 第二章总结

到今天为止终于把第二章看完了,相比于第一章,感觉难点少了些,这章主要是通过大量例子(主要有图形语言、区间运算、符号求导、集合的表示、通用型算术运算)来熟悉构造数据抽象的相关技能。下面来回顾总结一下第二章。

数据抽象的意义

在第一章中,只是进行了一些数值演算,这是比较简单的数据,并没有体现出数据抽象的意义,本章一开始就通过有理数的运算这个例子引出了数据抽象的意义。
数据抽象的基本思想,就是设法构造出一些使用复合数据对象的程序,使它们可以像操作数值等简单数据类型一样操作“抽象数据”。通过构造复合数据(与构造复合过程类似)可以达到下面的效果:

阅读更多

Java LinkedHashMap源码解析

上周把HashMapTreeMap这两个Map体系中比较有代表性的类介绍完了,大家应该也能体会到,如果该类所对应的数据结构与算法掌握好了,再看这些类的源码真是太简单不过了。

阅读更多

Java TreeMap 源码解析

上篇文章介绍完了HashMap,这篇文章开始介绍Map系列另一个比较重要的类TreeMap
大家也许能感觉到,网络上介绍HashMap的文章比较多,但是介绍TreeMap反而不那么多,这里面是有原因:一方面HashMap的使用场景比较多;二是相对于HashMap来说,TreeMap所用到的数据结构更为复杂。

阅读更多

Java HashMap 源码解析

继上一篇文章Java集合框架综述后,今天正式开始分析具体集合类的代码,首先以既熟悉又陌生的HashMap开始。

阅读更多

Java集合框架综述

最近被陆陆续续问了几遍HashMap的实现,回答的不好,打算复习复习JDK中的集合框架,并尝试分析其源码,这么做一方面是这些类非常实用,掌握其实现能更好的优化我们的程序;另一方面是学习借鉴JDK是如何实现了这么一套优雅高效的类库,提升编程能力。

阅读更多

SICP 第一章总结

最近两个月除了工作之外,业余时间一直在研习sicp这本经典书。关于这本书的讨论有很多,像老赵写过SICP的书托,我觉得与其讨论这本书有没有读的价值,不如花上些,随手翻翻,如果感兴趣,就读下去;否则直接忽略即可。计算机理论发展到了现在,有太多太多经典需要我们去读了,恐怕我们这一辈子都无法读完,为什么不找你感兴趣的来读呢?

阅读更多

回顾来有赞的这三个月

好久没写博客了,上一篇还是写在三个月前,当时应该是在有赞客满毕业后,现在转正也将近半个多月了。本来想的是每个月至少一篇原创技术文章的,没想到坚持还没一年就“食言”了。

时间都去哪了

阅读更多

我来有赞了

今天晚上终于有时间来写写博客了,想想决定从ucloud离职到现在,差不多一个多月了。关于离职的原因,一句话两句话也说不清楚,离职这事也纠结了好久,正好顺着年后跳槽高峰期,从上海跳到了美丽大杭州。

跳槽是件折腾的事。从投简历,再到搬家,都是耗时耗力的事。找合适的工作,真是好比找个女朋友,两方都看顺眼才行。不过,我觉得,还是比较幸运的,找到了有赞——一家做微电商的创业公司。

阅读更多