12 freeboy1015

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 7k+

我读过的最好的epoll讲解

首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。    不管是文件,还是套接字,还是管道,我们都可以把他们看作流。    之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要

2013-11-13 19:57:21

R树:处理空间存储问题

R树:处理空间存储问题相信经过上面第一节的介绍,你已经对B树或者B+树有所了解。这种树可以非常好的处理一维空间存储的问题。B树是一棵平衡树,它是把一维直线分为若干段线段,当我们查找满足某个要求的点的时候,只要去查找它所属的线段即可。依我看来,这种思想其实就是先找一个大的空间,再逐步缩小所要查找的空间,最终在一个自己设定的最小不可分空间内找出满足要求的解。一个典型的B树查找如下: 要查找

2013-10-09 22:18:10

k-d tree算法

k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。应用背景  SIFT算法中做特征点匹配的时候就会利用到k-d树。而特征点匹配实际上就是一个通过距离函数在高维矢量之间进行相似性检索的问题。针对如何快速而准确地找到查询点的近邻,现在提出了很多高维空间索引结构和近似查询的算法,k-d树就是其中

2013-10-09 22:00:49

二叉树的非递归后序遍历算法

前序、中序、后序的非递归遍历中,要数后序最为麻烦,如果只在栈中保留指向结点的指针,那是不够的,必须有一些额外的信息存放在栈中。方法有很多,这里只举一种,先定义栈结点的数据结构typedef struct{ Node * p; int rvisited;}SNode //Node 是二叉树的结点结构,rvisited==1代表p所指向的结点的右结点已被访问过。LastOrd

2013-10-08 20:32:53

C 语言实现 C++ 多态

C 还是 C++?C++ 中的多态是指「通过基类对象的指针或者基类对象的引用调用虚函数」,表现更多派生类的特性,但根据 C++ 多态的实现,我们发现这种方法存在一定的空间和效率的折损。不可否认,多态轻松解决了很多工程中遇到的问题,这与 pure C 的解决方法比起来,更为优雅。在考虑移植性上,C 的光芒要盖过 C++,但 C++ 的多态是可借鉴的,于是用 pure C 来模仿

2013-09-25 10:06:56

KMP算法代码

#include "StdAfx.h" #include #include using namespace std; //代码4-1 //修正后的求next数组各值的函数代码 void get_nextval(char const* ptrn, int plen, int* nextval) { int i = 0; //注,此处

2013-09-17 16:26:17

快速排序

//快速排序void quick_sort(int s[], int l, int r){ if (l < r) { //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 int i = l, j = r; int x = s[l]; while (i < j)

2013-09-17 16:08:53

Vim 与系统剪切板交互

很多时候使用 Vim 编辑文本,总需要复制里面的东西出来,粘贴到其他地方,比如说网页,聊天窗口等等,而有些时候有需要从网页等地方复制文字过来粘贴到 Vim 正在编辑的文件里。这个两个过程应该怎么完成呢?一般的解决方法复制文本当我们要将 Vim 里面的文本复制出来,往往会用鼠标选中,然后到需要粘贴的地方小点下鼠标中键或 Shift-Insert,完成复制粘贴的过程。但

2013-09-12 09:46:10

写给那些让我糊里糊涂的HTTP、TCP、UDP、Socket

先来一个讲TCP、UDP和HTTP关系的,注意红色mark的部分 1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。因此,HTTP本身就是一个协议,是从Web服务器传输超文

2013-08-02 17:20:40

如何在openSUSE上安装postgresql数据库

本文我们介绍如何在openSUSE安装postgresql数据库,就让我们通过下面的介绍介绍大家来了解一下安装步骤吧!环境我测试了在openSUSE 11.3上安装postgresql 8.4.6,也测试了在openSUSE 11.4上安装postgresql 9.0.3。步骤没有任何区别。安装zypper install postgresql-server 

2013-07-24 17:49:13

采用CBP2MAKE工具由CODE::BLOCKS工程创建MAKEFILE文件

Linux下有一款非常好用的写C++的IDE,code::blocks,其采用自有的工程文件(.cbp)来组织相关源代码。但是有的时候希望能够脱离CB,以便于源代码的分享。常见开源项目采用makefile来组织源代码的编译。cbp2make可以很好的将CB的工程文件转换为makefile文件。1、下载cbp2make的源代码;2、解压后打开工程文件cbp2make.cbp,

2013-07-17 20:34:24

open/read/write和fopen/fread/fwrite的区别

open/read/write和fopen/fread/fwrite的区别 open:系统调用,返回的是文件描述符,即文件句柄,是文件在文件描述副表里的索引。fopen:C语言库函数,返回的是一个指向文件结构的指针。fopen是ANSI C标准中的C语言库函数,在不同的操作系统中应该调用不同的内核API,UNIX环境下,fopen是对open的封装。文件描述符是UNIX/Linux

2013-07-16 16:20:35

在windows中安装ubuntu

关于Wubi       ubuntu很酷,8.04开始就正式提供了Wubi(基于windows的安装程序,Windows-based  Ubuntu  Installer),可以在windows系统中创建一个几GB的虚拟硬盘,将ubuntu独立安装在其中,并把windows系统的硬盘挂载进来。       这样有很明显的好处,尤其是对刚接触linux不久的人来说。无需跑VMwar

2013-07-13 17:07:15

访问PostgreSQL:C语言接口

C语言接口  在与数据库连接方面,C语言是一种常用语言,许多数据库都是用C写的。该语言高效灵活,因此如果想要写一款客户端接口,不管是仅仅包含控制台还是基于GUI的,并且不想用到浏览器,C语言也许是最好的选择。  连接C语言与Postgres使用的库名为libpq,它与PostgreSQL源码树绑定在一起。如果安装数据库系统时使用的是二进制文件而不是从源码编译安装,libpq可被单独

2013-07-12 10:51:53

I/O事件处理模型之Reactor和Proactor

Reactor模型Reactor模式是处理并发I/O比较常见的一种模式,中心思想就是,将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上;一旦有I/O事件到来或是准备就绪(区别在于多路复用器是边沿触发还是水平触发),多路复用器返回并将相应I/O事件分发到对应的处理器中。这里有三个重要的组件:多路复用器:由操作系统提供,在linux上一

2013-06-14 08:40:50

TCP长连接与短连接的区别

1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接我们模拟一下TCP短连接的情况,c

2013-06-07 11:15:42

浅谈RAII惯用法

RAII是resource acquisition is initialization的缩写,意为“资源获取即初始化”。它是C++之父Bjarne Stroustrup提出的设计理念,其核心是把资源和对象的生命周期绑定,对象创建获取资源,对象销毁释放资源。软件开发中,会用到各种各样的资源。狭义的资源指内存,而广义的资源包括文件、网络连接、数据库连接、信号量、事件、线程、内存等,甚至可以

2013-06-06 16:11:46

Linux Epoll介绍和程序实例

1. Epoll是何方神圣?Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnecti

2013-05-29 17:17:10

强制性锁建议性锁

fcntl有强大的功能,它能够复制一个现有的描述符,获得/设置文件描述符标记,获得/设置文件状态标记,获得/设置异步I/O所有权,获得/设置纪录锁。当多个用户共同使用,操作一个文件的情况,Linux通常采用的方法就是给文件上锁,来避免共享资源产生竞争的状态。fcntl文件锁有两种类型:建议性锁和强制性锁建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还

2013-05-29 16:06:57

Linux内存管理之mmap详解

Linux内存管理之mmap详解一. mmap系统调用1. mmap系统调用        mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作

2013-05-27 20:48:07

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!