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