2014年3月 ’ 的文章存档

写给Python初学者的设计模式入门

1

 

有没有想过设计模式到底是什么?通过本文可以看到设计模式为什么这么重要,通过几个Python的示例展示为什么需要设计模式,以及如何使用。

 

设计模式是什么?

设计模式是经过总结、优化的,对我们经常会碰到的一些编程问题的可重用解决方案。一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码。反之,设计模式更为高级,它是一种必须在特定情形下实现的一种方法模板。设计模式不会绑定具体的编程语言。一个好的设计模式应该能够用大部分编程语言实现(如果做不到全部的话,具体取决于语言特性)。最为重要的是,设计模式也是一把双刃剑,如果设计模式被用在不恰当的情形下将会造成灾难,进而带来无穷的麻烦。然而如果设计模式在正确的时间被用在正确地地方,它将是你的救星。
阅读全文

PHP正则表达式的效率:回溯与固化分组

先来看个问题。

字符串

$str = '<script>123456</script>';

正则表达式为

$strRegex1 = '%<script>.+<\/script>%';
$strRegex2 = '%<script>.+?<\/script>%';
$strRegex3 = '%<script>(?:(?!<\/script>).)+<\/script>%';

这三个正则,分别会造成几次回溯呢??

阅读全文

Linux基础篇之文本、数据流处理命令

1 awk:文本和数据处理工具

awk擅长于对数据进行分析并生成报告,简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

使用方法:awk ‘{pattern + action}’ {filenames}

其中pattern 表示awk 在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。pattern就是要表示的正则表达式,用斜杠括起来。准备实例操作文件:netstat  -t >> netstat.txt
阅读全文

我不是个内向的程序员,我只是很忙

 

goldfish jumping out of the water

最近几个星期,我一直在跟一个十分诡异的bug做斗争。我的一个服务端程序,它要跟另外一个服务保持持久的连接,要认证终端用户,然后执行一系列的数据操作。

不知为什么,时不时的,这个程序会丢失socket连接。也不是经常发生,但也不是很罕见,就是过一段时间,运行这个服务的机器就会资源耗尽,无法响应——因为积压了太多的无法处理的请求。

这个问题快把我搞疯了;我找不出问题出自哪里,我的时间全被这个问题占用了,一边盯着要在服务彻底宕机前重启它,一边来回分析这段代码。就是这段,让我来展示给你看….
阅读全文

怎样编写高质量的java代码

代码质量概述

怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有过代码质量相关经验的朋友提出宝贵的意见。

ffff

 

代码质量所涉及的5个方面,编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。这5方面很大程序上决定了一份代码的质量高低。我们分别来看一下这5方面:
阅读全文

10个最好的 JavaScript 动画库和开发框架

虽然 CSS3 动画功能能够让我们以简单轻松的方式实现动画效果,但是浏览器兼容性问题让人头疼。不过不用担心,我们还有另外的武器——JavaScript,它同样可以帮助你实现各种各样的动画效果,而且借助已有的动画库和框架,也能够让你快速开发。

这篇文章挑选了个人认为最好的15个 JavaScript 动画库和开发框架,相信其中一定会有一款是适合你的。

1. Tween JS

a1
阅读全文

Java的对象驻留

Java会将源代码中的字符串常量存储到常量池中。也就是说,当你这么写的时候:

String a = "I am a string";
String b = "I am a string";

变量a和变量b是同一个值。这不只是说它俩的值是一样的,而是说就是同一个字符串对象。用Java的话来说就是a==b的结果是true。然而这个只对字符串以及小的整型或者长整型有效。其它的对象是不会被驻留的,也就是说如果你创建了两个对象而他们的值是相等的,但他们并不是同一个对象。这个问题有时候很讨厌,尤其是当你从某个持久化存储中取出一个对象时。如果同一个对象你取了两次,你当然希望最终取出的是同一个对象,不过实际上你取出的是两份拷贝。换句话说你其实希望的是取出的是存储中那个对象在内存里面的同一个拷贝。有些存储层是会做这样的处理的。比如说JPA的实现就是遵循这个模式的,而别的情况可能你就得自己去做缓存了。
阅读全文

改变世界的17个公式:勾股定理、相对论

公式是个很奇妙的东西,它无比的简洁,却能够描述万千世界。数学家、科学家伊恩·斯图尔特(Ian Stewart)还专门出了一本书,名叫《17 Equations That Changed The World(改变世界的17个方程)》。其中大多数公式我们都见过哦,甚至能够耳熟能详。

1、勾股定理:不解释

2、对数公式:上过高中的都知道

3、微积分:求不规则形状的面积时,先切割成小块,把每一小块当成矩形计算底X高,最后相加。

4、万有引力定律:任何两个物体之间都有引力,但那个系数“G”相当小。

5、复数:原来“-1”开根号也可以

6、欧拉多面体定理:V-E+F=2,式中V表示多面体的顶点数,E表示棱数,F表示面数。

7、正态分布:概率问题

8、微分方程:与导数有着扯不清的关系。

9、傅立叶变换:好吧,学《工科数学分析》和《通信原理》时差点被虐。

10、纳维-斯托克斯方程:描述粘性不可压缩流体动量守恒的运动方程

11、麦克斯韦方程组:由四个方程构成,是描述电场、磁场与电荷密度、电流密度之间关系的偏微分方程。

12、热力学第二定律:不可能把热从低温物体传到高温物体而不产生其他影响(需要额外做工,比如空调就费电了)

13、相对论:上课时过得很慢,周末却特别快。

14、薛定谔方程:描述微观粒子运动状态

15、信息理论(熵):描述信息的大小,感兴趣可以搜索“信息熵”。

16、混沌理论:宇宙本身处于混沌状态,在其中某一部分中似乎并无关联的事件间的冲突,会给宇宙的另一部分造成不可预测的后果。

17、布莱克-斯科尔斯公式(期权定价模型):为包括股票、债券、货币、商品在内的新兴衍生金融市场的各种以市价价格变动定价的衍生金融工具的合理定价奠定了基础。
阅读全文

一名IT从业者的英语口语能力成长路径

【导言

这是英语口语能力成长路径合辑文章。

这篇文章是我最近十天口语系列文章的合辑,文章比较长,一万五千余字。但是系统化地归纳了自己十多年的英语尤其是口语方面的学习经历与总结思考。我不是个纯粹的英语专业学生,我甚至不是任何英语相关专业的学生,但是我和英语却有着很多的故事,我对这门语言的学习与训练有着没由来的纯粹兴趣。虽然我从学校接受的教育与学术训练主要在计算机科学与技术领域,但是在英语演讲、辩论、口译的场合偶尔能看见我年轻时的身影。在不同领域的体验,让我有机会转换角度观察,我的这篇合辑文章也会有带有这样的特点,希望我的文字能带给您不同的思考。

由于文章是以连载的形式写就,我在合辑中保留了一些带有时间性质的语句,如昨天今天,以期尽量保持原味。

第零部分 开篇

从今天起进入口语部分。口语是中国英语学习者的老大难题,我在读书的时候也花费了不少工夫,在一片烂泥潭里,渐渐地摸索着走了出来。其中曲折其实可以另写一个长篇故事性文章了,不过这里主要从宏观体系上讲策略方法与实践,也就是经验教训的总结(纯干货)那些各种小故事就暂且按下不表,待有机会再道来。

结合单词部分的写作经验与读者的反馈,口语部分我打算采用交互式的方式写作。这里我将拟几个题目,涉及口语各个方面,读者可以根据兴趣回复问题的数字,我根据受关注的程度调整各个部分的分配的比例。如果有其他的问题也可以留言提出。不过需要说明的是,我自己在口语学习方面的观点也是一家之言,未必与主流的学习观点不太一致,也许可能是“毁三观”的,这里作个说明。
阅读全文

项目经理应该把30%的时间用在编程上

a1

 

本文的作者Eliot HorowitzMongoDB的创始人和技术总监。

在一个科技公司里,软件技术经理用在编程上的时间应该不低于总工作时间的30%。无论是管理一个团队,还是一个分部,还是整个公司,当技术经理用在编程上的时间低于30%时,他执行职责的能力就会发生严重退化。

我的这个断言可能跟那些我看到的想成为团队首领的软件程序员们期望的情况完全相反。每次晋升,程序员们都期待花在编码上的时间会大幅度减少,当从“leader”爬到“经理”职位时,就应该彻底脱离编码活动。而且,他们期望以一种“动口/眼不动手”的方式来保持对代码库的熟悉。再上级的领导就跟编码完全没关系了(如果有的话)。
阅读全文