自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (45)
  • 收藏
  • 关注

原创 C++ STL学习笔记

#.string 建议  使用string 的方便性就不用再说了,这里要重点强调的是string的安全性。   string并不是万能的,如果你在一个大工程中需要频繁处理字符串,而且有可能是多线程,那么你一定要慎重(当然,在多线程下你使用任何STL容器都要慎重)。   string的实现和效率并不一定是你想象的那样,如果你对大量的字符串操作,而且特别关心其效率,那么你有两个选择,首

2012-11-18 18:12:27 3166

原创 windows下ping程序实现

windows下ping程序的实现:使用原始套接字SOCK_RAW,基于IP协议上的ICMP协议来实现,发送的ICMP数据包type为8(请求回复),收到的回复的ICMP数据包type为0,为了判断收到是数据包是本进程发送的。将ICMP包的id设置为本进程的ID。如果使用-r选项,会记录中间经过的route。参考代码:// Description:// This sample i

2012-10-18 09:41:54 3584

原创 BST树 B-树 B+树 B*树简介

BST即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B-树(B树)是一种多路搜索树(并不是二叉的):1.定义任意非叶子结点最多只有M个儿子;且M>2;2.根结点的儿子数为[2, M];3.除根结点以外的非叶子结点的儿子数

2012-10-16 14:03:50 6918

原创 Windows下一个并发阻塞队列(BlockingQueue)

Windows下一个带有大小限制的并发阻塞队列,实现的比较简单。#ifndef BLOCKINGQUEUE_H_#define BLOCKINGQUEUE_H_#include #include using namespace std;template class BoundedBlockingQueue { public: BoundedB

2012-10-11 11:58:56 3198

原创 Linux下设计并发队列

设计并发队列#include #include using namespace std;template class Queue { public: Queue( ) { pthread_mutex_init(&_lock, NULL); } ~Queue( ) {

2012-10-07 09:59:35 2797

原创 Linux的进程通信(IPC)

进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。进程

2012-10-06 10:18:32 3306

原创 面向对象的5个基本设计原则

面向对象的3个基本要素:封装、继承、多态面向对象的5个基本设计原则:单一职责原则(Single-Resposibility Principle)    其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖

2012-10-05 19:49:02 40053 9

原创 后缀数组--处理字符串的利器

后缀数组是处理字符串的有力工具。后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也并不逊色,而且它比后缀树所占用的内存空间小很多。子串:字符串S的子串r[i..j],i后缀:后缀是指从某个位置i开始到整个串末尾结束的一个特殊子串。字符串 s 的从第i个字符开始的后缀表示为Suffix(i), 也就是Suffix(i)=r[i..len(s

2012-10-05 12:44:28 3250

原创 求字符串中最长无重复字符的子串

题目:求一个字符串中最长的没有重复字符的子串。方法一:穷举法,使用2重外循环遍历所有的区间,用2重内循环检验子串是否符合“无重复字符”这一要求。其中外层循环i、j 遍历所有的下标,m、n是内层循环,检查区间[i,j]是否符合要求。空间复杂度是O(1),时间复杂度O(N^4)。//O(N^4)的时间复杂度int max_unique_substring1(char * str){

2012-10-02 13:25:06 17029 2

原创 二分搜索及其扩展

二分搜索折半搜索,也称二分查找算法、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。时间复杂度:二分搜索每次把

2012-10-01 15:48:19 3292

原创 卡特兰数 Catalan number

卡特兰数 Catalan number卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 914825636

2012-10-01 10:23:59 5075

原创 背包问题

P01: 01背包问题 题目:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路:这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v] = max{ f[i-1][v],

2012-09-20 19:55:08 3246 1

原创 大整数加减乘除的实现

为了复习C++基本的东西,自己随便写的,实现的是正的大整数的加减乘除,其中除的实现比较低效,没有找到很好的解决方法。实现代码:#include using namespace std; const int MAXLEN = 100; class Integer {private: int is_neg; //是否为负 int

2012-09-14 21:04:56 10062 1

翻译 有序数组中找中位数

原文:Median of two sorted arrays题目:两个有序数组A和B,大小都是n,寻找这两个数组合并后的中位数。时间复杂度为O(logn)。中位数:如果数组有个数是奇数,那么中数的值就是有序时处于中间的数;如果数组个数是偶数的,那么就是有序时中间两个数的平均值。方法一:合并时计数使用Merge Sort时的Merge操作,比较两个数组时候计数,当计数达到n时,就可以

2012-09-09 14:54:09 4291

原创 等概率随机函数的实现

利用等概率函数Rand5产生等概率函数Rand3问题描述:现在有一个叫做Rand5的函数,可以生成等概率的[0, 5)范围内的随机整数,要求利用此函数写一个Rand3函数(除此之外,不能再使用任何能产生随机数的函数或数据源),生成等概率的[0, 3)范围内的随机整数。//使用Rand5()实现Rand3()int Rand3(){ int x; do

2012-09-06 14:34:41 3215 2

原创 Trie树的C++实现

Trie—单词查找树Trie,又称单词查找树、前缀树,是一种哈希树的变种。应用于字符串的统计与排序,经常被搜索引擎系统用于文本词频统计。性质:1.根节点不包含字符,除根节点外的每一个节点都只包含一个字符。2.从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。3.每个节点的所有子节点包含的字符都不相同。优点:1.查询快。对于长度为m的键值,最坏情况下只需

2012-09-03 13:40:23 6445 2

原创 二分查找法及其扩展运用

二分查找可以解决排序数组的查找问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过logN次比较。    二分搜索需要注意开闭区间的问题,限

2012-09-02 15:24:15 3740

原创 C++类的大小

一个空类class A{};的大小为什么是1,因为如果不是1,当定义这个类的对象数组时候A objects[5]; objects[0]和objects[1]就在同一个地址处,就无法区分。#includeusing namespace std;class A{public: virtual void aa(){}private: char k[3];

2012-09-01 10:45:41 1130

原创 C++构造函数虚拟化

虚拟构造函数当你有一个指针或引用,但是不知道其指向对象的真实类型是什么时,你可以调用虚拟函数来完成特定类型(type-specific)对象的行为。仅当你还没拥有一个对象但是你确切地知道想要对象的类型时,你才会调用构造函数。那么虚拟构造函数又从何谈起呢?例如假设你编写一个程序,用来进行新闻报道的工作,一条新闻报道由文字或图片组成。你可以这样管理它们:class NLComponent

2012-08-12 19:31:25 2586 2

原创 类的operator new与operator delete的重载

为什么有必要写自己的operator new和operator delete?答案通常是:为了效率。缺省版本的operator new是一种通用型的内存分配器,它必须可以分配任意大小的内存块。同样,operator delete也要可以释放任意大小的内存块。operator delete想弄清它要释放的内存有多大,就必须知道当初operator new分配的内存有多大。有一种常用的方法可以

2012-08-11 10:45:32 1142

原创 C++的重载(overload)与重写(override)

成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。重写是指派生类函数重写基类函数,是C++的多态的表现,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual关键字。示例中,函数Base::f(int)与Base::

2012-08-09 18:27:13 1661

原创 排列组合问题

排列:从n个不同元素中,任取m(m    组合:从n个不同元素中,任取m(m#include using namespace std;#define MaxN 10char used[MaxN];int p[MaxN];char s[MaxN];//从n个元素中选r个进行排列void permute(int pos,const int n,const i

2012-08-08 13:59:42 970

原创 O(N)的时间寻找最大的K个数

寻找N个数中最大的K个数,本质上就是寻找最大的K个数中最小的那个,也就是第K大的数。可以使用二分搜索的策略来寻找N个数中的第K大的数。对于一个给定的数p,可以在O(N)的时间复杂度内找出所有不小于p的数。寻找第k大的元素:#include using namespace std;//快速排序的划分函数int partition(int a[],int l,int r){

2012-08-07 11:45:28 2897

原创 会场安排问题

会场安排问题问题描述:假设要在足够多的会场里安排一批活动,活动的开始时间和结束时间已知,并希望使用尽可能少的会场。设计一个有效的算法进行安排。分析:这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,就对应要找的最小会场数。 图的最少着色问题,至今没有有效的算法,但这个问题和图的着色问题有不同,活动的时间区间之间的约束

2012-08-07 10:07:01 1208

原创 new、operator new和placement new

C++中的new/delete与operator new/operator deletenew operator/delete operator就是new和delete操作符,而operator new/operator delete是函数new operator(1)调用operator new分配足够的空间,并调用相关对象的构造函数(2)不可以被重载operator new

2012-08-04 19:17:08 1241

原创 单源最短路径算法--Dijkstra算法和Bellman-Ford算法

Dijkstra算法算法流程:(a) 初始化:用起点v到该顶点w的直接边(弧)初始化最短路径,否则设为∞;(b) 从未求得最短路径的终点中选择路径长度最小的终点u:即求得v到u的最短路径;(c) 修改最短路径:计算u的邻接点的最短路径,若(v,…,u)+(u,w)(d) 重复(b)-(c),直到求得v到其余所有顶点的最短路径。特点:总是按照从小到大的顺序求得最短路径。假

2012-08-03 20:58:07 1665

原创 内部排序法小结

1.冒泡排序(Bubble Sort)冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最

2012-08-02 20:34:12 5044

原创 寻找最大的k个数,TopK问题的C++实现

2亿个整数中求最大的100万之和题目:有一个文件中保存了2亿个整数,每个整数都以' '分隔。求最大的100万个整数之和。算法:1. 首先建立一个容量为100万(nTop)的int数组,从文件读取整数填充。2. 利用堆维护该100万条记录(确保堆顶元素为最小值)3. 从文件中读取一个整数与堆顶元素比较,如果大于堆顶元素则替换该元素,并调整堆的结构。4. 重复步骤3一直到数据读

2012-07-28 12:02:21 8911

原创 hashmap的C++实现

按照hashmap的基本原理用C++实现了简单的基本功能,复杂的实现参考C++库的源码,C++最新的标准库里已经有以下四种基于hashtable的容器:unordered_set(C++11) unordered_multiset(C++11) unordered_map(C++11) unordered_multimap (C++11)。具体参考:http://en.cppr

2012-07-25 19:00:02 9509

原创 《编程珠玑》中的一些代码

位图排序使用位图对[0..N-1]中不同的整数进行排序/* bitmap sort -- Sort distinct integers in the range [0..N-1] */#include #define BITSPERWORD 32#define SHIFT 5#define MASK 0x1F#define N 10000000int a

2012-07-16 18:25:06 1251

原创 编程之美--数字之魅

读《编程之美》数字之魅部分的笔记。1、整型数V的二进制中1的个数:int Count(int v){ int num = 0; while(v) { num += v & 0x01; v >>= 1; } return num;}int Count(int v){ int n

2012-07-12 14:55:56 1383

原创 几种不同语言版本的HMM实现

C语言版:1、 HTK(Hidden Markov Model Toolkit):        HTK是英国剑桥大学开发的一套基于C语言的隐马尔科夫模型工具箱,主要应用于语音识别、语音合成的研究,也被用在其他领域,如字符识别和DNA排序等。HTK是重量级的HMM版本。        HTK主页:http://htk.eng.cam.ac.uk/2、 GHMM Library:

2012-07-08 13:56:04 8794

原创 Dynamic time warping 动态时间规整算法(DTW)

Dynamic time warping (DTW) is an algorithm for measuring similarity between two sequences which may vary in time or speed. For instance, similarities in walking patterns would be detected, even if i

2012-07-08 13:45:02 8002

原创 C++数字与字符串之间的转换

1、字符串数字之间的转换(1)string --> char *   string str("OK");   char * p = str.c_str();(2)char * -->string   char *p = "OK";   string str(p);(3)char * -->CString    char *p ="OK";   CSt

2012-06-29 18:28:11 3532

原创 构造函数和析构函数的一些问题

1、构造函数和析构函数为什么没有返回值?构造函数和析构函数是两个非常特殊的函数:它们没有返回值.这与返回值为void的函数显然不同.后者虽然也不返回任何值,但还可以让它做点别的事情,而构造函数和析构函数则不允许.在程序中创建和消除一个对象的行为非常特殊,就像出生和死亡,而且总是由编译器来调用这些函数以确保它们被执行.如果它们有返回值,要么编译器必须知道如何处理返回值,要么就只能由客户程序员自己

2012-06-20 11:37:02 1927

原创 BP人工神经网络的C++实现

BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法(梯度法),通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网

2012-06-10 14:33:28 36532 10

原创 串口通信Serial Port类C++实现

串口介绍串口叫做串行接口,也称串行通信接口,按电气标准及协议来分包括RS-232、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。 RS-232:也称标准串口,是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(E

2012-06-08 17:54:46 50025 3

原创 Base64算法及C++实现

Base64用途1.用于对SOHO级路由器(网关设备)管理员帐户密码的加密2.流媒体网站对于播放的流媒体文件的路径的加密3.迅雷等下载软件对下载链接地址的加密Base64算法Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。Base64类

2012-06-07 11:50:20 7162

原创 Windows多线程的同步与互斥

系统中的所有线程都必须拥有对各种系统资源的访问权,这些资源包括内存堆栈,串口,文件,窗口和许多其他资源。如果一个线程需要独占对资源的访问权,那么其他线程就无法完成它们的工作。反过来说,也不能让任何一个线程在任何时间都能访问所有的资源。如果在一个线程从内存块中读取数据时,另一个线程却想要将数据写入同一个内存块,那么这就像你在读一本书时另一个人却在修改书中的内容一样。这样,书中的内容就会被搞得乱七八糟

2012-06-06 16:45:37 3951

原创 Windows线程的创建和终止

线程的创建CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别     CreateThread是Windows的API函数,提供操作系统级别的创建线程的操作,且仅限于工作者线程。不调用MFC和RTL的函数时,可以用CreateThread,其它情况不要轻易。在使用的过程中要考虑到进程的同步与互斥的关系(防止死锁)

2012-06-05 13:06:40 1908

简明python教程

简明python教程 包含教程和源码 Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。

2008-09-23

Visual C++ 6.0高级编程技术-OpenGL篇(OpenGL实例)

Visual C++ 6.0高级编程技术-OpenGL篇(OpenGL实例) 到 http://download.csdn.net/source/597445 可以下载电子书

2008-09-16

windows 核心编程

本书是讲解Windows 操作系统内部机制的专著,作者从基本概念入手,全面系统地介绍了Windows的各种基本构件,如进程、线程、DLL和内存管理等,并列举了大量应用程序,精辟地分析了构件的使用方法,为掌握Windows 编程技巧提供了一条有效的捷径。对于不同水平的Windows 编程人员来说,本书都具有极好的参考价值。

2008-09-09

Eclipse中文教程

Eclipse中文教程.pdf 简体中文清晰版

2008-09-03

JAVA中文API帮助文档

JAVA中文API帮助文档.chm,中文的java API,希望对大家学习java提供方便

2008-09-03

Visual C++ 6.0高级编程技术-OpenGL篇

Visual C++ 6.0高级编程技术-OpenGL篇.pdf

2008-08-31

OpenGl基础图形编程

OpenGl基础图形编程.chm

2008-08-03

mfc42ud.lib和mfc42ud.dll

LINK : fatal error LNK1104: cannot open file \"mfc42ud.lib\"缺少支持Unicode的文件;mfc42ud.lib和mfc42ud.dll 打包

2008-08-03

Visual C++ MFC入门教程

Visual C++ MFC入门教程.chm

2008-07-20

php开发手册简体中文版

php官方手册简体中文版.chm

2008-07-20

学生信息管理系统

简单的学生信息管理系统

2008-06-15

2008年上半年软件设计师试题

2008年上半年软件设计师试题.pdf

2008-05-28

OpenGL教程

OpenGL教程.pdf

2008-05-28

C++设计模式

c++版设计模式,pdf

2008-05-28

DEELX 正则表达式文档

DEELX 正则引擎性能与特点<br>C++ 环境下的正则表达式引擎,RegExLab 的研究开发项目。<br><br>

2008-05-08

学OpenGL编3D游戏

学OpenGL编3D游戏.rar

2008-04-27

java谜题中文版

java_puzzlers 中文版.pdf,java谜题

2008-04-25

C++ STL书籍集

微软C编程精粹(doc),高质量c++编程(pdf和doc),Effective c++(chm),More Effective c++(doc和pdf),STL实践指南(doc),Effective STL(pdf),WindowsProgramming.chm,Effective STL读书笔记.doc算法设计与分析.doc

2008-04-08

C++标准程序库

C++标准程序库 pdf 简体中文版

2008-04-08

C++ STL编程书籍

都是好书,包含:高质量c++编程,Effective c++,More Effective c++,STL编程指南,Effective STL,<br>cpp reference,c++标准程序库,Accelerated c++

2008-04-07

组态工业控件

使用C#实现的一些用于组态软件的工业控件实例。

2014-12-13

MySQL参考手册和SQL命令参考手册

MySQL的参考手册

2014-11-09

MybatisDemo

Mybatis实现数据的增删改查(CRUD)。Mybatis关联查询(嵌套查询)。

2014-10-19

SpringMVCDemo

Spring MVC 简单实例,基础入门

2014-10-12

基于VLC的MFC播放器

基于VLC(2.1.0)开发的MFC播放器,详情:http://www.cnblogs.com/luxiaoxun/p/3462153.html

2013-12-06

Windows记事本程序

一个win32程序,Windows记事本简单的实现。

2012-11-27

程序员面试攻略(第二版)

Programming Interviews Exposed: Secrets to Landing Your Next Job, Second Edition 程序员面试攻略 第二版

2012-08-24

编程珠玑第二版(中英文版)

编程珠玑第二版,中英文版,pdf版,含有源代码

2012-07-13

隐马尔可夫模型(HMM)

网上收集的HMM的C和C++实现,包括离散和连续的HMM实现

2012-07-08

windows核心编程chm版及源码

windows核心编程chm版,附加源代码。

2012-05-31

VC数据库项目源码

学习VC++数据库编程的源码资料,包括社区视频监控系统、局域网视频监控、短信群发系统、电话语音录音管理系统、餐饮管理系统等

2012-05-25

串口通信类SerialPort

从网上搜集的各种串口通信类,源代码库和Demo代码,赋有下载连接说明。

2011-11-08

动态时间规整DTW算法源码

Dynamic Timing Warping,动态时间规整算法,源码

2011-03-12

python 2.5 for windows

先装python-2.5.1.msi(解释器) 再装pywin32-212.win32-py2.5.exe(编辑器) Windows下Python:http://www.python.org/download/(解释器/平台) http://sourceforge.net/projects/pywin32(编辑器)

2009-04-04

java连连看游戏源码

java连连看游戏源码和执行文件,还不错

2009-02-28

NeHe的OpenGL教程(中文版)及源码

NeHe的OpenGL教程(中文版)及源码.rar

2008-11-17

JDK1.5中文帮助文档

JDK1.5中文帮助文档 chm格式 学习java的好帮手

2008-10-15

Python源码剖析

Python源码剖析.chm 分析python内部机制

2008-09-24

Python 精要参考(第二版)

Python 精要参考(第二版).pdf 清晰版 学python的好书

2008-09-24

Python核心编程 第二版

Python 核心编程 第二版.pdf 清晰版 绝对是学习python的好书

2008-09-24

空空如也

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

TA关注的人

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