基于SQLite索引的智能圖片壓縮存儲系統設計與實現

摘要

本文介紹一種基于SQLite索引的智能圖片壓縮存儲系統,通過融合圖像質量壓縮與數據壓縮技術,實現60-80%的壓縮率,較傳統方法壓縮效率提升4-5倍。系統采用“大文件存儲+索引數據庫”架構,針對性解決海量圖片數據遷移與存儲中的核心痛點。經實際場景驗證,處理5TB圖片數據時,可將存儲空間壓縮至1.5TB,存儲成本節省超70%。

關鍵詞:圖片壓縮、數據遷移、存儲優化、SQLite、系統設計

1. 引言

1.1 背景與挑戰

隨著數字化轉型推進,企業及組織面臨海量圖片數據的存儲與管理難題,尤其在數據遷移場景中,如何高效完成圖片的壓縮、存儲與檢索,成為制約業務效率的關鍵問題。傳統數據遷移方案存在以下突出問題:

  • 存儲空間浪費:原始圖片文件未經優化,占用大量存儲資源
  • 遷移效率低:海量小文件導致I/O操作頻繁,傳輸與處理耗時久
  • 檢索性能差:依賴文件系統原生檢索能力,無法滿足快速查詢需求
  • 管理復雜:文件分散存儲,元數據缺失,難以實現統一管控

1.2 解決方案概述

針對上述問題,本文提出的智能圖片壓縮存儲系統采用以下技術路徑:

  • 分層壓縮策略:先通過圖像質量優化降低冗余,再通過數據壓縮進一步縮減體積
  • 大文件聚合存儲:將壓縮后的圖片數據合并為單個大文件,減少文件系統碎片化
  • SQLite索引管理:構建元數據索引庫,實現圖片信息的快速查詢與定位
  • 批量高效處理:支持大規模圖片數據的批量導入、壓縮與遷移,適配海量場景

2. 系統架構設計

2.1 整體架構

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   原始圖片文件   │───?│   智能壓縮模塊   │───?│   大文件存儲     │
│   (5TB數據)     │    │   (60-80%壓縮)  │    │   (1.5TB)       │
└─────────────────┘    └─────────────────┘    └─────────────────┘│▼┌─────────────────┐│   SQLite索引    ││   (元數據管理)   │└─────────────────┘

2.2 核心組件

2.2.1 智能壓縮模塊

負責圖片的分層壓縮處理,核心功能包括:

  • 圖像質量優化:根據業務需求調整圖片尺寸、降低畫質損耗(如將超高清圖縮放到1920px以內)、優化圖片格式(如將RGBA格式轉為RGB,減少通道冗余)
  • 數據壓縮處理:采用gzip、lzma或brotli等算法,對優化后的圖片數據進一步壓縮
  • 壓縮策略適配:根據圖片類型(如風景圖、文檔掃描圖)動態選擇壓縮參數,平衡壓縮率與畫質
2.2.2 大文件存儲模塊

解決小文件存儲效率低的問題,核心功能包括:

  • 二進制數據合并:將多個壓縮后的圖片二進制數據按固定格式拼接為單個大文件
  • 位置索引記錄:記錄每個圖片在大文件中的起始位置與數據長度,確保后續精準提取
  • 增量寫入支持:支持新圖片數據的追加寫入,無需重構已存儲的大文件
2.2.3 SQLite索引模塊

實現圖片元數據的高效管理與檢索,核心功能包括:

  • 元數據存儲:記錄圖片原始路徑、原始大小、壓縮后大小、壓縮算法、哈希值、創建時間等信息
  • 多維度檢索:支持按原始路徑、創建日期、文件大小范圍等條件快速查詢
  • 批量操作支持:提供批量導入元數據、批量更新索引信息的能力,適配大規模數據場景

3. 技術實現

3.1 智能壓縮算法

3.1.2 兩步壓縮策略

通過“圖像優化→數據壓縮”的兩步流程,在保證畫質可接受的前提下最大化壓縮率,具體實現邏輯如下:

  1. 圖像質量優化
    • 尺寸調整:若圖片最大邊長超過設定閾值(如1920px),按比例縮小,采用LANCZOS插值算法保證縮放后畫質
    • 格式轉換:若圖片為RGBA/LA等帶透明通道格式,將透明背景替換為白色后轉為RGB格式,減少數據冗余
    • 質量壓縮:以JPEG格式存儲優化后的圖片,通過調整質量參數(如70%)平衡畫質與體積
  2. 數據壓縮:使用gzip算法(壓縮級別9)對JPEG圖片數據進一步壓縮,縮減存儲體積
3.1.2 壓縮效果對比
壓縮方式壓縮率質量損失適用場景
傳統gzip5-15%無(僅壓縮數據,不改變圖像本身)需完全保留原始圖像質量的場景(如醫療影像、設計原稿)
智能壓縮60-80%輕微(肉眼難以察覺明顯差異)對畫質要求適中,需大幅節省存儲空間的場景(如歷史圖片歸檔、普通業務圖片)

3.2 大文件存儲設計

3.2.1 存儲格式

大文件采用“長度標識+數據”的循環結構,確保每個圖片數據可獨立提取,格式如下:

大文件結構:
┌─────────────┬─────────────┬─────────────┬─────────────┐
│ 長度(4字節) │ 壓縮數據1   │ 長度(4字節) │ 壓縮數據2   │
└─────────────┴─────────────┴─────────────┴─────────────┘
  • 長度標識:采用4字節無符號整數,記錄后續壓縮數據的字節數,用于定位數據邊界
  • 壓縮數據:經過智能壓縮后的圖片二進制數據
3.2.2 索引數據庫設計

SQLite索引表用于存儲圖片元數據與位置信息,表結構設計如下:

CREATE TABLE binary_photos (id INTEGER PRIMARY KEY AUTOINCREMENT,original_path TEXT UNIQUE,  -- 原始圖片路徑,確保唯一性original_filename TEXT,     -- 原始文件名original_size INTEGER,      -- 原始文件大小(字節)compressed_size INTEGER,    -- 壓縮后文件大小(字節)compression_ratio REAL,     -- 壓縮率(compressed_size/original_size)compression_method TEXT,    -- 壓縮算法(如gzip、lzma)start_position INTEGER,     -- 在大文件中的起始位置(字節)data_length INTEGER,        -- 壓縮數據長度(字節)hash_value TEXT,            -- 原始文件MD5哈希,用于數據校驗created_time TIMESTAMP,     -- 數據入庫時間metadata TEXT               -- 擴展元數據(如拍攝時間、設備信息),JSON格式
);

3.3 批量處理優化

3.3.1 內存管理

針對海量圖片處理場景,通過以下方式避免內存溢出:

  • 流式處理:讀取圖片時采用流式IO,不將完整文件加載到內存
  • 分批處理:按目錄或時間維度將數據劃分為多個批次(如每批次1000張圖片),處理完一批再加載下一批
  • 即時釋放:處理完單張圖片后,及時釋放該圖片的內存占用,避免累積
3.3.2 性能優化

通過多線程與緩存機制提升處理效率:

  • 多線程并行:采用多線程處理圖片壓縮與寫入,充分利用多核CPU資源
  • 元數據緩存:緩存高頻訪問的元數據(如近期查詢的圖片位置信息),減少數據庫IO
  • 進度跟蹤:實時記錄各批次處理進度,支持斷點續傳(如某批次處理失敗后,可從該批次重新開始)

4. 系統優勢分析

4.1 數據遷移優勢

4.1.1 存儲空間優化
  • 壓縮效率顯著:較傳統僅使用數據壓縮的方案,壓縮率提升4-5倍
  • 成本大幅降低:存儲成本節省70%以上,5TB數據僅需1.5TB存儲空間
  • 傳輸耗時縮短:壓縮后數據體積減小,網絡傳輸時間大幅降低
4.1.2 遷移效率提升
  • 批量處理能力:支持數萬甚至數十萬張圖片的批量遷移,無需人工干預
  • 增量遷移支持:可識別新增圖片數據,僅處理未入庫的文件,避免重復勞動
  • 錯誤恢復機制:記錄處理過程日志,若出現文件損壞或處理失敗,可定位問題并重新處理

4.2 系統設計優勢

4.2.1 架構優勢
  • 模塊化設計:壓縮、存儲、索引三大模塊獨立解耦,便于單獨維護與升級
  • 標準化接口:基于SQLite標準接口操作索引數據,適配各類開發環境
  • 跨平臺兼容:支持Windows、Linux、macOS等主流操作系統,無需額外適配
4.2.2 性能優勢
  • 檢索效率高:基于SQLite索引查詢,響應時間達毫秒級,遠超文件系統原生檢索
  • 并發支持好:支持多用戶同時查詢與提取圖片數據,無明顯性能瓶頸
  • 擴展能力強:可通過增加大文件數量實現水平擴展,適配更大規模數據存儲

4.3 運維優勢

4.3.1 管理便利
  • 集中化管理:所有圖片數據存儲于少數大文件中,元數據統一管理,避免文件分散
  • 多維度統計:可基于索引數據統計不同時期、不同類型圖片的存儲情況,輔助決策
  • 備份簡單高效:僅需備份大文件與SQLite索引庫,備份過程快速且不易出錯
4.3.2 監控和維護
  • 完整日志記錄:記錄所有操作(如入庫、查詢、提取)與錯誤信息,便于問題排查
  • 實時監控能力:可監控當前壓縮率、處理速度、存儲空間使用率等關鍵指標
  • 數據完整性校驗:通過哈希值對比,定期檢查圖片數據是否損壞,確保數據可靠

5. 實際應用案例

5.1 案例背景

某政府部門需將5TB歷史圖片數據(涵蓋2010-2023年的業務場景圖片)遷移至新存儲系統,核心需求如下:

  • 確保數據完整性,無文件丟失或損壞
  • 大幅減少存儲空間占用,降低硬件采購成本
  • 支持按拍攝日期、原始路徑等條件快速檢索
  • 控制遷移周期,避免影響日常業務

5.2 實施方案

5.2.1 技術選型
  • 壓縮策略:采用智能壓縮,畫質參數設為70%,最大尺寸設為1920px(平衡畫質與體積)
  • 存儲模式:單大文件存儲(避免文件過多導致管理復雜)+ SQLite索引庫
  • 處理方式:按年份-月份分批處理(如2010年1月、2010年2月),每批次處理約5000張圖片
5.2.2 實施步驟
  1. 數據掃描:遍歷原始存儲目錄,統計圖片數量(共約120萬張)、總大小及文件分布情況,生成掃描報告
  2. 分批處理:按批次加載圖片,執行智能壓縮后寫入大文件,同時將元數據存入SQLite索引庫
  3. 質量驗證:每批次處理完成后,隨機抽取10%的圖片,對比壓縮前后畫質,確保無明顯差異
  4. 性能測試:模擬多用戶同時查詢(如按日期查詢某月份圖片)與提取操作,驗證系統響應速度

5.3 實施效果

5.3.1 壓縮效果
  • 原始數據規模:5TB(120萬張圖片)
  • 壓縮后數據規模:1.5TB
  • 整體壓縮率:70%
  • 存儲空間節省:3.5TB,相當于減少7臺800GB硬盤的采購需求
5.3.2 性能表現
  • 處理速度:平均每秒處理50張圖片,5TB數據總處理時間約70小時(3天)
  • 檢索速度:按日期查詢某月份圖片,平均響應時間0.3秒;按原始路徑查詢單張圖片,響應時間0.1秒以內
  • 提取速度:單張圖片提取(從大文件中讀取并解壓)平均耗時0.5秒,批量提取100張圖片耗時約30秒
5.3.3 成本效益
  • 存儲成本:原需采購8TB存儲設備,壓縮后僅需2TB,硬件成本降低75%
  • 遷移時間:較傳統無壓縮遷移方案(預計需175小時),時間縮短60%
  • 運維成本:數據集中管理后,運維人員工作量減少50%,無需頻繁處理分散文件

6. 技術細節與最佳實踐

6.1 壓縮參數調優

6.1.1 質量參數選擇

根據不同業務場景,推薦以下壓縮參數組合,平衡畫質與存儲效率:

  • 高質量存檔場景(如重要歷史圖片):畫質85%,最大尺寸2560px,確保細節清晰
  • 一般業務場景(如日常辦公圖片):畫質70%,最大尺寸1920px,兼顧畫質與體積
  • 網絡傳輸場景(如網頁圖片、移動端展示):畫質60%,最大尺寸1280px,優先保證傳輸速度
  • 縮略圖場景(如圖片預覽):畫質50%,最大尺寸800px,以體積優先
6.1.2 壓縮算法選擇
  • gzip:壓縮速度較快,壓縮率中等,適用于大多數場景,是默認推薦方案
  • lzma:壓縮率最高(較gzip高10-15%),但壓縮速度較慢,適用于存儲空間極度緊張、對處理時間不敏感的場景
  • brotli:壓縮率與lzma接近,壓縮速度優于lzma,適用于支持brotli解壓的環境(如現代Web服務)

6.2 系統部署建議

6.2.1 硬件要求
  • CPU:推薦4核及以上處理器(如Intel i5/i7、AMD Ryzen 5/7),支持多線程并行處理
  • 內存:建議8GB及以上,避免批量處理時因內存不足導致頻繁GC
  • 存儲:推薦使用SSD(固態硬盤),提升大文件讀寫速度(尤其是隨機讀取操作)
  • 網絡:若涉及跨服務器遷移,建議使用千兆及以上網絡,減少傳輸耗時
6.2.2 軟件環境
  • 運行環境:Python 3.8及以上(需支持Pillow圖像處理庫)
  • 核心庫:Pillow(圖像優化)、SQLite 3(索引管理)、標準gzip/lzma庫(數據壓縮)
  • 操作系統:無特殊限制,Windows 10/11、Linux CentOS 7+/Ubuntu 18.04+、macOS 10.15+均可

6.3 運維監控

6.3.1 關鍵指標監控
  • 壓縮率:監控每批次圖片的平均壓縮率,若低于60%,需檢查壓縮參數是否合理
  • 處理速度:監控每秒處理圖片數量,若低于30張,需排查CPU、內存或存儲I/O是否瓶頸
  • 存儲使用率:監控大文件所在磁盤的使用率,若超過80%,需及時擴容或清理過期數據
  • 錯誤率:監控處理過程中的錯誤文件數量,若錯誤率超過1%,需定位問題(如文件損壞、格式不支持)
6.3.2 告警機制
  • 存儲空間告警:當磁盤使用率超過80%時,觸發郵件或短信告警,提醒運維人員擴容
  • 處理速度告警:當處理速度連續10分鐘低于30張/秒時,觸發告警,排查性能瓶頸
  • 錯誤率告警:當單批次錯誤率超過1%時,暫停處理并觸發告警,避免錯誤擴散

7. 未來發展方向

7.1 技術演進

7.1.1 壓縮算法優化
  • 探索基于圖像內容的自適應壓縮:針對不同內容(如文字、風景、人像)調整壓縮參數,在保證關鍵信息清晰的前提下進一步提升壓縮率
  • 引入無損壓縮優化:針對PNG等無損格式圖片,研究更高效的無損壓縮算法,減少存儲空間占用
7.1.2 存儲架構升級
  • 分布式存儲支持:將大文件存儲擴展為分布式架構,多節點分擔存儲與讀取壓力,適配10TB以上超大規模數據
  • 云存儲集成:支持將大文件存儲至阿里云OSS、AWS S3等云存儲服務,實現彈性擴容與異地備份

7.2 功能擴展

7.2.1 智能分析能力
  • 圖片內容識別:集成圖像識別技術,自動標注圖片內容(如人物、場景、物體),支持按內容檢索
  • 重復圖片檢測:基于圖片特征值對比,自動識別重復或高度相似的圖片,避免冗余存儲
  • 畫質評估:自動評估圖片壓縮后的畫質水平,對畫質損失超標的圖片進行二次處理
7.2.2 用戶體驗
  • Web界面:提供友好的Web管理界面
  • API接口:提供RESTful API接口
  • 移動端支持:支持移動端應用

8. 結論

本文提出的基于SQLite索引的智能圖片壓縮存儲系統,通過創新的兩步壓縮策略和大文件存儲架構,成功解決了海量圖片數據遷移和存儲的難題。系統具有以下顯著優勢:

  1. 高壓縮率:相比傳統方法提升4-5倍壓縮效率
  2. 高性能:支持大規模數據的高效處理和檢索
  3. 低成本:大幅降低存儲和運維成本
  4. 易維護:模塊化設計,易于部署和維護
  5. 可擴展:支持水平擴展和功能擴展

通過實際應用驗證,該系統在處理5TB圖片數據時,可將存儲空間壓縮至1.5TB,節省存儲成本70%以上,為數據遷移和存儲優化提供了有效的解決方案。

隨著數據量的不斷增長和存儲成本的持續上升,這種智能壓縮存儲系統將在更多場景中發揮重要作用,為企業和組織的數據管理提供強有力的技術支撐。

參考文獻

[1] Smith, J. (2023). “Efficient Image Compression Techniques for Large-Scale Data Migration”. Journal of Data Management, 15(3), 45-62.

[2] 李明, 王華. (2023). “基于SQLite的海量圖片存儲系統設計與實現”. 計算機應用, 43(8), 123-128.

[3] Brown, A. (2022). “Smart Compression Algorithms for Image Storage Optimization”. IEEE Transactions on Multimedia, 24(6), 234-241.

[4] 張偉, 劉強. (2023). “數據遷移中的存儲優化策略研究”. 軟件學報, 34(5), 89-95.

附錄

A. 系統配置示例

# 系統配置示例
config = {"compression": {"method": "smart","quality": 70,"max_dimension": 1920,"data_compression": "gzip"},"storage": {"mode": "large_file","binary_file": "photos.bin","database": "photo_index.db"},"processing": {"batch_size": 1000,"max_workers": 4,"memory_limit": "8GB"}
}

B. 性能測試結果

測試項目傳統方案智能壓縮方案提升倍數
壓縮率10%70%7x
處理速度20張/秒50張/秒2.5x
檢索速度100ms10ms10x
存儲成本100%30%3.3x

C. 命令行使用示例

# 智能壓縮入庫
python binary_photo_storage.py --mode large_file --bin photos.bin --db photo_index.db folder "D:/data/photos" --smart --quality 70 --max-size 1920# 批量提取
python binary_photo_storage.py --mode large_file --bin photos.bin --db photo_index.db batch_extract "D:/output" --date "2023-10-14"# 查看統計
python binary_photo_storage.py --mode large_file --bin photos.bin --db photo_index.db stats

腳本下載地址

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

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

相關文章

【一張圖看懂Kafka消息隊列架構】

一張圖看懂Kafka消息隊列架構Kafka架構全景圖ApacheKafka作為當今最流行的分布式消息隊列系統,其架構設計精巧而高效。通過一張典型的Kafka架構圖,我們可以清晰地看到幾個核心組件:生產者(Producer)、消費者(Consumer)、主題(Topic)、分區(Pa…

計算機三級嵌入式填空題——真題庫(24)原題附答案速記

1.表征數字音頻每秒鐘數據量的參數稱為波形聲音的__碼率__。CD音樂的聲音信號的采樣率約為44kHz,量化位數為16位,采用雙聲道,則該參數的值為__1408__kb/s。(碼率取樣頻率*量化位數*聲道數44kHz*16*21408kb/s)2.利用載波…

Gradle vs. Maven,Java 構建工具該用哪個?

Java構建工具的甜咸粽子之爭,就是 Gradle 和 Maven 該用哪個? 隨心所欲的手動擋 vs. 穩如老狗的自動擋 Maven用的是pom.xml。很多人一聽XML就頭大,覺得又臭又長。但換個角度想,XML的缺點正是它最大的優點:死板、規范、…

將Markdown文檔輸出成Word格式

大家好!今天想和大家分享一個技術文檔格式轉換的小故事。有個朋友在軟件行業從事文檔工作,她們的手冊是用Markdown編寫的,使用Facebook的Docsaurus框架,在線瀏覽很方便,但輸出Word格式卻很不方便,問我是否有…

COMSOL基于Voronoi毛細管及多邊形骨料ITZ的微介觀混凝土水分擴散模型

本案例是通過COMSOL對論文An innovative method for mesoscale modelling of moisture diffusion in concrete(https://doi.org/10.1016/j.cemconcomp.2024.105836)中Voronoi毛細管、多邊形骨料、ITZ、水泥漿體多相材料的幾何模型復現。 其中論文中的混…

機器學習和高性能計算中常用的幾種浮點數精度

浮點數 (Floating-Point Number) 是一種在計算機中表示帶有小數部分的數字的方式。它通過科學記數法類似的方式(尾數 基數 ^ 指數)來近似表示實數。浮點數的精度決定了它可以表示的數值范圍以及數值之間的精細程度。 常見的浮點數精度包括:F…

開源大語言模型(Qwen3)

Qwen3是阿里巴巴達摩院于2025年4月29日發布的新一代開源大語言模型,屬于通義千問系列的最新成員。其核心突破在于首創混合推理架構,將人類認知科學中的“快思考”與“慢思考”機制融入模型設計,實現了復雜任務處理與高效響應的平衡。 一、技術…

懶人精靈本地離線卡密驗證系統教程(不聯網、安全穩定、省錢、永久免費、無任何限制)

1.合集懶人精靈本地離線卡密驗證系統教程(不聯網、安全穩定、省錢、永久免費、無任何限制):https://www.bilibili.com/video/BV1B5PjeGETQ/ 備注: 1.本地離線卡密采用最安全的非對稱加解密技術,設備id采用最安全多重混合加密不可逆技術生成,驗證階段需要網絡時間,內置防抓…

【三維渲染技術討論】Blender輸出的三維文件里的透明貼圖在Isaac Sim里會丟失, 是什么原因?

Blender導出的三維文件在Isaac Sim中丟失透明貼圖,通常與文件格式兼容性、材質屬性映射、導出設置或Isaac Sim材質解析邏輯有關。以下是具體原因分析和解決方法: 一、可能的原因文件格式對透明信息的支持差異 Blender常用的導出格式(如FBX、G…

Java線程池深度解析:從原理到實戰的完整指南

Java線程池深度解析:從原理到實戰的完整指南 🌟 你好,我是 勵志成為糕手 ! 🌌 在代碼的宇宙中,我是那個追逐優雅與性能的星際旅人。 ? 每一行代碼都是我種下的星光,在邏輯的土壤里生長成璀璨的…

機器學習——模型架構

有監督學習 線性模型 多元線性回歸:預測連續的數值(如房價、銷量)。 邏輯回歸:解決二分類問題(如判斷郵件是否是垃圾郵件),輸出概率。 非線性模型 決策樹:通過一系列if-then規則進行…

深入理解Kafka事務

一 kafka事務介紹1.1 Kafka事務的作用Exactly-Once Semantics (EOS):在“消費 → 處理 → 生產”的流式鏈路里避免重復寫與重復讀帶來的副作用,確保“處理一次且僅一次”的可見效果。跨分區 / 跨 Topic 原子性:將一次處理內寫入的多分區多主題…

RabbitMinQ(模擬實現消息隊列項目)

目錄 一.消息隊列背景 二.需求分析 核心概念: BrokerServer: BrokerServer的核心API: 交換機Exchange: 持久化: 網絡通信: 消息應答: 三、模塊劃分 四、創建項目 五、創建核心類 Exchange: MSGQueue: Binding: Message: 六.…

如何構建StarRocks官方文檔

不知道是網絡問題還是官網問題,StarRocks文檔經常出現卡頓的情況,曾經構建過Flink文檔, 所以也想嘗試自己構建一個StarRocks的本地官方文檔 斷斷續續折騰了好幾天,就不廢話了,直接上實際步驟 1. 環境 1.1 Linux環境 …

堡壘機(跳板機)入門指南:構建更安全的多服務器運維架構

隨著你的業務不斷擴張,你云上服務器的數量,是不是也從一臺,變成了三臺、五臺、甚至一個由幾十臺機器組成的龐大集群?你像一個盡職的“國王”,為你王國的每一座“城池”(每一臺服務器)&#xff0…

(鏈表)Leetcode206鏈表反轉+Leetcode6刪除鏈表的倒數第N個結點+虛擬頭節點使用

虛擬頭結點的作用是:簡化插入/刪除邏輯方便返回頭節點減少邊界錯誤 Leetcode206鏈表反轉 206. 反轉鏈表 - 力扣(LeetCode) 頭插法 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextN…

自然語言處理NLP:嵌入層Embedding中input_dim的計算——Tokenizer文本分詞和編碼

1. 詞匯表大小(input_dim)計算方法 嵌入層Embedding中的input_dim是根據數據中所有唯一詞(或字)的總數來決定的。可以通過Tokenizer文本分詞和編碼得到。 簡單說,Tokenizer 是一個文本分詞和編碼器,它主要做…

python中的分代垃圾回收機制的原理【python進階二、2】

1. 分代設計思想Python 將對象按存活時間分為三代(Generation 0, 1, 2):0代(年輕代):新創建的對象。1代(中年代):經歷一次GC掃描后存活的對象。2代(老年代&am…

【后端】云服務器用nginx配置域名訪問前后端分離項目

云服務器有多個服務(前端 3000 端口、后端 8288 端口,甚至還有別的服務)。希望用戶只輸入 域名(比如 https://example.com),而不是 example.com:3000、example.com:8288。本質上是要做 端口隱藏 域名統一入…

軟考中級數據庫系統工程師學習專篇(67、數據庫恢復)

67、數據庫恢復數據庫故障恢復中基于檢查點的事務分類與處理策略在數據庫系統發生故障后的恢復過程中,?檢查點(Checkpoint)?? 技術是關鍵機制,它能有效縮小恢復范圍,減少需要掃描的日志量,從而加速恢復進…