- 博客(14)
- 收藏
- 关注
原创 进程与线程
1、基本概念进程:进程是程序运行是对程序的封装,是系统和资源调度的基本单位,它实现了系统的并发;线程:线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发。线程是操作系统可识别的最小执行和调度单位2、区别一个线程只属于一个进程,而一个进程可以拥有多个线程。线程会依赖于进程存在。进程拥有自己独立的内存空间,而线程与同一进程的线程共享进程的内存空间,共享进程的代码段(代码和常量),数据段(全局数据和静态数据),扩展段(堆存储),但是线程拥有自己的栈区(存储
2020-07-29 16:33:18
324
原创 select、poll和epoll的对比
select、poll、epoll都是linux下的I/O复用系统调用。它们都能监听多个文件描述符,等待由timeout参数指定的超时时间,直到一个或者多个文件描述符上有事件发生时返回,返回值就是就绪的文件描述符的数量。返回0表示没有事件发生。下面来讲讲三个函数的不同之处一、事件集select:select的参数类型没有将文件描述符(fd)和事件进行一个绑定,因此在传参部分需要三个参数分别对应可读、可写、异常事件缺点:只能处理可读、可写以及异常等事件,所以可读、可写以及异常等事件不能处
2020-07-14 23:45:39
263
原创 类的静态成员(static)和常量成员(const)
一、类的静态成员(static)静态数据成员的特点:静态成员不属于某一个对象,而是属于整个类(定义在数据段)静态成员供所有对象共享,每个对象可以调用且修改。一个对象修改,其他对象也跟着变化可以直接通过类名直接访问class Student{ private: static int num; public: Student(){} ~Student(){}};int main(){ Student student1; student1.num = 20;//可以通
2020-07-11 10:28:21
2463
1
原创 多态和虚函数
一、多态多态是面向对象程序设计的一个重要特征,多态就是一个东西有多重状态,具有不同功能的函数可以用一个函数名,这样就可以用一个函数名实现不同的功能。静态多态:静态多态是通过重载实现的,在编译的时候确定调用哪个函数动态多态:动态多态...
2020-07-11 00:25:25
233
原创 static关键字
一、静态变量的特点静态变量的意思就是该变量在内存中的位置不会变。当我们初始化以后,静态变量就一直存在于一开始初始化的内存之中,即使代码块结束或者函数结束,内存都不会释放。直到程序结束。静态变量存在于全局数据区。静态局部变量定义时建议要进行初始化。如果未初始化,编译器自动将它初始化为0静态变量只初始化一次,下一次再遇到初始化的时候会直接跳过void func(){ static int a = 10; a++; cout<<a<<' ';}int main(
2020-07-10 16:45:30
103
原创 C++中的深拷贝与浅拷贝
在对对象进行拷贝的时候,如果我们没有自己编写拷贝构造函数,则会调用默认拷贝构造函数。一个例子:#include<iostream>using namespace std;class Stu{ int num; char *name; public: Stu() { name = new char [20]; cout<<"stu"<<endl; } ~Stu() { cout<<"~Stu"<<e
2020-07-10 13:52:01
121
原创 epoll函数的一些知识点
一、epoll函数简介epoll函数是linux特有的I/O复用函数,它使用一组函数来实现I/O复用(区别于select和poll的单个函数)。epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无须像select和poll那样每次调用都要重复传入文件描述符集或事件集。二、epoll_create()函数int epoll_create(int size);功能:调用epoll_create方法创建一个epoll的句柄,该句柄代表着一个事件表参数:size参数现在并不起作用
2020-07-09 21:44:10
654
原创 HTTP常见面试题
一、HTTP和HTTPShttps并非是应用层的一种新协议,它是在http的通信接口部分用SSL和TLS协议代替。通常,http直接和tcp通信,当使用SSL时,则先和SSL通信,再由SSL和tcp通信了。换句话,https就是带着SSL协议外壳的http区别:HTTP 是不安全的,而 HTTPS 是安全的HTTP 标准端口是80 ,而 HTTPS 的标准端口是443在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层HTTP 无法加密,而HTTPS 对传输
2020-07-09 15:40:25
496
原创 手写string函数
class String{ private: char *data_; int len_; static const char kEmpty[]; public: String():data_(nullptr),len(0) {} ~String() { delete []data_; } String(const char *str,int len) :data:(len > 0 ? new char[len+1]:nullptr),len_
2020-07-07 16:06:00
147
原创 手写str的函数
//用于把资源内存(src)拷贝到目标内存(dest),拷贝数量由size决定 void *m_memcpy(void *desc,const void *src,size_t size){ if(desc == nullptr || src == nullptr) return nullptr; char *pdesc; char *psrc; if(src >= desc || (char *)desc >= (char *)src + n-1){ pdesc = (ch
2020-07-07 12:43:31
196
原创 C++ const关键字
1.用于只读变量关键字const用来定义只读变量,被const定义的变量它的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量,这也就意味着必须在定义的时候就给它赋初值。const定义只读变量的时候,下列两种形式的效果是一样的,不过还是尽量使用第一种形式const int A = 1;int const B = 1;2、const与指针const与指针配合使用的时候,一般就分为两种作用一是限制指针变量int *const p = &
2020-07-07 12:41:44
113
原创 Linux下的TCP编程
一、TCP编程服务端的流程如下:socket(); //创建一个socketbind(); //绑定IP和端口listen(); //监听是否有客户端介入accept(); //接受客户端的请求read(); //读取客户端发来的消息write(); //向客户端发送消息close(); //关闭套接字客户端的流程如下socket(); //创建一个socketconnect(); //连接某个服务端re
2020-07-07 10:35:48
453
原创 Linux下的socket详解
一、socket的定义Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议二、socket在linux内核中的结构Socket在内核中是以一个结构体进行定义的,这个结构体包含有ip、port、state、size等成员,这些成员都是用来初始化套接字的详细信息的,但是我们无法直接使用这些成员。Linu
2020-07-07 08:49:53
575
原创 C++函数重载小笔记
1.函数重载的参数不匹配问题void Print(double a,int b){ cout<<a<<endl; cout<<b<<endl;}int main(){ int a = 5; int b = 10; Print(a,b); return 1;}当调用函数的参数不与任何原型匹配时,并不会自动停止使用重载的函数,...
2020-02-14 11:25:55
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人