書一直都有在讀,我會一直更新博文,歡迎大家前來閱讀、指教!
XML和註解
xml:應用於集中配置的場合,比如數據源的配置;
註解:像@Controller、@RequestMapping、@Transactional這樣的註解,更適合與java方法寫在一起,顯得簡單而直觀;
所以就很快興起了xml和註解的混合使用。
SSO單點登錄
1、首次登錄
首次登錄後,瀏覽器就會保存sso.com的cookie
2、驗證ticket
CAS是一個著名的SSO(單點登錄)解決方案
單點退出
用戶在一個系統退出了,認證中心需要把自己的會話和cookie消滅,然後還要去通知各個系統,讓他們也把自己的會話統統消滅,這樣才能在所有的系統中都實現真正的退出。
從密碼到token,一個有關授權的故事
授權碼+token
注:獲取token的過程是在服務器後臺完成的,瀏覽器接觸不到
需要注意的一個問題:由於瀏覽器接觸到了授權碼,所以存在安全問題?
解決方法:第一種---設置授權碼的失效時間;第二種---設置授權碼只能用來申請一次token
Redis
1、數據結構
List 列表
Set 集合
Sorted Set 有序集合
Hash 包含鍵值對的無序散列表
2、Hash槽(Hash Slot)
共16384個槽,採用了一種CRC16算法:先對key產生一個整數值,再對16384求餘數
優點:在Redis集羣中,很好的解決了在增、刪緩存服務器時的緩存失效問題
3、故障轉移
爲了使Redis集羣支持故障轉移,提供了master-slave功能,當Hash被均勻的分成幾個小組服務器,其中每個服務器都有一個master節點和多個slave節點組成,其中master節點的數據與slave節點的數據始終保持一致,對數據的操作都是在master節點中操作的,slave節點只作爲備份存在,一旦master節點掛掉,其中的一個slave節點就會替換它,成爲一個新的master,依然可以正常工作。
4、緩存服務器的優點
緩存服務器之間可以互相通信,保證數據的完整性;(Hash槽)
支持服務器動態的增加和刪除;(Hash槽)
還支持緩存數據的備份和故障轉移。(master-slave)
Nginx(web服務器)
實現了高可用,即集羣
keepalived------將多個Nginx形成一種master-slave結構(對外只提供一個IP地址)
Tomcat(Tomcat服務器)
實現了高可用,即集羣
實現集羣過程中,存在的問題:一個tomcat掛掉,他所擁有的session也會丟失,如何解決?
解決方案:將tomcat中的session放入Redis集羣
數據庫
實現了高可用,即集羣,實現方式----讀寫分離
一個master庫:可讀可寫,以寫爲主
多個slave庫:只能讀,不能寫
注:master庫與slave庫的數據要保持一致
如何實現數據庫事務的隔離?
X鎖和S鎖應運而生
X鎖----排他鎖,寫數據的時候用
S鎖----共享鎖,讀數據的時候用
讀寫分離的好處:極大地緩解了程序對X鎖和S鎖的爭用
數據庫的讀寫分離伴隨而來的一個問題是:tomcat的訪問比較麻煩,如何解決?
解決方案:在tomcat與數據庫之間添加一箇中間層,tomcat只需要正常的向中間層發出請求,具體的操作如:在程序中找到寫數據的操作,發到master庫去執行,找到讀數據的操作發到指定的slave庫去執行,這些繁瑣的事情交給中間層去解決。
加解密技術
分類:對稱加密、非對稱加密
1、對稱加密
對信息的加密和解密都使用相同的密鑰key,即:使用同一個密鑰key對數據進行加密和解密(需要交換密鑰key,交換過程中存在安全問題)
2、非對稱加密
密鑰被分解爲一對,一個公開密鑰(PK),一個私有密鑰(SK)。公鑰可以通過非保密方式向他人公開,而私鑰則由解密方保存,不對外公開。(發送信息的一方通過公鑰對數據進行加密,然後發送給接收方,接收方通過私鑰對密文進行解密)
優點:可以使通信雙方無需事先交換密鑰就可以建立安全通信。
下面簡要介紹下RSA:
RSA(公鑰加密算法)
用於數據的加密和數字簽名
1、選擇兩個素數P、Q |
---|
2、N=PQ |
3、T=(P-1)(Q-1) |
4、選擇一個整數E,使 E<T 且 (E,T)=1 |
5、由DE mod T 三 1 得出 D (mod 代表取餘) |
6、得到公鑰(N,E),私鑰(N,D) |
公鑰加密算法:
1、公鑰N,E
2、密文C
3、明文M
公式:C 三 M的E次方 mod N
私鑰解密算法:
1、私鑰N,D
2、密文C
3、明文M
公式:M 三 C的D次方 mod N
發送者A(RSA私鑰) | 接收者B(RSA公鑰) | |||||
明文M | ---> | 簽名DSKA(M) | ---> | 恢復EPKA(C) | ---> | M |
比較M' = M |
除A外沒有別人能具有A的私密密鑰SKA,所以除A外別人不能產生密文DSKA(M),這樣,報文M就被簽名了;B只能用持有的公鑰進行解密,以實現覈實A對報文的簽名。
心靈雞湯
到盡頭爲止,這本書我已經大致看了一遍。初次閱讀,在理解上可能還停留在表面,在以後我還會反覆去閱讀,正所謂:書讀百遍,其義自見。
1、對新技術要充滿好奇心,積極去學習。在現今這個技術更新飛快的時代,如果不實時更新自己的數據庫,就會很快被這個行業所淘汰。
2、敢於去挑戰自我能力之外的東西。當機會降臨的時候,要勇敢地抓住它,當然在去做的時候會遇到很多的問題,但它會引導你去瘋狂的學習,最後你就會發現自己登上了更高一層的臺階。
3、學東西要有追根溯源的喜好。想要對某個技術有更深層次的理解,就要明白這幾點:爲什麼要有這門技術、這門技術解決的什麼、如何使用這門技術。