自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(721)
  • 资源 (17)
  • 收藏
  • 关注

翻译 SkipList跳表的原理与实现

为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。 用跳表吧,跳表是一种随机化的数据结构,

2013-08-26 16:01:14 1264

原创 AbstractFactory抽象工厂模式

一、C实现栈#include #include #include #define STACK_INIT_SIZE 10 #define STACKINCREMENT 2typedef int INT;typedef bool BOOL;typedef struct stack { INT *base; INT *top; INT stacksize; };enu

2013-08-26 15:55:23 1111

原创 STL copy详解

0 前言: STL,为什么你必须掌握对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证其准确性。不过,等你开始应用计算机语言来工作的时候,你会发现,面对不同的需求你需要一次又一次去用代码重复实现这些已经成熟的算

2013-08-22 15:08:22 1442

原创 C++ 之高效使用STL(算法 )

STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象。    STL中算法大致分为四类:        1、非可变序列算法:指不直接修改其所操作的容器内容的算法。        2、可变序列算法:指可以修改它们所操作的容器内容的算法。        3、排序算法:包括对序列进行排序和合并的算法、搜索

2013-08-22 14:40:28 1953

原创 pair和make_pair

1、简介        class pair ,中文译为对组,可以个值视为将两一对于个单元。map和multimap,是就用pairs来管理value/key的成对元素。任何函数需要回传两个值,也需要pair。        该函数的相关内容如下所示:        |->Type----->struct        |->Include--->

2013-08-21 10:40:10 1165

原创 STL之multimap简介

C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。(具体用法请参考map容器)函数列表:begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 count() 返回一个元素出现的次数 empty() 如果multimap为空则返回真 end() 返回一个指向multimap末尾的迭代器 equal_range() 返回指

2013-08-20 17:53:56 1055

原创 map/multimap容器类型

map和multimap将key/value pair当做元素,进行管理。它们可根据key的排序准则自动将元素排序。multimap允许重复元素,map不允许。一、map/multimapmap c;map c(op);map c1(c2);map c(beg,end,op);c.size();c.empty();c.max_size();c

2013-08-20 17:00:29 1876

原创 STL之multiset简介

在我的印象中,set就是一个元素不重复的集合,而事实上也正是这样的。无论从MSDN还是任何其它地方,都会告诉我们set的元素不可以重复。反之,只要元素不重复,就可以顺利的放入到set中。看起来这实在是再清楚不过了,但是仔细想一想的话,就会发现,话说只要不重复的元素就可以被放入到一个set中,但是什么样的元素是不重复的元素呢?或者说,什么样的元素是互不相同的呢?对于内置数据类型,也就是传说中的pri

2013-08-20 15:09:19 1297

原创 set,multiset容器类型

set和multiset会根据特定的排序准则,自动将元素排序。两者不同处在于multiset允许元素重复而set不允许。一、set和mutisetset c;set c(op);set c1(c2);set c(beg,end,op);c.size();c.empty();c.max_size();c.count(elem);c.find(elem);c.lower_bo

2013-08-20 14:40:53 1712

原创 STL序列式容器和关联式容器

序列式容器1、vectorvector c;vector c2(c1);vector c(n);//利用元素default构造函数生成一个大小为n的vectorvector c(n,elem);vector c(beg,end);c.size();c.empty();c.max_size();c.capacity();c.reverse();c1 =

2013-08-19 18:58:32 2189

原创 二分查找—lower_bound 、upper_bound 、binary_search

STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提)。       其中如果寻找的value存在,那么lower_bound返回一个迭代器指向其中第一个这个元素。upper_bound返回一个迭代器指向其中最后一个这个元素的下一个位置(明确点说就是返回在不破坏顺序的情况下

2013-08-19 17:04:15 1365

原创 抽奖程序

一、int rand()可以生成从[0, 65536)之间均匀分布的随机数。现要求实现:有30万员工,使用rand()写一个抽奖程序,抽出人100获奖。#include #include using namespace std;typedef set ISET;ISET GetPridePersonId(const int num, const int pride_num)

2013-08-19 15:37:44 1771 1

转载 Hadoop配置项整理

一、Hadoop配置项整理(core-site.xml)记录一下Hadoop的配置和说明,用到新的配置项会补充进来,不定期更新。以配置文件名划分以hadoop 1.x配置为例core-site.xml  namevalue Description  fs.default.namehdfs://hadoopmaster:90

2013-08-13 16:13:34 1600

原创 Apache Rewrite设置

一、Apache 域名的重定向简单的说就是配置Apache让它自动把旧的URL地址转换成新的URL输出。 首先,apache重定向功能需要调用mod_rewrite模块,由于apache2.2的modules文件夹中带有该模块,所以我们只需开启http.conf文件中的LoadModule rewrite_module modules/mod_rewrite.so(去掉前面的‘

2013-08-01 18:50:29 1965

原创 循环移位算法

将一个含有n个元素的数组向右循环移动k位,要求时间复杂度是O(n),且只能使用两个额外的变量,这是在微软的编程之美上看到的一道题分析:比如数组 1 2 3 4循环右移1位 将变成 4 1 2 3, 观察可知1 2 3 的顺序在移位前后没有改变,只是和4的位置交换了一下,所以等同于1 2 3 4 先划分为两部分1 2 3 | 4,然后将1 2 3逆序,再将4 逆序 得到 3 2 1 4,

2013-07-22 20:08:29 4803

原创 深入浅出C/C++中的正则表达式库

一、深入浅出C/C++中的正则表达式库(一)——GNU Regex Library写在前面: 本文是面向有正则表达式基础的读者朋友的,如果你还不知道正则表达式是什么,请先到这里学习一下 :http://en.wikipedia.org/wiki/Regular_expression。正则表达式(Regular Expressions),又被称为regex或regexp,是一种十

2013-07-17 10:12:59 7338

转载 详解Google-ProtoBuf中结构化数据的编码

本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf。因此,本文首先会介绍一些google protobuf相关的内容,让读者朋友对google protobuf有一个初步的印象,然后,再开始进入正题—-深入浅出地介绍google protobuf中用到的编码规则。下面言归正传,开始今天的

2013-07-16 16:57:48 1598

原创 google ProtoBuf开发者指南

ProtoBuf开发者指南译者:gashero目录1   概览1.1   什么是protocol buffer1.2   他们如何工作1.3   为什么不用XML?1.4   听起来像是为我的解决方案,如何开始?1.5   一点历史2   语言指导2.1   定义一个消息类型2.2   值类型2.3   可选字段与缺省值2.4

2013-07-16 15:58:48 2428

原创 Linux线程池

一、线程池大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是"即时创建,即时销毁"的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次

2013-07-15 18:45:44 2014

转载 可伸缩多线程任务队列

在我们的工作中,我们经常需要异步执行一些任务,下面介绍的这个可伸缩多线程队列,可满足我们的需求。  出自:http://www.codeproject.com/Articles/4148/Multithreaded-Job-Queue,主要有以下几个功能:    1、任务队列是多线程,许多任务可以异步进行,任务队列使用线程池来执行任务。    2、任务队列支持优先级,优先级

2013-07-15 18:39:29 1754

原创 Python中的getattr()函数详解

最近看Dive into python第四章自省中提到getattr()函数,作为一个内建函数平时自己没怎么用过所以也不太理解这个函数的一些用法看了下函数本身的docgetattr(object, name[, default]) -> valueGet a named attribute from an object; getattr(x, 'y') is equival

2013-07-12 15:45:34 1602

转载 How To Use Linux epoll with Python

ContentsIntroductionBlocking Socket Programming ExamplesBenefits of Asynchronous Sockets and Linux epollAsynchronous Socket Programming Examples with epollPerformance ConsiderationsSource Code

2013-07-12 09:53:28 1059

原创 fstream的使用方法详解

ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;  在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>)

2013-07-05 11:00:08 2828

转载 Linux下面的线程锁,条件变量以及信号量的使用

一) 线程锁1) 只能用于"锁"住临界代码区域2) 一个线程加的锁必须由该线程解锁.锁几乎是我们学习同步时最开始接触到的一个策略,也是最简单, 最直白的策略.二) 条件变量,与锁不同, 条件变量用于等待某个条件被触发1) 大体使用的伪码:// 线程一代码pthread_mutex_lock(&mutex);// 设置条件为truepthread_co

2013-07-04 16:33:46 1575

转载 Zookeeper使用详解

安装和配置详解本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两个方面介绍 Zookeeper 的安装和配置。单机模式单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目

2013-06-30 16:00:18 1620

原创 linux下php扩展ssh2的详解

一、php扩展ssh2安装①安装libssh2:a.  # cd /home/spider/lamp/b.  # wget http://www.libssh2.org/download/libssh2-1.2.8.tar.gzc.  # tar -zxvf libssh2-1.1.tar.gzd.  # cd libssh2-1.1e.  # ./config

2013-06-27 10:35:54 2985

原创 将数组里的负数排在数组的前面,正数排在数组的后面。但不改变原先负数和正数的排列顺序。

题目描述:将数组里的负数排在数组的前面,正数排在数组的后面。但不改变原先负数和正数的排列顺序。例:input: -5,2,-3, 4,-8,-9, 1, 3,-10;output: -5, -3, -8, -9, -10, 2, 4, 1, 3。算法描述:①设定两个计数器begin、end,其中begin始终指向数组中的第一个负数,end始终指向位于begin之后的第一个正数。然后把b

2013-06-22 19:47:42 7711 1

转载 跟我学写Makefile

CentOS, 本地服务器,ip: 192.168.1.111Ubuntu, 远程服务器,ip: 192.168.1.1121.拷贝远程服务器的目录到本地服务器远程服务器192.168.1.112上面/tmp目录下面有个test目录,里面有个文件名为test,内容也为testroot@ubuntu:/tmp# cat test/test test拷贝远程服务器192

2013-06-20 19:52:00 1658

原创 把文件中大量的数据去掉重复的再写入文件

CURL是一个超强的命令行工具,其功能非常强大,有Linux/Unix版本的,也有Windows版本的,我平时就经常在Windows下面使用curl做一些测试,非常方便,有时用curl做测试比用浏览器做测试要快得多,方便得多。1.curl命令帮助选项C:\>curl --helpUsage: curl [options...] Options: (H) means HTTP/H

2013-06-20 19:51:19 1456

转载 python 时间和日期

我有的时候写程序要用到当前时间,我就想用python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次,为了能够更好的记住,我今天特意写下python 当前时间这篇文章,如果你觉的对你有用的话,可以收藏下。取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方文档了解下,要取的当前时间的话,要取得当前时间的时

2013-06-19 10:31:40 1507

转载 Epoll在LT和ET模式下的读写方式

在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂

2013-06-17 15:56:36 1614

转载 用GDB调试程序(二)

GDB的命令概貌———————启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示:    /home/hchen> gdb    GNU gdb 5.1.1    Copyright 2002 Free Software Foundation, Inc.    GDB is fr

2013-06-17 15:04:05 1153

原创 数组中最长的区间,满足该区间内的数排序后是连续的。

题目:数组中最长的区间,满足该区间内的数排序后是连续的。比如,[23, 4,1,3,2,9,8,24] 4,1,3,2 是最长区间,是连在一起的。[23, 1,3,2,9,4,8,24] 就只能返回1,2,3了。算法描述:①从x0开始,找length=|x0-x1|+1内的max和min,length大于数列长度则否定x0,再从x1向后开始找;1_如果max-min+1=length,

2013-06-17 14:07:30 1577 1

转载 cmake使用方法详解

cmake 简介    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法    CMake的所有的语句都写在一个叫:CMakeLists.txt的文件中。当CMakeLists.txt文

2013-06-14 17:35:18 20660

转载 Linux内核进程调度schedule深入理解

一.说明本文以linux-2.4.10 为例主要分析Linux 进程调度模块中的schedule 函数及其相关的函数。另外相关的前提知识也会说明。默认系统平台是自己的i386 架构的pc。二.前提知识在进行schedule 分析之前有必要简单说明一下系统启动过程,内存分配使用等。这样才能自然过渡到schedule 模块。首先是Linux各个功能模块之间的依赖关系:

2013-06-13 16:40:25 7215 1

原创 算法的时间复杂度和空间复杂度

一、常用的算法的时间复杂度和空间复杂度二、算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句

2013-06-05 18:25:59 1936

原创 求两个数组的交集、并集和差集算法分析与实现

一、数组内数据无序且可以重复本文采用一种交换的方式来求出两个数组的并集,交集和差集,这种算法运算速度较快,内存消耗空间较少,是一个值得学习的好方法,另外,作者提醒您,重要的不是算法本身,而是该算法会开拓我们的思维空间,要注意对问题的多思考。 算法概述:两个任意元素的数组,比较出两个数组中相同的元素和不同的元素。 元素划分:计算过程中,两个

2013-06-05 17:02:11 12702 1

原创 epoll应用服务端和客户端

read函数只是一个通用的读文件设备的接口。是否阻塞需要由设备的属性和设定所决定。一般来说,读字符终端、网络的socket描述字,管道文件等,这些文件的缺省read都是阻塞的方式。如果是读磁盘上的文件,一般不会是阻塞方式的。但使用锁和fcntl设置取消文件O_NOBLOCK状态,也会产生阻塞的read效果。一、服务器端实现int onRead(int fd, void *buffe

2013-05-08 13:04:10 1710

原创 socket通信socketpair

这篇文章主要介绍的是socketpair()函数,至于函数的详细介绍,大家可以参看:man socketpair 介绍的还是可以的。下面是中文简介:函数原型#include  #include  int socketpair(int d, int type, int protocol, int sv[2]); 参数介绍:socketpair()函数建立一对匿名的已经连接的套

2013-05-08 12:59:10 2027

转载 Linux同步方法剖析

本文讨论了 Linux 内核中可用的大量同步或锁定机制。这些机制为 2.6.23 版内核的许多可用方法提供了应用程序接口(API)。但是在深入学习 API 之前,首先需要明白将要解决的问题。developerWorks 上 Tim 的更多 剖析... 系列Linux 文件系统剖析Linux 网络堆栈剖析Linux 内核剖析Linux slab 分配器剖析

2013-04-27 14:55:34 981

分布式系统英文版

分布式系统的英文版课本,原版的英文文本,希望对大家有所帮助,现分享给大家。

2012-03-10

OpenGL开发的下雪的场景

OpenGL开发的下雪的场景,配置背景音乐,场景比较舒适,VC+OpenGL 学习的经典 ~~

2011-06-03

用VC开发的数字钟系统

用VC开发的数字钟系统,整个过程,算法设计的比较好,分享给大家 ~~

2011-06-03

C语言图书管理系统,很经典的代码

C语言图书管理系统,功能很齐全,模块化,分享给大家 。。。

2011-06-03

socket网络通信报考客户端和服务器端

socket网络通信报考客户端和服务器端,是比较好学习socket通信基础的网络通信系统

2011-06-03

用vc开发的peeryou

用MFC开发的peeryou系统,结合网络通信相关技术,不错的学习VC和网络通信的结合体

2011-06-03

ARM与智能手机软件开发

ARM与智能手机软件开发,这是一套完整的资料,比较系统地介绍了这些知识和技术,供大家学习和交流~~

2011-03-26

在Symbian开发环境,开发技术

在Symbian开发环境,开发技术,这是一套完整的学习资料,比较系统的介绍了Symbian开发,分享给大家~~

2011-03-26

用MFC做的数字示波器,觉得挺好的

用MFC做的数字示波器,觉得挺好的,具有全方位的各种功能,可以供大家学习和参考,希望对大家能有所帮助~~

2011-03-26

已知二叉树的前序和中序遍历,打印后序遍历

已知二叉树的前序和中序遍历,打印后序遍历,采用二叉树的非递归算法,分享给大家~~

2011-03-26

全国计算机等级考试,上机考试题目基本上是这里面的

这里包含了计算机等级考试中,上机考试的每种题型,而且考试的题目,每年基本从这里选择的,希望能对各位有所帮助,分享给大家~~

2011-03-26

利用VC开发的FlashPlayer播放器,播放文件格式为swf

利用VC开发的FlashPlayer播放器,播放文件格式为swf,类似于暴风影音,画面效果和音质都很不错的

2010-03-31

利用VC+OpenGL显示动态画面

利用VC+OpenGL显示动态画面,三位立体的画面~~

2010-03-31

利用VC做的定时关闭计算机

很实用的,利用VC做的定时关闭计算机,功能比较好,方便计算机用户

2010-03-31

基于表达式的计算器功能比较齐全

利用VC编写的,功能比较齐全的专业科学计算器

2010-03-31

在C语言中算法实现寻找马鞍点算法

通过对二维数组的处理,提出好的算法,进而达到找到马鞍点的要求!

2010-03-29

利用vc++做的简单的计算器

用VC++做了个计算器,能实现一些最基本的功能,分享一下,呵呵

2010-03-29

空空如也

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

TA关注的人

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