Better

Ethan的博客,欢迎访问交流

读《码农翻身》有感

哈哈,这本书的名字是不是很喜感,不过话说回来,这本书是我在当当购物时,凑单买的,但很明显这本书翻身做主人了,拿到这本书,我就感觉自己捡到宝贝了,于是以最快的速度看完了。

前言

为何对这本书如此喜爱呢?因为他似乎很懂我,知道哪些是我想知道却苦于没有找到合适资料的内容。同时通过故事的方式讲解技术内容,看起来不枯燥。

看到自己熟悉的内容,会由衷的感叹就是这样的,对自己好奇但不是十分了解的内容,会有原来如此的感觉,对于完全生僻的内容,有有种被拨开迷雾的感觉。

接下来稍微总结一下自己影响深刻的点吧。

计算机世界

这部分内容,可以说绝大部分是大学操作系统的内容,大学的时候不怎么感兴趣,只能工作之后慢慢补了,看了之后才发现原来我对操作系统还是十分感兴趣的。是工作改变了我,还是当初的老师和书本不对胃口呢,那就不得知了。

深入讲解了线程、TCP、CPU、进程、分时系统、分段分页、文件、硬盘、总线与端口。

在这一部分,可以了解到操作系统是如何一步一步提高性能的,对局部性原理影响十分深刻。以及CPU、内存、硬盘之间如何缓解速度不匹配问题的。

接下来可以看到关于数据库的发展,如何实现并发访问且保证数据安全一致。影响最深刻的是通过Undo日志实现事务操作的。

讲述了机器语言到汇编语言到高级语言的发展。

讲述了为什么尾递归能提高递归的性能

Java帝国

Java编程作为自己大学花时间最多且十分喜欢的语言,由于某些原因却走向了前端,心中还是有不少懊恼之处的,不得不说这一部分内容看起来这么亲切。

内容讲述了Java的发展,比如定义JDBC规范解决持久化问题,如何实现分布式事务,以及如何通过消息队列实现数据最终一致性、讲述了JSP如何被前端技术打败。

关系动态代理影响深刻,由于对比JavaScript动态语言,就更加理解Java静态语言的特性了,Java不支持动态性,不能在运行时修改一个类,导致不能用声明的方式来编程。但对于一些通用需求比如

  • 某些函数调用前后加上日志记录
  • 某些函数加上事务支持
  • 某些函数加上权限控制

我们希望这些通用功能不要和业务功能代码写在一起,可以看到Java是如何通过面向接口编程特性,提供动态代理技术解决这个问题的。

注解:在使用Spring和Mybatis时经常用到,在理解了注解出现的背景,因为使用注解,配置靠近代码,容易阅读,容易修改,就更能感受Java的发展了,在Java中,配置文件都采用XML,通过使用注解可以做一部分注解的工作,具体根据实际情况而定。

泛型:这个东西就有点意思了,当初面试被问到过,为什么需要泛型,看了这部分后,那些记忆就一下子回到了脑海中。

如果不需要使用泛型限制,如果往list中添加不同类型数据时,取出的时候还得做强制转换,不然很容易出错。这会导致一个问题,这会增加使用者的责任,编译器也无法帮忙,在运行时才会抛出Class Cast异常。

通过学习日志系统,了解到一个成熟的日志系统应该具备怎么样的功能。

通过学习序列化,XML、JSON,作为网络数据传输,懂得了其各自的优缺点。

在这里第一次真正了解到什么是悲观锁(synchronized),什么是乐观锁(CAS),更多了解到乐观锁是如何实现高效且安全的。

Web世界

这部分内容真的漫漫都是干货,看的停不下来!

在看本书之前,看过很多博客讲解HTTPS,但是看过这本书讲解HTTPS,才发觉,那些都是垃圾,这里真的把HTTPS内容的角落的磨平了。在攻与防之间是如何博弈的。学习对称加密,非对称加密,信息摘要,数字签名。

还有就是SSO单点登录,这个我也是很熟悉哇,在大学的时候还下载过极客学院的视频,那时候听起来晦涩难懂,但是看完这个之后,对原理真的就都懂了,检查目前公司系统,都只是将所有系统都限制在一个顶级域名中,通过不同的二级域名管理,然后通过共享redis进行状态管理,如果日后能实现SSO,肯定很酷!

还有就是token,之前做微信公众号相关的实现,怎么这么多的token管理,还有app_id和app_secret,看到这里就都懂了,同时token有了更加深入的理解,在web安全中扮演的十分重要的位置哇。

高可用:一直是我很想了解的内容,但是一直没有机会,第一之前呆的是小公司,无法提供对应的场景,第二和自己目前从事前端工作,但是对于实现一个高稳定的系统,一直都是我想学习的地方。

在这里讲述了从Nginx,Tomcat,redis、mysql是如何一步步通过集群和master-slave实现高可用的。

代码管理

这一部分影响最深的是教育自己:对于项目中的痛点,一定要深入思考和实践,想办法优化和解决。如何成为大神呢

大部分人只会抱怨项目无趣、没有挑战,遇到问题也只会安于现状。只有少数人会发现工作中的痛点,并且真正动手解决它,给公司带来价值。这是提高自己,让自己和别人区分开发的重要方法

理解了单元测试和对代码高要求的重要性,可能就是你的一段烂代码,导致一个烂系统的产生而不可收拾

一旦开了一个恶劣的先例,时刻在诱惑着程序员们:大家不要有心理负担了,以后想怎么改就怎么改,反正已经开始孵腐化了

单元测试,不仅是为了当时开发时的测试,更是为了日后自己和他人迭代代码时给予信心

作者总结

这部分内容更多是一个前辈和一个后辈想说的话。

凡事必先骑上虎背

上面这句话是我感触很深的话,我就是那个内向的程序员,希望把自己修炼的尽善尽美,让自己足够优秀才稍微能增强那么一点点信心,事实证明你要相信自己,你已经足够优秀,凡事必先骑上虎背,勇敢的迈出去,努力的去争取一下,你就会发现自己登上了更高的台阶。

潜规则:这个词有点意思,但更多是对于计算机行业,那些重要的被一直在使用的原理和规律,比如下面这些

  • 局部性原理
  • 缓存:本质原因速度不匹配
  • 抛弃细节:抽象
  • 只和邻居打交道:分层
  • 异步调用
  • 分而治之:将一个规模比较大的问题分解为多个规模较小的子问题

对于技术的追求要有足够的好奇心,同时扎实基础,要去探究一门技术的本质,光学会使用是不行的,不但要知道How,还要知道Why。学会培养自己的抽象能力。

作者提到一个很好习惯,写作,很高兴自己这个习惯还是坚持的不错的,但是有个缺点是质量不高,同时自己的观点不多,主要是资料的整理,希望通过自己的努力可以为自己发声。

读者总结

我总结了自己工作之后的态度,一开始比较封闭,后面开始接触别人写的博客,但是最近发现高质量的有,但是不多,最近开始喜欢上看书。

读书真的是好习惯,而且要读经典书,因为选择书也很重要。可惜自己这个觉悟来的有点晚,大学的时候有这个觉悟好了,那么多资源被自己浪费了,但是现在的我会努力的。

这本是帮助我对计算机世界有了一个更深入的认识,其实你看是神奇的东西,都没你想的那么难,不要浮躁也不要气馁,你都可以做到!



留言