主頁 > 軟體設計 > Double搭建Mysql集群

Double搭建Mysql集群

2021-04-22 10:40:27 軟體設計

MySQL資料庫的集群方案

在這里插入圖片描述

MySQL 高可用架構:主從備份

  • 為了防止資料庫的突然,掛機,我們需要對資料庫進行高可用架構 主從備份 是常見的場景
  • 通常情況下都是 一主一從/(多從)
    正常情況下,都是主機進行作業,從機進行備份主機資料,如果主機某天突然意外宕機,從機可以立刻作業而不會資料丟失…
    在這里插入圖片描述

MySql 主從復制原理

mysql主節點(稱master) | 從(稱slave)復制

  • 首先我們要先開啟主機的 日志記錄 master主機,每進行 DML的操作,向日志中寫入一條訊息記錄 到二進制日志事件(binary log)

  • 從節點,中會指定主節點的資訊:ip 埠 二進制日志 的位置檔案...
    并啟動一個執行緒,異步實時的 將master的binary log events拷貝到它的中繼日志(relay log)
    slave重做中繼日志中的事件,將改變反映它自己的資料(資料重演)

注意:

  • 通常為了保證資料準確,主從備份之前要:確保
  • 主DB server和從DB server資料庫的版本一致
  • 主DB server和從DB server資料庫資料一致
  • 主DB server開啟二進制日志,主DB server和從DB server的server_id服務id都必須唯一

環境準備:

  • percona-5-7-23.tar
    Mysql的衍生版本Percona 通過docker進行搭建服務,這里本人直接使用提供好的tar 進行生成Docker鏡像
    有網路條件的朋友可以直接 拉取最新的鏡像!

Docker 搭建Mysql 主從備份:

  • 正好,前段時間,看了一段時間Dokcer 本次就直接通過Dokcer進行搭建了… 正常情況其實也無疑..

搭建Master01節點:

#本人安裝軟體的目錄:
[root@hadoop1 ~]# cd /usr/local
[root@hadoop1 local]# ls
apache-phoenix-5.0.0-HBase-2.0-bin  elasticsearch        haproxy-1-9-3.tar  kafka_2.10-0.10.2.1        MR-1.0-SNAPSHOT.jar                                       partition.csv       zookeeper-3.4.13
apache-tomcat-7.0.85                elasticsearch-6.2.4  hbase-2.1.0        kibana-6.2.4-linux-x86_64  Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz  percona-5-7-23.tar
apollo                              hadoop               jdk1.8.0_171       logstash-6.3.0             mysql                                                     wordcount.txt

#本人沒有下載,就直接講 tar包轉換成鏡像檔案了...
[root@hadoop1 local]# docker load --input percona-5-7-23.tar
f972d139738d: Loading layer [==================================================>]  208.8MB/208.8MB
793d15bf88da: Loading layer [==================================================>]  6.144kB/6.144kB
f34bc9e37309: Loading layer [==================================================>]  303.1kB/303.1kB
39df7a5abc61: Loading layer [==================================================>]  22.46MB/22.46MB
#省略..

#查看所有鏡像
#percona Mysql衍生版本
#haproxy 代理服務器
[root@hadoop1 ~]# docker images
REPOSITORY                                         TAG       IMAGE ID       CREATED         SIZE
haproxy                                            1.9.3     d1ba0f09266d   2 years ago     72.1MB
percona                                            5.7.23    9db94bcf28b3   2 years ago     577MB

正片開始😀
Mysql master主節點搭建
#回到根目錄 創建檔案目錄(用戶區分之前安裝的應用...)
[root@hadoop1 /]# cd /
[root@hadoop1 /]# mkdir -p /data/mysql/master01

#進入一號主節點目錄
[root@hadoop1 /]# cd /data/mysql/master01

#創建兩個目錄:conf組態檔 data日志檔案,為了方便操作容器內,創建資料卷
[root@hadoop1 master01]# mkdir conf data
[root@hadoop1 master01]# ls
conf  data
#linux 設定檔案權限 777 最大!
[root@hadoop1 master01]# chmod 777 * -R 
[root@hadoop1 master01]# cd /data/mysql/master01/conf
#創建撰寫組態檔 👇👇
[root@hadoop1 conf]# vim my.cnf

#生成容器
	#-v 設定資料卷:容器與宿主機進行檔案管理共享,為了方便更改查看組態檔!
	#-p 設定埠,因為對外訪問的是linux的埠,容器內部的埠要與宿主機進行映射所以之后的 3306只能有一個!(后面就是3307 3316別搞混)
	#-e 配置資料庫默認密碼 root
[root@hadoop1 conf]# docker create --name percona-master01 -v /data/mysql/master01/data:/var/lib/mysql -v /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
cde032cb98a0465f08cee6554e83a4d53ce2b72bc95f662746d712418d4d1c91
#啟動mysql 容器 && (并且查看他的啟動日志:如果啟動報錯就可以實時的發現!
[root@hadoop1 conf]# docker start percona-master01 && docker logs -f percona-master01
#...
[root@hadoop1 ~]# docker ps -a
cde032cb98a0   percona:5.7.23   "/docker-entrypoint.…"   15 hours ago   Exited (255) 15 minutes ago   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   percona-master01

my.cnf 檔案內容

#配置mysql基礎資訊
[mysqld]
#開啟二進制日志,集群必須開啟,主從互備直接通信就是通過: 二進制日志! (從節點這個可以忽略!)
log-bin=mysql-bin 
#服務id,同一個集群環境下服務id不可重復!
server-id=1
  • 從節點可以忽略: log-bin=mysql-bin
    因為,從節點只需要讀取,主節點的 二進制日志 即可!

主節點 測驗連接:

在這里插入圖片描述

  • 查看二進制日志檔案:檔案名 檔案位置...

設定:主節點配置資訊

#創建同步賬戶以及授權
CREATE USER 'wf'@'%' IDENTIFIED BY 'wf'; 
#配置權限, 讀庫讀表的操作 *.* 
GRANT REPLICATION SLAVE ON *.* TO 'wf'@'%';
#重繪MySQL的系統權限相關表  
FLUSH PRIVILEGES; 

#查看master狀態 
SHOW MASTER STATUS; 
#查看二進制日志相關的配置項 
SHOW GLOBAL VARIABLES LIKE 'binlog%'; 
#查看server相關的配置項 
SHOW GLOBAL VARIABLES LIKE 'server%';

注意:

  • 出現 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and錯誤解決方案,在my.cnf組態檔中設定
    sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO
    ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’

搭建從節點 Slave01:

  • 基本與創建Master 無區別!
##創建目錄,創建資料卷,撰寫my.cnf 
[root@hadoop1 mysql]# mkdir -p /data/mysql/slave01
[root@hadoop1 slave01]# cd /data/mysql/slave01
[root@hadoop1 slave01]# mkdir conf data
[root@hadoop1 slave01]# chmod 777 * -R
[root@hadoop1 slave01]# cd /data/mysql/slave01/conf
[root@hadoop1 conf]# vi my.cnf

#創建容器
[root@hadoop1 conf]# docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v /data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root  percona:5.7.23
3ac806767c09ce3adb6c468f45f61020afeef701cd0162e439dcae01a040338a
#啟動容器
[root@hadoop1 conf]# docker start percona-slave01 && docker logs -f percona-slave01
percona-slave01
  • slave的my.cnf 檔案 不需要配置,log-bin=mysql-bin開啟二進制日志!

從節點測驗:

在這里插入圖片描述

  • 根據個人實際情況進行更改!
#設定master相關資訊 
CHANGE MASTER TO 
MASTER_HOST='192.168.1.110',		#注意埠 
MASTER_USER='wf', 
MASTER_PASSWORD='wf', 
MASTER_PORT=3316, 			#主節點的埠
MASTER_LOG_FILE='mysql-bin.000004', 	#指定要監聽主節點的 二級制日志檔案;
MASTER_LOG_POS=154;			#二級制檔案位置

#啟動同步 
START SLAVE; 
#查看master狀態 
SHOW SLAVE STATUS; 	#(Waiting for master to send event):等待主服務器發送事件
#錯誤:
#ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread; run STOP SLAV
-- mysql從機上已經進行過系結主機,如果繼續系結需要先進行重置,
#停止已經啟動的系結
STOP SLAVE
#重置系結
RESET MASTER

測驗:

  • 此時為了檢測主從是否同步,備份…
    直接在主節點上創建一個庫/表 新增資料…
    在查看從機上是否同步...

在這里插入圖片描述

  • ok,驗證成功,主機發生更改從機,立刻就會同步資料!

Mysql 高可用,主從備份總結:

  • Mysql主從備份…總的來說并不難, 本人使用的是Docker進行本機搭建的…
  • 實際開發中,其實也就是相當于 安裝兩個資料庫 一個當Master 一個當Slave
  • 主機開啟日志記錄 從機實時開啟一個執行緒讀取主機的執行SQL 同步執行資料…

Mycat + MySql 讀寫分離

讀寫分離 原理

在這里插入圖片描述

  • 我們一般應用對資料庫而言都是 “讀多寫少” 也就說對資料庫讀取資料的壓力比較大

  • 解決方案:
    采用資料庫集群的方案:
    其中一個是主庫,負責寫入資料,我們稱之為:寫庫;
    其它都是從庫,負責讀取資料,我們稱之為: 讀庫; 一主n從 主從互備 讀寫分離架構!
    那么,對我們的要求是: 1. 讀庫和寫庫的資料一致 2. 寫資料必須寫到寫庫 3. 讀資料必須到讀庫

  • 👈圖:
    資料庫從之前的單節點變為多節點提供服務
      主節點資料,同步到從節點資料
     應用程式需要連接到2個資料庫節點,并且在程式內部實作判斷讀寫操作
    這種架構存在2個問題:
     應用程式需要連接到多個節點,對應用程式而言開發變得復雜 可以通過中間件解決
     如果在程式內部實作,可使用Spring的AOP功能實作

  • 👉圖:
    中間件解決: 讀寫分離
     應用程式只需要連接到中間件即可,無需連接多個資料庫節點
     應用程式無需區分讀寫操作,對中間件直接進行讀寫操作即可
     在中間件中進行區分讀寫操作,讀發送到從節點,寫發送到主節點 一切交給中間件操作,無需關心資料庫


Mycat 學習

  • 需要的朋友可以了解一下Mycat

環境準備

  • Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz
    Linux 安裝tar包

環境搭建:

  • Mycat安裝非常簡單,Windwos / Linux 基本解壓即用, 需要了解注意的是它的 組態檔
    rule 設定分片規則
    schema 設定分片邏輯庫資訊…
    server 設定 Mycat 用戶/密碼
#查看本人的軟體目錄
[root@hadoop1 ~]# cd /usr/local
[root@hadoop1 local]# ls
apache-phoenix-5.0.0-HBase-2.0-bin  elasticsearch        haproxy-1-9-3.tar  kafka_2.10-0.10.2.1        MR-1.0-SNAPSHOT.jar  Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz  percona-5-7-23.tar
apache-tomcat-7.0.85                elasticsearch-6.2.4  hbase-2.1.0        kibana-6.2.4-linux-x86_64  mycat                mysql                                                     wordcount.txt
apollo                              hadoop               jdk1.8.0_171       logstash-6.3.0             mycat2               partition.csv                                             zookeeper-3.4.13
#Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz 壓縮包..
#Mycat Mycat2(后面準備搭建集群)

#啟動Mycat
[root@hadoop1 local]# cd /usr/local/mycat
[root@hadoop1 mycat]# cd bin
[root@hadoop1 bin]# ls
dataMigrate.sh  init_zk_data.sh  mycat  rehash.sh  startup_nowrap.sh  wrapper-linux-ppc-64  wrapper-linux-x86-32  wrapper-linux-x86-64

#Mycat命令 ./mycat { console | start啟動 | stop停止 | restart | status運行狀態 | dump }
[root@hadoop1 bin]# ./mycat start
Starting Mycat-server...
#查看服務行程是否啟動
[root@hadoop1 bin]# jps
2721 WrapperSimpleApp
2742 Jps
  • Linux解壓命令: tar -zxvf 要解壓的檔案

注意:

  • Mycat 啟動,報錯不易被發現,可以查看log,進行查看.

組態檔:

  • 這里提供的并不完善,而是重要的要修改的地方…
  • 而且,Linux中存在,中文字符編碼的問題 不建議手動在Linux中進行修改撰寫,
    可以直接通過工具對檔案直接上傳覆寫運行…

在這里插入圖片描述

  • 詳細請關注 https://blog.csdn.net/qq_45542380/article/details/115738373?spm=1001.2014.3001.5501

rule.xml

	<tableRule name="mod-long">
		<rule>
			<columns>id</columns>
			<algorithm>mod-long</algorithm>
		</rule>
	</tableRule>
	<!-- .... -->
	
	
	<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
		<!-- how many data nodes -->
		<property name="count">1</property>		<!-- 這里目前是一個Mysql主從架構, 根據多少分片規則而定!等下更改為2個  -->
	</function>
	<!-- .... -->

schema.xml

<?xml version="1.0"?> 
<!DOCTYPE mycat:schema SYSTEM "schema.dtd"> 
<mycat:schema xmlns:mycat="http://io.mycat/"> 

<schema name="wf" checkSQLschema="false" sqlMaxLimit="100"> 
    <table name="wsm" dataNode="dn1" rule="mod-long" />
    <!-- <table name="wsm" dataNode="dn1,dn2" rule="mod-long" />  -->
</schema> 

<dataNode name="dn1" dataHost="cluster1" database="wsm" />
<!--<dataNode name="dn2" dataHost="cluster2" database="wsm" /> -->

<dataHost name="cluster1" maxCon="1000" minCon="10" balance="3" writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> 
    <heartbeat>select user()</heartbeat>    
    <writeHost host="W1" url="192.168.1.110:3306" user="root" password="root"> 
        <readHost host="W1R1" url="192.168.1.110:3307" user="root" password="root" />   
    </writeHost> 
</dataHost> 

<!-- <dataHost name="cluster2" maxCon="1000" minCon="10" balance="3" writeType="1" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> 
    <heartbeat>select user()</heartbeat> 
    <writeHost host="W1" url="192.168.1.110:3316" user="root" password="root"> 
        <readHost host="W1R1" url="192.168.1.110:3317" user="root" password="root" /> 
    </writeHost> 
</dataHost> -->
</mycat:schema> 
  • 注釋的內容是 資料庫分片的內容
    邏輯庫——邏輯表表名要與資料庫匹配——資料節點database指定對應的資料庫——資料庫 主機配置
  • 注意:邏輯表名要與實際相同!database指定的數節點要與資料庫相同! 詳情參考上面連接學習!

server.xml

  • 配置Mycat用戶密碼 連接的邏輯表
<user name="wf" defaultAccount="true"> 
    <property name="password">wf</property> 
    <property name="schemas">wf</property> 
</user> 

測驗:

在這里插入圖片描述

  • 連接成功,并可以操作資料庫wsm

Mycat + Mysql多個 資料分片:

資料分片:

什么是資料庫分片

  • 簡單來說,就是指通過某種特定的條件
  • 將我們存放在同一個資料庫中的資料分散存放到多個資料庫主機上,以達到分散單臺設備負載的效果,

三種分片模式垂直切分 水平切分 混合切分

在這里插入圖片描述

在次搭建一套Mysql 主從架構 集群:

重復操作…不詳細解釋了

  • 注意 更改埠,容器名!

Master02

#創建目錄 
mkdir -p /data/mysql/master02
cd /data/mysql/master02
cd /data/mysql/master02
chmod 777 * -R

#創建組態檔 
cd /data/mysql/master02/conf 
vim my.cnf

#創建容器 
docker create --name percona-master02 -v /data/mysql/master02/data:/var/lib/mysql -v /data/mysql/master02/conf:/etc/my.cnf.d -p 3316:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23 
#啟動 
docker start percona-master02 && docker logs -f percona-master02
  • 別忘了,Maste節點要開啟日志my.cnf 設定用戶,分片權限

在這里插入圖片描述

Slave02

mkdir /data/mysql/slave02
cd /data/mysql/slave02
mkdir conf data 
chmod 777 * -R 

#創建組態檔 
cd /data/mysql/slave02/conf
vim my.cnf 

#創建容器 
docker create --name percona-slave02 -v /data/mysql/slave02/data:/var/lib/mysql -v /data/mysql/slave02/conf:/etc/my.cnf.d -p 3317:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
#啟動
docker start percona-slave02 && docker logs -f percona-slave02
  • my.cnf 別忘了

查看所有運行的容器:

[root@hadoop1 bin]# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED        STATUS             PORTS                                       NAMES
a2f509b44da7   percona:5.7.23   "/docker-entrypoint.…"   18 hours ago   Up 15 seconds      0.0.0.0:3317->3306/tcp, :::3317->3306/tcp   percona-slave02
1d03a6315278   percona:5.7.23   "/docker-entrypoint.…"   18 hours ago   Up 4 minutes       0.0.0.0:3316->3306/tcp, :::3316->3306/tcp   percona-master02
3ac806767c09   percona:5.7.23   "/docker-entrypoint.…"   21 hours ago   Up About an hour   0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   percona-slave01
cde032cb98a0   percona:5.7.23   "/docker-entrypoint.…"   21 hours ago   Up About an hour   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   percona-master01

在這里插入圖片描述

測驗:

在這里插入圖片描述

  • Mycat 是對 master01 和 master02 的 匯總
  • 使用時候只需要,指定Mycat的ip 埠進行,增刪改查 mycat內部會對資料進行分片,讀寫分離

haproxy + Mycat中間件集群:

  • mycat做了資料庫的代理,在高并發的情況下,必然也會面臨單節點性能問題,所以需要部署多個
    不然,萬一它掛了,下面的Mysql服務即使沒掛,也呼叫不了了!

在這里插入圖片描述

haproxy

在這里插入圖片描述

環境搭建:

Mycat2 創建:

  • 直接copy上一個服務因為同一個ip 下埠要不同 更改一下埠配置即可:
[root@hadoop1 local]# ls
apache-phoenix-5.0.0-HBase-2.0-bin  elasticsearch        haproxy-1-9-3.tar  kafka_2.10-0.10.2.1        MR-1.0-SNAPSHOT.jar  Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz  percona-5-7-23.tar
apache-tomcat-7.0.85                elasticsearch-6.2.4  hbase-2.1.0        kibana-6.2.4-linux-x86_64  mycat                mysql                                                     wordcount.txt
apollo                              hadoop               jdk1.8.0_171       logstash-6.3.0             mycat2               partition.csv                                             zookeeper-3.4.13
[root@hadoop1 local]# 

搭建多節點mycat: 直接copy 一個更改配置!
cp mycat mycat2 -R 
vim wrapper.conf 
	#設定jmx埠
	wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1982(默認)  1985(修改) 

vim server.xml
	#設定服務埠以及管理埠 
	<property name="serverPort">8066/ 8067</property>   
	<property name="managerPort">9066 / 9067</property> 
#重新啟動服務

在這里插入圖片描述

haproxy 安裝:

#拉取鏡像 
docker pull haproxy:1.9.3

#創建資料卷  創建容器...
[root@hadoop1 bin]# mkdir -p /haoke/haproxy 
[root@hadoop1 bin]# docker create --name haproxy --net host -v /haoke/haproxy:/usr/local/etc/haproxy haproxy:1.9.3 
b6ab17da4aaa0ef43a4a5253ab23b46366db9873e0b03a307291f0086613c820

#編輯組態檔
[root@hadoop1 bin]# vim /haoke/haproxy/haproxy.cfg
#啟動容器...列印日志
[root@hadoop1 bin]# docker restart haproxy && docker logs -f haproxy
haproxy
[WARNING] 109/153326 (1) : config : 'option forwardfor' ignored for proxy 'proxy-mysql' as it requires HTTP mode.
[NOTICE] 109/153326 (1) : New worker #1 (7) forked
[WARNING] 109/153328 (7) : Server proxy-mysql/mycat_1 is DOWN, reason: Layer4 timeout, check duration: 2000ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[WARNING] 109/153329 (7) : Server proxy-mysql/mycat_2 is DOWN, reason: Layer4 timeout, check duration: 2023ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
[ALERT] 109/153329 (7) : proxy 'proxy-mysql' has no server available!


#查看運行容器  運行成功!
[root@hadoop1 bin]# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS                                       NAMES
b6ab17da4aaa   haproxy:1.9.3    "/docker-entrypoint.…"   2 minutes ago    Up 17 seconds                                               haproxy
a2f509b44da7   percona:5.7.23   "/docker-entrypoint.…"   39 minutes ago   Up 39 minutes   0.0.0.0:3317->3306/tcp, :::3317->3306/tcp   percona-slave02

haproxy 組態檔

vim /haoke/haproxy/haproxy.cfg

#創建檔案本人目前只是應用就不一一解釋:
vim /haoke/haproxy/haproxy.cfg 

#日志管理 
# maxconn 最大連接數4000
global
	log 127.0.0.1 local2 
	maxconn 4000 
	daemon

#支持http … 
defaults 
	mode http 
	log global 
	option httplog 
	option dontlognull 
	option http-server-close 
	option forwardfor except 127.0.0.0/8 
	option redispatch 
	retries 3 
	timeout http-request 10s 
	timeout queue 1m 
	timeout connect 10s 
	timeout client 1m 
	timeout server 1m 
	timeout http-keep-alive 10s 
	timeout check 10s 
	maxconn 3000 

#自帶的一套ur 管理頁面監聽web模式4001.. 賬戶密碼	
listen admin_stats 
	bind 0.0.0.0:4001 
	mode http 
	stats uri /dbs 
	stats realm Global\ statistics 
	stats auth admin:admin123 

#監聽服務 4002	指定監聽mycat配置,監聽地址
#balance roundrobin 輪詢模式.. server 兩個mycat服務
listen proxy-mysql 
	bind 0.0.0.0:4002 
	mode tcp 
	balance roundrobin 
	option tcplog 
	server mycat_1 192.168.1.110:8066 check port 8066 maxconn 2000 
	server mycat_2 192.168.1.110:8067 check port 8067 maxconn 2000
  • Linux 建議洗掉中文...

在這里插入圖片描述

  • 從頁面中,可以看出已經存在了2個mycat代理服務,
  • 通過mysql客戶端進行測驗:
    在這里插入圖片描述
  • 因為,害怕 單個Mycat掛調,影響服務正常使用,對Mycat進行集群架構! 但就,出現了多個ip
  • haproxy 就是對Mycat集群Ip 進行的匯總…

有人說 haproxy掛了怎么辦?

  • haproxy 不會掛!😒
  • 它主要是,做代理服務器,瀏覽轉發而不做任務… 一般情況下幾乎不可能,如果出現意味抓緊喊運維!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/278837.html

標籤:其他

上一篇:什么是zookeeper及其使用場景

下一篇:SpringBoot集成Redisson實作延遲佇列

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more