自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【分享】Linux下各类TCP网络服务器的实现源代码之一

Linux下各类TCP网络服务器 的实现源代码 大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务。这里附上源代码来个小结吧。 首先,循环网络服务器编程实现的步骤是这样的: 这种服务器模型是典型循环服务,如果不加上多进程/线程技术 ,此种服务吞吐量有限,大家都可以看到,如果前一个连接服务数据没有收发完毕后面的连接没办法处理。所以一般有多进程技术,...

2011-07-29 17:52:27 207

原创 Sphinx详细安装配置及API调用实战手册

2011-02-19 21:50:11 |  分类: sphinx | 字号   订阅 Sphinx详细安装配置及API调用实战手册 ...

2011-07-29 13:18:51 132

原创 利用Sphinx实现实时全文检索

Sphinx 0.9.9及以前的版本,原生不支持实时索引,一般的做法是通过主索引+增量索引的方式来实现“准实时”索引,最新的1.10.1(trunk中,尚未发 布)终于支持real-time index,查看SVN中文档,我们很容易利用Sphinx搭建一个按需索引(on demand index)的全文检索系统。 参考文章:http://filiptepper.com/2010/05/...

2011-07-29 12:59:07 71

原创 Sphinx在windows下安装使用[支持中文全文检索]

一、关于Sphinx Sphinx 是一个在GPLv2 下发布的一个全文检索引擎,商业授权(例如, 嵌入到其他程序中)需要联系作者(Sphinxsearch.com)以获得商业授权。 一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的全文搜索功能。Sphinx可以非常容易的与 SQL数据库和脚本语言集成。 当前系统内置MySQL和Postgre...

2011-07-29 12:55:28 96

原创 Sphinx Mysql Full-Search速成指南

目录 1. Sphinx简介 1.1. 什么是全文检索 1.2. 介绍 1.3. Sphinx的特性 2. Sphinx安装(For MySQL) 2.1. Windows下安装 2.2. Linux下安装 3. 实例说明 4. Sphinx配置 5. ...

2011-07-29 10:56:29 214

原创 从全局变量到IOC模式

2010-03-26 作者:sandy 来源:sandy的blog   很早以前,在我初学c语言的时候,我的第一个象样的程序是一个五子棋程序,使用了TC2.0的图形库,纯面向过程的设计,由上到下的设计,而且只有一个c文件就搞定了,大概几百行,可惜代码已经失传,非常可惜。 为什么要全局变量? List 1 ...

2011-07-27 16:23:45 134

原创 Java NIO 入门学习(通道和缓冲区)

对于 NIO 来说,Channel(通道) 和 Buffer(缓冲区) 这两个东西是不得不提的,因为它们是 NIO 的核心对象,几乎每一个 I/O 操作都要它们。 通道是对原 I/O 流的模拟,但有不同的是它是双向的,不再像流那样分 InputStream 和 OutputStream,通道的双向性更好的反映了底层操作系统的真识情况。也不能像原 I/O 那样可以直接往流里写或读数据,在通...

2011-07-26 19:56:25 111

原创 NIO之轻松读取大文件

011-01-07 13:44 来自 admin NIO轻松读取大文件(1G以上) view source print ? 01 import java.io.FileInputStream; 02 import java.io.FileOutputStream; 03 impo...

2011-07-26 19:51:10 157

原创 Java NIO 入门学习(读写文件)

我们用原有 IO 读写文件应该不会陌生了,顺带回顾一下,大致两种: 1. 在 InputStream 或 OutputStream 上读写字节或字节数组,读 InputStream 时用是否返回 -1 来判断是否到达末尾。 2. 包装成 Reader/Writer 可以直接读写字符串,进一步包装到 BufferedReader/BufferedWriter 就可以按行读写了。readLine(...

2011-07-26 19:50:44 70

原创 Mina2和Spring(2.5)在web项目中的结合使用

项目结构图如下:   说明: com.test.server包下是mina的服务端程序, MinaServer_Unuse.java 类就是一般的mina服务端主类, 但这里不用它来启动, 而是通过applicationContext-minaServer.xml 来启动.  但这个spring配置文件不会自己启动,所以用到 com.test.action包下的 InitListen...

2011-07-26 19:49:56 119

原创 深入UNIX编程之一一个简单聊天室的两种实现 (fcntl 和 select)

来源:本文出自: 作者: eDOC工作组 (2002-01-29 20:54:56) 在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。聊天室程序可以说是网上最简单的多点通信程序。聊天室的实现方法有很多,但 都是利用所谓的“多用户空间”来对信息进行交换,具有典型的多路I/O的架构。一个简单的聊天室, 从程序员的观点来看就是在多...

2011-07-26 00:21:32 149

原创 Linux:C/Socket多路复用select(转)

Linux:C/Socket多路复用select 小全 Submitted byELFeron 2006, August 3, 5:46 PM.Unix/Linux 作一个tcp的服务程序,同时可能有大量的客户端连上来,希望分别记住各个socket 谁有数据过来,就读出来,放到一个请求队列--这些事情用一个线程完成 另外有一个结果队列,如果结果里包含了socket的编号,用一个线程专门: ...

2011-07-26 00:16:28 171

原创 linux函数select

转自:http://blog.chinaunix.net/u/12335/showart.php?id=158367 (现在还是一知半解,瞎搞,呵呵~~~~~~~) 摘录其中一段,用于做 linux的COM. 可能用到的.h #include <sys/select.h> 还有 有用的命令 man select :) 介绍一个函数select  int select(...

2011-07-26 00:15:38 96

原创 nslookup工具的使用方法

配置好DNS服务器,添加了相应的记录之后,只要IP地址保持不变,一般情况下我们就不再需要去维护DNS的数据文件了。不过在确认域名解释正常之前我们 最好是测试一下所有的配置是否正常。许多人会简单地使用ping命令检查一下就算了。不过Ping指令只是一个检查网络联通情况的命令,虽然在输入的参数 是域名的情况下会通过DNS进行查询,但是它只能查询A类型和CNAME类型的记录,而且只会告诉你域名是否存...

2011-07-23 14:13:30 106

原创 C++中关于指针入门的最好的文章

什么是指针?     其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。这是一个非常重要的概念,有很多程序和算法都是围绕指针而设计的,如链表。     开始学习     如何定义一个指针呢?就像你定义一个其它变量一样,只不过你要在指针名字前加上一个星号。我们来看一个例子:下面这个程序定义了两个指针,它...

2011-07-23 13:40:13 70

原创 C++基础之头文件和源文件的关系

今天找了个解析xml的开源C++ 项目tinyxml,按照网上的说法去编译,但是一直编译不通过,“无法打开头文件tinyxml.h”,但是明明我在工程底下有了这个文件,对于我这种初学C++ 的人来说我并不知道头文件和源文件到底什么关系(不像java的类文件),不过最终还是解决了这个问题。   一、源文件如何根据#include来关联头文件   1,系统自带的头文件用尖括号括起来,这样编译器...

2011-07-23 10:41:57 171

原创 从Java到C++ 对比Java与C++编程的不同

学习怎样从一种编程语言转移到另一种编程语言是今日的程序员必须面对的现实,还好,C++ 和Java 有很多共同的特点,所以从Java 转到C++ 就容易许多。C++比Java复杂很多,本文并没打算涵盖所有C++的功能。但是如果你能够熟练掌握本文中的所有知识点,也足够有效的使用C++了。     这里我们只讲Java与C++的不同之处。像流程控制(if, while, for)这些在C+...

2011-07-23 10:37:00 96

原创 C++中的引用(reference)

1.简介     引用是C++引入的新语言特性。从语意上来说,引用就是一个变量的别名,就好象古代人的“字”和“号”,东坡居士和苏轼只是一个人的不同称呼。对引用的操作对变量产生的影响与对变量直接操作完全一样。例如: int i = 0; int & iRef = i; iRef++;  // i = iRef = 1     尽管引用不使用指针的操作符(*, -&gt...

2011-07-23 02:33:08 77

原创 Beej网络socket编程指南

-------------------------------------------------------------------------------- 介绍   Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等…     好在我已经将这...

2011-07-22 22:42:19 57

原创 C++完美实现Singleton模式

Singleton 模式是常用的设计模式之一,但是要实现一个真正实用的设计模式却也不是件容易的事情。 1.         标准的实现 class Singleton { public:        static Singleton * Instance()        {               ...

2011-07-22 22:02:24 68

原创 关于C++ const 的全面总结

C++ 中的 const 关键 字的用法非常灵活,而使用 const 将大大改善程序的健壮性, 本人根据各方面查到的资料进行 总结 如下,期望 对 朋友们有所帮 助。 Const 是 C++ 中常用的类型修饰符 , 常类型是指使用类型修饰符 const 说明的类型,常类型的变量或对象的值是不能被更新的。   一、 Const 作...

2011-07-22 22:01:44 46

原创 C++学习摘要之九:C++流和文件流

    在程序设计 中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可 以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。在进行I/O操作时,首先是打开 操作,使流和文件发生联系,建立联系后的文件才允许数据流入和流出,输入或输出结束...

2011-07-22 21:45:14 76

原创 C++学习摘要之八:模板

模板(template)利用一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型,利用模板功能可以构造相关的函数或类的系 列,因此模板也可称为参数化的类型。在C++语言中,模板可分为类模板(class template)和函数模板(function template)。    在程序中说明了一个函数模板后,编译系统发现有一个相应的函数调用时,将根据实参中的类型来确认是否匹...

2011-07-22 21:37:41 69

原创 C++学习摘要之七:运算符重载

C++语言中预定义的运算符的操作对象只能是基本数据类型,但是,在实际应用中,对于很多用户自定义数据类型(如类)也需要类似的功能,这就需要对 已有的运算符赋予多种含义,使同一个运算符具有作用于不同类性的数据导致不同类型的行为,这就是运算符重载。因此,运算符重载的目的是设置C++语言中的 某一运算符,让它们之间并不冲突,C++语言会根据运算符的位置辨别应使用哪一种功能进行运算。可见,运算符重载的优...

2011-07-22 21:36:48 70

原创 C++学习摘要之六:友元函数与友元类

采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需 要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两 者统称为友元。友元的作用是提供了工序的运行效率,但又破坏了类的封装性。    1.友元函数    友元函数...

2011-07-22 21:36:20 57

原创 C++学习摘要之五:静态成员

在一个类中还可以定义静态成员,但静态成员是所有对象公有的。静态成员分为静态数据成员和静态成员函数。    1.静态数据成员    在类中定义静态数据成员的方法就是在该成员的前面加上关键字static.    定义静态数据成员的语句格式如下:    class 类名    {    ……    static 类型说明符 成员名;    ……    };     静态数据成员...

2011-07-22 21:35:49 61

原创 C++学习摘要之四:虚函数和多态

多态性与前面提到的数据封装和继承性共同构成了面向对象程序设计的三个重要机制。   1.静态联编与动态联编   由于函数重载的存在,当程序中出现调用同名函数时,编译器会根据函数的参数类型、个数决定调用执行哪一个同名函数的代码,这种把一个函数的调用与适当的函数实现代码联系在一起的过程,叫做联编。根据联编的实现阶段的不同,可将其分为静态联编和动态联编两种。   静态联编是在程序编译阶段确定一个函数...

2011-07-22 21:35:18 60

原创 C++学习摘要之三:继承和派生

C++学习摘要之三:继承和派生 继承性是面向对象程序设计最重要的机制之一。    1.继承的概念   所谓继承(inheritance)就是利用已有的数据类型定义出新的数据类型。   在继承关系中,被继承的类称为基类(base class)或父类,而通过继承关系定义出来的新类则被称为派生类(derived class)或子类。   派生类既可以对基类的性质进行扩展又可以对基类进行限制,从...

2011-07-22 21:33:48 52

原创 C++学习摘要之二:构造函数和析构函数

  构造函数和析构函数是类的两个特殊的成员函数   1.构造函数   构造函数(constructor)是类的一个特殊的成员函数,它与类名同名。当定义该类的对象时,构造函数将被系统自动调用用以实现对该对象的初始化。   构造函数不能有返回值,因而不能指定包括void在内的任何返回值类型。   构造函数的定义与其他成员函数的定义一样可以放在类内或类外。   构造函数的定义格式为:   ...

2011-07-22 21:20:40 59

原创 C++学习摘要之一:类和对象

第一章 类和对象   类和对象是面向对象程序设计的两个最基本、最重要的概念。所谓对象就是客观事务在计算机中的抽象描述;而所谓类则是对具有相似属性和行为的一组对象的统一描述。从程序设计语言的角度来说,类是一种数据类型,而对象是具有这种类型的变量。   1.类的定义   类定义的一般形式为:   class 类名   {   private:   数据成员或成员函数   protect...

2011-07-22 21:19:05 72

原创 C++ STL 中map 的一些用法(转)

一.Map概述 Map是STL的一个关联容器,它提供一对一(其中第一 个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的 时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功 能,所以在map内...

2011-07-22 21:18:07 46

原创 浅析c/c++中的指针

在学习c/c+过程中,指针是一个比较让人头痛的问题,稍微不注意将会是程序编译无法 通过,甚至造成死机。在程序设计过程中,指针也往往是产生隐含bug的原因。下面就来 谈谈指针的应用以及需要注意的一些问题,里面也许就有你平时没有注意到的问题,希 望能帮助各位读者理解好指针。 一、我们先来回忆一下指针的概念吧,方便下面的介绍 指针是存放地址值的变量或者常量。例如:int a=1;&a就...

2011-07-22 13:14:48 52

原创 C++ vector 类学习笔记

作者: tyc611, 2007-01-15 发表于: http://blog.chinaunix.net/u/18517/showart_232126.htmlvector容器类型    vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。 vector的构造   ...

2011-07-21 21:29:26 59

原创 C++中的vector简单使用实例

首先是vector的声明:   #include <vector> using namespace std; // 在这里声明 ... vector<int> i; ... 或者 #include <vector> ... std::vector<int> i; // 在这里显式声明 看具体使用: ...

2011-07-21 21:28:56 118

原创 STL map常用操作简介

1。目录 map简介 map的功能 使用map 在map中插入元素 查找并获取map中的元素 从map中删除元素 2。map简介 map是一类关联式容器 。它的特点是增加和删除节点对迭代器的影响很小 ,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 3。map的功能 自动建立Key - v...

2011-07-21 21:01:40 43

原创 STL中map用法详解

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会...

2011-07-21 21:01:09 48

原创 IP数据包结构

一般来说,IP包格式为 IP头-协议头-数据 在IP头中有一个协议类型的域Protocol,指定了这个IP包的具体的TCP/IP协议, 获得了具体协议后跳过IP头使用具体的协议结构对协议头进行解析,可以获得更详细的协议信息 (1)版本  占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。 (...

2011-07-21 17:11:22 146

原创 ZThread库在Linux下安装

版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://linuxmem.blogbus.com/logs/47311596.html ZThread 是 一个优秀的开放源码的C++线程库,Bruce Eckel在Thinking in C++第二卷的第11章讲述C++并发编程的时候即以此为基础。ZThread库在使用的时候与Java多线程编程很相似...

2011-07-21 14:36:11 452

原创 c++线程池

为什么需要线程池 目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传 统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即 时销毁”的策略。尽管与创建进程相比,创建线程的时间...

2011-07-20 22:21:53 89

原创 Linux C++ 一个线程池的简单实现(附代码)

这是对 pthread线程的一个简单应用 1.      实现了线程池的概念,线程可以重复使用。 2.      对信号量,互斥锁等进行封装,业务处理函数中只需写和业务相关的代码。 3.      移植性好。如果想把这个线程池代码应用到自己的实现中去,只要写自己的业务处理函数和改写工作队列数据的处理方法就可以了。   Sample代码主要包括一个...

2011-07-20 22:20:41 281

空空如也

空空如也

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

TA关注的人

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