请求行+若干请求头+请求数据。
请求行:请求方式+资源名称+HTTP版本号。
请求头:描述客户端请求主机及客户机的环境。
请求数据:多个请求头与请求数据之间用空行分割。
1, download and install maven。
2, mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app 创建新工程。
3, mvn package 将代码打包到输出到target目录。
4, mvn test 将测试代码到包输出到target目录。
5, mvn clean 清理target目录。
6, mvn install 将打包好的jar包安装到本地库中,一般没默认是在用户目录下的.m2\目录。
7, mvn deploy 发布到nexus远程仓库。
git branch//确认在master分支下
*master
git pull
git rebase
git add -u//遇到冲突,要解决,再执行...
git rebase --continue
...
over when arrive "master"//到master为止
git clone git@github.com:youth168/test.git
输入密码:git,等待完成。
cd ./test
1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。(找出程序中会变化的方面,然后将其和固定不变的方面分离。)
即把会变化的部分取出并封装起来,以便以后可以轻易的改动或扩充此部分,而不影响不需要变化的其它部分。
2、针对接口编程,而不是针对实现编程。
即针对超类型编程,变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口。意味着声明类时不用理会以后执行的真正对象类型。
3、多用组合,少用继承。
增强系统的弹性,不仅可将算法族封装成类,更可以”在运行时动态的改变行为“,只要组合的行为对象符合正确的接口标准即可。
4、类应该对扩展开放,对修改关闭。开闭原则。
5、要依赖抽象,不要依赖具体类。依赖倒置原则。
6、一个类应该只有一个引起变化的原则。(单一职责)
不让高层组件依赖低层组件,而且不管高层或低层组件,两者都应该依赖于抽象。
双重检查加锁单例,解决多线程访问和效率问题。
public class Singleton {
private volatile static Singleton instance=null;
private Singleton(){
}
public static Singleton getInstance(){
if(null == instance) {
synchronized(Singleton.class) {
if(null==instance) {
instance = new Singleton();
}
}
}
return instance;
}
}ALL:
双赢:利人利己;
输/输:两败俱伤;
赢/输:损人利己;
赢:独善其身;
输/赢:舍己为人;
无交易:好聚好散。