- 博客(8)
- 收藏
- 关注
原创 静态成员实战(踩坑记录)
一、类内声明,类外定义!!! 1、静态成员变量 错误示范 类内定义,达咩!!! 在这里插入图片描述 需要在类外定义: 2、静态成员函数 在类内对helper()进行声明。 在类外进行helper()定义 二、为什么得在类内声明,类外定义? 首先就是类内声明变量,仅仅只是对变量的声明而已,我们都知道,使用变量时一个是声明变量,知道变量的一个作用域,数据类型和属性,第二个是给变量分配内存。类外定义就是为变量进行一个内存的分配。 那这边为什么要在类外进行变量的内存分配,主要是因为,C++的内存分布中,
2021-12-23 12:28:42
535
原创 C++单例模式
核心三个条件 1、该类有且只能有一个对象 2、该对象全局共享 3、该对象只能由类自身创建 单例模式example class singleton{ private: static singleton* instance;//static 关键字可以做到条件1 singleton(){}; //使用private构造函数可以做到条件3 public: static singleton* get_instance(){//提供对象获得函数满足条件2
2021-08-11 21:23:20
134
转载 彻底搞懂Reactor模型和Proactor模型
在高性能的I/O设计中,有两个著名的模型:Reactor模型和Proactor模型,其中Reactor模型用于同步I/O,而Proactor模型运用于异步I/O操作。 想要了解两种模型,需要了解一些IO、同步异步的基础知识 服务端的线程模型 无论是Reactor模型还是Proactor模型,对于支持多连接的服务器,一般可以总结为2种fd和3种事件,如下图: 2种fd listenfd:一般情况,只有一个。用来监听一个特定的端口(如80)。 connfd:每个连接都有一个connfd。用来收发数据。 3种
2021-07-22 13:53:17
531
原创 select、epoll技术归纳
编者总结 最近,刚刚在做web服务器的开发。涉及到IO多路复用的相关知识。也通过多个博客以及源码了解了select和epoll之间的主要区别。 select和epoll之间性能上的区别就是,select需要O(n)的时间复杂度,而epoll只需要O(1)的时间复杂度。 select: (1)每次调用select时,都需要将所有的fds类别传给内核;将当前进程加入到所有监听的socket的等待队列中;唤醒一个进程时,需要从每个等待队列中移除该进程。 (2)在应用层(通过代码可以看到),需要循环遍历监听的soc
2021-07-19 15:15:13
198
转载 C/C++内存静态分配和动态分配
来源: http://blog.youkuaiyun.com/liuchao1986105/article/details/6724392 内存的静态分配和动态分配的区别主要是两个: 一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。 二是空间不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数malloc进行分配。不过栈的动态分配和堆不同,他的动态分配是由编译器进行释放,无需我们手工实现。
2021-07-09 10:27:26
1214
原创 .c .cpp C/C++程序编译过程
编译流程图 gcc编译.c和.cpp文件主要分为四个步骤 源文件:test.c/test.cpp 一、预处理阶段 将文件中的宏定义、#include”“包含的头文件进行展开。 gcc编译命令gcc -E test.c -o test.i -E:完成预处理后停止编译进程 -o test.i:生成预处理后文件为 test.i .i:Intermediate file 二、编译阶段 将经过预处理阶段得到的预处理文件test.i编译为汇编程序 gcc -S test.i -o test.s -S:完成编译阶
2021-07-09 10:08:52
931
原创 PAT A1039使用string也可以不超时!!!
亲测,直接使用map<string,vector>也可以通过所有测试点!!!欢迎讨论细节问题!!!代码如下: #include #include #include<time.h> #include<stdio.h> #include #include<limits.h>//int_max和int_min的头文件 #include #include #...
2020-03-09 11:38:37
287
原创 PAT A1051题解
PAT A1051题解 简单的栈模拟,使用C++STL中的stack来作为容器。 #include #include #include using namespace std; const int maxn = 1010; int arr[maxn]; stack st; int main(){ int m, n, T; cin>>m>>n>>T; whil...
2019-03-09 12:18:51
281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅