八月项目与读书笔记

最近由于各方面的原因没有及时的更新博客,似乎又到了一个思绪比较复杂的时期,我其实有很多内容想分享出来,虽然我知道我的博客的markdown功能也没好好使用,而且最开始就打算博客主要是记录自己心得的东西没期待着多少人看所以“坏习惯”也就养成了。
最近在学习Java高级特性、多线程高并发、设计模式、spring与jdk源代码。之前有阵子由于盲目的崇拜所谓的大规模分布式集群等等高大上的东西让自己比较迷茫疲惫,无法熟练的掌握一些基本的东西是很难真正的强大的。也得益于另一篇文章阿里面试回来,想和Java程序员谈一谈。感触颇深,兴趣是最大的驱动力,搜索引擎与各种技术博客有挖不完的宝藏。如果充分利用。
最近做的nodejs,脚本语言编写业务逻辑的确是比较方便,现在很多大公司也逐渐在拓展这一个中间层,用重量级的编译语言做基本的数据平台,让脚本语言编写无状态的业务逻辑,这样可以快速的响应需求的变化,这次也是在项目中深有体会,这次用的框架有express web框架,co为同步转异步的框架,主要避免了回调黑洞。nodejs是采用一种叫异步阻塞的方式充分利用了CPU的的能力,关于nodeJs用了比线程更轻量的运行单位,所以能够获得更高的并发量,很多脚本语言例如lua Python等等都比较适合做接入层,轻量灵活是脚本语言的优势,让适合的工具做适合的事情,不拘泥于具体的技术这才是正确的思路。这次持久层采用的sequelize框架,比较轻量的封装了SQL。分层模型采用的是百度的一套模型(架构师之前在百度工作),apps目录下面可以有多个app,然后是action,page,data,dao。这样的分层,data可以相互调用,其他都是只能向后调用,data是最小的复用单元。大型的系统一般都会采用分割或者分层模型,分层也是贯穿各种计算机软硬件系统的一种思路,是横向的分离各个服务,例如网络协议里的OSI模型甚至是硬件的存储模型也有从CPU寄存器、高速cache、内存、硬盘,都有分层的影子。分割是纵向的切分服务,有利于单独的部署。这次的分层模型最小复用单元是data层。这次由于对js高级特性(例如继承实现与各种内置API)不太熟悉导致无法深入到框架层面去改造项目。sequelize无法像Java mybatis一样自动生成很多DAO,所以这次的node的dao工作量不小,后面我编写了一个基类把基本的DAO函数一次性编写,下面的所有继承即可。这样减少了不小的工作量。关于nodejs层的好处,可以参考这篇文章为什么要用 Node.js。javascript这门语言是Github上提交量最大的语言,在它的领域发展的比较快,当然在传统的领域,在可靠性,稳定性,成熟度,安全性各个方面还是比较难和Java抗衡。因此要理性的看待js的位置。

谈谈最近在看的两本书《spring揭秘》与著名的《Gof设计模式》,spring是非常著名的开源框架,主要提供了IOC service和AOP机制。IOC服务也是一种设计模式,核心就是将对象之间的依赖关系交给容器去管理,这样让程序不关心对象的创建于回收问题,对象的生命周期交给容器去管理。而程序可以设计出松耦合的依赖关系,例如用接口去关联服务,容器动态的注入实现类,这也是利用java多态。说道动态注入实现类就已经涉及到了动态代理的范畴,java是运行时绑定实现类,这是多态性的体现,spring另一个重要能力就是aspect of program切面编程可以尽量的分离与业务不相关的代码,如果IOC让系统能够尽量的低耦合(依赖接口),那么AOP就是让程序更加的高内聚,让每一个模块尽量做它该做的事情,这也是OOD里的单一职责。低耦合高内聚正式系统设计的精髓。这里刚好又迈上了设计模式的大门,之前也聊了很多关于设计模式的东西,设计模式的确是面向对象里解决了关键性的扩展复用的问题,设计模式很多不仅仅是工程与数学问题,甚至是一种哲学问题。分清楚设计模式解决的问题,适用性的权衡是需要足够的前瞻性的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值