vagrant系列教程(四):vagrant搭建redis與redis的監控程序redis-stat(轉)

上一篇php7環境的搭建?真是火爆,僅僅兩天時間,就破了我之前swagger系列的一片文章,看來,大家對搭建環境真是情有獨鐘。?
為了訪問量,我今天再來一篇Redis的搭建。當然不能僅僅是redis的搭建。否則,多不上檔次呀,這種文章一抓一大把。這次還順帶把redis監控程序的搭建給弄上了。很高大上的額!

redis的安裝

哎,寫到這兒,說一句,詛咒聯通這網絡,聯通網絡一上,打開vpn,照樣不能訪問外網,聯baidu都一卡一卡的。

redis就不用yum來進行安裝了。直接從官方下載來安裝吧。(老實說,我也不知道yum里邊有沒有redis的最新版)

回到頂部

下載redis

$ wget -c http://download.redis.io/releases/redis-3.0.7.tar.gz

當然你也可以到redis官網?下載最新的版本。當然個人建議,開發中還是使用穩定版本吧!?
這里寫圖片描述

回到頂部

解壓redis

$ tar -zxvf redis-3.0.7.tar.gz

這個命令什么意思,我就不多說了,如果不清楚的同學,建議平時還是多積累點Linux的命令知識額。加薪升職的利器額。?
這里寫圖片描述

回到頂部

編譯安裝redis

$ cd redis-3.0.7
$ make && make install

進入到解壓后的目錄,然后執行編譯,然后安裝。

這里寫圖片描述

OK,至此,我們的redis安裝還沒有完額,其實好玩兒的才剛剛開始呢。

回到頂部

配置redis

創建redis 配置文件夾。

$ mkdir /etc/redis

在/var/lib/redis 下創建有效的保存數據的目錄

$ mkdir -p /var/lib/redis/6379

redis.conf 是 redis 的配置文件,然而你會看到我們會把這個文件的名字改為 6379.conf ,而這個數字就是 redis 監聽的網絡端口。如果你想要運行超過一個的 redis 實例,推薦用這樣的名字。

復制示例的 redis.conf 到 /etc/redis/6379.conf。

$ cp redis.conf /etc/redis/6379.conf

修改的內容如下:

設置 daemonize 為 no,systemd 需要它運行在前臺,否則 redis 會突然掛掉。?
daemonize yes

設置 pidfile 為 /var/run/redis_6379.pid。?
pidfile /var/run/redis_6379.pid

如果不準備用默認端口,可以修改。?
port 6379

設置日志級別。?
loglevel debug

修改日志文件路徑。?
logfile /var/log/redis_6379.log

設置目錄為 /var/lib/redis/6379?
dir /var/lib/redis/6379

redis配置文件,各項的詳解

復制代碼
######################### 通用 ########################## 啟動后臺進程
daemonize yes# 后臺進程的pid文件存儲位置
pidfile /var/run/redis.pid# 默認監聽端口
port 6379# 在高并發的環境中,為避免慢客戶端的連接問題,需要設置一個高速后臺日志
tcp-backlog 511# 只接受以下綁定的IP請求
# Examples:
# bind 192.168.1.100 10.0.0.1
bind 127.0.0.1# 設置unix監聽,默認為空
# unixsocket /tmp/redis.sock
# unixsocketperm 700#客戶端空閑多長時間,關閉鏈接,0表示不關閉
timeout 0# TCP keepalive.
# 如果是非零值,當失去鏈接時,會使用SO_KEEPALIVE發送TCP ACKs 到客戶端。
# 這個參數有兩個作用:
# 1.檢測斷點。
# 2.從網絡中間設備來看,就是保持鏈接
# 在Linux上,設定的時間就是發送ACKs的周期。
# 注意:達到雙倍的設定時間才會關閉鏈接。在其他內核上,周期依賴于內核設置。
# 一個比較合理的值為60s
tcp-keepalive 0# 指定日志級別,以下記錄信息依次遞減
# debug用于開發/測試
# verbose沒debug那么詳細
# notice適用于生產線
# warning只記錄非常重要的信息
loglevel notice#日志文件名稱,如果為stdout則輸出到標準輸出端,如果是以后臺進程運行則不產生日志
logfile ""# 要想啟用系統日志記錄器,設置一下選項為yes
# syslog-enabled no# 指明syslog身份
# syslog-ident redis# 指明syslog設備。必須是一個用戶或者是local0 ~ local7之一
# syslog-facility local0#設置數據庫數目,第一個數據庫編號為:0
databases 16######################### 快照 ########################## 在什么條件下保存數據庫到磁盤,條件可以有很多個,滿足任何一個條件都會進行快照存儲
# 在900秒之內有一次key的變化
save 900 1
# 在300秒之內,有10個key的變化
save 300 10
# 在60秒之內有10000個key變化
save 60 10000# 當持久化失敗的時候,是否繼續提供服務
stop-writes-on-bgsave-error yes# 當寫入磁盤時,是否使用LZF算法壓縮數據,默認為yes
rdbcompression yes# 是否添加CRC64校驗到每個文件末尾--花費時間保證安全
rdbchecksum yes# 磁盤上數據庫的保存名稱
dbfilename dump.rdb# Redis工作目錄,以上數據庫保存文件和AOF日志都會寫入此目錄
dir ./######################### 主從同步 ########################## 主從復制,當本機是slave時配置
# slaveof <masterip> <masterport># 當主機需要密碼驗證時候配置
# masterauth <master-password># 當slave和master丟失鏈接,或正處于同步過程中。是否響應客戶端請求
# 設置為yes表示響應
# 設置為no,直接返回"SYNC with master in progress"(正在和主服務器同步中)
slave-serve-stale-data yes# 設置slave是否為只讀。
# 注意:即使slave設置為只讀,也不能令其暴露在不受信任的網絡環境中
slave-read-only yes# 無硬盤復制功能
repl-diskless-sync no# 等待多個slave一起來請求之間的間隔時間
repl-diskless-sync-delay 5# 設置slave給master發送ping的時間間隔
# repl-ping-slave-period 10# 設置數據傳輸I/O,主機數據、ping響應超時時間,默認60s
# 這個時間一定要比repl-ping-slave-period大,否則會不斷檢測到超時
# repl-timeout 60# 是否在SYNC后slave socket上禁用TCP_NODELAY?
# 如果你設置為yes,Redis會使用少量TCP報文和少量帶寬發送數據給slave。
# 但是這樣會在slave端出現延遲。如果使用Linux內核的默認設置,大概40毫秒。
# 如果你設置為no,那么在slave端研究就會減少但是同步帶寬要增加。
# 默認我們是為低延遲優化的。
# 但是如果流量特別大或者主從服務器相距比較遠,設置為yes比較合理。
repl-disable-tcp-nodelay no# 設置復制的后臺日志大小。
# 復制的后臺日志越大, slave 斷開連接及后來可能執行部分復制花的時間就越長。
# 后臺日志在至少有一個 slave 連接時,僅僅分配一次。
# repl-backlog-size 1mb# 在 master 不再連接 slave 后,后臺日志將被釋放。下面的配置定義從最后一個 slave 斷開連接后需要釋放的時間(秒)。
# 0 意味著從不釋放后臺日志
# repl-backlog-ttl 3600# 設置slave優先級,默認為100
# 當主服務器不能正確工作的時候,數字低的首先被提升為主服務器,但是0是禁用選擇
slave-priority 100# 如果少于 N 個 slave 連接,且延遲時間 <=M 秒,則 master 可配置停止接受寫操作。
# 例如需要至少 3 個 slave 連接,且延遲 <=10 秒的配置:
# min-slaves-to-write 3
# min-slaves-max-lag 10
# 設置 0 為禁用
# 默認 min-slaves-to-write 為 0 (禁用), min-slaves-max-lag 為 10######################### 安全 ########################## 設置客戶端連接密碼,因為Redis響應速度可以達到每秒100w次,所以密碼要特別復雜
# requirepass 1413# 命令重新命名,或者禁用。
# 重命名命令為空字符串可以禁用一些危險命令比如:FLUSHALL刪除所有數據
# 需要注意的是,寫入AOF文件或傳送給slave的命令別名也許會引起一些問題
# rename-command CONFIG ""# 設置客戶端連接密碼,因為Redis響應速度可以達到每秒100w次,所以密碼要特別復雜
requirepass 1413# 命令重新命名,或者禁用。
# 重命名命令為空字符串可以禁用一些危險命令比如:FLUSHALL刪除所有數據
# 需要注意的是,寫入AOF文件或傳送給slave的命令別名也許會引起一些問題
# rename-command CONFIG ""######################### 限制 ########################## 設置最多鏈接客戶端數量,默認為10000。
# 實際可以接受的請求數目為設置值減去32,這32是Redis為內部文件描述符保留的
# maxclients 10000# 設置最多鏈接客戶端數量,默認為10000。
# 實際可以接受的請求數目為設置值減去32,這32是Redis為內部文件描述符保留的
# maxclients 10000
# 設置最大使用內存數量,在把Redis當作LRU緩存時特別有用。
# 設置的值要比系統能使用的值要小
# 因為當啟用刪除算法時,slave輸出緩存也要占用內存
# maxmemory <bytes>#達到最大內存限制時,使用何種刪除算法
# volatile-lru  使用LRU算法移除帶有過期標致的key
# allkeys-lru -> 使用LRU算法移除任何key
# volatile-random -> 隨機移除一個帶有過期標致的key
# allkeys-random ->  隨機移除一個key
# volatile-ttl -> 移除最近要過期的key
# noeviction -> 不刪除key,當有寫請求時,返回錯誤
#默認設置為volatile-lru
# maxmemory-policy noeviction# LRU和最小TTL算法沒有精確的實現
# 為了節省內存只在一個樣本范圍內選擇一個最近最少使用的key,可以設置這個樣本大小
# maxmemory-samples 5######################### AO模式 ########################## AOF和RDB持久化可以同時啟用
# Redis啟動時候會讀取AOF文件,AOF文件有更好的持久化保證
appendonly no# AOF的保存名稱,默認為appendonly.aof
appendfilename "appendonly.aof"# 設置何時寫入追加日志,又三種模式
# no:表示由操作系統決定何時寫入。性能最好,但可靠性最低
# everysec:表示每秒執行一次寫入。折中方案,推薦
# always:表示每次都寫入磁盤。性能最差,比上面的安全一些
# appendfsync always
appendfsync everysec
# appendfsync no# 當AOF同步策略設定為alway或everysec
# 當后臺存儲進程(后臺存儲或者AOF日志后臺寫入)會產生很多磁盤開銷
# 某些Linux配置會使Redis因為fsync()調用產生阻塞很久
# 現在還沒有修復補丁,甚至使用不同線程進行fsync都會阻塞我們的同步write(2)調用。
# 為了緩解這個問題,使用以下選項在一個BGSAVE或BGREWRITEAOF運行的時候
# 可以阻止fsync()在主程序中被調用,
no-appendfsync-on-rewrite no# AOF自動重寫(合并命令,減少日志大小)
# 當AOF日志大小增加到一個特定比率,Redis調用BGREWRITEAOF自動重寫日志文件
# 原理:Redis 會記錄上次重寫后AOF文件的文件大小。
# 如果剛啟動,則記錄啟動時AOF大小
# 這個基本大小會用來和當前大小比較。如果當前大小比特定比率大,就會觸發重寫。
# 你也需要指定一個AOF需要被重寫的最小值,這樣會避免達到了比率。
# 但是AOF文件還很小的情況下重寫AOF文件。
# 設置為0禁用自動重寫
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb#redis在啟動時可以加載被截斷的AOF文件,而不需要先執行 redis-check-aof 工具
aof-load-truncated yes######################### LUA腳本 ########################## Lua腳本的最大執行時間,單位毫秒
# 超時后會報錯,并且計入日志
# 當一個腳本運行時間超過了最大執行時間
# 只有SCRIPT KILL和 SHUTDOWN NOSAVE兩個命令可以使用。
# SCRIPT KILL用于停止沒有調用寫命令的腳本。
# SHUTDOWN NOSAVE是唯一的一個,在腳本的寫命令正在執行
# 用戶又不想等待腳本的正常結束的情況下,關閉服務器的方法。
# 以下選項設置為0或負數就會取消腳本執行時間限制
lua-time-limit 5000####################### redis集群  ######################### 是否啟用集群
# cluster-enabled yes# 集群配置文件
# 集群配置變更后會自動寫入改文件
# cluster-config-file nodes-6379.conf# 節點互連超時的閥值 
# 節點超時時間,超過該時間無法連接主要Master節點后,會停止接受查詢服務 
# cluster-node-timeout 15000# 控制從節點FailOver相關的設置,設為0,從節點會一直嘗試啟動FailOver.
# 設為正數,失聯大于一定時間(factor*節點TimeOut),不再進行FailOver
# cluster-slave-validity-factor 10# 最小從節點連接數
# cluster-migration-barrier 1# 默認為Yes,丟失一定比例Key后(可能Node無法連接或者掛掉),集群停止接受寫操作
# 設置為No,集群丟失Key的情況下仍提供查詢服務
# cluster-require-full-coverage yes######################### 慢查詢 ########################## Redis慢查詢日志記錄超過設定時間的查詢,且只記錄執行命令的時間
# 不記錄I/O操作,比如:和客戶端交互,發送回復等。
# 時間單位為微妙,1000000微妙 = 1 秒
# 設置為負數會禁用慢查詢日志,設置為0會記錄所有查詢命令
slowlog-log-slower-than 10000# 日志長度沒有限制,但是會消耗內存。超過日志長度后,最舊的記錄會被移除
# 使用SLOWLOG RESET命令可以回收內存
slowlog-max-len 128######################### 延遲監測 ########################## 系統只記錄超過設定值的操作,單位是毫秒,0表示禁用該功能  
# 可以通過命令“CONFIG SET latency-monitor-threshold <milliseconds>” 直接設置而不需要重啟redis  
latency-monitor-threshold 0######################### 事件通知 #########################
#  當事件發生時, Redis 可以通知 Pub/Sub 客戶端。
#  可以在下表中選擇 Redis 要通知的事件類型。事件類型由單個字符來標識:
# K     Keyspace 事件,以 _keyspace@<db>_ 的前綴方式發布
# E     Keyevent 事件,以 _keysevent@<db>_ 的前綴方式發布
# g     通用事件(不指定類型),像 DEL, EXPIRE, RENAME, …
# $     String 命令
# s     Set 命令
# h     Hash 命令
# z     有序集合命令
# x     過期事件(每次 key 過期時生成)
# e     清除事件(當 key 在內存被清除時生成)
# A     g$lshzxe 的別稱,因此 ”AKE” 意味著所有的事件
# notify-keyspace-events 帶一個由 0 到多個字符組成的字符串參數。空字符串意思是通知被禁用。
#  例子:啟用 list 和通用事件:
# notify-keyspace-events Elg
#  默認所用的通知被禁用,因為用戶通常不需要改特性,并且該特性會有性能損耗。
#  注意如果你不指定至少 K 或 E 之一,不會發送任何事件。
notify-keyspace-events ""
#notify-keyspace-events AKE######################### 高級設置 ########################## 當有少量條目的時候,哈希使用高效內存數據結構。最大的條目也不能超過設定的閾值。# “少量”定義如下:
hash-max-ziplist-entries 512
hash-max-ziplist-value 64# 和哈希編碼一樣,少量列表也以特殊方式編碼節省內存。“少量”設定如下:
list-max-ziplist-entries 512
list-max-ziplist-value 64# 集合只在以下情況下使用特殊編碼來節省內存
# -->集合全部由64位帶符號10進制整數構成的字符串組成
# 下面的選項設置這個特殊集合的大小。
set-max-intset-entries 512# 當有序集合的長度和元素設定為以下數字時,又特殊編碼節省內存
zset-max-ziplist-entries 128
zset-max-ziplist-value 64# HyperLogLog 稀疏表示字節限制
# 這個限制包含了16個字節的頭部,當一個HyperLogLog使用sparse representation
# 超過了這個顯示,它就會轉換到dense representation上
hll-sparse-max-bytes 3000# 哈希刷新使用每100個CPU毫秒中的1毫秒來幫助刷新主哈希表(頂級鍵值映射表)。
#  Redis哈希表使用延遲刷新機制,越多操作,越多刷新。
# 如果服務器空閑,刷新操作就不會進行,更多內存會被哈希表占用
# 默認每秒進行10次主字典刷新,釋放內存。
# 如果你有硬性延遲需求,偶爾2毫秒的延遲無法忍受的話。設置為no
# 否則設置為yes
activerehashing yes# 客戶端輸出緩存限制強迫斷開讀取速度比較慢的客戶端
# 有三種類型的限制
# normal -> 正常
# slave  -> slave和 MONITOR
# pubsub -> 客戶端至少訂閱了一個頻道或者模式
# 客戶端輸出緩存限制語法如下(時間單位:秒)
# client-output-buffer-limit <類別> <強制限制> <軟性限制> <軟性時間>
# 達到強制限制緩存大小,立刻斷開鏈接。
# 達到軟性限制,仍然會有軟性時間大小的鏈接時間
# 默認正常客戶端無限制,只有請求后,異步客戶端數據請求速度快于它能讀取數據的速度
# 訂閱模式和主從客戶端又默認限制,因為它們都接受推送。
# 強制限制和軟性限制都可以設置為0來禁用這個特性
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60# 設置Redis后臺任務執行頻率,比如清除過期鍵任務。
# 設置范圍為1到500,默認為10.越大CPU消耗越大,延遲越小。
# 建議不要超過100
hz 10# 當子進程重寫AOF文件,以下選項開啟時,AOF文件會每產生32M數據同步一次。
# 這有助于更快寫入文件到磁盤避免延遲
aof-rewrite-incremental-fsync yes
復制代碼
回到頂部

redis開機自啟動

復制redis的自啟動腳本到init.d中

$ cp utils/redis_init_script /etc/init.d/redis_6379

這里說明一下哈,鏡像還是前面用的CentOs7,所以有的命令稍微跟6不一樣。建立一個redis的服務

$ vim /etc/systemd/system/redis_6379.service

然后輸入下面的內容

復制代碼
[Unit]
Description=Redis on port 6379
[Service]
Type=forking
ExecStart=/etc/init.d/redis_6379 start
ExecStop=/etc/init.d/redis_6379 stop
[Install]
WantedBy=multi-user.target
復制代碼

注意上面文件的目錄,就是剛剛復制的目錄,如果有多個redis,這里需要注意。

回到頂部

系統參數的調整

為了讓redis正常運行,需要對某些系統參數進行調整。

復制代碼
# 避免數據被截斷
$ sysctl -w vm.overcommit_memory=1# 修改 backlog 連接數的最大值超過 redis.conf 中的 tcp-backlog 值,即默認值511
$ sysctl -w net.core.somaxconn=512# 取消對透明巨頁內存(transparent huge pages)的支持,因為這會造成 redis 使用過程產生延時和內存訪問問題。
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
復制代碼

然后將以上配置,寫入相關文件:

$ vim /etc/sysctl.conf

輸入內容如下:

vm.overcommit_memory = 1
net.core.somaxconn=512

對于透明巨頁內存支持,并沒有直接 sysctl 命令可以控制,所以需要將下面的命令放到 /etc/rc.local 的結尾。

echo never > /sys/kernel/mm/transparent_hugepage/enabled

通過以上配置,可以來啟動redis服務了。

$ systemctl start redis_6379
# 設置為開機啟動
$ systemctl enable redis_6379
# 通過以下命令,查看redis的狀態
$ systemctl status redis_6379

?

這里寫圖片描述

然后使用客戶端來進行測試一下redis服務是否正常,參見截圖:?
這里寫圖片描述

redis的監控redis-stat的安裝

由于redis-stat是使用ruby開發的,在安裝前,請確保你的環境已經有了ruby的環境,如果沒有,請自行google、百度安裝之,我就不寫了哦。?
由于ruby默認使用的鏡像在國外,剩下的不說了,大家都懂得,然后萬能的淘寶鏡像,切換一下:

$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/

證據如下:?
這里寫圖片描述

然后開始安裝:

$ gem install redis-stat

然后,一般來說,你會發現報錯啦,報錯如下:

復制代碼
Building native extensions.  This could take a while...
ERROR:  Error installing redis-stat:ERROR: Failed to build gem native extension./usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/share/include/ruby.hGem files will remain installed in /usr/local/share/gems/gems/json-1.8.3 for inspection.
Results logged to /usr/local/share/gems/gems/json-1.8.3/ext/json/ext/generator/gem_make.out
復制代碼

哈哈,,我好機智,想到大家很多人會搜索這個錯誤信息,會不會因此被帶到這里呢?就像試試認真寫的博客,會有多少人看。?
這個錯呢,很簡單,就是因為沒有安裝ruby-devel,所有通過yum給安裝上吧

$ yum -y install ruby-devel

這個就不要截圖了吧。沒什么好看的。

安裝完成后,再次執行?gem install redis-stat?
這里寫圖片描述

然后,至此安裝完成,看一看勞動成果吧。隨便說一句,它對redis的效率影響,基本可以忽略不計,因此,可以放心的使用。

$ redis-stat

?

這里寫圖片描述

然后,他會自帶一個web的版本。大家可以通過瀏覽器來訪問,具體方式留給大家自己去查一查,搜一搜吧。

單機版的redis服務安裝與監控,就全部搞定。so easy!!!

轉載于:https://www.cnblogs.com/rxbook/p/7122830.html

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

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

相關文章

sps及pps在解碼器內傳遞過程

首先解碼器中有一個全局變量seq_parameter_set_rbsp_t SeqParSet[MAXSPS];// MAXSPS32&#xff0c;它是一個指向序列參數集的數組。還有一個全局變量seq_parameter_set_rbsp_t *active_sps;主要為后續解碼所用。解碼器先將碼流中的數據讀入臨時指針sps&#xff0c;之后存入全局…

【技術分享】Ubuntu下使用微信教程

做后端開發的同學用的Linux&#xff08;ubuntu&#xff09;,肯定會因為沒有適配微信版本會感覺不太舒服&#xff0c;很多時候因為缺少一些辦公通訊軟件而感到不便。現在已經有很方便的Wine WeChat方案&#xff0c;但是微信在Wine上配置還有許多bug&#xff0c;今天在github上看…

python join函數_Python join()函數

原博文 2016-08-12 10:16 ? 今天寫python 100例時&#xff0c;有個題目是大致是這樣的&#xff1a;已知輸入形式是1321&#xff0c;要求輸出形式為1123 一開始思路是將輸入的字符串用split()函數劃分成數組&#xff0c;在對數組進行排序&#xff0c;再用for循環輸出 代碼附上&…

CSS中的盒子

盒子 盒子模型解釋元素在頁面中顯示成一個方塊&#xff0c;類似一個盒子&#xff0c;CSS盒子模型就是使用現實中盒子來做比喻&#xff0c;幫助我們設置元素對應的樣式。盒子模型示意圖如下&#xff1a; 把元素叫做盒子&#xff0c;設置對應的樣式分別為&#xff1a;盒子的邊框…

分享Kali Linux 2017年第17周鏡像文件

分享Kali Linux 2017年第17周鏡像文件 Kali Linux官方于4月23日發布2017年的第17周鏡像。這次維持了11個鏡像文件的規模。默認的Gnome桌面的4個鏡像&#xff0c;E17、KDE、LXDE、MATE、XFCE桌面的各一個&#xff0c;手機版的包括ARMEL和ARMHF。有最近要安裝Kali Linux系統的&am…

Djang重新整理migrations,解決:Django Table xxx already exist

在開發過程中&#xff0c;由于需求變更或者自我重構&#xff0c;需要清理migrations&#xff0c;以保持代碼整潔和后續的可維護性。 場景一 不考慮數據庫數據表&#xff0c;可以完全清空數據庫里面的表的數據。 步驟&#xff1a; 刪除所有migrations find . -path "/migr…

安全隨筆2:對稱加密應用場景

MD5或者說HASH值是一種不可逆的算法。如果需要從密文還原成明文&#xff0c;那么就需要對稱和非對稱這兩類可逆算法。 首先&#xff0c;簡單介紹下這兩類算法。圖9-1是對稱算法的示意圖&#xff1a; 圖9-1 對稱算法 在對稱算法中&#xff0c;首先需要發送方和接收方協定一個密鑰…

python安裝多久_python安裝與使用

1、進入官網下載python軟件 python-3.4.4.amd64.msi http://www.python.org/download/ 這個軟件包含三個環境&#xff0c;如下圖&#xff1a;2、雙擊安裝軟件 3、設置環境變量path";C:\Python34"; 4、驗證是否安裝成功 進入cmd中&#xff0c;輸入python,如果出現如下…

HADAMARD變換

for (j0;j<16;j) { for (i0;i<16;i) { M1[ i ][j]imgY_org[img->opix_yj][img->opix_xi]-img->mprr_2[k][j][ i ]; 計算當前宏塊殘差塊 M0[i%4][i/4][j%4][j/4]M1[ i ][j]; } } current_intra_sad_20; //…

CSS中的塊元素,內聯元素,內聯塊元素

塊元素,內聯元素,內聯塊元素 元素就是標簽&#xff0c;布局中常用的有三種標簽&#xff0c;塊元素、內聯元素、內聯塊元素&#xff0c;了解這三種元素的特性&#xff0c;才能熟練的進行頁面布局。 塊元素塊元素&#xff0c;也可以稱為行元素&#xff0c;布局中常用的標簽如&…

django 與 vue 的完美結合

最近接到一個任務&#xff0c;就是用django后端&#xff0c;前段用vue&#xff0c;做一個普通的簡單系統&#xff0c;我就是一搞后端的&#xff0c;聽到vue也是比較震驚&#xff0c;之前壓根沒接觸過vue。看了vue的一些文檔&#xff0c;還有一些項目&#xff0c;先說一下django…

東芝確定半導體重組計劃:保留閃存其他全賣

會計丑聞給日本東芝公司的業績帶來嚴重影響&#xff0c;為了提高盈利&#xff0c;東芝正在對旗下的半導體、個人電腦、白色家電等業務進行一次重大重組。據日經新聞1月23日報道&#xff0c;東芝已經正式制定了芯片業務重組的詳細計劃&#xff0c;除了占據優勢的閃存芯片之外&am…

python畫兩條曲線圖_python繪制多個曲線的折線圖

這篇文章利用的是matplotlib.pyplot.plot的工具來繪制折線圖&#xff0c;這里先給出一個段代碼和結果圖&#xff1a; # -*- coding: UTF-8 -*- import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt #這里導入你自己的數據 #...... #...... #x_axix&a…

5.19匯總

int block_x 8*(b8 & 0x01)4*(b4 & 0x01);int block_y 8*(b8 >> 1)4*(b4 >> 1);請問下老大 這兩句定義是什么意思啊&#xff1f; 帶些值進去算一下就知道了 b8 0 1 2 3b4 0 1 2 3 A&#xff1a;0 ........Er…

oracle 截取字指定的字符串

過濾指定的字符串,一字符串有重復的數據內容,所以需要去掉重復的內容,subst()截取 起止下標;instr()獲取終止下標位置 例如:substr(p.address, 0, instr(p.address, -, 1, 1)-1) ); case when length(substr(p.address, 0, instr(p.address, -, 1, 1)-1) ) 13 then substr(sub…

[django]django模型中auto_now和auto_now_add

示例: update_time models.DateTimeField(更新時間, defaulttimezone.now) create_time models.DateTimeField(創建時間, auto_now_addTrue) auto_now無論是你添加還是修改對象&#xff0c;時間為你添加或者修改的時間。 auto_now_add為添加時的時間&#xff0c;更新對象時不…

2014-7-29-阿里電面-第一輪

等了好久&#xff0c;以為簡歷要掛了&#xff0c;今天最終打來了。面試過程中手抖嘴抖有木有&#xff01; 1、經經常使用的集合類。我回到ArrayList、LinkedList、HashMap&#xff0c;接著問ArrayList、LinkedList的差別&#xff0c;以及分別的適用范圍。看了Java集合類基本上是…

數據分級分類實施指南_運營商行業數據安全治理實踐

建立組織構建大數據安全保障組一、大數據安全保障工作組職責 1、負責制定大數據信息安全策略&#xff0c;明確信息安全目標。 2、組織相關平臺負責人定期召開信息安全會議。 3、負責客戶數據安全突發事件應急方案實施和大數據信息系統日常安全運行管理的組織協調及決策工作。 4…

CSS中的定位

定位 關于定位我們可以使用css的position屬性來設置元素的定位類型&#xff0c;postion的設置項如下&#xff1a; relative 生成相對定位元素&#xff0c;元素所占據的文檔流的位置不變&#xff0c;元素本身相對文檔流的位置進行偏移absolute 生成絕對定位元素&#xff0c;元…

servlet中中文正常顯示,mysql數據庫手動插入中文正常顯示,servlet向mysql中插入中文顯示亂碼...

作者&#xff1a;http://5563447.blog.51cto.com/5553447/1422627 問題是&#xff1a;就是POST請求提交表單數據給servlet,通過JDBC插入Mysql,出現中文亂碼。 解決方式&#xff1a;在url后面加這句 ?useUnicodetrue&characterEncodingutf-8 我的項目&#xff1a; 結果&am…