摘要: 找完工作将近一个月了,近来自己想做个总结,抒发下自己的感受,同时为后来人做个参考。历程:从高温假期放假回来8.12到9.27签下百度offer ,历时45天。期间,郁闷,彷徨、疲惫当然最后是伴随着兴奋。准备:8.12-9.12是准备期间,主要复习了程序面试宝典(好多公司笔试就是上面的原题),编程之美(2,3章,看完之后过些天就忘,只是记住了思想而已),编程珠玑(快速浏览了下),程序员编程艺术(网上july总结的,好多经典面试题),STL源码剖析(以前看过一遍,又复习了一遍,面试的时候好多公司都问,但是问的比较简单,vector的迭代器失效问题,map用什么实现的,或者区别之类的,都挺简单),深 阅读全文
posted @ 2012-10-27 21:20 kanego 阅读(3762) 评论(6) 推荐(3) 编辑
摘要: STL中,traits编程技法得到了很大的应用,了解这个,才能一窥STL奥妙所在。先将自己所理解的记录如下:Traits技术可以用来获得一个 类型 的相关信息的。 首先假如有以下一个泛型的迭代器类,其中类型参数 T 为迭代器所指向的类型:template <typename T>class myIterator{...};当我们使用myIterator时,怎样才能获知它所指向的元素的类型呢?我们可以为这个类加入一个内嵌类型,像这样:template <typename T>class myIterator{ typedef T value_type;...};这样当我们 阅读全文
posted @ 2012-08-15 11:30 kanego 阅读(2965) 评论(0) 推荐(1) 编辑
摘要: 最近在看侯捷老师的《STL源码剖析》,非常感叹其中空间配置器实现的巧妙和细致,对效率真正是锱铢必较。 一般我们所习惯的内存配置和释放是通过new和delete来完成的,而new运算包含了两个阶段:1.调用::operator new配置内存 2.调用构造函数 Foo() 构造对象。delete运算也包含两个阶段:1.调用析构函数 ~Foo() 将对象析构 2.调用::operator delete释放内存。1 class Foo { … };2 Foo *pf = new Foo;3 delete pf; 而SGI STL为了提高效率则是把二者分开的,对象的构造的析构由 constr... 阅读全文
posted @ 2012-08-14 20:51 kanego 阅读(1338) 评论(3) 推荐(0) 编辑
摘要: 原文地址:http://www.cnblogs.com/loveis715/archive/2012/07/18/2598409.html引子 “请写一个Singleton。”面试官微笑着和我说。 “这可真简单。”我心里想着,并在白板上写下了下面的Singleton实现: 1 class Singleton 2 { 3 public: 4 static Singleton& Instance() 5 { 6 static Singleton singleton; 7 return singleton; 8 } 9 10 private... 阅读全文
posted @ 2012-07-25 08:35 kanego 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://www.cnblogs.com/huangxincheng/archive/2012/07/21/2602375.html一直很想写一个关于树结构的专题,再一个就是很多初级点的码农会认为树结构无用论,其实归根到底还是不清楚树的实际用途。一:场景:1:现状 前几天我的一个大学同学负责的网站出现了严重的性能瓶颈,由于业务是写入和读取都是密集型,如果做缓存,时间间隔也只能在30s左右,否则就会引起客户纠纷,所以同学也就没有做缓存,通过测试发现慢就慢在数据读取上面,总共需要10s,天啊...原来首页的加载关联到了4张表,而且表数据中最多的在10w条以上,可以想象4张巨大表的关联. 阅读全文
posted @ 2012-07-24 17:20 kanego 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 看起来,float转型string,std中没有提供标准的方法。查阅了些资料。总结如下:1、利用boost中的format类去实现。如下:cout << format( "%1% says \"%2%\" to %1%.\n" ) % "Yousen" % "Hello";这句话将在标准输出上输出“Yousen says "Hello" to Yousen.”接下来简单说明一下format的用法。在格式化字符串中,“%1%”(不带引号,后称占位符)表示后面跟的第一个参数,“%2%”则 阅读全文
posted @ 2012-07-06 08:04 kanego 阅读(22523) 评论(0) 推荐(0) 编辑
摘要: 1. 所谓MindMap1.1 MindMap是什么MindMap是什么呢?其实是英国人托尼·巴赞创造的一种提出笔记方法,和传统的直线记录方法完全不同,它以直观形象的图示建立起各个概念之间的联系。在国内,MindMap又被称为脑图或思维导图。思维导图(Mind Mapping)以放射性思考(Radiant Thinking)为基础的收放自如方式,除了提供一个正确而快速的学习方法与工具外,运用在创意的发想与收敛、项目企划、问题解决与分析、会议管理等方 面,往往产生令人惊喜的效果。它是一种展现个人智力潜能极至的方法,将可提升思考技巧,大幅增进记忆力、组织力与创造力。它与传统笔记法和学习法 阅读全文
posted @ 2012-05-07 16:04 kanego 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 最近在看STL源码剖析这本书,这本书分析的对象是SGI STL。在讲述第二级配置器的实现内容时,有这么一段代码: enum {__ALIGN=8}; size_t ROUND_UP(size_t bytes) //将bytes上调至8的倍数 { return (((__bytes) + (size_t) _ALIGN-1) & ~((size_t) _ALIGN – 1)); } 毫无疑问,这段代码是非常高效的。仔细分析一下,就会发现这段代码适合用来将所有数上调至2^n的倍数:一个数k如果正好是2^n的倍数,那么用二进制来 表示的话,低n位必定全是0,而_ALIGN-1的二进制表示则是 阅读全文
posted @ 2012-04-22 21:00 kanego 阅读(1555) 评论(1) 推荐(3) 编辑
摘要: 1 void sock_Close(NLsocket socket) 2 { 3 nl_socket_t *sock = nlSockets[socket]; 4 struct ip_mreq mreq; 5 6 if(sock->type == NL_UDP_MULTICAST) 7 { 8 /* leave the multicast group */ 9 mreq.imr_multiaddr.s_addr = ((struct sockaddr_in *)&sock->addressout)->sin_addr.s_addr;10 mreq.imr_interf 阅读全文
posted @ 2012-04-07 19:51 kanego 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 看来不错,转载自http://blog.csdn.net/s_51563946/article/details/4458480引言如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运行而Debug版本运行无误,那么我推荐您阅读本文:因为并非如您想象的那样,Release版本可以保证您的应用程序可以象Debug版本一样运行。如果您在开发阶段完成之后或者在开发进行一段时间之内从来没有进行过Release版本测试,然而当您测试的时候却发现问题,那么请看我们的调试规则1:规则1: 经常性对开发软件进行Debug和Release版本的常规测试.测试Release版本的时间间隔越长, 阅读全文
posted @ 2012-03-26 20:29 kanego 阅读(1482) 评论(0) 推荐(0) 编辑