《Java工程师修炼之道》读书笔记-Part 1
持续学习
敢于“逃离舒适区”、敢于使用新技术,这样才能让自己具有持续的学习兴趣,促进自己的持续进步。
知识收获整理成体系,或者融入自己的知识体系中。
下面是整理的部分感兴趣的知识点。
1. 分布式数据库中间件、产品——sharding-jdbc、mycat、drds
可以看出sharding-jdbc作为一个组件集成在应用内,而mycat则作为一个独立的应用需要单独部署,drds则是阿里云的一个独立产品,不过需要结合rds一起使用。
从架构上看sharding-jdbc更符合分布式架构的设计,直连数据库,没有中间应用,理论性能是最高的(实际性能需要结合具体的代码实现,理论性能可以理解为上限,通过不断优化代码实现,逐渐接近理论性能)。同时缺点也很明显,由于作为组件存在,需要集成在应用内,意味着作为使用方,必须要集成到代码里,使得开发成本相对较高;另一方面,由于需要集成在应用内,使得需要针对不同语言(java、C、PHP……)有不同的实现(事实上sharding-jdbc目前只支持java),这样组件本身的维护成本也会很高。最终将应用场景限定在由java开发的应用这一种场景下。
2. 软件开发的核心原则
Done is better than perfect.
在面对一个开发任务时,最佳的思路就是先把东西做出来,再去迭代优化。
Choose the most suitable things.
要选择最合适的技术,而不是盲目求新。
在互联网的开发工作中,敏捷开发是比较受推崇的开发方式。
所谓的敏捷开发,即快速实现原型,然后快速迭代。
项目工具:禅道 --是国人开发的一款项目管理工具,但是其免费版功能有限。
3. 负载均衡
LVS 是最流行的4层负载均衡软件,HAProxy 是另一个既支持4层,又支持7层负载均衡软件,Nginx 则是7层负载均衡最流行的解决方案。
4. Java 编程知识
集合类是Java语言非常精华的部分,包括HashMap、ArrayList、LinkedList、HashSet、TreeSet以及线程安全的ConcurrentHashMap、ConcurrentLinkedQueue等线程安全集合。
在使用基于数组的集合时,如ArrayList、HashMap时,必须指定初始化大小,否则大小不足时,会成倍扩容。
DateFormat 类以及其子类,都是非线程安全的,在多线程环境下不能使用单例。
主流构建工具-Maven
Maven 基于POM(Project Object Model)进行。一个项目所有的配置都放置在pom.xml文件中,包括定义项目的类型、名字、管理依赖关系,定制插件的行为等。
Maven 使用