Java高手的30k之路|面試寶典|精通MySQL(二)

分區表

分區類型

MySQL 支持以下幾種表分區類型,這些分區類型有助于優化大型表的管理和查詢性能:

  1. Range Partitioning(范圍分區)
    范圍分區是基于列的值范圍來分配數據的。你可以定義一個或多個列的值區間,數據根據這些區間被分配到不同的分區中。例如,對于一個包含日期的列,你可以按年份范圍來分區,每個年份的數據存儲在一個不同的分區里。范圍分區要求每個分區的范圍不重疊,并且范圍通常是連續的。

  2. List Partitioning(列表分區)
    列表分區類似于范圍分區,但它是基于列值匹配一個預定義的值列表來分配數據。如果列的值與列表中的某個值匹配,則數據會被放入相應的分區。列表分區允許你為不同的值指定不同的分區,而且這些值不必構成連續的范圍。每個分區可以對應一個或多個列表值,但一個值只能屬于一個分區。

  3. Hash Partitioning(哈希分區)
    哈希分區是基于用戶定義的表達式(通常是列的哈希值)來分配數據的。數據根據哈希函數的結果被均勻分布到預先定義數量的分區中。這種方式可以實現數據的隨機分布,適用于無法預測數據分布或者想要簡化管理的情況。哈希分區特別適合于提高數據插入和查詢的性能,特別是在沒有明顯的訪問模式或者范圍查詢不頻繁的情況下。

  4. Key Partitioning(鍵分區)
    鍵分區類似于哈希分區,但它使用MySQL數據庫的內部哈希函數來確定如何將行分配到各個分區。通常,這會基于表的一個或多個列的值來執行。鍵分區的一個關鍵特點是它允許使用表的索引作為分區依據,這使得分區更加靈活。與哈希分區一樣,它也是為了數據分布均勻和提高查詢性能。

請注意,在使用分區時,如果表上有主鍵或唯一鍵約束,那么這些鍵必須包含分區鍵,即不能僅使用主鍵/唯一鍵字段之外的其他字段進行分區。此外,對于某些分區類型,如HASH和KEY分區,在較早的MySQL版本中,分區鍵必須是整數類型或能夠通過某種方式映射到整數的表達式。隨著MySQL的發展,這些限制可能有所變化。

分區設計和優化

對于處理大量數據的應用而言,正確的分區策略可以顯著提升查詢效率和管理便利性。

分區表設計原則
  1. 選擇合適的分區鍵

    • 范圍分區適合時間序列數據,如按日期或時間段劃分。
    • 列表分區適用于固定值集合,如地區ID或用戶類型。
    • 哈希分區適用于隨機分布的數據,保證數據均衡分布。
    • 鍵分區類似哈希分區,但通常基于索引值,適用于不確定查詢條件的場景。
  2. 考慮查詢模式

    • 設計分區時應考慮最常見的查詢條件,確保分區鍵能有效過濾掉不需要的分區,減少I/O操作。
  3. 數據分布

    • 確保數據在各分區間均勻分布,避免數據傾斜,影響性能。
  4. 分區維護

    • 設定合理的分區維護策略,比如定期歸檔舊數據或創建默認分區以捕獲不符合其他分區規則的數據。
  5. 索引策略

    • 在分區鍵上創建索引,特別是對于范圍分區,這有助于優化查詢性能。
性能優化策略
  1. 查詢優化

    • 利用分區剪枝(Partition Pruning),在查詢語句中明確指定分區鍵,讓數據庫引擎直接跳過無關分區。
  2. 并行處理

    • 大型查詢時,數據庫可以并行處理不同分區的數據,加速查詢速度。
  3. 硬件利用

    • 將不同分區放置在不同的物理存儲上,利用多磁盤的I/O能力。
  4. 監控與調整

    • 定期監控分區表的性能,根據負載情況調整分區策略或增加硬件資源。
  5. 合理設置分區大小

    • 分區不宜過小,以免增加管理開銷;也不宜過大,避免查詢效率下降。根據實際數據量和內存大小來決定合適的分區大小。
  6. 避免過度分區

    • 過多的分區可能導致查詢計劃復雜,反而降低性能。找到最優的分區數量很關鍵。
  7. 使用分區索引

    • 在適當的情況下,為分區創建局部索引,而不是全局索引,可以減少索引的大小和維護成本。

復制和高可用

MySQL主從復制(Master-Slave Replication)是一種數據庫管理技術,它允許你將數據從一個MySQL數據庫服務器(稱為“主服務器”或“Master”)自動復制到一個或多個其他MySQL服務器(稱為“從服務器”或“Slave”)。這種機制為數據庫提供了幾個關鍵優勢,包括提高系統的可用性、可伸縮性和容錯能力。下面是主從復制的一些核心概念和流程:

核心組件與流程

  1. 二進制日志(Binary Log):在主服務器上,所有對數據庫的更改(如INSERT、UPDATE、DELETE以及某些SELECT語句)都會被記錄到二進制日志中。這是數據復制的基礎。

  2. 復制用戶與權限:需要在主服務器上創建一個具有REPLICATION SLAVE權限的用戶,以便從服務器能夠連接并獲取二進制日志的更新。

  3. 配置從服務器:在從服務器上,需要配置其連接到主服務器的參數,包括主服務器的地址、復制用戶憑據、以及開始復制的位置(即主服務器二進制日志的文件名和位置)。

  4. 啟動復制:通過在從服務器上執行START SLAVE命令,從服務器開始連接到主服務器,讀取二進制日志,并應用其中的事件到本地數據庫,從而保持數據同步。

復制類型

  • 基于語句的復制(Statement-based Replication, SBR):主服務器記錄引起數據變更的SQL語句,并將這些語句發送給從服務器執行。適用于大多數情況,但可能在某些特定場景下引發數據不一致。

  • 基于行的復制(Row-based Replication, RBR):主服務器記錄數據變更前后的行狀態,而不是執行的SQL語句。這提供了更高的數據一致性,尤其是在執行函數、觸發器或復雜的更新操作時。

  • 混合類型的復制(Mixed-based Replication):MySQL自動在基于語句和基于行的復制之間切換,試圖結合兩者的優勢。

主從復制的作用

  • 讀寫分離:可以將讀操作(SELECT)定向到從服務器,寫操作(INSERT、UPDATE、DELETE)定向到主服務器,以此來分散負載,提高系統的響應速度和處理能力。

  • 故障恢復:如果主服務器發生故障,可以迅速將流量切換到一個已同步的從服務器,以減少服務中斷時間。

  • 數據備份:可以在從服務器上執行備份操作,避免備份時鎖定主數據庫,減少對在線服務的影響。

注意事項

  • 延遲問題:由于網絡延遲、從服務器處理能力等因素,從服務器的數據可能會與主服務器有輕微的時間差。

  • 一致性問題:在特定的復制模式下,需要關注數據的一致性,特別是在事務處理和復雜查詢上。

  • 監控與維護:定期檢查復制狀態,確保復制進程正常運行,及時處理任何復制中斷或延遲問題。

異步復制(Asynchronous Replication)

特點:

  • 默認模式:MySQL默認采用異步復制。
  • 性能優先:主服務器在執行完客戶端提交的事務后立即返回結果,不等待從服務器確認,因此寫入性能高。
  • 數據不保證:存在數據丟失風險,因為在主服務器崩潰前提交的事務可能還沒有傳送到從服務器。
  • 適用場景:對數據一致性要求不高,但對寫入性能有較高要求的場景。

半同步復制(Semisynchronous Replication)

特點:

  • 增強了數據安全性:主服務器在執行完事務后,會等待至少一個從服務器接收到并寫入中繼日志(relay log)后才返回給客戶端,降低了數據丟失的風險。
  • 平衡性能與安全:相比于全同步復制,半同步復制等待的是至少一個從服務器的確認,而不是所有從服務器,這樣既提高了數據的安全性,又不至于像全同步那樣嚴重影響寫入性能。
  • 可配置等待時間:如果在指定時間內(默認約10秒)沒有從服務器確認,主服務器會暫時退回到異步復制模式,以避免阻塞。
  • 適用場景:對數據一致性有一定要求,同時希望盡可能減少數據丟失風險,但又不想犧牲太多寫入性能的場景。

多主復制

多主復制(Multi-Master Replication)是一種MySQL復制模式,它允許多個MySQL服務器相互作為主服務器和從服務器,每個服務器都可以接受寫入操作,并且這些更改會傳播到集群中的其他服務器。這種設置提供了更高的可用性和寫入靈活性,因為客戶端可以向任一主服務器寫入數據,而數據最終會在所有主服務器間同步。

優點:

  1. 高可用性:即使某個主服務器宕機,其他主服務器仍可以繼續處理寫操作,保證服務連續性。
  2. 負載均衡:寫入操作可以在多個主服務器間分配,減輕單點壓力。
  3. 地理分布式寫入:對于地理位置分散的系統,多主復制允許在不同地點進行本地寫入,減少網絡延遲。

挑戰:

  1. 沖突解決:因為多個主服務器都接受寫入,所以可能存在數據沖突。需要有機制來檢測并解決這些沖突,例如使用唯一ID、時間戳或是應用程序級別的邏輯。
  2. 復雜性增加:相較于單一主從結構,多主復制的配置、監控和維護更為復雜。
  3. 數據一致性:維護數據一致性是個挑戰,尤其是在網絡延遲或故障導致的臨時不一致情況下。
實現方式
  • 環形復制:每個服務器既是某個服務器的主服務器,也是另一個服務器的從服務器,形成一個環狀結構。
  • 雙主復制:最簡單的多主形式,兩個服務器互為主從,需要特別注意沖突處理。
  • 使用第三方工具或插件:如Galera Cluster、Group Replication(MySQL 5.7.17及以上版本提供)等,這些解決方案提供了自動沖突解決和更強的一致性保證。

Group Replication & InnoDB cluster

Group ReplicationInnoDB Cluster 是MySQL提供的兩種高級高可用性和數據冗余解決方案,它們都是基于MySQL的原生復制技術,但各有側重和特點。

Group Replication

Group Replication 是MySQL內建的一種高可用性和數據冗余技術,它允許一組MySQL服務器協同工作,形成一個單一的邏輯復制組。每個成員服務器都能接受讀寫操作,同時確保數據的一致性和事務的ACID屬性。Group Replication通過自動成員加入/退出、沖突檢測和解決、以及成員間的自動數據同步來實現高可用性和容錯能力。它基于分布式協議,確保即使在部分網絡分割的情況下也能保持數據一致性。

關鍵技術特性:

  • 分布式一致性:采用分布式協議(如Paxos或Raft)來維護數據一致性。
  • 自動節點管理:自動檢測和響應成員狀態變化。
  • 沖突解決:內置的沖突檢測和解決機制。
  • 單點寫入多點讀取:默認配置下,一次只允許一個成員作為寫入節點,其他成員可接受讀請求。
InnoDB Cluster

InnoDB Cluster 是MySQL的一個完整高可用解決方案,它不僅包含了Group Replication的功能,還集成了MySQL Shell(提供了一個強大的管理界面)和MySQL Router(提供智能路由功能)。InnoDB Cluster旨在簡化部署、管理和運維過程,使得搭建高可用集群變得更加簡單快捷。

關鍵技術特性:

  • 集成化管理:通過MySQL Shell提供統一的部署、配置、監控和故障轉移管理界面。
  • MySQL Router:自動配置,提供透明的讀寫分離和故障切換,無需修改應用程序代碼。
  • 增強的自動化:相比Group Replication,InnoDB Cluster提供了更高級別的自動化,包括自動故障檢測與恢復、集群初始化配置等。
  • 兼容性與擴展性:設計用于云環境和傳統部署,易于擴展和遷移。

備份和恢復

MySQL的備份可以分為兩大類:物理備份和邏輯備份,每種備份方式都有其獨特的優勢和適用場景。

物理備份

概念:物理備份直接復制數據庫的物理文件,包括數據文件、日志文件、索引文件等。這些文件通常是數據庫的二進制格式,不直接可讀。常見的物理備份工具有MySQL Enterprise Backup、Percona XtraBackup、Mariabackup等。

特點

  • 速度快:因為是直接復制文件,所以通常比邏輯備份快。
  • 空間占用少:備份文件通常比邏輯備份文件更緊湊。
  • 恢復快:直接復制文件到原位置即可快速恢復數據庫狀態。
  • 對數據庫運行狀態要求:某些物理備份工具支持熱備份,即在數據庫運行時進行備份,不影響服務;但也有些需要數據庫處于靜默狀態(冷備份)。
  • 兼容性:可能依賴特定的數據庫版本或存儲引擎。

邏輯備份

概念:邏輯備份是將數據庫中的數據和結構導出為一系列可讀的SQL語句或數據文件(如CSV)。最常用的邏輯備份工具是MySQL自帶的mysqldump命令。

特點

  • 可讀性:生成的備份文件是文本格式,可以查看和編輯。
  • 兼容性好:不受數據庫文件格式限制,適用于所有MySQL版本和存儲引擎。
  • 恢復靈活:可以靈活選擇恢復哪些表或數據,適合數據遷移和數據庫結構調整。
  • 速度和空間:相對物理備份較慢,占用空間也較大,尤其是文本格式的備份。
  • 對數據庫運行狀態要求:邏輯備份在數據庫運行時即可進行,不影響服務。

選擇依據

選擇物理備份還是邏輯備份,主要取決于以下幾個因素:

  • 數據庫大小:對于大型數據庫,物理備份因其速度和空間效率更受歡迎。
  • 恢復時間要求:如果需要快速恢復,物理備份通常是更好的選擇。
  • 資源和維護:物理備份可能需要更多存儲和維護復雜度,而邏輯備份更易于理解和操作。
  • 兼容性和靈活性:邏輯備份在跨平臺或數據庫版本升級時更靈活。

安全和權限控制

1. 用戶管理

創建用戶

MySQL允許你創建新的用戶并指定其訪問權限。創建用戶的基本語法如下:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username:用戶的名稱。
  • host:用戶可以從哪個主機進行連接。'%'表示任何主機。
  • password:用戶的密碼。

示例

CREATE USER 'john'@'localhost' IDENTIFIED BY 'johnspassword';
CREATE USER 'alice'@'%' IDENTIFIED BY 'alicepassword';
修改用戶

修改用戶的密碼或其他屬性,使用ALTER USER命令:

ALTER USER 'username'@'host' IDENTIFIED BY 'newpassword';

示例

ALTER USER 'john'@'localhost' IDENTIFIED BY 'newpassword';
刪除用戶

刪除用戶及其權限,使用DROP USER命令:

DROP USER 'username'@'host';

示例

DROP USER 'john'@'localhost';

2. 權限控制

權限類型

MySQL提供多種權限,細粒度控制用戶能執行的操作。常見權限包括:

  • ALL PRIVILEGES:授予所有權限。
  • SELECT:允許用戶讀取數據。
  • INSERT:允許用戶插入數據。
  • UPDATE:允許用戶更新數據。
  • DELETE:允許用戶刪除數據。
  • CREATE:允許用戶創建數據庫和表。
  • DROP:允許用戶刪除數據庫和表。
  • GRANT OPTION:允許用戶授予權限給其他用戶。
授予權限

使用GRANT命令授予用戶特定權限:

GRANT privileges ON database.table TO 'username'@'host';
  • privileges:權限列表,如SELECT, INSERT
  • database.table:指定數據庫和表。*.*表示所有數據庫和表。

示例

GRANT SELECT, INSERT ON mydb.* TO 'john'@'localhost';
GRANT ALL PRIVILEGES ON mydb.mytable TO 'alice'@'%';
撤銷權限

使用REVOKE命令撤銷用戶的特定權限:

REVOKE privileges ON database.table FROM 'username'@'host';

示例

REVOKE INSERT ON mydb.* FROM 'john'@'localhost';
查看權限

查看用戶的權限,使用SHOW GRANTS命令:

SHOW GRANTS FOR 'username'@'host';

示例

SHOW GRANTS FOR 'john'@'localhost';

3. 權限控制的高級用法

角色管理

MySQL 8.0引入了角色管理,簡化了權限的管理。可以創建角色并賦予權限,然后將角色授予用戶。

Apache Shiro采用了同樣的思想,權限授予角色,角色賦予用戶

創建角色

CREATE ROLE 'role_name';

授予權限給角色

GRANT privileges ON database.table TO 'role_name';

將角色授予用戶

GRANT 'role_name' TO 'username'@'host';

示例

CREATE ROLE 'read_only';
GRANT SELECT ON mydb.* TO 'read_only';
GRANT 'read_only' TO 'john'@'localhost';
臨時權限

有時需要臨時授予某個用戶特定權限,可以使用WITH GRANT OPTION和臨時撤銷權限:

授予臨時權限

GRANT SELECT ON mydb.* TO 'john'@'localhost' WITH GRANT OPTION;

撤銷臨時權限

REVOKE GRANT OPTION ON mydb.* FROM 'john'@'localhost';

4. 安全建議

最小權限原則

遵循最小權限原則(Principle of Least Privilege),只授予用戶執行其任務所需的最低權限,避免不必要的權限暴露。

定期審查權限

定期使用SHOW GRANTS命令審查用戶權限,確保權限設置符合當前的安全策略和業務需求。

使用強密碼

確保用戶賬戶使用強密碼,并定期更換密碼,防止密碼泄露和賬戶濫用。

關鍵的安全配置和最佳實踐:

防止SQL注入
  1. 使用預編譯語句(Prepared Statements)

    • 預編譯語句可以有效防止SQL注入攻擊。它們將SQL代碼和數據分開,確保數據不會被解釋為代碼。
    String query = "SELECT * FROM users WHERE username = ? AND password = ?";
    PreparedStatement pstmt = connection.prepareStatement(query);
    pstmt.setString(1, username);
    pstmt.setString(2, password);
    ResultSet rs = pstmt.executeQuery();
    
  2. 使用ORM框架

    • 使用Hibernate、JPA等ORM框架可以減少直接編寫SQL代碼的次數,從而降低SQL注入的風險。
    User user = entityManager.find(User.class, userId);
    
  3. 輸入驗證與清理

    • 對用戶輸入進行嚴格的驗證與清理,確保輸入符合預期格式,并避免惡意輸入。
    if (!username.matches("[a-zA-Z0-9_]+")) {throw new IllegalArgumentException("Invalid username format");
    }
    
加密傳輸
  1. 使用SSL/TLS
    • 配置MySQL使用SSL/TLS加密傳輸數據,確保數據在傳輸過程中不被竊取或篡改。
    String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=true&requireSSL=true";
    Properties properties = new Properties();
    properties.setProperty("user", "root");
    properties.setProperty("password", "password");
    properties.setProperty("useSSL", "true");
    properties.setProperty("requireSSL", "true");
    Connection conn = DriverManager.getConnection(url, properties);
    
其他安全最佳實踐
  1. 最小權限原則

    • 僅為用戶授予其執行任務所需的最小權限,避免過多的權限暴露。
    GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'user'@'localhost' IDENTIFIED BY 'password';
    
  2. 定期更新和補丁管理

    • 保持MySQL數據庫和相關軟件的更新,及時應用安全補丁。
    sudo apt-get update
    sudo apt-get upgrade mysql-server
    
  3. 監控和日志記錄

    • 啟用MySQL日志記錄,定期審查日志以發現和響應潛在的安全威脅。
    SET GLOBAL general_log = 'ON';
    SET GLOBAL log_output = 'TABLE';
    SELECT * FROM mysql.general_log;
    
  4. 強密碼策略

    • 使用強密碼并定期更換,避免使用默認賬戶和密碼。
    SET PASSWORD FOR 'user'@'localhost' = PASSWORD('new_strong_password');
    
  5. 網絡安全

    • 限制MySQL只接受來自特定IP地址的連接,防止未經授權的訪問。
    bind-address = 127.0.0.1
    
  6. 定期備份

    • 定期備份數據,確保在遭遇安全事件時能夠恢復數據。
    mysqldump -u root -p mydatabase > backup.sql
    

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

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

相關文章

62.指針和二維數組(2)

一.指針和二維數組 1.如a是一個二維數組,則數組中的第i行可以看作是一個一維數組,這個一維數組的數組名是a[i]。 2.a[i]代表二維數組中第i行的首個元素的地址,即a[i][0]的地址。 二.進一步思考 二維數組可以看作是數組的數組,本…

springboot+vue+mybatis母嬰二手銷售系統+PPT+論文+講解+售后

目前由于我國二手銷售的規模較小,同發達國家相比,二手銷售比重始終偏低,消費總額增長緩慢,進一步抑制了市場消費的提升,隨著市場競爭的日益激烈,雖然許多商家主動選用二手銷售模式,但卻缺乏對其充分的重視與銷售風險的良性控制,一些商家沒有建立獨立的信用實踐管理部門,無法在交…

linux使用docker部署kafka集群

1、拉取kafka docker pull wurstmeister/kafka docker pull wurstmeister/zookeeper 2、創建網絡 docker network create app-kafka 3、啟動zookeeper docker run -d \--name zookeeper \-p 2181:2181 \--network app-kafka \--restart always \wurstmeister/zookeeper …

【ISAC】通感一體化講座(劉凡)

高斯信道下通信感知一體化的性能極限(劉凡) 文章目錄 背景背景 通信和感知在硬件結構上相似,高效地利用資源,實現相互的增益; 感知是基于不同的任務,比如目標檢測(檢測概率,虛警概率),估計任務(從收到的信號中去估計有用的參數,均方誤差,CRB),識別(知道目標的…

Str.format()方法

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 語法參考 在Python2.6之后,提供了字符串的format()方法對字符串進行格式化操作。format()功能非常強大,格式也比較復雜&…

基于ADRC自抗擾算法的UAV飛行姿態控制系統simulink建模與仿真

目錄 1.課題概述 2.系統仿真結果 3.核心程序與模型 4.系統原理簡介 4.1 控制系統概述 4.2 ADRC基本框架 4.3 控制律設計 5.完整工程文件 1.課題概述 基于ADRC自抗擾算法的UAV飛行姿態控制系統simulink建模與仿真,分別對YAW,PITCH,ROL…

K-Means 算法詳解

K-Means 是一種常用的無監督學習算法,廣泛應用于數據聚類分析。本文將詳細講解 K-Means 算法的原理、步驟、公式以及 Python 實現,幫助你深入理解這一經典算法。 什么是 K-Means 算法? K-Means 算法是一種基于原型的聚類算法,其…

Linux分區以及磁盤管理

目錄 一、磁盤 1.磁盤結構 1.1物理結構 1.2數據結構 2.1磁盤容量 2.2磁盤接口類型 2.磁盤分區的表示 3.MBR與磁盤分區表示 4.磁盤分區結構 二、文件系統 1、類型 三、命令 1.檢測并確認新硬盤 2.創建系統文件(格式化) 2.1mkfs命令 2.2SWAP 3.掛載、卸載文件系統…

Simulink中三相PMSM配置及使用

1. 模塊介紹 Simulink提供了專門用于電力系統仿真,包括電機的動態建模和控制的電機模型,其中,永磁同步電機模塊 Permanent Magnet Synchronous Machine 支持實現三相或五相永磁同步電機模擬,電機繞組采用星型連接,在這…

【圖像分類】Yolov8 完整教程 |分類 |計算機視覺

目標:用YOLOV8進行圖像分類。 圖像分類器。 學習資源:https://www.youtube.com/watch?vZ-65nqxUdl4 努力的小巴掌 記錄計算機視覺學習道路上的所思所得。 1、文件結構化 劃分數據集:train,val,test 知道怎么劃分數據集很重要。 文件夾…

應用圖撲 HT for Web 搭建拓撲關系圖

拓撲結構在計算機網絡設計和通信領域中非常重要,因為它描述了網絡中的設備(即“點”)如何相互連接(即通過“線”)。這種結構不僅涉及物理布局,即物理拓撲,還可以涉及邏輯或虛擬的連接方式&#…

【系統架構設計師】計算機組成與體系結構 ③ ( 層次化存儲結構 | 寄存器 | 高速緩存 | 內存 | 外存 )

文章目錄 一、層次化存儲結構1、層次化存儲結構2、層次化存儲結構 - 示例說明3、程序員可操作的部分 計算機 采用 分級存儲結構 , 主要目的是 為了 解決 容量 / 價格 / 速度 之間的矛盾 ; 一、層次化存儲結構 1、層次化存儲結構 計算機 存儲器 按照存儲速度 由快到慢 進行排序 …

吐血推薦!3款視頻生成工具,全部國產,都免費

AI視頻大模型的爆發,讓創作爆款視頻不再是專業人士的能力。 今天二師兄給大家推薦3款免費的視頻生成工具。 01 可靈 推薦指數 : 五顆星 先看效果 可靈大模型測試 可靈大模型是快手AI團隊自主研發的視頻生成大模型,具備強大的視頻創作能力&a…

【經典面試題】RabbitMQ如何防止重復消費?

RabbitMQ的消息消費是有確認機制的,正常情況下,消費者在消費消息成功后,會發送一個確認消息,消息隊列接收到之后,就會將該消息從消息隊列中刪除,下次也就不會再投遞了。 但是如果存在網絡延遲的問題&#…

教程:在 Kubernetes 集群上部署 WordPress 網站

WordPress 是專為每個人設計的開源軟件,強調創建網站、博客或應用程序的可訪問性、性能、安全性和易用性。WordPress 是一個基于 PHP 的內容管理系統(CMS),使用 MySQL 作為數據存儲,目前很多網站、電商獨立站、個人博客…

AI新紀元-GPT-5

GPT-5:引領AI新紀元 隨著OpenAI首席技術官米拉穆拉蒂的確認,GPT-5的發布正在逐漸接近我們。從GPT-4到GPT-5的躍遷,不僅標志著技術層面的巨大進步,更是AI智能水平的一次質的飛躍。穆拉蒂將這一進步比喻為從高中生到博士生的成長&am…

深入比較:Symfony與Laravel框架的異同

引言 在現代Web開發領域,PHP框架扮演著至關重要的角色。Symfony和Laravel是兩個非常流行的PHP框架,它們各自有著獨特的設計理念、功能特性和社區支持。本文將深入探討這兩個框架的不同之處,包括設計理念、架構、性能、學習曲線、社區支持等方…

推薦系統三十六式學習筆記:原理篇.模型融合14|一網打盡協同過濾、矩陣分解和線性模型

目錄 從特征組合說起FM模型1.原理2.模型訓練3.預測階段4.一網打盡其他模型5.FFM 總結 在上一篇文章中,我們講到了使用邏輯回歸和梯度提升決策樹組合的模型融合辦法,用于CTR預估,給這個組合起了個名字,叫“輯度組合”。這對組合中&…

Yokogawa AQ6370E 10與AQ6370E 20 光譜儀的區別?

Yokogawa AQ6370E 20相比AQ6370E 10在波長準確度上有哪些改進? AQ6370E 20在波長準確度上相對于AQ6370E 10有明顯的提升,這對于需要高精度波長測量的應用來說是非常有益的。 波長精度提升:AQ6370E 20的波長精度相比AQ6370E 10有所提升&#…

SQL面試題練習 —— 查詢每個用戶的第一條和最后一條記錄

目錄 1 題目2 建表語句3 題解 題目來源:小紅書。 1 題目 現有一張訂單表 t_order 有訂單ID、用戶ID、商品ID、購買商品數量、購買時間,請查詢出每個用戶的第一條記錄和最后一條記錄。樣例數據如下: ---------------------------------------…