技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

09 2013 档案

书籍列表
摘要:http://book.douban.com/subject/1237118/http://product.china-pub.com/60896http://product.china-pub.com/48927http://book.douban.com/subject/1230031/http... 阅读全文

posted @ 2013-09-27 09:55 codestyle 阅读(263) 评论(0) 推荐(0) 编辑

Python 代码性能优化技巧
摘要: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) - 阅读全文

posted @ 2013-09-25 17:16 codestyle 阅读(302) 评论(0) 推荐(0) 编辑

Python性能鸡汤
摘要:http://www.oschina.net/question/1579_45822第一部分阅读Zen of Python,在Python解析器中输入import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. "它肯定很慢!"毫无疑问:Python程序没有编译型语言高效快速. 甚至Python拥护者们会告诉你Python不适合这些领域. 然而,YouTube已用Python服务于每小时4千万视频的请求. 你所要做的就是编写高效的代码和需要时使用外部实现(C/C++)代码. 这里有一些建议,可以帮 阅读全文

posted @ 2013-09-25 17:14 codestyle 阅读(219) 评论(0) 推荐(0) 编辑

如何避免重构带来的危险
摘要:http://blog.jobbole.com/30049/重构代码很危险,它会给测试工作增加巨大的负担。除非你的程序需要重构,一定不要轻易重构代码。我这里所说的并不是把一个for循环改成while循环,或把一个StringBuffer改成StringBuilder,我说的是大动作,例如重写一个方法,一个函数,甚至整个类或包。如果你缺乏对一个方法或一个类的了解,那你重构它的条件就不充分。即使你有一个天才的计划,你也需要和团队一起设计其中重大的修改。当属于下列情况时,你不该重构● 对于你来说,它的逻辑看起来过于复杂,你没有花时间去分析它。●你不理解为什么前任程序员要这样编写。●你着手的是一个很重 阅读全文

posted @ 2013-09-24 09:19 codestyle 阅读(448) 评论(0) 推荐(0) 编辑

Linux/Unix工具与正则表达式的POSIX规范
摘要: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 阅读全文

posted @ 2013-09-23 17:24 codestyle 阅读(952) 评论(0) 推荐(1) 编辑

代码抽象层次2
摘要:看了kent的实现模式,对代码抽象层次有了一点理解,kent首先问了一个问题,下面的代码有神马问题?void compute(){ int flag = input(); flag |= 1; output(flag);}粗看来没有,但其实不然,但其实,input和output已经是高层抽象了,例如你并不知道输入来自于何方,到底是键盘输入呢,还是文件输入,又或者是网络输入,同样output也是如此,但是中间设置flag的语句则是一个低层抽象,如果整个函数都是低层抽象,代码应该是这样:void compute(){ extern char *s; int fl... 阅读全文

posted @ 2013-09-22 13:20 codestyle 阅读(244) 评论(0) 推荐(0) 编辑

chinaunix:腾讯面试题
摘要:腾讯电商面试回来,发现我太菜了,缺乏技术深度。笔试题感觉不难,但是做了之后总是发觉少点什么东西,深度!这是这场面试总结出来的。凭记忆分享下笔试,面试题。大家一起解决,然后分享下该看什么书,可以解决这些“深度”问题。1.内存池算法。我就把前段时间看到的tcmalloc实现大概写了一遍。Q:malloc怎么实现的?A:通过brk,sbrk实现的。Q:sbrk,brk怎么实现的?sbrk,brk怎么由内核态切换到系统(用户?)态的?2.怎么定位内存泄露?我写的是:1.使用valgrind --这个东西从来没用过2.mtrace3.封装malloc,free函数的宏5./proc/$pid/下的内存. 阅读全文

posted @ 2013-09-22 09:32 codestyle 阅读(395) 评论(0) 推荐(0) 编辑

C++异常处理小例
摘要:学习程序的好方法是阅读代码和改进代码。下面的程例来自《An Overview of the C++ Programming Language》(5.1 异常和错误处理)程序用途:使用C++的异常机制,报告stack的上溢或者下溢。(我适当的把代码补全。)version 1 演示了基本的异常用法。从try里抛出一个异常(实例或对象),由catch里的类接受。1version12//From:AnOverviewoftheC++ProgrammingLanguage34#include5#include6#include7usingnamespacestd;89templateclassStack 阅读全文

posted @ 2013-09-20 01:00 codestyle 阅读(272) 评论(0) 推荐(0) 编辑

主流语言的异常处理对比
摘要:C++的try-catch不拦截硬件异常(例如除数为0的异常)只拦截软件异常C++的异常可以按调用层次逐层返回,直到遇到可以拦截它的异常处理代码C++的catch(...)可以拦截全部的软件异常C++发生异常并被拦截时,并不能自动释放从堆上申请的内存 (这样的话或许每个代码层次都需要try-catch)C++的catch块并不能看到try块里定义的变量,如果catch块要访问这些变量,要把变量定义在try-catch同一层C语言的__try - __catch可以拦截到 硬件异常C#的异常处理似乎可以拦截硬件异常(至少除数为0的异常可以被拦截)C#的异常也是逐层返回,直到遇到可以拦截他的异常处 阅读全文

posted @ 2013-09-20 00:32 codestyle 阅读(156) 评论(0) 推荐(0) 编辑

新鲜出炉的awk代码
摘要:echo "" | igawk -f main.awk# 需求:按照多种充值方式的多种金额类型进行累加统计# 充值方式:移动卡 10,30,50,100元,联通卡20,30,50,100 电信卡 20,30,50,100,300 # wap快充 2,3,5,10 移动短充,2,3,5,10# 设计:SQL语句取得表虽然不一致,但是我保证所有的记录集都包含2个字段,单元是元# (固定金额的)累加值,固定金额# 除了支付宝的其他数据表都没有记录泡豆数,但是金额可以推算出泡豆比例# 目前有两种,一种1比10 ,一种1比8, 换算是通过savePay... 阅读全文

posted @ 2013-09-18 17:27 codestyle 阅读(486) 评论(0) 推荐(0) 编辑

linux中screen命令的用法
摘要:http://www.9usb.net/201002/linux-screen-mingling.html作为linux服务器管理员,经常要使用ssh登陆到远程linux机器上做一些耗时的操作。也许你遇到过使用telnet或SSH远程登录linux,运行一些程序。如果这些程序需要运行很长时间(几个小时),而程序运行过程中出现网络故障,或者客户机故障,这时候客户机与远程服务器的链接将终端,并且远程服务器没有正常结束的命令将被迫终止。又比如你SSH到主机上后,开始批量的scp命令,如果这个ssh线程断线了,scp进程就中断了。在远程服务器上正在运行某些耗时的作业,但是工作还没做完快要下班了,退出的 阅读全文

posted @ 2013-09-16 16:55 codestyle 阅读(2136) 评论(0) 推荐(0) 编辑

七个高效的文本编辑习惯(以Vim为例)
摘要:【感谢@dryrun的热心翻译。如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线。】如果你花很多时间输入纯文本、写程序或HTML,那么通过高效地使用一个好的编辑器,你可以节省大部分时间。本文将提供指导和提示,让你更迅速地做这些工作,并且少犯错误。本文用开源文本编辑器Vim(Vi IMproved)来演示如何高效编辑,本文方法同样适用于其他的编辑器。选择合适的编辑器,实际上是进行高效编辑的第一步。我们避免去讨论哪个编辑器最适合你,因为这个话题将占用太多篇幅。如果你不知道选用那个编辑器,或者你对目前使用的编辑器不满意,那就试试Vim;你将不会失望。第1部分:编辑一个文件1.快速移动大部分时 阅读全文

posted @ 2013-09-16 11:39 codestyle 阅读(400) 评论(0) 推荐(1) 编辑

老码农:如何写出让自己满意的代码
摘要:http://blog.jobbole.com/47966/今天有位朋友在微博上问我这样一个问题:“@老码农的自留地,最近出于学习目的写一个管理系统,越到后边,越觉得自己前边的代码写得烂。前辈,我想让代码写得更好一点,能不能谈谈你的经验,给我指点一下!”我在回复里刚写了几句,就意识到140个字很难把我的想法说清楚,本着知无不言言无不尽的好为人师精神,我决定把我的回答写成一篇博文。首先要说明的是,我写这篇博客并不代表本人觉得自己的代码写得有多好。事实上我很清楚自己的水平,作为一个做应用系统的程序员,和那些做框架做系统的大牛根本就不在一个层次。而且即使在应用层次,我的水平大概也只能算二三流,只是因 阅读全文

posted @ 2013-09-16 11:30 codestyle 阅读(329) 评论(0) 推荐(0) 编辑

想写代码?离开你的电脑吧!
摘要:http://blog.jobbole.com/954/最近我认识到一些事情。写代码的最好地方不是在电脑前用你的编译器、集成开发环境和各种工具来写。写代码最好是远离所有这些工具,去到你能够正确思考的地方。你相当熟悉一种语言了,你很容易就能把你心中的程序翻译成编译器可以编译(或解释器可以解释)的程序,不过,难就难在心中形成程序。前几天我坐火车去旅行。我带了电脑,但没有网络。很不幸,我正要用一个商业编程语言(碰巧是IDL),为此我得用我们大学的网站许可。由于无法上网,我无法获得网站许可,这样我也就不能运行编译器和集成开发环境。虽然你喜欢商业编程语言,但它需要昂贵的许可,而它那时使我不能用编辑器写代 阅读全文

posted @ 2013-09-16 11:29 codestyle 阅读(312) 评论(0) 推荐(0) 编辑

让C程序更高效的10种方法
摘要: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("% 阅读全文

posted @ 2013-09-16 11:27 codestyle 阅读(261) 评论(0) 推荐(0) 编辑

杂记
摘要:http://www.csdn.net/article/2013-09-11/2816908-iOS-dev-toolseditorshttp://xmuzyq.iteye.com/blog/1942376source insight 3.5注册码SI3US-361500-17409http://www.oschina.net/p/grok?from=rssGROK python语义分析算法概论http://ishare.iask.sina.com.cn/f/34931346.html牛叉的大胡子,等我老了,也留这么一把大胡子http://www.ituring.com.cn/article/ 阅读全文

posted @ 2013-09-13 17:37 codestyle 阅读(281) 评论(0) 推荐(0) 编辑

shell下 使用心得
摘要:打印时间的命令date +'%F %k:%M:%d'crontab启动计划任务,注意两件事情:1)crontab里启动的脚本,如果需要读取文件,需要使用绝对路径,或者在脚本里cd到目录所在的绝对路径2)crontab里启动的脚本,如果需要使用mysql这样的命令,不能直接"mysql -h -uroot" 而是要指定mysql程序的绝对路径,例如/usr/local/mysql 该路径需要可以通过 which mysql 来查询 阅读全文

posted @ 2013-09-13 13:50 codestyle 阅读(149) 评论(0) 推荐(0) 编辑

Pythonic到底是什么玩意儿?
摘要: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年,虽然有少部分内容( 阅读全文

posted @ 2013-09-13 13:02 codestyle 阅读(566) 评论(0) 推荐(0) 编辑

如何确定编码风格?
摘要:这是最近一直在想的一个问题,编码风格说着简单,不就是变量名的大小写,缩进使用空格还是tab键什么的吗?其实不然,它既包含刚才说的这些命名上的规则,也包含更高级一些的内容,例如错误机制(是使用函数返回值,还是异常)以及错误机制怎么使用,这些内容属于什么呢,属于编码惯用法,这些惯用法受语言,所采用的框架,类库的影响(不同语言的惯用法并不完全相同,并且有各自的理由,所以甚至出现某些惯用法在不同语言里互相冲突的情况)并且这些规则也不仅仅只是代码层面的问题,例如错误机制,日志机制,同时也是架构层面的问题。体现在代码里,却由更高层依据某个理由决定。今天想说的是什么呢?还是最浅的那个层次,变量名的大小写,缩 阅读全文

posted @ 2013-09-11 12:35 codestyle 阅读(1965) 评论(0) 推荐(2) 编辑

python解析日志的代码
摘要:#!/usr/bin/env pythonimport reimport osimport os.pathimport gzipimport jsonfrom urlparse import *import datetimeimport timeDICT = {}def print_time(s): #print (datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) print datetime.datetime.now().strftime("%H:%M:%S.%f. 阅读全文

posted @ 2013-09-10 16:30 codestyle 阅读(284) 评论(0) 推荐(0) 编辑

python的pyc和pyo文件
摘要: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函数原型: 阅读全文

posted @ 2013-09-10 15:15 codestyle 阅读(1346) 评论(0) 推荐(0) 编辑

让你的大脑安静下来
摘要: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 神经科学告诉我们,要想达到更高的效率,更有创造力,我们需要经常的让大脑休息一会儿。是安静的大脑创造出最深远的洞察力。但是,在忙碌的一天中抽出这样的停止工作的时间并不是件容易的事。下面说的是三种特别有效的,快速的,容易的在日常工作中营造这样的休息时间的好方法。 快速冥想 来自洛杉矶加利福尼... 阅读全文

posted @ 2013-09-10 10:39 codestyle 阅读(329) 评论(0) 推荐(0) 编辑

日志记录最佳实践
摘要:译自Optimal Loggingby Anthony ValloneGoogle Testing Blog要找到一个系统问题的根本原因,你需要多长时间?5分钟?还是5天?如果你的答案接近5分钟,很大可能是因为你的生产环境和测试环境使用了非常好的日志记录。更常见的情况是,诸如日志、异常处理、甚至测试这类非核心的工作,被当作一种出现问题后的补救方式。同异常处理和测试一样,日志记录真的也需要策略,无论是生产环境还是测试环境。永远不要低估日志的作用。有了使用得当的日志,你甚至可以说debug不是必需的。下面是多年来对我非常有用的日志记录指导原则。保持适度切勿记录过多。大量的磁盘空间被日志占用说明你没 阅读全文

posted @ 2013-09-10 10:13 codestyle 阅读(513) 评论(0) 推荐(0) 编辑

罗浩:创业降级论
摘要:http://blog.jobbole.com/23413/http://meditic.com/degrading-for-success/几乎一年没有写博客了,说没时间那是借口,唯一的原因是,年纪越大越发觉自己肤浅。有些想法还没提笔,就发现很幼稚,就不敢发出来贻笑大方了。这次先给大家说个小故事:从前有三个屌丝,聚在一起做网络,提供免费的网络服务,砸锅卖铁,通宵达旦,除了卖肾啥都做了。3年后终于做到了五百万用户,对于年轻人来说,能把五百万人玩弄于鼓掌之间,已经是很牛逼轰轰的事了,不过用户越多,成本越高,每年服务器、带宽租金、房租水电、广告运营等成本,已经达到了十七八万,屌丝们不得不面对一个终 阅读全文

posted @ 2013-09-09 13:38 codestyle 阅读(350) 评论(0) 推荐(0) 编辑

有效地记录日志可以简化企业的开发过程
摘要:http://www.ibm.com/developerworks/cn/java/j-logging/提前规划一个记录日志的计划,在开发过程后期就可以获益Charles Chan(chancharles@gmail.com), 首席顾问, Ambrose Software Inc.简介:在企业级的开发过程中,我们不可避免地会碰到很多问题;如果您希望在开发过程的后期能够有效地捕捉 bug,那就需要一种有效的日志策略。但是在一个企业的应用程序中要想实现有效地记录日志,需要进行一番规划,并设计一些准则。在本文中,顾问 Charles Chan 将向您介绍一些最好的实践,从而帮助您从项目一开始就编写 阅读全文

posted @ 2013-09-09 10:53 codestyle 阅读(258) 评论(0) 推荐(0) 编辑

gets和从键盘输入换行符
摘要:i was wrong! 虽然setbuf可以让程序自己管理缓冲,但是像getchar,gets这些标准IO函数还是要通过隐藏的stdin进行操作,而stdin是啥呢?还是一个FILE*,而FILE*自己内部有很多东西比如记录下一个字符的位置,有没有读尽缓存,因此直接通过memset去清除缓存还是很野蛮的动作,比较危险,但是文章也还有点价值,我实在是不舍得删,就先写一段放在这里吧#include #include int main(int argc, char *argv[]){ char buffer[1024] = {0}; gets(buffer); printf("%s\n& 阅读全文

posted @ 2013-09-06 17:52 codestyle 阅读(1493) 评论(0) 推荐(0) 编辑

在 Windows 下部署 Go 语言环境
摘要: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之后在“计算机”---“属性”-- 阅读全文

posted @ 2013-09-06 14:00 codestyle 阅读(406) 评论(0) 推荐(0) 编辑

C语言日期时间标准库
摘要:用思维导图整理:代码:#include #include #include int main(){ /* 标准库直接支持 */ //获得运行程序的机器时间,并直接从time_t打印时间 time_t t = time(NULL); printf("%s\n",ctime(&t)); //从time_t转换成为struct tm,使用struct tm打印时间 struct tm *ptm = localtime(&t); printf("%s\n",asctime(ptm)); //自定义打印时间样式 const int BUF_S... 阅读全文

posted @ 2013-09-01 15:06 codestyle 阅读(1139) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示