自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 保护模式

全局描述符表GDT中存放着段描述符, 每个段描述符8个字节. 为了跟踪全局描述符表, 处理器内部有一个48位寄存器, 叫做全局描述符表寄存器(GDTR), GDTR分为两部分,分别为32位的线性地址和16的边界, 32位线性基地址部分保存的是全局描述符表在内存中的起始线性地址, 16位边界部分是全局描述符表的边界(界限), 其值等于表的大小(总字节数) - 1, 因为从偏移0开始. 如果界限值...

2018-08-30 00:59:34 865

原创 tcp协议为什么不是两次或者四次而是三次握手。

tcp协议为什么不是两次或者四次而是三次握手。      是为了防止已经失效的连接请求报文段又突然传送给服务器。我的理解是这样的:在网络拥塞的情况下,客户端向服务器发送连接请求报文段1,由于网络拥塞,导致连接请求报文段1不能及时到达服务器,然后因为有超时重传机制、于是客户端再重传一次连接请求。建立了连接,在交互完成后,连接被释放(客户端关闭)。但是此时,延迟的连接请求报文段1到达了服务器,...

2018-08-22 23:16:38 309

转载 海量数据处理算法--Bloom Filter

转自:https://www.toutiao.com/a6586856657597235715/?tt_from=mobile_qq&utm_campaign=client_share&timestamp=1533891918&app=news_article&utm_source=mobile_qq&iid=39103123001&utm_me...

2018-08-22 20:45:55 252

原创 C++四种强转

标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。一、reinterpret_cast(不安全,类似于C语言的强制转换)reinterpret_cast转换是在类C转换的基础上,在编译期间,约束了整型、浮点型和枚举类型的相互转换。用法:reinpreter_cast<type-id> (...

2018-08-17 19:18:50 561

转载 内存管理篇

关于虚拟内存有三点需要注意:4G的进程地址空间被人为的分为两个部分--用户空间与内核空间。用户空间从0到3G(0xc0000000),内核空间占据3G到4G。用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址。   例外情况只有用户进程进行系统调用(代表用户进程在内核态执行)等时刻可以访问到内核空间。 用户空间对应进程,所以每当进程切换,用户空间就会跟着变化;而内核空间...

2018-08-13 21:41:13 108

原创 kmalloc()和vmalloc()

一、vmalloc()函数为了把物理上不连续的页面转换为虚拟地址空间上连续的页,必须专门建立页表项。还有,通过vmalloc()获得的页必须一个一个的进行映射(因为它们物理上不是连续的),这就会导致比直接内存映射大得多的缓冲区刷新。因为这些原因,vmalloc()仅在绝对必要时才会使用——典型的就是为了获得大块内存时,例如,当模块被动态插入到内核中时,就把模块装载到由vmalloc()分配的内存上...

2018-08-13 20:55:33 3864

原创 HTTP与HTTPS

一、HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因为加密的详细内容就需要SSL。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了...

2018-08-10 13:46:26 454

原创 进程间通讯方式

一、进程间通讯:每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。二、进程间通讯方式:信号,管道,信号量,共享内存,消息队列,socket0、信号是系统提前规定好的一些特定的事件,信号可以被产生,也...

2018-08-09 16:10:45 331

原创 TCP与UDP区别

1、面向报文与面向字节流的区别:面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。面向字节流的话...

2018-08-09 14:28:20 193

原创 红黑树与AVL树区别

1、调整平衡的实现机制不同:红黑树根据节点颜色(同一双亲节点出发到哨兵节点,所有路径上的黑色节点数目一样),一些约定和旋转实现;AVL根据树的平衡因子(所有节点的左右子树高度差的绝对值不超过1)和旋转决定2、红黑树的插入效率更高!!!红黑树是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决,红黑树并不追求“完全平衡”,它只要求部分地达到平衡要求,降低...

2018-08-09 00:08:09 10111

原创 内联函数和宏、普通函数、static的区别

内联函数:1、对inline函数的处理发生在编译阶段,在调用点,把函数的代码直接展开,省去了函数栈帧的开销,代码运行效率高2、会进行类型检查(编译阶段),比宏更安全3、inline只在Release版本下才生效,即在debug版本下,inline和普通函数一样,也有栈帧的开辟和回退4、debug下,可以进行调试宏:1、预编译阶段处理的,纯粹是字符替换2、没有任何的类型检...

2018-08-05 01:36:49 307

原创 epoll 底层实现总结

当一进程调用epoll_create方法时,Linux内核会创建一个eventpoll结构体,这个结构体中有两个成员与epoll的使用方式密切相关。eventpoll结构体如下所示:struct eventpoll{    ....    /*红黑树的根节点,这颗树中存储着所有添加到epoll中的需要监控的事件*/    struct rb_root  rbr;    /*双链表...

2018-08-04 00:55:04 1113

原创 I/O复用:select、poll、epoll区别

select 和poll的区别:select:select的触发方式是水平触发(LT),应用程序如果没有完成对一个已经就绪的文件描述符进行IO操作,那么之后每次select调用还是会将这些文件描述符通知进程。创建数组,保存描述符(一次while要做的事:)清空集合FD_ZERO 遍历数组,将fd写入fdset集合中(由于内核对fd_set的修改,应用程序下次调用select...

2018-08-04 00:25:07 311

原创 TCP三次握手,四次挥手

TCP报头:三次握手流程图: 四次挥手流程图:TIME_WAIT状态存在原因:1).保证可靠的终止TCP协议.if客户端给服务器发送的ACK丢失,而服务器将一直处于LAST_ACK状态,如果服务器利用超时重传机制再给客户端发送释放连接请求时,客户端由于已经进入CLOSED状态就接收不到任何数据,因而导致服务器没有机会进入CLOSED状...

2018-08-02 15:32:58 222

原创 多态

一、继承是多态的基础。多态:同一接口,不同实现二、静态多态:就是在系统编译期间就可以确定程序执行到这里将要执行哪个函数,例如:函数的重载,对象名加点操作符执行成员函数,模板等,都是静态多态。其中,重载是在形成符号表的时候,对函数名做了区分,从而确定了程序执行到这里将要执行哪个函数,对象名加点操作符执行成员函数是通过this指针来调用的。也就是早绑定或静态绑定:编译期间确定函数调用   ...

2018-08-02 15:31:23 170

原创 c++:向a.txt里输入一组数据

方法一、c++句柄 ------ Linux文件描述符#include <iostream>#include <fstream>#include <functional>#include <iterator>using namespace std;int main(){ ofstream outfile("a.txt");/...

2018-08-02 14:43:57 323

原创 C++继承

一、继承作用:进行代码复用,将重复的部分作为公共部分来使用,从而不必在构建每一个类的时候都将相同的部分在写一遍。通过继承,可以获得父类的所有功能,并且可以重写已有功能,添加新功能。二、继承的规则与特点:1. 子类对象在创建时调用父类的构造函数,然后在调用自己的构造函数;先基类构造再派生构造。2. 子类可以直接使用父类的成员函数,也就是子类拥有父类的所有属性和行为。子类可以当做父类对象使用...

2018-08-02 00:40:41 247

原创 delete、truncate、drop区别

(1) DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。 TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。 并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。 (2) 表和索引所占空间。当表被TRUNCATE 后...

2018-08-01 17:48:49 175

空空如也

空空如也

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

TA关注的人

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