設(shè)計(jì)模式在很早之前有明確的定義,使用意圖,場(chǎng)景;但是在現(xiàn)代的很多編程語(yǔ)言中,就內(nèi)置的設(shè)計(jì)模式,比如C#的事件、委托特性,就是觀察者模式的體現(xiàn); 現(xiàn)在的前端框架Vue,整個(gè)Mo...
設(shè)計(jì)模式在很早之前有明確的定義,使用意圖,場(chǎng)景;但是在現(xiàn)代的很多編程語(yǔ)言中,就內(nèi)置的設(shè)計(jì)模式,比如C#的事件、委托特性,就是觀察者模式的體現(xiàn); 現(xiàn)在的前端框架Vue,整個(gè)Mo...
復(fù)合模式:就是將多種設(shè)計(jì)模式融合在一起,實(shí)現(xiàn)一個(gè)更高階的功能,一個(gè)非常經(jīng)典的復(fù)合模式就是MVC。 MVC模式在過去的十幾年里,使用頻率非常高,尤其是前后端尚未分離的時(shí)候,類似...
意圖:提供一種方法順序訪問一個(gè)聚合對(duì)象中各個(gè)元素, 而又無(wú)須暴露該對(duì)象的內(nèi)部表示。 迭代器模式是一種非常常見的設(shè)計(jì)模式,在我們的編程中,想要遍歷一個(gè)非常大的容器對(duì)象,往往要先...
意圖:定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。 使用場(chǎng)景: 1、有多個(gè)子類共有的方法,且...
定義: 適配器模式(Adapter Pattern)是作為兩個(gè)不兼容的接口之間的橋梁。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的功能。 適配器模式在生活中很常見...
定義: 在代理模式(Proxy Pattern)中,一個(gè)類代表另一個(gè)類的功能。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式。在代理模式中,我們創(chuàng)建具有現(xiàn)有對(duì)象的對(duì)象,以便向外界提供功能接口。
定義: 意圖:允許對(duì)象在內(nèi)部狀態(tài)發(fā)生改變時(shí)改變它的行為,對(duì)象看起來(lái)好像修改了它的類。主要解決:對(duì)象的行為依賴于它的狀態(tài)(屬性),并且可以根據(jù)它的狀態(tài)改變而改變它的相關(guān)行為。何...
定義: 命令模式:將請(qǐng)求封裝成對(duì)象,這可以讓你使用不同的請(qǐng)求、隊(duì)列,或者日志請(qǐng)求來(lái)參數(shù)化其他對(duì)象。命令模式也可以支持撤銷操作。 命令模式在Java的框架中使用非常頻繁,比如最...
定義: 單例模式:確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問點(diǎn)。 單例模式實(shí)在是太簡(jiǎn)單了,主要是注意線程安全問題; 比如一個(gè)單機(jī)游戲,游戲里只有一個(gè)玩家,那么這個(gè)玩家就可以設(shè)...
裝飾者模式 “對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉”定義: 裝飾者模式:動(dòng)態(tài)的將責(zé)任附加到對(duì)象上。想要擴(kuò)展功能,裝飾者提供有別于繼承的另一種選擇 裝飾者模式是一種非常實(shí)用的模式,動(dòng)態(tài)的給對(duì)...
觀察者模式 定義: 觀察者模式:在對(duì)象之間定義一對(duì)多的依賴,這樣依賴,當(dāng)一個(gè)對(duì)象改變狀態(tài),依賴它的對(duì)象都會(huì)受到通知,并自動(dòng)更新 這個(gè)模式在很多場(chǎng)景下都有用到: 比如消息隊(duì)列,...
定義 策略模式:定義算法族,分別封裝起來(lái),讓它們之間可以互相替換,此模式讓算法的變化獨(dú)立于使用算法的客戶 策略模式的核心的“策略”兩個(gè)字,什么是策略呢,我的理解是策略是可以隨...
通過集群擴(kuò)展 MySQL Cluster(NDB Cluster) 一個(gè)鍵-值數(shù)據(jù)庫(kù)服務(wù)器,高寫入高查詢吞吐,容錯(cuò)性好,分布式,但復(fù)雜查詢支持不太好 Clustrix 一個(gè)分...
復(fù)制管理和維護(hù) 復(fù)制如何監(jiān)控? SHOW MASTER STATUS 查看當(dāng)前主庫(kù)的二進(jìn)制日志位置和配置 如何測(cè)量備庫(kù)延遲? Percona Toolkit的pt-heart...
現(xiàn)在互聯(lián)網(wǎng)的信息量爆發(fā),單個(gè)數(shù)據(jù)庫(kù)的容量、讀寫性能,很快就達(dá)到了瓶頸,那怎么辦呢,那就得擴(kuò)展啊... 垂直擴(kuò)展(向上擴(kuò)展) 即堆砌硬件,512G內(nèi)存,32核CPU,厲害不! ...
復(fù)制概述 復(fù)制解決的基本問題是讓一臺(tái)服務(wù)器的數(shù)據(jù)與其他服務(wù)器保持同步 MySQL支持兩種復(fù)制方式:基于行的復(fù)制和基于語(yǔ)句的復(fù)制,通過在主庫(kù)上記錄二進(jìn)制日志,然后在備庫(kù)重放日志...
MySQL查詢優(yōu)化器的局限性 關(guān)聯(lián)子查詢 MySQL的關(guān)聯(lián)子查詢實(shí)現(xiàn)的很差,最好改成左外連接(LEFT OUTER JOIN) UNION的限制 UNION查詢的數(shù)據(jù)會(huì)放到臨...
為什么查詢會(huì)慢? 響應(yīng)時(shí)間、掃描的行數(shù)、返回的行數(shù),是衡量查詢開銷的三個(gè)指標(biāo)(記錄在慢日志中) 查詢了不需要的數(shù)據(jù)查詢不需要的記錄:比如查詢了100條記錄到應(yīng)用,取其中的10...
1、聚簇索引(索引組織表) 聚簇索引不是一個(gè)索引類型,而是一種儲(chǔ)存方式。在InnoDB中,聚簇索引在同一個(gè)結(jié)構(gòu)中保存了B-Tree索引和數(shù)據(jù)行,數(shù)據(jù)行儲(chǔ)存在索引的葉子頁(yè);因?yàn)?..
1 什么是索引 索引是由一個(gè)或者多個(gè)列組成的排序的數(shù)據(jù)結(jié)構(gòu),通過索引可以高效的找到行的指針,然后根據(jù)指針提取行數(shù)據(jù),避免低效全表掃描 索引的類型 B-Tree索引 從索引的根...