摘要:http://kb.cnblogs.com/page/190039/ 生活中总会有些状况让我们无所适从摸不着头脑:面对一排电灯或空调的按钮,哪个才是控制我想要的?开锁时掏出一把钥匙,哪个才是正确的?拿起U盘插入电脑,朝那个方向才是对的?……类似的犹豫充分说明,你呆住了。现在,是需要“防呆设计”来拯救你了。 防呆定义 防呆(日语:ポカヨケ;英语:Fool-proofing)是一种预防矫正的行为约束手段,运用避免产生错误的限制方法,让操作者不需要花费注意力、也不需要经验与专业知识即可准确无误完成正确的操作。广义来讲,防呆就是如何设计一个东西,而使错误发生的机会减至最低的程度。避免工作错误的发...
阅读全文
摘要:auto_ptr解析By SmartPtr(http://www.cppblog.com/SmartPtr/)auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个小小的auto_ptr所蕴含的价值与理念。 auto_ptr的出现,主要是为了解决“被异.
阅读全文
摘要:http://www.ibm.com/developerworks/cn/linux/l-cn-python-optim/代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构、优化、扩展以及文档相关的事情通常需要消耗 80% 的工作量。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。改进算法,选择合适的数据结构一个良好的算法能够对性能起到关键作用,因此性能改进的首要点是对算法的改进。在算法的时间复杂度排序上依次是:O(1) -> O(lg n) -> O(n lg n) -> O(n^2) -
阅读全文
摘要:http://www.oschina.net/question/1579_45822第一部分阅读Zen of Python,在Python解析器中输入import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. "它肯定很慢!"毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用Python服务于每小时4千万视频的请求. 你所要做的就是编写高效的代码和需要时使用外部实现(C/C++)代码. 这里有一些建议,可以帮
阅读全文
摘要:http://blog.jobbole.com/30049/重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while循环,或把一个StringBuffer改成StringBuilder,我说的是大动作,例如重写一个方法,一个函数,甚至整个类或包。如果你缺乏对一个方法或一个类的了解,那你重构它的条件就不充分。即使你有一个天才的计划,你也需要和团队一起设计其中重大的修改。当属于下列情况时,你不该重构● 对于你来说,它的逻辑看起来过于复杂,你没有花时间去分析它。●你不理解为什么前任程序员要这样编写。●你着手的是一个很重
阅读全文
摘要:http://www.infoq.com/cn/news/2011/07/regular-expressions-6-POSIX对正则表达式有基本了解的读者,一定不会陌生『\d』、『[a-z]+』之类的表达式,前者匹配一个数字字符,后者匹配一个以上的小写英文字母。但是如果你用过vi、grep、awk、sed之类Linux/Unix下的工具或许会发现,这些工具虽然支持正则表达式,语法却很不一样,照通常习惯的办法写的『\d』、『[a-z]+』之类的正则表达式,往往不是无法识别就是匹配错误。而且,这些工具自身之间也存在差异,同样的结构,有时需要转义有时不需要转义。这,究竟是为什么呢?原因在于,Uni
阅读全文
摘要:腾讯电商面试回来,发现我太菜了,缺乏技术深度。笔试题感觉不难,但是做了之后总是发觉少点什么东西,深度!这是这场面试总结出来的。凭记忆分享下笔试,面试题。大家一起解决,然后分享下该看什么书,可以解决这些“深度”问题。1.内存池算法。我就把前段时间看到的tcmalloc实现大概写了一遍。Q:malloc怎么实现的?A:通过brk,sbrk实现的。Q:sbrk,brk怎么实现的?sbrk,brk怎么由内核态切换到系统(用户?)态的?2.怎么定位内存泄露?我写的是:1.使用valgrind --这个东西从来没用过2.mtrace3.封装malloc,free函数的宏5./proc/$pid/下的内存.
阅读全文
摘要:【感谢@dryrun的热心翻译。如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线。】如果你花很多时间输入纯文本、写程序或HTML,那么通过高效地使用一个好的编辑器,你可以节省大部分时间。本文将提供指导和提示,让你更迅速地做这些工作,并且少犯错误。本文用开源文本编辑器Vim(Vi IMproved)来演示如何高效编辑,本文方法同样适用于其他的编辑器。选择合适的编辑器,实际上是进行高效编辑的第一步。我们避免去讨论哪个编辑器最适合你,因为这个话题将占用太多篇幅。如果你不知道选用那个编辑器,或者你对目前使用的编辑器不满意,那就试试Vim;你将不会失望。第1部分:编辑一个文件1.快速移动大部分时
阅读全文
摘要:http://blog.jobbole.com/47966/今天有位朋友在微博上问我这样一个问题:“@老码农的自留地,最近出于学习目的写一个管理系统,越到后边,越觉得自己前边的代码写得烂。前辈,我想让代码写得更好一点,能不能谈谈你的经验,给我指点一下!”我在回复里刚写了几句,就意识到140个字很难把我的想法说清楚,本着知无不言言无不尽的好为人师精神,我决定把我的回答写成一篇博文。首先要说明的是,我写这篇博客并不代表本人觉得自己的代码写得有多好。事实上我很清楚自己的水平,作为一个做应用系统的程序员,和那些做框架做系统的大牛根本就不在一个层次。而且即使在应用层次,我的水平大概也只能算二三流,只是因
阅读全文
摘要:http://blog.jobbole.com/954/最近我认识到一些事情。写代码的最好地方不是在电脑前用你的编译器、集成开发环境和各种工具来写。写代码最好是远离所有这些工具,去到你能够正确思考的地方。你相当熟悉一种语言了,你很容易就能把你心中的程序翻译成编译器可以编译(或解释器可以解释)的程序,不过,难就难在心中形成程序。前几天我坐火车去旅行。我带了电脑,但没有网络。很不幸,我正要用一个商业编程语言(碰巧是IDL),为此我得用我们大学的网站许可。由于无法上网,我无法获得网站许可,这样我也就不能运行编译器和集成开发环境。虽然你喜欢商业编程语言,但它需要昂贵的许可,而它那时使我不能用编辑器写代
阅读全文
摘要:http://blog.jobbole.com/1198/代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性、有效性、紧凑性和效率(内存)。代码设计比实际执行更难 。因此,每一个程序员当用C语言编程时,都应该记着这些东西。本文向你介绍规范你的C代码的10种方法。0. 避免不必要的函数调用考虑下面的2个函数:12345678910111213141516171819202122232425262728void str_print( char *str ){int i;for ( i = 0; i < strlen ( str ); i++ ) {printf("%
阅读全文
摘要:http://blog.csdn.net/gzlaiyonghao/article/details/2762251作者:Martijn Faassen译者:赖勇浩(http://blog.csdn.net/lanphaday)原文地址:http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0注:Martijn是Zope领域的专家,他为Zope系列产品做了许多开发工作,也开发了lxml等多个开源产品。你可以在这里了解一下他的信息http://www.zope.org/Members/faassen。这篇文章写于2005年,虽然有少部分内容(
阅读全文
摘要:python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pyc和pyo本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件,文档上说只要调用了import model那么model.py就会先编译成pyc然后加载1.如果需要特殊的单独编译,则只需要使用py_complie这个模块就行了,如下import py_compilepy_compile.compile(r'H:\game\test.py')compile函数原型:
阅读全文
摘要:http://kb.cnblogs.com/page/187205/作者: Matthew E. May来源: 外刊IT评论发布时间: 2013-09-07 17:37阅读: 1214 次推荐: 0原文链接[收藏] 英文原文:Quick and Easy Ways to Quiet Your Mind 神经科学告诉我们,要想达到更高的效率,更有创造力,我们需要经常的让大脑休息一会儿。是安静的大脑创造出最深远的洞察力。但是,在忙碌的一天中抽出这样的停止工作的时间并不是件容易的事。下面说的是三种特别有效的,快速的,容易的在日常工作中营造这样的休息时间的好方法。 快速冥想 来自洛杉矶加利福尼...
阅读全文
摘要:译自Optimal Loggingby Anthony ValloneGoogle Testing Blog要找到一个系统问题的根本原因,你需要多长时间?5分钟?还是5天?如果你的答案接近5分钟,很大可能是因为你的生产环境和测试环境使用了非常好的日志记录。更常见的情况是,诸如日志、异常处理、甚至测试这类非核心的工作,被当作一种出现问题后的补救方式。同异常处理和测试一样,日志记录真的也需要策略,无论是生产环境还是测试环境。永远不要低估日志的作用。有了使用得当的日志,你甚至可以说debug不是必需的。下面是多年来对我非常有用的日志记录指导原则。保持适度切勿记录过多。大量的磁盘空间被日志占用说明你没
阅读全文
摘要:http://blog.jobbole.com/23413/http://meditic.com/degrading-for-success/几乎一年没有写博客了,说没时间那是借口,唯一的原因是,年纪越大越发觉自己肤浅。有些想法还没提笔,就发现很幼稚,就不敢发出来贻笑大方了。这次先给大家说个小故事:从前有三个屌丝,聚在一起做网络,提供免费的网络服务,砸锅卖铁,通宵达旦,除了卖肾啥都做了。3年后终于做到了五百万用户,对于年轻人来说,能把五百万人玩弄于鼓掌之间,已经是很牛逼轰轰的事了,不过用户越多,成本越高,每年服务器、带宽租金、房租水电、广告运营等成本,已经达到了十七八万,屌丝们不得不面对一个终
阅读全文
摘要:http://www.ibm.com/developerworks/cn/java/j-logging/提前规划一个记录日志的计划,在开发过程后期就可以获益Charles Chan(chancharles@gmail.com), 首席顾问, Ambrose Software Inc.简介:在企业级的开发过程中,我们不可避免地会碰到很多问题;如果您希望在开发过程的后期能够有效地捕捉 bug,那就需要一种有效的日志策略。但是在一个企业的应用程序中要想实现有效地记录日志,需要进行一番规划,并设计一些准则。在本文中,顾问 Charles Chan 将向您介绍一些最好的实践,从而帮助您从项目一开始就编写
阅读全文
摘要:http://bbs.chinaunix.net/thread-4088281-1-1.html1. 首先下载官方二进制安装包:32 位选择 windows-386.msi64 位选择 windows-386.msihttp://code.google.com/p/go/down ... ws+Type%3DInstallercmd输入:go version如果有显示go版本信息,则表示成功安装。2. 设置 GOPATH在任意磁盘根目录新建一个文件夹,名字随意,这个将会是我们的工作目录。我把它命名为 newgonewgo 目录下新建三个目录:binpkgsrc之后在“计算机”---“属性”--
阅读全文
摘要:代码如下:#include #include typedef char String[32];typedef FILE* File;typedef struct _Employee { String name; int age; int salary; struct _Employee *next;} *Employee;typedef void (*Callback)(Employee);/* High Order Functions */void foreach(Employee e, Callback fn) { Emplo...
阅读全文
摘要:http://www.ruanyifeng.com/blog/2013/01/abstraction_principles.html作者:阮一峰日期:2013年1月31日软件开发是"抽象化"原则(Abstraction)的一种体现。所谓"抽象化",就是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理。开发软件的时候,一方面,我们总是希望使用别人已经写好的代码,另一方面,又希望自己写的代码尽可能重用,以求减少工作量。要做到这两个目标,这需要"抽象化"。最近,我读到美国程序员Derick Bailey的一篇文章,谈到&q
阅读全文