自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 redis之字符串命令源码解析(一)

形象化设计模式实战             HELLO!架构   在redis的使用中,set/get无疑是使用最普遍的命令,我先telnet连接运行看看   先看get命令,获取一个key服务器返回了两行内容,是"$3\r\n123\r\n"(\r\n为换行符),...

2014-10-29 09:46:52 476 0

Dijkstra算法(最短距离)

该算法由荷兰的一个牛人计算机科学家Edsger Wybe Dijkstra在1956年发现。   这套算法主要解决计算从一个点到其它的点的最短距离,而不是Floyd-Warshall算法的任意两点距离。  如图,现要计算出,从1号点到其它各点的最短距离,首先我还是转化成矩阵 由此可见...

2016-08-05 16:57:49 634 0

Floyd-Warshall算法(最短距离)

Robert W.Floyd和Stephen Warshall在1962年发表了Floyd-Warshall算法   如图,有1234,四个点,每个点都有一定的距离,比如1和2有2的距离,现在我想知道任意两个点的最短距离。   我先用“邻接矩阵存储法”将这个图转化为矩阵  竖坐标...

2016-08-05 16:13:27 286 0

玩转深度优先搜索算法

小时候玩游戏,有个BOMB人的游戏,把BOMB放在一个空地上,将怪兽炸死,如图:  BOMB的威力只要不碰到墙壁,可以无限延长。那么我们应该把BOMB放哪里可以炸死最多的怪兽呢?   这个问题貌似很简单,一个一个地方试下不就知道了吗?是啊,那我们用代码来试下。   将图象转成字符,用...

2016-08-01 17:32:42 64 0

使用nginx部署django应用

1、通过pip安装uwsgi   $sudo yum install python-devel $sudo yum install python-pip $sudo pip install pip --upgrade $sudo yum install libpcre3 libpcre...

2016-02-25 11:05:56 52 0

如何正确防御xss攻击

XSS:Cross Site Script,本来简写是css,但为了区别样式表的css,因此在安全领域叫做“XSS”。 XSS攻击通常是指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。   一、HttpOnl...

2014-12-10 10:54:59 268 0

构建WEB数据库扩展

已文大神可以略过。   当一台服务器已不能满足日益膨胀的站点时,就应该对数据库进行扩展。   一、主从复制   几乎所有的主流数据都支持复制,在mysql中,配置如下 1、开户服务器上的二进制日志(log-bin) 2、在主服务器和从服务器上分别进行简单的配置和授权。 具体可参...

2014-12-05 09:42:13 31 0

六大Web负载均衡原理与实现

开头先理解一下所谓的“均衡” 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。   一、http重定向 ...

2014-11-25 09:38:40 411 0

redis之列表命令源码解析

形象化设计模式实战             HELLO!架构                     redis命令源码解析   一、Lpush,Rpush t_list.c   void lpushCommand(redisClient *c) { pushGeneri...

2014-11-18 09:42:27 45 0

redis之哈希命令源码解析

形象化设计模式实战             HELLO!架构                     redis命令源码解析   前面讲过了字典和压缩列表的实现,redis的哈希数据就是存储在这两种结构之中的,如果对这两种结构都非常清楚了,那么对哈希命令的实现的理解将会非常简单。   ...

2014-11-14 10:07:22 36 0

代码实现任意容量倒水问题

形象化设计模式实战             HELLO!架构                     redis命令源码解析   倒水问题:有两个杯子,一个A升,一个B升,水有无限多,现要求利用这两杯子装C升的水。   想必很多人都可能被问到过这个问题,问题虽然简单的,但是要费些脑子。...

2014-11-05 11:49:10 192 0

redis之压缩列表源码剖析

形象化设计模式实战             HELLO!架构                     redis命令源码解析   用过Redis的应该对其哈希命令不陌生,在探索其实现之前,先得了解Redis的一个内部映射数据结构——压缩列表。   1、zipList的结构 找到zip...

2014-11-04 09:59:26 50 0

redis之字符串命令源码解析(三)

形象化设计模式实战             HELLO!架构   redis之字符串命令源码解析(一) redis之字符串命令源码解析(二)     前面已经将set get命令的原理与过程作了详细的解析,下面对一些常用的命令做一些简单讲解,前提是前面的已经明白。 1、appen...

2014-10-31 09:40:37 34 0

原创 redis之字符串命令源码解析(二)

形象化设计模式实战             HELLO!架构   在redis之字符串命令源码解析(一)中讲了get的简单实现,并没有对如何取到数据做深入分析,这里将深入。   1、redisObject 数据结构,以及Redis 的数据类型 (一)中说set test "he...

2014-10-30 09:33:37 816 0

redis之字符串命令源码解析(二)

形象化设计模式实战             HELLO!架构   在redis之字符串命令源码解析(一)中讲了get的简单实现,并没有对如何取到数据做深入分析,这里将深入。   1、redisObject 数据结构,以及Redis 的数据类型   (一)中说set test &quo...

2014-10-30 09:32:12 27 0

原创 企业架构之页面控制器

在前端控制器博客中说到前端控制器比较复杂,不适用于相对的小项目,那如何以最佳方式为适度复杂的WEB应用程序构建控制器,从而既能避免代码重复,又能实现重用性和灵活性?     一、概念 Page Controller很简单,就是接受来自页面请求的输入,调用请求对模型执行操作以及确...

2014-10-29 14:26:03 461 0

原创 企业架构之应用控制器

在前端控制器中说到执行命令时,是用命令对象自己调用视图,如果系统的规模较小,可以如此。但这并不是最佳的选择,最好是尽可能地将命令和视图分离开来。   一、概念 应用控制器负责映射请求到命令,并映射命令到视图。这种分离意味着可以更加容易地改变视图(即模板)而不用改动核心代码。同时,也可...

2014-10-29 14:24:11 332 0

原创 企业架构之前端控制器

一、概念 前端控制器模式用一个中心来处理所有到来的请求,最后调用视图将结果呈现给用户。此模式是Java企业应用的核心模式之一,但在PHP中并没有受到广泛的喜爱,部分原因是初始化前端控制器所需要的开销会导致系统性能下降。     二、为什么要使用前端控制器? (1)当请...

2014-10-29 14:08:46 432 0

原创 PHP架构之注册表

啥是注册表模式?其实很简单! 注册表的作用是提供系统级别的对象访问功能。我们在编码时通常把“全局变量是不好的”当做信条。不过,凡事都有两面性,全局性的数据访问非常具有吸引力。   问题来了: 大多系统都分为几个层,每个层都只通过事先定义好的通道和相邻的层交流。对层的分享使程...

2014-10-29 14:04:55 536 0

redis之字符串命令源码解析(一)

形象化设计模式实战             HELLO!架构   在redis的使用中,set/get无疑是使用最普遍的命令,我先telnet连接运行看看   先看get命令,获取一个key服务器返回了两行内容,是"$3\r\n123\r\n"(\r\n为换行符...

2014-10-28 09:47:15 40 0

对象关系行为模式之延迟加载

形象化设计模式实战     HELLO!架构   一、概念 Lazy Load:一个对象,它虽然不包含所需要的所有数据,但是知道怎么获取这些数据。 延迟加载貌似很简单,就是在数据需要时再从数据库获取,减少数据库的消耗。但这其中还是有不少技巧的。     二、实现延迟加载 实现La...

2014-09-03 09:42:40 32 0

对象关系行为模式之工作单元

一、概念 Unit of Work:维护受业务事务影响的对象列表,并协调变化的写入和并发问题的解决。其UML结构大致如下: 工作单元记录在业务事务过程中对数据库有影响的所有变化。操作结束后,作为一种结果,工作单元了解所有需要对数据库做的改变,统一对数据库操作。     二、为什么要使用...

2014-08-27 09:40:21 87 0

对象关系行为模式之标识映射

HELLO!架构   一、概念 identity Map:通过在映射中保存每个已经加载的对象,确保每个对象只加载一次,当要访问对象的时候,通过映射来查找它们。其实在数据源架构模式之数据映射器代码中有提及到标识映射,Mapper类的getFromMap方法就是实现标识映射的实现。    ...

2014-08-21 09:42:09 77 0

数据源架构模式之数据映射器

前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。   一、概念 数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射...

2014-08-11 09:47:50 53 0

数据源架构模式之活动记录

hello!架构 一、概念 活动记录(Active Record):一个对象,它包装数据库表或视图中某一行,封装数据库访问,并在这些数据上增加了领域逻辑。 对象既有数据又有行为。活动记录使用直截了当的方法,把数据访问逻辑置于领域对象中。   二、实现简单活动记录 活动记录在php许多...

2014-08-05 09:37:19 47 0

数据源架构模式之行数据入口

注:看不懂的请勿踩,此文章非针对java,java爱好者可直接略过。   一、概念 行数据入口(Row Data Gateway):充当数据源中单条记录入口的对象,每行一个实例。   二、简单实现行数据入口 为了方便理解,还是先简单实现: <?php /** ...

2014-07-31 09:42:12 98 0

数据源架构模式之表数据入口

数据源架构模式有四种:表数据之口,行数据入口,活动记录和数据映射器。 在了解它们之前,需对领域模型模式有一定的了解,可先参看 业务逻辑层之事务脚本与领域模型和业务逻辑层之表模块   一、概念 表数据入口(Table Data Gateway):充当数据库表访问入口的对象。一个实例处...

2014-07-30 09:29:16 27 0

业务逻辑层之表模块

在业务逻辑层中还有一种模式:表模块,在PHP的实际开发,很多时候其实用到的都是表模块模型。   一、概念 Table Module:处理某一数据库或视图中所有行的业务逻辑的一个实例。太抽象了!其实表模块和领域模型非常相似。表模块是以一个类对应数据库中的一个表来组织领域逻辑,而且使用单一的类...

2014-07-18 09:36:53 74 0

业务逻辑层之事务脚本与领域模型

在前面的博客中,已了解了前端控制器,页面控制器,应用控制器这三种表现层模式,如果说它们精心安排了外部世界与系统内部的通信,那么业务逻辑层的工作则是处理应用程序的业务部分。业务逻辑层应当远离那些外部的“噪音”。业务逻辑是整个应用程序的根本目的所在,系统的其它部分都是为这部分服务的。 这里介绍两种...

2014-07-11 09:48:42 102 0

企业架构之页面控制器

在前端控制器博客中说到前端控制器比较复杂,不适用于相对的小项目,那如何以最佳方式为适度复杂的WEB应用程序构建控制器,从而既能避免代码重复,又能实现重用性和灵活性?     一、概念 Page Controller很简单,就是接受来自页面请求的输入,调用请求对模型执行操作以及确定应用于结...

2014-06-23 10:59:04 16 0

企业架构之应用控制器

在前端控制器中说到执行命令时,是用命令对象自己调用视图,如果系统的规模较小,可以如此。但这并不是最佳的选择,最好是尽可能地将命令和视图分离开来。   一、概念 应用控制器负责映射请求到命令,并映射命令到视图。这种分离意味着可以更加容易地改变视图(即模板)而不用改动核心代码。同时,也可以改变...

2014-06-20 09:33:10 18 0

企业架构之前端控制器

一、概念 前端控制器模式用一个中心来处理所有到来的请求,最后调用视图将结果呈现给用户。此模式是Java企业应用的核心模式之一,但在PHP中并没有受到广泛的喜爱,部分原因是初始化前端控制器所需要的开销会导致系统性能下降。     二、为什么要使用前端控制器? (1)当请求可以发送到系统...

2014-06-17 10:34:28 24 0

PHP架构之注册表

啥是注册表模式?其实很简单! 注册表的作用是提供系统级别的对象访问功能。我们在编码时通常把“全局变量是不好的”当做信条。不过,凡事都有两面性,全局性的数据访问非常具有吸引力。   问题来了: 大多系统都分为几个层,每个层都只通过事先定义好的通道和相邻的层交流。对层的分享使程序变得灵活,替...

2014-06-10 10:35:14 26 0

跨战区模式PK(总结)

创建类模式描述如何创建对象,行为类模式关注如何管理对象的行为,结构类模式则看重于如何建立一个软件结构,虽然三种模式的着重点不同,但是在实际应用中还是有重叠的,会出现一种模式适用,另外一种模式也适用的情况。   一、策略模式VS桥梁模式 策略模式是一个行为模式,旨在封装一系列的行为,封装的格...

2014-05-30 09:47:56 35 0

行为类模式大PK(总结)

行为类模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法、访问者模式,我去,好多。。。下面主要挑选几个比较容易混淆且比较重要的模式进行对比说明。     一、命令模式VS策略模式 1、关注点不同 策略模式关注的是算法替...

2014-05-29 09:42:08 21 0

结构类模式大PK(总结)

结构类模式包括适配器模式、桥梁模式、组合模式、装饰模式、门面模式、享元模式和代理模式,它们都是通过组合类或对象产生更大结构以适应更高层次的逻辑需求。   一、代理模式VS装饰模式 代理模式把当前的行为或功能委托给其他对象执行,代理类负责接口限定:是否可以调用真实角色,以及是否对发送到真实角...

2014-05-26 09:41:58 28 0

创建类模式大PK(总结)

创建类模式包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式,它们都能够提供对象的创建和管理职责。其中的单例模式和原型模式非常容易理解,单例模式是要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个新对象,这两个不容易混淆。下面主要分析其它三种模式。     一、...

2014-05-23 10:16:44 17 0

变脸不变质的桥梁模式(Bridge Pattern)

有一哥们是搞山寨货的,什么流行就搞什么。自己有个厂子,前些时间服装挣钱,就生产衣服,现在搞手机挣钱,搞手机,这哥们很聪明,就换了个产品,工人,厂房都不变。他是怎么做到的?用类图来模拟一下: 由类图可以看出这哥现有两家公司,一个搞房地产,一个搞山寨货(phone),房地产是长久渠道,山寨随时...

2014-05-22 09:58:41 26 0

神器sublime2配置xdebug调试PHP

第一步:安装php xdebug扩展 参考http://www.xdebug.org/docs/install 讲的很详细,这里略过。   第二步:安装sublime xdebugclient(不是xdebug) 直接用package control安装即可   第三步:配置php...

2014-05-20 15:02:48 74 0

懂得分享的享元模式(Flyweight Pattern)

今天学习一个对php来说意义不大的模式——享元模式 竟然意义不大为什么要学?我一直认为设计模式是不针对语言的,相对于目前的php意义不大,并不表示其本身没有意义,其在编译型的语言里还是有很多的用处的。   享元模式的定义 享元模式是池技术的重要实现方式,其定义为:使用共享对象可有效地支持...

2014-05-14 14:14:02 24 0

提示
确定要删除当前文章?
取消 删除