原创 線程池詳解

線程池的好處: 第一、降低資源消耗。通過重複利用已創建的線程降低線程創建和銷燬造成的消耗; 第二、提高相應速度。當任務達到時,減少了線程創建的時間。 第三、提高線程的可管理性。線程是稀缺資源,如果無限的創建,不僅會消耗系統資源,還會降

原创 ThreadLocal深入剖析

JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal爲解決多線程程序的併發問題提供了一種新的思路。使用這個工具類可以很簡潔地編寫出優美的多線程程序,ThreadLocal並不是一個Thread

原创 ZooKeeper之(二)數據模型

ZooKeeper 會維護一個具有層次關係的數據結構,非常類似於一個文件系統。 樹形結構的每個節點都被稱作爲Znode。 znode通過路徑引用,如同Unix中的文件路徑。路徑必須是絕對的,因此他們必須由斜槓字符來開頭。除此以外,它

原创 MySQL優化系列(八)--鎖機制超詳細解析(鎖分類、事務併發、引擎併發控制)

一、MySQL鎖機制概述: (一)什麼是鎖,以及爲什麼使用鎖和鎖的運作? 鎖是計算機協調多個進程或純線程併發訪問某一資源的機制。在數據庫中,除傳統的計算資源(CPU、RAM、I/O)的爭用以外,數據也是一種供許多用戶共享的資源。如何保

原创 ZooKeeper之(一)ZooKeeper是什麼

服務集羣作用:分解壓力、在一定程度上打破性能瓶頸,提高系統的可用性。 分佈式系統:每臺機器都跑着同一個應用程序的一部分,彼此之間通過網絡連接起來,構成一個系統來爲用戶提供服務,對用戶來說,這個系統是透明的,他們感覺不到這個系統是怎樣的

原创 ZooKeeper之(三)工作原理

1、ZooKeeper集羣的系統架構 爲了保證數據的一致性,ZooKeeper對機器進行了角色劃分: 領導者leader:負責投票的發起和決議,更新系統的狀態。 學習者-跟隨者follow:用戶接收客戶的請求並向客戶端返回結果,在選主

原创 多線程之基礎篇

相關概念 進程是指一個內存中運行的應用程序,每個進程都有自己獨立的一塊內存空間,一個進程中可以啓動多個線程。 一個進程是一個獨立的運行環境,它可以被看作一個程序或者一個應用。而**線程是在進程中執行的一個任務。Java運行環境是一個包

原创 MySQL優化系列(三)--索引的使用、原理和設計優化

一、索引的概述和使用: (1)概述: 1)什麼是索引? 索引是一種特殊的文件(innodb數據表上的索引是表空間的一個組成部分),它們包含着對數據表裏所有記錄的引用指針。 更通俗的說,數據庫索引好比是一本書前面的目錄,能加快數據庫的查

原创 MySQL優化系列(四)--表的設計與優化(單表、多表)

一、單表設計與優化: (1)設計規範化表,消除數據冗餘(以使用正確字段類型最明顯): 表設計三範式: 第一範式:字段的原子性約束,要求字段具有原子性,不可再分割。 第二範式:記錄的唯一性約束,要求記錄有唯一標識,每條記錄需要一個字段來

原创 MySQL優化系列(五)--數據庫存儲引擎(主要分析對比InnoDB和MyISAM以及講述Mrg_Myisam分表)

一、存儲引擎的概述: (1)爲什麼要合理選擇數據庫存儲引擎: mysql 中的數據用各種不同的技術存儲在文件(或內存)中。這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的

原创 MySQL優化系列(一)--庫與表基本操作以及數據增刪改

一、操作數據語句優化認識 通常情況下,當訪問某張表的時候,讀取者首先必須獲取該表的鎖,如果有寫入操作到達,那麼寫入者一直等待讀取者完成操作(查詢開始之後就不能中斷,因此允許讀取者完成操作)。當讀取者完成對錶的操作的時候,鎖就會被解除。

原创 MySQL優化系列(二)--查找優化(1)(非索引設計)

一、明確搜索優化的整體思路以及查詢優化的因素 (1)思路 索引優化、查詢優化、查詢緩存、服務器設置優化、操作系統和硬件優化、應用層面優化(web服務器、緩存)等等。這些齊頭並進,才能實現mysql高性能 (2)因素 ①、是否向數據庫請

原创 MySQL優化系列(二)--查找優化(2)(外連接、多表聯合查詢以及查詢注意點)

關於“超大型數據儘可能盡力不要寫子查詢,使用連接(JOIN)去替換它”。 關於這一類的總結,我們要認真去考量,這裏並不是說一定。 1)因爲在大型的數據處理中,子查詢是非常常見的,特別是在查詢出來的數據需要進一步處理的情況, 無論是可讀

原创 一文看懂數據庫原理

一提到關係型數據庫,我禁不住想:有些東西被忽視了。關係型數據庫無處不在,而且種類繁多,從小巧實用的 SQLite 到強大的 Teradata 。但很少有文章講解數據庫是如何工作的。你可以自己谷歌/百度一下『關係型數據庫原理』,看看結果

原创 git教程

“git init”:把一個目錄變成Git可以管理的倉庫 “git add a.txt b.txt” :將一個或多個文件的修改從工作區放到暫存區,多次執行該命令的話,相當於把多次修改放到暫存區 “git commit -m ” 將