技术琐话2017-11-26

日常的工作学习中,经常会看到好的知识点,对自己有提示的一句话,或者是自己突然想通了一件事情。决定还是以博客的形式记录下来,以“技术琐话”作为主题。

  1. The interesting thing about performance is that if you analyze most programs, you find that they waste most of their time in a small fraction of code. If you optimize all the code equally, you end up with 90 percent of the optimizations wasted, because you are optimizing code that isn’t run much. The time spent making the program fast, the time lost because of lack of clarity, is all wasted time.《重构》一书的一段话,也是不要过早优化的意思,即在不确定这段代码真的会被频繁调用、真的是系统的性能瓶颈之前,没必要花时间优化此处的性能。

  2. 这句话揭示了成为技术专家的一个关键特质: 理解一个系统应该如何工作并不能使人成为专家,只能靠调查系统为何不能正常工作才行。(From SRE ,by Brian Redman)

  3. 技术书籍的出版门槛越来越低,该如何识别是否是一本烂书呢?在我自己看来,英文书籍质量远远好于中文书籍,翻译的版本一般来说质量也不错,不过作为一个互联网从业的技术人员,能够直接阅读英文原版是最好不过的。而对于中文书籍,如果是以公司名义或者书的序多于3篇,是一本烂书的概率非常大,写推荐语、写序的人名头越大,并不代表这本书的质量有多好。此外,现在某sdn专家真的是门槛低到不行,挂这个名头出的书更要慎重选择。对于InfoQ推荐的书,倒是可以值得一读。

Spring注解概览

从Java5.0开始,Java开始支持注解。Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解。相比起之前使用xml来配置Spring框架,使用注解提供了更多的控制Spring框架的方式。

现在越来越多的项目也都在使用注解做相关的配置,但Spring的注解非常多,相信很多注解大家都没有使用过。本文就尽量全面地概括介绍一下Spring中常用的注解。

有效解决问题

来自于内部的一次培训,主要讲述了如何有效地解决问题,包括识别问题、描述问题、分析问题、找出方案、决策问题等。

Java9来了

2017.9.21,Java9终于正式发布。其带来了诸如模块化、REPL环境、集合工厂方法等一系列有用的新特性。本文列出一些链接,可以通过阅读相关的内容来了解学习Java9。

官方资料

第三方资料

[译]Java中9个处理Exception的最佳实践

在Java中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。这也是绝大多数开发团队都会制定一些规则来规范对异常的处理的原因。而团队之间的这些规范往往是截然不同的。

本文给出几个被很多团队使用的异常处理最佳实践。

谈谈架构

之前开头的《架构设计原则》一文一直没有把坑填上。而最近在公司内部做了一次架构交流/培训,把架构的概念、架构的形式、架构设计原则都做了阐述,正好算是对此文的完成和补充。

PPT观看

[译]在Java中提升函数以更好地“函数式”编程

Java8中的Stream和Optional给我们带来了函数式编程的乐趣,但Java仍然缺少很多函数编程的关键特性。Lambda表达式、Optional和Stream只是函数式编程的冰山一角。这也导致了varvrfunctionlajava这些类库的出现,他们都源于Haskell这个纯函数式编程语言。

如果想要更加地“函数式”编程,那么首先要注意的是不要过早的中断monad(一种设计模式,表示将一个运算过程通过函数拆解成互相连接的多个步骤。只要提供下一步运算所需的函数,整个运算就会自动进行下去, Optional、Stream都是monad),比如,很多人经常会在还不需要的时候就调用了Optional.get()和Stream.collect()提前终止monad。本文主要讲述如何通过提升方法来使得代码更”函数式”。

《Java工程师修炼之道》内容概览

最近几个月由于工作和正在筹备《Java工程师修炼之道》一书的原因一直没有写新的文章。不过,忙里偷闲,自己陆续读完了《格鲁夫给经理人的第一课》、《架构真经》、《聊聊架构》这几本书,收获了不少干货,之前自己挖坑的《一些架构设计原则》一文后面会尽快填上。本文则先介绍一下《Java工程师修炼之道》一书^_^。

《Java工程师修炼之道》一书主要内容是Java后端工程师必备的基本技能大纲。内容主要来自于公司内的后端工程师学习计划、自己以前的一些博客文章和自己从业以来积累的知识库。但由于后端工程师的每一个技能点都具有一定的深度,都不是一两篇文章就能讲述清楚的,因此本书不可能对每一个技能点都讲的特别透彻。

本书可以看做是一本Java工程师的入职指南,也可以看做一本串联Java后端技能点的参考手册。对其中每一个技能点的学习,推荐通过他们的官方文档来深入学习,此外,本书也给出了自己觉得有价值的参考学习书籍。