【1.3 MySQL知識庫 - 輕松理解版】

🚀 MySQL知識庫 - 輕松理解版

一、MySQL核心知識順口溜 🎵

🎤 經典記憶口訣

MySQL數據庫,InnoDB引擎強
ACID事務特性,隔離級別四檔
索引加速查詢,B+樹是主梁
主從復制備份,讀寫分離扛
鎖機制防沖突,死鎖要預防
SQL優化提速,執行計劃要看

🌟 升級版記憶歌謠

MySQL好比圖書館,數據存儲有規章
表格書架分門類,行列記錄整齊放
索引目錄查得快,B+樹結構不會忘
事務保證數據準,ACID原則要記牢
鎖機制像門衛,并發訪問有保障
主從復制做備份,讀寫分離性能強

二、MySQL架構可視化圖表

🏗? MySQL完整架構圖

// MySQL架構完整圖解
public class MySQLArchitecture {/*** MySQL架構全景圖:* * ┌─────────────────────────────────────────────────────────────┐* │                   MySQL數據庫系統                            │* ├─────────────────────────────────────────────────────────────┤* │                    連接層                                    │* │  ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐     │* │  │ 客戶端連接   │ │ 連接池管理   │ │   權限驗證          │     │* │  │ Client      │ │ Connection  │ │   Authentication    │     │* │  │ Applications│ │ Pool        │ │   Authorization     │     │* │  └─────────────┘ └─────────────┘ └─────────────────────┘     │* ├─────────────────────────────────────────────────────────────┤* │                    服務層                                    │* │  ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐     │* │  │ SQL解析器    │ │ 查詢優化器   │ │   查詢緩存          │     │* │  │ SQL Parser  │ │ Optimizer   │ │   Query Cache       │     │* │  │             │ │             │ │                     │     │* │  │ 詞法分析     │ │ 執行計劃     │ │   結果緩存          │     │* │  │ 語法分析     │ │ 成本估算     │ │   緩存失效          │     │* │  │ 語義分析     │ │ 索引選擇     │ │   命中率統計        │     │* │  └─────────────┘ └─────────────┘ └─────────────────────┘     │* ├─────────────────────────────────────────────────────────────┤* │                    引擎層                                    │* │  ┌─────────────────────────────────────────────────────┐     │* │  │                InnoDB存儲引擎                        │     │* │  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │     │* │  │  │ Buffer Pool │ │ Change Buf  │ │ Adaptive    │   │     │* │  │  │ 緩沖池      │ │ 寫緩沖      │ │ Hash Index  │   │     │* │  │  │             │ │             │ │ 自適應哈希   │   │     │* │  │  │ 數據頁緩存   │ │ Insert Buf  │ │             │   │     │* │  │  │ 索引頁緩存   │ │ Delete Buf  │ │             │   │     │* │  │  │ Undo頁緩存   │ │ Update Buf  │ │             │   │     │* │  │  └─────────────┘ └─────────────┘ └─────────────┘   │     │* │  │                                                     │     │* │  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │     │* │  │  │ Log Buffer  │ │ 事務系統     │ │ 鎖管理器     │   │     │* │  │  │ 日志緩沖    │ │ Transaction │ │ Lock        │   │     │* │  │  │             │ │ System      │ │ Manager     │   │     │* │  │  │ Redo Log    │ │ MVCC        │ │ 行鎖        │   │     │* │  │  │ Undo Log    │ │ 事務隔離     │ │ 表鎖        │   │     │* │  │  │ Bin Log     │ │ 死鎖檢測     │ │ 意向鎖      │   │     │* │  │  └─────────────┘ └─────────────┘ └─────────────┘   │     │* │  └─────────────────────────────────────────────────────┘     │* ├─────────────────────────────────────────────────────────────┤* │                    存儲層                                    │* │  ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐     │* │  │ 數據文件     │ │ 索引文件     │ │   日志文件          │     │* │  │ .ibd        │ │ B+Tree      │ │   .log              │     │* │  │             │ │             │ │                     │     │* │  │ 表數據       │ │ 主鍵索引     │ │   Redo Log          │     │* │  │ 表結構       │ │ 輔助索引     │ │   Undo Log          │     │* │  │ 表空間       │ │ 全文索引     │ │   Binary Log        │     │* │  └─────────────┘ └─────────────┘ └─────────────────────┘     │* └─────────────────────────────────────────────────────────────┘*/
}

三、MySQL形象比喻 🏪

🎭 "智能圖書館"的故事

// 用生活化的比喻來理解MySQLpublic class MySQLLibraryStory {/*** 📚 想象MySQL是一座"現代化智能圖書館"* * 🏢 數據庫 = 整座圖書館大樓* - 不同樓層存放不同類型的書籍(表)* - 嚴格的管理制度保證書籍安全* - 多個入口支持讀者同時進入* * 📖 表(Table) = 書架區域  * - 每個書架存放同類書籍(同一表的數據)* - 書架標簽清楚標明類別(表名)* - 書籍按編號有序排列(主鍵排序)* * 📑 行(Row) = 一本具體的書* - 每本書都有唯一編號(主鍵)* - 包含書名、作者、出版社等信息(字段)* - 新書會按編號插入到正確位置* * 🏷? 列(Column) = 書籍屬性分類* - 書名列、作者列、出版日期列* - 每個屬性都有固定的格式要求(數據類型)* - 可以設置必填項和可選項(NOT NULL)* * 📇 索引(Index) = 圖書目錄卡片* - 按書名字母順序排列的目錄(B+樹索引)* - 按作者分類的索引卡片(輔助索引)  * - 大大加快查書速度,避免逐架尋找* * 🔐 事務(Transaction) = 借書流程管理* - 借書登記 -> 扣減庫存 -> 更新借閱記錄* - 要么全部完成,要么全部取消(原子性)* - 借書過程中其他人看不到中間狀態(隔離性)* - 完成后數據永久保存(持久性)* * 🚪 鎖機制 = 圖書館門禁系統* - 借書時對該書加鎖,防止重復借閱(行鎖)* - 整理書架時對區域加鎖(表鎖)* - 讀書時允許多人同時閱讀(共享鎖)* - 整理時不允許他人干擾(排他鎖)*/// 查詢優化的生動比喻public void queryOptimizationStory() {/*** 🔍 查書的智能過程:* * 1?? 讀者提出需求 - SQL查詢請求* 2?? 管理員理解需求 - SQL解析器工作* 3?? 制定查找策略 - 查詢優化器選擇執行計劃* 4?? 使用索引目錄 - 利用索引快速定位* 5?? 找到目標書籍 - 返回查詢結果* 6?? 記錄查詢歷史 - 查詢緩存機制* * 🚨 常見問題:* - 沒有索引:像沒有目錄的圖書館,只能逐架查找* - 索引失效:目錄過期了,還是要重新找* - 全表掃描:管理員懶得用目錄,直接翻遍所有書架*/}
}

四、記憶技巧和考點攻略 🎯

🧠 數字記憶法

// MySQL關鍵數字記憶口訣public class MySQLNumbers {/*** 🔢 重要數字記憶:* * 3306 = MySQL默認端口號* 16KB = InnoDB頁面默認大小* 16 = 每個頁面最多指向的子頁面數* 1017 = B+樹葉子節點最多存儲的記錄數* 4 = 事務隔離級別個數* 8.0 = MySQL最新主要版本* 64 = InnoDB最大表空間數量* 1000 = 默認最大連接數*/// 記憶口訣String numberMnemonic = "三三零六默認端口," +"十六千字節頁大小," +"B+樹十六路平衡," +"一千零一七記錄多," +"四個隔離級別分," +"數字記牢面試過!";
}

📝 高頻面試考點速記

// MySQL面試必背考點清單@Component
public class MySQLInterviewPoints {/*** 🔥 必考考點1:事務ACID特性*/public Map<String, String> acidProperties() {return Map.of("原子性(Atomicity)", "事務要么全部成功,要么全部失敗","一致性(Consistency)", "事務前后數據狀態保持一致","隔離性(Isolation)", "并發事務之間相互隔離","持久性(Durability)", "事務提交后數據永久保存");}/*** 🔥 必考考點2:事務隔離級別*/public Map<String, String> isolationLevels() {return Map.of("讀未提交(RU)", "可能臟讀、不可重復讀、幻讀","讀已提交(RC)", "可能不可重復讀、幻讀","可重復讀(RR)", "可能幻讀,MySQL默認級別","串行化(S)", "最高隔離級別,性能最差");}/*** 🔥 必考考點3:索引類型和優化*/public Map<String, String> indexTypes() {return Map.of("主鍵索引", "唯一且非空,InnoDB默認聚集索引","唯一索引", "值唯一但可為空,創建唯一約束","普通索引", "最常用的索引類型,加速查詢","組合索引", "多字段組合,遵循最左前綴原則");}/*** 🔥 必考考點4:鎖機制分類*/public Map<String, String> lockTypes() {return Map.of("表鎖", "鎖定整張表,開銷小,并發度低","行鎖", "鎖定具體行,開銷大,并發度高","共享鎖(S)", "讀鎖,多個事務可同時持有","排他鎖(X)", "寫鎖,只能一個事務持有");}
}

五、實戰項目中的MySQL應用 💼

🎯 交易系統MySQL實戰配置

-- 交易系統MySQL配置實例-- my.cnf 生產環境配置
[mysqld]
# 基礎配置
port = 3306
bind-address = 0.0.0.0
max_connections = 2000
max_connect_errors = 10000# InnoDB配置
default-storage-engine = InnoDB
innodb_buffer_pool_size = 16G    # 設置為物理內存的60-80%
innodb_log_file_size = 1G        # 減少日志文件切換
innodb_log_files_in_group = 3    # 日志文件數量
innodb_flush_log_at_trx_commit = 1  # 事務安全性最高# 查詢緩存
query_cache_type = 1
query_cache_size = 256M# 慢查詢日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2# 二進制日志
log-bin = mysql-bin
binlog_format = ROW
expire_logs_days = 7

🔧 MySQL在交易系統中的應用案例

// 真實的MySQL應用案例@Service
public class TradingMySQLService {/*** 📊 場景1:訂單表設計優化* 業務需求:支持高并發下單,快速查詢訂單*/// 訂單表結構設計@Entity@Table(name = "trading_orders", indexes = {@Index(name = "idx_user_create_time", columnList = "user_id,create_time"),@Index(name = "idx_status_create_time", columnList = "status,create_time"),@Index(name = "idx_symbol_create_time", columnList = "symbol,create_time")})public class TradingOrder {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long orderId;@Column(nullable = false, length = 64)private String userId;      // 用戶ID,建立復合索引@Column(nullable = false, length = 20)private String symbol;      // 交易對,如BTC/USDT@Column(nullable = false, precision = 20, scale = 8)private BigDecimal price;   // 委托價格@Column(nullable = false, precision = 20, scale = 8) private BigDecimal quantity; // 委托數量@Column(nullable = false)@Enumerated(EnumType.STRING)private OrderStatus status; // 訂單狀態,建立索引@Column(nullable = false)private LocalDateTime createTime; // 創建時間,分區字段// 分表策略:按用戶ID哈希分表,減少單表數據量// CREATE TABLE trading_orders_0 LIKE trading_orders;// CREATE TABLE trading_orders_1 LIKE trading_orders;// ...// CREATE TABLE trading_orders_63 LIKE trading_orders;}/*** 💰 場景2:高并發下單事務控制* 業務需求:確保余額扣減和訂單創建的原子性*/@Transactional(isolation = Isolation.READ_COMMITTED,rollbackFor = Exception.class,timeout = 5)public OrderResult createOrder(CreateOrderRequest request) {try {// 1. 檢查并鎖定用戶余額(悲觀鎖)UserAccount account = userAccountMapper.selectForUpdate(request.getUserId());if (account.getBalance().compareTo(request.getTotalAmount()) < 0) {throw new InsufficientBalanceException("余額不足");}// 2. 扣減用戶余額int updated = userAccountMapper.updateBalance(request.getUserId(),account.getBalance().subtract(request.getTotalAmount()),account.getVersion() // 樂觀鎖版本號);if (updated == 0) {throw new ConcurrentUpdateException("余額更新失敗,請重試");}// 3. 創建訂單記錄TradingOrder order = new TradingOrder();order.setUserId(request.getUserId());order.setSymbol(request.getSymbol());order.setPrice(request.getPrice());order.setQuantity(request.getQuantity());order.setStatus(OrderStatus.PENDING);order.setCreateTime(LocalDateTime.now());tradingOrderMapper.insert(order);// 4. 記錄資金流水fundFlowMapper.insertFundFlow(FundFlow.builder().userId(request.getUserId()).orderId(order.getOrderId()).amount(request.getTotalAmount().negate()).type(FundFlowType.ORDER_FREEZE).createTime(LocalDateTime.now()).build());return OrderResult.success(order.getOrderId());} catch (Exception e) {log.error("創建訂單失敗: {}", request, e);throw e; // 事務自動回滾}}/*** 📈 場景3:分頁查詢優化* 業務需求:用戶查詢歷史訂單,支持大偏移量分頁*/// 傳統分頁查詢(有性能問題)public PageResult<TradingOrder> getOrdersByOffsetBad(String userId, int page, int size) {int offset = (page - 1) * size;// 問題:OFFSET偏移量大時性能急劇下降// LIMIT 100000, 20 需要掃描100020條記錄return tradingOrderMapper.selectByUserIdWithOffset(userId, offset, size);}// 優化后的游標分頁查詢public PageResult<TradingOrder> getOrdersByCursorGood(String userId, Long lastOrderId, int size) {// 使用上次查詢的最后一條記錄ID作為游標// WHERE user_id = ? AND order_id < ? ORDER BY order_id DESC LIMIT ?List<TradingOrder> orders;if (lastOrderId == null) {// 第一頁查詢orders = tradingOrderMapper.selectFirstPage(userId, size);} else {// 后續頁查詢,使用游標orders = tradingOrderMapper.selectByUserIdAfterCursor(userId, lastOrderId, size);}Long nextCursor = orders.isEmpty() ? null : orders.get(orders.size() - 1).getOrderId();return PageResult.<TradingOrder>builder().data(orders).nextCursor(nextCursor).hasMore(orders.size() == size).build();}/*** 🎯 場景4:復雜查詢優化* 業務需求:統計用戶交易數據,涉及多表關聯*/// 優化前:多次查詢數據庫public UserTradingSummary getUserTradingSummaryBad(String userId, LocalDate startDate, LocalDate endDate) {// 查詢訂單總數(第1次查詢)Long totalOrders = tradingOrderMapper.countByUserIdAndDateRange(userId, startDate, endDate);// 查詢成功訂單總數(第2次查詢)Long successOrders = tradingOrderMapper.countByUserIdAndStatusAndDateRange(userId, OrderStatus.COMPLETED, startDate, endDate);// 查詢總交易金額(第3次查詢)BigDecimal totalAmount = tradingOrderMapper.sumAmountByUserIdAndDateRange(userId, startDate, endDate);// 查詢各個交易對的交易量(第4次查詢)List<SymbolSummary> symbolSummaries = tradingOrderMapper.getSymbolSummariesByUserId(userId, startDate, endDate);return UserTradingSummary.builder().totalOrders(totalOrders).successOrders(successOrders).totalAmount(totalAmount).symbolSummaries(symbolSummaries).build();}// 優化后:單次復雜查詢public UserTradingSummary getUserTradingSummaryGood(String userId, LocalDate startDate, LocalDate endDate) {// 使用一條復雜SQL完成所有統計String sql = """SELECT COUNT(*) as total_orders,SUM(CASE WHEN status = 'COMPLETED' THEN 1 ELSE 0 END) as success_orders,SUM(CASE WHEN status = 'COMPLETED' THEN price * quantity ELSE 0 END) as total_amount,symbol,SUM(CASE WHEN status = 'COMPLETED' THEN quantity ELSE 0 END) as symbol_quantityFROM trading_orders WHERE user_id = ? AND create_time BETWEEN ? AND ?GROUP BY symbol""";return tradingOrderMapper.getUserTradingSummaryOptimized(userId, startDate, endDate);}
}

六、趣味記憶卡片 🃏

🎴 MySQL組件記憶卡片

┌─────────────────────────────────────┐
│  💳 InnoDB引擎 記憶卡片              │
├─────────────────────────────────────┤
│  🏪 作用:MySQL默認存儲引擎          │
│  🔐 特性:支持事務、外鍵、崩潰恢復   │
│  📦 存儲:聚集索引,行級鎖           │
│  ? 特點:ACID完整支持               │
│  🚀 適用:OLTP事務處理系統           │
│  🎪 記憶:像銀行金庫,安全可靠      │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│  💳 B+樹索引 記憶卡片                │
├─────────────────────────────────────┤
│  📚 作用:加速數據查詢的數據結構     │
│  🌳 結構:多路平衡樹,葉子節點鏈表   │
│  🎯 特點:范圍查詢效率高             │
│  ? 優勢:減少磁盤IO,提高性能       │
│  🚀 應用:主鍵索引、輔助索引         │
│  🎪 記憶:像圖書目錄,快速定位      │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│  💳 事務 記憶卡片                    │
├─────────────────────────────────────┤
│  🔄 作用:保證數據操作的完整性       │
│  🎯 特性:ACID四大原則               │
│  📦 控制:BEGIN、COMMIT、ROLLBACK    │
│  ? 隔離:四個隔離級別可選           │
│  🚀 應用:轉賬、下單等關鍵操作       │
│  🎪 記憶:像合同簽署,要么成要么敗  │
└─────────────────────────────────────┘┌─────────────────────────────────────┐
│  💳 鎖機制 記憶卡片                  │
├─────────────────────────────────────┤
│  🔐 作用:控制并發訪問,保證一致性   │
│  🎯 類型:表鎖、行鎖、共享鎖、排他鎖 │
│  📦 粒度:鎖范圍從粗到細             │
│  ? 特點:權衡并發性能和數據安全     │
│  🚀 應用:讀寫操作、事務隔離         │
│  🎪 記憶:像門禁系統,控制進出      │
└─────────────────────────────────────┘

七、口訣總結 📋

🎵 終極記憶口訣

【存儲引擎篇】
InnoDB事務強,MyISAM速度快
Archive壓縮好,Memory內存型
根據需求選引擎,沒有萬能解決方案【索引優化篇】
B+樹索引是主流,主鍵聚集性能優
輔助索引回表查,覆蓋索引最理想
最左前綴要記住,索引失效要避免【事務隔離篇】
讀未提交級別低,臟讀問題要小心
讀已提交防臟讀,不可重復還存在
可重復讀是默認,幻讀問題需注意
串行化最安全,性能代價也最高【鎖機制篇】
表鎖粒度粗,行鎖精度細
共享鎖能并讀,排他鎖獨占寫
死鎖檢測要開啟,超時回滾保安全【性能優化篇】
慢查詢要監控,執行計劃要分析
索引合理建,查詢效率高
分庫分表解決大,讀寫分離提性能

八、面試突擊秘籍 🎯

🎪 經典面試場景演練

// 面試官最愛問的MySQL連環問public class MySQLInterviewScenario {/*** 🎭 場景1:索引優化* * 面試官:"有個慢查詢需要優化,你會怎么做?"*/public String indexOptimizationApproach() {return """我的SQL優化步驟:1?? 分析慢查詢日志- 開啟slow_query_log,設置long_query_time=2- 使用mysqldumpslow分析慢查詢特征- 找出執行頻率高、耗時長的SQL2?? 查看執行計劃- 使用EXPLAIN分析SQL執行計劃- 關注type字段:ALL(全表掃描)最差,const最好- 查看key字段確認是否使用了索引- 檢查rows字段評估掃描行數3?? 索引優化策略- 在WHERE條件字段上建索引- 遵循最左前綴原則建組合索引- 避免索引失效:函數、類型轉換、NOT、OR- 使用覆蓋索引避免回表查詢4?? SQL重寫優化- 避免SELECT *,只查詢需要的字段- 用EXISTS替代IN,用UNION替代OR- 分頁查詢使用游標而非OFFSET- 大表JOIN前先用索引過濾數據5?? 架構層面優化- 讀寫分離:讀操作走從庫- 分庫分表:單表數據量控制在千萬級- 引入緩存:熱點數據放Redis- 異步處理:非實時數據異步計算""";}/*** 🎭 場景2:事務設計* * 面試官:"設計一個轉賬功能,如何保證數據一致性?"*/public String transactionDesign() {return """轉賬功能的事務設計:1?? 事務邊界設計@Transactional(isolation = Isolation.READ_COMMITTED,  // 避免不必要的鎖等待rollbackFor = Exception.class,         // 所有異常都回滾timeout = 10                          // 10秒超時)2?? 悲觀鎖保證原子性// 先鎖定轉出賬戶,再鎖定轉入賬戶(避免死鎖)String lockSql = "SELECT balance FROM accounts WHERE user_id = ? FOR UPDATE";Account fromAccount = accountMapper.selectForUpdate(fromUserId);Account toAccount = accountMapper.selectForUpdate(toUserId);3?? 業務邏輯校驗- 轉出賬戶余額充足性檢查- 轉入賬戶狀態有效性檢查  - 轉賬金額合法性驗證- 日限額、月限額等風控檢查4?? 余額更新操作- 轉出賬戶: balance = balance - amount- 轉入賬戶: balance = balance + amount- 使用樂觀鎖防止并發修改: WHERE version = ?5?? 流水記錄- 插入轉賬流水記錄,包含完整轉賬信息- 雙方賬戶分別插入資金變動記錄- 記錄時間戳、操作人、業務類型等6?? 異常處理- 余額不足:拋出業務異常,事務回滾- 賬戶不存在:參數校驗異常,事務回滾- 系統異常:記錄錯誤日志,事務回滾- 超時處理:設置合理超時時間,避免長時間鎖定""";}
}

🎨 記憶宮殿法

想象你走進一座MySQL智能圖書館

🚪 入口大廳 = 連接層↓ 刷卡進入🏢 1樓:服務大廳 = 服務層📞 咨詢臺 = SQL解析器📋 規劃室 = 查詢優化器💾 資料室 = 查詢緩存🏢 2樓:書庫管理 = 引擎層📚 主書庫 = InnoDB引擎🗃? 快速庫 = MyISAM引擎💿 歸檔室 = Archive引擎🏢 3樓:索引中心📇 主目錄 = 主鍵索引(B+樹)📋 分類目錄 = 輔助索引🔍 搜索臺 = 全文索引🏢 4樓:交易中心 = 事務系統🔐 保險箱 = ACID特性🚪 隔離室 = 隔離級別?? 仲裁處 = 鎖管理器🏢 地下室:存儲中心💾 數據倉庫 = 數據文件(.ibd)📊 日志室 = 日志文件(.log)🔄 備份室 = 主從復制

每次想到MySQL,就在腦海中參觀一遍這座智能圖書館!


總結 🎊

這份MySQL知識庫融合了:

  • 🎵 朗朗上口的記憶口訣
  • 📊 直觀易懂的可視化圖表
  • 📚 生動形象的圖書館比喻
  • 🃏 有趣實用的記憶卡片
  • 💼 真實項目的實戰案例
  • 🎯 高頻面試的考點解析

記住一句話:MySQL不僅僅是數據庫,更是企業數據資產的守護者。掌握了原理和最佳實踐,就能設計出高性能、高可用的數據架構! 🚀
</rewritten_file>

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

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

相關文章

計算機網絡期末速成 網絡層 判斷及單選題

判斷題 路由器和鏈路層交換機都被稱為分組交換機。路由器與鏈路層交換機間的根本區別是:路由器在網絡層存儲轉發IP數據報&#xff0c;鏈路層交換機在鏈路層存儲轉發幀。 A. 對 B. 錯 答案: 對 解析: 路由器和鏈路層交換機確實都是分組交換機&#xff0c;但工作層次不同。路由器…

代理 AI 時代的隱私重構:從邊界控制到信任博弈

過去&#xff0c;我們將隱私等同于邊界與權限控制&#xff0c;依賴墻壁、鎖和規則構筑防線。而如今&#xff0c;隨著代理 AI 深度介入生活&#xff0c;成為能感知、決策的自主實體&#xff0c;它不僅處理數據&#xff0c;更在重塑我們的數字形象與內在認知。在此背景下&#xf…

C++實現手寫strstr函數

strstr 函數用于在主字符串中查找子字符串的首次出現位置,以下是高效的實現方案: KMP算法優化版本 #include <iostream> #include <string> #include <vector> using namespace std; // 計算KMP算法的部分匹配表(PMT) vector<int> getNext(const…

Linux操作系統網絡服務模塊一SSH帶外管理概述

前言&#xff1a; 在復雜的網絡運維環境中&#xff0c;?SSH帶外管理&#xff08;Out-of-Band Management&#xff09;?? 是確保系統高可用性的核心技術手段。區別于依賴業務網絡的“帶內管理”&#xff0c;帶外管理通過獨立物理通道?&#xff08;如專用管理網口或串…

org.springframework.cloud.gateway 組件解釋

org.springframework.cloud.gateway 是 Spring Cloud 生態系統中的一個新一代的、功能強大的 API 網關。 1. 什么是 API 網關 (API Gateway)&#xff1f; 在講解 Spring Cloud Gateway 之前&#xff0c;我們先要理解它扮演的角色——API 網關。 在一個微服務架構中&#xff0…

linux ollama 下載安裝

linux ollama 下載安裝 ollama 下載地址ollama 手動安裝解決找不到命令的問題升級[gcc](https://so.csdn.net/so/search?qgcc&spm1001.2101.3001.7020)Centos7 停止維護之后 [升級gcc||找不到devtoolset-8-gcc* 問題解決方案](https://www.cnblogs.com/Jedi-Pz/p/18447117…

2025 滲透工具:【中國蟻劍】連接一句話MUA文件 遠控虛擬機靶機

溫馨提示&#xff1a; 本程序僅作為虛擬機測試環境使用&#xff0c;請勿用于任何不當用途。使用即表示您同意自行承擔可能產生的所有責任。 一、場景復現 1、PhpMystudy軟件啟動網頁模擬靶機 小皮面板(phpstudy) - 讓天下沒有難配的服務器環境&#xff01; 2、開啟apache 3、…

Datawhale 網絡爬蟲技術入門第2次筆記

正則表達式 正則表達式&#xff08;Regular Expression&#xff09;&#xff0c;?種使?表達式的?式對字符串進?匹配的語法規則。 正則的語法&#xff1a;使?元字符進?排列組合來匹配字符串。 在線測試正則表達式&#xff1a;在線正則表達式測試OSCHINA.NET在線工具,os…

詳解Redis的集群模式(主從復制、哨兵與Cluster)

一、主從復制 (Master-Slave Replication) 1. 基本概念 主從復制是Redis最簡單的集群模式&#xff0c;由一個主節點(Master)和一個或多個從節點(Slave)組成。 2. 工作原理 數據同步&#xff1a;從節點啟動時會向主節點發送SYNC命令&#xff0c;主節點執行BGSAVE生成RDB文件并…

如何使用 Airtest 對 Flutter 和 Unity 應用進行UI自動化測試

使用 Airtest 進行 Flutter/Unity UI 自動化測試終極指南 一、 核心原理&#xff1a;為什么 Airtest 能行&#xff1f; 要理解如何用&#xff0c;先要明白其原理。Airtest 采取了“兩條腿走路”的策略&#xff0c;這正是它能通吃各種UI技術的關鍵。 第一條腿&#xff1a;基于…

河馬劇場多部自制劇霸榜,短劇精品化戰略持續推進

臨近暑期&#xff0c;短劇市場熱度逐漸攀升。近期&#xff0c;DataEye發布6月9日—6月15日微短劇熱力榜顯示河馬劇場以8部作品占據TOP30近三分之一席位&#xff0c;前三名中更是占據2個席位&#xff0c;以題材多元化、用戶覆蓋廣、數據爆發力強的特點引領行業風向。其中&#x…

冪級數 (0,R); R ;(R,+oo)

很好&#xff0c;我們現在來回答你問的這個問題&#xff1a; &#x1f7e0; 冪級數在收斂半徑 R R R 以外會發生什么&#xff1f; 我們考慮一個一般形式的冪級數&#xff1a; ∑ n 0 ∞ a n ( x ? x 0 ) n \sum_{n0}^{\infty} a_n (x - x_0)^n n0∑∞?an?(x?x0?)n 它的…

C#學習13——正則表達式

一、正則表達式 是一種匹配輸入文本的模式&#xff0c;是由特殊字符組成&#xff0c;用于匹配字符串中的字符組合。 二、正則表達式有哪些&#xff1f; 1.Regex 類&#xff08;引入System.Text.RegularExpressions;&#xff09; Regex 類用于表示一個正則表達式。 1&#…

【Redis】持久化機制:RDB / AOF 的應用與場景

文章目錄 Redis 持久化一、RDB1.1 說明1.2 觸發機制手動觸發自動觸發 1.3 流程說明1.4 文件處理1.5 優缺點 & 適用場景 二、AOF2.1 說明2.2 使用 AOF2.3 命令寫入2.4 文件同步2.5 重寫機制2.6 啟動時數據恢復2.7 優缺點 & 適用場景 三、不使用 AOF / RDB 的情況3.1 場景…

Python 企業級開發與DevOps實踐

https://www.python.org/static/community_logos/python-logo-master-v3-TM.png 大型項目結構與設計模式 項目結構規范 text 復制 下載 enterprise_app/ ├── docs/ # 項目文檔 ├── tests/ # 測試代碼 │ ├── unit/ …

E結構體基礎.go

前言&#xff1a;結構體是一種用戶自定義的數據類型&#xff0c;它可以將多個不同類型的數據整合在一起&#xff0c;形成一個有機的整體。這就好比在現實生活中&#xff0c;我們有各種各樣的物品&#xff0c;它們各自有不同的屬性和用途&#xff0c;而結構體就像是一個收納箱&a…

Spring @Autowired 依賴注入全解析

Autowired 是 Spring 框架中實現依賴注入的核心注解&#xff0c;其自動裝配過程可分為以下步驟&#xff0c;結合了類型匹配、名稱解析和容器協作機制&#xff1a; 1. 組件掃描與 Bean 定義注冊 掃描階段&#xff1a;Spring 容器啟動時&#xff0c;通過 ComponentScan 或 XML 配…

將git的普通目錄用idea初始化為maven項目

在 IntelliJ IDEA 中將一個已存在的 Git 目錄初始化為 Maven 項目&#xff0c;可以通過以下步驟完成。這些步驟假設你已經有一個包含代碼的 Git 倉庫&#xff0c;并希望將其轉換為 Maven 項目結構&#xff0c;以便更好地管理依賴和構建。 步驟 1&#xff1a;打開或導入 Git 倉庫…

Vue 中 key 屬性的深入解析:改變 key 導致組件銷毀與重建

一、key 屬性的核心作用 在 Vue 中,key是一個特殊的屬性,主要用于協助 Vue 的虛擬 DOM(Virtual DOM)算法高效地更新實際 DOM。它的核心作用可以概括為: 唯一標識節點:為每個節點提供一個唯一的身份標識優化 Diff 算法:幫助 Vue 準確判斷兩個節點是否為同一節點(如for循…

【音視頻】PJSIP庫——示例簡介、C++類說明

1、簡介 pjsip庫的源碼中有很多示例,是入門pjsip的第一手資料,下面將各個示例所演示的功能列舉出來,以便下一步學習; 最后總結下C++接口主要類及成員函數說明。 2、示例介紹 2.1 音視頻處理 aectest 音頻回聲消除測試工具,用于演示音頻處理模塊中的回聲消除(AEC)功能…