自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux下aio异步读写详解与实例

1.为什么会有异步I/Oaio异步读写是在linux内核2.6之后才正式纳入其标准。之所以会增加此模块,是因为众所周知我们计算机CPU的执行速度远大于I/O读写的执行速度,如果我们用传统的阻塞式或非阻塞式来操作I/O的话,那么我们在同一个程序中(不用多线程或多进程)就不能同时操作俩个以上的文件I/O,每次只能对一个文件进行I/O操作,很明显这样效率很低下(因为CPU速度远大于I/O操作的速度,所以当

2015-09-27 10:43:56 17138

原创 EPOLL在ET模式下会被触发多次么?

前几天和同学一起讨论EPOLLONESHOT的作用,它的功能是这样的:对于注册了EPOLLONESHOT事件的文件描述符,操作系统最多触发其上注册的包括可读,可写,错误中的一个,且只触发一次刚一看感觉EPOLLONESHOT咋么就是ET模式相对于LT模式的区别,反复理解之后发现原来ET和ONESHOT的区别是ET只是可读可写或错误类的某一种事件类型只能被触发一次,而不同种类的事件类型却可以触发不止

2015-09-22 12:27:43 3357 7

原创 linux服务器编程之高效事件处理模式

当前网络主的设计模式共有俩中,即Reactor模式和Proactor模式。同步I/O模型(select,poll,epoll等)用来实现Reactor模式,而异步(aio_read或aio_write等)用来实现Proactor模式1.Reactor模式Reactor模式的基本设计思路是主线程只负责对I/O事件的监听,而不负责对I/O的读写,如果有I/O事件发生,则主线成会将该事件通知给工作线程,由

2015-09-27 13:45:42 1918

原创 C++封装mysql的基本API

最近在做数据库的实验,觉得c语言提供的关于mysql的API用起来好麻烦,于是就用C++进行了简单的封装,同时也算对mysql的基本API的一个学习吧代码如下#include<iostream>#include<string>#include<mysql/mysql.h>class Sql{ public: //构造函数用来初始化mysql和连接数据库

2015-09-09 21:25:56 4594 1

原创 mysql的基本使用总结

最近要进行数据库实习,所以找点时间复习以下mysql的一些基本使用1.数据库的基本操作(1)展示mysql中的所有数据库 命令如下show databases;(2)创建一个新的数据库 假如我们要创建一个名为goods的数据库 具体命令如下create database goods; (3)进入到某个特定的数据库 假如进入名为goods的数据库 命令如下use goods; (4)删除

2015-09-08 17:36:47 803

原创 C++中tuple类型

tuple是C++11新标准里的类型。它是一个类似pair类型的模板。pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以有任意数量的成员。但是每个确定的tuple类型的成员数目是固定的1.tuple的简单使用当我们希望将一些不同类型的数据和成单一对象时,可能大家会想到结构体(类),tuple是一种比结构体来的更加方便的类型 tuple的简单使用实

2015-09-06 14:01:03 9064

原创 C++中的多态性

C++中的多态性是面向对象初封装性,继承性之外的又一大特性。多态性也是一种泛型,利用多态性我们可以用不变的代码产生不同的处理结果。也可以说其是”一个接口,多种方法”。1.虚函数的声明虚函数的声明只虚在类内的函数声明前加上virtual即可 实例如下class A{ //fun1为普通函数 void fun1(void); fun2为虚函数 virtual fun2

2015-09-06 11:59:13 694

原创 C++中派生类的访问控制

派生类访问其成员的权限会受到俩个因素的影响:一是在基类中该成员的访问说明符,二是派生类的派生列表中访问说明符在介绍各种继承方式之前,首先介绍以下不常见的protected说明符,我们可以把protected看作是一个public,private中和后的产物 protected的具体规则如下 (1)和私有成员类似,受保护成员对于类的用户来说是不可访问的(但是可以被类的成员函数或友元访问) (2)

2015-09-06 10:11:25 1302

原创 C++中的智能指针

上片博客为大家简单介绍了C++中开辟动态内存的方法,虽然动态内存有好多优点,但是如果我们使用不好的话有时候会给我们的程序带来灾难性的后果,今天这篇博客就为大家介绍一种安全的使用指针的方式智能指针1.智能指针的介绍新标准库为我们提供了俩种智能指针。智能指针的使用方法和常规指针基本相似,重要的区别是智能指针能够在恰当的时机自动释放它所指向的对象所占用的空间,而不需要我们人为的区释放,这一点能够使我们写出

2015-09-04 14:24:10 965

原创 C++中直接管理内存的方式

C++中定义了new和delete俩个运算符来直接管理内存1.动态分配单一对象(1)使用new动态分配和初始化对象由于动态分配的内存是无名的,所以new不能为其分配对象名,而是返回指向该对象的指针//分配一个int型的对象int *pi = new int;默认情况下,动态分配的对象是默认初始化的,我们也可以对其直接初始化。使用()构造方式或列表初始化//构造方式初始化int *pi = new

2015-09-04 09:17:08 1057

原创 C++标准库bind函数

上篇博客在为大家介绍lambda是先由find_if函数引入问题,由于find_if函数的第三个参数所要求的可调用对象只能由一个谓词,所以我们最后选择的解决方法是用lambda表达式。那么此问题还有其他的解决方法么?本篇博客我就为大家带来新的解决方法bind函数1.bind函数的基本介绍bind函数的最根本的作用就是可以把一个参数较多的函数给封装成参数较少的函数,因此对于上述find_if函数的问题

2015-09-03 21:33:26 11583

原创 C++中lambda表达式

在介绍lambda表达式之前,我想先介绍以下C++标准库所支持的传统谓词以及传统谓次的不足,而由此才引入的lambda表达式1.向算法中传递谓词谓词是个可调用的表达式,其返回结果是一个能作为条件的值。谓词分为一元和二元,一元的可调用对象只能有一个参数,二元只能有俩个参数 我们以一元谓词举例: C++标准库中的find_if()函数,它的功能是这样的。该函数接收一对迭代器,表示一个范围,它的第三个

2015-09-03 18:59:42 2237

原创 C++中泛型算法

前面几篇博客简单的介绍了几种标准库容器,想必大家一定会感觉标准库中的各个容器的操作函数特别的少。的却标准库并没有给每一个容器单独定义很多操作函数,而是提供了一堆通用的函数来供其一起使用。1.泛型算法的概述C++中大多数算法都定义在头文件algorithm中,当然头文件numeric中定义了一组数值泛型算法 通常情况下,这些算法不会直接操作容器,只是遍历由俩个迭代器指定的元素范围来进行操作(所以这些

2015-09-03 13:45:59 684

原创 C++标准库set类型

set(集合)和map一样也属于关联容器,和map不同的是它只保存关键字,而且关键字会按升序排序且不重复,set的内部实现是用红黑树实现的。接下来就为大家介绍set的用法1.set对象的创建事例如下//尖括号中说明set保存关键字类型set<int> s;2.向set中添加元素像其他容器一样,我们可以使用insert来向set中插入元素 实例如下#include<iostream>#inclu

2015-09-03 09:27:51 3293

原创 C++标准库map类型

map是一种关联容器,所谓的关联容器是指支持高效的关键字查找和访问。map中的元素为一些关键字-值(key-value)对,关键字起到索引值的作用,且map中的元素是按照关键字升序排序的。还有map是个映射,所以它的关键字和值是一一对应的。接下来就为大家介绍map的用法1.map的定义我们可以用如下方法定义或初始化map//空容器map<int,string> m1;//值初始化mapmap<

2015-09-01 22:12:19 2469

原创 C++标准库vector类型

vector属于顺序容器,所谓顺序容器,就是元素的顺序与元素的值无关,与元素加入容器的位置相对应。 对于vector可以将其理解为可变大小数组,支持快速随机访问,在尾部之外的位置插入删除可能会比较慢。了解完概念接下来就开始学习它的用法假设以下代码前面都包含vector头文件,并包含using namespace std; 1.创建vector对象vector<int> vec;此种定义下vec容器

2015-09-01 18:55:04 714

空空如也

空空如也

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

TA关注的人

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