自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 进程与线程

1、基本概念进程:进程是程序运行是对程序的封装,是系统和资源调度的基本单位,它实现了系统的并发;线程:线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发。线程是操作系统可识别的最小执行和调度单位2、区别一个线程只属于一个进程,而一个进程可以拥有多个线程。线程会依赖于进程存在。进程拥有自己独立的内存空间,而线程与同一进程的线程共享进程的内存空间,共享进程的代码段(代码和常量),数据段(全局数据和静态数据),扩展段(堆存储),但是线程拥有自己的栈区(存储

2020-07-29 16:33:18 293

原创 select、poll和epoll的对比

select、poll、epoll都是linux下的I/O复用系统调用。它们都能监听多个文件描述符,等待由timeout参数指定的超时时间,直到一个或者多个文件描述符上有事件发生时返回,返回值就是就绪的文件描述符的数量。返回0表示没有事件发生。下面来讲讲三个函数的不同之处一、事件集select:select的参数类型没有将文件描述符(fd)和事件进行一个绑定,因此在传参部分需要三个参数分别对应可读、可写、异常事件缺点:只能处理可读、可写以及异常等事件,所以可读、可写以及异常等事件不能处

2020-07-14 23:45:39 236

原创 类的静态成员(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 2389 1

原创 多态和虚函数

一、多态多态是面向对象程序设计的一个重要特征,多态就是一个东西有多重状态,具有不同功能的函数可以用一个函数名,这样就可以用一个函数名实现不同的功能。静态多态:静态多态是通过重载实现的,在编译的时候确定调用哪个函数动态多态:动态多态...

2020-07-11 00:25:25 208

原创 static关键字

一、静态变量的特点静态变量的意思就是该变量在内存中的位置不会变。当我们初始化以后,静态变量就一直存在于一开始初始化的内存之中,即使代码块结束或者函数结束,内存都不会释放。直到程序结束。静态变量存在于全局数据区。静态局部变量定义时建议要进行初始化。如果未初始化,编译器自动将它初始化为0静态变量只初始化一次,下一次再遇到初始化的时候会直接跳过void func(){ static int a = 10; a++; cout<<a<<' ';}int main(

2020-07-10 16:45:30 83

原创 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 107

原创 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 620

原创 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 464

原创 手写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 125

原创 手写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 172

原创 C++ const关键字

1.用于只读变量关键字const用来定义只读变量,被const定义的变量它的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量,这也就意味着必须在定义的时候就给它赋初值。const定义只读变量的时候,下列两种形式的效果是一样的,不过还是尽量使用第一种形式const int A = 1;int const B = 1;2、const与指针const与指针配合使用的时候,一般就分为两种作用一是限制指针变量int *const p = &amp

2020-07-07 12:41:44 87

原创 Linux下的TCP编程

一、TCP编程服务端的流程如下:socket(); //创建一个socketbind(); //绑定IP和端口listen(); //监听是否有客户端介入accept(); //接受客户端的请求read(); //读取客户端发来的消息write(); //向客户端发送消息close(); //关闭套接字客户端的流程如下socket(); //创建一个socketconnect(); //连接某个服务端re

2020-07-07 10:35:48 420

原创 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 504

原创 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 95

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除