【6.1.0 漫畫數據庫技術選型】

漫畫數據庫技術選型

🎯 學習目標:掌握架構師核心技能——數據庫技術選型,針對不同業務場景選擇最合適的數據庫方案


🏛? 第一章:關系型數據庫對比選型

🤔 MySQL vs PostgreSQL vs TiDB

想象數據庫就像不同類型的倉庫…

🏪 數據庫倉庫對比:MySQL (傳統超市):
┌─────────────────┐
│ 🛒 簡單易用     │ ← 上手簡單,生態豐富
│ 💰 成本低廉     │ ← 開源免費,運維成本低
│ 🚀 讀性能優秀   │ ← InnoDB引擎優化好
│ ?? 寫入瓶頸     │ ← 單機寫入有限制
└─────────────────┘PostgreSQL (精品百貨):
┌─────────────────┐
│ 🎯 功能豐富     │ ← 支持JSON、全文搜索
│ 🔒 ACID強保證   │ ← 事務支持最完善  
│ 📊 復雜查詢強   │ ← 支持窗口函數、CTE
│ 🐌 學習成本高   │ ← 配置相對復雜
└─────────────────┘TiDB (現代mall):
┌─────────────────┐
│ 🌐 分布式架構   │ ← 天然支持水平擴展
│ ?? 強一致性     │ ← 分布式事務ACID
│ 🔧 MySQL兼容    │ ← 無縫遷移MySQL
│ 💸 成本較高     │ ← 需要多節點部署
└─────────────────┘

📊 關系型數據庫詳細對比

📊 三大關系型數據庫技術對比:┌─────────────┬─────────────┬─────────────┬─────────────┐
│    特性     │    MySQL    │ PostgreSQL  │    TiDB     │
├─────────────┼─────────────┼─────────────┼─────────────┤
│ 🏗? 架構模式 │   單機主從   │   單機主從   │  分布式集群  │
│ 📈 擴展能力 │   垂直擴展   │   垂直擴展   │  水平擴展    │
│ 💾 存儲引擎 │InnoDB/MyISAM│   單一引擎   │   TiKV      │
│ 🔒 事務支持 │   ACID      │  完整ACID   │ 分布式ACID   │
│ 📊 復雜查詢 │    一般      │     強      │     強      │
│ 🌐 分布式   │     否      │     否      │     是      │
│ 💰 使用成本 │     低      │    中等     │     高      │
│ 🛠? 運維難度 │     低      │    中等     │     高      │
│ 📚 生態支持 │    最豐富    │    豐富     │   發展中    │
│ 🎯 適用場景 │  中小型應用  │ 復雜業務系統 │ 大型分布式  │
└─────────────┴─────────────┴─────────────┴─────────────┘性能對比 (相對值):
MySQL     ████████████████████  (單機讀寫性能)
PostgreSQL ███████████████       (復雜查詢性能)  
TiDB      █████████████████████  (分布式性能)學習成本:
MySQL     ████                  (最容易上手)
PostgreSQL ███████               (中等學習成本)
TiDB      ██████████            (需要分布式知識)

🎯 關系型數據庫選型決策樹

🎯 關系型數據庫選型流程:開始選型│┌────▼────┐│數據量大小│└────┬────┘│┌──────────────┼──────────────┐▼              ▼              ▼數據量<100GB    100GB-1TB     數據量>1TB│              │              │┌────▼────┐    ┌────▼────┐    ┌────▼────┐│ 業務復雜度│    │ 擴展需求 │    │ 必須分布式│└────┬────┘    └────┬────┘    └────┬────┘│              │              │┌────▼────┐    ┌────▼────┐         ▼│簡單CRUD │    │需要擴展  │      TiDB└────┬────┘    └────┬────┘      (大數據量)│              │▼              ▼MySQL        PostgreSQL(高性價比)      (復雜業務)選型建議:
🎯 初創公司/MVP項目 → MySQL
🎯 企業級應用/復雜業務 → PostgreSQL  
🎯 大型互聯網/金融級 → TiDB
🎯 需要強GIS支持 → PostgreSQL
🎯 需要分布式事務 → TiDB

📦 第二章:NoSQL數據庫選型

🍃 MongoDB vs Redis vs HBase

🍃 NoSQL數據庫倉庫對比:MongoDB (文檔倉庫):
┌─────────────────┐
│ 📄 文檔存儲     │ ← JSON格式,schema靈活
│ 🔍 查詢豐富     │ ← 支持復雜查詢和索引
│ 🌐 分片集群     │ ← 內置分片支持
│ 🎯 適合內容管理 │ ← CMS、用戶畫像
└─────────────────┘Redis (高速緩存):
┌─────────────────┐
│ ? 極速響應     │ ← 內存存儲,μs級延遲
│ 🔧 數據結構豐富 │ ← String/Hash/Set/ZSet
│ 📊 支持計算     │ ← Lua腳本、Stream
│ 💾 持久化選項   │ ← RDB/AOF持久化
└─────────────────┘HBase (大數據倉庫):
┌─────────────────┐
│ 📈 海量數據     │ ← PB級數據存儲
│ 📊 列式存儲     │ ← 稀疏數據友好
│ 🔄 實時讀寫     │ ← 毫秒級隨機訪問
│ 🌐 Hadoop生態   │ ← 與大數據集成
└─────────────────┘

🔍 NoSQL數據庫詳細對比

🔍 NoSQL數據庫技術對比:┌─────────────┬─────────────┬─────────────┬─────────────┐
│    特性     │  MongoDB    │    Redis    │   HBase     │
├─────────────┼─────────────┼─────────────┼─────────────┤
│ 📊 數據模型 │   文檔型     │   鍵值型     │   列族型    │
│ 🚀 查詢語言 │  MongoDB QL │  命令接口    │   Java API  │
│ 🔍 查詢能力 │    豐富      │    簡單     │    簡單     │
│ 📈 擴展模式 │   分片集群   │   集群模式   │  Region分割  │
│ 💾 存儲介質 │   磁盤為主   │   內存為主   │   磁盤為主  │
│ ? 訪問速度 │    中等      │     快      │    中等     │
│ 📊 數據量   │     TB      │     GB      │     PB      │
│ 🔒 事務支持 │  4.0+支持   │    有限     │    行級     │
│ 🛠? 運維復雜度│    中等      │     低      │     高      │
│ 🎯 主要場景 │ 內容管理/IoT │ 緩存/會話   │ 大數據/日志 │
└─────────────┴─────────────┴─────────────┴─────────────┘性能特點:
延遲對比 (毫秒級):
Redis     ■           (0.1ms)
MongoDB   ███         (1-10ms)  
HBase     ████        (1-20ms)吞吐量對比:
Redis     ████████████████  (10萬QPS+)
MongoDB   ████████          (1萬QPS+)
HBase     ██████████████    (5萬QPS+)

🎯 NoSQL選型決策矩陣

🎯 NoSQL數據庫選型矩陣:使用場景 vs 數據庫選擇:📊 緩存場景:
┌─────────────────┐
│ 會話存儲        │ → Redis (String)
│ 排行榜          │ → Redis (ZSet)  
│ 計數器          │ → Redis (Hash)
│ 分布式鎖        │ → Redis (Set)
│ 消息隊列        │ → Redis (Stream)
└─────────────────┘📄 文檔場景:
┌─────────────────┐
│ 內容管理系統    │ → MongoDB
│ 用戶畫像        │ → MongoDB
│ 商品目錄        │ → MongoDB  
│ 日志分析        │ → MongoDB (時序)
│ IoT數據存儲     │ → MongoDB
└─────────────────┘📈 大數據場景:
┌─────────────────┐
│ 用戶行為日志    │ → HBase
│ 時序數據存儲    │ → HBase/InfluxDB
│ 搜索索引        │ → Elasticsearch
│ 圖關系數據      │ → Neo4j
│ 地理位置數據    │ → PostGIS/MongoDB
└─────────────────┘

🏗? 第三章:數據庫架構模式選擇

🔧 單體 vs 分庫分表 vs 分布式

🔧 數據庫架構演進路徑:階段1: 單體數據庫 (0-100萬用戶)
┌─────────────────────────────────────┐
│              應用服務               │
│                 │                   │
│            ┌────▼────┐              │
│            │  MySQL  │              │
│            │ 單實例   │              │
│            └─────────┘              │
└─────────────────────────────────────┘
優點:簡單,事務一致性
缺點:性能瓶頸,單點故障階段2: 讀寫分離 (100萬-500萬用戶)  
┌─────────────────────────────────────┐
│              應用服務               │
│            讀     │    寫           │
│        ┌───▼───┐  │  ┌───▼───┐      │
│        │ Slave │  │  │Master │      │
│        │(只讀) │?─┼──│(讀寫) │      │
│        └───────┘  │  └───────┘      │
│        └───────────┼─────────────────┘
│               主從同步              │
└─────────────────────────────────────┘
優點:讀性能提升,高可用
缺點:寫入仍是瓶頸階段3: 分庫分表 (500萬-5000萬用戶)
┌─────────────────────────────────────┐
│             應用服務                │
│              分片路由               │
│    ┌─────────┬─────────┬─────────┐   │
│    ▼         ▼         ▼         │   │
│ ┌─────┐  ┌─────┐  ┌─────┐       │   │
│ │DB1  │  │DB2  │  │DB3  │       │   │
│ │分片1│  │分片2│  │分片3│       │   │
│ └─────┘  └─────┘  └─────┘       │   │
└─────────────────────────────────────┘
優點:線性擴展,性能提升
缺點:分布式事務復雜階段4: 分布式數據庫 (5000萬+用戶)
┌─────────────────────────────────────┐
│              應用服務               │
│                 │                   │
│            ┌────▼────┐              │
│            │  TiDB   │              │
│            │ 分布式   │              │
│            │ 集群     │              │
│            └─────────┘              │
└─────────────────────────────────────┘
優點:自動分片,強一致性
缺點:成本高,運維復雜

🎯 數據庫架構選型策略

🎯 基于業務特征的架構選型:業務類型 vs 推薦架構:📱 初創MVP項目:
┌─────────────────┐
│ 單體MySQL       │ ← 快速上線,成本低
│ + Redis緩存     │ ← 提升性能
│ + 云數據庫RDS   │ ← 減少運維
└─────────────────┘🛒 電商平臺:
┌─────────────────┐
│ MySQL主庫       │ ← 訂單、支付核心
│ + 讀寫分離      │ ← 商品瀏覽優化
│ + MongoDB       │ ← 商品目錄、評論
│ + Redis         │ ← 購物車、庫存
│ + ES搜索        │ ← 商品搜索
└─────────────────┘🏦 金融系統:
┌─────────────────┐
│ TiDB分布式      │ ← 交易數據強一致
│ + PostgreSQL    │ ← 風控分析
│ + Redis集群     │ ← 實時計算
│ + InfluxDB      │ ← 監控時序數據
└─────────────────┘📊 大數據平臺:
┌─────────────────┐
│ HBase          │ ← 海量日志存儲
│ + ClickHouse    │ ← OLAP分析
│ + Redis         │ ← 實時指標
│ + MySQL         │ ← 元數據管理
└─────────────────┘

?? 第四章:數據一致性與性能權衡

🔒 CAP理論實際應用

🔒 CAP理論在數據庫選擇中的應用:CAP三角形:Consistency (一致性)△╱ ╲╱   ╲╱     ╲╱   CP  ╲╱    區   ╲╱          ╲╱     MySQL  ╲╱   PostgreSQL ╲╱     TiDB      ╲╱                ╲
Availability ●────────● Partition Tolerance╱   AP區   ╲   (分區容錯)╱  MongoDB   ╲╱   Redis     ╲╱   Cassandra  ╲不同業務場景的選擇:💰 金融交易系統 (選擇CP):
- 強一致性要求 > 可用性
- 推薦:TiDB、PostgreSQL
- 寧可暫停服務也不能數據錯誤📱 社交媒體平臺 (選擇AP):  
- 可用性 > 強一致性
- 推薦:MongoDB、Cassandra
- 允許短期數據不一致🛒 電商系統 (混合策略):
- 訂單系統:CP策略 (MySQL/TiDB)
- 商品瀏覽:AP策略 (MongoDB/Redis)
- 根據業務重要性分層選擇

📊 性能vs一致性權衡矩陣

📊 數據庫性能與一致性權衡:性能要求↑高性能│Redis      │   │   │ MemSQL(內存)      │   │   │ (內存分布式)│   │   │────────────────┼───┼───┼─────────────→│   │   │           一致性要求弱一致性       │   │   │         強一致性│   │   │MongoDB       │   │   │  PostgreSQL(最終一致)     │   │   │   (ACID)│   │   ││   │   │   TiDB│   │   │ (分布式ACID)│低性能選型建議:
🔴 高性能+弱一致性 → Redis/MongoDB
🟡 中等性能+強一致性 → MySQL/PostgreSQL  
🟢 低延遲+強一致性 → TiDB/CockroachDB
🔵 超高性能+無一致性要求 → 內存數據庫

🎯 第五章:業務場景選型實戰

🛒 電商系統數據庫架構

// 🛒 電商系統數據庫選型實戰/*** 電商系統多數據庫架構設計*/
@Configuration
public class ECommerceDataSourceConfig {// 1. 核心交易數據 - MySQL集群@Primary@Bean("primaryDataSource")public DataSource primaryDataSource() {// 主數據源:用戶、訂單、支付HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:mysql://mysql-master:3306/ecommerce");config.setUsername("root");config.setPassword("password");config.setMaximumPoolSize(50);return new HikariDataSource(config);}// 2. 商品目錄 - MongoDB@Beanpublic MongoTemplate mongoTemplate() {return new MongoTemplate(MongoClients.create("mongodb://mongodb-cluster:27017"), "products");}// 3. 緩存層 - Redis集群@Beanpublic RedisTemplate<String, Object> redisTemplate() {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(jedisConnectionFactory());return template;}// 4. 搜索引擎 - Elasticsearch@Beanpublic ElasticsearchTemplate elasticsearchTemplate() {return new ElasticsearchTemplate(client());}
}/*** 不同業務模塊的數據訪問策略*/
@Service
public class ECommerceDataService {@Autowiredprivate JdbcTemplate jdbcTemplate;        // MySQL - 核心業務@Autowired  private MongoTemplate mongoTemplate;      // MongoDB - 商品目錄@Autowiredprivate RedisTemplate redisTemplate;      // Redis - 緩存@Autowiredprivate ElasticsearchTemplate esTemplate; // ES - 搜索/*** 用戶信息管理 - MySQL (強一致性)*/public User getUserById(Long userId) {// 先查緩存User user = (User) redisTemplate.opsForValue().get("user:" + userId);if (user != null) {return user;}// 緩存未命中,查詢數據庫user = jdbcTemplate.queryForObject("SELECT * FROM users WHERE id = ?", new Object[]{userId}, User.class);// 寫入緩存,TTL 1小時redisTemplate.opsForValue().set("user:" + userId, user, 3600, TimeUnit.SECONDS);return user;}/*** 商品目錄管理 - MongoDB (文檔靈活性)*/public Product getProductDetail(String productId) {Query query = new Query(Criteria.where("id").is(productId));Product product = mongoTemplate.findOne(query, Product.class);// 商品瀏覽量計數 - RedisredisTemplate.opsForValue().increment("product:view:" + productId);return product;}/*** 商品搜索 - Elasticsearch (全文搜索)  */public List<Product> searchProducts(String keyword, int page, int size) {SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(multiMatchQuery(keyword, "name", "description", "tags")).withPageable(PageRequest.of(page, size)).build();return esTemplate.queryForList(searchQuery, Product.class);}/*** 購物車管理 - Redis (快速讀寫)*/public void addToCart(Long userId, String productId, int quantity) {String cartKey = "cart:" + userId;redisTemplate.opsForHash().put(cartKey, productId, quantity);redisTemplate.expire(cartKey, 7, TimeUnit.DAYS); // 7天過期}/*** 訂單創建 - MySQL事務 (ACID保證)*/@Transactionalpublic Order createOrder(Long userId, List<OrderItem> items) {// 1. 檢查庫存 - Redisfor (OrderItem item : items) {Long stock = redisTemplate.opsForValue().increment("stock:" + item.getProductId(), -item.getQuantity());if (stock < 0) {// 庫存不足,回滾RedisredisTemplate.opsForValue().increment("stock:" + item.getProductId(), item.getQuantity());throw new InsufficientStockException();}}// 2. 創建訂單 - MySQLOrder order = new Order(userId, items);jdbcTemplate.update("INSERT INTO orders (user_id, total_amount, status) VALUES (?, ?, ?)",order.getUserId(), order.getTotalAmount(), order.getStatus());// 3. 清空購物車 - RedisredisTemplate.delete("cart:" + userId);return order;}
}

🏦 金融系統數據庫架構

// 🏦 金融系統數據庫選型實戰/*** 金融系統多數據庫架構 - 強一致性優先*/
@Configuration
public class FinancialDataSourceConfig {// 1. 核心賬務數據 - TiDB分布式數據庫  @Primary@Bean("tidbDataSource")public DataSource tidbDataSource() {HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:mysql://tidb-cluster:4000/financial");config.setDriverClassName("com.mysql.cj.jdbc.Driver");config.setMaximumPoolSize(100);config.setConnectionTimeout(30000);return new HikariDataSource(config);}// 2. 風控分析 - PostgreSQL (復雜查詢)@Bean("postgresDataSource")  public DataSource postgresDataSource() {HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:postgresql://postgres-master:5432/risk_control");config.setMaximumPoolSize(50);return new HikariDataSource(config);}// 3. 實時計算 - Redis集群@Beanpublic RedisClusterConfiguration redisClusterConfig() {RedisClusterConfiguration config = new RedisClusterConfiguration();config.setClusterNodes(Arrays.asList(new RedisNode("redis-1", 6379),new RedisNode("redis-2", 6379),new RedisNode("redis-3", 6379)));return config;}// 4. 時序監控數據 - InfluxDB@Beanpublic InfluxDB influxDB() {return InfluxDBFactory.connect("http://influxdb:8086", "admin", "password");}
}/*** 金融業務數據訪問層*/
@Service
public class FinancialDataService {/*** 賬戶余額操作 - TiDB分布式事務*/@Transactionalpublic TransferResult transferMoney(String fromAccount, String toAccount, BigDecimal amount) {// 分布式事務保證ACID// 1. 檢查源賬戶余額BigDecimal fromBalance = tidbTemplate.queryForObject("SELECT balance FROM accounts WHERE account_no = ? FOR UPDATE",BigDecimal.class, fromAccount);if (fromBalance.compareTo(amount) < 0) {throw new InsufficientBalanceException("余額不足");}// 2. 扣減源賬戶int fromUpdate = tidbTemplate.update("UPDATE accounts SET balance = balance - ?, updated_at = NOW() WHERE account_no = ?",amount, fromAccount);// 3. 增加目標賬戶  int toUpdate = tidbTemplate.update("UPDATE accounts SET balance = balance + ?, updated_at = NOW() WHERE account_no = ?",amount, toAccount);// 4. 記錄交易流水tidbTemplate.update("INSERT INTO transactions (from_account, to_account, amount, type, status) VALUES (?, ?, ?, ?, ?)",fromAccount, toAccount, amount, "TRANSFER", "SUCCESS");// 5. 實時更新Redis計數器redisTemplate.opsForValue().increment("daily_transfer_count:" + fromAccount);return new TransferResult(true, "轉賬成功");}/*** 風控分析 - PostgreSQL復雜查詢*/public RiskAnalysisResult analyzeTransactionRisk(String accountNo, BigDecimal amount) {// 使用PostgreSQL的窗口函數進行復雜分析String sql = """WITH recent_transactions AS (SELECT amount,created_at,LAG(amount) OVER (ORDER BY created_at) as prev_amount,COUNT(*) OVER (ORDER BY created_at RANGE BETWEEN INTERVAL '1 hour' PRECEDING AND CURRENT ROW) as hour_countFROM transactions WHERE account_no = ? AND created_at >= NOW() - INTERVAL '24 hours')SELECT MAX(amount) as max_amount,AVG(amount) as avg_amount,MAX(hour_count) as max_hourly_count,COUNT(*) as daily_countFROM recent_transactions""";return postgresTemplate.queryForObject(sql, RiskAnalysisResult.class, accountNo);}/*** 實時風控檢查 - Redis計算*/public boolean checkRealTimeRisk(String accountNo, BigDecimal amount) {String dayKey = "risk:daily:" + accountNo + ":" + LocalDate.now();String hourKey = "risk:hourly:" + accountNo + ":" + LocalDateTime.now().getHour();// 檢查日累計限額BigDecimal dailyTotal = new BigDecimal(redisTemplate.opsForValue().get(dayKey, "0"));if (dailyTotal.add(amount).compareTo(DAILY_LIMIT) > 0) {return false; // 超過日限額}// 檢查小時交易頻次Long hourlyCount = redisTemplate.opsForValue().increment(hourKey);redisTemplate.expire(hourKey, 1, TimeUnit.HOURS);if (hourlyCount > HOURLY_FREQUENCY_LIMIT) {return false; // 超過頻次限制}return true;}/*** 系統監控指標 - InfluxDB時序存儲*/public void recordMetrics(String metric, double value, Map<String, String> tags) {Point point = Point.measurement(metric).time(System.currentTimeMillis(), TimeUnit.MILLISECONDS).addField("value", value).tag(tags).build();influxDB.write("financial_metrics", "autogen", point);}
}

🎯 面試重點總結

💡 架構師級別面試題

1. 技術選型決策能力

Q: 如何為一個千萬級用戶的電商平臺選擇數據庫架構?
A:

  • 分析業務特點:讀多寫少、數據模型復雜、一致性要求不同
  • 分層設計:核心交易用MySQL/TiDB,商品目錄用MongoDB,緩存用Redis
  • 擴展策略:讀寫分離→分庫分表→分布式數據庫的演進路徑
  • 監控保障:全鏈路監控,性能指標,故障預案
2. CAP理論實際應用

Q: 在設計分布式系統時如何在CAP之間做權衡?
A:

  • 業務優先級:金融系統選CP(一致性),社交媒體選AP(可用性)
  • 分層策略:核心業務強一致性,邊緣業務最終一致性
  • 技術實現:通過不同數據庫組合實現不同一致性級別
  • 降級方案:異常情況下的服務降級策略
3. 性能優化策略

Q: 數據庫性能出現瓶頸時的優化思路?
A:

  • 定位問題:慢查詢分析、監控指標、系統資源
  • 優化層次:SQL優化→索引優化→架構優化→硬件優化
  • 緩存策略:多級緩存、緩存預熱、緩存更新策略
  • 架構演進:垂直擴展→水平擴展→分布式架構

🎖? 架構師核心能力

  1. 技術選型能力:基于業務特點選擇最合適的技術方案
  2. 性能權衡能力:在性能、一致性、成本間找到最佳平衡點
  3. 演進設計能力:設計可演進的架構,支持業務發展
  4. 風險控制能力:識別技術風險,制定應對策略

🚀 進階學習路徑

📚 推薦資源

  • 經典書籍:《數據密集型應用系統設計》、《架構師修煉之道》
  • 實戰案例:大廠技術博客、開源項目架構分析
  • 前沿技術:NewSQL數據庫、云原生數據庫、多模數據庫
  • 工具實踐:數據庫壓測、監控平臺、自動化運維

🎯 能力進階

  • 初級:掌握單一數據庫使用,了解基本概念
  • 中級:理解不同數據庫特點,能進行簡單選型
  • 高級:精通多種數據庫,能設計復雜的數據架構
  • 專家:具備架構師思維,能制定企業級數據戰略

🎯 數據庫選型是架構師的核心技能!掌握選型方法論,成為技術決策的領導者!


📌 行動指南

  1. 點贊 → 讓更多Java開發者掌握數據庫技術
  2. 評論 → 留言"數據庫技術"領取[MySQL性能優化指南]
  3. 關注 → 追蹤更新《更多Java技術精彩內容》(已寫完待發布)
  4. 贊賞 → 解鎖完整源碼+專屬技術咨詢

🚀 下期預告
《更多Java技術精彩內容》關注可搶先看

📚 相關推薦

  • 漫畫Java基礎
  • 漫畫Spring全家桶
  • 漫畫JVM調優

讓我們一起在Java的世界里探索更多精彩內容! 🚀

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

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

相關文章

CVE-2022-4262/CVE-2022-3038

CVE-2022-4262&#xff08;Linux內核UAF漏洞&#xff09;漏洞原理CVE-2022-4262是Linux內核中RDS&#xff08;Reliable Datagram Sockets&#xff09;協議實現的一個UAF&#xff08;Use-After-Free&#xff0c;釋放后使用&#xff09;漏洞。具體來說&#xff1a;在rds_rdma_ext…

[Token]Token merging for Vision Generation

Token Compression for Vision Domain_Generation 文章目錄Image GenerationToken Merging for Fast Stable Diffusion, CVPRW 2023.Token Fusion: Bridging the Gap between Token Pruning and Token Merging, WACV 2024ToDo: Token Downsampling for Efficient Generation of…

React封裝過哪些組件-下拉選擇器和彈窗表單

背景&#xff08;S - Situation&#xff09;&#xff1a;在某活動管理系統中&#xff0c;前端頁面需要支持用戶選擇“要配置的當前活動”&#xff0c;并提供「新增」「編輯」功能&#xff0c;操作內容包括填寫活動名稱、ID、版本號等字段。原始實現邏輯分散、復用性差&#xff…

多租戶架構下的多線程處理實踐指南

在現代 SaaS 系統中&#xff0c;多租戶架構&#xff08;Multi-Tenant Architecture&#xff09;已成為主流。然而&#xff0c;隨著系統性能要求的提升和業務復雜度的增加&#xff0c;多線程成為不可避免的技術手段。但在多租戶環境下使用多線程&#xff0c;容易引發數據錯亂、租…

MyBatis插件機制揭秘:從攔截器開發到分頁插件實戰

一、攔截器體系架構解析 1.1 責任鏈模式在MyBatis中的實現 MyBatis通過動態代理技術構建攔截器鏈&#xff0c;每個插件相當于一個切面&#xff1a; // 攔截器鏈構建過程 public class InterceptorChain {private final List<Interceptor> interceptors new ArrayList<…

百度文心一言開源ERNIE-4.5深度測評報告:技術架構解讀與性能對比

目錄一、技術架構解讀1.1、ERNIE 4.5 系列模型概覽1.2、模型架構解讀1.2.1、異構MoE&#xff08;Heterogeneous MoE&#xff09;1.2.2、視覺編碼器&#xff08;Vision Encoder&#xff09;1.2.3、適配器&#xff08;Adapter&#xff09;1.2.4、多模態位置嵌入&#xff08;Multi…

Matplotlib 模塊入門

Python 中有個非常實用的可視化庫 ——Matplotlib。數據可視化是數據分析中不可或缺的環節&#xff0c;而 Matplotlib 作為 Python 的 2D 繪圖庫&#xff0c;能幫助我們生成高質量的圖表&#xff0c;讓數據更直觀、更有說服力。接下來&#xff0c;我們將從 Matplotlib 的概述、…

LeetCode 3169.無需開會的工作日:排序+一次遍歷——不需要正難則反,因為正著根本不難

【LetMeFly】3169.無需開會的工作日&#xff1a;排序一次遍歷——不需要正難則反&#xff0c;因為正著根本不難 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/count-days-without-meetings/ 給你一個正整數 days&#xff0c;表示員工可工作的總天數&#xff08;從第…

VUE3 el-table 主子表 顯示

在Vue 3中&#xff0c;實現主子表&#xff08;主從表&#xff09;的顯示通常涉及到兩個組件&#xff1a;一個是主表&#xff08;Master Table&#xff09;&#xff0c;另一個是子表&#xff08;Detail Table&#xff09;。我們可以使用el-table組件來實現這一功能。這里&#x…

張量數值計算

一.前言前面我們介紹了一下pytorch還有張量的創建&#xff0c;而本章節我們就來介紹一下張量的計算&#xff0c;類型轉換以及操作&#xff0c;這個是十分重要的&#xff0c;我們的學習目標是&#xff1a;掌握張量基本運算、掌握阿達瑪積、點積運算 掌握PyTorch指定運算設備。Py…

部署項目頻繁掉線-----Java 進程在云服務器內存不足被 OOM Killer 頻繁殺死-----如何解決?

一、查詢系統日志grep -i "java" /var/log/messages執行這條命令&#xff0c;檢查系統日志里是否有 Java 進程被 OOM Killer 殺死的記錄。日志中反復出現以下內容&#xff1a;Out of memory: Killed process 3679325 (java) total-vm:2947000kB, anon-rss:406604kB..…

【保姆級教程】基于anji-plus-captcha實現行為驗證碼(滑動拼圖+點選文字),前后端完整代碼奉上!

前言 驗證碼作為Web應用的第一道安全防線&#xff0c;其重要性不言而喻。但你是否還在為以下問題煩惱&#xff1a; 傳統字符驗證碼用戶體驗差&#xff0c;識別率低&#xff1f;驗證碼安全性不足&#xff0c;輕易被爬蟲破解&#xff1f;前后端對接繁瑣&#xff0c;集成效率低&…

HTML-八股

1、DOM和BOM DOM是表示HTML或者XML文檔的標準的對象模型&#xff0c;將文檔中每個組件&#xff08;元素、屬性等&#xff09;都作為一個對象&#xff0c;使用JS來操作這個對象&#xff0c;從而動態改變頁面內容&#xff0c;結合等。 DOM是以樹型結構組織文檔內容&#xff0c;樹…

ADI的EV-21569-SOM核心板和主板轉接卡的鏈接說明

ADI提供給客戶很多DSP的核心板&#xff0c;比如EV-21569-SOM&#xff0c;EV-21593-SOM&#xff0c;EV-SC594-SOM等&#xff0c;非常多&#xff0c;但是沒有底板&#xff0c;光一個核心板怎么用呢&#xff1f;于是我就在想&#xff0c;我的21569評估板就有通用底板&#xff0c;能…

基于 Redisson 實現分布式系統下的接口限流

在高并發場景下&#xff0c;接口限流是保障系統穩定性的重要手段。常見的限流算法有漏桶算法、令牌桶算法等&#xff0c;而單機模式的限流方案在分布式集群環境下往往失效。本文將介紹如何利用 Redisson 結合 Redis 實現分布式環境下的接口限流&#xff0c;確保集群中所有節點的…

ubuntu播放rosbag包(可鼠標交互)

1 前言 眾所周知&#xff0c;ubuntu中播放bag包最主要的工具是rviz&#xff0c;然而rviz有一個無法忍受的缺陷就是不支持鼠標回滾&#xff0c;并且顯示的時間的ros時間&#xff0c;不是世界時間&#xff0c;因此在遇到相關bug時不能與對應的世界時間對應。基于以上&#xff0c…

一文理解緩存的本質:分層架構、原理對比與實戰精粹

&#x1f4d6; 推薦閱讀&#xff1a;《Yocto項目實戰教程:高效定制嵌入式Linux系統》 &#x1f3a5; 更多學習視頻請關注 B 站&#xff1a;嵌入式Jerry 一文理解緩存的本質&#xff1a;分層架構、原理對比與實戰精粹 “緩存讓系統飛起來”——但每一層緩存有何不同&#xff1f;…

【離線數倉項目】——電商域DIM層開發實戰

摘要本文主要介紹了電商域離線數倉項目中DIM層的開發實戰。首先闡述了DIM層的簡介、作用、設計特征、典型維度分類以及交易支付場景下的表示例和客戶維度表設計。接著介紹了DIM層設計規范&#xff0c;包括表結構設計規范、數據處理規范以及常見要求規范。然后詳細講解了DIM層的…

Unreal Engine 自動設置圖像

void UYtGameSettingSubsystem::RunHardwareBenchmark(int32 WorkScale, float CPUMultiplier, float GPUMultiplier) {UGameUserSettings* UserSettings UGameUserSettings::GetGameUserSettings();if (UserSettings){// 運行基準測試&#xff08;異步操作&#xff0c;可能需…

使用Spring Boot和PageHelper實現數據分頁

在Spring Boot項目中&#xff0c;利用PageHelper插件可以輕松實現數據分頁功能。以下是具體的實現步驟和代碼示例。添加依賴在項目的pom.xml文件中添加PageHelper和MyBatis的依賴。<dependency><groupId>com.github.pagehelper</groupId><artifactId>p…