志存高远

专注于C/C++

排序:
默认
按更新时间
按访问量

Linux网络编程--epoll模型ET触发模式之epolloneshot事件

epoll模型的ET模式一般来说只触发一次,然而在并发程序中有特殊情况的存在,譬如当epoll_wait已经检测到socket描述符fd1,并通知应用程序处理fd1的数据,那么处理过程中该fd1又有新的数据可读,会唤醒其他线程对fd1进行操作,那么就出现了两个工作线程同时处理fd1的情况,这当然不...

2016-03-21 15:24:22

阅读数:1205

评论数:0

Linux网络编程--epoll模型之LT触发模式和ET触发模式

epoll对文件描述符有两种操作模式--LT(level trigger电平模式)和ET(edge trigger边缘模式) 简单来讲,LT是epoll的默认操作模式,当epoll_wait函数检测到有事件发生并将通知应用程序,而应用程序不一定必须立即进行处理,这样epoll_wait函数再次检...

2016-03-21 14:38:46

阅读数:1893

评论数:0

Linux网络编程--sendfile零拷贝高效率发送文件

本博文介绍使用sendfile函数进行零拷贝发送文件,实现高效数据传输,并对其进行验证。 那么什么是sendfile呢? linux系统使用man sendfile,查看sendfile原型如下: #include        ssize_t sendfile(int out_fd, int ...

2016-03-11 15:24:11

阅读数:9058

评论数:1

Linux网络编程--定时器之时间堆

相比较时间轮,时间堆的效率更高,主要利用最小堆的思想实现。 具体实现过程如下: #ifndef intIME_HEAP #define intIME_HEAP #include #include #include using std::exception; #define BUFFE...

2016-03-10 15:40:58

阅读数:785

评论数:0

Linux网络编程--定时器之时间轮

由于基于升序定时器链表的添加定时器效率偏低,所以本博文介绍一种高效的定时器---时间轮; 时间轮:包含时间间隔si,时间轮槽数N,运行一周所用的时间是si*N。每一个槽就是一个无序的定时器链表,并且拥有统一的特征,定时时间相差N*si整数倍。 时间轮的优势在于采用哈希表的思想,将定时器散列在不...

2016-03-10 15:29:57

阅读数:933

评论数:0

Linux网络编程--定时器的学习和使用

linux网络编程需要处理的重要事件之一--定时事件,对于服务器而言,管理着众多的客户端连接,高效稳定的管理这些客户端,定时事件是必不可少的,也对服务器的性能有着至关重要的作用。本博文先介绍简单的定时事件,以便于下一篇介绍高性能定时器做铺垫。 1.使用setsockopt设置socket选项SO_...

2016-03-10 14:25:52

阅读数:1247

评论数:0

libevent---主要函数

event_int(初始化libevent实例) struct event_base * event_init(void) 初始化事件处理框架实例,内部调用event_base_new。 event_base_new的主要逻辑: 代码  1 struct event_base ...

2016-03-08 15:10:16

阅读数:1079

评论数:0

libevent---核心event和event_base

结构体event和event_base是libevent的两个核心数据结构,前者代表一个事件对象,后者代表整个事件处理框架。 1.event事件对象 //event.h struct event { TAILQ_ENTRY (event) ev_next; //已注册事件...

2016-03-08 14:58:34

阅读数:530

评论数:0

libevent---源代码结构

Libevent 的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、libevent 框架、对系统 I/O 多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据结构和基于 libevent的两个实用库等几个部分,有些部...

2016-03-08 14:49:30

阅读数:557

评论数:0

libevent入门---定时器程序

1、入门 1.1、概述 Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库。Libevent有几个显著的亮点:  (1)事件驱动(event-driven),高性能; (2)轻量级,专注于网络,不如 ACE 那么臃肿庞大;  (3)...

2016-03-08 14:35:47

阅读数:1874

评论数:0

stat,lstat,fstat三者的区别

int stat(const char *path, struct stat *buf); int lstat(const char *path, struct stat *buf); int fstat(int filedes, struct stat *buf); 聪明人一眼就能看出...

2016-03-08 14:01:56

阅读数:1607

评论数:0

libevent---socket异步编程

libevent的使用 --  socket异步编程 这篇文章介绍下libevent在socket异步编程中的应用。在一些对性能要求较高的网络应用程序中,为了防止程序阻塞在socket I/O操作上造成程序性能的下降,需要使用异步编程,即程序准备好读写的函数(或接口)并向系统注册,然后在需要...

2016-03-04 15:34:18

阅读数:521

评论数:0

核心系统账务基本知识

一、  核心账务 1、 借贷记账法:有借必有贷,借贷必相等。  角度:发卡机构 2、 资产=负债+所有者权益 运营一段时间后 资产=负债+所有者权益+收入-费用 借贷平衡计算规则: 费用+资产=负债+所有者权益+收入 3、 资产(借记卡,增加为借记),负债(信用卡...

2016-03-03 16:48:59

阅读数:1194

评论数:0

linux shell脚本读取用户输入的参数

$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1是传递给该shell脚本的第一个参数 $2是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 例如: #!/bin/sh echo "arg_num: $#" echo &quo...

2016-03-02 13:37:00

阅读数:3490

评论数:0

des,d2des,d3des的区别

三重DES    因为确定一种新的加密法是否真的安全是极为困难的,而且DES的唯一密码学缺点,就是密钥长度相对比较短,所以人们并没有放弃使用DES,而是想出了一个解决其长度问题的方法,即采用三重DES。这种方法用两个密钥对明文进行三次加密,假设两个密钥是K1和K2,其算法的步骤如图5.9所示:  ...

2016-02-17 17:27:45

阅读数:1277

评论数:0

linux消息队列的内核限制

消息队列: 1.每次msgrcv一个消息,1.那个消息会在内核中移除 2.每次msgrcv都只会给一个消息出来,不管你rcv用多大的buf来接收,都是可以的。如果msgrcv的bufSize小于实际的该消息的大小,那么可以设置一个标志:表示截断。 如果不设置,那么会报错。取不出来。 2...

2016-01-15 11:33:18

阅读数:388

评论数:0

linux消息队列编程实例

前言:    消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息 函数: 1.创建新消息队列或取得已存在消息队列 原型:i...

2016-01-11 18:10:25

阅读数:468

评论数:0

深入理解C语言(包含oop的思想,内存和管理,I/O的实现)

语言只是一种工具,任何语言之间都是相通的,一通则百通,关键是要理解语言背后的思想,理解其思想,任何语言,拿来用就行了。语言没有好坏之分,任何语言既然存在自然有它存在的价值。   在一个到处是OOP的年代,为何面向过程的C语言依然可以如此活跃?这主要得益于C语言本身的语言特性。C语言小巧灵活,...

2016-01-11 17:31:55

阅读数:972

评论数:0

Linux系统下安装rz/sz命令及使用说明

对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令。今天,我们就简单的讲解一下如何安装和使用rz、sz命令。 1.软件安装 root 账号登陆后,依次执...

2016-01-05 13:59:02

阅读数:784

评论数:0

ldconfig命令使用说明

为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig.此执行程序存放在/sbin目录下.  ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如...

2016-01-05 10:32:47

阅读数:1681

评论数:0

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