自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux下批量替换多个文件中的字符串

Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。用sed命令可以批量替换多个文件中的 字符串。sed -i “s/原字符串/新字符串/g” grep 原字符串 -rl 所在目录例如:我要把mahuinan替换 为huinanma,执行命令:sed -i “s/mahuinan/huinanma/g” ‘grep mahuinan -rl /ww...

2019-07-10 15:46:11 981

原创 有了进程,为什么还要有线程?

线程产生的原因:进程可以使多个程序能并发执行,以提高资源的利用率和系统的吞吐量;但是其具有一些缺点:进程在同一时间只能干一件事进程在执行的过程中如果阻塞,整个进程就会挂起,即使进程中有些工作不依赖于等待的资源,仍然不会执行。因此,操作系统引入了比进程粒度更小的线程,作为并发执行的基本单位,从而减少程序在并发执行时所付出的时空开销,提高并发性。和进程相比,线程的优势如下:从资源上来讲,线程...

2019-07-09 19:48:53 1615 1

原创 什么是大端小端以及如何判断大端小端

大端是指低字节存储在高地址;小端存储是指低字节存储在低地址。我们可以根据联合体来判断该系统是大端还是小端。因为联合体变量总是从低地址存储。...

2019-07-09 19:47:52 694

原创 操作系统中的页表寻址

页式内存管理,内存分成固定长度的一个个页片。操作系统为每一个进程维护了一个从虚拟地址到物理地址的映射关系的数据结构,叫页表,页表的内容就是该进程的虚拟地址到物理地址的一个映射。页表中的每一项都记录了这个页的基地址。通过页表,由逻辑地址的高位部分先找到逻辑地址对应的页基地址,再由页基地址偏移一定长度就得到最后的物理地址,偏移的长度由逻辑地址的低位部分决定。一般情况下,这个过程都可以由硬件完成,所以效...

2019-07-09 19:38:00 2550

原创 软链接和硬链接区别

为了解决文件共享问题,Linux引入了软链接和硬链接。除了为Linux解决文件共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若1个inode号对应多个文件名,则为硬链接,即硬链接就是同一个文件使用了不同的别名,使用ln创建。若文件用户数据块中存放的内容是另一个文件的路径名指向,则该文件是软连接。软连接是一个普通文件,有自己独立的inode,但是其数据块内容比较特殊。https:/...

2019-07-09 19:30:24 121

原创 inner join和left join

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行...

2019-07-03 21:41:25 174

原创 数字证书是什么,里面都包含那些内容

1)概念:数字证书是数字证书在一个身份和该身份的持有者所拥有的公/私钥对之间建立了一种联系,由认证中心(CA)或者认证中心的下级认证中心颁发的。根证书是认证中心与用户建立信任关系的基础。在用户使用数字证书之前必须首先下载和安装。认证中心是一家能向用户签发数字证书以确认用户身份的管理机构。为了防止数字凭证的伪造,认证中心的公共密钥必须是可靠的,认证中心必须公布其公共密钥或由更高级别的认证中心提供...

2019-07-03 21:08:09 21493

原创 socket编程中服务器端和客户端主要用到哪些函数 介绍一下udp的connect函数

1)基于TCP的socket:1、服务器端程序:1创建一个socket,用函数socket()2绑定IP地址、端口等信息到socket上,用函数bind()3设置允许的最大连接数,用函数listen()4接收客户端上来的连接,用函数accept()5收发数据,用函数send()和recv(),或者read()和write()6关闭网络连接2、客户端程序:1创建一个socket,用...

2019-07-03 21:02:50 3095

原创 GET和POST的区别

1、概括对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)2、区别:1、get参数通过url传递,post放在request body中。2、get请求在url中传递的参数是有长度限制的,而post...

2019-07-03 21:02:41 96

原创 IP层怎么知道报文该给哪个应用程序区分UDP报文还是TCP报文 TCP和UDP的区别 具体网络层的操作该怎么做 server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?

IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文根据端口区分;看ip头中的协议标识字段,17是udp,6是tcp1)TCP和UDP区别1) 连接TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接。UDP无连接。2) 服务对象TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。3) 可靠性...

2019-07-01 22:23:29 3078 1

原创 搜索baidu,会用到计算机网络中的什么层?每层是干什么的

浏览器中输入URL浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS服务...

2019-07-01 21:59:34 1617 1

原创 IP地址作用,以及MAC地址作用 OSI七层模型和TCP/IP四层模型,每层列举2个协议 TCP/IP数据链路层的交互过程

MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。而IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。OSI七层模型及其包含的协议如下:物理层: **通过媒介传输比特,**确定机械及电气规范,传输单位为bit,主要包括的协议为:IEE802.3 CLOCK RJ45数据链路层: 将比特组装成帧和点到...

2019-07-01 21:32:41 1969

原创 介绍http协议 HTTP和HTTPS的区别,以及HTTPS有什么缺点? HTTP返回码 http协议会话结束标志怎么截出来?

HTTP协议和HTTPS协议区别如下:1)HTTP协议是以明文的方式在网络中传输数据,而HTTPS协议传输的数据则是经过TLS加密后的,HTTPS具有更高的安全性2)HTTPS在TCP三次握手阶段之后,还需要进行SSL 的handshake,协商加密使用的对称加密密钥3)HTTPS协议需要服务端申请证书,浏览器端安装对应的根证书4)HTTP协议端口是80,HTTPS协议端口是443HTT...

2019-07-01 21:14:31 621

原创 TCP怎么保证可靠性,TCP拥塞控制?以及达到什么情况的时候开始减慢增长的速度?并且简述一下TCP建立连接和断开连接的过程 为什么会采用三次握手,若采用二次握手可以吗

TCP保证可靠性:(1)序列号、确认应答、超时重传数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接收的数据序列号。如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是2*RTT(报文段往返时间)+一个偏差值。(2)窗口控制与高速重发控制/快速重传(重复确认应答)...

2019-07-01 21:10:58 491

原创 MySQL的端口号是多少,如何修改这个端口号

查看端口号:使用命令show global variables like ‘port’;查看端口号 ,mysql的默认端口是3306。(补充:sqlserver默认端口号为:1433;oracle默认端口号为:1521;DB2默认端口号为:5000;PostgreSQL默认端口号为:5432)修改端口号:修改端口号:编辑/etc/my.cnf文件,早期版本有可能是my.conf文件名,增加端...

2019-07-01 20:17:58 2122

原创 操作系统中的缺页中断 操作系统中的中断

malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间,并没有分配虚拟内存对应的物理内存。当进程访问这些没有建立映射关系的虚拟内存时,处理器自动触发一个缺页异常。缺页中断:在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页面是否存在于内存中。每当所要访问的页面不在内存是,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,将其调入内...

2019-07-01 17:04:10 5052

原创 请你说一说Linux虚拟地址空间 操作系统中的页表寻址

为了防止不同进程同一时刻在物理内存中运行而对物理内存的争夺和践踏,采用了虚拟内存。https://blog.csdn.net/programmingring/article/details/21258529虚拟内存技术使得不同进程在运行过程中,它所看到的是自己独自占有了当前系统的4G内存。所有进程共享同一物理内存,每个进程只把自己目前需要的虚拟内存空间映射并存储到物理内存上。 事实上,在每个进...

2019-07-01 16:22:25 1635

原创 进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的

基本概念:进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等)...

2019-06-29 20:46:14 1089

原创 C++11中的可变参数模板、右值引用和lambda这几个新特性。

可变参数模板:C++11的可变参数模板,对参数进行了高度泛化,可以表示任意数目、任意类型的参数,其语法为:在class或typename后面带上省略号”。例如:Template<class … T>void func(T … args){cout<<”num is”<<sizeof …(args)<<endl;}unc();//arg...

2019-06-29 17:20:16 1171

原创 C++11有哪些新特性

C++11 最常用的新特性如下:auto关键字:编译器可以根据初始值自动推导出类型。但是不能用于函数传参以及数组类型的推导nullptr关键字:nullptr是一种特殊类型的字面值,它可以被转换成任意其它的指针类型;而NULL一般被宏定义为0,在遇到重载时可能会出现问题。智能指针:C++11新增了std::shared_ptr、std::weak_ptr等类型的智能指针,用于解决内存管理的问...

2019-06-28 20:38:54 763

原创 C++ STL 的内存优化

1)二级配置器结构STL内存管理使用二级内存配置器。1、第一级配置器第一级配置器以malloc(),free(),realloc()等C函数执行实际的内存配置、释放、重新配置等操作,并且能在内存需求不被满足的时候,调用一个指定的函数。一级空间配置器分配的是大于128字节的空间如果分配不成功,调用句柄释放一部分内存如果还不能分配成功,抛出异常2、第二级配置器在STL的第二级配置器中多...

2019-06-28 16:10:37 725

原创 reactor模型组成 如何采用单线程的方式处理高并发

reactor模型要求主线程只负责监听文件描述上是否有事件发生,有的话就立即将该事件通知工作线程,除此之外,主线程不做任何其他实质性的工作,读写数据、接受新的连接以及处理客户请求均在工作线程中完成。其模型组成如下:https://blog.csdn.net/wanbf123/article/details/780628021)Handle:即操作系统中的句柄,是对资源在操作系统层面上的一种抽...

2019-06-27 16:02:30 681

原创 请你来说一下共享内存相关api

Linux允许不同进程访问同一个逻辑内存,提供了一组API,头文件在sys/shm.h中。1)新建共享内存shmgetint shmget(key_t key,size_t size,int shmflg);key:共享内存键值,可以理解为共享内存的唯一性标记。size:共享内存大小shmflag:创建进程和其他进程的读写权限标识。返回值:相应的共享内存标识符,失败返回-12)连接共...

2019-06-27 15:37:09 965

原创 什么是memory leak,也就是内存泄漏 如何判断内存泄漏 什么时候会发生段错误

内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的分类:堆内存泄漏 (Heap leak)。对内存指的是程序运行中根据需要分配通过malloc,realloc new等从堆中分配的一块内存,再是完成后必须通过调用对应...

2019-06-27 15:25:25 5041

原创 C++的内存管理是怎样的 C++/C的内存分配

32bitCPU可寻址4G线性空间,每个进程都有各自独立的4G逻辑地址,其中0-3G是用户态空间,3~4G是内核空间,不同进程相同的逻辑地址会映射到不同的物理地址中。其逻辑地址其划分如下:各个段说明如下:3G用户空间和1G内核空间静态区域:text segment(代码段):包括只读存储区和文本区,其中只读存储区存储字符串常量,文本区存储程序的机器代码。data segment(数据段)...

2019-06-27 15:13:54 585

原创 C++源文件从文本到可执行文件经历的过程? 双引号和尖括号的区别

C++源文件从文本到可执行文件经历的过程?对于C++源文件,从文本到可执行文件一般需要四个过程:预处理阶段:对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生成预编译文件。预处理主要包含下面的内容:a.对所有的“#define”进行宏展开;b.处理所有的条件编译指令,比如“#if”,“#ifdef”,“#elif”,“#else”,“#endif”c.处理“#...

2019-06-26 15:13:15 205

原创 什么是右值引用,跟左值又有什么区别?

右值引用是C++11中引入的新特性 , 它实现了转移语义和精确传递。它的主要目的有两个方面:消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。能够更简洁明确地定义泛型函数。左值和右值的概念:左值:能对表达式取地址、或具名对象/变量。一般指表达式结束后依然存在的持久对象。右值:不能对表达式取地址,或匿名对象。一般指表达式结束就不再存在的临时对象。右值引用和左值引...

2019-06-26 14:56:50 2638

原创 C++类内可以定义引用数据成员吗? C++中struct和class的区别

1 C++类内可以定义引用数据成员吗?可以,必须通过成员函数初始化列表初始化。2 C++中struct和class的区别在C++中,可以用struct和class定义类,都可以继承。区别在于:structural的默认继承权限和默认访问权限是public,而class的默认继承权限和默认访问权限是private。另外,class还可以定义模板类形参,比如template <class...

2019-06-25 17:39:43 4058

原创 STL里resize和reserve的区别

resize():改变当前容器内含有元素的数量(size()),eg: vectorv; v.resize(len);v的size变为len,如果原来v的size小于len,那么容器新增(len-size)个元素,元素的值为默认为0.当v.push_back(3);之后,则是3是放在了v的末尾,即下标为len,此时容器是size为len+1;reserve():改变当前容器的最大容量(capac...

2019-06-25 17:30:11 342

原创 n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N)

vector findMax(vectornum){if(num.size()==0)return num;vectorres(num.size());int i=0;stacks;while(i<num.size()){if(s.empty()||num[s.top()]>=num[i]) //将不符合要求的下标先保存在栈中{s.push(i++);...

2019-06-25 17:27:04 1363

原创 STL迭代器删除元素 STL有什么基本组成 STL中迭代器的作用,有指针为何还要迭代器

这个主要考察的是迭代器失效的问题。1.对于序列容器vector,deque来说,使用erase(itertor)后,后边的每个元素的迭代器都会失效,但是后边每个元素都会往前移动一个位置,但是erase会返回下一个有效的迭代器;2.对于关联容器map set来说,使用了erase(iterator)后,当前元素的迭代器失效,但是其结构是红黑树,删除当前元素的,不会影响到下一个元素的迭代器,所以在...

2019-06-25 16:52:38 438

原创 vector和list的区别,应用

1、概念:1)Vector连续存储的容器,动态数组,在***堆上***分配空间底层实现:数组两倍容量增长:vector 增加(插入)新元素时,如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后调整迭代器。如果没有剩余空间了,则会重新配置原有元素个数的两倍空间,然后将原空间元素通过复制的方式初始化新空间,再向新空间增加元素,最后析构并释放原空间,之前的迭代器会...

2019-06-25 16:43:06 181

原创 map和set有什么区别,分别又是怎么实现的?

map和set都是C++的关联容器,***其底层实现都是红黑树(***RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调 RB-tree 的操作行为。map和set区别在于:(1)map中的元素是key-value(关键字—值)对:关键字起到索引的作用,值则表示与索引相关联的数据;Set与之相对就是关...

2019-06-25 16:07:48 13564

原创 说一说select epoll原理 区别,原理,性能,限制都说一说

select在使用前,先将需要监控的描述符对应的bit位置1,然后将其传给select,当有任何一个事件发生时,select将会返回所有的描述符,需要在应用程序自己遍历去检查哪个描述符上有事件发生,效率很低,并且其不断在内核态和用户态进行描述符的拷贝,开销很大...

2019-06-25 16:00:07 969

转载 C语言是怎么进行函数调用的 参数压栈顺序 C++如何处理返回值

1 C语言是怎么进行函数调用的?每一个函数调用都会分配函数栈,在栈内进行函数执行过程。调用前,先把返回地址压栈,然后把当前函数的esp指针压栈。2 C语言参数压栈顺序?从右到左3 C++如何处理返回值?生成一个临时变量,把它的引用作为函数参数传入函数内。4 C++中拷贝赋值函数的形参能否进行值传递?不能。如果是这种情况下,调用拷贝构造函数的时候,首先要将实参传递给形参,这个传递的时...

2019-06-25 15:35:50 1202

原创 RTTI 运行时类型检查 虚函数

在C++层面主要体现在dynamic_cast和typeid,VS中虚函数表的-1位置存放了指向type_info的指针。对于存在虚函数的类型,typeid和dynamic_cast都会去查询type_infoRTTI即运行时类型识别,用来识别动态对象的类型。即使我们仅仅有基类的指针和引用,可以识别出该指针和引用所指向那个类(基类或派生类)。RTTI会带来一定的性能开销。RTTI 运行时类型识...

2019-06-25 15:23:11 229

原创 new/delete与malloc/free的区别是什么 STL的allocaotr brk系统调用和mmap系统调用的作用分别是什么

首先,new/delete是C++的关键字,而malloc/free是C语言的库函数,后者使用必须指明申请内存空间的大小,对于类类型的对象,后者不会调用构造函数和析构函数...

2019-06-25 15:01:18 348

原创 说一说extern“C”

C++调用C函数需要extern C,因为C语言没有函数重载。extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函...

2019-06-25 14:55:00 528

原创 重载和覆盖

重载:两个函数名相同,但是参数列表不同(个数,类型),返回值类型没有要求,在同一作用域中重写:子类继承了父类,父类中的函数是虚函数,在子类中重新定义了这个虚函数,这种情况是重写如果在只修改一个字符的前提下,使代码输出20个hello? for(int i = 0; i < 20; i–) cout << “hello” << endl;for(int i = 0...

2019-06-24 20:24:45 120

原创 请你来说一下fork函数 fork和vfork的区别

Fork:创建一个和当前进程映像一样的进程可以通过fork( )系统调用:fork()用法#include <sys/types.h>#include <unistd.h>pid_t fork(void);成功调用fork( )会创建一个新的进程,它几乎与调用fork( )的进程一模一样,这两个进程都会继续运行。在子进程中,成功的fork( )调用会返回0。在父进程...

2019-06-24 19:18:53 315

空空如也

空空如也

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

TA关注的人

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