- 博客(50)
- 资源 (10)
- 收藏
- 关注
转载 谈EXPORT_SYMBOL使用
谈EXPORT_SYMBOL使用详见http://blog.youkuaiyun.com/macrossdzh/article/details/4601648
2015-03-30 10:32:13
727
原创 设计模式 --责任链模式 Chain of resposbility
定义:责任链模式是一种对象的行为模式【GOF95】。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。实际的应用中责任链并不仅仅表现为链式结构,还有树型责任表等等。该模型的核心思想是分层处理客
2015-02-01 23:03:09
1105
原创 extern C作用总结
extern C使用主要用与在C++代码中调用的C函数的声明,或C++中编译的函数要在C中调用,也即是导入C形式的函数库或者提供C类型的库给C调用,
2015-01-17 19:48:31
3479
原创 软件资源管理模式(1)
资源是一种实体,对于任何计算机系统(智能系统),使用的申请都受到一定的限制。如内存资源、IO资源及CPU资源等等。在我们熟知的系统中如Linux、window、mac&Android等系统内核都对这些资源做了各种管理机制。
2015-01-13 20:53:17
1795
2
转载 hash_map和map的区别
文章来源:http://blog.youkuaiyun.com/dongtingzhizi/article/details/8629285 在网上看了一篇《详细解说STL hash_map系列》的文章(http://blog.163.com/liuruigong_lrg/blog/static/27370306200711334341781/),以及一些其他关于STL map和has
2015-01-13 20:46:44
3156
转载 处理器微结构史话(1)
第一章:天降大任1945年8月6日与9日,广岛和长崎两座日本本土城市先后在惊天动地的原子弹爆炸中被毁灭,核武器首次步入公众视野,全世界都被那两朵巨大蘑菇云的威力所震慑。这两道重击也直接摧毁了日本最后的抵抗意志,一周后的8月15日,日本宣布无条件投降,在人类历史上写下最惨痛一页的第二次世界大战终于结束。核武器横绝古今沛然莫御的威力,使得它成为战后制衡国际局势的一大王牌,对它的
2014-04-06 10:45:12
2062
1
原创 c/c++性能优化--I/O优化(上)
这节本想直接介绍I/O优化的,后来思考一下有必要对常用的I/O操作函数的特点介绍一下,这样要好些。下面就先介绍和I/O有关的库函数(以C99为准)不同的操作系统有不同的文件管理方式,现行的主要有FAT(fileallocation table)、FAT32、NTFS(new technoly file system)、NWFS(netware file system)以及UFS(unix file system)当然还有一些分布式文件管理系统如:AFS(andrew filesystem)、DFS、Mic
2013-07-14 22:52:46
4614
原创 c/c++性能优化--- cache优化的一点杂谈
之前写了一篇关于c/c++优化的一点建议,被各种拍砖和吐槽,有赞成的有反对的,还有中立的,网友对那篇博客的的评论和吐槽,我一个都没有删掉,包括一些具有攻击性的言论。笔者有幸阅读过IBM某个项目的框架代码,和我以前看过的一些代码(包括国内某顶级电信商的代码),感觉人家在细节上做的比较细,对代码的效率和安全性花了不少心思。当然国内公司也有好的代码,但是我觉得中国和美国不仅在硬件方面落后,软件方面也要落
2013-07-01 12:53:56
24304
14
原创 ungetc()函数的用法
ungetc函数是将输出流中的废弃数据退入流中去。MSDN是这样定义的int ungetc( int c, FILE *stream );Parametersc Character to be pushed.stream Pointer to FILE structure.Return ValueIf successful, each of thes
2013-06-20 16:55:41
16242
转载 c++ 中volatile关键字
本文转自http://www.cnblogs.com/Chase/archive/2010/07/05/1771700.html引子1 猜猜看,下面这段代码有什么问题:?1234voidDelay(UINT32n) { while(—n);} 答案:
2013-06-05 10:51:13
1021
1
原创 不用下标操作实现字符串回文判断
如题,贴出代码,代码通过VS2008编译#include #include /* judging a string is a palindrome or not*/int judge_palindrome(const char* str=NULL){ if (str==NULL) { return -1; } cha
2013-06-04 13:13:42
866
原创 C可变参数列表
C语言的可变参数列表通过stdarg.h头文件中定义的stdarg宏来实现的,这个头文件什么了一个类型va_list和三个宏va_start、va_arg、va_end。可变参数就是通过这几个来实现的。下面给出代码,通过VS2008编译。 #include #include #include float average(int n_values,...)//n_values 是
2013-06-02 15:27:20
798
原创 指定字符替换
在网络编程的URL解析过程中,空格,#可能会导致网络无法正常传输,需要将其转化为相应的ASCII码,如空格的ASCII码为0X20,通常把他转为%20,下面给出相应转换代码,代码通过VS2008编译。 // blade.cpp : Defines the entry point for the console application.//#include char* RePlace(
2013-05-09 09:58:56
922
原创 雅虎北京研究院hack大赛
Question 1 / 5 (Problem A)Given a rational number expressed as A/B where A and B are integers, find the position of Mth occurrence of digit D (0-9) after decimal point. For example 3/7 = 0.4285714
2013-05-08 20:46:02
1600
1
原创 雅虎北京研究院hack大赛题目
Question 1 / 5 (Problem A)Given a rational number expressed as A/B where A and B are integers, find the position of Mth occurrence of digit D (0-9) after decimal point. For example 3/7 = 0.4285714
2013-05-08 20:44:16
1318
原创 求素数
质数,又称素数,指在一个大于1自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。比1大但不是素数的数称为合数。1和0既非素数也非合数。素数在数论中有着很重要的地位。代码通过VS2008编译// blade.cpp : Defines the entry point for the console application.//#inc
2013-05-07 21:11:01
731
原创 归并排序
一、归并排序是稳定的排序方法二、时间复杂度为n*log(n)三、空间复杂度为n四、代码均通过vs2008编译运行 /************************************************************************//* copyright@Fisher Wang
2013-05-04 16:55:03
731
转载 多线程和进程的一个简单的解释(转自阮一峰的博客)
进程与线程的一个简单解释作者: 阮一峰日期: 2013年4月24日进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的
2013-04-25 09:21:08
1590
原创 插入排序
插入排序(insert sort):插入排序是最简单和最基础的排序算法之一,插入排序由N-1趟排序组成。对于P=1趟到P=N-1趟,插入排序保证从位置0到P为有序状态,插入排序的时间性能为O(N*N),空间复杂度为O(1)。在实际情况下,如果原有序列有大多数部分是有序的,那么插入排序将运行的很快。下面代码原始序列是随机产生的,对随机产生的序列进行排序,结果输出。代码均通过VS2008编译通过。
2013-04-21 23:11:27
775
原创 结构体和联合体的区别
结构体和联合体的主要区别是:结构体内部数据时分开放的,而联合体所有数据是放在一个地址空间内,我们只能使用其中一个数据。下面举例说明:代码均通过vs2008编译 #include int main (){ union { int i; struct { char b;
2013-04-20 21:05:54
1779
转载 vc6.0移植到vs2008下问题总结
最近由于要在SISCO的MMS库基础上开发,需将开发平台由VC6.0升级至VS2008,所以需要将原有的项目迁移,免不了碰到移植上的一些问题,特将它们归纳如下:1 消息映射VS2008对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2008下编译不通过a. ON_MESSAGE(message,OnMyMessage);OnMyMessage返回值必须为LRESUL
2013-04-16 17:20:39
1188
转载 海量数据处理:十道面试题与十个海量数据处理方法总结
海量数据处理:十道面试题与十个海量数据处理方法总结作者:July、youwang、yanxionglu。时间:二零一一年三月二十六日本文之总结:教你如何迅速秒杀掉:99%的海量数据处理面试题。有任何问题,欢迎随时交流、指正。出处:http://blog.youkuaiyun.com/v_JULY_v。 第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度
2013-04-15 21:46:40
764
原创 分离链接法实现哈希表
代码通过VS2008编译/* *@author : Fisher Wang *@function: Realize a hash table *@date : 11/4/2013*/hash_table.h#include#includetemplatevoid infor(const T1& para1=' ',const T2& para2='
2013-04-15 21:40:01
1020
转载 Bloom Filter的原理基本介绍
Bloom Filter概念和原理焦萌 2007年1月27日 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter
2013-04-05 15:36:41
840
转载 腾讯2012年实习生笔试加分题
之前参加2012年腾讯实习生笔试时,在考场中遇到一道加分题,当时灵光一闪,直接挥笔就解决这道题目。今天看到学校论坛上有师弟师妹们在询问这题的解法,就写篇博客来分享我的解法吧,也欢迎大家讨论其它解法。 首先来看题目描述:三 、加分题28)给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法:
2013-04-02 20:47:15
1335
原创 查找树(二叉树)的构建以及分层遍历
代码均通过vs2008编译运行头文件代码:#include #include //包含stack和queue,为了方便遍历数据存储#include struct BTree//定义查找树的结构{ int m_data; struct BTree* m_pLeft; struct BTree* m_pRight;};struct BTre
2013-04-02 20:40:34
1188
2
转载 单向链表逆序
2、 单链表逆序 第二个题目是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我们先用迭代循环的思想来分析这个问题,链表的初始状态如图(1)所示:图(1
2013-03-31 22:56:49
4213
原创 重载debug版本的operator new和operator delete
在实际调试中为了调试方便,我们通常重载一些库函数,在这篇文章中我会重载operator new和operator delete(注意不是new operator和delete operator),让它们可以打印出一些额外信息(程序通过VS2008编译运行)#include void* operator new(std::size_t size,char* file,int line)//重
2013-03-29 11:06:17
928
原创 C++利用new_handler()函数处理异常
C++利用new_handler()函数处理异常C++规定,new_handler要执行下述操作中的一种:(1)使new有更多的内存使用,然后返回(2)抛出一个bad_alloc异常或者其派生异常(3)调用abort或者exit退出下面举例说明,程序通过VS2008编译运行#include #ifndef NUL#define NUL '\0'#endifc
2013-03-28 09:20:03
869
转载 C++异常机制的实现方式和开销分析
C++异常机制的实现方式和开销分析白杨http://baiy.cn 在我几年前开始写《C++编码规范与指导》一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了。没想到时隔几年以后才有机会把这个尾巴补完 :-)。还是那句开场白:“在恰当的场合使用恰当的特性” 对每个称职的 C++ 程序员来说都是一个基本标准。想要做到这点,就必须要了解语言中每个特性的实现
2013-03-22 20:19:30
822
原创 不需要编译器自己生成的函数,就应该明确拒绝
不需要编译器自己生成的函数,就应该明确拒绝在C++类的设计中要注意防止类自身生成的函数对实际应用的干扰。举个例子:一个表示个人信息的类,class PersonalInformation{ ..... };,对于个人信息,从原则上来说不可能一样的,但是实际操作时候我们可能会出现PersonalInformation p1 = p2;这样的assigned操作。这对于这个类毫无用处,而且会产生一
2013-03-22 09:17:47
749
原创 c++保证对象在创建时正确初始化
通常如果你使用c part of c++,而且初始化会招致运行期成本,那么你可以不保证初始化,但是一旦进入c++ no_part of c,那么你一定要保证对象正确初始化,这就是为什么在c中array没有初始化,但是到了C++中vector却在对象建立时候调用construtor 初始化,但是我们一定要避免出现C++对象的伪初始化(assigned初始化),下面代码说明,一下代码通过VS2008编
2013-03-17 15:35:54
883
原创 重写strpbrk函数
程序通过vs2008编译#include #include #define NUL '\0'char* find_char(const char* source,const char*check_char )//find_char函数完成strpbrk函数功能{ size_t len=strlen(check_char); while (*source++
2013-03-14 16:34:02
747
原创 c/c++获取本机时间
通过vs2008编译运行#include #include #include//必须包含time.hint main() { struct tm *tm;//需要定义tm结构体,存放时间信息 time_t now; now = time(NULL);//注意调用方式 tm = localtime( static_cast(&now) );
2013-03-04 14:01:33
1371
原创 c++输出(<<)操作符重载
代码通过VS2008编译运行注意:输出和输入操作符,必须声明为类的友元函数#include #include#include class CheakoutRecord{public: int set_book(const double& id,const std::string& topic); friend std::ostream& operat
2013-03-04 10:47:01
762
原创 setbuf函数使用注意事项
程序输出有两种方式:一种是即时处理方式,另一种是先暂存起来,然后再大块写入的方式,前者往往造成较高的系统负担。因此,c语言实现通常都允许程序员进行实际的写操作之前控制产生的输出数据量。这种控制能力一般是通过库函数setbuf实现的。如果buf是一个大小适当的字符数组,那么:setbuf(stdout,buf);语句将通知输入/输出库,所有写入到stdout的输出都应该使用buf作为输出
2013-03-02 16:08:12
9993
原创 宏条件编译
//在vs2008下编译通过#include #include#ifndef OPTION_LONG//预处理定义#define OPTION_LONG 1#define OPTION_DETAILED 0#endifstatic int print_ledger_long(int rhs)//定义条件函数{ std::cout<<rhs<<std::en
2013-02-28 11:05:21
787
转载 大小端、位段(或者叫位域)和内存对齐
听到好几个朋友说到去一些公司做面试,总是遇到关于大小端、位段(或者叫位域)和内存对齐的考题,然后就不知所措了。虽然我认为很多开发根本就用不到这个,但是我认为很有必要学习理解这些知识点,因为它可以让你更了解C++的,了解程序在内存的运行情况,也能加深对计算机系统的理解。 声明:由于本文的代码会受到计算机环境的影响,故在此说明本篇博文中的程序的运行环境。 1、Mi
2013-01-30 13:29:38
2876
转载 c++输入输出流介绍
简介本教程将以C++最基本的文件I/O(输出/输出)开始。此后,我将从更深入的方面,为你展示一些技巧,并分析给出一些有用的函数。你需要对C++有一个较好的理解,否则这个教程于你而言将是陌生而毫无用处。 你的第一个程序 首先我将给出一段代码,接着再逐行进行解释。我们的第一个程序将建立一个文件,并写入一些字符: #include v
2013-01-28 15:20:27
971
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人