【Redis#9】其他數據結構

引言

Redis 除了我們最常用的 String、Hash、List、Set、ZSet(Sorted Set) 這五種基本數據結構外,還提供了很多高級或特殊用途的數據結構/類型 ,它們可以滿足更復雜的業務需求。

? Redis 的“五大基本數據結構”回顧

類型特點
String字符串,可以是文本、數字、二進制等
Hash鍵值對集合,適合存儲對象
List有序的字符串列表(底層為鏈表)
Set無序且不重復的字符串集合
ZSet (Sorted Set)帶有分數排序的集合

一、Stream(流)

Redis 5.0 引入,是一個日志型數據結構 ,支持發布訂閱、持久化、消費者組 等功能。

可以把 Redis Stream 想象成一個:持久化的、可查詢的、支持消費者組的消息隊列系統。 基于 Radix Tree + Listpacks(或稱 ziplist) 實現的,具有高效寫入和讀取的能力。

1. Stream 的核心概念

概念說明
Stream存儲事件記錄的有序隊列,每個記錄都有唯一 ID
Entry / Message一條消息,包含多個字段(field-value 對)
Consumer Group消費者組,類似 Kafka 的 consumer group,用于多消費者協作消費
Consumer消費者,屬于某個消費者組
Pending Entries List (PEL)記錄已發給消費者但尚未確認的消息
Claim把未確認的消息重新分配給其他消費者

比如:我們可以用 Stream 實現一個事件,如下:消防員 + 著火事件

事件操作
著火事件Producer 使用XADD寫入一條事件消息
消防員Consumer 屬于某個消費者組,監聽這個 Stream
發現火情Consumer 通過XREADGROUP接收到事件
使用干粉滅火器Consumer 執行業務邏輯(如寫數據庫、發通知)
確認火已滅Consumer 調用XACK確認事件處理完成
沒火時等待使用BLOCK參數阻塞等待新事件到來

2. Stream 支持的功能📦

功能描述
📥 消息寫入使用XADD命令添加新消息
📤 消息讀取使用XRANGE,XREAD,XREADGROUP等命令讀取消息
🔄 消費者組支持多個消費者組并行消費,避免重復消費
🧾 自動偏移量管理消費者組會自動維護消費進度(offset)
?? 阻塞讀取類似 BLPOP,使用XREADXREADGROUP COUNT ... BLOCK
🔁 消息重試機制可通過XCLAIM將失敗的消息重新分發給其他消費者
🗑? 消息過期可設置最大條數限制(MAXLEN)實現自動清理
🔐 持久化支持消息寫入后會持久化到 AOF 和 RDB 中(如果啟用)

3. 常用命令一覽🛠?

命令用途
XADD key [MAXLEN ~ count] * field value [field value ...]添加消息
XRANGE key start end [COUNT count]查詢指定范圍內的消息
XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...]從指定位置讀取消息
XREADGROUP GROUP group consumer [COUNT count] [BLOCK ms] STREAMS key [key ...] IDLE [min-idle-time]以消費者組方式讀取消息
XACK key group id [id ...]確認消息已被成功處理
XCLAIM key group consumer min-idle-time id [id ...]搶占未被確認的消息
XDEL key id [id ...]刪除指定消息
XTRIM key MAXLEN ~ count控制 stream 的長度(保留最近的 count 條消息)
XGROUP CREATE key group-name $創建消費者組
XGROUP SETID key group new-id設置消費者組的起始讀取位置
XGROUP DELGROUP key group刪除消費者組
XINFO STREAM key查看 stream 的詳細信息
XINFO GROUPS key查看所有消費者組
XINFO CONSUMERS key group查看某組下的所有消費者

4. 示例操作🔁

1?? 添加消息
XADD mystream * name Alice age 30
# 輸出
"1717986912345-0"
  • 每條消息都會有一個自動生成的 ID:<時間戳>-<序列號>
2?? 查詢所有消息
XRANGE mystream - +
# 輸出
1) 1) "1717986912345-0"2) 1) "name"2) "Alice"3) "age"4) "30"
  • - 表示最小 ID,+ 表示最大 ID
3?? 創建消費者組
XGROUP CREATE mystream mygroup $
  • $ 表示從最后一條消息之后開始消費
4?? 以消費者組方式消費消息
XREADGROUP GROUP mygroup consumer1 COUNT 1 STREAMS mystream >
  • > 表示只讀取未被該組消費過的消息
5?? 確認消息已處理
XACK mystream mygroup 1717986912345-0
6?? 查看未確認的消息
XPENDING mystream mygroup

5. 使用場景

場景描述
📬 消息隊列替代 RabbitMQ、Kafka,適用于輕量級消息隊列系統
📝 日志收集收集分布式系統的日志、事件、監控數據
📲 事件溯源(Event Sourcing)所有狀態變更都作為事件流存儲
🎮 游戲排行榜更新記錄玩家得分變化事件
📊 實時數據分析接收實時數據流,進行聚合、分析
🚦 分布式任務調度多個 worker 協作處理任務流

二、Geospatial(地理位置)

Redis 3.2 引入,用于存儲地理位置信息,并支持 距離計算、范圍查詢 等操作。

Geospatial(地理空間) 是指與地球表面位置相關的信息,通常包括:地理位置(經緯度)、地理對象(點、線、面)、空間關系(距離、包含、交集等)、時間維度(時空變化)

Geospatial 數據可以用于描述任何具有地理屬性的事物,比如:城市的位置、道路網絡、氣象數據、移動設備軌跡、商店分布、用戶當前位置

1. Geospatial 技術的核心組成部分🧭

組成部分描述
GIS(Geographic Information System)地理信息系統,用于采集、存儲、分析和展示地理空間數據
GPS(Global Positioning System)全球定位系統,用于獲取精確的地理位置坐標
RS(Remote Sensing)遙感技術,通過衛星或無人機獲取地表信息
GEOJSON / KML / Shapefile常見的地理空間數據格式
地圖服務(如 Google Maps、高德地圖)提供可視化、導航、搜索等功能

2. Geospatial 應用場景

應用領域示例
物流配送實時追蹤包裹位置、規劃最優路徑
共享出行顯示附近車輛、計算距離、預估到達時間
智慧城市監控交通流量、管理公共設施、應急調度
零售行業分析門店周邊人流、優化選址策略
農業精準施肥、病蟲害監測、產量預測
環境監測追蹤污染源、分析氣候變化趨勢
社交媒體發布帶地理位置的內容、查找附近好友
游戲開發構建基于真實世界的 AR 游戲(如 Pokémon GO)

3. 在數據庫中支持 Geospatial 的方式🔧

很多數據庫都提供了對地理空間數據的支持,下面是一些常見的數據庫及其功能:

3.1 Redis GEO

Redis 從 3.2 版本開始支持 GEO 功能 ,可以用來存儲地理位置,并進行距離計算和范圍查詢。

示例

# 添加位置
GEOADD cities 116.4074 39.9042 "北京"
GEOADD cities 121.4737 31.2304 "上海"# 獲取某城市的經緯度
GEOPOS cities 北京# 計算兩地之間的距離
GEODIST cities 北京 上海 km# 查找附近的城市(500km 內)
GEORADIUS cities 116.4074 39.9042 500 km
  • Redis GEO 是基于 Sorted Set + GeoHash 實現的,適合輕量級 LBS(基于位置的服務)應用。
3.2 MySQL Spatial Data Types

MySQL 支持 POINT, LINESTRING, POLYGON 等空間類型,以及空間索引。

示例

CREATE TABLE locations (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100),coord POINT SRID 4326
);INSERT INTO locations (name, coord)
VALUES ('北京', POINT(116.4074, 39.9042));-- 查詢距離北京 500 公里以內的城市
SELECT name, ST_Distance(coord, POINT(116.4074, 39.9042)) AS distance
FROM locations
HAVING distance <= 500;

Geospatial(地理空間)是指與地球位置相關的數據和技術,廣泛應用于地圖服務、LBS、智慧交通、環境監測等多個領域。主流數據庫(如 Redis、MySQL、PostgreSQL、MongoDB)都提供了對地理空間數據的支持,幫助開發者輕松實現位置查詢、距離計算、區域劃分等功能

三、HyperLogLog

HyperLogLog 是 Redis 提供的一種 概率數據結構(Probabilistic Data Structure) ,用于 高效估算一個集合中不重復元素的數量(基數,Cardinality)

? 它是用來做什么的? ==> 場景:你有一個巨大的數據集,想要知道其中有多少個唯一元素(如獨立訪問用戶、IP 數量等),但又不想用 Set 存儲所有元素。 【HyperLogLog 就是為此而生的!】

1. 核心特點🔍

特性描述
用途基數統計(去重計數)
空間效率極高最多占用 12KB 內存,可統計上億個唯一元素
誤差率可控默認誤差小于 1%
不可獲取具體元素只能統計數量,不能列出具體內容
支持合并操作多個 HLL 可以合并,進行全局統計

2. Redis 中 HyperLogLog 的常用命令📦

命令說明
PFADD key element [element ...]向指定的 HyperLogLog 中添加元素
PFCOUNT key [key ...]返回一個或多個 HyperLogLog 的基數估算值
PFMERGE dest source [source ...]將多個 HyperLogLog 合并為一個

3. 示例操作🔁

# 添加元素
PFADD visitors user1 user2 user3 user4 user5# 查看估計的獨立訪客數
PFCOUNT visitors
(integer) 5# 再添加一些新用戶
PFADD visitors user6 user7 user3  # user3 已存在# 再次查看,user3 不會重復計數
PFCOUNT visitors
(integer) 7# 創建另一個 HyperLogLog
PFADD mobile_visitors user8 user9 user10# 合并兩個 HyperLogLog
PFMERGE all_visitors visitors mobile_visitors# 查看合并后的總訪問人數
PFCOUNT all_visitors
(integer) 10

4. 使用場景

場景描述
📊 網站 UV 統計每日/每月獨立訪客數統計(比使用 Set 節省內存百倍)
🌐 IP 去重計數統計攻擊源 IP、訪問來源 IP 的數量
👥 用戶行為分析如“每日活躍用戶數”、“不同設備登錄數”等
📡 日志聚合在大數據平臺中做輕量級實時統計
🧮 數據預處理預估去重數據規模,決定是否需要更精確的計算方式

5. 空間效率對比💾

數據結構存儲1萬個字符串所需內存存儲100萬個字符串所需內存
Set~幾 MB幾百 MB 到 1GB+
HyperLogLog最多 12KB始終是 12KB

Redis 的 HLL 實現使用了稀疏和密集兩種存儲格式,最終統一壓縮為最多 12KB。

6. 注意事項??

?? 注意:它只是一個 近似算法 ,不能獲取精確值。

問題建議
是否精確?? 否,是一個近似算法(誤差 < 1%)
是否能查具體元素?? 否,只能統計數量
是否適合小數據集?? 也適合,但如果你要完全精確,還是用 Set 更好
是否支持合并?? 支持,這是其一大優勢
是否支持持久化?? 是,寫入 AOF 和 RDB

小結:HyperLogLog 是 Redis 提供的一個高效估算唯一元素數量的概率數據結構,非常適合用于大規模去重統計(如 UV、IP 數量等),僅需極小內存即可完成超大體量的數據估算,是大數據統計分析中的利器

四、Bitmaps(位圖)

Redis 的 Bitmaps 并不是一種獨立的數據結構 ,而是基于 String 類型 實現的一種高效操作二進制位(bit)的方式。

它非常適合用于:用戶簽到系統、日活統計(DAU)、布爾狀態記錄(如是否已讀、是否登錄等)、緊湊的去重計數

1. 核心特點

特性描述
存儲方式基于 String,每個字符是 8 bit
操作粒度每個 bit 可單獨設置、獲取、統計
節省內存1 字節可表示 8 個布爾值,極大節省空間
支持位運算AND、OR、XOR、NOT 等
適用場景狀態標記、簽到、訪問統計

2. 常用命令📦

命令說明
SETBIT key offset value設置某個 bit 位的值(0 或 1)
GETBIT key offset獲取某個 bit 位的值
BITCOUNT key [start end]統計被設為 1 的 bit 數量
BITPOS key bit [start] [end]查找第一個值為指定 bit 的位置
BITOP operation destkey key [key ...]對多個 bitmap 做位運算(AND/OR/XOR/NOT)

3. 示例操作🔁

3.1 用戶簽到系統(一個月)
# 用戶 ID 為 1001,表示他在第 0 天(1號)和第 7 天(8號)簽到了
SETBIT user:1001:sign_in 0 1
SETBIT user:1001:sign_in 7 1# 查詢某天是否簽到
GETBIT user:1001:sign_in 0   # 返回 (integer) 1
GETBIT user:1001:sign_in 3   # 返回 (integer) 0# 統計總共簽到幾天
BITCOUNT user:1001:sign_in   # 返回 (integer) 2
3.2 統計日活躍用戶(DAU)

假設你有 100,000 個用戶,ID 從 0 到 99999。每天記錄一個用戶是否登錄:

# 今天是 2025-04-05
SETBIT dau:20250405 1001 1   # 用戶 1001 登錄了
SETBIT dau:20250405 2002 1   # 用戶 2002 登錄了# 查詢總登錄人數
BITCOUNT dau:20250405        # 返回 (integer) 2
3.3 多日簽到合并統計(BitOp)

你想知道用戶 1001 在連續三天內的簽到情況:

# 第一天簽到
SETBIT user:1001:day1 0 1
SETBIT user:1001:day1 2 1# 第二天簽到
SETBIT user:1001:day2 1 1
SETBIT user:1001:day2 2 1# 合并兩天簽到情況(按 OR 運算)
BITOP OR user:1001:total_sign user:1001:day1 user:1001:day2# 查看合并后的簽到總數
BITCOUNT user:1001:total_sign   # 返回 (integer) 3 (0,1,2 都為 1)

4. 使用場景

場景描述
📅 用戶簽到系統每個 bit 表示一天是否簽到
👥 日活躍用戶統計(DAU)每個 bit 表示一個用戶當天是否活躍
📮 已讀消息標記記錄用戶是否閱讀過某條消息
🎮 游戲成就系統每個 bit 表示一項成就是否完成
🧮 緊湊布爾狀態存儲替代多個 key,減少內存開銷
📊 數據壓縮用最少的空間表達大量布爾狀態

5. 內存占用對比💾

數據類型1w 個布爾值所需內存100w 個布爾值所需內存
Hash / Set幾 MB ~ 幾十 MB幾百 MB ~ 1GB+
Bitmaps1250 Bytes~124KB

💡 一個 BitMap 可以用 12KB 內存來表示超過 10 萬個布爾值

?? 注意事項

問題建議
是否精確? 是(無誤差)
是否支持并發? 是(Redis 是單線程原子操作)
是否適合小數據集? 是
是否能查詢具體哪些 bit 為 1? 否(只能統計數量或查找位置)
是否支持壓縮? 是(Redis 內部做了優化)

小結:Redis Bitmaps 是一種基于 String 的高效位操作機制,非常適合用來做簽到系統、日活統計、布爾狀態管理等場景,僅需極小內存即可處理上百萬級別的布爾狀態,是 Redis 中非常實用的“隱藏神器”。

五、Bitfields

Bitfields 是 Redis 提供的一種高級數據結構,它允許你在 Redis 的 String 類型中操作二進制位(bit)的多個字段(field) 。它是對 BITFIELD 命令的支持,從 Redis 3.2 版本開始引入。

1. Bitfields 是什么?🧠

Redis 中的 String 是二進制安全的字節數組 ,一個 String 最多可以存儲 512MB 的數據。而 BITFIELD 命令允許我們在這些字節中定義多個 “位字段”(bitfield) ,每個字段可以是:

  • 指定長度的 有符號整數(signed integer)
  • 或者無符號整數(unsigned integer)

我們可以對這些字段進行 讀取、寫入、增減等操作 ,非常適合用于緊湊的數據表示和高效的狀態管理。

2. 使用場景

📅 用戶簽到系統用 1 bit 表示一天是否簽到,365 天只需 46 字節
🎮 游戲角色狀態存儲角色屬性、技能等級、成就等信息
📊 高頻計數器精確控制字段大小,節省內存空間
🧮 位標志集合代替多個布爾值,減少 key 數量

3. BITFIELD 常用命令🛠?

3.1 定義并操作多個字段
BITFIELD key [GET type pos] [SET type pos val] [INCRBY type pos delta]

參數說明

  • type:字段類型,如:
    • u4 表示 4 位無符號整數(0 ~ 15)
    • i8 表示 8 位有符號整數(-128 ~ 127)
  • pos:字段起始的 bit 位置(從 0 開始)
  • val:要設置的值
  • delta:增量值
3.2 示例操作🔁

① 記錄用戶每月簽到情況(31天)

# 設置第0天為已簽到(1),第1天未簽到(0)
BITFIELD user:1001:sign_in SET u1 0 1 SET u1 1 0# 查詢第0天和第1天簽到狀態
BITFIELD user:1001:sign_in GET u1 0 GET u1 1# 輸出
1) (integer) 1
2) (integer) 0

② 使用帶符號整數操作計數器

# 設置第0位為 4 位有符號整數,初始值為 5
BITFIELD user:points SET i4 0 5# 查詢該字段的值
BITFIELD user:points GET i4 0
(integer) 5# 增加 2
BITFIELD user:points INCRBY i4 0 2
(integer) 7# 減少 5
BITFIELD user:points INCRBY i4 0 -5
(integer) 2

③ 緊湊存儲個狀態字段

比如你想存儲一個游戲角色的狀態:

字段類型占用位數取值范圍
HP(生命值)無符號10 bits0 ~ 1023
MP(魔法值)無符號8 bits0 ~ 255
狀態標志有符號2 bits-2 ~ 1
# 初始化 HP=500, MP=200, 狀態=-1
BITFIELD player:101 SET u10 0 500 SET u8 10 200 SET i2 18 -1# 查詢所有字段
BITFIELD player:101 GET u10 0 GET u8 10 GET i2 18# 輸出
1) (integer) 500
2) (integer) 200
3) (integer) -1

4. Bitfields 的優勢

優點說明
💾 內存占用極低比多個 key 更節省內存
? 高效訪問所有操作都在一個 key 中完成
🧮 支持多種數據格式支持有符號/無符號整數
🔄 原子性操作支持原子增減,適合并發計數
🧩 結構靈活可自定義字段大小和偏移量

5. 注意事項??

  • 所有操作都是基于 bit 級別 ,需要自己計算偏移位置。
  • 不支持直接刪除某個字段,只能重置整個 key。
  • 如果字段超出范圍,會自動截斷(wrap around)或溢出。
  • 適用于內部狀態存儲,不適合頻繁查詢的業務邏輯。

結論:Redis 的 Bitfields 是一種強大的二進制字段操作工具,它允許你在字符串中按位定義多個字段,并對其進行讀寫、增減等操作,非常適合用來做狀態管理、簽到系統、緊湊計數器等高性能、低內存消耗的場景

六、Module 擴展模塊

Redis 支持通過加載模塊來擴展新的數據結構。例如:

📌 RedisJSON(JSON 數據結構)

  • 存儲 JSON 格式數據
  • 支持 JSONPath 查詢和修改字段
JSON.SET user:1001 $ '{"name":"Tom","age":25}'
JSON.GET user:1001 $.name

📌 RedisTimeSeries(時間序列數據庫)

  • 高效存儲和查詢時間序列數據(如監控指標、傳感器數據)
TS.CREATE temperature:1 LABELS sensor type temp
TS.ADD temperature:1 * 25.5
TS.RANGE temperature:1 0 -1

📌 其他常見模塊

  • RedisGraph(圖數據庫)
  • RedisSearch(全文搜索 + 聚合)
  • RedisAI(機器學習模型部署)

在這里插入圖片描述

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

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

相關文章

AutoGen——自定義Agent

目錄引子自定義 AgentCountDownAgentArithmeticAgent在自定義 Agent 中使用自定義模型客戶端讓自定義 Agent 聲明式化Selector Group Chat示例&#xff1a;網頁搜索 / 數據分析代理&#xff08;Agents&#xff09;Workflow終止條件&#xff08;Termination Conditions&#xff…

【重定向和轉發的核心理解】

重定向和轉發 不廢話&#xff1a; “轉發” 的核心定義&#xff1a; 服務端內部主導跳轉、客戶端無感知&#xff08;僅 1 次請求&#xff09;、瀏覽器 URL 不改變&#xff0c;與傳統 Web 開發中 “轉發” 的本質邏輯完全一致&#xff0c;只是實現載體&#xff08;Nginx 路由層 …

生成對抗網絡詳解與實現

生成對抗網絡詳解與實現0. 前言1. GAN 原理2. GAN 架構3. 損失函數3.1 判別器損失3.2 生成器損失3.4 VANILLA GAN4. GAN 訓練步驟0. 前言 生成對抗網絡 (Generative Adversarial Network, GAN) 是圖像和視頻生成中的主要方法之一。在本節中&#xff0c;我們將了解 GAN 的架構、…

FPGA硬件開發-XPE工具的使用

目錄 XPE 工具概述? XPE 使用步驟詳解? 1. 工具獲取與初始化? 2. 器件選擇與配置? 3. 電源電壓設置? 4. 資源使用量配置? 5. 時鐘與開關活動配置? 6. 功耗計算與報告生成? 報告解讀與電源設計優化? 常見問題與最佳實踐? 與實際功耗的差異處理? 工具版本…

CentOS 7.9 RAID 10 實驗報告

文章目錄CentOS 7.9 RAID 10 實驗報告一、實驗概述1.1 實驗目的1.2 實驗環境1.3 實驗拓撲二、實驗準備2.1 磁盤準備2.2 安裝必要軟件三、RAID 10陣列創建3.1 創建RAID 10陣列3.2 創建文件系統并掛載3.3 保存RAID配置四、性能基準測試4.1 初始性能測試4.2 創建測試數據集五、故障…

機器人逆運動學進階:李代數、矩陣指數與旋轉流形計算

做機器人逆運動學&#xff08;IK&#xff09;的時候&#xff0c;你遲早會遇到矩陣指數和對數這些東西。為什么呢&#xff1f;因為計算三維旋轉的誤差&#xff0c;不能簡單地用歐氏距離那一套&#xff0c;那只對位置有效。旋轉得用另一套方法——你需要算兩個旋轉矩陣之間的差異…

計算機視覺(opencv)實戰十八——圖像透視轉換

圖像透視變換詳解與實戰在圖像處理中&#xff0c;透視變換&#xff08;Perspective Transform&#xff09; 是一種常見的幾何變換&#xff0c;用來將圖像中某個四邊形區域拉伸或壓縮&#xff0c;映射到一個矩形區域。常見應用場景包括&#xff1a;糾正拍照時的傾斜&#xff08;…

【飛書多維表格插件】

coze中添加飛書多維表格記錄插件 添加單條記錄 [{"fields":{"任務詳情":"選項1","是否完成":"未完成"}}]添加多條記錄 [{"fields":{"任務詳情":"選項1","是否完成":"已完…

Java基礎 9.14

1.Collection接口遍歷對象方式2-for循環增強增強for循環&#xff0c;可以代替iterator選代器&#xff0c;特點&#xff1a;增強for就是簡化版的iterator本質一樣 只能用于遍歷集合或數組package com.logic.collection_;import java.util.ArrayList; import java.util.Collectio…

數據結構(C語言篇):(十三)堆的應用

目錄 前言 一、堆排序 1.1 版本一&#xff1a;基于已有數組建堆、取棧頂元素完成排序 1.1.1 實現邏輯 1.1.2 底層原理 1.1.3 應用示例 1.1.4 執行流程 1.2 版本二&#xff1a;原地排序 —— 標準堆排序 1.2.1 實現邏輯 1.2.2 底層原理 1.2.3 時間復雜度計算…

4步OpenCV-----掃秒身份證號

這段代碼用 OpenCV 做了一份“數字模板字典”&#xff0c;然后在銀行卡/身份證照片里自動找到身份證號那一行&#xff0c;把每個數字切出來跟模板比對&#xff0c;最終輸出并高亮顯示出完整的身份證號碼&#xff0c;下面是代碼解釋&#xff1a;模塊 1 工具箱&#xff08;通用函…

馮諾依曼體系:現代計算機的基石與未來展望

馮諾依曼體系&#xff1a;現代計算機的基石與未來展望 引人入勝的開篇 當你用手機刷視頻、用電腦辦公時&#xff0c;是否想過這些設備背后共享的底層邏輯&#xff1f;從指尖輕滑切換APP&#xff0c;到電腦秒開文檔&#xff0c;這種「無縫銜接」的體驗&#xff0c;其實藏著一個改…

前端基礎 —— C / JavaScript基礎語法

以下是對《3.JavaScript(基礎語法).pdf》的內容大綱總結&#xff1a;---&#x1f4d8; 一、JavaScript 簡介 - 定義&#xff1a;腳本語言&#xff0c;最初用于表單驗證&#xff0c;現為通用編程語言。 - 應用&#xff1a;網頁開發、游戲、服務器&#xff08;Node.js&#xff09…

springboot 二手物品交易系統設計與實現

springboot 二手物品交易系統設計與實現 目錄 【SpringBoot二手交易系統全解析】從0到1搭建你的專屬平臺&#xff01; &#x1f50d; 需求確認&#xff1a;溝通對接 &#x1f5e3; &#x1f4ca; 系統功能結構&#xff1a;附思維導圖 ☆開發技術&#xff1a; &#x1f6e…

【Android】可折疊式標題欄

在 Android 應用開發中&#xff0c;精美的用戶界面可以顯著提升應用品質和用戶體驗。Material Design 組件中的 CollapsingToolbarLayout 能夠為應用添加動態、流暢的折疊效果&#xff0c;讓標題欄不再是靜態的元素。本文將深入探討如何使用 CollapsingToolbarLayout 創建令人驚…

Debian13下使用 Vim + Vimspector + ST-LINK v2.1 調試 STM32F103 指南

1. 硬件準備與連接 1.1 所需硬件 STM32F103C8T6 最小系統板ST-LINK v2.1 調試器連接線&#xff08;杜邦線&#xff09; 1.2 硬件連接 ST-LINK v2.1 ? STM32F103C8T6 連接方式&#xff1a;ST-LINK v2.1 引腳STM32F103C8T6 引腳功能說明SWDIOPA13數據線SWCLKPA14時鐘線GNDGND共地…

第21課:成本優化與資源管理

第21課:成本優化與資源管理 課程目標 掌握計算資源優化 學習成本控制策略 了解資源調度算法 實踐實現成本優化系統 課程內容 21.1 成本分析框架 成本分析系統 class CostAnalysisFramework {constructor(config) {this.config

SAP HANA Scale-out 04:CalculationView優化

CV執行過程計算視圖激活時&#xff0c;生成Stored ModelSELECT查詢時&#xff1a;首先將Stored Model實例化為runtime Model 計算引擎執行優化&#xff0c;將runtime Model轉換為Optimized Runtime ModelOptimized Runtime Model通過SQL Optimizer進行優化計算引擎優化特性說明…

鴻蒙審核問題——Scroll中嵌套了List/Grid時滑動問題

文章目錄背景原因解決辦法1、借鑒Flutter中的解決方式&#xff0c;如下圖2、鴻蒙Next中對應的解決方式&#xff0c;如下圖3、官方文檔回訪背景 來源一次審核被拒的情況。也是出于粗心導致的。之前在flutter項目中也是遇到過這種問題的。其實就是滾動視圖內嵌滾動視圖造成的&am…

測試電商購物車功能,設計測試case

在電商場景中&#xff0c;購物車是連接商品瀏覽與下單支付的關鍵環節&#xff0c;需要從功能、性能、兼容性、安全性等多維度進行測試。以下是購物車功能的測試用例設計&#xff1a; 一、功能測試 1. 商品添加到購物車 - 未登錄狀態下&#xff0c;添加商品到購物車&#xff08;…