- 博客(129)
- 资源 (6)
- 收藏
- 关注
原创 PHP设计模式——迭代器模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 迭代器模式:迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。 UML类图: 角色: Itera
2015-06-08 22:08:41
5833
原创 PHP设计模式——命令模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 命令模式:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式。
2015-06-04 20:54:23
3004
原创 PHP设计模式——观察者模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 观察者模式(有时又被称为发布-订阅模式)。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。 UML类图: 重
2015-06-03 22:13:48
4031
原创 PHP设计模式——解释器模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 解释器模式:Given a language, define arepresentation for its grammar along with an interpreter that uses therepresentation to interpret sentences in the language。给定一个语言
2015-05-31 21:23:59
3080
原创 PHP设计模式——策略模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化,即封装变化的算法。 适用场景: 1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
2015-05-16 22:15:29
8947
1
原创 PHP设计模式——代理模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 UML类图: 角色介绍: 抽象主题角色(IGiveGift):
2015-05-16 18:03:12
6364
原创 PHP设计模式——享元模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。 UML类图:
2015-05-16 13:06:43
3017
1
原创 PHP设计模式——门面模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 门面模式(有时候也称外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。 案例:炒股票,新股民不了解证券知识做股票,是很容易亏钱的,需要学习的知识太多了,这样新手最好把炒股的事情委托给基金公司,基金
2015-05-16 11:27:09
7264
原创 PHP设计模式——装饰器模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 装饰器模式又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 UML类图: 角色: 组件对象的接口:可以给这些对象动态的添加职责
2015-05-03 12:55:40
7464
原创 PHP设计模式——组合器模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 组合模式(有时候又叫做部分-整体模式),将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 实现类
2015-05-02 22:03:09
2223
原创 PHP设计模式——桥接模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 桥接模式:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?这就要使用桥接模式——将抽象部分与它的实现部分分离,使他们可以独立地变化。 UML类图: 角色介绍: 抽
2015-05-02 20:03:18
3802
原创 PHP设计模式——适配器模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的(适配器模式要解决的核心问题)。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 类图: 待适配(ForeignPlayer)角色
2015-04-26 13:49:16
2007
原创 PHP设计模式——原型模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化
2015-04-25 20:59:30
4255
原创 PHP设计模式——建造者模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 建造者模式也称生成器模式,核心思想是将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。 例如:汽车,他的发动机引擎有好多品牌,轮胎也有各种材质,内饰更是千奇百怪;鸟,他的头、翅膀以及脚有各种颜色和形状,在创建这种复杂对象的时候,我们建
2015-04-25 11:30:51
6247
原创 PHP设计模式——单例模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。 单例模式也称单态,是23种设计模式中最简单的一种,从他的名字就可以知道他的核心思想,单例模式就是系统中只有一个这样的对象,对象只有一个,在Java或者C#中,单例模式一般有两种,分别是懒汉式、饿汉式,但是在PHP中常用的就是懒汉式,由于PHP是单线程的,懒汉式也不存在双重验证。 懒汉式具体代码:
2015-04-21 22:16:55
2340
1
原创 PHP设计模式——抽象工厂
声明:本系列博客参考资料《大话设计模式》,作者程杰。 前面我们介绍了简单工厂和工厂方法设计模式,今天我们学习最后一个工厂——抽象工厂。 案例:追MM少不了请吃饭了,去麦当劳,只管向服务员说“两个B套餐”就行了。麦当劳就是B套餐的AbstractFactory,B套餐里含有汉堡, 鸡翅和饮料. 麦当劳或肯德基会根据B套餐的规格, 让汉堡Fact
2015-04-19 19:05:29
2830
原创 PHP设计模式——工厂方法
声明:本系列博客参考资料《大话设计模式》,作者程杰。 前面我们介绍了简单工厂,今天我们继续学习另外一个工厂——工厂方法。 具体案例:请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我们一般采用FactoryMethod模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员
2015-04-16 22:37:35
2406
原创 PHP面向对象设计模式-姜海强-专题视频课程
本系列教程内容涵盖PHP常用的设计模式,旨在指导读者搭建易扩展的项目框架,高服用的代码,大程度的发挥面向对象思想的优势。
2015-04-10 22:38:31
289
原创 PHP设计模式——简单工厂
声明:本系列博客参考资料《大话设计模式》,作者程杰。 前面两节内容介绍了什么是设计模式以及六大原则,相信看完前两节内容大家对设计模式已经有了初步的认识,接下来说一下设计模式的分类。 一般将面向对象设计模式分为三类:创建型、结构型、行为型三种。 创建型:创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创
2015-04-09 23:01:09
2849
原创 PHP设计模式——六大原则
声明:本系列博客参考资料《大话设计模式》,作者程杰。 一般认为遵从以下六大原则的代码是易扩展可复用的代码: 这六大原则任何面向对象的语言都应该遵守的,要想让你的代码易扩展高服用就尽量去满足这六大原则吧,不一定严格按照某种设计模式,但是如果你的代码符合这六大原
2015-04-06 23:18:54
7135
原创 PHP设计模式——概述
声明:本系列博客参考资料《大话设计模式》,作者程杰。 常见的面向对象设计模式大约有23种,但是自从接触PHP后,渐渐发现常见的设计模式好像少了很多,网络上的资料也比较少,身边的PHP同事们有的甚至没有听说过设计模式,这也有可能是PHP的发展所带来的,因为PHP对面向对象支持的比较晚,好多PHP程序员还按照面向过程的思想写代码。于是,我决定把原来用C#写的
2015-04-06 22:15:14
3205
原创 数据切分——Mysql分区表的管理与维护
关于Mysql分区表的介绍可以参考: http://blog.csdn.net/jhq0113/article/details/44592865 关于Mysql分区表的创建可以参考: http://blog.csdn.net/jhq0113/article/details/44593511 前面已经提过,Mysql支持4种表
2015-03-25 11:54:50
4476
原创 数据切分——Mysql分区表的建立及性能分析
Mysql的安装方法可以参考: http://blog.csdn.net/jhq0113/article/details/43812895 Mysql分区表的介绍可以参考: http://blog.csdn.net/jhq0113/article/details/44592865
2015-03-24 16:44:16
27122
4
原创 数据切分——MySql表分区概述
定义: 表的分区指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。用户所选择的、实现数据分割的规则被称为分区函数,这在MySQL中它可以是模数,或者是简单的匹配一个连续的数值区间或数值列表,或者是一个内部HASH函数,或一个线性HASH函数。 使用场景:
2015-03-24 16:08:43
6563
原创 数据切分——Atlas读写分离Mysql集群的搭建
关于数据切分的原理可以参见博客: http://blog.csdn.net/jhq0113/article/details/44226789 关于Atlas的介绍可以参见博客: http://blog.csdn.net/jhq0113/article/details/44239823
2015-03-16 11:58:18
21055
3
原创 Nginx负载均衡:分布式/热备Web Server的搭建
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。
2015-03-15 17:52:41
16908
1
原创 CentOS服务器Mysql主从复制集群的搭建
在配置Mysql数据库主从复制集群的时候要保证: 1.主从服务器操作系统版本和位数一致。 2.Mysql版本一致。 为了保证稳定性,最好服务器操作系统和Mysql数据库环境一致。 服务器: Master:192.168.1.18 Slave:
2015-03-14 21:03:58
10178
1
原创 数据切分——Atlas介绍
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过80
2015-03-13 13:20:56
11796
原创 数据切分——原理
声明:本系列教程参考资料《Mysql性能调优与架构设计》 Why Mysql? 大家可能怀疑,数据库有好多种,为什么选择Mysql作为数据切分的案例,为什么不选择Oracle、MS SqlServer或者DB2等等。原因是大家都知道,淘宝网最开始选择LAMP的架构设计,即Linux+Apache+Mysql+PHP,最开始系统遇到的瓶颈是当时PH
2015-03-12 21:09:33
8542
1
原创 Linux局域网文件分享系统Samba
上学的时候在学校机房见过FTP做的文件分享系统,服务器是Windows的,当时感觉功能真的很强大,不管是哪台机器都可以共享一个文件夹,后来自己在家里通过查阅各种资料,用自己的win7做FTP服务器,做了一个文件服务器,但是真的很鸡肋,操作体验真的不尽人意。 下面介绍的是Linux服务器平台安装的文件分享系统软件Samba,通过Samba部署的文件分享系统可以兼容Mac、Lin
2015-03-09 21:02:57
2819
原创 分布式业务Redis安装与集群配置
Redis在百度百科里的解释:Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 可见Redis的数据是持久化的,可以分担一个项目中的部分业务,Redis的数据是存储在服务器内存当中的,这样可以极大的加快访问速度,因为内存的读取速度远远超过磁盘和数据库,这在很大程序的上解决了大并发的困
2015-03-08 21:02:27
10631
3
原创 Yii框架分布式缓存的实现方案
声明:本文阅读对象最好是对Yii和分布式缓存有一定了解的人群,否则理解和掌握上有一些困难,建议阅读之前做好以上两点基础准备。 YiiFramework简称Yii,读作易,代表简单(easy)、高效(efficient)、可扩展(extensible),Yii将面向对象思想以及代码的重用性发挥到了极致,尤其是在缓存的支持上,Yii是最有效率的PHP框架之一。Yii的缓存支持封装在框架核心
2015-02-16 11:00:53
5665
原创 CentOS6.6 32位 Minimal版本纯编译安装Nginx Mysql PHP Memcached
声明:部分编译指令在博客编辑器里好像被处理了,如双横线变成单横线了等等,于是在本地生成了一个pdf版本,在下面地址可以下载。 LNMP MemcachedCentOS是红帽发行的免费的稳定Linux版本,在企业服务器应用中都会选用Minimal版本,因为Minimal是CentOS”最纯洁”的服务器系统,因为Minimal版本连vim编辑器都需要自己安装,Minimal组件最少,无桌面,扩展灵活,
2015-02-14 02:13:15
5208
原创 Windows移动开发(五)——初始XAML
关于具体的基本功就先说这么多,后面遇到再补充说明,前面说的都是一些代码和原理方面的东西,接下来说的会有界面和代码结合,会有成就感,因为能真正的做出东西来了。Windows移动开发包括Windows Store和Windows Phone,Windows Store程序主要针对的是Surface,Windows Phone主要是Win8 Metro手机应用,这两个产品的开发模式基
2014-10-05 17:48:38
1881
原创 Windows移动开发(四)——闭关修炼
很久不写博客了,不是因为不想写,只是最近公司任务比较多,终于十一有时间出来冒泡了。今天继续介绍移动开发中的重中之重——内存管理。C#代码是托管代码,C# 程序员很少像C/CPP程序员那样为程序资源的释放而头疼,一个C/CPP高手必须是内存管理的高手,作为C#程序虽然不要求像C/CPP程序员那样管理内存资源,但是对内存机制还需要有深入的理解,那些代码资源是托管资源交给GC去处理,那些
2014-10-03 16:13:50
1533
原创 Windows移动开发(三)——闭关修炼
上一次,我们了解了委托,委托和Lambda表达式结合是一件灰常灰常爽的事情,这也是只有.Net才有,自己偷着笑去吧。几天这次,我要介绍一下继承和多态,这是进行面向对象编程必须熟练掌握的技术和思想。1.1 类继承,儿子继承父亲的遗产,这是生活中的体现,在面向对象的编程中,父亲和儿子都是对象的抽象集合,也就是类。什么是类呢?就是一些具有共同特征的对象集合,例如:狗都有四条腿,一
2014-05-21 22:29:21
1331
原创 软件测试——检查代码
进行到现在,已经是第六章了。本章主要讲解检查代码——静态白盒子测试——被证实是早期发现软件缺陷最有效的方法。虽然这是一项需要大量准备工作才能有成效的任务,但是许多研究表明花费的时间与得到的好处相比是值得的。 下面先来看一下本章的内容概述: 静态白盒子测试: 正式审查: 编码标准和规范: 通用代
2014-05-21 20:52:24
2143
原创 软件测试——闭着眼睛测试软件
闭着眼睛测试软件其实就是指动态黑盒子测试。它是动态的,因为程序正在运行——软件测试员充当客户使用它;它是黑盒子,因为测试时不知道程序如何工作——闭上眼睛。 对于软件测试新手应聘软件测试职位,主考人一定会问如何测试新程序或者新特性,本章就将介绍最常用、最有效的软件测试技术,无论是何种类型的程序——公司的客户账目软件包、工业自动化程序还是市场流行的射击游戏,这些技术都适用。
2014-05-21 20:52:22
1768
1
原创 软件测试——检查产品说明书
从本章开始,将介绍软件测试的基础知识。说道软件大多都有软件产品说明书,那么怎么测试说明书以便在产品出厂之前发现缺陷呢?下面我将介绍一下测试软件产品说明书的方法。 本章共分以下三部分: 其中开始测试介绍如下: 对产品说明书进行高级审查的介绍如下: 产品说明书的低级测试技术介绍: 读完本章,
2014-05-21 20:52:19
3242
原创 软件测试——软件测试的实质
这一章我们要了解一些软件测试的基本常识,下面请看内容提要。 测试需要遵循一定的原则,原则如下图: 作为软件测试员必须要知道一定的常识,测试的常识也如下图: 测试界的术语和定义。还是如下图: 了解了软件测试的实质之后,就进入了软件测试的基础知识学习阶段,在以后的几章中
2014-05-21 20:52:17
1178
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅