自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

joker0910的专栏

Light Up the sky!

  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 要是总忘 就写下来 宏定义中的一些符号

<br />1.在宏定义中, # 表示字符串<br /> <br />#define redisAssert(_e) #_eredisAssert(name);展开后相当于"name"; <br /> <br />#define DEV_FILE_NAME "/dev/test_kft" #define OPEN_FILE(fd, n) / { / fd = open(DEV_FILE_NAME #n,O_RDONLY); / if(f

2011-03-30 17:59:00 732

原创 运算符重载

<br /> <br />几个常用的运算符的重载:<br />I/O :<br /> <br />当我们对一个类重载<<,>>运算符之后,就可以直接使用cout<<x,cin>>x两种简单的操作 a.重载输出运算符<< 因重最左边的操作数是ostream,自然就不能用类的成员函数重载,而只能以类的友元函数进行重载 //<<函数定义格式 friend ostream operator<<(ostream&,const nameclass&)const; //<<函数实现部分 ostre

2011-03-30 17:41:00 514

原创 选择数据类型

今天用聚合算法跑30亿条数据库,结果计数器设为int类型,导致计数溢出,程序跑没影了……vc++2008中,int类型是-21亿到21亿……没办法换成unsigned int了。白白跑了一晚上啊……一切重新开始。

2011-03-27 01:18:00 530

原创 STL string 的学习(一)

<br />先把<string> 包含上再说。<br /> <br />1.string::size_type idx = filename.find('K');<br />    if(idx == string::npos)<br />   {<br />//查找失败的处理,idx必须是 size_type 类型的,不可以是其他类型,否则会出错<br />// string 不是一个C-string串,所以了,没有结尾的 '/0'<br />//npos 类似于‘/0’<br />}<br /> <br

2011-03-26 00:06:00 586

原创 Counting sort

<br />个人感觉,这个更像是索引排序:<br /> <br />这是一篇分析的  文章  :<br /> <br />我的实现:<br /> <br /> <br />/**作者: JoKer *时间:2011.3.25 *作用:线性排序,时间复杂度O(n)* 这是一种非比较排序,所以速度比较快,但是有限制条件的 * 这个算法要求数组中的元素全是在已知范围的集合中,这里假设从0 到 dif_num的整数。**/#include <iostream>using

2011-03-25 20:12:00 1001

转载 关于#pragma warning

<br />1.       #pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。<br /><br /><br />2.       #pragma warning(push)<br />存储当前报警设置。<br />#pragma warning(push, n)<br />存储当前报警设置,并设置报警级别为n。n为从1到4的自然数。<br /> <br /><br /><br />3.       

2011-03-25 09:57:00 661

转载 内存池的资料

<br /> <br />面向对象思想,实现挺复杂的一个内存池:<br /> <br /> <br />基于C语言的一个内存池,还有性能分析:<br /> <br /> <br />jabberd2的内存池:<br /><br /><br /> <br />内存池与new 的比较,这里:<br /> <br /> <br />这个比较不错:<br /> <br />经典的内存池技术,csdn上的大大写的。<br /><br /><br />谢谢各位作者,学习了。<br /> <br /><br /><br

2011-03-24 19:02:00 660

原创 哦……std::bad_alloc

<br />这几天写的算法用于海量数据处理。然后挺悲剧的是程序在处理大量数据的时候很快就抛出 std::bad_alloc,然后自动退出了。等了n久的结果啊 ,就这么一下没了。 回头看看代码,不知道为什么,就是动态申请使用的非常多,可能是野指针,也可能是在动态申请的时候,一下超过了2G,电脑罢工了……后来使用内存池,好多了。关于这个异常 这里 有个不错的说明。<br /> <br />关于release 和debug版,不止是有没有调试信息那么简单,可以看这里。其中有个关于内存分配的原则,就是release

2011-03-24 07:29:00 3074

原创 简单的INI解析器

小的ini解析器,缩进……ini_parser.cpp/*** 作者: 王政杰* 日期: 2011.3.16* 功能描述: ini文件解析器的具体实现* 可以读取文件,并装入map结构中,供用户调用。** 存储方式,section == map * key == map*/#include "ini_parser.h"namespace my_ini { static const char left_tag = '[';

2011-03-23 20:34:00 1702

原创 C++ 向前引用声明

1.首先,想要写一个好程序,就得记住一件事,先设计一个好的数据结构!2.其次,语法细节……为什么出问题,是因为写得不够好!今天调试一个程序,因为,vector 的默认范围太大,造成了释放栈的时候多释放了一部分……悲剧了一下午。映射用的hash表和被影射的数组没有放到同一个类中,导致传数据的时候失去了一致性,没办法,重新设计类,将参数组合。

2011-03-18 00:44:00 7168 1

转载 有关hacker的一些事

黑客与画家:http://www.zhuoqun.org/2010/07/19/hackers-and-painters/如何成为一名黑客:http://www.zhuoqun.net/html/y2010/1459.html爱因斯坦的教育观:http://www.daxue.im/index.php/2010/08/16/on-education/

2011-03-15 14:03:00 653

原创 一个简单的抛出异常总结

这个程序,在检测到分母为零的时候,输出“除数为零”,然后结束。#include #include #include double Div (double a, double b ){ if (0 == b) { throw "除数为零"; } else { return a / b; }}int main(){ double a, b; try { cout > a;

2011-03-15 01:03:00 569

原创 windows 加载动态链接库extern "C" 、cdecl、stdcall、fastcall、declspec

<br />这个是动态链接库与静态链接库的区别:<br /> <br />http://www.cnblogs.com/yaozhongxiao/archive/2010/09/15/1826814.html<br /> <br />这个是关于extern “C” 的说明:<br /> <br />http://www.cnblogs.com/yaozhongxiao/archive/2010/09/15/1826770.html<br /> <br />这个区分了_declspec(dllexport)

2011-03-14 19:28:00 1534

原创 关于多线程/多进程的一些思考

<br />在单核的机器上使用多线程/多进程更多是为了提高用户的体验,而不是提高效率。相反,因为线程调度和同步的缘故,反而会降低效率。不过有时候,可以让逻辑更加清晰,给程序员带来了便利。对于一些监视器,多线程也算是一种优化,毕竟,很多时候,监视器都是在做没有意义的循环检查。<br />由此联想到我们自己,同时处理多件事,除了让你表面上显得很有能力,但实际上,咱们在花费大量时间协调这些事情,而且很可能在关键位置处就停止了,不得不切换到另一个事情。可是咱们保存现场的能力却是极其有限的,回头切换进程的时候,很可能

2011-03-13 09:45:00 602

原创 注意细节和习惯(二)调试

1.按照一份比较好的编码规范书写代码,这个样做不仅仅是为了增强可读性,更重要的是可以帮你减少调试的时间,无形之间赋予你更多的生命~2.使用良好的注释风格,为了别人,更为了自己。3.使用版本管理器吧,在疯狂的修改之后,你可能会陷入僵局,这个时候,重新开始是个不错的选择。4.增加足够的参数检查。千万不要以为这个地方不可能出现问题,就忽略了参数检查,程序的漏洞,往往就在这些不可能中。5.关于内存的事情,这个东西,没事就拿出来看看吧。可以使用内存工具。这里是一个内存调试的解说。6.Linux下的技巧。测试工具,源码

2011-03-12 18:29:00 517

原创 注意细节和习惯(一)

<br />1.修改的代码先不要删掉,先注释掉。注释掉最好再写写为什么。<br />2.其实一边写代码一边写注释是个好习惯,可以先写说明性注释,再写代码。<br />3.无论什么时候,一定要检验传入函数的参数,还有,申请的空间是否成功,打开数据库,打开文件什么的,是否成功。总之,要加上对指针的检查。<br />4.哈希值是正的……这个事例说明,要想写好代码,就得合理地分配值的存储类型。<br />5.关于数据结构,这个东西直接影响到到代码的实现。所以,设计一个好的数据结构,是捋顺思路的良好助推器。<br /

2011-03-11 20:47:00 633

原创 常用hash算法

这个比较多,还有性能测评:http://yuhuafx.blog.hexun.com/58369610_d.htmltimes33的哈希算法,就是乘以33求散列:static unsigned long int zend_inline_hash_func(const char *arKey, unsigned int nKeyLength){ register unsigned long int hash = 5381; /* variant with the

2011-03-11 13:04:00 4056 1

转载 [转] C++ 中的三种new

    C++中的 new 有3中使用方式,它们是: plain new 、 nothrow new 和 placement new 。这3种形式极大地扩展了内存分配的灵活性。        1. plain new        从字面上看,这就是普通的 new ,也是我们平时使用的 new ,这里就不多说。        2. nothrow new        nothrow new 就是部抛出异常的 new ,在失败的时候返回 NULL;所以使用时不需要设置异常处理,而普通的 new 在使用失败时

2011-03-11 12:40:00 758

原创 mutable

<br />关键字mutable是C++中一个不常用的关键字,他只能用于类的非静态和非常量数据成员<br />我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,<br />对像的状态也会随之发生变化!<br /> <br /> <br />如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是<br />该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员<br />进行赋值.这个时候就需要用到mutable关键字了<br /> <

2011-03-11 06:56:00 396

转载 explicit 防止你的类被偷换

<br />让编译器进行隐式类型转换所造成的弊端要大于它所带来的好处,所以除非你确实需要,不要定义类型转换函数。<br /><br />见原文http://blogold.chinaunix.net/u2/70445/showart_1332342.html;<br /><br /><br />explicit作用:<br />在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。<br />explicit使用注意事项:<b

2011-03-11 06:51:00 529

原创 feof() 函数的陷阱……

<br />使用feof()的时候,掉陷阱里了,总是少输出一条:<br />  while ( !feof(fp) ) { flag = fgets(buffer,300,fp); cout << buffer<<endl; sscanf(buffer,"%s %d %d", temp_name,&salary,&count); temp = new Set; temp->set_name(temp_name); temp->set

2011-03-10 19:09:00 4660

原创 Study more

和比自己聪明的能力比自己强的人工作。学习他们的代码,他们的做事方法,看一看那些人是怎么处理错误的。 总是倾听别人怎么说,无论那个的资历和职位是什么样的。 实践,实践,实践,总是不满意于一开始出来的事。 多问问自己,现在在写什么代码?为什么要这样写成这样?还有没有更好的方法? 学习多样的技术,多多比较他们,并一定要了解各种技术的优缺点。 总是问别人问好的问题。 多回头看看走过的路,做过的事,写过的程序,感觉一下他们有多烂。 多读读那些大师写的书。 不要总坐在电脑前编程序,多做做运动,多到户外走走,和非技术人多

2011-03-10 18:54:00 686

原创 C++ 经典开源代码

在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行<br />而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可<br />经典的C++库<br />   STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合<br /

2011-03-09 20:46:00 4292

原创 一些常用的重载

<br /> <br />// 重载输出运算符<<<br /> <br />friend ostream& operator << (ostream&, const namelass &) const;<br />ostream & operator << (ostream& out, const classname& object)<br />{<br />     return out;<br />        }<br />//重载输入运算符 >><br /> friend ostream & op

2011-03-09 07:10:00 633

原创 shuffle 算法

<br />一种打乱顺序的算法,比如,洗牌,随机播放音乐(虽然有时候使用random)。<br /> <br />以洗牌为例,假设我们使用数组存放一副扑克:<br /> <br />比较容易的方法,就是每次产生一个随机数,然后用对应的元素与数组中的最后一个元素进行交换,若干次后便可将序列打乱。<br /> <br />for(i = 0; i< n; i++)<br />{<br />    d= rand();<br />    swap( card[d], card[n-1] );<br />}<br

2011-03-03 20:45:00 2312

dot.exe

dot.exe

2013-06-03

double stack

double stack, to analys the strings and automachine.

2013-06-03

空空如也

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

TA关注的人

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