主頁 >  其他 > 一文理解 Redis 持久化:RDB和AOF

一文理解 Redis 持久化:RDB和AOF

2021-12-31 11:37:25 其他

1. 概述

我們知道 Redis 是一個記憶體資料庫,也就意味著如果我們的電腦例外重啟或者服務器宕機的情況下,存盤在 Redis 中的資料會丟失,

Redis 雖然是個記憶體資料庫,但是 Redis 支持 RDBAOF 兩種持久化機制,將資料寫往磁盤,可以有效地避免因行程退出造成的資料丟失問題,當下次重啟時利用之前持久化的檔案即可實作資料恢復,

2. RDB

RDB(Redis DataBase) 持久化是把當前行程資料生成快照保存到硬碟的程序,什么是快照?你可以理解成把當前時刻的資料拍成一張照片保存下來,

RDB持久化是指在指定的時間間隔內將記憶體中的資料集快照寫入磁盤,也是默認的持久化方式,這種方式是就是將記憶體中資料以快照的方式寫入到二進制檔案中,默認的檔案名為dump.rdb

前面說了,RDB 是快照的方式來保存資料的,因此對于 RDB 來說,提供了兩種觸發機制, 手動觸發和自動觸發,

手動觸發分別對應 savebgsave 命令,

2.1 save

save 命令會阻塞當前 Redis 服務器,直到 RDB 程序完成為止,

因此,對于記憶體比較大的實體會造成長時間阻塞,線上環境不建議使用

2.2 bgsave

bgsave 命令執行時,Redis 行程執行 fork 操作創建子行程,RDB 持久化程序由子行程負責,完成后自動結束,阻塞只發生在 fork 階段,一般時間很短,

顯然 bgsave 命令是針對 save 阻塞問題做的優化,因此 Redis 內部所有的涉及 RDB 的操作都采用 bgsave 的方式,其具體流程如下:

  1. 執行 bgsave 命令,Redis 父行程判斷當前是否存在正在執行的子行程,如 RDB/AOF 子行程,如果存在,bgsave 命令直接回傳,

  2. 父行程執行 fork 操作創建子行程,fork 操作程序中父行程會阻塞,通過 info stats 命令查看 latest_fork_usec 選項,可以獲取最近一個 fork 操作的耗時,單位為微秒,

  3. 父行程 fork 完成后,bgsave 命令回傳 **Background saving started **資訊并不再阻塞父行程,可以繼續回應其他命令,

  4. 子行程創建 RDB 檔案,根據父行程記憶體生成臨時快照檔案,完成后對原有檔案進行原子替換,執行 lastsave 命令可以獲取最后一次生成 RDB 的時間,對應 info 統計的 rdb_last_save_time 選項,

    127.0.0.1:6379> lastsave
    (integer) 1640574329
    
  5. 行程發送信號給父行程表示完成,父行程更新統計資訊,

2.3 自動觸發

除了執行命令手動觸發之外,Redis 內部還存在自動觸發 RDB 的持久化機制,自動觸發是由我們的組態檔來完成的,在redis.conf組態檔中,有如下配置:

  • save

    save m n,指在 m 秒內,如果有 n 個鍵發生改變,則自動觸發持久化(執行一次 bgsave 命令),例如,save 60 1 則表明在 60 秒內,至少有一個鍵發生改變,就會觸發 RDB 持久化,

  • stop-writes-on-bgsave-error

    默認值為 yes,當啟用了 RDB 且最后一次后臺保存資料失敗,Redis 是否停止接收資料,這會讓用戶意識到資料沒有正確持久化到磁盤上,否則沒有人會注意到災難(disaster)發生了,如果Redis重啟了,那么又可以重新開始接收資料了,

  • rdbcompression

    默認值是 yes,對于存盤到磁盤中的快照,可以設定是否進行壓縮存盤,

  • dbfilename

    設定快照的檔案名,默認是 dump.rdb,

  • dir

    設定快照檔案的存放路徑,這個配置項一定是個目錄,而不能是檔案名,默認為./

2.4 RDB 檔案

RDB 生成的持久化檔案默認為dump.rdb,可在組態檔中設定,也可以通過以下命令查找:

find / -name dump.rdb

# linux 下查找
[root@localhost ~]# find / -name dump.rdb
/usr/local/redis/redis-6.2.6/src/dump.rdb

RDB 檔案保存在 dir 配置指定的目錄下,檔案名通過 dbfilename 配置指定,

可以通過執行 config set dir {newDir}config set dbfilename {newFileName}運行期動態執行,當下次運行時 RDB 檔案會保存到新目錄,

Redis 默認采用 LZF 壓縮演算法對生成的 RDB 檔案做壓縮處理,壓縮后的檔案遠遠小于記憶體大小,默認開啟,可以通過引數 config set rdbcompression {yes|no}動態修改,

雖然壓縮 RDB 會消耗 CPU,但可大幅降低檔案的體積,方便保存到硬碟或通過網維示絡發送給從節點,因此線上建議開啟,

如果 Redis 加載損壞的 RDB 檔案時拒絕啟動,并列印如下日志:

# Short read or 0OM loading DB. Unrecoverable error,aborting now.

這時可以使用 Redis 提供的 redis-check-dump 工具檢測 RDB 檔案并獲取對應的錯誤報告,

2.5 RDB 的優缺點

2.5.1 優點

  1. RDB 是一個緊湊壓縮的二進制檔案,代表 Redis 在某個時間點上的資料快照,非常適用于備份,全量復制等場景, 比如每隔幾小時執行 bgsave 備份,并把 RDB 檔案拷貝到遠程機器或者檔案系統中(如 hdfs),用于災難恢復,
  2. 生成 RDB 檔案的時候,Redis 主行程會 fork 一個子行程來處理所有保存作業,主行程不需要進行任何磁盤 IO操作,
  3. Redis 加載 RDB 恢復資料遠遠快于 AOF 的方式,

2.5.2 缺點

  1. RDB 方式資料沒辦法做到實時持久化/秒級持久化,因為 bgsave 每次運行都要執行 fork 操作創建子行程,屬于重量級操作,頻繁執行成本過高,
  2. RDB 檔案使用特定二進制格式保存,Redis 版本演程序序中有多個格式的 RDB 版本,存在老版本 Redis 服務無法兼容新版 RDB 格式的問題,

針對 RDB 不適合實時持久化的問題,Redis 提供了 AOF 持久化方式來解決,

3. AOF

AOF(Append Only File)持久化,以獨立日志的方式記錄每次寫命令,重啟時再重新執行 AOF 檔案中的命令達到恢復資料的目的,

AOF 的主要作用是解決了資料持久化的實時性,目前已經是 Redis 持久化的主流方式,相比 RDB 的全量備份節省了很多時間,

開啟 AOF 功能需要設定配置,默認不開啟,AOF 檔案名通過 appendfilename 配置設定,默認檔案名是 appendonly.aof,保存路徑同 RDB 持久化方式一致,通過 dir 配置指定,

# 開啟 AOF
appendonly yes

# AOF 檔案名
appendfilename "appendonly.aof"

# always   每收到寫命令就立即強制寫入磁盤,最慢的,但是保證完全的持久化,不推薦使用
# everysec 每秒強制寫入磁盤一次,性能和持久化方面做了折中,推薦
appendfsync everysec

# 正在匯出rdb快照的程序中,要不要停止同步aof
no-appendfsync-on-rewrite  yes

# aof檔案大小比起上次重寫時的大小,增長率100%時,重寫
auto-aof-rewrite-percentage 100

# aof檔案,至少超過64M時,重寫
auto-aof-rewrite-min-size 64mb

3.1 作業流程

AOF 的作業流程如下:

  1. 命令寫入(append)

    所有的寫入命令會追加到 aof_buf(緩沖區)中,

  2. 檔案同步(sync)

    AOF 緩沖區根據對應的策略向硬碟做同步操作,

  3. 檔案重寫(rewrite)

    隨著 AOF 檔案越來越大,需要定期對 AOF 檔案進行重寫,達到壓縮的目的,

  4. 重啟加載(load)

    當 Redis 服務器重啟時,可以加載 AOF 檔案進行資料恢復,

3.2 命令寫入

AOF 命令寫入的內容直接是 RESP 文本協議格式,例如 set hello world 這條命令,在 AOF 緩沖區會追加如下文本:

* 3\r\n$3\r\nset\r\n$5\r\nhello\r\n$5\r\nworld\r\n

AOF 為什么直接采用文本協議格式?

文本協議具有很好的兼容性,開啟 AOF 后,所有寫入命令都包含追加操作,直接采用協議格式,避免了二次處理開銷,文本協議具有可讀性,方便直接修改和處理,

AOF 為什么把命令追加到 aof_buf 中?

Redis 使用單執行緒回應命令,如果每次寫 AOF 檔案命令都直接追加到硬碟,那么性能完全取決于當前硬碟負載,先寫入緩沖區 aof_buf 中,還有另一個好處,Redis 可以提供多種緩沖區同步硬碟的策略,在性能和安全性方面做出平衡,

3.3 檔案同步

Redis 提供了多種 AOF 緩沖區同步檔案策略,由引數 appendfsync 控制,主要有以下三種:

  1. always

    命令寫入 aof_buf 后呼叫系統 fsync 操作同步到 AOF 檔案,fsync 完成后執行緒回傳命令 fsync 同步檔案,

    配置為 always 時,每次寫入都要同步 AOF 檔案,在一般的 SATA 硬碟上,Redis 只能支持大約幾百 TPS 寫入,顯然跟 Redis 高性能特性背道而馳,不建議配置,

  2. everysec

    寫人 aof_buf 后呼叫系統 write 操作,write 完成后執行緒回傳,操作由專門執行緒每秒呼叫一次 fsync 命令,

    配置為 everysec,是建議的同步策略,也是默認配置,做到兼顧性能和資料安全性,理論上只有在系統突然宕機的情況下丟失 1 秒的資料,

  3. no

    寫入 aof_buf 后呼叫系統 write 操作,不對 AOF 檔案做 fsync 同步,同步硬碟操作由作業系統負責,通常同步周期最長 30 秒,

    配置為 no,由于作業系統每次同步 AOF 檔案的周期不可控,而且會加大每次同步硬碟的資料量,雖然提升了性能,但資料安全性無法保證,

系統呼叫 write 和 fsync

write

操作會觸發延遲寫(delayed write)機制,Linux 在內核提供頁緩沖區用來提高硬碟 IO 性能,write 操作在寫入系統緩沖區后直接回傳,同步硬碟操作依賴于系統調度機制,例如:緩沖區頁空間寫滿或達到特定時間周期,同步檔案之前,如果此時系統故障宕機,緩沖區內資料將丟失,

fsync

針對單個檔案操作(比如 AOF 檔案),做強制硬碟同步,fsync 將阻塞直到寫入硬碟完成后回傳,保證了資料持久化,

3.4 檔案重寫

隨著命令不斷寫入 AOF,檔案會越來越大,為了解決這個問題,Redis 引入 AOF 重寫機制壓縮檔案體積,AOF 檔案重寫是把 Redis 行程內的資料轉化為寫命令同步到新 AOF 檔案的程序,

重寫后的 AOF 檔案為什么可以變小?原因如下:

  1. 行程內已經超時的資料不再寫入檔案,
  2. 舊的 AOF 檔案含有無效命令,如 set a 111、set a 222 等,重寫使用行程內資料直接生成,這樣新的 AOF 檔案只保留最終資料的寫入命令,
  3. 多條寫命令可以合并為一個,如:lpush list a、lpush list b、lpush listc 可以轉化為:lpush list a b c,為了防止單條命令過大造成客戶端緩沖區溢位,對于 list、set、hash、zset 等型別操作,以 64 個元素為界拆分為多條,

AOF 重寫降低了檔案占用空間,除此之外,另一個目的是:更小的 AOF 檔案可以更快地被 Redis 加載,

AOF 重寫程序可以手動觸發和自動觸發:

  • 手動觸發:直接呼叫 bgrewriteaof 命令,

    該命令會將記憶體中的資料以命令的方式保存到臨時檔案中,同時會 fork 出一條新行程來將檔案重寫,

  • 自動觸發:根據 auto-aof-rewrite-min-sizeauto-aof-rewrite-percentage 引數確定自動觸發時機,

    • auto-aof-rewrite-min-size:表示運行 AOF 重寫時檔案最小體積,默認為 64 MB,
    • auto-aof-rewrite-percentage:代表當前 AOF 檔案空間(aof_currentsize)和上一次重寫后 AOF 檔案空間(aof_base_size)的比值,

3.5 重啟加載

AOF 和 RDB 檔案都可以用于服務器重啟時的資料恢復,redis 重啟時加載 AOF 與 RDB 的順序是怎么樣的呢?

  1. 當 AOF 和 RDB 檔案同時存在時,優先加載 AOF;
  2. 若關閉了 AOF,加載 RDB 檔案;
  3. 加載 AOF/RDB 成功,redis 重啟成功;
  4. AOF/RDB 存在錯誤,啟動失敗列印錯誤資訊,

3.6 AOF 的優缺點

3.6.1 優點

  1. AOF 可以更好的保護資料不丟失,一般 AOF 會每隔 1 秒,通過一個后臺執行緒執行一次 fsync 操作,最多丟失 1 秒鐘的資料;
  2. AOF 日志檔案沒有任何磁盤尋址的開銷,寫入性能非常高,檔案不容易破損;
  3. AOF 日志檔案即使過大的時候,出現后臺重寫操作,也不會影響客戶端的讀寫;
  4. AOF 日志檔案的命令通過非常可讀的方式進行記錄,這個特性非常適合做災難性的誤洗掉的緊急恢復,比如某人不小心用 flushall 命令清空了所有資料,只要這個時候后臺 rewrite 還沒有發生,那么就可以立即拷貝 AOF 檔案,將最后一條 flushall 命令給刪了,然后再將該 AOF 檔案放回去,就可以通過恢復機制,自動恢復所有資料,

3.6.2 缺點

  1. 對于同一份資料來說,AOF 日志檔案通常比RDB資料快照檔案更大,
  2. AOF 開啟后,支持的寫 QPS 會比 RDB 支持的寫 QPS 低,因為 AOF 一般會配置成每秒 fsync 一次日志檔案,當然,每秒一次 fsync,性能也還是很高的,
  3. 以前 AO F發生過 bug,就是通過 AOF 記錄的日志,進行資料恢復的時候,沒有恢復一模一樣的資料出來,

4. 如何選擇

對于 RDB,它能夠在指定的時間間隔對記憶體中的資料進行快照存盤,

對于 AOF,他能記錄每次對服務器寫的操作,當服務器重啟的時候會重新執行這些命令來恢復原始的資料,AOF 命令以文本協議追加保存每次寫的操作到檔案末尾,Redis 還能夠對 AOF 檔案進行后臺重寫,使 AOF 檔案體積不至于過大,

兩種方式同時開啟,在兩種方式同時開啟的情況下,Redis 啟動的時候會優先加載 AOF 檔案來恢復原始資料,因為在通常情況下 AOF 檔案保存的資料集比 RDB 檔案保存的資料集要完整,RDB 的資料會不實時,

那么只使用 AOF 呢?建議不要,因為 RDB 更適合用于備份資料庫(AOF 在不斷變化,不好備份),快速重啟,而不會有 AOF 可能存在的潛在 bug,留著作為一個補救的手段,

當然,如果你只是用作快取,只希望資料在程式運行的時候存在,那么就可以不使用任何持久化方式,

選項RDBAOF
啟動優先級
體積
恢復速度
資料安全丟資料三種策略

附:組態檔詳解

# redis行程是否以守護行程的方式運行,yes為是,no為否(不以守護行程的方式運行會占用一個終端),
daemonize no
# 指定redis行程的PID檔案存放位置
pidfile /var/run/redis.pid
# redis行程的埠號
port 6379
#是否開啟保護模式,默認開啟,要是配置里沒有指定bind和密碼,開啟該引數后,redis只會本地進行訪問,拒絕外部訪問,要是開啟了密碼和bind,可以開啟,否則最好關閉設定為no,
protected-mode yes
# 系結的主機地址
bind 127.0.0.1
# 客戶端閑置多長時間后關閉連接,默認此引數為0即關閉此功能
timeout 300
# redis日志級別,可用的級別有debug.verbose.notice.warning
loglevel verbose
# log檔案輸出位置,如果行程以守護行程的方式運行,此處又將輸出檔案設定為stdout的話,就會將日志資訊輸出到/dev/null里面去了
logfile stdout
# 設定資料庫的數量,默認為0可以使用select <dbid>命令在連接上指定資料庫id
databases 16
# 指定在多少時間內重繪次數達到多少的時候會將資料同步到資料檔案
save <seconds> <changes>
# 指定存盤至本地資料庫時是否壓縮檔案,默認為yes即啟用存盤
rdbcompression yes
# 指定本地資料庫檔案名
dbfilename dump.db
# 指定本地資料問就按存放位置
dir ./
# 指定當本機為slave服務時,設定master服務的IP地址及埠,在redis啟動的時候他會自動跟master進行資料同步
replicaof <masterip> <masterport>
# 當master設定了密碼保護時,slave服務連接master的密碼
masterauth <master-password>
# 設定redis連接密碼,如果配置了連接密碼,客戶端在連接redis是需要通過AUTH<password>命令提供密碼,默認關閉
requirepass footbared
# 設定同一時間最大客戶連接數,默認無限制,redis可以同時連接的客戶端數為redis程式可以打開的最大檔案描述符,如果設定 maxclients 0,表示不作限制,當客戶端連接數到達限制時,Redis會關閉新的連接并向客戶端回傳 max number of clients reached 錯誤資訊
maxclients 128
# 指定Redis最大記憶體限制,Redis在啟動時會把資料加載到記憶體中,達到最大記憶體后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理后,仍然到達最大記憶體設定,將無法再進行寫入操作,但仍然可以進行讀取操作,Redis新的vm機制,會把Key存放記憶體,Value會存放在swap區
maxmemory<bytes>
# 指定是否在每次更新操作后進行日志記錄,Redis在默認情況下是異步的把資料寫入磁盤,如果不開啟,可能會在斷電時導致一段時間內的資料丟失,因為redis本身同步資料檔案是按上面save條件來同步的,所以有的資料會在一段時間內只存在于記憶體中,默認為no,
appendonly no
# 指定跟新日志檔案名默認為appendonly.aof
appendfilename appendonly.aof
# 指定更新日志的條件,有三個可選引數 - no:表示等作業系統進行資料快取同步到磁盤(快),always:表示每次更新操作后手動呼叫fsync()將資料寫到磁盤(慢,安全), everysec:表示每秒同步一次(折衷,默認值);
appendfsync everysec

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398801.html

標籤:其他

上一篇:Oracle listagg函式和start with connect by子句

下一篇:redisTemplate.opsForValue().setIfAbsent()使用

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more