系统运维
-
php 设计模式-数据映射模式(应用程序与数据库交互模式)
前面提到的设计模式大大提高了代码的可读性与可维护性。然而,在WEB应用设计与开发中一个基本的需求与挑战:数据库应用,这些设计模式都没有涉及到。数据映射模式使您能更好的组织你的应用程序与数据库进行交互。 下面我将用实际代码说明,如果一个表发生变动。我们要修改客户端代码就可以了。特别是游戏项目,需求经常可能会经常变动。修改表结构,可能引起大片代码的改动。 首先我…
-
设计模式原则详解
我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设…
-
AOP面向方面编程
1.引言 软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创建和管理的模块。于是出现了以系统模块化特性的面向对象程序设计技术。模块化的面向对象编程极度极地提高了软件系统的可读性、复用性和可扩展性。向对象方法的焦点在于选择对象作为模块的主要单元,并将对象与系统的…
-
重构-改善既有代码的设计:重构原则(二)
1.什么是重构 重构(Refactoring):在不改变软件的功能和外部可见性的情况下,为了改善软件的结构,提高清晰性、可扩展性和可重用性而对软件进行的改造,对代码内部的结构进行优化。 2.为何重构 1)改进软件设计(整理代码) 重构和设计是相辅相成的,它和设计彼此互补。有了重构,你仍然必须做预先的设计,但是不必是最优的设计,只需要一个合理的解…
-
重构-改善既有代码的设计:编写代码22宗罪(三)
1 Duplicated Code重复代码 不同的地方出现相同的程序结构: 如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将它们和而为一,程序会变得更好。最常见的“重复代码”就是一个类内的两个函数含有相同的表达式。另一种常见…
-
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。 3) 类的属性…
-
深入理解java嵌套类和内部类
一、什么是嵌套类及内部类 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种: 其一、在一个类(外部类)中直接定义的内部类; 其二、在一个方法…
-
Java中的Map List Set等集合类
Map List Set等集合类: 一、概述 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系: +Collection 这个接口extends自 –java.lang.Iterable接口 ├+List(接口 代表有序,可重复的集合。列表) │├ ArreyList &…
-
php的serialize序列化和json性能测试
最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。 在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持。 在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize…
-
重构与模式:改善代码三部曲中的第三部
一、改善代码的三部曲 《设计模式》-> 《重构》-> 《重构与模式》。也就是设计->重构->重构出新设计。 《设计模式》主要详细说明20几种模式,为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。为设计而著。 《重构》改善既有代码的设…
-
数据结构-线性表
1. 线性表:n个数据元素的有序集合。 线性表是一种常用的数据结构。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。 线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点…
-
数据结构-栈和队列
1.栈 1.1 栈的定义 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示: 结论:后进先出(Last In First Out),简称为LIFO线性表。 栈的基本运算有六种: 构造空栈:InitStack(S)、 判栈空: StackEmpty(S)、 判栈满: StackFull(S)、 …
-
数据结构- 串的模式匹配算法:BF和 KMP算法
Brute-Force算法的思想 1.BF(Brute-Force)算法 Brute-Force算法的基本思想是: 1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。 2) 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹…
-
二叉树的应用详解 – 数据结构
概述: 平衡树——特点:所有结点左右子树深度差≤1 排序树——特点:所有结点“左小右大字典树——由字符串构成的二叉排序树判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重)带权树——特点:路径带权值(例如长度) 最优树——是带权路径长度最短的树,又称 Huffman树,用途之一是通信中的压缩编码。 1. 二叉排序树(二叉查找树 Bina…
-
回溯法 -数据结构与算法
1.回溯法算法思想: 定义: 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 1、回溯法适用:有许多问题,当需要找出它的解集(…