年度总结已经两年没写了,今年又有冲动来重拾这份习惯,希望能持之以恒。这两年,呆了两家互联网公司,见识广了,思路也自然开阔些,回头看看以前的年度总结,变化确实挺大的。总结还是延续之前的套路,先缅怀过去,再继往开来,今年开始采用OKR的方法来量化自己的各项目标,争取可以来个年中评估,跟踪一下所有目标的进度。
从Java6到Java8: 你应该知道的JVM新特性
前言
目前公司内部正在推动Java6到Java8的升级,团队内部的部分应用也已经完成升级,这篇文章主要介绍JVM层面从java6到java8有哪些重要的变化。一线开发人员可能会觉得,不对啊,我了解java7和java8新引入的语言特性不就完了,JVM新特性对我日常开发工作貌似没有什么直接关系啊。可是作为有追求的程序员,我们做到了知其然,要是再能做到知其所以然的话,遇到问题时岂不是能更淡定从容些。看完此文,可以帮你回答以下几个问题:
- 动态类型语言在Java7之前和之后分别是如何在JVM上运行的?
- lambda表达式是如何实现的?
- 新一代垃圾收集器G1有哪些优势?
- 永久代为什么要被移除?元空间有什么不同吗?
Windows转Mac上手指南
说在前面
这是一篇写给刚从Windows转到Mac的开发人员的文章,因为团队有很多小伙伴在年后换了Mac(三年前公司估计有点穷),环境搭建和使用上有不少问题,所以整理一个列表,也算是我自己在Mac上的最佳时间了吧。
一、如何培养Mac思维
你需要抛弃:
- 磁盘分区概念
- 文件夹整理洁癖(少数重要文件除外)
- 对GUI应用程序的强依赖
- 对鼠标的强依赖
你需要习惯:
- 键盘, 触摸板, Command键
- 文件搜索
- 命令行
- 高效编辑器
聊聊并发,Part 1:IO模型
一、说在前面
前段时间略读过《七周七个并发模型》这本书,收获良多,但也一直没能整理出一份学习心得。正逢新换了公司,进入互联网行业,技术氛围那是相当的浓重啊,组里这段时间流行node.js,那货处理高并发IO很牛逼,为什么呢?因为异步IO、事件驱动、Event Loop。感觉自己明白了,其实乍一想,还是不明白,想得越多,脑子里反而充斥着一堆稀里糊涂的概念:高并发,阻塞/非阻塞IO,同步/异步IO,单线程/多线程/多进程。嗯,是时候理理头绪了。因此就有了这篇文章,我试图从Kernel层的IO开始向上来解释高并发IO这件事。
Metaprogramming Ruby, Part 2: Object model and Method in Ruby
说在前面
这篇文章与这个系列的开篇文章隔了很久了,一直也没有能够整理出来,今天终于搞定一篇,希望尽早完成这个系列吧。上篇比较宏观地介绍了Ruby的元编程,从这篇开始,我们将进入Ruby的世界,探索哪些元编程特性。我们会先来介绍Ruby的对象模型和方法,对象模型是整个Ruby语言的基础,也为元编程带来了巨大的灵活性。而Ruby中的方法在对象模型的基础上提供了强大的动态操纵的能力,能够方便地进行元编程。
Learning Haskell: a pure functional programming language
说在前面
最近,Java写恶心了,计划重新捡起丢在一边很久的Scala,但是,Scala是个大怪物,几年前刚接触Scala的时候,认认真真地读过一遍原版《Programming in Scala : A Comprehensive Step-by-step Guide》,但是完全迷失在一堆难于理解的概念中。回头细想,本质上还是缺乏函数式编程的功底。为了更好地理解函数式编程的核心理念,我就用Haskell这门纯粹的函数式语言作为起点,开启我的重拾Scala之路。
Deep in JUC, Part 1: 深究HashMap以及ConcurrentHashMap的一致性问题
HashMap与ConcurrentHashMap
众所周知,HashMap无法做到线程安全,在某些特定的场景下甚至会出现死循环的情况。而ConcurrentHashMap是HashMap的并发版本,它能够做到线程安全。
4 ways to implement LRUCache in Java
Deep in JVM, Part 1: JVM Runtime Memory Structure
说在前面
最近重新开始读《深入理解Java虚拟机》这本书,重新回顾JVM的一些细节,并且用一个系列的blog文章帮助自己整理思路也方便日后温习。说起Java,很多人开始不屑一顾,但是对于JVM,偏见估计会少了些,因为现在的JVM已经是大家的JVM了,Groovy、Scala、Clojure、JRuby等遍地开发,JVM家族一片欣欣向荣,所以理解JVM是如何工作的必然对开发者有莫大的好处。这一篇就先从JVM的内存结构讲起。
Metaprogramming Ruby, Part 1: Introduction
说在前面
最近在研读《Metaprogramming Ruby》这本书,爱不释手,简直要拍案叫绝了。这本书在很多点上都完全颠覆了我对Ruby肤浅的理解。所以,想开Metaprogramming Ruby系列来进行记录总结,感兴趣的童鞋直接读原书就好,我这里只是会简要概括书中的知识体系。
这一篇作为全系列的开篇,主要来对一些基本概念做些介绍,相信很多人都跟之前的我一样,觉得元编程是一种高大上的技术,但它具体是什么,怎么来实现的,应该用在什么样的场景,对于这些问题很可能一头雾水,那我们就带着问题一起进入元编程的世界吧。