2016-04-17 derekchan
「代码大全」一书谈到了抽象数据模型(ADT)的概念,以PHP的角度来看,平常最常见的类就是抽象数据模型的表现形式,很多人对面向对象编程还处在懵懵懂懂的阶段,经常什么方法都塞在一个类中,举个例子,我们有个字体的类,代码如下: 继续阅读 »
2016-10-12 曹强
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象都练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 如图所示: 请求→A→B→C→D 再来一个更形象的比喻,读书的时候假设你坐在前面,要在上课时告诉后排一些事情,这时候你可能会选择写一张小纸条,小纸条就会陆续的被向后传递。 从上面的例子中,我们可以看到职责链的优点:请求发送者只需要知道链中的第一个节点,从而弱化了发送者和一组接收者之间的强联系。 实际开发中的职责链模式 需求:一个售卖手机的电商网站,交纳500定金和200定金和没交定金的有不同的优惠状况。 我们刚开始可能会这么写: // orderType: 订单类 继续阅读 »
2014-06-11 summer
jpa
写在前面的话 这两天一直在看JPA的相关内容,一下对最近的了解的信息进行整理,以前一直不了解什么是JPA,现在有了清晰的认识以作记录。 JPA是什么 JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 起源 Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。 JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它不囿于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持 继续阅读 »
2014-03-27 Xiaosong Gao
iOS
在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题: 方法一 @synchronized(id anObject) 会自动对参数对象加锁,保证临界区内的代码线程安全 @synchronized(self) { // 这段代码对其他 @synchronized(self) 都是互斥的 // self 指向同一个对象 } 继续阅读 »
2013-06-21 Klaus Ma
本以为ACE_Message_Block只是对void*一个简单的封装, 查看了源码发现里还有一层ACE_Data_Block:是一个带引用记数的数据区;ACE_Message_Block::duplicate会对 ACE_Message_Block进行”浅复制”,即两个ACE_Message_Block对象引用同一个ACE_Data_Block对象,但 ACE_Data_Block的引用记数为2; 继续阅读 »
2014-04-27 Lingxian Kong
从F版本就开始熟悉OpenStack的代码,到现在几大核心模块的代码基本都精读过,但不得不说,目前Heat的代码编写,应该是用到Python高级语法最多的模块,各种对象建模也比其他几个模块复杂一些,初学时比较吃力。这里记录下来,给自己和感兴趣的人参考。 版本:Icehouse Dependencies __iadd__:接受一个 (requirer, required) 元组,进行加法操作 required_by(self, last):返回依赖该资源的所有资源 __getitem__(self, last):返回一个Dependencies对象。以last作为叶子节点。 graph(self, revers 继续阅读 »
2016-10-13 曹强
php
Introduction 在[PHP设计模式(四):继承][2]中我们介绍了继承,利用extends来进行程序设计的方法。 在[PHP设计模式(二):抽象类和接口][3]中我们介绍了接口,事实上也存在利用interface的程序设计方法,那就是多态。 和C/C++,Java,Python等语言一样,PHP也支持多态。多态更多是是一种面向对象程序设计的概念,让同一类对象执行同一个接口,但却实现不同的逻辑功能 。 多态/Polymorphism 还是用动物、鲸鱼和鲤鱼来举例: interface IEat { function eatFish(); function eatMoss(); } class Wha 继续阅读 »
2015-08-09 Lim Geng
通过绑定规则来确定this的绑定对象。 默认绑定 默认绑定规则看作是无法应用其他规则时的规则, 独立函数调用是最常用的函数调用方式。比如: ``` function foo() { console.log( this.a ); } var a = 2; foo(); // 2 ``` 此时foo在调用的时候是默认绑定,因为没有指定上下文,所以默认上下文 是window,而var a = 2;这句意思是给window添加了一个a属性,并赋值为2, 所以会打印2。 如果使用严格模式(strict mode),那么全局对象将无法使用默认绑定,因为 this会绑定到undefined. 隐式绑定 另一条需要考虑的规则是调 继续阅读 »
2017-05-28 Lanffy
使用java.util.concurrent.ThreadFactory类创建线程 工厂设计模式是Java中最常用的设计模式之一。它是一种创建型设计模式,能够用于创建一个或多个类所需要的对象。有了这个工厂,我们就能集中的创建对象。 继续阅读 »
2016-11-01 JustWe
Handler - Message - Looper 说起来也就是这么一回事,Looper实现在Thread中负责不断的循环监听处理Message,要不然Thread运行完就自己关了。当你不需要的时候就可以把Looper关了,线程就自动运行完了。 Message 实现了序列化接口,what区分类型,arg的参数使用简单的整形,obj存储对象,data存储一个bundle,target是一个Handler。剩下的就是搞了个对象池回收Message,所以才会推荐用Message.obtain()来新建,其实就是从回收池里拿东西。 总之没什么好说的。 Looper ``` java 继续阅读 »