自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

e我所欲也的博客

记录学习与生活

  • 博客(92)
  • 收藏
  • 关注

原创 C++ 智能指针

文章目录为什么需要智能指针?内存泄漏什么是内存泄漏内存泄漏的危害内存泄漏分类如何避免内存泄漏智能指针的使用及原理RAII智能指针的原理std::auto_ptrstd::unique_ptrstd::shared_ptrshared_ptr的线程安全std::shared_ptr的循环引用为什么需要智能指针?C++由于没有gc(Java的自动回收机制),new/malloc 等出来的资源,是需要我们去手动释放。在开发过程中常常会出现这两种问题:1、忘记释放(粗心大意)2、发生异常安全问题(由于抛异

2020-07-28 11:52:06 316

原创 C++ 异常

文章目录C语言传统的处理错误的方式C++异常概念异常的使用异常的抛出和捕获异常的重新抛出异常安全异常规范自定义异常体系异常的优缺点总结C语言传统的处理错误的方式传统的错误处理机制:终止程序,如assert,exit,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误实际中C语言基本都是使用返回错误码的方式处理错误,部分情况下使用终止程序处理非常严重的错误。这种传统的

2020-07-25 20:06:45 789

原创 C++11 常用的基础特性

文章目录列表初始化内置类型的列表初始化自定义类型的列表初始化变量类型推导auto类型推导decltype类型推导范围for循环final与override新增加容器默认成员函数控制显式缺省函数删除默认函数NULL与nullptr 空值指针右值引用右值引用概念左值与右值引用与右值引用比较值的形式返回对象的缺陷移动语义右值引用引用左值完美转发lambda表达式lambda表达式语法函数对象与lambda表达式C++11简介在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这

2020-07-22 16:14:07 367

原创 MySQL数据库(四)表的内外连接、索引、事务管理、视图、用户管理

文章目录表的内连和外连内连接外连接表的内连和外连表的连接分为内连和外连内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。语法:select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;//显示SMITH的名字和部门名称-- 用前面的where写法select ename, dname from EMP, DEPT where EMP.deptno=DEPT.d

2020-07-21 14:42:39 320

原创 MySQL数据库(三) 聚合函数、内置函数、复合查询

文章目录表的增删改查增基本查询(单个表内)改(Update)删(Delete)聚合函数group by子句的使用内置函数日期函数字符串函数数学函数复合查询多表查询自连接子查询合并查询表的增删改查增语法:INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...-- 创建一张学生表create table students ( id int unsigned prim

2020-07-20 22:13:01 621

原创 MySQL数据库(二)数据类型、表的约束

文章目录数据类型分类数值类型bit类型小数类型字符串类型日期和时间类型enum和set数据类型分类数值类型数值越界测试:在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。mysql> create table tt1(num tinyint); 有符号:范围 -128~127mysql> insert into tt1 values(128); -- 越界插入,报错ERROR 1264 (22003): Out of range value for colum

2020-07-20 11:34:06 264

原创 MySQL数据库(一)库的操作、表的操作

文章目录数据库基础主流数据库服务器,数据库,表关系SQL分类字符集和校验规则字符集校验规则库的操作创建数据库(create)查看数据库(show)修改数据库(alter)数据库删除(drop)`注意:不要随意删除数据库`备份和恢复(mysqldump / source)其他操作表的操作创建表(create)修改表(alter)删除表(备份/恢复)数据库基础什么是数据库? 存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:文件的安全性问题文件不利于数据查询和管理文件不利于

2020-07-15 16:41:06 253

原创 哈希应用 位图与布隆过滤器 及海量数据处理问题

文章目录位图布隆过滤器海量数据面试题思路分析位图先介绍一个题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。解决方案:遍历,时间复杂度O(N)排序(O(NlogN)),利用二分查找: logN把数据放入map或者unordered_map中,树形结构查找位图解决面对这个问题我们首先想到的就是前三种。但是前三种做法的前提就是需要把数据移到内存上才可以运行,但是40亿个整型,差不多16个G(十亿字节差不多为一个G,一个整型占四个字节),而

2020-07-14 15:36:33 389

原创 哈希表 底层原理及unordered_map/unprdered_set的简单实现

文章目录前言unordered_map/_set的介绍底层结构哈希概念哈希冲突哈希函数哈希冲突解决闭散列开散列开散列增容与插入开散列与闭散列比较模拟实现unordered_set模拟实现unordered_map前言在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到O(log2N),即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到.因此在C++11中,STL又提供了4个unordered系列的

2020-07-13 20:19:37 2985

原创 红黑树 插入元素时的旋转着色分析及Map/Set的简单实现

文章目录序列式容器与关联式容器Map与Set的简单介绍set的简单介绍map的简单介绍红黑树红黑树的概念红黑树节点的定义封装搜索树的迭代器红黑树插入节点的控制红黑树的迭代器红黑树的检测set的简单模拟(插入操作和迭代器遍历)map的简单模拟(插入操作和迭代器遍历)序列式容器与关联式容器我们之前已经接触过STL中的部分容器,比如:vector、list、deque等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。而关联式容器也是用来存储数据的,与序列式容器不同的是,其里

2020-07-11 18:22:29 491

原创 平衡搜索树AVL 插入操作及旋转分析

文章目录AVL树的概念AVL树节点的定义AVL树的插入如何根据平衡因子维护平衡AVL树的旋转右单旋左单旋双旋:先左单旋再右单旋双旋之先右单旋再左单旋AVL树的验证AVL树的性能AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下(O(N))。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左

2020-06-30 14:06:11 467

原创 并发服务器 IO多路复用之poll 与 epoll(重点)

文章目录I/O多路复用之pollpoll函数接口poll示例: 使用poll监控标准输入(模式)I/O多路复用之epollepoll_create 创建epoll操作句柄epoll_ctl epoll的事件注册函数epoll_wait 监控epoll工作原理epoll的优点(和 select 的缺点对应)epoll工作方式epoll示例: 使用epoll监控标准输入(水平触发LT模式)epoll示例2: 使用epoll监控标准输入(边缘触发ET模式)I/O多路复用之pollpoll函数接口#i

2020-06-23 16:47:16 980

原创 并发TCP服务器 IO多路复用之select

文章目录前言初识selectselect函数原型理解select执行过程socket就绪条件select使用示例: 检测标准输入输出select优缺点基于select的并发TCP服务器通信前言记得我们之前写的TCP客户端服务端通信小demo中有个小问题:accept函数和read函数一旦阻塞在其中一个中的话,另一个就没法对相应的请求做出响应,即如果在accept中等待一个连接请求,我们就不能响应输入的命令(接收数据)。类似地,如果在read中等待一个输入命令,我们就不能响应任何连接请求。但是一个并发服务

2020-06-23 11:58:43 1167

原创 LInux -- 五种典型的IO模型

文章目录1.阻塞IO模型2.非阻塞IO模型3.信号驱动IO模型4.多路复用IO模型5.异步IO模型首先要理解的概念:IO即输入输出事件,而我们知道不论是标准IO还是文件IO,其实都是要和内存管理和磁盘文件等硬件有关,且Linux下一切皆文件,而在系统中想要实现用户层和内核层交互,只能调用系统调用接口,而对于IO来说,无论是c语言的文件IO函数还是其他语言的IO函数,底层也都是封装了系统调用文件IO来实现用户层与系统层的交互的。而常用的系统文件IO接口read/write。任何IO过程中, 都包含

2020-06-19 19:15:30 315

原创 网络基础(六)数据链路层、ARP协议、ICMP协议及DNS域名系统

文章目录网络通信过程简述数据链路层概念及功能认识MAC地址以太网MTU(最大传输单元)ARP协议DNS(Domain Name System)域名解析协议ICMP协议ping命令网络通信过程简述基于TCP/IP协议网络通信的过程中,将发出数据的主机称为源主机,接收数据的主机称为目的主机。当源主机发出数据时,数据在源主机中从上层向下层传送。源主机中的应用进程先将数据交给应用层,应用层加上必要的控制信息就成了报文流,向下传给传输层。传输层将收到的数据单元加上本层的控制信息,形成报文段、数据报,再交给网际层

2020-06-18 16:12:49 1349

原创 网络基础(五)网络层IP协议、NAPT端口映射及路由选择

文章目录基本概念主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由器的统称;

2020-06-17 21:06:10 2626

原创 网络基础(四) TCP的可靠传输

文章目录TCP协议的复杂性和功能检验和(发送方填充)序列号确认应答机制超时重传机制滑动窗口机制快速重传机制流量控制拥塞控制机制慢启动与拥塞避免算法快恢复延迟应答机制捎带应答机制另外面向字节流TCP异常情况保活计时器基于TCP应用层协议TCP小结TCP协议的复杂性和功能应用层向TCP层发送用于网间传输的、用字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TC

2020-06-14 20:43:01 1309 2

原创 二叉搜索树 增删查操作

文章目录二叉搜索树二叉搜索树的实现增(插入)操作查找操作删除操作改?二叉搜索树的应用前言:在现在数据为王的时代,数据的存储量一般都是很大的,为了在大量信息中找到某些值,就需要用到查找技术,为了提高查找效率,需要对数据进行排序。排序和查找的数据处理量几乎是整个数据处理量的80%,故排序和查找的有效性直接影响到基本算法的有效性。因而查找和排序是十分重要的处理技术。往期基于线性表的排序方法--------》八大排序C语言实现版本而基于线性表的查找方法一般分为: 顺序查找和二分查找。接着便是学习基于树结

2020-06-13 20:07:38 509

原创 网络基础(三)传输层UDP / TCP协议

文章目录传输层概念及功能UDP协议传输层概念及功能传输层是整个网络体系结构中的关键层次之一,主要负责向两个主机中进程之间的通信提供服务。传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控制、分段/重组和差错控制来保证数据传输的可靠性。传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。而在数据传送阶段又分为一般数据传送和加速数据传送两种形式。传输层中最为常见的两个协议分别是传输控制协议TCP

2020-06-13 16:09:43 1791

原创 网络基础(二)应用层HTTP协议

文章目录TCP协议的面向字节流特性以及引申出来的粘包问题HTTP协议介绍通用资源定位符URLweb服务器以两种不同的方式向客户端提供内容:简单的URL格式分析:Http协议的组成1.HTTP请求2.HTTP响应应用层: 负责应用程序之间的数据传输,我们程序员就工作在这一层上TCP协议的面向字节流特性以及引申出来的粘包问题从套接字编程角度对于传输层TCP协议特点里的—面向字节流解读从创建一个TCP的socket起, 同时在内核中创建一个发送缓冲区和一个接收缓冲区;对于发送:1.调用write时

2020-06-08 14:29:55 773

原创 C++ 多态与虚函数

文章目录1. 多态的概念多态的性质多态的分类2. 虚函数实现动态多态性多态的构成条件虚函数虚函数重写的两个例外(不是特定规则)C++11 override 和 final3.纯虚函数与抽象类纯虚函数:抽象类接口继承和实现继承4.多态的原理虚函数表动态绑定与静态绑定(关联)5.单继承和多继承关系中的虚函数表多态的概念多态的定义及实现抽象类多态的原理单继承和多继承关系中的虚函数表继承和多态常见的面试问题1. 多态的概念多态的性质多态性是面向对象程序设计的一个重要特性。多态本意:一个事物有

2020-06-06 15:17:56 499

原创 C++ 继承(二)

文章目录6.继承与友元7.继承与静态成员8.复杂的菱形继承及菱形虚拟继承菱形继承的问题虚拟继承9.继承和组合上文链接—>继承(一)6.继承与友元友元具体讲解—》友元复习友元函数复习:用法:在类体中用friend对某函数声明,此函数就称为本类的友元函数。说明:友元函数可访问类的私有和受保护成员,但不是类的成员函数(没有this 指针)友元函数不能用const修饰友元函数可以在类定义的任何地方声明,不受类访问限定符限制一个函数可以是多个类的友元函数,或者说,友元函数不仅可以是一个非成

2020-06-01 18:05:14 199

原创 C++ 继承(一)

文章目录前言:继承的概念及定义继承中的作用域(访问属性)1.继承的概念及定义2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6.继承与静态成员7.复杂的菱形继承及菱形虚拟继承8.继承的总结和反思9.笔试面试题前言:面向对象程序设计的四个主要特点:抽象、封装、继承、多态性,之前以了解了抽象和封装,现在开始总结继承的特征。问题:学校写一个管理系统,学生类和老师类里面都要用到年龄、姓名、性别等成员变量,或者相同的打卡、签到等成员函数,这样难免做了很多

2020-06-01 18:04:02 238

原创 c++ 输入输出流

文章目录输入输出流的含义标准I/O文件I/O文件概念文件流对象前言前面所用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上。从操作系统的角度看,每个与主机相连的输入输出设备都看作一个文件。例如.终端键盘是输入文件,显示屏和打印机是输出文件。除了以终端为对象进行输入和输出外,还经常用磁盘或光盘作为输入输出对象,这时,磁盘文件既可以作为输入文件,也可以作为输出文件。说明:C语言采用函数实现输入输出(如scanf和printf函数),c++采用类对象来实现输入输出

2020-05-31 13:37:15 609

原创 c++ 模板进阶

文章目录非类型模板参数模板的特化函数模板特化类模板特化非类型模板参数模板参数分为类型形参与非类型形参。类型形参:即出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。以定义模板类型的静态数组为例:// 定义一个模板类型的静态数组,对于静态数组,一般都要提前知道开多大的空间,template<class T, size_t N = 10>class array

2020-05-30 15:32:08 230

原创 STL deque与常见的容器适配器 stack、 queue、 priority_queue

文章目录dequedeque的原理图deque的应用场景容器适配器stackqueuepriority_queuedequedeque双端队列是动态大小的序列式容器,其可以向两端进行伸缩。特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。因此,deque提供了一些与vector相似的功能,但deque在头部和尾部进行数据插入和删除操作更加高效。与vector不同的是,deque不能保证所有的元素存储

2020-05-25 21:50:12 279

原创 STL list模拟实现及vector与list的对比

文章目录list的介绍list模拟实现对比vector与listlist的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中(不像vector、string等存储位置是连续的),所以在节点中通过指针指向其前一个元素和后一个元素使各个元素关联起来。与其他的序列式容器相比(string,vector,deque),优点是:list通常在任意位置进行插入、移除元素的执行效率更好。与其

2020-05-21 14:53:41 230

原创 STL vector模拟实现及迭代器失效问题

文章目录

2020-05-15 18:34:52 226

原创 网络编程 socket(三) 基于TCP的客户端-服务端的并发程序(多进程&多线程)

文章目录再谈TCP协议通讯流程多进程版本多线程版本再谈TCP协议通讯流程服务器初始化:调用socket, 创建文件描述符;调用bind, 将当前的文件描述符和ip/port绑定在一起; 如果这个端口已经被其他进程占用了, 就会bind失败;调用listen, 声明当前这个文件描述符作为一个服务器的监听描述符, 为后面的accept做好准备;调用accecpt, 并阻塞, 等待客户端连接过来。建立连接的过程:调用socket, 创建文件描述符;调用connect, 向服务器发起连接请

2020-05-13 11:58:43 945

原创 网络编程 socket套接字(二)基于TCP的客户-服务端通信小程序(单连接版)

文章目录TCP编程流程TCP套接字接口介绍监听描述符和已连接描述符之间的区别基于tcp的客户端—服务端通信小程序(单连接版)TCP编程流程TCP套接字接口介绍TCP协议不同于UDP,TCP是面向连接的,必须要在双方已经连接上的前提下才可以进行通信。两者创建套接字都是同样的接口,不同的是客户端通过调用connect函数来建立和服务器的连接。剩下的套接字函数bind、listen和accept被服务器用来和客户端建立连接。创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)

2020-05-12 18:16:36 883

原创 网络编程 socket(一) 基于UDP的客户端和服务端的小程序

文章目录TCP/IP协议简单理解再谈端口号连接UDP协议简单介绍UDP套接字的编程流程及接口介绍基于udp的客户端-服务器端的的通信小程序每台因特网主机都运行实现TCP/IP协议(Transmission ControlProtocol/Internet Protocol,传输控制协议/互联网络协议)的软件,几乎每个现代计算机系统都支持这个协议。因特网的客户端和服务器混合使用套接字接口函数和UnixIO函数来进行通信。套接字函数典型地是作为会陷入内核的系统调用来实现的,并调用各种内核模式的TCP/IP函

2020-05-11 21:02:48 1577

原创 网络基础(一)理解网络及协议

文章目录前言客户端-服务器编程模型从计算机体系结构来理解网络网络的层次结构网络协议理解封装协议分层从每个协议层来介绍数据包封装和分用网络中的地址管理网络字节序前言网络应用随处可见。任何时候你浏览Web、发送E-mail 等,你就正在使用一个网络应用程序。有趣的是,所有的网络应用都是基于相同的基本编程模型,有着相似的整体逻辑结构,并且依赖相同的编程接口。网络应用依赖于很多在系统研究中已经学习过的概念,例如,进程、信号、字节顺序、存储器映射以及动态存储分配,都扮演着重要的角色。还有一些新概念 要掌握。我

2020-05-09 17:25:03 1093

原创 STL string模拟实现及深浅拷贝问题

文章目录深浅拷贝问题现代版写法的String类string 增删查改等实现模拟实现string类,最主要是实现String类的构造、拷贝构造、赋值运算符重载以及析构函数。又因为string是要需要动态管理资源的,模拟实现时就不得不考虑深浅拷贝的问题。深浅拷贝问题浅拷贝:当创建一个对象,然后把它赋给另一个变量的时候,没有拷贝这个对象,而只是拷贝了这个对象的引用,我们称之为浅拷贝。浅拷贝...

2020-05-01 16:13:00 332

原创 linux --线程(六) 读写锁

文章目录读写者介绍读写锁读写锁接口读写者介绍读者一写者问题是互斥问题的一个概括。一组并发的线程要访问一个共享对象,例如一个主存中的数据结构,或者一个磁盘上的数据库。有些线程只读对象,而其他的线程只修改对象。修改对象的线程叫做写者。只读对象的线程叫做读者。写者必须拥有对对象的独占的访问,而读者可以和无限多个其他的读者共享对象。一般来说,有无限多个并发的读者和写者。读者一写者交互在现实系统中...

2020-04-30 14:34:13 800

原创 linux --线程(五)线程池模型

文章目录线程池(thread pool)线程池组成部分线程池生产者消费者模式示例线程池(thread pool)一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内...

2020-04-29 11:47:14 370

原创 linux --线程(四)posix信号量

文章目录信号量介绍posix信号量信号量如何来实现同步与互斥信号量与互斥锁之间的区别信号量介绍之前我们在进程间通信中也讲到过system V 信号量–>《信号量及pv操作》先列出用于同步的三种信号量1.System V信号量(在内核中维护):可用于进程或线程间的同步。2.Posix有名信号量(在内核中维护):使用PosixIPC名字标识(通过特定函数,调用一个绝对文件路径名作为参...

2020-04-21 12:38:25 814

原创 linux --线程(三)线程同步之条件变量

文章目录线程同步条件变量生产者消费者模型线程同步上一篇文章中我们讲述了如何使用互斥锁来实现线程间数据的共享和通信,但是互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其它的某个线程改变了条件变量...

2020-04-16 11:57:34 535 3

原创 linux -- 线程(二) 线程安全中的互斥量

文章目录前言再谈可重入与线程安全如何保证线程安全互斥互斥锁互斥量的接口使用死锁前言线程的数据处理: 和进程相比,线程的最大优点之一是数据的共享性,各个进程共享父进程处沿袭的数据段,可以方便的获得、修改数据。但这也给多线程编程带来了许多问题。我们必须当心有多个不同的进程访问相同的变量。许多函数是不可重入的,即同时不能运行一个函数的多个拷贝(除非使用不同的数据段)。在函数中声明的静态变量常常带...

2020-04-14 18:28:46 835 2

原创 c++ 泛型编程 初阶

文章目录泛型编程函数模板(function template)函数模板的原理函数模板的实例化模板参数的匹配原则类模板泛型编程还是先谈问题:之前学过的函数重载可以实现一个函数名多用,将实现相同或类似功能的函数用同一个函数名来定义。这样使编程者在调用同类函数时感到含义清楚,方法简单。但是在程序中仍然要分别定义每一个函数,如下三个Max函数的函数体是相同的,只是形参的类型不同,也要分别定义,只...

2020-04-11 12:31:13 241

原创 linux --线程(一 ) 线程基本概念及线程管理

文章目录线程引言线程特征线程具体概念线程基本概念线程是什么?从内核角度去分析进程与线程的比较总结进程ID和线程ID线程管理线程创建线程ID及进程地址空间布局线程终止线程等待线程分离线程绑定了解线程概念,理解线程与进程区别与联系。线程引言问题:为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?相比于多进程,多线程是一种非常"节俭"的多任务操作...

2020-04-09 12:41:00 807

空空如也

空空如也

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

TA关注的人

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