【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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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)功能…