《码农翻身》读后感第二天

     今天看了几个小时,直接看了三分之一多。中间主要讲到了多线程的锁,递归算法,java语言的发展过程,虚拟机(栈和堆,java文件编译过程,gc机制),数据持久化框架ejb,ibitis,hibernate,jdbc,以及数据库的事务,分布式事务和利用消息队列实现数据的最终统一性。jsp的发家史,页面的动态代理,自定义注解,泛型的引入和实现,日志系统的实现,数据的序列化。

     当中大多数知识说的比较浅吧,像虚拟机,只是大概的讲了下类的加载过程,感觉对于栈的描述有点过多和重复。堆只是稍微提了下。还有持久化的东西,重点是介绍了jdbc的实现过程,里面的代码也很清晰。

      递归算法,尾递归——当递归调用的是函数中最后执行的语句,并且它的返回值不属于表达式的一部分时,这个递归就是尾递归。用阶乘算法为列;int  A(int n,int result){  if n==1?return 1:return A(n-1,n*result)  }.尾递归的优点;编译器会生成优化的代码,复用栈桢;

     事务特性:1.原子性,2.一致性,3.隔离性,4.持久性。分布式事务(JTA):主要是通过一个全局的事务管理器来管理不同数据库的操作。当需要跨数据库操作时,管理器向各个数据库发出准备消息,让本地数据库准备好执行操作,锁住资源,记录日志,但不能提交数据。准备完毕再通知管理器OK。当所有数据库都准备完毕,管理器再向数据库发出提交请求。数据库再提交数据。总结就是分为两个阶段,准备和提交。但是这两个阶段都必须先通知管理,再由管理器发出下一步的命令。初步看来可以实现数据的一致性,但是性能反面确不让人满意。因为在和管理器交互的过程中,可能什么网络会中断或者超时,导致接收不到命令。这样的问题还不好解决。于是就出现了,消息队列来代替分布式事务。在本地数据库建一个事务列表,需要执行跨数据库操作时就在事务列表中新增一条数据。然后用消息队列每天定时查询事务列表中的需要执行的事务。以达到数据最终的一致性。

      总的来说这本书偏理论性的东西较多,都是用故事的形式描述出来原理,不会刻意强调。知识点需要靠自己理解和捕捉。估计明天不出意外可以全部看完,确实是没想到这么快的。但是看到现在感觉学到的东西不多。估计还会再重新读一遍。

你可能感兴趣的:(读书感悟)