當(dāng)前位置: 郭利方心理咨詢工作室 > 心理科普 > 青少年心理 > 正文

我要自閉[怎么引導(dǎo)自閉癥孩子]

更新日期:2021-11-23 13:27:56  來(lái)源:m.dealzgarage235.com

導(dǎo)讀布景跟著事務(wù)的開(kāi)展,體系架構(gòu)從單體架構(gòu)變?yōu)槊嫦蚍?wù)架構(gòu),水平分層架構(gòu);再變?yōu)槲⒎?wù)架構(gòu),服務(wù)網(wǎng)格,服務(wù)與服務(wù)間的交互越來(lái)越雜亂,怎樣高雅的規(guī)劃一個(gè)接口,需求考慮哪些方面?特別是對(duì)公服務(wù)(比方BFF)需求對(duì)外供給公網(wǎng)域名的接口,安全性怎樣確保,我整理了我作業(yè)以來(lái)一些常見(jiàn)的辦法以及詳細(xì)怎樣去完結(jié):數(shù)據(jù)有效性校驗(yàn)合法性校驗(yàn)包含:慣例性校驗(yàn)以及事務(wù)校驗(yàn);慣例性校驗(yàn):包含必填字段校驗(yàn),長(zhǎng)度校驗(yàn)...

布景

跟著事務(wù)的開(kāi)展,體系架構(gòu)從單體架構(gòu)變?yōu)槊嫦蚍?wù)架構(gòu),水平分層架構(gòu);再變?yōu)槲⒎?wù)架構(gòu),

服務(wù)網(wǎng)格,服務(wù)與服務(wù)間的交互越來(lái)越雜亂,怎樣高雅的規(guī)劃一個(gè)接口,需求考慮哪些方面?特別是對(duì)公服務(wù)(比方BFF)需求對(duì)外供給公網(wǎng)域名的接口,安全性怎樣確保,我整理了我作業(yè)以來(lái)一些常見(jiàn)的辦法以及詳細(xì)怎樣去完結(jié):

數(shù)據(jù)有效性校驗(yàn)

合法性校驗(yàn)包含:慣例性校驗(yàn)以及事務(wù)校驗(yàn); 慣例性校驗(yàn):包含必填字段校驗(yàn),長(zhǎng)度校驗(yàn),類(lèi)型校驗(yàn),格局校驗(yàn)等; 事務(wù)校驗(yàn):依據(jù)實(shí)踐事務(wù)而定,比方訂單金額不能小于0等;

冪等規(guī)劃

所謂冪等,簡(jiǎn)略地說(shuō),便是對(duì)接口的屢次調(diào)用所產(chǎn)生的成果和調(diào)用一次是共同的。數(shù)據(jù)產(chǎn)生改動(dòng)才需求做冪等,有些接口是天然確保冪等性的。

比方查詢接口,有些對(duì)數(shù)據(jù)的修正是一個(gè)常量,并且無(wú)其他記載和操作,那也能夠說(shuō)是具有冪等性的。其他狀況下,一切觸及對(duì)數(shù)據(jù)的修正、狀況的改變就都有必要避免重復(fù)性操作的產(chǎn)生。經(jīng)過(guò)直接的完結(jié)接口的冪等性來(lái)避免重復(fù)操作所帶來(lái)的影響。

又比方咱們電商比較常見(jiàn)的加減GMV同一個(gè)音訊不論過(guò)來(lái)多少次成果都應(yīng)該只加減一次,不然會(huì)導(dǎo)致金額過(guò)錯(cuò)乃至形成資損。

懇求層面: 屢次履行的成果是共同的 事務(wù)層面: 同一個(gè)用戶不重復(fù)下單,產(chǎn)品不超賣(mài),MQ不重復(fù)消費(fèi)

冪等的實(shí)質(zhì)是分布式鎖的問(wèn)題,分布式鎖正常能夠經(jīng)過(guò)redis或zookeeper完結(jié);

在分布式環(huán)境下,確定大局僅有資源,使懇求串行化,實(shí)踐表現(xiàn)為互斥鎖,避免重復(fù),處理冪等

安全性1. 數(shù)據(jù)加密

咱們知道數(shù)據(jù)在傳輸進(jìn)程中是很簡(jiǎn)略被抓包的,假如直接傳輸比方http協(xié)議傳輸,那么數(shù)據(jù)在傳輸?shù)倪M(jìn)程中或許被任何人獲取。

所以有必要對(duì)數(shù)據(jù)進(jìn)行加密,常見(jiàn)的做法是對(duì)敏感數(shù)據(jù)比方身份證號(hào)進(jìn)行md5加密。現(xiàn)在干流的做法是運(yùn)用https協(xié)議,在http和tcp之間增加一層數(shù)數(shù)據(jù)安全層(SSL層),這一層擔(dān)任數(shù)據(jù)的加密和解密。https怎樣裝備和運(yùn)用,咱們翻閱我歷史文章自行去研討。

對(duì)稱(chēng)加密: 密鑰在加密進(jìn)程中和解密進(jìn)程中是不變的,常見(jiàn)的算法有DES,AES;長(zhǎng)處是加解密核算速度快;缺點(diǎn)是數(shù)據(jù)傳送前,服務(wù)兩邊有必要約好好密鑰,假如一方密鑰走漏,加密信息也就不安全了。

非對(duì)稱(chēng)加密: 密鑰成對(duì)呈現(xiàn),一個(gè)密鑰加密之后,由別的一個(gè)密鑰來(lái)解密;私鑰放在服務(wù)端文件中,公鑰能夠發(fā)布給任何人運(yùn)用;長(zhǎng)處是比對(duì)稱(chēng)加密更安全,可是加解密的速度比對(duì)稱(chēng)加密慢多了,廣泛運(yùn)用的是RSA算法;

https的完結(jié)正好是結(jié)合了兩種加密方法,整合了兩邊的長(zhǎng)處,在安全性和功能方面都比較好。對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密的代碼完結(jié),jdk供給了相關(guān)的東西類(lèi)能夠直接運(yùn)用,本文不過(guò)多介紹。

2. 數(shù)據(jù)簽名

介紹3種數(shù)據(jù)簽名安全策略:摘要[KEY] , 簽名[證書(shū)] , 簽名+加密[證書(shū)]

安全策略 描繪 安全級(jí)別 摘要[Key] 將數(shù)據(jù)和Key(自界說(shuō)契約暗碼)組合后進(jìn)行摘要 安全級(jí)別低,契約密鑰安全性十分低。在契約密鑰安全狀況下能基本確保數(shù)據(jù)的不行篡改性。 簽名[證書(shū)] 運(yùn)用證書(shū)和非對(duì)稱(chēng)簽名算法對(duì)數(shù)據(jù)進(jìn)行簽名 安全級(jí)別中,能夠確保數(shù)據(jù)的不行篡改性和不行狡賴性,可是不能確保數(shù)據(jù)的私密性 簽名-加密[證書(shū)] 運(yùn)用證書(shū)和非對(duì)稱(chēng)算法對(duì)數(shù)據(jù)簽名,運(yùn)用一次一密的密鑰和對(duì)稱(chēng)算法對(duì)數(shù)據(jù)進(jìn)行加密 安全級(jí)別高,能夠確保數(shù)據(jù)的不行篡改性和不行狡賴性,并且能確保數(shù)據(jù)的私密性。

機(jī)密性(Confidentiality): 未經(jīng)許可不許看完整性(Integrity) : 不許篡改可用性(Availability) : 避免不行用不行狡賴性(Non-Repudiation): 用戶不能否定其行為

摘要[KEY]進(jìn)程:將需求提交的數(shù)據(jù)經(jīng)過(guò)某種方法組合成一個(gè)字符串,然后經(jīng)過(guò)md5生成一段加密字符串,這段字符串便是數(shù)據(jù)包的簽名,比方:

str:參數(shù)1={參數(shù)1}&參數(shù)2={參數(shù)2}&……&參數(shù)n={參數(shù)n}$key={用戶密鑰};MD5.encrypt(str);

摘要[KEY]原理:Hash算法不行逆,并且核算成果具有僅有性,在key 的隱私得到確保的狀況下,能夠確保完整性 摘要[KEY]缺點(diǎn):key的隱私性很難確保,明文傳輸

簽名[證書(shū)]進(jìn)程:客戶端對(duì)明文做一個(gè)md5/SHA核算,對(duì)核算后的值經(jīng)過(guò)私鑰加密得到密文,客戶端將明文和密文發(fā)送給服務(wù)端,服務(wù)端對(duì)密文經(jīng)過(guò)公鑰解密得到值A(chǔ),一起服務(wù)端對(duì)明文做一個(gè)md5/SHA核算得到值B,比較值A(chǔ)與值B,相同得驗(yàn)證經(jīng)過(guò),能夠確保不行篡性和不行狡賴性,可是不能確保數(shù)據(jù)的私密性(明文傳輸)

簽名+加密[證書(shū)]進(jìn)程:客戶端生成一個(gè)隨機(jī)字符串,作為password,然后把這個(gè)password經(jīng)過(guò)B公鑰加密生成密文C,把A明文經(jīng)過(guò)password加密生成密文B, 一起把A明文做MD5/SHA核算后的值經(jīng)過(guò)A私鑰加密得到簽名D, 把密文B和密文C和簽名D發(fā)給服務(wù)端,服務(wù)端經(jīng)過(guò)私鑰解密文C得到password,然后經(jīng)過(guò)password解密文B就能夠得到A明文,一起簽名能夠用來(lái)驗(yàn)證發(fā)送者是不是A,以及A發(fā)送的數(shù)據(jù)有沒(méi)有被第三方修正過(guò)。

能夠假定存在一個(gè)歹意的一方X,假充了A,發(fā)送了密文B(password生成),密文C服務(wù)端收到數(shù)據(jù)后,依然能夠正常解密得到明文,可是卻無(wú)法證明這個(gè)明文數(shù)據(jù)是A發(fā)送的仍是歹意用戶B發(fā)送的。簽名D的意義便是A自己簽名,服務(wù)端能夠驗(yàn)證。X因?yàn)闆](méi)有A的私鑰,這個(gè)簽名它無(wú)法假充,會(huì)被服務(wù)端辨認(rèn)出來(lái)。

加密-簽名

3. 時(shí)刻戳機(jī)制

數(shù)據(jù)經(jīng)過(guò)了加密處理,酒店抓取到了數(shù)據(jù)也看不到實(shí)在數(shù)據(jù);可是有不法者不關(guān)心實(shí)在數(shù)據(jù),拿到數(shù)據(jù)后直接進(jìn)行歹意懇求,這個(gè)時(shí)分簡(jiǎn)略的做法能夠考慮時(shí)刻戳機(jī)制,在每次懇求中參加當(dāng)時(shí)時(shí)刻,服務(wù)端會(huì)將報(bào)文中的時(shí)刻與體系當(dāng)時(shí)時(shí)刻做比對(duì),看是否在一個(gè)固定的時(shí)刻范圍內(nèi)比方5分鐘,歹意假造的數(shù)據(jù)是無(wú)法更改報(bào)文中時(shí)刻的,超越5分鐘就能夠當(dāng)作不合法懇求了。

偽代碼如下:

longinterval=5*60*1000;//超時(shí)時(shí)刻longclientTime=request.getparameter("clientTime");longserverTime=System.currentTimeMillis();if(serverTime-clientTime>interval){returnnewResponse("超越處理時(shí)長(zhǎng)")}4. AppId機(jī)制

大部分網(wǎng)站需求用戶名和暗碼才干登陸,這其實(shí)是一種安全機(jī)制;對(duì)應(yīng)的服務(wù)也能夠運(yùn)用這一機(jī)制,不是誰(shuí)都能夠調(diào)用,調(diào)用服務(wù)前有必要先懇求注冊(cè)一個(gè)僅有的appid,供給相關(guān)的密鑰,在調(diào)用接口時(shí)需求供給appid+密鑰信息,服務(wù)端會(huì)進(jìn)行驗(yàn)證。

appid運(yùn)用字母,數(shù)字,特殊符號(hào)等隨機(jī)生成,生成的僅有appid看體系實(shí)踐要求是否需求大局僅有;不論是否大局僅有最好有以下特點(diǎn):

趨勢(shì)遞加: 這樣在保存數(shù)據(jù)庫(kù)的時(shí)分,索引的功能更好

信息安全: 隨機(jī)生成,不要是接連的,簡(jiǎn)略被發(fā)現(xiàn)規(guī)則

關(guān)于大局僅有Id生成的方法常見(jiàn)的有snowflake方法等

snowflake

以上示意圖描繪了一個(gè)序列號(hào)的二進(jìn)制組成結(jié)構(gòu)。

第一位不必,恒為0,即表明正整數(shù);接下來(lái)的41位表明時(shí)刻戳,準(zhǔn)確到毫秒。為了節(jié)省空間,能夠?qū)⒋藭r(shí)刻戳界說(shuō)為間隔某個(gè)時(shí)刻點(diǎn)所閱歷的毫秒數(shù)(Java默許是1970-01-01 00:00:00)。

再后來(lái)的10位用來(lái)標(biāo)識(shí)作業(yè)機(jī)器,假如呈現(xiàn)了跨IDC的狀況,能夠?qū)⑦@10位一分為二,一部分用于標(biāo)識(shí)IDC,一部分用于標(biāo)識(shí)服務(wù)器;最終12位是序列號(hào),自增加。

snowflake的中心思維是64bit的合理分配,但不必要嚴(yán)厲依照上圖所示的分法。假如在機(jī)器較少的狀況下,能夠恰當(dāng)縮短機(jī)器id的長(zhǎng)度,留出來(lái)給序列號(hào)。

5. 黑名單機(jī)制

假如此appid進(jìn)行過(guò)許多不合法操作,或許說(shuō)專(zhuān)門(mén)有一個(gè)中黑體系,經(jīng)過(guò)剖析之后直接將此appid列入黑名單,一切懇求直接回來(lái)過(guò)錯(cuò)碼;

咱們能夠給每個(gè)appid設(shè)置一個(gè)狀況比方包含:初始化狀況,正常狀況,中黑狀況,封閉狀況等等;或許咱們直接經(jīng)過(guò)分布式裝備中心,直接保存黑名單列表,每次查看是否在列表中即可;

限流機(jī)制

常用的限流算法包含:令牌桶限流,漏桶限流,計(jì)數(shù)器限流;

令牌桶限流 令牌桶算法的原理是體系以必定速率向桶中放入令牌,填滿了就丟掉令牌;懇求來(lái)時(shí)會(huì)先從桶中取出令牌,假如能取到令牌,則能夠持續(xù)完結(jié)懇求,不然等候或許拒絕服務(wù);令牌桶答應(yīng)必定程度突發(fā)流量,只需有令牌就能夠處理,支撐一次拿多個(gè)令牌;漏桶限流 漏桶算法的原理是依照固定常量速率流出懇求,流入懇求速率恣意,當(dāng)懇求數(shù)超越桶的容量時(shí),新的懇求等候或許拒絕服務(wù);能夠看出漏桶算法能夠強(qiáng)制約束數(shù)據(jù)的傳輸速度;計(jì)數(shù)器限流 計(jì)數(shù)器是一種比較簡(jiǎn)略粗獷的算法,首要用來(lái)約束總并發(fā)數(shù),比方數(shù)據(jù)庫(kù)連接池、線程池、秒殺的并發(fā)數(shù);計(jì)數(shù)器限流只需必定時(shí)刻內(nèi)的總懇求數(shù)超越設(shè)定的閥值則進(jìn)行限流;

詳細(xì)根據(jù)以上算法怎樣完結(jié),Guava供給了RateLimiter東西類(lèi)根據(jù)根據(jù)令牌桶算法:

RateLimiterrateLimiter=RateLimiter.create(5);

以上代碼表明一秒鐘只答應(yīng)處理五個(gè)并發(fā)懇求,以上方法只能用在單使用的懇求限流,不能進(jìn)行大局限流;這個(gè)時(shí)分就需求分布式限流,能夠根據(jù)redis+lua來(lái)完結(jié);

總結(jié)

其實(shí)接口不論是規(guī)劃仍是開(kāi)發(fā),假如不是特別急的需求咱們都能夠多一點(diǎn)考慮,這樣你的體系才會(huì)更安穩(wěn),上線和測(cè)驗(yàn)進(jìn)程中bug更少,并且從個(gè)人提高視點(diǎn)來(lái)說(shuō),多考慮總是一件功德。

許多時(shí)分咱們都在訴苦:哎呀我公司小,我校園差這種環(huán)境得不到生長(zhǎng)。傻瓜,許多時(shí)分高手也是這樣走過(guò)來(lái)的,不過(guò)相同的工作每個(gè)人的情緒不相同,時(shí)刻久了成果也就不相同了。

好啦,現(xiàn)在咱們應(yīng)該都上班了,我熬夜值勤還在大促現(xiàn)場(chǎng)(文章周末寫(xiě)的,現(xiàn)在就寫(xiě)個(gè)總結(jié)),我是敖丙,你知道的越多,你不知道的越多,咱們下期見(jiàn)。

閱讀全文
Cnzz