使用 MyCat 實現 MySQL 主從讀寫分離

文章目錄

  • 使用 MyCat 實現 MySQL 主從讀寫分離完整指南
    • 一、MySQL 讀寫分離基礎概述
      • 1.1 讀寫分離工作原理
      • 1.2 為什么需要讀寫分離
      • 1.3 讀寫分離的兩種實現方式
        • 主流讀寫分離中間件對比
    • 二、MyCat 中間件簡介
      • 2.1 MyCat 核心功能
      • 2.2 MyCat 適用場景
    • 三、環境準備與 MyCat 安裝
      • 3.1 前提:安裝 JDK(mycat服務器192.168.100.200)
      • 3.2 MyCat 下載與解壓
      • 3.3 創建 MyCat 專用用戶與權限配置
      • 3.4 MyCat 目錄結構說明
    • 四、MyCat 核心配置(讀寫分離關鍵)
      • 4.1 配置 MyCat 環境變量
      • 4.2 配置用戶授權(server.xml)
      • 4.3 配置邏輯庫與主從路由(schema.xml)
        • 4.3.1 配置模板(適配“1主2從”架構)
        • 4.3.2 核心參數詳解(讀寫分離關鍵)
    • 五、MySQL 主從復制配置(讀寫分離前提)
      • 5.1 前提:主從庫環境準備
      • 5.2 主庫(Master)配置
      • 5.3 從庫(Slave1/Slave2)配置
    • 六、MyCat 啟動與讀寫分離測試
      • 6.1 啟動 MyCat
      • 6.2 讀寫分離測試
        • 6.2.1 測試讀操作(僅從庫接收,從庫負載均衡)
        • 6.2.2 測試寫操作(僅主庫接收)
    • 六、總結

使用 MyCat 實現 MySQL 主從讀寫分離完整指南

一、MySQL 讀寫分離基礎概述

在高并發業務場景中,單臺 MySQL 數據庫難以同時承載大量讀寫請求。讀寫分離通過“主庫寫、從庫讀”的分工,結合主從復制保障數據一致性,成為緩解數據庫壓力的核心方案。

1.1 讀寫分離工作原理

讀寫分離的核心是“請求路由”與“數據同步”的結合,具體流程如下:

  1. 角色分工
    • 主庫(Master):僅處理寫操作(INSERT/UPDATE/DELETE/DDL),確保數據變更的唯一性和一致性;
    • 從庫(Slave):僅處理讀操作(SELECT),分擔主庫的讀請求壓力(如商品查詢、數據統計)。
  2. 數據同步:依賴 MySQL 主從復制機制——主庫將寫操作記錄到“二進制日志(Binary Log)”,從庫通過 IO 線程拉取日志并寫入“中繼日志(Relay Log)”,再通過 SQL 線程回放日志,實現與主庫數據同步。
  3. 路由轉發:通過中間件(如 MyCat)或應用層判斷請求類型,自動將寫請求轉發到主庫,讀請求分發到從庫(支持負載均衡)。

1.2 為什么需要讀寫分離

  1. 突破單庫性能瓶頸:多數業務中讀請求占比超 80%(如電商詳情頁、新聞列表),將讀請求分流到從庫,可顯著降低主庫負載;
  2. 緩解鎖爭用:寫操作會加排他鎖(X 鎖),讀操作加共享鎖(S 鎖),分離后避免“寫鎖阻塞讀、讀鎖阻塞寫”的問題;
  3. 優化讀性能:從庫可針對性優化(如啟用查詢緩存、使用 MyISAM 引擎),進一步提升讀響應速度;
  4. 提高可用性:主庫故障時,從庫可切換為新主庫,減少業務中斷時間(需配合故障切換機制)。

1.3 讀寫分離的兩種實現方式

讀寫分離主要通過“應用層”或“中間件層”實現,MyCat 屬于中間件層方案,兩種方式對比如下:

實現方式核心邏輯優點缺點
應用程序層實現在代碼中判斷 SQL 類型(寫請求→主庫,讀請求→從庫),直接連接數據庫無中間件開銷,性能損耗低;部署簡單代碼耦合度高,多語言應用需重復開發;架構調整(如增減從庫)需修改代碼
中間件層實現在客戶端與數據庫間部署代理(如 MyCat),由代理統一解析請求、轉發路由對應用透明(無需改代碼);支持分庫分表、故障切換、負載均衡增加系統復雜度;代理層需優化配置以避免成為新瓶頸
主流讀寫分離中間件對比
中間件開發背景支持事務支持存儲過程核心優勢適用場景
MyCat開源社區(基于 Cobar 二次開發)支持支持社區活躍、功能全面(讀寫分離+分庫分表)、文檔豐富中小到大型企業,需靈活擴展的場景
Cobar阿里巴巴 B2B 團隊支持支持早期成熟方案,穩定性強已停更,僅適合維護 legacy 系統
OneProxy商業軟件支持支持高并發穩定性好,提供商業支持對穩定性要求高的付費場景
Amoeba阿里陳思儒(個人開發)不支持不支持輕量易用,部署簡單小型讀密集場景,無復雜事務需求

二、MyCat 中間件簡介

MyCat 是開源企業級數據庫中間件,定位為“MySQL 集群的統一入口”,通過封裝底層數據庫拓撲,為應用提供透明的“邏輯庫”訪問方式,核心能力聚焦于讀寫分離與分庫分表。

2.1 MyCat 核心功能

  1. 讀寫分離:自動路由寫請求到主庫、讀請求到從庫,支持多種讀負載均衡策略;
  2. 分庫分表:將大表按規則(如哈希、范圍)拆分到多個數據庫,解決單庫數據量過大問題;
  3. 事務支持:兼容 MySQL 事務特性,保障 ACID 一致性;
  4. 高可用:支持主從故障自動切換,減少人工干預;
  5. 擴展性:可融合內存緩存、NoSQL、HDFS 等技術,適配復雜數據場景。

2.2 MyCat 適用場景

  • 讀請求密集的業務(如電商、新聞、社交);
  • 數據量較大,需分庫分表擴展的場景;
  • 多語言應用或微服務架構,需統一數據庫訪問入口;
  • 需降低應用與數據庫耦合度,簡化架構調整的場景。

三、環境準備與 MyCat 安裝

MyCat 基于 Java 開發,需先配置 JDK 環境,再完成安裝與目錄初始化(以 CentOS 7.9、MyCat 1.6 為例)。
1.整個實驗的環境 以及服務器信息

  • 環境部署:CentOS 7.9
  • 虛擬機服務環境:
    • Master服務器:192.168.100.129,部署 mysql 5.7
    • Slave1服務器:192.168.100.140,部署 mysql 5.7
    • Slave2服務器:192.168.100.150,部署 mysql 5.7
    • MyCat服務器:192.168.100.200(預備機器),部署 jdk-8u191-linux + MyCat中間件
      2.先完成master,slave1,slave2的主從復制配置,詳情請見

3.1 前提:安裝 JDK(mycat服務器192.168.100.200)

MyCat 依賴 Java 運行環境,推薦 JDK 1.8,linux自帶的open jdk 1.8也行。

  1. 下載并解壓 JDK:
    # 下載 JDK 1.8(可從 Oracle 官網或國內鏡像獲取)
    wget https://repo.huaweicloud.com/java/jdk/8u191-b12/jdk-8u191-linux-x64.tar.gz
    # 解壓到 /usr/java 目錄
    mkdir -p /usr/java
    tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/java/
    
  2. 配置 JDK 環境變量:
    vim /etc/profile.d/java.sh
    # 添加以下內容
    export JAVA_HOME=/usr/java/jdk1.8.0_191
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
    # 生效環境變量
    source /etc/profile.d/java.sh
    # 驗證安裝(顯示 JDK 版本即成功)
    java -version
    

3.2 MyCat 下載與解壓

  1. 下載 MyCat 穩定版(1.6 RELEASE):
    # 從 GitHub 下載(或訪問 MyCat 官網:http://www.mycat.org.cn/)
    wget https://github.com/MyCATApache/Mycat-download/blob/master/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gzrz    #本地上傳mycat壓縮包(推薦)
    
  2. 解壓到 /usr/local 目錄:
    tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
    # 進入 MyCat 目錄,確認結構
    cd /usr/local/mycat
    ls  # 應顯示 bin、conf、lib、logs 等目錄
    

3.3 創建 MyCat 專用用戶與權限配置

為避免使用 root 運行中間件,創建專用用戶并授權:

# 創建 mycat 用戶
useradd mycat
# 設置密碼(123)
passwd mycat    #密碼為123
# 授權 MyCat 目錄權限給 mycat 用戶
chown -R mycat.mycat /usr/local/mycat

3.4 MyCat 目錄結構說明

目錄路徑核心作用
/usr/local/mycat/bin可執行文件:mycat(啟動/停止/重啟腳本)、wrapper(底層啟動依賴)
/usr/local/mycat/conf配置文件:server.xml(用戶授權)、schema.xml(邏輯庫與路由)、rule.xml(分片規則)
/usr/local/mycat/lib依賴 JAR 包:MySQL 驅動、MyCat 核心組件等
/usr/local/mycat/logs日志文件:wrapper.log(啟動日志,排查啟動故障)、mycat.log(業務日志)

四、MyCat 核心配置(讀寫分離關鍵)

MyCat 實現讀寫分離的核心是“定義邏輯庫→綁定數據節點→配置主從路由”,關鍵配置文件為 server.xml(用戶授權)和 schema.xml(路由規則)。

4.1 配置 MyCat 環境變量

為方便全局調用 MyCat 命令,配置環境變量:

vim /etc/profile.d/mycat.sh
# 添加以下內容
export MYCAT_HOME=/usr/local/mycat
export PATH=$MYCAT_HOME/bin:$PATH
# 生效環境變量
source /etc/profile.d/mycat.sh

4.2 配置用戶授權(server.xml)

定義客戶端訪問 MyCat 的賬號、密碼及關聯的“邏輯庫”(邏輯庫是 MyCat 封裝的虛擬庫,對應底層物理庫):

vim /usr/local/mycat/conf/server.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/"><!-- 管理員賬號:擁有讀寫權限 --><user name="mycat"><property name="password">123</property>  <!-- 密碼 --><property name="schemas">ceshi</property>       <!-- 關聯邏輯庫名稱(需與 schema.xml 一致),必須是關聯的主從庫里的庫。 --></user><!-- 普通用戶:僅只讀權限 --><user name="user"><property name="password">user</property><property name="schemas">ceshi</property><property name="readOnly">true</property>    <!-- 只讀配置,禁止寫操作 --></user>
</mycat:server>

4.3 配置邏輯庫與主從路由(schema.xml)

schema.xml 是讀寫分離的核心配置文件,需定義“邏輯庫→數據節點→主從數據庫”的映射關系,并指定讀寫策略。

4.3.1 配置模板(適配“1主2從”架構)

1.首先進行源文件備份

mv /usr/local/mycat/conf/schema.xml  /usr/local/mycat/conf/schema.xml.bak
vim /usr/local/mycat/conf/schema.xml
下方內容直接復制粘貼,ip改為自己的機器即可。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="ceshi"         checkSQLschema="false"  sqlMaxLimit="100"      dataNode="dn1">         </schema><dataNode name="dn1"        dataHost="dthost" database="ceshi"/>   <dataHost name="dthost"maxCon="500"      minCon="10"       balance="1"       writeType="0"     dbType="mysql"    dbDriver="native" switchType="-1"   slaveThreshold="100"> <heartbeat>select 1</heartbeat><writeHost host="master"  url="192.168.100.139:3306"  user="mycat"   password="123"> <readHost host="slave1"  url="192.168.100.128:3306"  user="mycat"password="123"/><readHost host="slave2"  url="192.168.100.130:3306"  user="mycat"password="123"/></writeHost></dataHost>
</mycat:schema>
4.3.2 核心參數詳解(讀寫分離關鍵)
參數名取值與含義推薦配置
balance讀負載均衡策略:
- 0:不分離,所有讀請求走寫節點;
- 1:所有從庫+備用主庫參與讀負載;
- 2:讀請求隨機分發到主庫+從庫;
- 3:讀請求僅走從庫,主庫不承擔讀
1(均衡分擔讀壓力)
writeType寫策略:
- 0:所有寫請求走第一個 writeHost(主庫);
- 1:寫請求隨機走 writeHost(1.5+ 已廢棄)
0(主庫唯一寫節點)
switchType主從切換策略:
- -1:不自動切換,需手動干預;
- 1:默認自動切換(基于心跳檢測);
- 2:基于主從同步狀態切換(心跳用 show slave status);
- 3:基于 MySQL MGR 集群切換
-1(手動切換更安全,避免誤切)

五、MySQL 主從復制配置(讀寫分離前提)

MyCat 讀寫分離依賴 MySQL 主從復制(確保從庫數據與主庫一致),需先完成“1主2從”的主從配置(以 MySQL 5.7 為例)。

5.1 前提:主從庫環境準備

  • 主庫(Master):IP 192.168.100.129,已安裝 MySQL 5.7;
  • 從庫1(Slave1):IP 192.168.100.140,已安裝 MySQL 5.7;
  • 從庫2(Slave2):IP 192.168.100.150,已安裝 MySQL 5.7;
  • 所有節點關閉防火墻與 SELinux:
    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    
    主從復制詳情見主從復制

5.2 主庫(Master)配置

以下均為主從復制配置完成后的設置:

mysql> create database ceshi;
mysql> use database;
mysql> create table test (id int(10),name varchar(10),address varchar(20));mysql> grant all privileges on *.* to 'mycat'@'%' identified by '123';
mysql> flush privileges;

5.3 從庫(Slave1/Slave2)配置

以下均為主從復制配置完成后的設置:

mysql> grant all on db.* to 'mycat'@'%' identified by '123';

六、MyCat 啟動與讀寫分離測試

完成 MyCat 與 MySQL 主從配置后,啟動 MyCat 并驗證讀寫分離效果。

6.1 啟動 MyCat

  1. 啟動 MyCat:
    cd /usr/local/mycat/bin
    ./mycat start  # 啟動;停止用 mycat stop,重啟用 mycat restart
    
  2. 驗證啟動狀態:
    # 查看 MyCat 進程(默認端口 8066,管理端口 9066)
    netstat -tnlp | grep 8066
    ./mycat status        #顯示running即可。
    # 查看啟動日志(排查故障,如端口占用、配置錯誤)
    cat /usr/local/mycat/logs/wrapper.log(可不查)
    

6.2 讀寫分離測試

測試需通過“客戶端連接 MyCat”而非直接連接 MySQL,驗證“寫走主庫、讀走從庫”。

6.2.1 測試讀操作(僅從庫接收,從庫負載均衡)

在測試讀實驗期間,后臺的主從復制必須正常啟動,不能關閉

  1. 客戶端連接 MyCat(在第四臺機器192.168.100.200):

    yum install -y mariadb-server mariadb      #mycat只是中間件,需要借助客戶端工具才能提供數據交互終端。
    systemctl start mariadb.service 
    
  2. 切換到master庫ceshi,插入數據:

    mysql> use ceshi;# 插入數據
    mysql> insert into test values('3','wangwu','this_is_master');
    
  3. slave1從屬機

    mysql> use ceshi;
    mysql> insert into test values('1','zhangsan','this_is_slave1');
    mysql> select * from test
    
  4. slave2從屬機

    mysql> use ceshi;
    mysql> insert into test values('2','lisi','this_is_slave2');
    mysql> select * from test
    
  5. 在mycat機器上

    #格式:mysql -uMyCat賬號 -p密碼 -hMyCatIP -PMyCat端口(默認 8066)
    mysql -umycat -p123 -h127.0.0.1 -P8066  #  MyCat 部署在 192.168.100.200
    mysql> show databases;     #顯示ceshi庫
    mysql> use ceshi;          
    mysql> show tables;        #顯示test表
    mysql> select * from test;   #交替顯示slave1,slave2的表,即為成功。
    
  6. 觀察結果
    在 MyCat 客戶端(192.168.100.200 機器)多次執行 select * from test; 后,可觀察到以下核心現象:

  • 數據來源僅為從庫:執行查詢時,始終不會出現主庫(master)中插入的記錄 (‘3’,‘wangwu’,‘this_is_master’),證明讀操作未路由到主庫,僅從從庫獲取數據;
  • 從庫負載均衡生效:多次執行查詢會交替返回兩個從庫的獨有數據:
    交替出現的結果表明 MyCat 已實現從庫間的讀請求負載均衡,符合 “讀走從庫” 的讀寫分離預期。
6.2.2 測試寫操作(僅主庫接收)
  1. 暫停從庫主從同步(僅測試用,模擬從庫數據差異):
    • 連接 Slave1(192.168.100.140):
      mysql> stop slave;  #防止主機的數據被同步到從屬機。
      
    • 連接 Slave2(192.168.100.150):
      mysql> stop slave;  #防止主機的數據被同步到從屬機。
      
  2. MyCat服務器,執行寫操作:
    mysql> insert into test values('4','qianqi','this_is_client');
    
  3. 觀察結果:
    在 MyCat 客戶端執行 insert into test values(‘4’,‘qianqi’,‘this_is_client’); 后,分別登錄主庫(master)、slave1、slave2 查看 test 表,可觀察到以下對比現象:
  • 主庫(master)數據變化
    登錄主庫執行 select * from ceshi.test;,能看到新增記錄 (‘4’,‘qianqi’,‘this_is_client’),同時保留主庫原有記錄 (‘3’,‘wangwu’,‘this_is_master’),證明寫操作已路由到主庫;
    從庫(slave1、slave2)數據無變化:

結合 “已暫停主從同步” 的前提,從庫未出現新增數據,直接證明寫操作未路由到任何從庫,僅主庫接收寫請求,符合 “寫走主庫” 的讀寫分離預期。

六、總結

  1. 核心依賴:MyCat 讀寫分離的前提是 MySQL 主從復制,需確保從庫 Slave_IO_RunningSlave_SQL_Running 均為 Yes
  2. 關鍵配置:MyCat 的 schema.xml 中,balance(讀負載)、writeType(寫路由)、switchType(故障切換)是決定讀寫分離效果的核心參數;
  3. 價值:MyCat 為應用提供透明的數據庫訪問入口,無需修改代碼即可實現讀寫分離,同時支持擴展分庫分表,是企業級 MySQL 架構的重要中間件;
  4. 注意事項:生產環境需關閉 validate-password=OFF,配置強密碼;switchType 建議設為 -1(手動切換),避免主從延遲導致的切換異常;定期監控主從延遲與 MyCat 連接池狀態。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/100425.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/100425.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/100425.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

物聯網傳感器檢測實驗

/*------------------------------------------------------------------------------ * @文件名 : handle * @描述 : 用戶處理函數 * @作者 : 物聯網項目組 * @日期 : 2023/04/01 * @版本 : V0.0.2 *****************************…

什么是dirsearch、xray、durpsuite、sqlmap?

你提到的 dirsearch、xray、durpsuite&#xff08;可能為筆誤&#xff0c;推測是 ??Burp Suite??&#xff09;和 sqlmap 均為網絡安全領域中常用的工具&#xff0c;主要用于 Web 應用的安全測試、漏洞檢測或滲透測試。以下分別詳細說明&#xff1a;??1. dirsearch????…

lamp腳本部署

#!/bin/bash #關閉防火墻和selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 #配置yum網絡源 echo “正在配置yum倉庫” rm -rf /etc/yum.repos.d/* wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &am…

Redis Hash數據類型深度解析:從命令、原理到實戰場景

前言 在Redis的眾多數據結構中&#xff0c;Hash&#xff08;哈希&#xff09;類型占據著至關重要的地位。Redis本身就是一個高性能的鍵值&#xff08;Key-Value&#xff09;數據庫&#xff0c;其底層的鍵值對便是通過哈希方式組織的。而Hash數據類型則更進一步&#xff0c;它允…

【C++實戰?】解鎖C++文件操作:從基礎到實戰的進階之路

目錄一、文件操作的基本概念1.1 文件的分類與打開方式1.2 文件流的概念與相關類&#xff08;ifstream、ofstream、fstream&#xff09;1.3 文件操作的基本流程二、文本文件的讀寫實戰2.1 文本文件的打開與關閉2.2 文本文件的寫入操作&#xff08;<< 運算符、write 函數&a…

從C++開始的編程生活(9)——模板初階

前言 本系列文章承接C語言的學習&#xff0c;需要有C語言的基礎才能學會哦~ 第8篇主要講的是有關于C的模板初階。 C才起步&#xff0c;都很簡單&#xff01;&#xff01; 目錄 前言 模板初階 基本語法 函數模板的實例化 顯式實例化的作用 類模板 基本語法 模板初階 模板…

計算機網絡——傳輸層(25王道最新版)

傳輸層傳輸層提供的服務進程 端口號 傳輸層協議之間的關系socket套接字有鏈接 VS 無連接 | 可靠 VS 不可靠UDP數據報及檢驗數據報格式檢驗方法TCPTCP協議的三大階段TCP報文段格式&#xff08;很重要&#xff09;建立連接&#xff08;三次握手&#xff09;&#xff08;超級超級重…

羽毛球地板:從專業運動場景到全民健身市場的技術躍遷與產業重構

在全球體育產業向“專業化大眾化”雙軌并行的趨勢下&#xff0c;羽毛球地板作為運動場景的核心基礎設施&#xff0c;正經歷從單一功能型產品向“性能優化場景適配智能管理”一體化解決方案的轉型。據QYResearch統計&#xff0c;2031年全球羽毛球地板市場規模將達15.95億元&…

R 語言查看類庫源碼的方法

你想查看 getGEO&#xff08;來自 R 語言 GEOquery 包&#xff09;的源碼&#xff0c;這能幫你更好理解其工作原理和數據處理細節。由于 getGEO 是 R 函數&#xff0c;查看方法與 Python 有所不同。下面為你提供幾種主要方法。 方法 適用場景 關鍵命令/操作 在 R 控制臺直接查看…

SQL,posexplode 用法示例

示例1 -- 創建測試數據 WITH test_data AS (SELECT array(apple, banana, cherry) as fruits ) SELECT pos, col FROM test_data LATERAL VIEW posexplode(fruits) t AS pos, col;結果 pos | col ----|------- 0 | apple 1 | banana 2 | cherry示例2 -- 假設有一個用戶表…

數據庫造神計劃第十天---數據庫約束(1)

&#x1f525;個人主頁&#xff1a;尋星探路 &#x1f3ac;作者簡介&#xff1a;Java研發方向學習者 &#x1f4d6;個人專欄&#xff1a;《從青銅到王者&#xff0c;就差這講數據結構&#xff01;&#xff01;&#xff01;》、 《JAVA&#xff08;SE&#xff09;----如此簡單&a…

知微傳感Dkam系列3D相機SDK例程篇:CSharp連接相機及保存數據

序言 寫在前面 本人從事機器視覺細分的3D相機行業。編寫此系列文章主要目的有&#xff1a; 1、便利他人應用相機&#xff0c;本系列文章包含公司所出售相機的SDK的使用例程及詳細注釋&#xff1b;2、促進行業發展及交流。 知微傳感Dkam系列3D相機可以應用于定位分揀、焊接焊縫提…

[筆記] 系統分析師 第十二章 軟件架構設計(分析師主要工作)

文章目錄前言12.1 軟件架構概述12.1.1 軟件架構的意義12.1.2 軟件架構的發展史12.2 軟件架構建模12.3 軟件架構風格12.3.1 軟件架構風格概述12.3.2 數據流體系結構風格1.批處理體系結構風格2.管道-過濾體系結構風格12.3.3 調用/返回體系結構風格1.主程序/子程序風格2.面向對象體…

C++---存儲周期,作用域,鏈接性

在C程序設計中&#xff0c;變量的行為不僅由其類型決定&#xff0c;還由存儲周期&#xff08;變量在內存中存在的時間&#xff09;、作用域&#xff08;變量可被訪問的代碼范圍&#xff09;和鏈接性&#xff08;變量在多文件程序中的可見性&#xff09;共同約束。 一、存儲周期…

基于Python的商品爬取與可視化系統

本系統是基于Python的商品數據爬取與價格分析可視化系統&#xff0c;集成了數據爬取、數據存儲、數據展示和可視化分析等功能。下面介紹一下系統主要功能和技術棧。一、主要功能&#xff1a;1、數據爬取功能 支持淘寶美妝商品數據爬取 可配置搜索關鍵詞和爬取頁數 實時顯示爬取…

聯邦學習過程中,了解清楚影響準確率的因素有哪些也很重要

影響模型準確率的因素有很多&#xff0c;下面是一些主要的因素&#xff0c;它們可以從數據、模型設計、訓練策略以及超參數等多個層面來考慮。1. 學習率作用&#xff1a;學習率直接影響模型的訓練速度、穩定性和最終表現。過高的學習率可能導致模型不收斂或收斂不穩定&#xff…

C# WPF中使用System.Management.Automation類調用Powershell報錯解決辦法

在WPF開發中&#xff0c;需要使用powershell進行自動化管理&#xff0c;以下為開發環境 1、.NET framework 4.7.2 2、VS2019 社區版 使用System.Management.Automation類 遇到的問題&#xff1a; 需要引用 System.Management.Automation類&#xff0c;但是在使用using指令時無法…

從 Pump.fun「直播」看熱點幣的生與死

在加密市場里&#xff0c;熱點就是流量&#xff0c;流量就是價值。最近&#xff0c;Solana 生態的 Pump.fun 推出了「直播」板塊&#xff0c;讓發幣這件事變得像看秀一樣&#xff1a;一個個新幣在鏈上實時登場&#xff0c;社區即時互動&#xff0c;玩家實時下注。這種形式不僅帶…

圖靈完備性:計算理論的基石與無限可能

本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; 1 圖靈完備性的基本概念 圖靈完備性&#xff08;Turing completeness…

HarmonyOS 5.0應用開發——V2裝飾器@once的使用

【高心星出品】 文章目錄V2裝飾器once的使用概念一、核心作用與規則二、適用場景案例V2裝飾器once的使用 概念 在鴻蒙ArkTS開發中&#xff0c;Once裝飾器用于實現子組件僅接受父組件傳遞的初始值&#xff0c;后續父組件數據變化不再同步至子組件。以下是其核心要點&#xff1…