自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (7)
  • 收藏
  • 关注

转载 [Java]读取文件方法大全

1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static void readFileByBytes(String fileName) {

2015-11-25 10:35:53 418

原创 java调用c++

test.javapublic class test { static { //System.out.println(System.getProperty("java.library.path")); String str = System.getProperty("java.library.path"); System.loadLibrary("test");

2015-11-16 15:06:17 428

原创 http协议解析

http协议解析一、http协议的特点:1、支持客户/服务器模式2、简单快速:客户向服务器请求时,只需传请求方法和路径3、灵活:http允许传输任意类型的数据对象。正在传输的数据的类型由Content-Type加以标记4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并受到客户的应答后,即断开连接;从1.1版本开始支持持续连接机制。5、无状态

2015-11-12 21:04:19 905

原创 libevent代码阅读(16)——缓冲区

在hello-world的listener_cb函数中,我们看到该函数使用一个bufferevent对象(缓冲区事件),使用bufferevent的好处就是不用直接调用io操作函数即可进行读写,往缓冲区中写入数据就是往文件(或者套接字)中写入数据,从缓冲区中读取数据就是从文件或者套接字中读取数据。不仅如此,bufferevent还有很好的缓冲功能。bufferevent的定义如下:/*

2015-11-08 15:45:02 1504

原创 libevent代码阅读(15)——epoll复用机制

epollops(eventop类型)对象是用于操作epoll复用机制的结构对象,它内部成员都是回调函数等,这些回调函数用于实现epoll复用机制,定义如下:// io复用机制——epollconst struct eventop epollops = { // 名字 "epoll", // 初始化 epoll_init, // 添加事件 epoll_nochangelist_a

2015-11-07 21:11:34 1678

原创 libevent代码阅读(14)——select复用机制(一)

libevent实现几种io复用机制,本文将会重点介绍select和epoll模式。selectops(eventop类型)对象是用于操作select复用机制的结构对象,它内部成员都是回调函数等,这些回调函数用于实现select复用机制,定义如下:// select模式的io复用机制const struct eventop selectops = { // 名字 "select",

2015-11-07 20:47:23 1498

原创 libevent代码阅读(13)——epoll的事件等待以及分发过程

在前面的章节我们提到event_base_loop中会调用具体的io复用机制的事件等待以及分发函数evsel->dispatch,然后调用event_process_active处理已经激活的事件。对于epoll而言,dispatch就是epoll_dispatch,我们看一下它的执行流程// 事件分发static intepoll_dispatch(struct event_base

2015-11-07 16:29:11 1805

原创 libevent代码阅读(12)——event_base中的一些事件处理器容器

1、activequeues。存放被激活的事件,这是一个队列数组(或者说队列的链表),具有相同优先级的被激活的事件存放在同一个队列中,不同优先级的事件存放在不同的队列中。2、eventqueue。存放所有的事件(即注册的事件),不论是信号事件、定时器事件还算一般的io事件,只要被注册了,就放在这里。3、common_timeout_queues。公共的超时事件队列,4、min_heap

2015-11-07 15:35:59 933

原创 一些非常好的开源c++代码

1、leveldb ——google出品的键/值对(Key/Value Pair)嵌入式数据库2、Boost.Asio  ——服务器框架3、tinyxml——xml解析器4、tinyhttpd——http服务器5、cJSON ——json解析器6、Memcached —— 一个高性能的分布式内存对象缓存系统7、SQLite——开源的嵌入式关系数据库8、Webbenc

2015-11-07 13:48:11 9468

原创 libevent代码阅读(11)——“hello-world.c”之 进入事件多路分发循环

前面的操作都完成之后,正式进入事件多路分发循环,在循环,Reactor框架等待事件的发生,然后寻找对应的事件处理器,然后调用对应的事件处理回调函数进行事件的处理,循环会一直运行,直到没有事件.执行事件多路分发循环的函数是event_base_dispatch,它调用的其实是event_base_loop,它定义如下:/* * 事件循环 * 首先调用io事件多路分发器的事件监听函数,等待

2015-11-06 17:30:45 1303

原创 libevent代码阅读(10)——“hello-world.c”之 把事件处理器添加到event_base对象的注册的事件处理器的队列

事件处理器创建完成之后,需要将它添加到event_base对象的注册的事件处理器的队列中,这样,event_base对象才能在事件多路分发处理当中对该事件进行处理。调用event_add函数把事件处理添加到注册事件处理队列中,该函数的定义如下:// 创建event(事件处理器)并初始化之后// 需要使用event_add将其添加到注册事件队列中intevent_add(struct

2015-11-06 17:12:27 1001

原创 shell学习

linux常用目录:/ 根目录/bin 存放用户级的工具(可执行文件)/boot 启动目录,存放启动文件/dev 设备目录,系统在此创建设备节点/etc 系统配置文件目录/home 主目录/lib 库目录,存放系统和应用的库目录/media 媒体目录,一般可移动设备挂载在此/mnt 挂载目录/opt 可选目录,存放一些

2015-11-06 17:04:30 590

原创 linux命令

cat 显示文件内容chmod 改变文件属性chwon 改变文件拥有者cmp 比较两个文件cp 复制文件clear 清空屏幕cut 移除文件的部分内容diff 比较两个文件的不同之处du 显示磁盘的剩余空间file 显示文件的类型find 查找

2015-11-06 17:01:39 580

原创 libevent代码阅读(9)——“hello-world.c”之 创建事件处理器

事件处理器由event_new函数来创建,evsignal_new是event_new的特化版本(是事件为EV_SIGNAL|EV_PERSIST的event_new函数调用),event_new定义如下:// 新建一个事件处理器struct event *event_new(struct event_base *base, evutil_socket_t fd, short events

2015-11-06 16:53:34 784

原创 libevent代码阅读(8)——“hello-world.c”之 创建监听器

创建完成event_base之后,调用evconnlistener_new_bind函数来创建监听器:// 创建一个监听器struct evconnlistener *evconnlistener_new_bind(struct event_base *base, // 监听器所属的event_base对象 evconnlistener_cb cb, // 新连接到来的时

2015-11-06 16:19:53 700

原创 libevent代码阅读(7)——“hello-world.c”之 io复用机制的初始化

选择完成最适合的io复用机制之后,就要开始进行初始化设置,即调用eventop的init回调函数,以epoll为例,epoll_init的定义如下:// epoll初始化static void *epoll_init(struct event_base *base){ // epoll的文件描述符 int epfd; // 用于存放epoll的文件描述符以及一些事件 struc

2015-11-06 16:05:20 635

原创 libevent代码阅读(6)——“hello-world.c”之 io复用机制

可以看到event_base的创建的过程中,最重要的一步就是选择一个最高效的io复用机制可供选择的io复用机制定义如下:// Reactor初始化的时候会从这里选择最合适的io复用机制static const struct eventop *eventops[] ={ // evport的实现#ifdef _EVENT_HAVE_EVENT_PORTS &evportop

2015-11-06 15:44:30 914

原创 libevent代码阅读(5)——“hello-world.c”之 event_base对象的创建

首先在main函数中,我们调用event_base_new函数来创建一个event_base对象,一个event_base对象就是一个Reactor实例。event_base_new函数的流程:1、创建一个config对象2、把config对象作为参数,调用event_base_new_with_config函数来创建一个event_base对象3、释放config对象

2015-11-06 15:30:59 1195

原创 libevent代码阅读(4)——“hello-world.c”之 ibevent框架的使用流程

从这一章开始,我们将按照hello-world.c程序执行的流程来学习libeventlibevent框架的使用流程:1、构建event_base(Reactor)对象2、创建一个监听器3、创建一个信号处理器4、把信号处理器加入到event_base的注册信号处理器队列中5、进入event_base的事件多路分发循环,如有事件发生,那么就掉用事件处理进行处理6、所有

2015-11-06 15:05:18 894

原创 《linux高性能服务器编程》读书笔记

linux高性能服务器编程从高到底的协议有:应用层:ping(使用ICMP)、telnet(使用tcp)、OSPF(使用IP)、DNS(使用UDP)传输层:TCP、UDP网络层:ICMP、IP数据链路层:ARP、RARPtcpip链接建立断开的状态图:tcp的头部:16位的端口号:唯一标志一台主机上的进程32位

2015-11-06 14:44:53 3008

原创 libevent代码阅读(3)——入门例子“hello-world.c”的学习

/* * 一个很好的入门例子 * 当客户端链接到服务器的时候,服务器简单地向客户端发送一条“Hello, World!”消息,然后等待客户端关闭 * 服务器不接受客户端发送的数据 */#include #include #include #include #ifndef WIN32#include # ifdef _XOPEN_SOURCE_EXTENDED# incl

2015-11-06 09:40:26 1667 1

原创 libevent代码阅读(2)——尾队列的学习

libevent当中大量使用了linux内置的一个数据结构——尾队列下面是它的使用方法:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include u

2015-11-05 20:42:02 1069

原创 libevent代码阅读(1)

一些概念:1、libevent是一个高性能的io框架,基于Reactor模式2、event_base即Reactor实例3、event是事件处理器(注意event不是事件,而是事件处理器)4、libevent实现了select、poll、epoll、iocp等io复用机制,在编译的时候会自动选择一个最高效io复用机制

2015-11-05 16:47:37 1416

ffplay源码和书籍.rar

杨书良大神的ffplay工程

2016-11-24

More Effective C++ 简体中文版.pdf

More Effective C++ 简体中文版.pdf

2012-08-28

Exceptional C++ CN.pdf

Exceptional C++ CN.pdf

2012-08-28

WINDOWS核心编程

WINDOWS核心编程.chm中文版,很好的一本书,进阶提高

2012-08-10

我的工程我自己的工程,文件、套接字、序列化等

我自己的工程,文件、套接字、序列化等我自己的工程,文件、套接字、序列化等我自己的工程,文件、套接字、序列化等

2012-07-30

空空如也

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

TA关注的人

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