首页
Sterben_01
取消

深度探索 C++ 对象模型 笔记

深度探索 C++ 对象模型 笔记 1.1 类的封装不会给C++带来额外成本。 额外成本(时间,空间)来自于虚机制 类内只包含非静态成员变量的大小 和 虚机制导致的虚指针(如果有的话)。静态成员变量,所有成员函数都不算作类的大小。此处不再赘述 关于虚函数和虚指针,RTTI在单独的笔记有。 1.2 C++优先判断一个语句为声明:当语言无法区分一个语句是声明还是表...

单例模式

单例模式 优点: 只有一个实例所以不需要每次都创建和销毁,可以在启动的时候就创建对象然后永久驻留在内存中。 缺点: 有的实现方式是线程不安全的。 懒汉式: 懒汉式的意思是,只有类被实例化的时候才会创建这个单例实例。意思就是你不能在类里面放一个静态实例了,那样就是饿汉式了。普通的懒汉式是线程不安全的。 线程不安全版本: #include <iostream> #in...

HTTP

HTTP请求报文格式 注意请求体(请求数据)部分GET请求没有。 HTTP请求方法 GET:向指定的资源发出“显示”请求。使用 GET 方法应该只用在读取数据,而不应当被用于产生“副 作用”的操作中,例如在 Web Application 中。其中一个原因是 GET 可能会被爬虫等随意访 问。所以GET请求不应被定义为带有副作用的操作。 HEAD:与 GE...

项目相关

项目相关 UDP TCP UDP不需要监听,自然服务端没有listen,UDP是无连接,在无连接需求下自然客户端没有connect,服务端也没有accept UDP可以调用connect函数。但是和TCP意义不同。UDP使用connect之后,内核仅仅会把对端ip&port记录下来。这样链接就变成了一对一的。也就是可以使用TCP的那一套系统调用了。但是UDP自己本身还是U...

数据库

数据库 MYSQL结构 应用层 链接处理 鉴权 安全管理 服务层 安全管理 备份恢复 集群管理 复制管理 … 接口 ...

Effective STL 笔记

Effective STL 笔记 第二条:不要试图编写独立于容器类型的代码。 STL 是以泛化原则为基础的: 数组被泛化为”以其包含的对象的类型为参数“的容器; 函数被泛化为”以其使用的迭代器的类型为参数“的算法; 指针被泛化为”以其指向的对象的类型为参数“的迭代器; 容器被泛化为”序列式和关联式“容器。 个人理解一句话:别给多个容器写一个通用的函数。没有意义而且...

算法相关

时间复杂度 时间复杂度主要就是看基本操作是啥,然后基本操作要进行几次 O1 int i = 1; int j = 2; ++i; j++; int m = i + j; 这代码操作都是执行一次。 On for(i=1; i<=n; ++i) { j = i; j++; } 我们能看到,for循环的代码会执行n次。所以消耗的时间是随着n变化而变化。所以是On...

智能指针

智能指针 我们不爱裸指针的原因: 裸指针的声明没办法告诉我们它指向的是单个对象还是数组。 没办法知道用完这个裸指针后要不要销毁它指向的对象。 没办法知道怎么销毁这个裸指针,是用operator delete还是什么其它自定义的途径。 参照原因1,没办法知道该用delete还是delete[],如果用错了,结果未定义。 很难保证调用路径上恰好销毁这个指针一次,可能内存...

操作系统相关

进程是进程是操作系统分配资源的最小单位。线程是程序执行的最小单位。 进程和线程资源共享: 线程共享的内容包括: 1.进程代码段 2.进程数据段(包括BSS段) 所以全局变量和静态变量是共享的。 3.进程打开的文件描述符 4.信号的处理器 5.进程的当前目录和 6.进程用户ID与进程组ID 7.堆 线程独有的内容包括...

初始化

聚合初始化 从 初始化器列表初始化聚合体。是列表初始化的一种形式。 (aggregate initialization)。聚合类型可以进行直接列表初始化。没有构造函数也可以初始化其中的参数。但是聚合类型有如下限制 1. 数组类型 或 2. 满足下列条件的类类型(通常是结构体(struct)或者联合体(union)): - 没有私有或保护的非静态数据成员 ...