自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(257)
  • 资源 (5)
  • 收藏
  • 关注

转载 我读过的最好的epoll讲解

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

2013-11-13 19:57:21 1333

转载 R树:处理空间存储问题

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

2013-10-09 22:18:10 1490

转载 k-d tree算法

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

2013-10-09 22:00:49 1056

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

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

2013-10-08 20:32:53 943

转载 C 语言实现 C++ 多态

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

2013-09-25 10:06:56 1029

原创 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 790

原创 快速排序

//快速排序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 738

转载 Vim 与系统剪切板交互

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

2013-09-12 09:46:10 4450

转载 写给那些让我糊里糊涂的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 863

转载 如何在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 1382

转载 采用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 2279

转载 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 856

转载 在windows中安装ubuntu

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

2013-07-13 17:07:15 8012

转载 访问PostgreSQL:C语言接口

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

2013-07-12 10:51:53 5248

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

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

2013-06-14 08:40:50 897

转载 TCP长连接与短连接的区别

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

2013-06-07 11:15:42 704

转载 浅谈RAII惯用法

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

2013-06-06 16:11:46 845

转载 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 585

转载 强制性锁建议性锁

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

2013-05-29 16:06:57 829

转载 Linux内存管理之mmap详解

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

2013-05-27 20:48:07 837

转载 信号安全跟线程安全函数背后本质

看UNIX编程相关的书在讲信号的时候会列出一大堆的保证信号安全的函数,在讲线程的时候也会例出一些不保证线程安全的函数。需要把它们都记下来吗?我觉得太可不必,也不科学,不了解根本你很可能自己写出一个不安全的函数,然后在信号处理里或是多线程程序里使用,出了问题却莫名其妙!     一般来说如果函数内部使用了静态变量或是全局变量,或是传了引用进去的函数就不具可重入性。具体可重入函数的概念可以去百度一

2013-05-27 16:47:35 720

转载 手把手教你把vim打造成IDE

手把手教你把vim打造成IED

2013-05-24 17:27:03 604

转载 经典vim插件功能说明、安装方法和使用方法介绍

1 #=============================================================================  2  转载请注明出处: http://blog.csdn.net/tge7618291                     http://nuoerlz.35free.net  8 #==============

2013-05-24 11:13:25 989

转载 socket的通信过程

下图是基于TCP协议的客户端/服务器程序的一般流程:服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从ac

2013-05-24 09:48:00 883

转载 Linux内核的ioctl函数学习

我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl, 所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl。       ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传

2013-05-14 10:13:23 576

转载 select、poll和epoll

一,POLL、 SELECT 、EPOLL 简介selectselect最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作。select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,

2013-05-14 08:56:53 686

转载 线程与fork(2) (进程):把它们一起使用前,请谨慎考虑 (翻译)

本文译自: http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them作者: Damian Pietras转载请著名作者,译者和出处。 某天,我(原作者:Damian Pietras,下同。下面所有全角括号内的文字,没有说明都为译者所加 ── 译者 周翀)遇到了

2013-05-10 15:08:14 850

转载 Boyer-Moore算法学习

http://blog.csdn.net/sealyao/article/details/4568167点击打开链接

2013-05-07 10:15:48 567

转载 实际用户ID,有效用户ID、设置用户ID

解释一:摘要:最近看APUE时为这几个ID困扰了很久,查找了很多资料后,终于感觉比较清晰了。先记在这里。或许还有些理解上的偏差,后续更正。本文主要讲述这几种ID的区别和联系。 实际用户ID:有的文章中将其称为真实用户ID,这个ID就是我们登陆unix系统时的身份ID。有效用户ID:定义了操作者的权限。有效用户ID是进程的属性,决定了该进程对文件的访问权限。

2013-05-06 17:25:34 901

原创 12个球一个天平 现知道只有一个和其它的重量不同 问怎样称才能用三次就找到那个球。13个呢

方法一:12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。1,天平一边放四个,平则坏球在余下的四个里,好办(同方法二中的相等处理)。 不平,先将偏重的四个编号为:1、2、3、4。偏轻的编为A、B、C、D(因为不知道轻重)。2。天平一边放三个,比如:左边放1、2、A。右边放3、4、B。 平则坏球是C、D 里偏轻的,不平则根据轻重淘汰1、2、B或 3、4

2013-05-06 10:29:13 1238

转载 Linux远程下载文件的两种方法之 ftp命令和scp命令

ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载。 1. 连接ftp服务器   格式:ftp [hostname| ip-address]  a)在linux命令行下输入:ftp 192.168.26.66  b)服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可。 2.

2013-05-03 09:56:35 812

转载 进程与线程的一个简单解释

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。

2013-05-03 09:03:43 555

转载 字符串匹配的KMP算法

字符串匹配是计算机的基本任务之一。举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理

2013-05-03 08:50:23 528

转载 八数码的八境界

原文地址:点击打开链接

2013-04-26 16:38:36 717

转载 理解A*寻路算法具体过程

原文地址:http://www.cnblogs.com/technology/archive/2011/05/26/2058842.html这两天研究了下 A* 寻路算法, 主要学习了这篇文章, 但这篇翻译得不是很好, 我花了很久才看明白文章中的各种指代. 特写此篇博客用来总结, 并写了寻路算法的代码, 觉得有用的同学可以看看. 另外因为图片制作起来比较麻烦, 所以我用的是原文里的

2013-04-26 16:24:36 648

转载 KMP算法和BM算法

http://www.searchtb.com/2011/07/%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%82%A3%E4%BA%9B%E4%BA%8B%EF%BC%88%E4%B8%80%EF%BC%89.html

2013-04-26 15:47:54 990

原创 python 真的很强大

Python作为一种功能强大且通用的编程语言而广受好评,它具有非常清晰的语法特点,适用于多种操作系统,目前在国际上非常流行,正在得到越来越多的应用。    下面就让我们一起来看看它的强大功能:  Python(派森),它是一个简单的、解释型的、交互式的、可移植的、面向对象的超高级语言。这就是对Python语言的最简单的描述。  Python有一个交互式的开发环境,因为P

2013-04-22 16:43:09 6206

原创 函数对象和函数指针

函数对象不是函数指针。但是,在程序代码中,它的调用方式与函数指针一样,后面加个括号就可以了。  这是入门级的随笔,说的是函数对象的定义,使用,以及与函数指针,成员函数指针的关系。  沐枫小筑函数对象实质上是一个实现了operator()--括号操作符--的类。例如:class Add{public:  int operator()(int a, int b)

2013-04-19 17:09:22 617

转载 python十个实战项目

python项目练习一:即时标记python项目练习二:画幅好画python项目练习三:万能的XMLpython项目练习四:新闻聚合python项目练习五:虚拟茶话会python项目练习六:使用CGI进行远程编辑python项目练习七:自定义公告板python项目练习八:使用XML-RPC进行远程文件共享python项目练习九:文件共享2-GUI版本python

2013-04-19 10:11:40 3264

原创 私有继承的作用

私有继承的第一个规则:和公有继承相反,如果两个类之间的继承关系为私有,编译器一般不会将派生类对象转换成基类对象。第二个规则: 从私有基类继承而来的成员都成为了派生类的私有成员,即使它们在基类中是保护或公有成员。私有继承的含义:私有继承意味着 "用...来实现"。如果使类D私有继承于类B,这样做是因为你想利用类B中已经存在的某些代码,而不是因为类型B的对象和类型D的对象之间有什么

2013-04-17 20:37:21 2768

软件工程银行卡管理系统

设计一个银行卡管理系统可以实现存款,取款,修改密码等操作,涉及到数据库的使用。含开发文档报告

2010-06-29

网络课程设计视频流的传输

1 了解流式实时传输协议,即采用RTP等实时传输协议实现视频流的传输,RTP适合网上的流式实时传输。 2 使用两台计算机进行视频流的传输。

2010-06-29

银行卡管理系统的开发文档

银行卡管理系统开发文档 包括问题定义,需求分析,具体实现,总结体会等

2010-05-10

银行卡管理系统,java

用java实现简易的银行卡管理系统 包括取款,存款,修改密码等功能

2010-05-10

编译原理——for循环语句的翻译,LR,四元式

编译原理——for循环语句的翻译,LR,四元式,有报告

2010-01-22

空空如也

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

TA关注的人

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