2018-07-12


git解决冲突

如果push的时候有冲突,则切换到develop分支上,pull一下,然后将有冲突的地方选择一段保留,然后重新上传。

dockor machine

基本概念

  • 镜像(Image) 是一个特殊的文件系统,包含完整的root文件系统,不包含任何动态数据,其内容在构建之后也不会改变。

    • 分层存储 镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
  • 容器 (Container) 镜像是静态定义,容器是镜像运行时的实体。容器的实质是进程,容器进程运行于属于自己的独立的命名空间,拥有自己的root文件系统、自己的网络配置、自己的进程空间和自己的用户ID空间。

    • 分层存储 每一个容器运行时,以镜像为基础层,在其上创建一个当前容器的存储层,容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。所以容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录。数据卷的生存周期独立于容器。
  • 仓库(Repository) 集中的存储、分发镜像的服务——Docker Registry 一个Docker Registry可以包含多个仓库;每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

    基本指令

docker-machine ls
alias dm=docker-machine    //取别名
dm ls
dm create test    //创建虚拟机
dm env test     //指定环境,复制最后一句完成切换
dm stop name    //一个一个关,不要强制关机

Docker镜像

使用Dockerfile定制镜像

Feiwem@DESKTOP-A65JLV2 MINGW64 /d/dockerTrain
$ mkdir mynginx
Feiwem@DESKTOP-A65JLV2 MINGW64 /d/dockerTrain
$ cd mynginx/
Feiwem@DESKTOP-A65JLV2 MINGW64 /d/dockerTrain/mynginx
$ touch Dockerfile
Feiwem@DESKTOP-A65JLV2 MINGW64 /d/dockerTrain/mynginx
$ vi Dockerfile
Feiwem@DESKTOP-A65JLV2 MINGW64 /d/dockerTrain/mynginx
$ docker build -t nginx:v3 .    // docker build [选项] <上下文路径/URL/->  "."表示当前目录

Dockerfile内容:

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

docker build 命令构建镜像,其实并非在本地构建,而是在服务端,也就是 Docker 引擎中构建的。

java基础知识

assert 断言

  • assert [boolean 表达式] 如果[boolean表达式]为true,则程序继续执行。 如果为false,则程序抛出AssertionError,并终止执行。
  • assert[boolean 表达式 : 错误表达式 (日志)] 如果[boolean表达式]为true,则程序继续执行。 如果为false,则程序抛出java.lang.AssertionError,输出[错误信息]。
    public void methodA(int i){
        assert i >=0 : methodB(); //void type is not allowed here
        System.out.println(i);
    }
    public void methodB(){
        System.out.println("The value must be negative");
    }
    public static void main(String args []){
        javatestfansi test = new javatestfansi();
        test.methodA(-10);
    }

static

Java中的static关键字不会影响到变量或者方法的作用域,不能用来修饰局部变量。

static方法

static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。 简而言之:方便在没有没有创建对象的情况下进行调用(方法/变量)。 被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。 static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。 在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

static 变量

static变量也称作静态变量,静态变量和非静态变量的区别:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

static 代码块

static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。 - static块可以出现类中的任何地方(只要不是方法内部,任何方法内部都不行),并且执行是按照static块的顺序执行的。

public class Test { 
    static{
        System.out.println("test static 1");
    }
    public static void main(String[] args) {         
    }    
    static{
        System.out.println("test static 2");
    }
}

output:

test static 1
test static 2