0%

工厂模式简介

所谓工厂模式,简单的来说,就是自己不再主动创建对象,而是让工厂来帮我们创建对象。通常工厂提供一个获取对象的方法,通过调用这个方法来获取自己实际想要的对象。那有的同学很可能就会问:创建对象我自己new一个对象出来不就好了,简单快捷。用得着你这个工厂模式吗?搞一个工厂出来还要写一堆的代码呢。我们可以从使用场景来考虑这个问题。
想想我们将创建对象的操作进行了一层封装会有什么好处?好处是我们可以很灵活地控制对象的生成过程,比如可以通过一些参数来控制创建的权限,创建过程可以加一些装饰,可以加入一些日志来说明创建的过程(如果对象的创建有很多环节)。其实我们可以看到工厂模式是对创建对象和实现对象过程的解耦。用了工厂模式可能还会使创建对象的代码变得简洁。

阅读全文 »

git pull <远程主机名> <远程分支名>:<本地分支名>
如拉取远程的master分支到本地wy分支:
git pull origin master:wy

为什么写这篇文章

  maven是java世界最流行的构建工具,做java的程序员应该没少使用maven中央仓库中的各种jar包,方便解决了工作中很多问题,提高了编码效率。程序员界有个编程原则就是:不要重复造轮子,所以工作中时常会抽取出很多实用的工具类、包等等。但是咱们也不能总是只取不予,应该懂得奉献,当你写好了一个十分好用的jar包,想贡献出去给大家使用的时候,应该怎么做呢?方法就是发布到maven的中央仓库,别人就可以通过maven依赖引用。不过这个发布过程,还是比较复杂的,本文就来详细说下如何发布自己的jar包到maven的中央仓库。

阅读全文 »

策略模式简介

定义

Define a family of algorithms, encapsulate each one, and make them interchangeable. [The] Strategy [pattern] lets the algorithm vary independently from clients that use it.

阅读全文 »

单例模式简介

定义

保证一个类仅有一个实例,并提供一个访问它的全局访问入口。(你是我的唯一~~)

为什么要用单例模式呢?

  其实生活中很多地方可以反应单例模式:比如一个国家只有一个总统;你正常合法的老婆只能有一个,别人叫你老婆时必须只能是同一个人(排除违法搞多个)。

阅读全文 »

  一直想写介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。当然这个需要有一定的编程经验才能做到。自己虽然不够nb,但也积累了一些经验,是时候写点东西了,也算是自我的总结。所以文中可能也存在一些纰漏,欢迎大家留言指正。

阅读全文 »

创建环境

创建一个名为py35的环境,指定Python版本是3.5(不用管是3.5.x,conda会为我们自动寻找3.5.x中的最新版本)

1
conda create --name py35 python=3.5

阅读全文 »

创建用户

1
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

说明:
username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
例子:

1
2
3
4
CREATE USER 'pig'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

阅读全文 »

查看镜像

docker search mysql:5.7

拉取镜像

docker pull mysql:5.7

运行mysql容器

建立配置文件

master配置文件

vim master/conf/my.cnf

1
2
3
4
5
6
7
8
[mysqld]
server_id = 1
log-bin= mysql-bin
read-only=0
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

阅读全文 »

Dockerfile命令

官网介绍:https://docs.docker.com/engine/reference/builder/

  1. FROM

    FROM <image>:<tag>

    用于设置基础镜像,一般是Dockerfile的第一句。如果没有指定tag,则默认tag是latest。

  2. MAINTAINER

    MAINTAINER <name>

    用来指定维护者的姓名和联系方式。

  3. RUN

    RUN <command> 或 RUN ["executable","param1","param2"]

    每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像。

  4. ADD

    ADD <src> <dest>

    将文件复制到文件:src是相对被构建的源目录(执行docker build命令的当前目录)的相对路径,可以是文件或目录的路径,也可以是一个远程的文件 url,dest是容器中的绝对路径。

  5. COPY

    COPY <src> <dest>

    复制本地主机的src到容器中的dest,与ADD指令差不多

  6. ENTRYPOINT

    1
    2
    ENTRYPOINT ["executable","param1","param2"] :推荐使用的exec形式
    ENTRYPOINT command param1 param2 :shell 形式

    配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。一个 Dockerfile 中只能有一个 ENTRYPOINT,如果有多个,则最后一个生效。

  7. CMD

    1
    2
    3
    CMD ["executable","param1","param2"] 使用exec执行,推荐方式;
    CMD command param1 param2 在/bin/sh 中执行,提供给需要交互的应用;
    CMD ["param1","param2"]提供给ENTRYPOINT 的默认参数;

    指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。

  8. WORKDIR

    WORKDIR /path/to/workdir

    为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。例如:
    WORKDIR /a
    WORKDIR b
    WORKDIR c
    RUN pwd
    则最终路径为 /a/b/c 。

  9. EXPOSE

    EXPOSE <port> [<port>...]

    告诉 Docker 服务端容器暴露的端口号,供互联系统使用。例如:EXPOSE 8080 3000,开放 8080 和 3000 端口。

  10. ENV

    ENV <key> <value>
    指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。

  11. VOLUME

    VOLUME ["/data"]

    创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。

  12. USER

    USER <UID/Username>

    为容器内指定 CMD RUN ENTRYPOINT 命令运行时的用户名或UID。

阅读全文 »