自学java有什么书比较好?
《阿里巴巴Java开发手册(正式版)》(V1.2.0版)更新(V1.2.0版)《阿里巴巴JAVA开发手册(正式版)》 - 知乎专栏
这篇最新版本不只是规范汇聚了阿里,更有广大知乎程序猿、工程师、研发网友的智慧结晶。
更偏爱那些能用简短流畅的话,把少壮不努力的程序员所需的基础补回来的薄书,而有些教课书可能很著名,但干涩枯燥,喋喋不休的把你带回到大学课堂上昏昏欲睡,不录。
操作系统与网络的书
《Linux内核设计与实现 第3版》Robert Love用最薄的篇幅,顺畅的文字将Linux内核主要的算法讲清楚了,《深入理解Linux内核》,《深入Linux内核架构》之类厚厚的全是代码,不是专门的内核程序员看这本足够了。
《Linux系统编程 第2版》继续是Robert Love,比起APUE也是以薄见长,专门针对重要的系统调用讲解。
《性能之巅》操作系统的性能调优、监控、工具和方法论,看这本就够了,已经足够厚,可能是书单里最厚的一本。
为什么阿里巴巴J***a开发手册中不允许魔法值出现在代码中?
这个案例描述是有问题的。故障的原因不是魔法值,而是拷贝错了且没有测试。不允许魔法值只是最大限度的避免J***a编码人为因素导致的错误,但是跨语言的调用还是可能出错。
因为魔法值就像魔法一样,没人能懂啊。
比如我写一段程序
if (var == "2"){
} else if(var == "5"{
}
你看到这个代码能够知道 2 和5 分别代表什么意思吗? 是不是很懵。
写这样的代码,当时可能记得是什么意思,如果几个月后,后者作者离职了,
其他人再维护这样的代码,就搞不懂了。
对于任何语言这一点都是互通的。
如果这个字面值是一个全局缓存中某个常用数据的键,这个常用数据在系统很多模块都用到了。
当从全局缓存中访问这个数据时,如果键没有预先定义,那么复制10次都不出错的可能会增大。
当然,这不是最重要的问题。更重要的是,如果有一天项目经理或者其他人觉得这个名字有问题,给改了个名字。那么,10个使用的地方,漏改的可能会更大。
还有更麻烦的是,当有人给缓存放另外的值得时候,可能不记得这个名字的缓存已经被占用了,然后把自己的值放进去了。这时候,使用这个缓存的其他模块就要不得不接受,缓存已经不是自己想要的事实。
使用预先声明的常亮能极大的避免这两种事情的发生。当然,不能完全避免,毕竟会有人不按规范来。
阿里巴巴的开发手册是他们自己开发过程中经验的总结,不能说是最好,但一定比大多数项目小组的规范要好很多。
有人说阿里的网站是php,但阿里的系统服务用的是Spring Cloud做的是服务集群。这部分完全是J***a实现的,阿里还是Apache基金会的重要成员,阿里自己重写了MySQL并应用在双十一,这些都不胜枚举。
魔法值一直都是编程的一大难题。我在开发中最讨厌别人用魔法值,因为我需要用这个值的时候,只能手动***或者手敲(很容易出错)。如果用静态常量我可以通过IDEA的代码提示获取到这个值,这样一来 方便很多了啊。