威客电竞,雷火竞技官网入口 360doc--woh5r1ofyffxnh的文章 http://www.woyoushebao.com/rssperson/81790262.aspx 360doc (http://www.woyoushebao.com) zh-cn 360doc--個(gè)人圖書(shū)館 想要控制好權(quán)限,這8個(gè)注解必須知道! http://www.woyoushebao.com/content/23/0807/08/81790262_1091494706.shtml 2023/8/7 8:57:09
Spring Security 中支持多種數(shù)據(jù)權(quán)限注解,若想使用內(nèi)置的注解,首先需要通過(guò)@EnableGlobalMethodSecurity這個(gè)注解開(kāi)啟權(quán)限注解的支持,代碼如下:jsr250Enabled:設(shè)置為true,將會(huì)開(kāi)啟 JSR-250 提供的注解,主要包括 @DenyAll、@PermitAll 以及 @RolesAllowed 三個(gè)注解,這些注解也不支持權(quán)限表達(dá)式。@Secured 注解也是 Spring Security 提供的權(quán)限注解,不同于前面四個(gè)注解,該注解不支持權(quán)限表達(dá)式,只能做一些簡(jiǎn)單的權(quán)限描述。
一個(gè)注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅! http://www.woyoushebao.com/content/23/0801/08/81790262_1090786062.shtml 2023/8/1 8:57:29
一個(gè)注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!這里我們就暫且不談對(duì)單個(gè)接口的冪等優(yōu)化了,要想一個(gè)方案全局解決這個(gè)問(wèn)題,在碼猿慢病云管理系統(tǒng)中其實(shí)只要保證這種并發(fā)不高的接口在一定時(shí)間段內(nèi)保證冪等即可,比如5秒之內(nèi),這樣在5秒之內(nèi)護(hù)士重復(fù)點(diǎn)擊就沒(méi)事。本節(jié)內(nèi)容介紹了防重注解@RepeatSubmit的實(shí)現(xiàn)原理,后續(xù)開(kāi)發(fā)中只需要在非查詢接口中添加這個(gè)注解就能保證在一定時(shí)間內(nèi)防止重復(fù)提交。12 一個(gè)注解防止接口重復(fù)提交業(yè)務(wù)。
微服務(wù)就要這樣設(shè)計(jì)! http://www.woyoushebao.com/content/23/0731/09/81790262_1090662426.shtml 2023/7/31 9:00:02
于是陳某花費(fèi)了兩個(gè)月的時(shí)間錄制了《Spring Cloud Alibaba 實(shí)戰(zhàn)》課程,通過(guò)一個(gè)完整的項(xiàng)目帶大家深入實(shí)戰(zhàn),其中運(yùn)用了當(dāng)下主流的微服務(wù)技術(shù),比如Nacos、Sentinel、Seata、OpenFeign、Skywalking.....
微服務(wù)開(kāi)發(fā)時(shí),接口不能對(duì)外暴露怎么辦? http://www.woyoushebao.com/content/23/0711/09/81790262_1088111351.shtml 2023/7/11 9:00:16
1. 網(wǎng)關(guān)+白名單。2. 網(wǎng)關(guān)+AOP.只要在業(yè)務(wù)接口處通過(guò)AOP的方式判斷一下請(qǐng)求頭中是否含有from=Y,如果有,則是內(nèi)部請(qǐng)求,反之則是外部請(qǐng)求網(wǎng)關(guān)+AOP實(shí)現(xiàn)。/** * 通過(guò)Sn查詢 * @param sn 設(shè)備SN號(hào) * @return 設(shè)備詳細(xì)信息 */ @GetMapping(value = "/device/sn/{sn}",headers = "from=Y") R<DeviceInfoVO> getBySn(@PathVariable("sn" ) String sn);}本節(jié)內(nèi)容介紹了微服務(wù)中接口不對(duì)外暴露的兩種方案:網(wǎng)關(guān)+白名單網(wǎng)關(guān)+AOP.
決定放棄 JWT 了! http://www.woyoushebao.com/content/23/0707/08/81790262_1087641057.shtml 2023/7/7 8:57:34
// ⑤ 獲取當(dāng)前已經(jīng)認(rèn)證的客戶端信息,這個(gè)是在OAuth2ClientAuthenticationFilter認(rèn)證成功客戶端認(rèn)證對(duì)象 Authentication clientPrincipal = SecurityContextHolder.getContext().getAuthentication(); if (clientPrincipal == null) { OAuth2EndpointUtils.throwError(OAuth2ErrorCodes.INVALID_REQUEST, OAuth2ErrorCodes.INVALID_CLIENT, OAuth2EndpointUtils.ACCESS_TOKEN_REQUEST_ERROR_URI); }
醫(yī)療系統(tǒng)的權(quán)限就該這樣設(shè)計(jì),穩(wěn)! http://www.woyoushebao.com/content/23/0627/08/81790262_1086401232.shtml 2023/6/27 8:57:12
科室/病區(qū)ID.那在醫(yī)護(hù)查詢數(shù)據(jù)如何去根據(jù)這個(gè)科室/病區(qū)權(quán)限過(guò)濾呢?按照正常的邏輯是應(yīng)該是第二種情況取交集,因?yàn)槟阕o(hù)士沒(méi)有這個(gè)權(quán)限就不應(yīng)該看到該科室/病區(qū)的數(shù)據(jù),但是實(shí)際情況是很多醫(yī)院的護(hù)士都是輪轉(zhuǎn)的,比如這個(gè)月到一病區(qū),下個(gè)月到二病區(qū),他們的科室/病區(qū)權(quán)限的維護(hù)并不是很及時(shí),主要是信息科的人員太懶了,這樣的話就會(huì)導(dǎo)致如果按照第二種情況取交集,那么這個(gè)護(hù)士登錄該臺(tái)設(shè)備就看不到自己所管的科室/病區(qū)的數(shù)據(jù)了。
Spring Cloud Gateway + Nacos 實(shí)現(xiàn)服務(wù)上下線無(wú)縫切換 http://www.woyoushebao.com/content/23/0303/15/81790262_1070284603.shtml 2023/3/3 15:15:46
@Override public void onEvent(InstancesChangeEvent event) { log.info("Spring Gateway 接收實(shí)例刷新事件:{}, 開(kāi)始刷新緩存", JacksonUtils.toJson(event)); Cache cache = defaultLoadBalancerCacheManager.getCache(SERVICE_INSTANCE_CACHE_NAME); if (cache != null) { cache.evict(event.getServiceName()); } log.info("Spring Gateway 實(shí)例刷新完成"); }
Jedis那么低性能,還在用?趕緊換上 lettuce 吧! http://www.woyoushebao.com/content/23/0303/15/81790262_1070284602.shtml 2023/3/3 15:15:46
在與 知識(shí)星球 的球友交流中,最近有很多小伙伴在面大廠, 經(jīng)常遇到下面的問(wèn)題:3大redis客戶端:Jedis、Redisson、Lettuce ,如何選型?Redis 官方推薦的 Java 客戶端有Jedis、lettuce 和 Redisson。Jedis 在線網(wǎng)址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html.Redisson 的優(yōu)勢(shì)是提供了很多開(kāi)箱即用的 Redis 高級(jí)功能,如果你的應(yīng)用中需要使用到 Redis 的高級(jí)功能,建議使用 Redisson。
用這4招 優(yōu)雅的實(shí)現(xiàn)Spring Boot 異步線程間數(shù)據(jù)傳遞 http://www.woyoushebao.com/content/23/0303/15/81790262_1070284598.shtml 2023/3/3 15:15:45
private static HashMap<ThreadLocal<Object>, Object> replayThreadLocalValues(@NonNull HashMap<ThreadLocal<Object>, Object> captured) { final HashMap<ThreadLocal<Object>, Object> backup = new HashMap<ThreadLocal<Object>, Object>();final HashMap<ThreadLocal<Object>, Object> threadLocal2Value = new HashMap<ThreadLocal<Object>, Object>();this.threadLocal2Value = threadLocal2Value;
搭了一個(gè)RocketMQ高可用集群,同事直呼哇塞! http://www.woyoushebao.com/content/23/0303/15/81790262_1070284597.shtml 2023/3/3 15:15:45
搭了一個(gè)RocketMQ高可用集群,同事直呼哇塞!export PATH=$JAVA_HOME/bin:$PATHexport ROCKETMQ_HOME=/usr/local/rocketmq-all-4.9.4-bin-releaseexport PATH=$PATH:$ROCKETMQ_HOME/bin.mkdir -p /usr/local/rocketmq/store/slavemkdir -p /usr/local/rocketmq/store/slave/commitlogmkdir -p /usr/local/rocketmq/store/slave/consumequeuemkdir -p /usr/local/rocketmq/store/slave/index3. broker配置文件。
項(xiàng)目終于用上了插入式注解,真香! http://www.woyoushebao.com/content/23/0303/15/81790262_1070284596.shtml 2023/3/3 15:15:45
需求似乎很簡(jiǎn)單,但真要獲取自身的jar版本號(hào)還是挺麻煩的,有個(gè)比較簡(jiǎn)單但陰間的辦法,就是給每一個(gè)組件都加上當(dāng)前的jar版本號(hào),寫(xiě)到配置文件里或者直接設(shè)置成常量,這樣上報(bào)promethus時(shí)就可以直接獲取到j(luò)ar包版本號(hào)了,這個(gè)方法雖然可以解決問(wèn)題,但每次迭代版本都要跟著改一遍所有組件包的版本號(hào)數(shù)據(jù),過(guò)于麻煩。就像lombok那樣,不需要寫(xiě)get、set方法,只需要加個(gè)注解標(biāo)記就可以自動(dòng)注入get、set方法。
業(yè)務(wù)單表 讀寫(xiě)緩慢 如何優(yōu)化? http://www.woyoushebao.com/content/23/0303/15/81790262_1070284595.shtml 2023/3/3 15:15:45
分庫(kù)分表的實(shí)現(xiàn)思路?分庫(kù)分表的不足?NewSQL目前比較主流則是TiDB,該技術(shù)比較新,雖然能夠滿足大數(shù)據(jù)量的存儲(chǔ),但是在選擇上還是需要做些考量:熟悉程度考量:如果你所在公司架構(gòu)組對(duì)于NewSQL比較數(shù)據(jù)或者已經(jīng)有在使用,則可以選擇穩(wěn)定性考量:關(guān)系型數(shù)據(jù)畢竟是久經(jīng)考驗(yàn),在穩(wěn)定性方面肯定是比較好,但是NewSQL的穩(wěn)定性卻無(wú)法去考量,建議初期階段可以將一些不太重要的數(shù)據(jù)使用NewSQL存儲(chǔ)基于MySQL的分庫(kù)分表。
百億級(jí)數(shù)據(jù) 分庫(kù)分表 后怎么分頁(yè)查詢? http://www.woyoushebao.com/content/23/0303/15/81790262_1070284592.shtml 2023/3/3 15:15:45
百億級(jí)數(shù)據(jù) 分庫(kù)分表 后怎么分頁(yè)查詢?select * from t_order_2 time>1664088392 order by time asc limit 5;本篇文章中介紹了分庫(kù)分表后的分頁(yè)查詢的三種方案:全局查詢法:這種方案最簡(jiǎn)單,但是隨著頁(yè)碼的增加,性能越來(lái)越低禁止跳頁(yè)查詢法:這種方案是在業(yè)務(wù)上更改,不能跳頁(yè)查詢,由于只返回一頁(yè)數(shù)據(jù),性能較高二次查詢法:數(shù)據(jù)精確,在數(shù)據(jù)分布均衡的情況下適用,查詢的數(shù)據(jù)較少,不會(huì)隨著翻頁(yè)增加數(shù)據(jù)的返回量,性能較高。
使用 查詢分離 后 從20s優(yōu)化到500ms http://www.woyoushebao.com/content/23/0303/15/81790262_1070284590.shtml 2023/3/3 15:15:44
修改業(yè)務(wù)代碼:寫(xiě)入數(shù)據(jù)后,異步建立查詢數(shù)據(jù)。MQ宕機(jī)意味著查詢數(shù)據(jù)不能繼續(xù)建立了,我們可以在寫(xiě)入數(shù)據(jù)的同時(shí)給該條數(shù)據(jù)加一個(gè)標(biāo)志字段(已搬運(yùn)、未搬運(yùn)),當(dāng)MQ啟動(dòng)后,查詢所有未搬運(yùn)的數(shù)據(jù),繼續(xù)建立查詢數(shù)據(jù)“消息的冪等消費(fèi)一定要保證,避免數(shù)據(jù)重復(fù)建立,比如:主數(shù)據(jù)的訂單 A 更新后,我們?cè)诓樵償?shù)據(jù)中插入了 A,可是此時(shí)系統(tǒng)出問(wèn)題了,系統(tǒng)誤以為查詢數(shù)據(jù)沒(méi)更新,又把訂單 A 插入更新了一次。
數(shù)據(jù)異構(gòu)就該這樣做,永遠(yuǎn)的神~ http://www.woyoushebao.com/content/23/0303/15/81790262_1070284588.shtml 2023/3/3 15:15:44
數(shù)據(jù)異構(gòu)就該這樣做,yyds~binlog方式canal異構(gòu)方式。確認(rèn)MySQL開(kāi)啟binlog,使用show variables like ''''''''log_bin''''''''; 查看ON為已開(kāi)啟確認(rèn)目標(biāo)庫(kù)可以產(chǎn)生binlog,show master status 注意Binlog_Do_DB,Binlog_Ignore_DB參數(shù)確認(rèn)binlog格式為ROW,使用show variables like ''''''''binlog_format''''''''; 非ROW模式登錄MySQL執(zhí)行 set global binlog_format=ROW; flush logs; 或者通過(guò)更改MySQL配置文件并重啟MySQL生效。
最安全的加密算法 Bcrypt,再也不用擔(dān)心數(shù)據(jù)泄密了~ http://www.woyoushebao.com/content/23/0303/15/81790262_1070284586.shtml 2023/3/3 15:15:44
JDK的String的Hash算法。雖然對(duì)同一個(gè)密碼,每次生成的hash不一樣,但是hash中包含了salt(hash產(chǎn)生過(guò)程:先隨機(jī)生成salt,salt跟password進(jìn)行hash);原始密碼123456加密之后的hash密碼:$2a$10$zt6dUMTjNSyzINTGyiAgluna3mPm7qdgl26vj4tFpsFO6WlK5lXNm123456是否匹配$2a$10$zt6dUMTjNSyzINTGyiAgluna3mPm7qdgl26vj4tFpsFO6WlK5lXNm:true654321是否匹配$2a$10$zt6dUMTjNSyzINTGyiAgluna3mPm7qdgl26vj4tFpsFO6WlK5lXNm:false.
手摸手教你定制 Spring Security 表單登錄 http://www.woyoushebao.com/content/23/0303/15/81790262_1070284584.shtml 2023/3/3 15:15:44
手摸手教你定制 Spring Security 表單登錄。這就需要Spring Security支持我們自己定制登錄頁(yè)面,也就是本文給大家介紹的FormLogin模式登錄認(rèn)證模式。這里不再使用Security默認(rèn)的頁(yè)面,自己定制一個(gè),代碼如下:?jiǎn)渭兊囊粋€(gè)表單登錄頁(yè)面,需要注意以下幾個(gè)參數(shù):action:security登錄的url,可以自定義,下文介紹username:security登錄的用戶名,可以自定義,下文介紹password:security登錄的密碼,可以自定義,下文介紹。
阿里終面:說(shuō)說(shuō)OAuth2.0 與 單點(diǎn)登錄的區(qū)別? http://www.woyoushebao.com/content/23/0303/15/81790262_1070284582.shtml 2023/3/3 15:15:44
雖然Oauth2.0能夠?qū)崿F(xiàn)單點(diǎn)登錄,但是在一些方面還是有些區(qū)別的,如下:信任角度:Oauth2.0授權(quán)服務(wù)端和第三方客戶端不屬于一個(gè)互相信任的應(yīng)用群,比如微信和第三方,這就不是一個(gè)公司的產(chǎn)品;然而單點(diǎn)登錄的服務(wù)端和接入的客戶端都在同一個(gè)相互信任的應(yīng)用系統(tǒng)中,比如百度官網(wǎng)、百度百科,這都是一個(gè)公司的產(chǎn)品資源角度:OAuth2.0授權(quán)主要是讓用戶自行決定——“我”在OAuth2.0服務(wù)提供方的個(gè)人資源是否允許第三方應(yīng)用訪問(wèn);
權(quán)限系統(tǒng)就該這么設(shè)計(jì),永遠(yuǎn)的神 http://www.woyoushebao.com/content/23/0303/15/81790262_1070284581.shtml 2023/3/3 15:15:44
RBAC模型可以分為:RBAC0、RBAC1、RBAC2、RBAC3 四個(gè)階段,一般公司使用RBAC0的模型就可以。角色分級(jí)的邏輯可以有效的規(guī)范角色創(chuàng)建(主要得益于權(quán)限繼承邏輯),我之前做過(guò)BD工具(類CRM),BD之間就有分級(jí)(經(jīng)理、主管、專員),如果采用RBAC0模型做權(quán)限系統(tǒng),我可能需要為經(jīng)理、主管、專員分別創(chuàng)建一個(gè)角色(角色之間權(quán)限無(wú)繼承性),極有可能出現(xiàn)一個(gè)問(wèn)題,由于權(quán)限配置錯(cuò)誤,主管擁有經(jīng)理都沒(méi)有權(quán)限。
HttpBasic 認(rèn)證模式活該被放棄 http://www.woyoushebao.com/content/23/0303/15/81790262_1070284580.shtml 2023/3/3 15:15:43
HttpBasic 認(rèn)證模式活該被放棄。今天來(lái)聊一聊spring security中的一種經(jīng)典認(rèn)證模式HttpBasic,在5.x版本之前作為Spring Security默認(rèn)認(rèn)證模式,但是在5.x版本中被放棄了,默認(rèn)的是form login認(rèn)證模式HttpBasic模式的應(yīng)用場(chǎng)景。由于陳某使用的是Spring Boot 2.x版本,此時(shí)的Spring Security 是5.x版本,默認(rèn)的認(rèn)證方式是form表單認(rèn)證,因此需要配置一下HttpBasic認(rèn)證模式,代碼如下: