原创 運維學習(五)前後端分離項目的部署運維實踐

一、選擇開源項目renren-fast renren-fast是一款前後端分離的開源項目,前端主要技術是vue,後端主要技術java。我以開源項目renren-fast做爲這次部署運維實踐的素材。 訪問www.renren.io,點擊下

原创 Docker搭建Redis集羣——RedisCluster實現

一、關於Redis集羣需知的點 1.1 Redis的集羣方案 Redis目前的集羣方案有以下幾種: 1.RedisCluster:官方推薦,沒有中心節點 2.Codis:中間件產品,存在中心節點 3.Twemproxy:中間件產品,存在中

原创 Docker搭建MySQL數據庫集羣——(三)Keepalive+Haproxy實現數據庫負載均衡的高可用

在第二篇中已經實現了數據庫負載均衡中間件Haproxy的部署運行。 但當單臺Haproxy出現問題時,數據庫集羣的負載均衡也就失效了。爲了保證Haproxy的高可用,單臺Haproxy也是不夠的。 因此需要實現多臺Haproxy的部署運行

原创 Docker搭建MySQL數據庫集羣——(二)數據庫負載均衡

一、負載均衡中間件的選擇 上一篇成功搭建了數據庫集羣,但在pxc數據庫集羣中,任何一個節點都是可以讀寫的。 如果pxc集羣上線後,不應該把所有的請求都發送給一個節點,所有節點都應該參與數據請求的處理。 如果想要實現將請求均勻的發送給每個節

原创 [docker命令] 記錄一些自己常用的docker命令

service docker start   啓動docker服務 docker info                 查看docker信息 docker images           查看已擁有的docker鏡像 docker

原创 JVM學習——(三)垃圾回收那些事

一、如何確定一個對象是垃圾? 想要進行垃圾回收,得先知道什麼樣的對象是垃圾。 1.1 引用計數法 對於某個對象而言,只要應用程序中持有該對象的引用,就說明該對象不是垃圾。 如果一個對象沒有任何指針對其引用,它就是垃圾。 弊端:如果AB相互

原创 MySQL性能優化學習——(四)性能優化總結

一、優化思路 性能優化的思路應該是什麼樣的? 說到性能調優,大部分時候想要實現的目標是讓我們的查詢更快。 一個查詢的動作又是由很多個環節組成的,每個環節都會消耗時間,在第一篇 關於SQL 語句的 執行流程中已經分析過了。 想要減少查詢

原创 MySQL性能優化學習——(三) 數據庫事務與鎖

一、什麼是數據庫的事務? 1.1 事務的定義 維基百科的定義: 事務是數據庫管理系統(DBMS)執行過程中的一個邏輯單位, 由一個有限的數據庫操作序列構成。 這裏面有兩個關鍵點,第一個,它是數據庫最小的工作單元,是不可以再分的。 第二個,

原创 關於SpringBoot的異步任務使用

在SpringBoot中提供了異步任務的功能特性。 1.引入spring-boot-starter-web依賴 2.在Application啓動類上標註@EnableAsync註解 3.編寫異步方法: import lombok.ext

原创 設計模式學習——工廠模式

一、簡單工廠模式(Simple Factory Pattern) 簡單工廠模式是指由一個工廠對象決定創建出哪一種產品類的實例。 它屬於創建型模式,但不屬於23種設計模式。   舉個例子,有一個課程接口,一個 Java課程類 繼承了課程接口

原创 MySQL性能優化學習(二)—— MySQL的索引原理分析

1.索引是什麼? 先拋出幾個問題: 表的索引越全越好,對嗎? 爲什麼不要在性別字段上建索引? 爲什麼不建議使用身份證做主鍵? 模糊匹配like abc% , like %abc% , like %888都用不到索引,對嗎? 不要使用sel

原创 Docker搭建MySQL數據庫集羣(PXC集羣)

一,常見的兩種MySQL集羣方案 1. Replication Replication的方案是弱一致性的方案,無法保證數據的實時同步,DB1會直接提交。 特點 :速度快,弱一致性,低價值。常見日誌、新聞、帖子。 2. PXC PXC的方案

原创 MySQL性能優化學習(一)—— MySQL的執行流程

一、一條sql的執行過程 APP(客戶端) ↓↓ 查詢緩存 可以提高效率,但sql不完全一樣時即失效。表內容變化時也失效。因此最好還是ORM框架去實現。 MYSQL的查詢緩存默認關閉,8.0的版本以後已經去除該緩存模塊。 ↓↓ 解析器

原创 MYSQL存儲引擎

如何查看存儲引擎: show table status like 'tableName'; show create table tableName;   創建數據庫時設置存儲引擎: create table tableName( colu

原创 List的 toArray()和toArray(T[] a)

ArrayList提供了一個將List轉爲數組的一個非常方便的方法toArray。toArray有兩個重載的方法: 1.list.toArray(); 2.list.toArray(T[]  a); 對於第一個重載方法,是將list直接轉