自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 vector 扩容为什么要以1.5倍或者2倍扩容

我们知道,vector 在需要的时候会扩容,在 VS 下是 1.5倍,在 GCC 下是 2 倍。那么会产生两个问题:(1)为什么是成倍增长,而不是每次增长一个固定大小的容量呢?(2)为什么是以 2 倍或者 1.5 倍增长,而不是以 3 倍或者 4 倍等增长呢?1、第一个问题 :如果已成倍方式增长。假定有 n 个元素,倍增因子为 m; 完成这 n 个元素往一个 vector 中的 push_...

2019-09-28 00:23:42 1236

转载 关于三次握手和四次挥手

通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任...

2019-04-24 23:31:10 156

原创 4.15c++学习笔记

1#include<iostream>using namespace std;int GetSize(int data[]){ return sizeof(data);}int main(){ int data1[5] = { 1,2,3,4,5 }; int size1 = sizeof(data1); int *data2 = data1; int size...

2019-04-15 23:47:58 123

原创 4.11 c++学习笔记

1.C语言中提供了存储说明符auto、register、extern、static说明的四种存储类别。auto:auto被定义为自动推断变量的类型,auto变量需要有实例进行初始化。register:将变量直接放进寄存器中,适合被频繁使用的变量extern:使用外部的全局变量static : 将变量存储在静态区中2.unsigned int n = -1;cout << n ...

2019-04-11 22:32:57 154

原创 对于const修饰符的总结

1.const和变量例如:const int a = 10;这将使得a的值为一个常量,后面无法改变,需要注意 使用const修饰的变量必须被初始化const int a;这样的代码会使得编译失败。2.const和引用int a = 10;const int &b = a; 使用const修饰的引用将无法改变引用对象的值,即类似b = 5;这样的代码会使得编译失败。...

2019-04-09 21:47:04 684

转载 C++异常处理

1.异常处理简介有的程序虽然能通过编译,也能投入运行。但是在运行过程中会出现异常,得不到正确的运行结果,甚至导致程序不正常终止,或出现死机现象。例如: .在一系列计算过程中,出现除数为0的情况。.内存空间不够,无法实现指定的操作。.无法打开输入文件,因而无法读取数据。.输入数据时数据类型有错。由于程序中没有对此的防范措施,因此系统只好终止程序的运行。这类错误比较隐蔽,易被发现,往往耗...

2019-04-08 19:52:50 274

原创 4.3c++学习笔记

1.重载运算符时,为什么流运算符要重载为友元?:c++中规定重载流运算符时 “>>”的函数的第一个参数和函数的类型都必须是istream&类型,第二个参数是要进行输入操作的类。重载“<<”的函数的第一个参数和函数的类型都必须是ostream&类型,第二个参数是要进行输出操作的类。即需要重载成istream & operator >> ...

2019-04-03 22:46:24 103

原创 4.2c++的学习笔记

1.如果extern声明有初始化表达式,那么它被认为是定义,而忽略extern,例如:extern int var = 6;//extern 将被忽略。2.

2019-04-02 17:57:12 120

原创 对单例设计模式的学习--饿汉式:结合智能指针的单例模式

先上代码#include<memory>#include<iostream>using namespace std;class CSingleton{public: static CSingleton* GetInstance(); ~CSingleton();private: CSingleton(); CSingleton(const CSingl...

2019-03-30 16:06:05 144

原创 对智能指针的学习

个人对智能指针的理解智能指针类,方便内存的管理。对于一般指针,空间被new出来后,需要显式地调用delete从而释放空间,否则就会有内存泄漏的问题。而智能指针的智能正是体现在这一方面,它不需要显式地调用delete,从而提高代码的容错率,减少了内存泄漏的可能。智能指针实质上是一个对象,但是表现却像一个指针,正常情况下,可以使用指针的->和*操作运算符。个人认为,智能指针的实质是用处于栈...

2019-03-29 22:55:39 131

原创 对单例设计模式的学习(二)--饿汉式:将对象建立在堆区的单例模式

将对象建立在堆区上文阐述的是将对象Instance建立在静态区的情况,这种对象会伴随着程序共同消亡,所以析构函数能够被调用到;同样的也将带来弊端,程序可能受内存限制,静态区的空间不足,且对象无法手动进行释放,所以就有了将对象建立在堆区new出来的形式。class CSingleton{public: static CSingleton *GetInstance(); static vo...

2019-03-29 19:21:51 165 1

原创 对单例设计模式的学习(一) --饿汉式:将对象建立在静态区的单例模式

个人对单例模式的理解:单例模式的设计是为了实现一个类只能有一个对象的情况,例如对于一个服务器而言,数据库类可以设计成单例模式的,保证数据传输的准确性。单例模式一般用于避免实例被重复创建,多个实例同时存在会产生逻辑错乱的场合,且单例模式较节约内存空间(因为只有一个对象)。单例模式的实现思路:将构造函数,赋值重载运算符,拷贝构造函数这三个会产生新对象的方法设置为private权限,以此来防止对象...

2019-03-29 17:25:34 425

原创 记linux下IO复用--IO复用的学习

1.区分堵塞、非堵塞在一个IO操作过程中,以read为例,会涉及到两个过程:1.等待数据准备好;2.将数据从内核拷贝到进程中这两个阶段是否发生阻塞,将产生不同的效果。堵塞IO:进程在请求read阻塞io的数据时,操作需要彻底完成后才返回到用户空间非堵塞IO:进程在步骤1不堵塞,如果数据没准备好,read(io操作)函数会立即返回一个状态值反馈给进程,所以对于非阻塞io,可以用一个w...

2019-03-21 21:19:27 651

原创 记linux下对网络IPC:套接字socket的学习

套接字描述符所谓套接字描述符是用于 网络进程间的通信。套接字是通信端点的抽象,正如进程使用文件描述符访问文件,应用程序用套接字描述符访问套接字。为调用一个套接字,调用socket。int socket(int domain,int type,int protocol)返回值:成功返回文件描述符,失败返回-1;参数:domain(域):确定通信的特性,包括地址格式,每种域都有自己的地址格...

2019-03-11 23:15:19 128

原创 记linux下对线程池的学习及使用(二)--对线程池类的封装

phreadpool.h#ifndef _PTHREADPOOL_H#define _PTHREADPOOL_H#include &amp;amp;lt;list&amp;amp;gt;#include &amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;unistd.h&amp;amp;gt;#include &amp;quot;PThreadCond.h&amp;quot;#

2019-03-09 17:30:21 378 1

原创 记linux下对线程池的学习及使用(一)

什么是线程池线程池就是一个拥有许多线程的一个容器,通常线程池中的线程可通过条件量设置为休眠状态,待到条件改变即线程池发现了新的可执行任务的时候,会随机唤醒一个等待线程从任务队列中提取任务并且执行。为什么需要线程池如果没有线程池,可以假想在一个服务端在要处理的事件的时候,大概可分为三步,分别是1.创建线程 2.线程执行具体任务 3.销毁线程。如果处理的具体任务是一个很简单的任务,那么第一步和...

2019-03-09 14:00:41 285

原创 记linux下对条件量及互斥量的学习(二) --对条件量和互斥量的类封装

在了解了这两个线程间方式的API函数后,现在对它们进行封装,下面是封装源码pthread_mutex.h#ifndef PTHREADMUTEX_H#define PTHREADMUTEX_H#include &lt;stdio.h&gt;#include &lt;pthread.h&gt;class CPThreadMutex{public: CPThreadMutex()...

2019-03-09 10:48:08 179

原创 记linux下对条件量的学习(一)

信号量,互斥量,条件量是线程间保证线程同步的三种方式,其中信号量和互斥量是通过堵塞的方式来实现资源的竞争,试想一下,如果有多个消费者线程同时在等待一个生产者生产产品时,如果只用到互斥量,那么每个消费者线程在访问产品这个临界资源的时候都需要对互斥量metex进行先上锁,读取并且判断有无产品,再解锁地操作。但这是在浪费时间和资源,而且这种繁忙查询的效率非常低。同样,在每次检查之间让线程短暂地进入睡眠,...

2019-03-07 23:25:39 470

原创 记linux下对线程的学习(二)--对基本线程类的封装

在了解了线程的接口函数后,同共享内存一样,接下来将对线程类进行封装。直接上代码:BaseThread.h#ifndef BASETHREAD_H_#define BASETHREAD_H_#include &lt;pthread.h&gt;#include &lt;stdio.h&gt;#include &lt;unistd.h&gt;class CBaseThread{p...

2019-03-07 18:28:09 255

原创 记linux下对线程的学习(一)

现在开始对线程的学习首先是百度上的线程的概念解释线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源...

2019-03-07 17:26:43 197

原创 记linux下共享内存的学习(二)之对共享内存的封装

在学习了共享内存函数的使用方法以及使用信号量来确保不同进程间对共享内存操作时的互斥性后,这一次开始学习将共享内存封装成c++类的形式,方便以后的项目过程中可以直接使用它。下面展示的是共享内存的头文件#ifndef _SHM_FIFO_H_#define _SHM_FIFO_H_#include &lt;iostream&gt;#include &lt;sys/types.h&gt;#...

2019-03-07 11:28:48 881 3

原创 记linux下进程间通信方式之信号量--对信号量的学习

对信号量的学习前面已经学习了共享内存的几个api函数,在两个进程间通信时,一个进程进行读操作,一个进程进行写操作,这种情况下,可以保证原子性,但是当有同一时刻有多个进程对该共享内存进行写操作时,就可能导致数据的丢失,前面写的函数就不适用了,这个时候,信号量就可以派上用场。信号量的概念信号量作为进程间通信的一种方式,实际上并不能作为数据交换的载体,而是一种类似锁地机制,几个进程间都可以通过获取...

2019-03-05 23:20:45 244

原创 记linux下进程间通信方式之共享内存(一)

共享内存是进程间通信中效率极高的一种方案,以下是我对共享内存的探索学习过程。这个是共享内存的具象化,进程A和进程B两个不相关的进程都可以通过特殊的连接方式共同访问使用同一块内存。共享内存中涉及到的如下几个函数1. int shmget(key_t key,size_t size,int shmflg);作用:用来创建共享内存返回值:共享内存段的id,供shmat使用形参:key :...

2019-03-05 19:23:57 211

原创 记几个常用的linux下操作命令

为了方便记忆,首先对linux下的操作命令进行分类:简单系统管理类、文件与目录管理类,进程管理类与作业调度类。简单系统管理类1.关机 : shutdown 后缀加 -r 关机重启 后缀加 -c 可取消pending(即将发生的)的关机事件2.who : 查看当前登录的所有用户信息3. id : 显示当前用户名和组名4. su : 用于用户间的跳转 (需要注意的是当root用户跳到...

2019-03-04 22:22:39 141

空空如也

空空如也

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

TA关注的人

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