20250708-03-string結構及命令詳解_筆記

一、字符串操作

1. set命令

1)set命令詳解



  • 基本語法與參數
    • 命令格式:set key value [ex 秒數]/[px 毫秒數][nx]/[xx]
    • 有效期設置:
      • ex參數:以秒為單位設置過期時間,如set a 1 ex 10表示10秒有效
      • px參數:以毫秒為單位設置過期時間,如set a 1 px 9000表示9秒有效
    • 注意事項:
      • ex和px不要同時使用,否則以后面的參數為準
      • 例如set a 1 ex 100 px 9000實際以9000毫秒為準
  • 條件參數nx/xx
    • nx(not exist):
      • 僅當key不存在時才執行操作
      • 示例:set site www.baidu.com nx,若site已存在則操作無效
    • xx(exist):
      • 僅當key存在時才執行操作(相當于修改)
      • 示例:set site www.google.com xx,若site不存在則操作無效
    • 默認行為:
      • 不加參數時:key不存在則創建,存在則修改
  • 有效期沖突處理
    • 沖突規則:
      • 當ex和px同時指定時,以后面的參數為準
      • 示例:set search www.baidu.com ex 10 px 1567實際以1567毫秒為準
    • 實際應用:
      • 建議只使用一種時間單位(秒或毫秒)
      • 毫秒級精度更高,適合需要精確控制的場景
  • 相關輔助命令
    • ttl命令:查看key剩余生存時間(秒)
    • pttl命令:查看key剩余生存時間(毫秒)
    • persist命令:移除key的過期時間,使其永久有效
    • flushdb命令:清空當前數據庫所有key
  • 批量操作命令
    • mset命令:一次性設置多個鍵值對
      • 示例:mset key1 v1 key2 v2...
    • mget命令:一次性獲取多個key的值
      • 示例:mget key1 key2...
2)mset命令



  • 批量設置:一次性設置多個鍵值對,語法為mset key1 value1 key2 value2...
  • 實例演示:如mset a aman b bold c controller d diamond同時設置四個鍵值
  • 效率優勢:相比多次使用set命令,減少網絡往返時間,提升操作效率
  • 注意事項:所有鍵值必須成對出現,若參數數量為奇數會報錯
3)mget命令



  • 批量獲取:一次性獲取多個鍵的值,語法為mget key1 key2...
  • 實例演示:如mget a b c可同時獲取鍵a、b、c對應的值
  • 返回值順序:返回值的順序與請求鍵的順序嚴格對應
  • 特殊處理:當某個鍵不存在時,返回列表中對應位置顯示(nil)
  • 性能對比:與循環執行get命令相比,顯著減少網絡開銷
  • 相關字符串操作
    • 過期時間設置:
      • ex參數設置秒級過期(如set a 1 ex 10)
      • px參數設置毫秒級過期(如set a 1 px 9000)
      • 同時存在時以后出現的參數為準
    • 條件設置:
      • nx:僅當鍵不存在時設置(類似setnx)
      • xx:僅當鍵存在時設置
    • 字符串修改:
      • setrange key offset value:從指定偏移量開始修改字符串
      • 偏移量超長時自動用0x00填充(如setrange greet 6 !)
4)setrange命令



  • 基本功能
    • 命令格式: setrange key offset value
    • 核心作用: 修改字符串中指定偏移位置的字節內容
    • 操作原理: 從字符串的offset偏移位置開始,用value值進行覆蓋替換
  • 基礎示例
    • 示例演示:
    • 偏移規則: 字符串偏移量從0開始計算,如"hello"中h=0,e=1,l=2...
  • 邊界情況處理
    • 超長偏移處理: 當offset超過原字符串長度時,中間空缺部分會自動用

      0x000x000x00

      填充
    • 填充示例:
    • 內存變化: 命令返回值為修改后的字符串總長度
  • 實戰案例
    • 應用場景: 可用于實現文字游戲功能
    • 案例演示:
    • 注意事項: 替換內容長度可以與原內容不同,但會影響最終字符串長度
  • 特殊字符處理
    • 空位填充: 偏移量超過字符串長度時,中間空位會顯示為

      0x000x000x00

    • 顯示效果: 在Redis客戶端中會直接顯示為\x00字符
    • 內存占用: 這些填充字符會占用實際存儲空間
5)append命令



  • 功能描述: 將指定value追加到key的原值末尾
  • 語法格式: append key value
  • 操作示例:
    • 原值"he11o\x00!"執行append word @@后變為"he11o\x00!@@"
    • 演示了在字符串尾部追加內容的實際效果
  • 特點:
    • 操作簡單直接,類似字符串拼接
    • 會修改原始鍵值對內容
    • 返回值為操作后字符串的總長度
6)getrange命令
  • 功能描述: 獲取字符串中指定范圍的子串
  • 語法格式: getrange key start stop
  • 下標規則:
    • 左數從0開始,右數從-1開始
    • 示例:getrange title 0 3返回"chin"
    • 示例:getrange title 1 -2返回"hines"
  • 邊界情況:
    • start>=lengthstart >= lengthstart>=length

      時返回空字符串
    • stop>=lengthstop >= lengthstop>=length

      時截取至字符串結尾
    • 當start位置在stop右邊時返回空字符串
  • 注意事項:
    • 范圍包含start和stop位置字符
    • 支持正負索引混合使用
7)getset命令
  • 功能描述: 獲取舊值并設置新值
  • 語法格式: getset key newvalue
  • 特點:
    • 原子性操作,保證線程安全
    • 返回值為修改前的舊值
    • 示例:set cnt 0后執行getset會返回0
  • 使用場景:
    • 需要獲取當前值并更新的場景
    • 計數器等需要原子操作的場景
8)setrange命令
  • 功能描述: 從指定位置開始修改字符串內容
  • 語法格式: setrange key offset value
  • 操作示例:
    • setrange word 2 ??將"he11o"修改為"he??o"
    • setrange word 6 !在超出位置填充空字節后添加字符
  • 特點:
    • 可以覆蓋原有內容
    • 當offset超過原字符串長度時用空字節(

      \x00\x00\x00

      )填充
    • 返回值為修改后字符串的總長度
  • 與append區別:
    • setrange可指定修改位置
    • append只能在末尾追加
9)getrange命令



  • 基本語法: getrange key start stop
  • 作用: 獲取字符串中

    [start,stop][start,stop][start,stop]

    范圍的子串
  • 下標規則:
    • 左數從

      000

      開始
    • 右數從

      ?1-1?1

      開始(倒數第一個字符)
  • getrange命令使用示例

    

    • 正向索引示例:
      • set title 'chinese'后
      • getrange title 0 3返回"chin"
      • 解釋: 包含第0到第3個字符(含兩端)
    • 反向索引示例:
      • getrange title 1 -2返回"hines"
      • 應用場景: 如處理動詞時去掉"ing"后綴
        • 例:getrange status 0 -4可取出"work"(原詞為"working")
  • 特殊情況處理

    

    • 邊界條件:
      • 空字符串情況:
        • start≥lengthstart \geq lengthstart≥length

          (超出字符串長度)
        • startstartstart

          stopstopstop

          右邊(如

          start=6start=6start=6

          ,

          stop=3stop=3stop=3

      • 截斷處理:
        • stop≥lengthstop \geq lengthstop≥length

          時自動截取至字符串結尾
    • 記憶要點:
      • 范圍包含兩端字符(閉區間)
      • 反向索引時

        ?1-1?1

        表示最后一個字符
      • 無效范圍返回空字符串而非報錯
    • 相關命令:
      • getset key newvalue: 獲取舊值并設置新值
      • 示例:計數器場景中getset cnt 1返回"0"并更新值為1
10)getset命令



  • 功能特點:同時執行獲取舊值和設置新值兩個操作,原子性保證數據一致性
  • 典型應用:狀態更新場景(如睡眠->起床->工作狀態變更)
  • 返回值說明:返回的是被替換前的舊值
  • 操作示例:
  • 效率優勢:相比先get再set的兩步操作,減少網絡往返時間
11)incr和decr命令



  • incr和decr的基本操作

    
    • 基礎功能:
      • incr key:將key存儲的值加1,返回增加后的值
      • decr key:將key存儲的值減1,返回減少后的值
    • 特殊處理:
      • 不存在的key會被當作0處理后再執行操作
      • 數值范圍限制為64位有符號整數
    • 操作示例:
  • 應用場景:秒殺和搶票設計

    

    • 設計原理:利用內存操作的高性能和原子性特征
    • 實現方案:
      • 初始化商品數量:set product_count 100000
      • 用戶搶購時執行:decr product_count
      • 返回值≥0表示搶購成功,<0表示庫存不足
    • 優勢分析:
      • 避免直接操作關系型數據庫
      • 資格確認與實際訂單分離
      • 支持高并發請求處理
    • 注意事項:需要后續異步處理真實訂單數據
  • incrby和decrby命令

    

    • 擴展功能:
      • incrby key increment:按指定整數值增加
      • decrby key decrement:按指定整數值減少
      • incrbyfloat key increment:支持浮點數增量
    • 操作示例:
    • 使用場景:適用于需要批量調整數值的場景,如積分批量增減、年齡跨年更新等
12)incrby和decrby命令



  • 整型增減:
    • incrby key number:將鍵值增加指定整數,如incrby age 90將age從2增加到92
    • decrby key number:將鍵值減少指定整數,如decrby age 3將age從19減少到16
    • 基礎命令incr/decr是增減1的特例,如decr age使20變為19
  • 浮點增減:
    • incrbyfloat key floatnumber:支持浮點數增量,如incrbyfloat age 3.5使92變為95.5
    • 特殊場景:適用于需要半歲概念的場景(如29.5歲),演示中通過incrbyfloat age 0.5實現
13)setbit命令



  • 位讀取:
    • getbit key offset:獲取值二進制表示的指定位(左起從0編號)
    • 示例:字符'A'的二進制中,第1位為1,第2位為0,第7位為1
  • 位修改:
    • setbit key offset value:設置指定位的值并返回舊值
    • 注意事項:
      • offset過大會自動填充中間位為0
      • 演示中將字符'Q'通過位操作變為'q'(修改第7位)
  • 位運算:
    • BITOP operation destkey key1 [key2...]:支持AND/OR/NOT/XOR四種位運算
    • 特殊限制:NOT操作只能對單個key進行
    • 案例:通過bitop or char char lower實現大小寫轉換
14)例題:字母大小寫轉換



  • ASCII碼與大小寫轉換原理
    • 大小寫ASCII碼差異:大寫字母與小寫字母在ASCII碼表中相差32,例如大寫A是65,小寫a是97。
    • 二進制位規律:大寫字母與小寫字母的二進制表示在第5位(從右數第3位)不同,大寫為0,小寫為1。如A(65)是01000001,a(97)是01100001。
    • 轉換方法:通過位操作直接加減32即可實現大小寫轉換,比if-else判斷更高效。
  • Redis位操作命令
    • setbit命令:
      • 功能:設置指定偏移量上的二進制位值
      • 語法:setbit key offset value
      • 返回值:該位上的舊值
      • 注意事項:offset過大會自動填充0
    • getbit命令:
      • 功能:獲取指定偏移量上的二進制位值
      • 語法:getbit key offset
      • 編號規則:從左從0開始編號
  • BITOP位運算
    • 功能:對多個key進行位運算并將結果保存到目標key
    • 支持的運算:AND(與)、OR(或)、NOT(非)、XOR(異或)
    • 語法:BITOP operation destkey key1 [key2...]
    • 應用場景:可用于批量處理二進制數據,如同時修改多個標志位
  • 通用大小寫轉換實現
    • 核心思路:利用ASCII碼中大小寫字母固定的32差值
    • 優勢:無需逐個字母判斷,通過統一位操作即可完成
    • 實現步驟:
      • 獲取字符的ASCII碼值
      • 通過位操作修改第5位
      • 將結果寫回Redis
    • 效率對比:比傳統的條件判斷方法更高效,特別適合批量處理
2. setbit命令詳解



  • 基本原理:通過修改ASCII碼的二進制位實現大小寫轉換
  • 關鍵位:ASCII碼中第2位(偏移量2)決定大小寫,1為小寫,0為大寫
  • 操作示例:
    • 將字符'A'變為'a':setbit char 2 1
    • 將字符'b'變為'B':setbit char 2 0
    • 獲取字符值:get char
1)例題:設置字符為小寫
  • 解題步驟:
    • 確定要修改的位偏移量(ASCII碼第2位)
    • 使用setbit命令將該位設為1
    • 驗證結果使用get命令
  • 關鍵點:無論原字符是什么,通過修改第2位都能實現大小寫轉換
1)setbit命令的注意事項



  • 參數限制:
    • offset最大值為

      232?12^{32}-1232?1

      (4294967295)
    • 超過限制會報錯:"ERR bit offset is not an integer or out of range"
  • 自動填充:當offset過大時,中間會自動填充0
  • 內存影響:大offset操作會占用大量內存(最大512MB)
  • 位操作原理
    • 內存計算:
      • 最大offset為N時,需要

        (N+1)/8(N+1)/8(N+1)/8

        個字節
      • 2322^{32}232

        位 = 512MB內存
    • 驗證方法:
      • 嘗試setbit char 4294967296 1會報錯
      • setbit char 4294967295 1可以成功
  • BITOP命令
    • 操作類型:AND、OR、NOT、XOR
    • 使用示例:
      • bitop or char char lower 將字符轉為小寫
      • NOT操作只能對單個key進行
    • 注意事項:操作結果會保存到destkey中
3. bitop命令



1)bitop命令介紹
  • 基本語法: bitop operation destkey key1 [key2...]
  • 操作類型:
    • AND: 按位與操作
    • OR: 按位或操作
    • NOT: 按位非操作(注意:NOT操作只能對單個key執行)
    • XOR: 按位異或操作
  • 存儲機制: 將操作結果保存到destkey中
  • 字符串限制:
    • offset最大值為

      232?12^{32}-1232?1

    • 由此可推出最大字符串長度為512MB
2)bitop操作示例



  • setbit使用:
    • setbit lower 7 0:將lower鍵的第7位設為0
    • setbit lower 2 1:將lower鍵的第2位設為1
  • get操作驗證:
    • get lower:查看設置后的二進制值
    • set char Q:設置字符'Q'
    • bitop or char char lower:對char和lower執行OR操作后存回char
    • 結果驗證:get char返回"q",說明大小寫轉換成功
3)位操作與字符串變化



  • 位操作本質:
    • 通過設置特定bit位(如第2位)為1,創建"觸發器鍵"
    • OR操作特性:任何值與觸發器OR操作后,對應位必然變為1
    • AND操作特性:與特定掩碼AND操作可清除指定位
  • 最大偏移量驗證:
    • setbit char 4294967295 1:成功設置最大偏移量
    • setbit char 4294967296 1:報錯"bit offset out of range"
  • 內存計算:
    • 最大字符串值計算公式:

      232?2?3=512MB2^{32}*2^{-3}=512MB232?2?3=512MB

    • 每個字節對應8個bit位
4)大小寫轉換操作



  • 小寫轉換器:
    • setbit lower 2 1:設置第2位為1(ASCII大小寫差異位)
    • 任何字符與lower執行OR操作后,對應字母變為小寫
    • 示例:'Q'(01010001)OR lower → 'q'(01110001)
  • 大寫轉換器:
    • 創建特定掩碼(如11011111)
    • 通過AND操作清除第5位實現大寫轉換
  • 實際應用:
  • 注意事項:
    • NOT操作只能作用于單個key
    • 位操作會直接修改原始值,建議先備份重要數據
    • 大偏移量操作可能影響性能,需謹慎使用
二、知識小結

知識點

核心內容

關鍵參數/用法

應用場景

SET命令

設置字符串類型鍵值

EX(秒級過期)、PX(毫秒級過期)、NX(僅不存在時設置)、XX(僅存在時更新)

緩存設置、分布式鎖

MSET/MGET

批量設置/獲取多個鍵值

原子性操作多個鍵值對

初始化配置、批量數據查詢

SETRANGE

修改字符串指定偏移量內容

offset(從0開始)、自動用0x00填充空缺

字符串局部修改、掩碼處理

GETRANGE

獲取字符串子串

支持負偏移量(從-1開始反向計數)

提取固定格式數據(如文件擴展名)

APPEND

字符串追加操作

自動擴展原始字符串

日志追加、消息隊列

INCR/DECR

原子增減操作

INCRBY/DECRBY指定步長、INCRBYFLOAT浮點增減

計數器、秒殺庫存控制

位操作

二進制位級別操作

SETBIT(設置特定位)、BITOP(位運算AND/OR/XOR)

布隆過濾器、權限位圖

GETSET

獲取舊值并設置新值

原子性取值+更新操作

狀態機轉換記錄

字符串限制

最大長度限制

通過位偏移推算最大支持512MB字符串

大數據存儲場景

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

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

相關文章

SpringBoot3-集成MybatisPlus

此次操作是在多模塊下進行的&#xff0c;SpringBoot3-規劃多模塊目錄 添加管理依賴 根模塊 zibocoder-parent 的 pom.xml 中添加 MybatisPlus bom 管理依賴 <properties>...<mybatis-plus.version>3.5.12</mybatis-plus.version>... </properties> <…

部署MongoDB

環境:CentOS7 添加 MongoDB 官方 YUM 倉庫 sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo 將以下內容粘貼到文件中(以 MongoDB 6.0 為例): [mongodb-org-6.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86…

重學前端002 --響應式網頁設計 CSS 基礎

文章目錄css 樣式特殊說明根據在這里 Freecodecamp 實踐&#xff0c;調整順序后做的總結。 css 樣式 body {background-color: red; # 跟background-image 不同時使用background-image: url(https://cdn.freecodecamp.org/curriculum/css-cafe/beans.jpg);font-family: sans-…

Zig高并發爬取數據簡潔模版

上文中我們介紹了Zig語言得爬蟲的有些優劣勢&#xff0c;想必大家對于自身項目選擇那種語言做爬蟲應該有些思路了&#xff0c;今天我將使用Zig的標準庫來構建一個簡單的高并發爬蟲模板。由于Zig的異步機制和標準庫中的http模塊&#xff0c;我們可以實現一個基于事件循環的爬蟲。…

IS-IS 協議 | LSP 傳輸與鏈路狀態數據庫同步機制

略作整理&#xff0c;待校。IS-IS 中 SRM 與 SSN 標志的作用及協同機制 SRM 和 SSN 標志的作用 在 IS-IS 協議中&#xff0c;SRM 和 SSN 是兩個關鍵標志&#xff0c;用于控制和優化 LSP&#xff08;Link State PDU,鏈路狀態信息&#xff09;在網絡中的泛洪與同步過程。 一、SRM…

xxl-job 改造適配pg數據后的Jenkins自動部署

接上文適配pg數據庫之后需要進行部署&#xff0c;便有了此文 1.下載并安裝Jenkins如下&#xff1a; https://mirrors.jenkins.io/war-stable/2.504.3/jenkins.war nohup java -jar jenkins.war --httpPort8080 & 啟動Jenkins并解鎖安裝需要的環境&#xff0c;git&#xff0…

數據庫Oracle從入門到精通!第四天(并發、鎖、視圖)

八、并發控制數據庫是一個共享資源&#xff0c;可以為多個應用程序所共享&#xff0c;這些程序可以串行執行&#xff08;排隊執行&#xff09;&#xff0c;但是很多情況下&#xff0c;可能出現多個程序或一個程序中的多個進程并行的執行&#xff0c;這就是數據庫的并行操作&…

EXCEL(帶圖)轉html

文章目錄敘述1、效果2、excel 轉換主邏輯3、其他補充3.0 主前端bootstrap3.1 my.css&#xff1a;3.2 my.js3.3 入口home.html3.4 Data.ashx敘述 要實現H5 展示excel 查詢 了一下沒有好的辦法,自己寫了一個,簡單記錄一下 1、效果 用bootstrap 根據sheet做了一個菜單。 2、exc…

小程序富文本Editor插入圖片、超鏈接、公式等的一次嘗試

小程序插入圖片 通過EditorContext.insertImage接口可以實現圖片的插入&#xff1a; EditorContext.insertImage({src,width,height,data, })如何插入超鏈接、公式、視頻、表格等等? 通過EditorContext.insertCustomBlock應該是可以實現的&#xff0c;具體實現方式我沒有了…

傳輸層協議TCP、UDP

傳輸層協議TCP、UDP 1、TCP和UDP報文格式 傳輸層協議TCPvsUDP 傳輸層主要兩個傳輸協議&#xff0c;分別是TCP和UDP&#xff0c;負責提供流量控制、排序服務和錯誤校驗。 &#xff08;1&#xff09;TCP是面向連接的&#xff0c;一般用于傳輸數據量比較少&#xff0c;且對可靠性要…

設計模式—專欄簡介

大學總是忙著參加ACM實驗室的各種事情&#xff0c;到了畢業的時候&#xff0c;對于設計模式也是僅了解單例模式。畢業后&#xff0c;剛開始代碼也是亂寫一通&#xff0c;完全沒有章法。整個開發環境也是為了解決問題&#xff0c;從來沒有考慮結構化什么的&#xff08;沒辦法&am…

面試150 鏈表的復制

思路 python可以使用調庫法&#xff0c;使用深度拷貝 """ # Definition for a Node. class Node:def __init__(self, x: int, next: Node None, random: Node None):self.val int(x)self.next nextself.random random """class Solution:de…

MySQL分布式ID沖突詳解:場景、原因與解決方案

引言 在分布式系統開發中&#xff0c;你是否遇到過這樣的崩潰時刻&#xff1f;——明明每個數據庫實例的自增ID都從1開始&#xff0c;插入數據時卻提示“Duplicate entry ‘100’ for key ‘PRIMARY’”&#xff1b;或者分庫分表后&#xff0c;不同庫里的訂單ID竟然重復&#x…

c++文字游戲_闖關打怪2.0(開源)

本次更新內容: 1.增強對手性能 2.可暫停(按N) 3.修復些許bug 4.增加boos關(第10、20、30...關) 1. 游戲概述 本游戲是一個基于Windows控制臺的回合制戰斗游戲,采用俯視視角的2D平面設計。玩家控制角色"p"在1325大小的封閉場景中與敵人"@"戰斗,通過…

Java學習第十二部分——idea各種項目簡介

目錄 一.前言 二.語言介紹 三.生成器介紹 四.拓展 一.前言 打開idea項目創建時發現如上情況&#xff0c;“新建項目”下面的是語言&#xff0c;生成器下面的是這些語言對應的生成器工具&#xff0c;本文將簡單介紹。 二.語言介紹 Java 用途&#xff1a;Java是一種廣泛使…

Codeforces Round 868 (Div. 2) D. Unique Palindromes(1900,構造)

Problem - D - Codeforces 不錯的字符串構造體&#xff0c;記錄一下 首先注意到k≤20這一條件。對于一個長度為n的字符串&#xff0c;最多有n個不同的回文子串&#xff0c;這種情況出現在所有字符都相同時。因此&#xff0c;限制條件中的xi必須滿足xi≤ci&#xff0c;且相鄰兩…

ClickHouse 全生命周期性能優化

引言 ClickHouse作為列式存儲的OLAP數據庫&#xff0c;以其極致的查詢性能著稱&#xff0c;但"高性能"并非開箱即用。不合理的表設計、SQL寫法或集群配置&#xff0c;可能導致性能衰減甚至服務不可用。本文基于ClickHouse 24.3版本&#xff0c;從設計規范、開發規范、…

Linux sed 命令 詳解

在 Linux 系統中&#xff0c;sed&#xff08;Stream Editor&#xff09;是一個非常強大且靈活的文本處理工具。它不僅可以用于簡單的文本替換、刪除和插入操作&#xff0c;還能實現復雜的文本轉換任務。 &#x1f4cc; 一、什么是 sed&#xff1f; sed 是一個基于模式匹配對文…

項目進度同步不及時,如何提升信息透明度

項目進度同步不及時的核心問題包括溝通渠道不暢通、缺乏統一的信息平臺、未建立明確的進度更新機制、團隊意識不足、責任劃分不明確等。其中&#xff0c;缺乏統一的信息平臺最為關鍵。統一的信息平臺能夠確保所有相關人員實時掌握最新的進度狀態&#xff0c;避免信息孤島&#…

使用各種CSS美化網頁

實驗目的1.理解CSS的概念&#xff0c;掌握CSS定義樣式的方法&#xff0c;具備使用CSS和相關庫進行界面樣式設計的能力。 2.掌握Bootstrap 5的基本使用方法。3.Bootstrap框架練習實驗步驟1. 實驗準備創建一個HTML文件&#xff08;如 index.html&#xff09;。引入Bootstrap5的CS…