第三章讲了一些通用的方法。看的时候很快,记笔记的时候慢了
0x01 equals方法应该如何写
equals 方法是对象判断是否相等的方法,如果一个类具有多实例的需求时,可以重equals方法来判断两个对象是否相等。
除非:
- 类的每个实例都是唯一的
- 不关心实例是否逻辑上相等
- 父类已经重写了equals
- 类是私有的,equals方法永远不会被调用
第三章讲了一些通用的方法。看的时候很快,记笔记的时候慢了
equals 方法是对象判断是否相等的方法,如果一个类具有多实例的需求时,可以重equals方法来判断两个对象是否相等。
除非:
- 类的每个实例都是唯一的
- 不关心实例是否逻辑上相等
- 父类已经重写了equals
- 类是私有的,equals方法永远不会被调用
Thinking in java 太厚了,我不想看,所以先拿EJ开坑。
Effective Java 和 Thinking in java都是java基础评分超高的书,所以有必要看一看。
Effective Java这本书被java之父推荐,所以特意买了本正版。
我很希望10年前就拥有这本书。可能有人认为我不需要任何Java方面的书籍,但是我需要这本书。
——Java 之父 James Gosling
当然,这本书是2009年出版的,已经过去N多个年头,所以带着“批判”的眼光来瞻仰这本巨作。
上次Ansible自动部署入门,最后写了点playbook的项目,了解了一些如task,template,vars等简单的用法。但是真正的Ansible项目并不是通过主机来分Roles的,而是一个Ansible管理多台主机,用Roles来区分项目。
所以这一次,我带来了不一样的使用姿势。
因为公司想对项目逐步转向为自动化部署,所以安排我和一位大佬做起了运维。目前是想先用ansible实现从git上获取code,在ansible主机上编译,配置,打包,发布。所以就有了这篇文章。
多人合作时,代码需要按照规范统一管理,但是早期一个项目很难做到一处编写到处运行。一方面,开发者自己的编写环境不能绝对统一,另一方面,没有一个方案去解决自动构建项目的问题,而手动机械重复构建往往出现各种问题。
后来,Java构建项目工具诞生了Ant,第一代自动化构建工具。通过XML,约束构建流程,达到自动构建的目的。
Ant构建脚本由 一个project ,多个target,以及可用的task构成。
有兴趣的童鞋可用查一下,Ant构建的XML文件的大致写法,这里不作详解。只介绍缺点
ㄟ( ▔, ▔ )ㄏ
Ant虽然实现了自动构建,但是在大型项目中,XML构建脚本异常臃肿庞大;构建脚本逻辑也会越来越复杂,最后难以维护。
而且Ant没有规范项目结构,可能导致每次编译出来的东西都不太一样,特别当依赖被改来改去,易出现重复拷贝。因为Ant自身本来就没有提供依赖管理工具,只能借助Ivy。
构建时也无法监控内存变化,task执行。
我是Mac用户,新公司用PC,为了适应,决定用Linux做主力开发系统,首先需要安装系统
有两种方式:
- 使用EasyBCD 添加引导
- 使用UltraISO制作安装U盘
EasyBCD安装的坑:
1 | title Install Ubuntu 16.04 |
hd(0,1)表示第一个物理分区的第二个盘,当然不一定是C盘。所以ISO文件的位置一定会坑到一堆人。
其实可以安装时更改hd位置,参考:http://www.jianshu.com/p/9b4e4137bc11
UltraISO安装的坑
UltraISO版本一定要新版的,我用的是UltraISO 9,不然U盘启动会报错,老毛桃的刻录工具版本太低。建议自己下载一个。
这段时间一直在面试,没有什么精力写文章,整个人处于一种k于是我把快窒息的状态,所以我把简历发给了一家外包公司。
公司非常热心,帮我推荐了很多家岗位。直到这天,我接到一个电话,彻底让我失望了。于是晚上我就打电话给外包的经理,拒绝了两家的甲方的offer。
这个电话是其实是一家甲方公司打给我的,告诉我公司因为我面试通过了甲方的面试,向甲方提出涨价的要求,而我被我的公司隐瞒了拿到offer的事情,直到甲方给我私人打电话,整个流程内部操作十分不规范。
Java的GC是什么,应该做Java的人都知道。但是其实GC的历史要比Java早,Java出现之前,人们就开始研究:
然后就有了GC,而Java解决的这3件事情,就目前看来,效果还可以。解决了很多的内存问题。但是,GC并不能解决所有内存动态分配的问题,尤其是高并发的软件中,了解GC,方便解决内存溢出问题,更好的控制和调节程序的回收和分配内存。
Spring MVC的工作流程
1 用户请求
2 前端控制器
3 handlerMapping 找到对应的Controller
4 controller 返回执行链
5 前端控制器通过 HandlerAdapter去执行执行链,返回model and view
6 将model and view交给视图渲染器,渲染成视图