`
文章列表
何谓猴子补丁(Monkey Patch)?在动态语言中,不修改源代码而对功能进行追加和变更。 使用猴子补丁的目的: 1、追加功能 2、功能变更 3、修正程序错误 4、增加钩子,在执行某个方法的同时执行一些其他的处理,如打印日志,实现AOP等, 5、缓存,在计算量很大,结算之后的结果可以反复使用的情况下,在一次计算完成之后,对方法进行替换可以提高处理速度。 Ruby的类都是开放类,即在类定义之后还可以任意添加内容, 这就使得在Ruby中使用猴子补丁变得特别容易了。另外,Ruby还提供了对方法、类和模块的进行操作的功能,让我们使用猴子补丁更加得心应手。Ruby提供的基本功能如下:       a ...
    最近在做一个公司内部项目的时候,想搭建一个CI服务器,第一个想到的就是Jenkins,但是因为内部项目,在资源方面不想有更多的消耗,同时也想试玩一下当下正火的“云”概念,于是大家决定把CI服务器放到Amazon的EC2上。 ...
      最近读《SICP》把脑细胞搞死大半,还没看完2章,而且看得也是一知半解,实在是受不了了,改读一本浅显点的,不然,自己就要丧失阅读的乐趣了,于是挑了这本《松本行弘的程序世界》刚看完第三章,其第二章“面向对象”写得极为精彩,不得不记录一下收获。        在第一节里,松本就抛出了程序员的”阿尔法综合症“,作为应该主宰计算机,发掘计算机能力的程序员,正在一步步的沦为计算机的奴隶,我们总是在想如何去迎合计算机的各种限制条件。而我们的目标就是夺回主动权,把尽量多的工作交给计算机,充分发挥计算机的高速计算能力和信息处理能力,完成工作。程序员夺回主动权的武器就是编程语言,如何选择一门最合适的语 ...
正则表达式是什么?  一个解决特定问题的工具(也可以说是一种DSL); 解决了什么问题?      文本搜索,替换; 正则表达式的功能介绍: 1、使用普通字符和元字符('.','\')去匹配单个字符。 2、使用‘【】’构成字符集合,表示必须匹配该集合之一。字符集合可以通过列举,也可使用'-'来表示范围,另外还可以通过'^'给集合取非。 3、正则表达式中的元字符: \f: 换页符 ; \n: 换行符; \r: 回车符; \t: Tab键;  \v: 垂直制表符 \d:数字; \D:非数字; \w:数字+字母+下划线; \W:非\w ;\s:所有空格(包含tab,回车等); \S:非空白 ;\0: ...
      我们在对数据进行抽象的时候,基本思想就是为每一类数据对象标识出一组操作,使得对这类数据对象的所有操作都可以基于它们表述,而且在操作这些数据对象时也只使用它们。      在我们面对一个复杂数据对象的时候,它对外提供的各种操作又是基于另一个数据对象的一些操作,这个时候我们就需要在数据抽象的时候构建一个“抽象屏障”,它可以隔离系统中不同的层次,把使用数据抽象的程序与实现数据抽象的程序分开,也就是所谓的面向抽象编程, 举个例子, 我们需要表示一个有理数,很自然想到, 需要一个分子,一个分母,一个构造函数把分子,分母填进去。 public class RationalNumber { ...
软件开发的基本活动: 1、编码,我们所做的一切都在代码上。编码时,大家需要明白的一件事就是代码是程序员沟通的媒介,你有义务学习任何能够提升你代码沟通能力的技术和思维,并把它运用到编码实践中。 2、测试,告诉我们编码什么时候完成。测试存在的目的一是使你的代码生命期更长,便于维护;一是可以提升我们编码的自信心。 3、倾听,沟通,了解业务.别说你只想做技术,如果业务人员不需要你,那么你就会直接被扫地出门。倾听就是一个业务沟通的过程,我们在沟通的时候得注意,只沟通应该沟通的事情,并且以适当的详细程度沟通。 4、设计,为了你能不断的把上面的编码,测试,倾听重复的进行下去,糟糕的设计会阻止你继续倾听 ...
如何让一个软件项目挣更多的钱?影响一个软件项目的收益主要看3个指标: 1、现金流 2、利润率 3、产品成功率。 那么,要让一个软件项目更有价值就有如下的方法: 1、花更少的钱做这个项目,节约成本,这个是很难做到的,因为大家都使用一样的技术和工具。 2、卖更高的价钱,这个就是销售的本事了,其中各种奥妙局外之人难以言道。 3、更加积极的现金流,推迟花钱,尽早赚钱,这一来一去其中的利率收益就是一笔可观数据,而且这也是可持续发展之道。 4、提供软件成功几率。 在软件开发过程中,经常会面临如下的困惑, 1、我是否应该适度放弃项目中的一些东西以获取最大利益 2、我是否应该改变项目前进的方向以适应业务环境 ...
这本书开篇就罗列了目前软件开发过程中经常遇到的困境: 1、项目延期 2、在项目交付前,公司取消项目。 3、系统架构腐化,修改成本高昂。 4、系统缺陷率高,不可用 5、业系统实现偏离业务需求 6、在实现系统时,业务需求变更 7、系统实现了很多无业务价值的特性 8、团队人员流失 极限编程是如何解决这些问题的呢? 1、持续,迭代交付。优先实现高业务价值特性,项目延期的损失可以降低到最小。 2、迭代交互意味着,项目的取消最多影响一个迭代的东西,之前的工作都是有价值,最大程度的消除了浪费。 3、通过高质量的测试,重构,保证每次的改动都在质量标准线以上,避免架构腐化。 4、程序员会为每个功能编写测试用例, ...
应用程序通过TCP写数据的基本过程:       从上图中我们可以看到,应用程序在调用write的时候,内核会把应用程序的缓冲区的内容拷贝到TCP的发送缓冲区(SO_SNDBUFF,我们在建立TCP连接的时候,可以通过设置Socket选项改变其大小。)如果TCP缓冲区放不下应用程序缓冲区的内容,如果是阻塞式IO,其会阻塞,直到把应用程序缓冲区的内容全部写到TCP缓冲区,因此,一个应用程序Write成功并不表示接收方已收到消息,只是表示你把所有的东西都写到TCP缓冲区而已。另外,在TCP缓冲区的数据只有在收到确认收到的消息之后才会清除。       TCP把自己缓冲区的内容以MSS或者更小的块交 ...
TCP的特点: 1)、发送方和接收方需要建立连接,整个过程是先建立连接,发送数据,关闭连接的过程。 2)、可靠性,TCP含有RTT算法,可估算等待确认的时间,从而决定什么时候重传。 3)、分包编号发送。 4)、流量控制,TCP ...
1、Composite Steps 顾名思义就是能够把多个Steps组合为一个Step。例子Meta: @author liuxianning @theme composite Narrative: This story is used to show composite steps. Scenario: Add a student into the class Given There is a student with default details When system add the student into class Then we can get stu ...
1、配置JBehave环境。 1)、添加JBehave依赖包,基本的只需要添加jbehave-core和Junit包就足够了。 2)、配置IntelliJ的JBehave插件,详情参见https://github.com/kumaraman21/IntelliJBehave/wiki 2、实现一个JBehave的Story基本过程   JBahave的测试用例主要由3部分组成,描述测试功能的story文件,story文件对应的Steps类和基于Junit的运行配置文件。Steps类是通过Anotation和正则匹配技术把story文件中的文本Step对应到Steps类中的方法,运行配置文件的 ...
1、什么是JBehave JBehave是一个用java编写的BDD(Behavior-Driven-Design)框架, java界的Cucumber。(注: 1、BDD主要的目的是能够从业务领域专家的视角来编写测试用例,以解决技术人员和业务领域专家的沟通问题。2、Cucumber是基于Ruby的BDD框架 ...

IOS学前班

学前班的主要面向的是毫无IOS开发经验的同学,让大家能够快速的写出自己的第一个IOS程序。 准备工作:     1、Mac平台电脑一台     2、Xcode 4.1开发平台,一般Mac电脑都带。 第一个IOS程序    需求:实现一个3*3的棋盘,能够把玩家放置到棋盘上,还能获得某个位置上的玩家。 首先在Xcode下新建一个项目, IOS -> Application -->View-based Application 剩下的按照具体情况填写就行,如果需要使用unit test,记得勾选Unit Test。项目创建好之后整个project的目录如下:   接着,编写测试 ...
原文地址:http://blog.csdn.net/yasaken/article/details/7348441 在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁止,并弹出如下类似提示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFI ...
Global site tag (gtag.js) - Google Analytics