系統運維
-
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、回溯法適用:有許多問題,當需要找出它的解集(…