12 2018 档案
摘要:sudo apt-get install zlib1g-dev下载:libzip-1.0.1.tar.gztar zxcv libzip-1.0.1.tar.gzcd libzip-1.0.1./configure; make; make install下载:curl -O http://www.zlib.net/zlib-1.2.11.tar.gztar zxcv zlib-1.2.11....
阅读全文
摘要:1.0 安装gitlab docker pull gitlab/gitlab-ce:latest # docker命令安装 docker run -d --name gitlab -p 8443:443 -p 8989:80 -p 8022:22 -v /var/docker/gitlab/conf
阅读全文
摘要:定义一个操作中的固定的算法骨架,而将一些步骤延迟到子类中。把固定的实现写在基类中,变化的部分定为纯虚函数,由子类实现。 场景:1、在软件构建过程中,对于某一项,它常常有稳定的整体操作结构。但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架和应用之间的关系)而无法和合任务的整体结构同时实现。
阅读全文
摘要:动机 在软件系统中,经常面临着"某些复结构复杂得对象"得创建工作, 由于需求得变化,这些对象经常面临着急剧得变化, 但是他们却拥有比较稳定一致得接口。 如何应对这种变化?如何向"客户程序(使用这些对象得程序)" 隔离出"这些易变对象",从而使得"依赖这些易变对象得客户程序" 不随着需求改变而改变 常
阅读全文
摘要:适配器模式属于结构型的设计模式 [类的适配器] [对象适配器] , 它是结构型设计模式之首(用的最多的结构型设计模式)。 适配器设计模式也并不复杂,适配器它是主要作用是将一个类的接口转换成客户希望的另外一个接口这样使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 优点 1.屏蔽了具体的实现方式,实现了依赖倒转。 2.可以把不统一的接口封装起来,使之成为统一的接口。 3.把...
阅读全文
摘要:动机: 1、在软件构建中,某些对象使用的算法可能多样性,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂; 而且有时候支持不使用的算法也是一个性能负担。 2、如何在运行时根据需要透明地更改对象的算法? 将算法与对象本身解耦,从而避免上述问题? 定义一系列算法,把他们一个个封装起来,并且
阅读全文
摘要:在软件系统中,经常面临着"一些列相互依赖的对象"的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(NEW),提供一种"封装机制"来避免客户程序和这种"多系列具体对象创建工作"的紧耦合? 1、如果没有应对"多系列对象构建"的需求变化,则没
阅读全文
摘要:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类 "对象创建"模式 通过"对象创建"模式绕开New,来没避免对象创建过程中所导致的 紧耦合(依赖具体类),从而支持对象创建的稳定。 他是接口抽象之后的第一步工作
阅读全文
摘要:网络运维工具 1.0 ifconfig 用于显示或配置网络设备的命令 关闭、打开网卡 启用网卡 ifconfig eth0 up 禁用网卡 ifconfig eth0 down 修改ip、子网掩码 ifconfig eth0 10.82.16.195 ifconfig eth0 10.82.16.1
阅读全文
摘要:锁 01 std::unique_lock对mutex进行自动加解锁, 比lock_guard更加灵活。 mutex m; void fun() { // std::try_to_lock 可以避免一些不必要的等待,会判断当前mutex能否被上锁,如果不能被lock,可以先去执行其他代码。 std:
阅读全文
摘要:C++11中新增了,Mutex互斥量, 它是C++标准程序库中的一个头文件。std::mutex不支持copy和move操作,最初的std::mutex对象是处于unlocked状态。 Mutex 系列类(四种) std::mutex,最基本的 Mutex 类。 std::recursive_mutex,递归 Mutex 类。 std::time_mutex,...
阅读全文
摘要:#include 头文件std::thread为C++11的线程类,使用方法和boost接口一样,非常方便。 C++11的std::thread解决了boost::thread中构成参数限制的问题。 获得主线程ID: std::this_thread::get_id() 获得线程ID: std::thread::get_id(); 获得当前多少个线程: std::thread::ha...
阅读全文
摘要:std::bind bind函数看作是一个通用的函数适配器。 它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。 void fun(int x, int y, int z) { cout<< x <<" "<< y <<" "<< z <<endl; } 01 绑定参数 aut
阅读全文
摘要:函数指针 函数返回值类型 (* 指针变量名) (参数列表) int (*p) (int, int) 指针函数 *类型标识符 函数名 (参数表) int *p (int, int) 区分方法 1. 函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。 2.()的优先级比
阅读全文
摘要:IO模型 io_service对象是asio框架中的调度器,所有异步io事件都是通过它来分发处理的(io对象的构造函数中都需要传入一个io_service对象)。 asio::io_service io_service; asio::ip::tcp::socket socket(io_service); io_servuce的作用: io_servie 实现了一个任务队列,这里的任务...
阅读全文