接触名词汇总
1.使用關鍵字 explain
 explian關鍵字詳解
2.group by 和having的區別
 Group By語句從英文的字面意義上理解就是“根據(by)一定的規則進行分組(Group)”。
   作用:通過一定的規則將一個數據集劃分成若干個小的區域,然后針對若干個小區域進行數據處理。
   注意:group by 是先排序后分組!
需要注意說明:當同時含有where子句、group by 子句 、having子句及聚集函數時,執行順序如下:
1、執行where子句查找符合條件的數據;
2、使用group by 子句對數據進行分組;
3、對group by 子句形成的組運行聚集函數計算每一組的值;
4、最后用having 子句去掉不符合條件的組。
3.case的用法 多用于統計數量
 THEN后邊的值與ELSE后邊的值類型應一致,否則會報錯
現老師要統計班中,有多少男同學,多少女同學,并統計男同學中有幾人及格,女同學中有幾人及格,要求用一個SQL輸出結果。
SELECT SUM (CASE WHEN STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT,SUM (CASE WHEN STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT,SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_PASS,SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_PASS FROM THTF_STUDENTS4.覆蓋索引:
 就是說我select 字段1,字段2,與我建立的符合索引個數和順序一致。例如:建的索引 字段一 字段二,查的也是字段一、字段二。理解方式一:就是select 的數據列只用從索引中就能夠取得,不必讀取數據行,mysql可以利用索引返回select列表中的字段,而不必根據索引再次讀取數據文件,換句話說查詢列要被所建的索引覆蓋,一個索引包含了(或覆蓋了)滿足查詢結果的數據就叫做覆蓋索引。
 注意:如果要使用覆蓋索引,一定要注意select列表中只取出需要的列,不可select * ,因為如果將所有字段一起做索引會導致索引文件過大,查詢性能下降。索引的字段不只包含查詢列,還需要包含查詢條件、排序等。
 5.聚簇索引 非聚簇索引以及回表
 聚集索引
聚集索引即索引結構和數據一起存放的索引。主鍵索引屬于聚集索引。
在 Mysql 中,InnoDB 引擎的表的 .ibd文件就包含了該表的索引和數據,對于 InnoDB
 引擎表來說,該表的索引(B+樹)的每個非葉子節點存儲索引,葉子節點存儲索引和索引對應的數據。
聚集索引的優點 聚集索引的查詢速度非常的快,因為整個B+樹本身就是一顆多叉平衡樹,葉子節點也都是有序的,定位到索引的節點,就相當于定位到了數據。
聚集索引的缺點
 依賴于有序的數據 :因為 B+樹是多路平衡樹,如果索引的數據不是有序的,那么就需要在插入時排序,如果數據是整型還好,否則類似于字符串或 UUID
 這種又長又難比較的數據,插入或查找的速度肯定比較慢。
 更新代價大 : 如果對索引列的數據被修改時,那么對應的索引也將會被修改,
 而且況聚集索引的葉子節點還存放著數據,修改代價肯定是較大的, 所以對于主鍵索引來說,主鍵一般都是不可被修改的。
 非聚集索引
 非聚集索引即索引結構和數據分開存放的索引。
二級索引屬于非聚集索引。
MYISAM 引擎的表的.MYI 文件包含了表的索引, 該表的索引(B+樹)的每個葉子非葉子節點存儲索引,
 葉子節點存儲索引和索引對應數據的指針,指向.MYD 文件的數據。
非聚集索引的葉子節點并不一定存放數據的指針, 因為二級索引的葉子節點就存放的是主鍵,根據主鍵再回表查數據。
非聚集索引的優點
 更新代價比聚集索引要小 。非聚集索引的更新代價就沒有聚集索引那么大了,非聚集索引的葉子節點是不存放數據的
非聚集索引的缺點
 跟聚集索引一樣,非聚集索引也依賴于有序的數據
 可能會二次查詢(回表) :這應該是非聚集索引最大的缺點了。
 當查到索引對應的指針或主鍵后,可能還需要根據指針或主鍵再到數據文件或表中查詢。
6.DWD ODS數據倉庫
 [數據倉庫]分層概念,ODS,DM,DWD,DWS,DIM的概念
 7.curl命令
8.CAP理論
 CAP理論詳解
 9.git命令總結
10.動態語言和靜態語言的區別
動態類型語言:在運行期進行類型檢查的語言,也就是在編寫代碼的時候可以不指定變量的數據類型,比如Python和Ruby
 靜態類型語言:它的數據類型是在編譯期進行檢查的,也就是說變量在使用前要聲明變量的數據類型,這樣的好處是把類型檢查放在編譯期,提前檢查可能出現的類型錯誤,典型代表C/C++和Java、
11.thrift的安裝,thrift接口是什么
 12.mysql刷盤機制 樂觀鎖 悲觀鎖的區別
13.mysql存儲數據為什么使用頁進行存儲 和操作系統的頁有什么區別
 14.http為什么在應用層層面是同步的但是在操作系統層面是異步的
 15.UUID的作用
 16.service層和dao層區別
Service是業務層,Dao是數據訪問層,這樣的分層是基于MVC架構來說的。
Dao層:全稱為data access object,屬于一種bai比較底層,比較基礎的操作,具體到對于某個表、某個實體的增刪改查
Service層:被稱為服務,肯定是相比之下比較高層次的一層結構,相當于將幾種操作封裝起來。
具體起來,Dao的作用是封裝對數據庫的訪問:增刪改查,不涉及業務邏輯,只是達到按某個條件獲得指定數據的要求;
 而Service,則是專注業務邏輯,對于其中需要的數據庫操作,都通過Dao去實現。
17.mvc三層架構
MVC是一種使用設計創建 Web 應用程序的。
 Model(數據訪問層)(模型)表示應用程序核心(比如數據庫記錄列表)。
 View(表示層)(視圖)顯示數據(數據庫記錄)。
 Controller(業務邏輯層)(控制器)處理輸入(寫入數據庫記錄)請求數據和轉發到視圖
 三層架構分為:表現層(UI)(web層)、業務邏輯層(BLL)(service層)、數據訪問層(DAL)(dao層) ,再加上實體類庫(Model)
1.實體類庫(Model),在Java中,往往將其稱為Entity實體類。數據庫中用于存放數據,而我們通常選擇會用一個專門的類來抽象出數據表的結構,類的屬性就一對一的對應這表的屬性。
·一般來說,Model實體類庫層需要被DAL層,BIL層和UI層引用。
2.數據訪問層(DAL),主要是存放對數據類的訪問,即對數據庫的添加、刪除、修改、更新等基本操作
·DAL就是根據業務需求,構造SQL語句,構造參數,調用幫助類,獲取結果,DAL層被BIL層調用
3.業務邏輯層(BLL)
·BLL層好比是橋梁,將UI表示層與DAL數據訪問層之間聯系起來。所要負責的,就是處理涉及業務邏輯相關的問題,比如在調用訪問數據庫之前,先處理數據、判斷數據。
18.動態編譯和靜態編譯
靜態編譯與動態編譯的區別:
   1、動態編譯的可執行文件需要附帶一個的動態鏈接庫,在執行時,需要調用其對應動態鏈接庫中的命令。
   所以其優點一方面是縮小了執行文件本身的體積,另一方面是加快了編譯速度,節省了系統資源。
   缺點一是哪怕是很簡單的程序,只用到了鏈接庫中的一兩條命令,也需要附帶一個相對龐大的鏈接庫;二是如果其他計算機上沒有安裝對應的運行庫,則用動態編譯的可執行文件就不能運行。
   2、靜態編譯就是編譯器在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴于動態鏈接庫。所以其優缺點與動態編譯的可執行文件正好互補。
 靜態編譯:在編譯時確定類型,綁定對象,即通過。
 動態編譯:運行時確定類型,綁定對象。
動態編譯最大限度發揮了java的靈活性,體現了多態的應用,有以降低類之間的藕合性。
java中的反射就是運用了動態編譯創建對象。
19.git命令rebase和merge的區別
總結
 
                            
                        - 上一篇: POJ1008:玛雅日历
- 下一篇: [MapReduce] Counter
