RBSP、SODB、EBSP三者的區別和聯系 SPS: sequence parameter sets

SODB:最原始的編碼數據,沒有任何附加數據
RBSP:在 SODB 的基礎上加了rbsp_stop_ont_bit(bit 值為 1)并用 0 按字節補位對齊
EBSP:在 RBSP 的基礎上增加了防止偽起始碼字節(0X03)

?

SPS: sequence parameter sets
它指的是碼流對應的profile.

1.1 基線profile(Baseline profile)
???? 遵循基線profile的碼流應該遵循以下的約束:

???? a) 只有I和P切片存在
????? b) NAL單元流不應該有范圍在2到4的nal_unit_type值,包括2和4.
???? c) 序列參數集(sps)的frame_mbs_only_fag(之后介紹)應該等于1
???? d) 圖象參數值(psp)的weighted_pred_flag和weighted_bipred_idc都應該為0
???? e) 圖象參數值(psp)的entropy_coding_mode_flag應該等于0
????? f) 圖象參數值(psp)的num_slice_groups_minus1應該在0到7之間,包括0和7**psp部分參數含義在關于psp的文章中給出。
????? g) 對于基線profile對應的level度應該滿足.


?????? 符合基線profile的碼流的profile_idc被賦66.符合一定level的基線Baseline的解碼器應該可以解碼所有的profile_idc等于66的碼流或constrained_set0_flag(等會介紹)為1而且level_idc(在level部分介紹)少于或等于一個指定的level的碼流。

1.2 主profile(Main profile)
???? 符合主profile的碼流應該遵循以下的約束:

a) 只有I,P,B切片存在.
b) NAL單元流不包括nal_unit_type值范圍在2-4之內的值。包括2和4.
c) 不能允許有隨意順序的切片
d) 圖像參數集(psp)的num_slice_groups_minus1應該只為0
e) 圖像參數集(psp)的redundant_pic_cnt_present_flag應該只為0
f) 對于主profile所要求的level級需要達到。


????? 符合主profile的碼流的profile_idc應為77。符合指定level的主profile的解碼器應該可以解碼所有的profile_idc為77的或constrained_set1_flag值為1且level_idc值小于或等于指定level的碼流。

1.3 擴展profile(Extended profile)
符合擴展profile的碼流應該遵循以下的約束:

a) 序列參數集的direct_8x8_inference_flag值應該為1
b) 圖像參數集的entropy_coding_mode_flag值應該為0
c) 圖像參數集的num_slice_groups_minus1的值范圍為0到7,包括0和7
d) 對于擴展profile指定的level級應該被達到


?????? 符合指定level級的擴展profile的解碼器可以解碼所有的profile_idc值為88的或constrained_set2_flag值為1的,而且level_idc小于等于指定level級的碼流。

?????? 符合指定level級的擴展profile的解碼器可以解碼所有的profile_idc值為66的或constrained_set0_flag值為1的,而且level_idc小于等于指定level級的碼流。


當constrained_set0_flag值為1的時候,就說明碼流應該遵循基線profile(Baseline profile)的所有約束.constrained_set0_flag值為0時,說明碼流不一定要遵循基線profile的所有約束。
當constrained_set1_flag值為1的時候,就說明碼流應該遵循主profile(Main profile)的所有約束.constrained_set1_flag值為0時,說明碼流不一定要遵循主profile的所有約束。
當constrained_set2_flag值為1的時候,就說明碼流應該遵循擴展profile(Extended profile)的所有約束.constrained_set2_flag值為0時,說明碼流不一定要遵循擴展profile的所有約束。

注意:當constraint_set0_flag,constraint_set1_flag或constraint_set2_flag中不只一個值為1的話,那么碼流必須滿足所有相應指明的profile約束。
Reserved. Set to 0.
Reserved. Set to 0.
它指的是碼流對應的level級.

5.1 獨立于profile的level約束
讓fR是這樣一個變量:
a) 如果圖像n是一幀,fR設為1/172
b) 如果圖像n是一個場,fR設為1/(172*2)

任何profile下的指定的level都應該滿足如下約束:
a) 理論上可訪問單元n從CPB中的移除時間滿足這樣的約束:t(n)-t(n-1)要比Max(PicSizeInMbs,MaxMBPS,fR)值大或相等,MaxMBPS是說在level表中指出的對于圖像n的值,PicSizeInMbs是指在圖像n中的宏塊數。
b) 如果圖像n是一個輸出圖像而且它不是碼流的最后一個輸出圖象,從DPB中取出的連續的輸出圖象差滿足:Dt(n) >= Max(PicSizeInMbs, MaxMBPS, fR), MaxMBPS是指對于圖象n來說的相應的值。PicSizeInMbs指圖象n的宏塊。
c) 對于可訪問單元0的NumBytesInNALunit變量的總和少于或等于256*ChromaFormatFactor*(PicSizeInMbs+MaxMBPS*tr(0)-trn(0)/MinCR,MaxMBPS和MinCR是圖象0在level表中相應的值,PicSizeInMbs是圖象0的宏塊數量。
d) 對于可訪問單元n的NumBytesInNALunit值的總和是小于或等于256*ChromaFormatFactor*MaxMBPS*(tr(n)-trn(n-1))/MinCR,MaxMBPS和MinCR的值是圖像n在level級表中對應的值。
e) PicWidthInMbs * FrameHeightInMbs <= MaxFS, MaxFS是在level表中指定的值。
f) PicWidthInMbs <= Sqrt(MaxFS * 8)
g) FrameHeightInMbs <= Sqrt(MaxFS * 8)
h) max_dec_frame_buffering <=MaxDpbSize, MaxDpbSize等于Min(1024 * MaxDPB / (PicWidthInMbs * FrameHeightInMbs * 256 * ChromaFormatFactor,16),MaxDPB是對于1024字節單元的MaxDPB值,max_dec_frame_buffering也叫做DPB大小值。
i) 對于VCL HRD參數值,至少對于一個SchedSelIdx值來說,碼率BitRate[SchedSelIdx] <= 1000 * MaxBR且CpbSize[SchedSelIdx] <= 1000 * MaxCPB。MaxBR和MaxCPB是對于1000bits/s和1000位單元對應于level級表的值。碼流應該為0到cpb_cnt_minus1中的一個值,包括0和cpb_cnt_minus1.CpbSize[SchedSelIdx]也叫做CPB大小值。
j) 對于NAL HRD參數來說,BitRate[SchSelIdx] <= 1200 * MaxBR且CpbSize[SchedSelIdx] <= 1200 * MaxCPB,MaxBR和MaxCPB是在1200bits/s和1200位的單元值在極限level下的值。碼流應該滿足至少SchedSelIdx值從0到cpb_cnt_minus1中的一個值。
k) 在亮度幀采樣中,垂直運動向量元素范圍不能超過MaxVmvR,MaxVmvR值在level極限表中提供
l) 在亮度幀采樣單元中,水平運動向量范圍不能超過-2048到2047.75,包括-2048和2047.75。
m) 按解碼順序的兩個連續的宏愉的運動向量的數量不超過MaxMvsPer2Mb(對于當前宏塊的最后一個切片和下一個宏塊的第一個切片也適用),MaxMvsPer2Mb值在level極限表中提供.
n) 對于任何宏塊的macroblock_layer()的位數值都不能大于128 + 2048 * ChromaFormatFactor.依賴于entropy_coding_mode_flag值,macroblock_layer()的值由如下方式計算
如果entropy_coding_mode_flag值為0的話,macroblock_layer()的值由macroblock_layer()的對于一個macroblock的語法結構給出
其他情況下,對于一個宏塊的macroblock_layer()值是由read_bits(1)給出的.
5.2 與profile相關的level級
對于基線profile,主profile和擴展profile的相應的level級約束在H.264的文檔中有表可查。
seq_parameter_set_id指定了由圖像參數集指明的序列參數集。seq_parameter_set_id值應該是從0到31,包括0和31
注意:當可用的情況下,編碼器應該在sps值不同的情況下使用不同的seq_parameter_set_id值,而不是變化某一特定值的seq_parameter_set_id的參數集的語法結構中的值。
log2_max_frame_num_minus4指定了變量MaxFrameNum的值, MaxFrameNum = 2(log2_max_frame_num_minus4+4)
log2_max_frame_num_minus的值應該在0到12之間,包括0和12.
pic_order_cnt_type指定了解碼圖像順序的方法。pic_order_cnt_type的值是0,1,2。
pic_order_cnt_type在當一個編碼視頻序列有如下限定時不為2
a) 包含非參考幀的可訪問單元,并緊接著一個包含非參考可訪問單元
b) 兩個可訪問單元,它們分別包含兩個場中的一個,它們一塊兒組成了一個互補的非參考場對,被緊接著一個包括非參考圖像的可訪問單元。
c) 一個包含非參考場的可訪問單元,并緊接著一個包含另一個非參考圖像的可訪問單元,它們不組成互補的非參考場對。
log2_max_pic_order_cnt_lsb_minus4指出變量MaxPicOrderCntLsb的值,它是在解碼過程中使用到的圖像順序計算值:
MaxPicOrderCntLsb = 2(log2_max_pic_order_cnt_lsb_minus4+4)
log2_max_pic_order_cnt_lsb_minus4的值為包括0和12以及它們之間的值。
delta_pic_order_always_zero_flag等于1的時候表示當delta_pic_order_cnt[0]和delta_pic_order_cnt[1]在序列的切片頭中不存在,并被認為是0。
delta_pic_order_always_zero_flag值等于0時表示delta_pic_order_cnt[0]在序列的切片頭中存在而delta_pic_order_cnt[1]可能在序列的切片頭中存在。
offset_for_non_ref_pic被用來計算一個非參考圖像的圖像順序值。offset_for_non_ref_pic值取值范圍為(-2)^(31)到2^(31)-1,包括邊界值。
offset_for_top_to_bottom_field被用來計算一幀中的下場的圖像順序值。
offset_for_top_to_bottom_field值的取值范圍為(-2)^(31)到(2)^(31)-1,包括邊界值。
num_ref_frames_in_pic_order_cnt_cycle在解碼過程中被用來計算圖像順序值。
num_ref_frames_in_pic_order_cnt_cycle在0到255之間取值,包括邊界值。
[i]
offset_for_ref_frame[i]是一列num_ref_frames_in_pic_order_cnt_cycle中的一個元素,它被在解碼過程的解碼順序值中使用。
offset_for_ref_frame[i]的值為(-2)^31到(2)^(31)-1,包括邊界值。
num_ref_frames指定了長期的和短期的參考幀的最大總數目,互補的參考場對和在解碼過程。
gaps_in_frame_num_value_allowed_flag值指明了frame_num允許的值和解碼過程中的frame_num的差距值。
pic_width_in_mbs_minus1加1指明了對于每個解碼圖像中的寬度值。在宏塊單元中的圖像寬度的變量值為:
PicWidthInMbs = pic_width_in_mbs_minus1+1;
對于亮度元素來說圖像寬度變量的值:
PicWidthInSamplesL = PicWidthInMbs * 16;
對于色度元素來說圖像寬度變量的值:
PicWidthInSamplesC = PicWidthInMbs * 8;
pic_height_in_map_units_minus1指明了解碼幀或場中的一個切片組的高度。變量PicHeightInMapUnits的值和PicSizeInMapUnits:
PicHeightInMapUnits = pic_height_in_map_units_minus1 + 1;
PicSizeInMapUnits = PicWidthInMbs * PicHeightInMapUnits
frame_mbs_only_flag等于0指明了視頻序列的編碼圖象可能是編碼場或編碼幀。frame_mbs_only_flag等于1指明了每個編碼視頻序列的編碼圖像都是只含幀宏塊的編碼幀。
依賴于frame_mbs_only_flag的值,pic_height_in_map_units_minus1如下定義:
如frame_mbs_only_flag等于0,pic_height_in_map_units_minus1就是宏塊單元的場高
如frame_mbs_only_flag等于1,pic_height_in_map_units_minus1就是宏塊單元的場寬
FrameHeightInMbs的值:
FrameheightInMbs = ( 2 - frame_mbs_only_flag ) * PicHeightInMapUnits
mb_adaptive_frame_field_flag等于0表明在一個圖像內不能切換使用幀和場宏塊。
mb_adaptive_frame_field_flag等于1表示在一幀中有可能使用場和幀的切換,當mb_adaptive_frame_field_flag沒有設定的時候,應該賦給0.
direct_8x8_inference_flag指明了在亮度運動向量生成B_Skip,B_Direct_16x16和B_Direct_8x8的方法。
當frame_mbs_only_flag為0時,direct_8x8_inference_flag應為1
frame_cropping_flag等于1表明在sps中下一個使用的幀剪切偏移量參數。frame_cropping_flag等于0表明幀剪切偏移量不存在。
指明了在一個窗中一幀的采樣值。
vui_parameters_present_flag等于1表示vui_parameters()在碼流中是存在的,vui_parameters_present_flag等于0表明vui_parameters()在碼流中不存在。
rbsp_stop_one_bit??????? 恒等于1
rbsp_alignment_zero_bit????? 恒等于0.
Note:
?????? More detail need refer to
?????? 1). Advanced video coding for generic audiovisual services.pdf P63.
?????? 2). Refer to ISOIEC 14496-10-2005-PDAM 3.doc P40


rbsp_trailing_bits( ) { C Descriptor
??? rbsp_stop_one_bit /* equal to 1 */ All f(1)
??? while( !byte_aligned( ) )????
?????? rbsp_alignment_zero_bit /* equal to 0 */ All f(1)
}????


seq_parameter_set_rbsp( ) { C Descriptor
??? profile_idc 0 u(8)
??? constraint_set0_flag 0 u(1)
??? constraint_set1_flag 0 u(1)
??? constraint_set2_flag 0 u(1)
??? constraint_set3_flag 0 u(1)
??? reserved_zero_4bits /* equal to 0 */ 0 u(4)
??? level_idc 0 u(8)
??? seq_parameter_set_id 0 ue(v)
??? if( profile_idc = = 83 ) {????
?????? seq_parameter_set_svc_extension( ) /* specified in Annex F */????
??? }????
??? if( profile_idc = = 100 | | profile_idc = = 110 | |
??????? profile_idc = = 122 | | profile_idc = = 144 | |
??????? profile_idc = = 83 ) {????
?????? chroma_format_idc 0 ue(v)
?????? if( chroma_format_idc = = 3 )????
?????????? residual_colour_transform_flag 0 u(1)
?????? bit_depth_luma_minus8 0 ue(v)
?????? bit_depth_chroma_minus8 0 ue(v)
?????? qpprime_y_zero_transform_bypass_flag 0 u(1)
?????? seq_scaling_matrix_present_flag 0 u(1)
?????? if( seq_scaling_matrix_present_flag )????
?????????? for( i = 0; i < 8; i++ ) {????
?????????????? seq_scaling_list_present_flag[ i ] 0 u(1)
?????????????? if( seq_scaling_list_present_flag[ i ] )????
????????????????? if( i < 6 )????
????????????????????? scaling_list( ScalingList4x4[ i ], 16,
?????????????????????????????????????? UseDefaultScalingMatrix4x4Flag[ i ]) 0??
????????????????? else????
????????????????????? scaling_list( ScalingList8x8[ i – 6 ], 64,
?????????????????????????????????????? UseDefaultScalingMatrix8x8Flag[ i – 6 ] ) 0??
?????????? }????
??? }????
??? log2_max_frame_num_minus4 0 ue(v)
??? pic_order_cnt_type 0 ue(v)
??? if( pic_order_cnt_type = = 0 )????
?????? log2_max_pic_order_cnt_lsb_minus4 0 ue(v)
??? else if( pic_order_cnt_type = = 1 ) {????
??????? 0 u(1)
?????? offset_for_non_ref_pic 0 se(v)
?????? offset_for_top_to_bottom_field 0 se(v)
?????? num_ref_frames_in_pic_order_cnt_cycle 0 ue(v)
?????? for( i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++ )????
?????????? offset_for_ref_frame[ i ] 0 se(v)
??? }????
??? num_ref_frames 0 ue(v)
??? gaps_in_frame_num_value_allowed_flag 0 u(1)
??? pic_width_in_mbs_minus1 0 ue(v)
??? pic_height_in_map_units_minus1 0 ue(v)
??? frame_mbs_only_flag 0 u(1)
??? if( !frame_mbs_only_flag )????
?????? mb_adaptive_frame_field_flag 0 u(1)
??? direct_8x8_inference_flag 0 u(1)
??? frame_cropping_flag 0 u(1)
??? if( frame_cropping_flag ) {????
?????? frame_crop_left_offset 0 ue(v)
?????? frame_crop_right_offset 0 ue(v)
?????? frame_crop_top_offset 0 ue(v)
?????? frame_crop_bottom_offset 0 ue(v)
??? }????
??? vui_parameters_present_flag 0 u(1)
??? if( vui_parameters_present_flag )????
?????? vui_parameters( ) 0??
??? rbsp_trailing_bits( ) 0??
}????

delta_pic_order_cnt_bottom 表示一個編碼幀的底場和頂場的圖像順序數之間的差.


PicInterlace代表幀級隔行掃描,MbInterlace代表宏塊級隔行掃描
PicInterlace???????????? = 0???? # Picture AFF??? (0: frame coding, 1: field coding, 2:adaptive frame/field coding)
MbInterlace????????????? = 0???? # Macroblock AFF (0: frame coding, 1: field coding, 2:adaptive frame/field coding) .


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jiangdf/archive/2009/06/08/4252071.aspx

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

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

相關文章

【Python基礎入門系列】第04天:Python 流程控制

在編程的世界中&#xff0c;流程控制是程序員運行的基礎&#xff0c;流程控制決定了程序按照什么樣的方式去執行&#xff0c;本節給大家介紹 Python 流程控制相關語法。 if 語句 if 語句表示如何發生什么樣的條件&#xff0c;執行什么樣的邏輯。 Python程序語言指定任何非0和…

UGLY NUMBERS II

不去重錯誤版 17.4.23 long isMin (long a, long b) { if (a > b) a b; return a;}long nthUglyNumber(long n) { long *l (long*)malloc(n*sizeof(long)); for (long i 0; i < n; i) l[i] 0; l[0] 1; long p2, p3, p5 0; for(long i 0; i < n - 1; i) { l[i …

excel合并兩列內容_還在為合并WPS表格(Excel)中兩列內容而犯愁?此方法簡單高效...

我們在處理WPS表格(Excel)數據時&#xff0c;時常需要將兩列甚至更多列的內容合并顯示在同一列中&#xff0c;就像這樣&#xff1a;這個時候大家是怎么解決的呢&#xff1f;路人&#xff1a;復制粘貼So easy&#xff01;小杜&#xff1a;不止兩三行啊……路人&#xff1a;復制粘…

Css基本語法及頁面引用

Css基本語法及頁面引用 CSS代碼出現在三個地方 </head><body><b style....>兄弟連</b> <!-- 1. 行內樣式,內聯樣式, 作為 style屬性值 --></body>css基本語法 css的定義方法是&#xff1a; 選擇器 { 屬性:值; 屬性:值; 屬性:值;} 選…

【Python基礎入門系列】第05天:Python函數

前面我們寫過九九乘法表&#xff0c;但如果我要七七乘法表或五五乘法表的話&#xff0c;你會看到三者代碼極其類似&#xff0c;只是循環變量不同&#xff0c;那么如何做到代碼重用&#xff0c;而不是簡單拷貝黏貼修改呢&#xff0c;其實可是使用函數完成這一功能! 先來試著看一…

【Java基礎】 JQuery的常用操作

jQuery的常用操作一、隱藏顯示對象id為test的元素的display修改成了“none”&#xff0c;即隱藏了id為test的元素&#xff1a;$(#test).css(display,none)或$(#test).style.display"none"我們經常用到的是切換一個元素的隱藏與現實&#xff0c;下面給出代碼&#xff…

store_coding_state (cs_cm)的作用

// 以下是對當前宏塊進行編碼&#xff08;這里的編碼主要目的是為了計算按當前組合方式編碼// 生成碼流的大小&#xff0c;因此編碼前要保存當前編碼狀態&#xff0c;編碼完成后必須恢復現場&#xff09;// S T O R E C O D I N G S T A T E //-----------------------…

第十五屆北京師范大學程序設計競賽決賽(網絡同步賽) B lca水 D 思維,找規律...

第十五屆北京師范大學程序設計競賽決賽&#xff08;網絡同步賽&#xff09; B. Borrow Classroom 題意&#xff1a;一棵樹&#xff0c;點 1為根&#xff0c;一個人從點 b到 點 c再到點 1&#xff0c;第二個人從點 a出發&#xff0c;問第二個人能否截住第一個人。 tags&#xff…

macbook所有型號大全_蘋果筆記本型號大全

很多朋友在選購蘋果筆記本也就是MacBook的時候都會考慮究竟買哪一個系列會比較好&#xff0c;下面就為大家介紹一下蘋果筆記本型號大全都有什么&#xff0c;希望以下的介紹能夠幫助到您。蘋果筆記本型號大全目前蘋果筆記本有以下的幾個主要的型號&#xff1a;1、MacBook Air是目…

【Python基礎入門系列】第06天:Python 模塊和包

在計算機程序的開發過程中&#xff0c;隨著程序代碼越寫越多&#xff0c;在一個文件里代碼就會越來越長&#xff0c;越來越不容易維護。 為了編寫可維護的代碼&#xff0c;我們把很多函數分組&#xff0c;分別放到不同的文件里&#xff0c;這樣&#xff0c;每個文件包含的代碼…

Css中的選擇器

Css選擇器 CSS代碼用來修飾 HTML元素. 要用CSS代碼設置樣式, 首先要選中HTML元素. 用來選中 元素的 代碼稱為 選擇器, 或 選擇符. html元素是指, 標簽與標簽包裹內容的整體. 常用的選擇器有如下幾種&#xff1a; 1、標簽選擇器 標簽選擇器&#xff0c;此種選擇器影響范圍大…

福州聯通與市政府攜手 共筑新型智慧城市

“福州聯通今年將投入專項資金&#xff0c;在福州市區建設NB-IoT網絡&#xff0c;包括2000個載扇部署&#xff0c;建設一張覆蓋完備、性能領先的窄帶物聯網。”據介紹&#xff0c;去年9月&#xff0c;福州聯通與福州市政府正式簽署《共同推進窄帶物聯網&#xff08;NB-IoT&…

流媒體技術的國內外動態

1、大規模流媒體應用中關鍵技術的研究 支持大規模用戶在線使用的流媒體應用是Internet中極富潛力的一項“重磅級用”,但由于Internet缺乏服務質量(QoS)與相應的安全保障,并且網絡和終端系統又存在著較大的異構性,這使得在Internet上構建支持大規模用戶的在線流媒體應用面臨很多…

空間直線與平面的交點

這內容屬于計算幾何&#xff0c;在 3D游戲開發編程基礎 或者在游戲開發中的數學和物理算法 這種資料上也可以找到相關的內容和代碼。或者更廣泛點稱為是計算機圖形學&#xff0c; 接下來我們進入正題&#xff0c;如果直線不與平面平行&#xff0c;將存在交點。如下圖所示&#…

iphone導出視頻 無法連接到設備_拷貝iphone照片,顯示無法連接設備?TRIZ 3秒鐘解決...

手機存儲滿了&#xff0c;想把手機里面的照片和視頻拷貝出來。 又不想交給蘋果cloud的“蘋果稅”。USB手動連上IPHONE&#xff0c;結果每次復制了幾百兆&#xff0c;就會彈出“無法連接設備”&#xff0c;導致拷貝失敗。并且每次重新連接之后&#xff0c;刪掉的照片又出現在手機…

【Python基礎入門系列】第07天:Python 數據結構--序列

python內置序列類型最常見的是列表&#xff0c;元組和字符串。&#xff08;序列是python中最基礎的數據結構&#xff0c;而數據結構是計算機存儲&#xff0c;組織數據的方式。&#xff09; 另外還提供了字典和集合的數據結構&#xff0c;但他們屬于無順序的數據集合體&#xf…

Css顏色和文本字體

Css顏色,文本字體 css顏色表示法 顏色名表示&#xff0c;比如&#xff1a;red 紅色&#xff0c;gold 金色16進制數值表示&#xff0c;比如&#xff1a;#ff0000 表示紅色&#xff0c;這種可以簡寫成 #f00RGB顏色: 紅(R)、綠(G)、藍(B)三個顏色通道的變化 background-color: r…

springBoot(20):使用Spring Session實現集群-redis

一、session集群的解決方案1.1、擴展指定server利用Servlet容器提供的插件功能&#xff0c;自定義HttpSession的創建和管理策略&#xff0c;并通過配置的方式替換掉默認的策略。缺點&#xff1a;耦合Tomcat/Jetty等Servlet容器&#xff0c;不能隨意更換容器。1.2、利用Filter利…

docker desktop ubuntu鏡像_原創 | Docker入門,看了不理解,假一賠命

寫在前面這篇博客適合誰&#xff1f;對于Docker并不了解&#xff0c;只是有一點模糊的感覺&#xff0c;覺得Docker可以當成虛擬機用之類的只是下載了Docker軟件&#xff0c;對于怎么配置&#xff0c;怎么玩&#xff0c;第一步干什么&#xff0c;完全一無所知其二&#xff0c;我…

Windows - Windows下安裝MSI程序遇到2503和2502錯誤

三個步驟可以解決這個問題&#xff1a; 1&#xff09; 以管理員身份開啟命令行模式并鍵入msiexec /package <msi文件路徑> 2&#xff09; 修改組策略 計算機配置 ->> 管理模板 ->> Windows組件 ->> Windows Installer ->> 始終以提升的權限進行安…