A 设计模式概述-创建型
创建型 1. 单例(Singleton) Intent Class Diagram Implementation Ⅰ 懒汉式-线程不安全 Ⅱ 饿汉式-线程安全 Ⅲ 懒汉式-线程安全 Ⅳ 双重校验锁-线程安全 Ⅴ 静态内部类实现 Ⅵ 枚举实现 Examples JDK 2. 简单工厂(Simple Factory) Intent Class Diagram Implementation 3. 工厂方法(Factory Method) Intent Class Diagram Implementation JDK 4. 抽象工厂(Abstract Factory) Intent Class Diagram Implementation JDK 5. 生成器(Builder) Intent Class Diagram Implementation JDK 6. 原型模式(Prototype) Intent Class Diagram Implementation JDK 设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模...
D IO设计模式
Rector设计模式reactor模式结构 Reactor包含如下角色: Handle 句柄;用来标识socket连接或是打开文件; Synchronous Event Demultiplexer:同步事件多路分解器:由操作系统内核实现的一个函数;用于阻塞等待发生在句柄集合上的一个或多个事件;(如select/epoll;) Event Handler:事件处理接口 Concrete Event HandlerA:实现应用程序所提供的特定事件处理逻辑; Reactor:反应器,定义一个接口,实现以下功能: 供应用程序注册和删除关注的事件句柄; 运行事件循环; 有就绪事件到来时,分发事件到之前注册的回调函数上处理; “反应”器名字中”反应“的由来:“反应”即“倒置”,“控制逆转”,具体事件处理程序不调用反应器,而是由反应器分配一个具体事件处理程序,具体事件处理程序对某个指定的事件发生做出反应;这种控制逆转又称为“好莱坞法则”(不要调用我,让我来调用你) 业务流程及时序图 应用启动,将关注的事件handle注册到Reactor中; 调用Reactor,进入无限...
1.1 基本类型
基本内置类型 数据类型主要包含内置数据类型(算数类型(整型,浮点型),指针类型),自定义数据类型(vector=C 数组类型,string=C 字符串类型) 1 基本类型布尔型 bool 1 字符型 char 1 wchar_t 2 char16_t char32_t 整型 short 2 int 4 long 4 long long 8 浮点型 float 4 double 8 long double 16
1 数据类型
类型 类是一种类型,是对象的模板,而不是变量或对象。它内部本身不包含对象。只是声明了这种对象的存在。只有创建对象的时候,才会真正的创建对象内部的对象。 1 类型 简单类型 整型 int、short、long、longlong、bool、char、size_t 浮点型 float、double、long double 复合类型 引用&a 指针*pointer 数组 a[] 字符串"hello world" 自定义类型 类class 结构体struct 枚举enum 联合体union 关于size_t的说明:size_t是标准C库中定义的,在64位系统中为long long unsigned int,非64位系统中为long unsigned int。使用size_t可能会提高代码的可移植性、有效性或者可读性,或许同时提高这三者。因为其是基于平台变化的最大支持的无符号整型。 2 字面值常量 常量主要包括字面值常量和自定义常量。 整型字面常量 不同进制指的是字面格式,其转化为存储格式时,都会变成二进制存储。不必担心十进制与二进制之间的运...
1.2 复合类型
复合类型1 引用 由基本类型组合而来。不能单独存在。 int &ref=a.表示对 a 的引用。引用本身并非对象,只是已经存在的对象的别名 引用必须在定义的时候被初始化。 引用是变量的别名,具有同一个变量地址(变量空间)。 允许多个连续的引用int &r=i,r2=i2.表示 r 是 i 的引用,但 r2 是 int 连续定义必须都加引用符号。int &r=i,&r2=i2; 编译过程解释:一般初始化的时候(变量定义),编译器会将一个值拷贝到新建的变量空间中,然后与变量绑定。引用变量在初始化的时候,不进行拷贝,而是将原来的变量空间与新的对象绑定在一起。 2 指针指针的定义 实现了间接访问。本身是一个对象。与引用不同,指针有自己的变量空间。 允许对指针进行复制和 copy。 int* dp,dp1.其中 dp 是 int 指针,dp1 是 int 类型。 不能定义指向引用的指针,因为引用不是对象,没有内存空间。 连续定义,必须都加*号 指针值的四种状态 指向一个对象; 指向紧邻对象所占空间的下...
1.4 类型修饰和处理
类型的修饰和处理 目录 类型转换 类型别名 类型修饰 1 类型转换 参考 隐式类型转换强制类型转化 C风格类型转换 C++风格类型转换。 2 类型别名typedef typedef 使用最后一个名词作为名字 12345678typedef double hello;typedef double* p;typedef int h[81];typedef struct tag{int iNum;long lLength;}MyStruct;//定义了结构体;typedef struct tag MyStruct using 类型别名和类型等价 1using si = Sales_item;//类的别名 3 类型修饰 常见的类型修饰符:signed、unsigned、long、short、const、static、extern、auto、register、mutable、thread_local、volatile、restrict 简单对比 auto 默认存储类别,自动变量int i = 3; static 静态存储类别的变量,静态变...
1.3 自定义数据类型
自定义数据类型 自定义类型的变量,一般称为对象。 类类型类型定义包括以下两类成员 数据成员 成员函数 12345678class Data{public: int m; int n; int hello(){ return 1; }} 变量对象定义1Data a,b; 变量对象使用12a.m;a.hello(); 2 结构体类型类型定义12345struct data{ std::string bookNo; unsigned sold = 0; double revenue = 0.0;}; 变量对象定义变量对象使用3 枚举类型类型定义变量对象定义变量对象使用4 联合体类型类型定义变量对象定义变量对象使用
8 自定义类型-枚举和联合
复杂类型 除了类之外还有Union、Enum连个特殊的类型。 Union概念union即为联合,它是一种特殊的类。通过关键字union进行定义,一个union可以有多个数据成员。 12345union Token{ char cval; int ival; double dval;}; 用法 互斥赋值。在任意时刻,联合中只能有一个数据成员可以有值。当给联合中某个成员赋值之后,该联合中的其它成员就变成未定义状态了。 12345678Token token; token.cval = 'a'; token.ival = 1; token.dval = 2.5; 访问权限。联合可以为其成员指定public、protected和private等访问权限,默认情况下,其成员的访问权限为public。 为成员指定长度。联合的存储空间至少能够容纳其最大的数据成员。也可以为联合的成员指定长度。通过冒号操作符来实现成员长度的指定。 12345678union U { unsigned short int aa; s...
15 C库整理
目录 cstring 字符串和内存复制 cstdlib 字符串和内存分配 cstdio 输入输出 cmath 数学函数 ctime 时间函数 1 头文件cstring1#include<cstring> 函数 描述 void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。 int memcmp(const void *str1, const void *str2, size_t n) 把 str1 和 str2 的前 n 个字节进行比较。 void *memcpy(void *dest, const void *src, size_t n) 从 src 复制 n 个字符到 dest。 void *memmove(void *dest, const void *src, size_t n) 另一个用于从 src 复制 n 个字符到 dest 的函数。 void *memset(void *str, i...
5.1 字符串类封装
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136/* * C++ string 类的实现* 1. 构造函数和析构函数* 2. 字符串长度* 3. 重载=运算符* 4. 重载+=运算符* 5. 重载<< >> 运算符* 6. 重载比较运算符* 7. 重载[]下标运算符*/#include <iostream>#include <cstring>using namespace std;class...














