原创 如何預估系統QPS

如何預估系統QPS 場景舉例: 開屏廣告,全天流量 = 12000CPM = 1200w PV 根據8/2原則,80%的流量在20%的時間段內產生 峯值QPS = (1200w * 0.8) / (24 * 60 * 60 *

原创 互聯網系統數據庫設計軍規

軍規適用場景:併發量大、數據量大的互聯網業務 一、基礎規範 (1)必須使用InnoDB存儲引擎 解讀:支持事務、行級鎖、併發性能更好、CPU及內存緩存頁優化使得資源利用率更高 (2)必須使用UTF8字符集 解讀:萬國碼,無需

原创 Spring源碼深度解析(一)

Spring源碼深度解析(一) 一. 主要內容: 概念描述 Spring整體架構及主要模塊概述 二. 概念描述 IoC :Inversion of Control,控制反轉。 到底反轉了什麼? 假設具有依賴關係的對象 如

原创 基於ReadWriteLock讀寫鎖實現的緩存

package william.pattern; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHas

原创 Redis Sentinel執行流程

Redis Sentinel執行流程 Sentinel是Redis的高可用解決方案:由一個或多個Sentinel實例組成Sentinel Cluster,可以監控任意多個master服務器,及這些master下屬的slave服務器

原创 SpringBoot整合MyBatis原理

SpringBoot整合MyBatis原理 一. 自動配置 SpringBoot提供了MyBatis的自動配置類MybatisAutoConfiguration,可以自動註冊SqlSessionFactory、SqlSession

原创 Redis Cluster執行流程

Redis Cluster執行流程 集羣(cluster)是Redis提供的分佈式數據庫解決方案,集羣通過分片(sharding)來進行數據共享,並提供數據複製(replication)和故障轉移(failover)等功能。下面介

原创 Git精華

Git精華 一. Git工作區域劃分 二. 本地倉庫初始化 #創建本地工作目錄 mkdir git_learn #進行git初始化 cd git_learn git init 三. 常用操作 查看本地倉庫狀態 git s

原创 MySQL字符集與排序規則小結

MySQL字符集與排序規則小結 一. 字符集 utf8mb4說明 MySQL在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來兼容四字節的unicode。好在utf8mb4是ut

原创 MySQL權限

MySQL權限 一. 用戶標識 用戶標識= 用戶名+ IP 二. 用戶權限相關的表 mysql.user:一行記錄代表一個用戶標識(用戶名+ip) mysql.db:一行記錄代表一個數據庫的權限 mysql.tables_pri

原创 MySQL索引詳解

MySQL索引詳解 一. 索引簡介 索引:幫助MySQL高效查詢數據的一種有序的數據結構。 如果沒有索引,查詢某行數據,只能進行全表掃描。這時,需要頻繁地進行磁盤IO,性能很差。 索引一般是一個key-value結構

原创 Nginx概述

Nginx概述 一. Nginx簡介 Nginx(發音爲"engine X")是俄羅斯人編寫的十分輕量級的HTTP 服務器,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。 Nginx

原创 爲什麼HashMap的容量爲2的指數

爲什麼HashMap的容量爲2的指數 一. HashMap的容量揭祕 我們知道,HashMap的容量要求爲2的指數(16、32、256等),默認爲16。此外,HashMap也支持在構造器中指定初始容量initialCapacity

原创 講透ThreadLocal

講透ThreadLocal 一. 簡介 ThreadLocal是JDK提供的一個工具類,其作用是在多線程共享資源的情況下,使每個線程持有一份該資源的副本,每個線程的副本都是獨立互不影響的。線程操作各自的副本,這樣就避免了資源競爭引

原创 MySQL的鎖

MySQL的鎖 一. 全局鎖 Flush tables with read lock (FTWRL):這個命令可以加一個全局鎖,讓整個數據庫處於只讀狀態,這樣所有的DDL、DML和更新事務的操作都會被阻塞。 全局鎖的典型使用場景