上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 18 下一页

2011年6月4日

怎样区分 const char* 和字符串文字量

摘要: 在一个面试中,猛然间一闪念,问到了 candidate 这个问题。无解……stl 中使用到了很多 traits 技术,只要懂得 traits ,这个问题就太简单了!以下是代码示例:软件工程中很多地方,如果采用直接的办法不能解决问题,增加一个间接层,问题即迎刃而解,type_traits 就是这样一种技术,这个代码示例是自包含的,除了 printf ,没有任何其它外部依赖。#include struct true_{};struct false_{};template struct isarray;templatestruct isarray { typedef true_ type; };t. 阅读全文

posted @ 2011-06-04 19:22 能发波 阅读(251) 评论(0) 推荐(0)

2011年5月14日

将递归转化成迭代的通用技术

摘要: 从理论上讲,只要允许使用栈,所有的递归程序都可以转化成迭代。但是并非所有递归都必须用栈,不用堆栈也可以转化成迭代的,大致有两类尾递归:可以通过简单的变换,让递归作为最后一条语句,并且仅此一个递归调用。// recursiveint fac1(int n) { if (n 自底向上:对程序的结构有深刻理解后,自底向上计算,比如 fibnacci 数列的递归->迭代转化。// recursive, top-downint fib1(int n) { if (n void QuickSort1(RandIter beg, RandIter end) { if (end - beg ... 阅读全文

posted @ 2011-05-14 14:36 能发波 阅读(311) 评论(0) 推荐(1)

2011年4月3日

怎么减少错误的发生

摘要: 错误,我们暂且仅对软件开发而言。错误的类别,暂且仅考虑接口错误和实现错误。接口错误一般可以分为误解和失配误解比如在一段公路入口有巨大的标识牌,上面写着:前方道路,靠左行,红灯行,绿灯停。这个大家可能觉得很荒谬,然而类似的事情在软件开发里面却层出不穷,生产方认为自己已经在文档中清楚地说明了用法和用途,然而他却没有意识到这与使用方的常识和惯例背道而驰。举个简单的例子,C 标准库里面的两个函数:#include size_t fwrite(const void * ptr, size_t size, size_t count, FILE * stream);#include void qsort(v 阅读全文

posted @ 2011-04-03 22:31 能发波 阅读(243) 评论(0) 推荐(0)

C++ 如何动态库实现接口兼容

摘要: 看了一篇文章:避免使用虚函数作为库的接口其中提到C++虚表的僵硬,导致版本更新时二进制兼容性的问题。其实这个问题不是C++的问题,而是C++实现的问题。如果接口的二进制兼容性是一个强制需求,在不影响运行效率的情况下,C++是完全可以实现的,不过需要多一点的空间开销和初始化开销。具体的方法可以参考 PE 文件中的 Import Table 和 Export Table。简单地讲,就是 App 和 DLL 各自维护一个 name->func_address 的映射数组,当然,这个 name 应该是名字碾碎后的 name 。 加载 DLL 时,将 DLL 中 Export Table 中相应项 阅读全文

posted @ 2011-04-03 21:40 能发波 阅读(1200) 评论(0) 推荐(0)

2011年4月2日

靠谱的程序员太少了

摘要: 最近几个月,面试了不少的程序员,更好听的名字叫做软件工程师,甚至高级软件工程师。我一般会针对面试者的特长,问一些相关的问题。有说擅长算法的,图像处理的,图形学的,数学的,C++的,Java,Perl 的,Shell 的,Linux内核的……到目前为止,面试的人不算太多,但少说也过100了,基本上,语言方面和其它特长兼有的,一个也还没碰到过。靠谱的C++程序员,所谓的靠谱,其实也就是:了解 STL 的常用组件,能正确使用 STL知道 type_traits ,以及如何使用 type_traits对虚函数、重载、虚表有一定了解能正确认识C++的异常了解 Pure C 和 C++ 的 C 子集中比较 阅读全文

posted @ 2011-04-02 21:22 能发波 阅读(142) 评论(0) 推荐(0)

2011年1月29日

是个软件都想强奸用户

摘要: Windows 7 资源管理器反应超慢已经很久了,刚刚这个问题被我彻底解决。使用 Autoruns查看 Explorer 页,删掉所有可疑的王八蛋:诺基亚 PC Suit 插件,至少 3 项,具体不记得了阿里旺旺插件,好像是发送辅助啥的Asus 网络存储其他……不记得了以前到底有多慢?打开任意一个文件夹,至少 3 秒钟鼠标到任务栏图标上,自动显示缩略图,至少5 秒钟切换任意窗口,至少2 秒钟打开开始菜单,至少3 秒钟……具体是哪个王八蛋干了龌龊事,懒得去深究。这个微软应该有很大的责任,如果把 Explorer 做成象 IE9 一样,哪个插件占时间太多,把它挑出来,告诉用户。技术上,这应该也不是 阅读全文

posted @ 2011-01-29 18:49 能发波 阅读(159) 评论(0) 推荐(0)

2011年1月12日

一个变态C/C++面试题的变态解法

摘要: 这是源自某论坛的一个问题,原帖如下(#########分隔)############################################################################屏幕上打印1-1000这1000个数, 不许使用循环语句/条件语句,不许使用?:算符。不许在源代码中用列举输出语句的办法傻打,比如一千个printf语句不行一个cout后面跟上1-1000这样的也不行, 不再赘述其他傻打行为, 大家都能领会精神。结果,出了好多千奇百怪的答案, 下面举一个例子void myprint(int n){ printf("%d/n",n); 阅读全文

posted @ 2011-01-12 10:07 能发波 阅读(261) 评论(0) 推荐(0)

2010年8月19日

服务器超时管理问题

摘要: 问题描述:* 有一个最多能处理N个客户连接的服务器,活跃的连接总是少数; * 为了能够处理更多的连接,需要对每个连接都增加一个超时机制,当总连接数达到N时,某个连接一旦超时,有新的连接请求时,就把超时的关掉,并处理新连接; * 如果总数没有达到N,总是接受新连接; * 每个连接一旦有数据请求,就认为它活跃了,此时,服务器还接受一个lease,也就是一个超时时间,这个时间对每个连接,每次活跃时,都不一样 * 如果使用 epoll 一类的系统接口,也就是说在连接活跃时我们能够从系统得到自定义的一个handle,如何实现这样的需求,关键是使用什么数据结构和算法?提示:使用heap ,需要从heap中 阅读全文

posted @ 2010-08-19 10:57 能发波 阅读(133) 评论(0) 推荐(0)

2010年8月5日

使用 std::map 查找 IP 范围

摘要: 给定这样一个问题:有一组从IP范围到地理位置信息的数据,不同地点的IP范围没有重叠,实现从单个IP地址查到相应的地理位置。数据示例start end geo-loc1000 2000 北京3000 3500 上海4000 5000 广州5200 5500 延安6000 7000 西藏这里将只重点说明实现方式,具体为什么这么做,仅简单介绍。std::map 有三个不太常用的成员函数:iterator lower_bound(const key_type& key);iterator upper_bound(con... 阅读全文

posted @ 2010-08-05 17:22 能发波 阅读(353) 评论(0) 推荐(0)

2010年7月12日

对数复杂度的聚集算法

摘要: SQL 有5个标准聚集函数:SUM, AVG, MIN, MAX, COUNT, 一般情况下,这几个函数的时间复杂度至少都是O(n), n是结果集的尺寸。然而,给定表:CREATE TABLE ACCESS_LOG(accTime DATETIME, stayTime INTEGER, INDEX(accTime));如果要进行以下查询:SELECT AVG(stayTime) WHERE accTime > '2009-07-11 21:00' AND accTime < '2010-07-12 01:00';传统上,数据库要扫描'2009 阅读全文

posted @ 2010-07-12 20:33 能发波 阅读(178) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 18 下一页

导航