dnf裝備詞典pvf文件還有dnf裝備詞典模擬器


本站AI自動判斷提供您所需要的app下載:點我下載安裝,你懂的APP

一、壓縮介紹

現在這個時代電子信息發展迅猛,數據量越來越龐大,小米10手機攝像頭技術都達到1億像素;2021年9月,三星甚至提出2億像素的傳感器技術。因此,壓縮數據成為數據存儲和傳輸中用于降低成本和時間的關鍵技術。

2億像素的ISOCELL HP1,5000萬像素的ISOCELL GN5

壓縮技術又分為有損壓縮與無損壓縮兩類,兩者的主要區別是:有損壓縮還原時跟原始信息不是完全一樣,但是不影響使用,比如音頻、圖片、視頻類信息;無損壓縮還原時跟原始信息完全一樣,比如本文要介紹的常用壓縮軟件RAR,Zip等壓縮方法。

Windows下比較熟知的壓縮方法有zip或者RAR,為了便于壓縮與解壓的使用,開發了許多的解壓縮軟件,比如:winrar、好壓、快壓、360壓縮等。但是在Linux比較常用的壓縮方法卻是gzip、bzip2、compress等,比如官方下載的gcc編譯器源碼壓縮文件就是基于gzip壓縮的:gcc-11.2.0.tar.gz。

打包或者壓縮格式很多,目前主流使用的有如下表所示幾種:

表一

表二

對于表二類似“xxx.tar.gz”等格式的文件,是Linux下的一種文件格式,生成該格式文件分為兩個步驟,(1)、xxx文件打包為xxx.tar;(2)、xxx.tar壓縮為xxx.tar.gz。下面大概介紹Linux下tar打包與gz、bz2等壓縮工具的使用。

二、Linux打包tar

由于Linux中的很多壓縮程序只能針對一個文件進行壓縮,因此如果包含許多文件,則需要將所有文件打包為一個文件,然后再壓縮。

Linux下最常用的打包程序就是tar,使用tar程序打出來的包我們常稱為tar包,tar包文件的擴展名通常是.tar。生成tar包后,就可以用其它的程序(gzip或bzip2等)來進行壓縮了。

2.1、tar文件結構

Tar指令只用于多文件打包,并不壓縮文件,因此打包后的文件并沒有減小,反而由于在打包時會在每個文件頭加入512字節的tar頭部信息,使得打包后的文件略微變大。比如當前有文件a1.c、a2.c、a3.c,每個文件100k,打包后文件的文件結構如下圖所示:

如上圖所示,3個文件共300k,通過tar打包后,至少為301.5k;因為tar文件是按塊存儲,每個塊為512bytes大小,所以tar文件大小應該為512字節的倍數,如果a1.c文件大小為99.7k,則通過tar打包時,最后0.3k必須填充為0,補足至100k(滿足512字節的倍數)。

2.2、tar_header頭部結構

tar_header為512字節的塊結構,保存后面的文件信息,tar源碼的tar.h文件中該header結構如下圖所示,該header結構剛好是一個塊大小,即512字節每個塊。

tar源碼版本為“tar-1.26.tar.gz”,可通過以下網盤鏈接下載:

鏈接:
https://pan.baidu.com/s/1T34dYxBRWKYE8jmFvv_2aw

提取碼:ppw2

tar打包函數入口為create_archive(),在源碼文件create.c中。

2.3、tar命令打包

tar 命令用于打包操作時,該命令的基本格式為:tar [選項] 源文件或目錄。tar命令常用的選項及各自的含義如下圖所示。

(1)、創建2個文件a1.txt、a2.txt,分別輸入如下內容:

(2)、tar命令進行打包,生成aTar.tar打包文件

2.4、aTar.tar文件內容分析

通過UltraEdit打開上面tar命令打包生成的aTar.tar文件,可以看到aTar.tar文件格式為:首先是a1.txt的tar_header信息,然后是a1.txt的內容;接著是a2.txt的tar_header信息,然后是a2txt的內容。

(1)、第一塊:從地址0x00000000h位置到0x00000200h之間(共512字節)是a1.txt的tar_header信息:

根據如上結構struct posix_header結構體的定義,說明幾個字段含義:

a>、最開始的位置存儲name,大小為100字節,內容為61 31 2E 74 78 74 00,即為“a1.txt”;

b>、后面是mode字段內容為30 30 30 30 36 34 34 00,即為“0000644”,表示a1.txt文件的操作權限,與ls命令查詢a1.txt文件權限一致。

c>、uid、gid信息,即當前linux登錄用戶id與組id,這兩個id的內容均為30 30 30 31 37 35 30 00,即為“0001750”,該值為八進制,轉為十進制為1000,與id命令查詢的結果一致。

d>、size字段值為30 30 30 30 30 30 30 30 30 33 33 00,即為“00000000033”,該值為八進制,轉為十進制為27,表示a1.txt文件大小為27字節,與文件內容大小一致:

e>、magic字段值為75 73 74 61 72 20,即為“ustar”,表示當前包為tar文件;

f>、uname與gname為當前linux登錄用戶名與組名,即kevin。

(2)、第二塊:從地址0x00000200h位置到0x00000400h之間(共512字節)是a1.txt的內容,雖然a1.txt的內容為27字節,但是塊大小為512,不足地方補0。

(3)、第三塊:從地址0x00000400h位置到0x00000600h之間(共512字節)是a2.txt的tar_header信息:

a2.txt的tar_header信息格式與a1.txt的tar_header一致,其size字段為“00000000025”,轉為十進制為21,表示a2.txt內容為21個字符,確認一致。

(4)、第四塊:從地址0x00000600h位置到0x00000800h之間(共512字節)是a2.txt的內容,雖然a2.txt的內容為21字節,但是塊大小為512,不足地方補0。

注:以上與“2.1、tar文件的結構一致”!!!

三、Linux壓縮至gz、bz2、z格式

Linux下文件壓縮屬于無損壓縮,解壓縮還原時必須和原文件一致,否則會導致程序運行錯誤;其基本原理為,通過查找文件內的重復字節,建立一個相同字節的詞典文件,并用一個代碼表示。比如如下文件:

重復的字符串“小扇子的筆記”可以用一個代碼“a”表示,則文件內容可以表示為:

這文件的大小就縮小了,還原回來也是無信息損失的。

當然壓縮算法遠比這個復雜,Linux下的壓縮工具常用的有GNU組織開發的gzip(.gz)、壓縮能力更強的bzip2(.bz2)、比較古老的壓縮指令compress(.Z)、以及最新的提供最佳壓縮率的XZ(.xz)。

這些壓縮命令只能用來壓縮文件,不能壓縮目錄,即便指定了目錄,也只能壓縮目錄內的所有文件;同時只能壓縮單個文件,因此通常與tar打包命令一起使用,在tar打包命令中加入如下選項即可調用對應的壓縮命令進行壓縮:

3.1、gzip壓縮

在tar指令中加入‘-z’選項,調用gzip進行壓縮。

解壓縮命令為:tar –xzf a.tar.gz。

3.2、bzip2壓縮

在tar指令中加入‘-j’選項,調用bzip2進行壓縮。

解壓縮命令為:tar –xjf a.tar.bz2。

3.3、xz壓縮

在tar指令中加入‘-J’選項,調用xz進行壓縮。

解壓縮命令為:tar –xJf a.tar.xz。

3.4、compress壓縮

現在新的Linux系統都沒有安裝ncompress壓縮工具,需要先安裝:

然后在tar指令中加入‘-Z’選項,調用compress進行壓縮。

解壓縮命令為:tar –xZf a.tar.Z。

3.5、其他壓縮工具

Windows下常用的壓縮格式zip與rar在Linux下也是支持的。

(1)、Linux下提供了zip和unzip程序,zip是壓縮程序,unzip是解壓程序;

(2)、linux下處理.rar文件,需要安裝RAR for Linux,如下指令:
  # tar -xzpvf rarlinux-3.2.0.tar.gz
  # cd rar
  # make
  安裝后有rar和unrar這兩個程序,rar是壓縮程序,unrar是解壓程序。

來源:解放軍報

主人公心語:肩章、領章、臂章上熠熠生輝的五角星,象征著軍人的使命與責任,更時刻提醒著我要爭當能打仗、打勝仗的尖兵。——彭星

南粵某訓練場烈日當空,熱浪滾滾。屋頂上,一名狙擊手在觀察員的指令引導下,20秒內接連向多個遠距離目標快速射擊,槍槍命中、彈無虛發。

這名狙擊手叫彭星,是武警廣東總隊某支隊反劫機中隊中隊長。在官兵眼里,彭星人如其名,無論是訓練場還是比武場,都是一顆閃亮的“戰斗五角星”。前不久,他榮膺第23屆“中國青年五四獎章”。

在彭星的“軍旅詞典”里,永遠只有沖鋒和前進。兵之初,為了盡快練成一把“尖刀”,他主動寫申請參加特戰集訓:關節扭傷了,他貼上膏藥練;手腕紅腫了,他扎上繃帶練……憑借這股不服輸的狠勁,彭星以過硬的軍政素質被保送提干。

身份轉變,責任更重。2014年3月,彭星參加“全軍特種作戰青年軍官聯合培訓”,與來自全軍的90余名特種尖兵展開角逐。回憶那次培訓,彭星記憶猶新:第一次高空傘降,手腳不由自主地打顫;第一次潛水,嘴唇憋得發紫。為了戰勝從未接觸過的傘降、潛水等課目帶來的挑戰,他一次次強忍著右肩肌腱損傷引起的疼痛,從傘降模擬器上跳下;一次次頂著巨大的水壓,像劍魚一樣插入水中。

結業考核,彭星奪得3000米徒手蛙泳、1000米武裝泅渡兩個單項第一,并斬獲綜合排名第二的好成績。

這些年,憑借過硬素質和優異成績,彭星獲得榮譽“一籮筐”:“中國武警十大忠誠衛士”“多棲特戰尖兵”、個人一等功……

“真正的‘戰斗星’,絕不僅是為了取得榮譽而戰,而是時刻等待亮劍的那一刻。”那一年,在一次掃毒行動中,彭星奉命帶領突擊隊員,配合警方抓捕一名犯罪嫌疑人。

“抓捕!”指揮部下達命令,彭星躬身據槍、抬腿破門,猶如下山猛虎,一個箭步撲向睡在床上的犯罪嫌疑人,其他特戰隊員緊隨其后沖上來,合力將犯罪嫌疑人摁住。從睡夢中驚醒的犯罪嫌疑人伸手去拿藏在床頭的砍刀,眼疾手快的彭星立刻猛力擊打,并死死扣住他的雙手。

雷霆之勢,乘勝追擊。彭星又率特戰隊員接連搗毀“毒巢”,抓獲販毒分子,繳獲大量毒品毒資。

在得知駐地群眾贊譽自己為“嶺南猛虎”后,彭星撫摸著特戰服臂章上的五角星說:“只要祖國一聲令下,我就是一顆上膛的子彈、一顆來之能戰的‘戰斗五角星’!”(黎曉暉 廖彬華 代烽)

[ 作者:piikee   分類:dnf]