自定义博客皮肤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)
  • 收藏
  • 关注

原创 网络---Reactor与Proactor模式

一、同步、异步、阻塞、非阻塞同步I/O模型:工作线程执行I/O操作(逻辑单元),即主线程(I/O单元)向工作线程通知的是I/O就绪事件。I/O的读写操作发生在I/O事件之后。I/O处理单元:只负责监听文件描述符上的事件。逻辑单元:读写数据,接收新的连接。利用请求队列异步I/O模型:用户直接对I/O执行读写操作,这些操作告诉内核用户读写缓冲区的位置,以及I/O操作完成后内核通知...

2019-03-28 21:01:23 162

原创 数组与字符串

题目:二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:找出二维数组的规律,从左下到右上查找最快。提高:代码优化class Solution {public: bool Find(int target, ve...

2019-03-07 11:54:12 172

原创 Linux基础

Ctrl+c键来强行终止当前程序(你可以放心它并不会使终端退出)。其他一些常用快捷键按键 作用 Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行 Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg Ctrl+a 将光标移至输入行头,相当于Home键 Ctrl+e 将光标移至输入行末,相...

2019-03-04 17:25:45 100

原创 C++继承和多态

单继承时派生类的定义 语法 class Derived: public Base{public:Derived ();~Derived ();};不同继承方式的影响主要体现在:派生类成员对基类成员的访问权限 通过派生类对象对基类成员的访问权限公有继承(public)继承的访问控制 基类的public和protected成员:访问属性在派生类中保持不...

2019-03-04 16:05:53 148

原创 二叉树题目

题目:重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:利用递归,将前序遍历的第一个节点做根节点,将中序遍历由根节点分开,又分别作为左子树与右子树的中序遍历还可以提高的地方:以根...

2019-02-28 21:23:57 115

原创 C++程序设计数组、指针、字符串

以指针作为函数参数为什么需要用指针做参数?需要数据双向传递时(引用也可以达到此效果)用指针作为函数的参数,可以使被调函数通过形参指针存取主调函数中实参指针指向的数据,实现数据的双向传递需要传递一组数据,只传首地址运行效率比较高实参是数组名时形参可以是指针指针类型的函数若函数的返回值是指针,该函数就是指针类型的函数。 指针函数的定义形式存储类型 数据类型 *函数名(...

2019-02-22 20:57:10 245

原创 More Effective C++

条款六:前置++与后置++的区别前置式返回一个引用,后置式返回一个const对象。前置式类加后取出UPInt& UPInt::operator++(){ *this += 1; return *this;}后置式:取出然后累加const UPInt UPInt::operator++(int) //函数体内有不使用的参数,很多编译器会发出警告。略去不使用...

2019-02-22 15:36:10 172

原创 c++程序设计类和对象

设计类此类型的合法值是什么? 此类型应该有什么样的函数和操作符 新类型的对象该如何被创建和销毁 如何进行对象的初始化和赋值 对象作为函数参数如何以值传递 谁将使用此类型的对象成员语法形式class 类名称{ public: 公有成员,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。 private: 私有成员...

2019-02-20 21:58:07 160

原创 c++程序设计函数

函数的参数传递在函数被调用时才分配形参的存储单元实参可以是常量,变量,或者表达式实参类型必须与形参相符值传递是传递参数值,即单向传递引用传递可以实现双向传递常引用参数可以保障实参数据的安全含有可变参数的函数如果所有的实参类型相同,可以传递一个名为initializer_list的标准库类型 如果实参的类型不同,我们可以编写可变参数的模板initializer_l...

2019-02-19 09:50:04 248

转载 libevent源码V--bufferevent源码

参考:http://blog.csdn.net/luotuo44/article/details/39344743bufferevent结构体:        bufferevent其实也就是在event_base的基础上再进行一层封装,其本质还是离不开event和event_base,从bufferevent的结构体就可以看到这一点。        bufferevent结构体中有两个...

2018-12-28 11:18:27 149

原创 libevent源码IV--bufferevent概念

bufferevent基础和概念Libevent为这种带缓存的IO模式提供了一个通用的机制。一个”bufferevent”包含一个底层传输(比如socket),一个读buffer和一个写buffer。当底层传输可读写时就调用回调函数,这是普通事件的处理,而bufferevent是在读或写足够的数据时才调用用户指定的回调函数。每个bufferevent都有一个输入缓存和一个输出缓存,对应的数...

2018-12-27 10:59:06 149

原创 libevent源码III--event_base_dispatch()事件循环

Reactor模式中的Event、Event Handler、Reactor目前都完成了,下面就剩Event Demultiplexer了这一步通过event_base_dispatch()完成intevent_base_dispatch(struct event_base *event_base){ return (event_base_loop(event_base, 0))...

2018-12-25 16:39:49 3338

原创 libevent源码II--event事件处理器

libevent的核心-eventstruct event* signal_event = evsignal_new(base, SIGINT, signal_cb, base);event_add(signal_event, NULL);Libevent是基于事件驱动(event-driven)的,从名字也可以看到event是整个库的核心。event就是Reactor框架中的事件处理...

2018-12-25 15:48:09 176

原创 libevent源码I---hello-word

 struct event_base* base = event_init();函数event_init();该函数创建了一个event_base对象,一个event_base对象相当于一个Reactor实例。struct event_base *event_init(void){ struct event_base *base = event_base_new()...

2018-12-24 17:52:44 197

原创 李治军课程------第三天多进程图像

一、宏观模型             给CPU地址,CPU去内存中找到对应的数据。每种指令的效率不同(CPU操作比IO操作快1百万倍)为了提高CPU使用率,引入了多进程概念。进程间的切换可以用PC指针来操作,但是还需要PCB(数据结构)来记录切换时进程的状态。二、组织管理进程,分配资源             进程的五种状态:新建,就绪,阻塞,运行,终止。每个进程都有自己的状态,CPU...

2018-10-05 16:22:15 244

原创 李治军课程---第二天操作系统接口

操作系统接口一、应用程序(用户)得以与计算机交互的原因:os提供了printf,fork,exec等函数(接口)。问题:1)提供哪些系统调用?2)图形用户接口(GUI)怎么调用?二、实现系统调用1、将内核程序和用户程序隔离----硬件实现了内核态可以访问任何数据,用户态不能访问内核数据。因为CS:IP是当前指令,所以用CS的最低两位来表示:0是内核态,3是用户态。2、硬件提供了...

2018-10-05 08:51:04 252

原创 李志军课程---第一天操作系统启动

一、学习操作系统的深度层次一:从应用软件出发“探到操作系统”,主要讲解如何使用操作系统提供的接口如:printf/fork/open/read等。 层次二:从应用软件出发“进入操作系统”:了解操作提供的系统接口是如何实现的,可以自己给操作系统增加服务接口,为新的硬件写驱动程序等。 层次三:硬件出发“设计操作系统”,给一个硬件板子,通过查硬件手册,可以自己配一个操作系统,针对这个板子实现自己...

2018-10-03 21:25:27 695

原创 防火墙

一、防火墙就是可以选择数据包可以转发到另一边,哪些数据包不需要转发。二、防火墙的判断依据:1)各层数据包包头信息。链路层,网络层,传输层;2)数据包的数据内容;3)连接状态。三、防火墙的分类:1)数据包过滤防火墙 2)应用层防火墙四、防火墙类型:1)单机防火墙 2)网关防火墙 3)透明防火墙...

2018-10-03 11:28:35 284

原创 进程linux

进程分为:交互进程,批处理进程,守护进程1、进程中有3种不同的数据段,分别是代码段,数据段,堆栈段。代码段:可执行文件的操作指令和程序定义的常量,只允许读取,不可修改;数据段:分为初始化数据段和未初始化数据段。初始化数据段保存已经初始化的全局变量和程序的静态变量;未初始化数据管用于保存未初始化的全局变量;堆栈段:存放进程中动态分配的内存地址;栈中保存程序中创建的临时变量,函数调用时传递的参数,...

2018-10-03 11:10:32 89

原创 TCP/IP协议模型---linux网络安全技术与实现

TCP/IP协议模型分为4层:1、应用层--常用协议包括HTTP、HTTPS、SMTP、POP3、FTP等,主要是客户端与服务器端的数据交换方法。2、传输层--定义数据传输的方法,主要定义了两种协议,分别是TCP协议与UDP协议。TCP协议在传输数据时会检查数据的完整性(列如传输邮件);UDP协议主要是满足效率要求(如广播电台)3、网络层--使用IP地址来定位网络上的计算机,采用路由方...

2018-10-02 20:01:55 314

原创 构造函数

a、初始值列表:1)立即进行初始化;2)先定义、再赋值。如果成员是const或是引用,必须将其初始化b、如果成员是const、引用,或者属于某种未提供默认构造函数的类类型,我们必须通过构造函数初始值列表为这些成员提供初始值。初始值列表中的前后位置不会影响实际的初始化顺序,初始化顺序是在类中定义出现的顺序。尽量避免用某些成员初始化其他成员。c、默认构造函数的行为与接受一个默认实参的构造函数一样。...

2018-05-12 22:04:44 117

原创 第七章 访问控制和封装

a.访问说明符:public和private。public:在整个程序内可以被访问,定义类的接口;private:可以被类的成员函数访问,不能被使用该类的代码访问,封装(隐藏)了类实现的细节。b.关键字:class和struct。struct默认是public的;class默认是private的。c.友元:允许其他类或者函数访问它的非公有成员。加关键字friend声明函数,只能在类内部声明,友元的...

2018-05-11 23:20:27 147

原创 第七章 类

7.1定义抽象数据类型        类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程。接口:用户能执行的操作。实现:类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。        类的成员函数的声明必须在类的内部,它的定义即可在类内,也可在类的外部。1.this:隐式调用,是成员函数的隐式形参。用调用成员函数的对象的地址初始化this。所以this是一个常量...

2018-05-09 20:51:20 112

原创 2.6自定义数据结构

C++语言不仅有丰富的系统预定义的基本数据类型,而且允许用户进行数据类型的自定义。自定义的数据类型有结构类型、联合类型、枚举类型、数组类型和类等。1.C++类,数据结构。类中可以包含运算功能。2.类内初始值,初始化和赋值的区别。赋值:将一个当前值差掉,用一个新值代替。初始化:创建变量时给予一个初始值。3.类内初始值不能用圆括号。(花括号或等号右边)4.类通常定义在头文件中,而且头文件名字与类的名字...

2018-05-09 15:27:45 285

空空如也

空空如也

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

TA关注的人

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