女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

風(fēng)控系統(tǒng)就該這么設(shè)計穩(wěn)的一批!

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-01-30 09:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

12ab472e-a03d-11ed-bfe3-dac502259ad0.jpg

一、背景

1.為什么要做風(fēng)控?

這不得拜產(chǎn)品大佬所賜

目前我們業(yè)務(wù)有使用到非常多的AI能力,如ocr識別、語音測評等,這些能力往往都比較費(fèi)錢或者費(fèi)資源,所以在產(chǎn)品層面也希望我們對用戶的能力使用次數(shù)做一定的限制,因此風(fēng)控是必須的!

2.為什么要自己寫風(fēng)控?

那么多開源的風(fēng)控組件,為什么還要寫呢?是不是想重復(fù)發(fā)明輪子呀.12d2b32c-a03d-11ed-bfe3-dac502259ad0.jpg

要想回答這個問題,需要先解釋下我們業(yè)務(wù)需要用到的風(fēng)控(簡稱業(yè)務(wù)風(fēng)控),與開源常見的風(fēng)控(簡稱普通風(fēng)控)有何區(qū)別:

12dbbc42-a03d-11ed-bfe3-dac502259ad0.png

因此,直接使用開源的普通風(fēng)控,一般情況下是無法滿足需求的

3.其它要求

支持實時調(diào)整限制

很多限制值在首次設(shè)置的時候,基本上都是拍定的一個值,后續(xù)需要調(diào)整的可能性是比較大的,因此可調(diào)整并實時生效是必須的

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

二、思路

要實現(xiàn)一個簡單的業(yè)務(wù)風(fēng)控組件,要做什么工作呢?

1.風(fēng)控規(guī)則的實現(xiàn)

a.需要實現(xiàn)的規(guī)則:

  • 自然日計數(shù)
  • 自然小時計數(shù)
  • 自然日+自然小時計數(shù)

自然日+自然小時計數(shù) 這里并不能單純地串聯(lián)兩個判斷,因為如果自然日的判定通過,而自然小時的判定不通過的時候,需要回退,自然日跟自然小時都不能計入本次調(diào)用!

b.計數(shù)方式的選擇:

目前能想到的會有:

  • mysql+db事務(wù) 持久化、記錄可溯源、實現(xiàn)起來比較麻煩,稍微“重”了一點(diǎn)
  • redis+lua 實現(xiàn)簡單,redis的可執(zhí)行l(wèi)ua腳本的特性也能滿足對“事務(wù)”的要求
  • mysql/redis+分布式事務(wù) 需要上鎖,實現(xiàn)復(fù)雜,能做到比較精確的計數(shù),也就是真正等到代碼塊執(zhí)行成功之后,再去操作計數(shù)

目前沒有很精確技術(shù)的要求,代價太大,也沒有持久化的需求,因此選用 redis+lua 即可

2.調(diào)用方式的實現(xiàn)

a.常見的做法 先定義一個通用的入口

//簡化版代碼

@Component
classDetectManager{
funmatchExceptionally(eventId:String,content:String){
//調(diào)用規(guī)則匹配
valrt=ruleService.match(eventId,content)
if(!rt){
throwBaseException(ErrorCode.OPERATION_TOO_FREQUENT)
}
}
}

在service中調(diào)用該方法

//簡化版代碼

@Service
classOcrServiceImpl:OcrService{

@Autowired
privatelateinitvardetectManager:DetectManager

/**
*提交ocr任務(wù)
*需要根據(jù)用戶id來做次數(shù)限制
*/
overridefunsubmitOcrTask(userId:String,imageUrl:String):String{
detectManager.matchExceptionally("ocr",userId)
//doocr
}

}

有沒有更優(yōu)雅一點(diǎn)的方法呢? 用注解可能會更好一點(diǎn)(也比較有爭議其實,這邊先支持實現(xiàn))

由于傳入的 content 是跟業(yè)務(wù)關(guān)聯(lián)的,所以需要通過Spel來將參數(shù)構(gòu)成對應(yīng)的content

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

三、具體實現(xiàn)

1.風(fēng)控計數(shù)規(guī)則實現(xiàn)

a.自然日/自然小時

自然日/自然小時可以共用一套lua腳本,因為它們只有key不同,腳本如下:

//lua腳本
localcurrentValue=redis.call('get',KEYS[1]);
ifcurrentValue~=falsethen
iftonumber(currentValue)tonumber(ARGV[1])then
returnredis.call('INCR',KEYS[1]);
else
returntonumber(currentValue)+1;
end;
else
redis.call('set',KEYS[1],1,'px',ARGV[2]);
return1;
end;

其中 KEYS[1] 是日/小時關(guān)聯(lián)的key,ARGV[1]是上限值,ARGV[2]是過期時間,返回值則是當(dāng)前計數(shù)值+1后的結(jié)果,(如果已經(jīng)達(dá)到上限,則實際上不會計數(shù))

b.自然日+自然小時 如前文提到的,兩個的結(jié)合實際上并不是單純的拼湊,需要處理回退邏輯

//lua腳本
localdayValue=0;
localhourValue=0;
localdayPass=true;
localhourPass=true;
localdayCurrentValue=redis.call('get',KEYS[1]);
ifdayCurrentValue~=falsethen
iftonumber(dayCurrentValue)tonumber(ARGV[1])then
dayValue=redis.call('INCR',KEYS[1]);
else
dayPass=false;
dayValue=tonumber(dayCurrentValue)+1;
end;
else
redis.call('set',KEYS[1],1,'px',ARGV[3]);
dayValue=1;
end;

localhourCurrentValue=redis.call('get',KEYS[2]);
ifhourCurrentValue~=falsethen
iftonumber(hourCurrentValue)tonumber(ARGV[2])then
hourValue=redis.call('INCR',KEYS[2]);
else
hourPass=false;
hourValue=tonumber(hourCurrentValue)+1;
end;
else
redis.call('set',KEYS[2],1,'px',ARGV[4]);
hourValue=1;
end;

if(notdayPass)andhourPassthen
hourValue=redis.call('DECR',KEYS[2]);
end;

ifdayPassand(nothourPass)then
dayValue=redis.call('DECR',KEYS[1]);
end;

localpair={};
pair[1]=dayValue;
pair[2]=hourValue;
returnpair;

其中 KEYS[1] 是天關(guān)聯(lián)生成的key, KEYS[2] 是小時關(guān)聯(lián)生成的key,ARGV[1]是天的上限值,ARGV[2]是小時的上限值,ARGV[3]是天的過期時間,ARGV[4]是小時的過期時間,返回值同上

這里給的是比較粗糙的寫法,主要需要表達(dá)的就是,進(jìn)行兩個條件判斷時,有其中一個不滿足,另一個都需要進(jìn)行回退.

2.注解的實現(xiàn)

a.定義一個@Detect注解

@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION,AnnotationTarget.CLASS)
annotationclassDetect(

/**
*事件id
*/
valeventId:String="",

/**
*content的表達(dá)式
*/
valcontentSpel:String=""

)

其中content是需要經(jīng)過表達(dá)式解析出來的,所以接受的是個String

b.定義@Detect注解的處理類

@Aspect
@Component
classDetectHandler{

privatevallogger=LoggerFactory.getLogger(javaClass)

@Autowired
privatelateinitvardetectManager:DetectManager

@Resource(name="detectSpelExpressionParser")
privatelateinitvarspelExpressionParser:SpelExpressionParser

@Bean(name=["detectSpelExpressionParser"])
fundetectSpelExpressionParser():SpelExpressionParser{
returnSpelExpressionParser()
}

@Around(value="@annotation(detect)")
funoperatorAnnotation(joinPoint:ProceedingJoinPoint,detect:Detect):Any?{
if(detect.eventId.isBlank()||detect.contentSpel.isBlank()){
throwillegalArgumentExp("@Detectconfigisnotavailable!")
}
//轉(zhuǎn)換表達(dá)式
valexpression=spelExpressionParser.parseExpression(detect.contentSpel)
valargMap=joinPoint.args.mapIndexed{index,any->
"arg${index+1}"toany
}.toMap()
//構(gòu)建上下文
valcontext=StandardEvaluationContext().apply{
if(argMap.isNotEmpty())this.setVariables(argMap)
}
//拿到結(jié)果
valcontent=expression.getValue(context)

detectManager.matchExceptionally(detect.eventId,content)
returnjoinPoint.proceed()
}
}

需要將參數(shù)放入到上下文中,并起名為arg1arg2....

四、測試一下

1.寫法

使用注解之后的寫法:

//簡化版代碼

@Service
classOcrServiceImpl:OcrService{

@Autowired
privatelateinitvardetectManager:DetectManager

/**
*提交ocr任務(wù)
*需要根據(jù)用戶id來做次數(shù)限制
*/
@Detect(eventId="ocr",contentSpel="#arg1")
overridefunsubmitOcrTask(userId:String,imageUrl:String):String{
//doocr
}

}

2.Debug看看

12e43304-a03d-11ed-bfe3-dac502259ad0.jpg
  • 注解值獲取成功
  • 表達(dá)式解析成功


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    34781

    瀏覽量

    277162
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3647

    瀏覽量

    43676
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4894

    瀏覽量

    70456

原文標(biāo)題:風(fēng)控系統(tǒng)就該這么設(shè)計(萬能通用),穩(wěn)的一批!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    同星智能入選 “新質(zhì)企業(yè)”第一批種子企業(yè)名單

    近日,中國生產(chǎn)力促進(jìn)中心協(xié)會正式公布“新質(zhì)企業(yè)”第一批種子企業(yè)入庫名單。此次評選基于企業(yè)創(chuàng)新能力、產(chǎn)業(yè)價值、數(shù)字化能力、成長性、可持續(xù)性五大核心指標(biāo),旨在培育現(xiàn)代化產(chǎn)業(yè)體系中的標(biāo)桿企業(yè),推動新質(zhì)
    的頭像 發(fā)表于 04-03 20:03 ?339次閱讀
    同星智能入選 “新質(zhì)企業(yè)”第<b class='flag-5'>一批</b>種子企業(yè)名單

    江西薩瑞微電子榮獲2025年第一批次“數(shù)智工廠”企業(yè)稱號

    熱烈祝賀江西省工業(yè)和信息化廳正式公布2025年第一批次“數(shù)智工廠”企業(yè)名單,江西薩瑞微電子技術(shù)有限公司憑借在半導(dǎo)體集成電路領(lǐng)域的數(shù)字化創(chuàng)新與智能制造實力,成功入選。上下滑動,查看更多“數(shù)智工廠
    的頭像 發(fā)表于 03-20 11:46 ?488次閱讀
    江西薩瑞微電子榮獲2025年第<b class='flag-5'>一批</b>次“數(shù)智工廠”企業(yè)稱號

    鴻道Intewell操作系統(tǒng)入選工信部第一批先進(jìn)適用技術(shù)名單

    程序,形成了第一批先進(jìn)適用技術(shù)名單。科東軟件自主研發(fā)的“基于鴻道(Intewell)操作系統(tǒng)混合關(guān)鍵技術(shù)的智能工控系統(tǒng)”入選“第一批先進(jìn)適用技術(shù)名單”。
    的頭像 發(fā)表于 03-04 11:29 ?392次閱讀
    鴻道Intewell操作<b class='flag-5'>系統(tǒng)</b>入選工信部第<b class='flag-5'>一批</b>先進(jìn)適用技術(shù)名單

    穩(wěn)拌合站智能監(jiān)測管理系統(tǒng)在水穩(wěn)拌合站質(zhì)量管理中起到關(guān)鍵作用

    ? ? ? 隨著現(xiàn)代工程建設(shè)對質(zhì)量控制要求的不斷提升,傳統(tǒng)的水穩(wěn)拌合站管理模式已經(jīng)難以滿足高效、安全、精確的施工需求。水穩(wěn)拌合站智能監(jiān)測管理系統(tǒng)應(yīng)運(yùn)而生,憑借其先進(jìn)的數(shù)據(jù)采集、無線網(wǎng)絡(luò)傳輸、實時
    的頭像 發(fā)表于 02-19 09:13 ?280次閱讀

    達(dá)實智能入選深圳市第一批全屋智能建筑應(yīng)用試點(diǎn)項目

    近期,深圳市住房和建設(shè)局公布了《深圳市第一批全屋智能建筑應(yīng)用試點(diǎn)項目清單》,達(dá)實智能大廈憑借在空間場景及物聯(lián)網(wǎng)平臺的應(yīng)用入選清單,成為首批9個項目之
    的頭像 發(fā)表于 02-07 09:29 ?781次閱讀

    手機(jī)和鋰電池納入第一批工業(yè)產(chǎn)品碳足跡核算規(guī)則團(tuán)體標(biāo)準(zhǔn)推薦清單

    了《工業(yè)產(chǎn)品碳足跡核算規(guī)則團(tuán)體標(biāo)準(zhǔn)推薦清單(第一批)》(以下簡稱《清單》)。手機(jī)和鋰電池作為重要的電子產(chǎn)品及其關(guān)鍵組件,其碳排放量對全球氣候變化具有重要影響,因此
    的頭像 發(fā)表于 01-21 17:47 ?1158次閱讀
    手機(jī)和鋰電池納入第<b class='flag-5'>一批</b>工業(yè)產(chǎn)品碳足跡核算規(guī)則團(tuán)體標(biāo)準(zhǔn)推薦清單

    十堰新一批智慧路燈投用,集多種功能于身 智慧路燈案例分享

    十堰新一批智慧路燈投用,集多種功能于身 智慧路燈案例分享
    的頭像 發(fā)表于 01-03 10:39 ?328次閱讀
    十堰新<b class='flag-5'>一批</b>智慧路燈投用,集多種功能于<b class='flag-5'>一</b>身 智慧路燈案例分享

    win系統(tǒng)處顯示當(dāng)時的時間日期

    win系統(tǒng)處顯示當(dāng)時的時間日期
    發(fā)表于 12-30 08:53

    芯來科技入選上海市新輪第一批重點(diǎn)“小巨人”企業(yè)

    )等文件規(guī)定,上海市新輪第一批重點(diǎn)“小巨人”企業(yè)實施期初獎補(bǔ)資金分配方案正式公布。芯來科技憑借在RISC-V領(lǐng)域的專業(yè)化實力與示范作用成功入選上海市新輪第一批重點(diǎn)“小巨人”企業(yè)。
    的頭像 發(fā)表于 12-19 15:38 ?743次閱讀

    喜報 | 航芯入選新輪第一批國家重點(diǎn)“小巨人”企業(yè)并將獲中央財政支持

    CONGRATULATION熱烈祝賀航芯科技喜獲國家榮譽(yù)入選國家重點(diǎn)“小巨人”企業(yè)并將獲得中央財政支持厚積薄發(fā)再攀高峰近日,市經(jīng)信委對上海市新輪第一批重點(diǎn)“小巨人”企業(yè)實施期初獎補(bǔ)資金分配
    的頭像 發(fā)表于 12-13 13:15 ?1093次閱讀
    喜報 | 航芯入選新<b class='flag-5'>一</b>輪第<b class='flag-5'>一批</b>國家重點(diǎn)“小巨人”企業(yè)并將獲中央財政支持

    本人研,做DFB激光穩(wěn)頻,目前只差FPGA ADC DAC做個反饋系統(tǒng)

    我目前要做的是DFB激光器的穩(wěn)頻。目前差個數(shù)字電路的穩(wěn)系統(tǒng),我打算用FPGA來實現(xiàn)。要求:個ADC(內(nèi)置或者外接的模塊)八通道以上,來
    發(fā)表于 12-01 21:48

    總投資超60億元,一批半導(dǎo)體相關(guān)項目簽約江蘇宜興

    近日,宜興經(jīng)開區(qū)開放創(chuàng)新合作大會在宜興陶都半島酒店舉行。一批重要載體現(xiàn)場揭牌,一大批重磅項目集中簽約,為建設(shè)國際化現(xiàn)代化流園區(qū)注入新的動能。
    的頭像 發(fā)表于 10-24 17:49 ?816次閱讀

    國電西高成功交貨一批高壓電氣設(shè)備檢測儀器

    近日,北京電建公司、桂林成套廠和山東電力服務(wù)公司采購國電西高一批高壓電氣設(shè)備檢測儀器。經(jīng)過生產(chǎn)部門的努力和質(zhì)檢團(tuán)隊的嚴(yán)格把關(guān),所有訂單均順利完成,并及時發(fā)貨。
    的頭像 發(fā)表于 10-11 10:46 ?612次閱讀

    羅萊迪思入選2024年第一批浙江省制造業(yè)單項冠軍培育企業(yè)!

    8月23日,浙江省經(jīng)濟(jì)和信息化廳公布了2024年第一批浙江省制造業(yè)單項冠軍培育企業(yè)名單,根據(jù)《關(guān)于開展2024年浙江省制造業(yè)單項冠軍培育企業(yè)遴選入庫工作的通知》要求,經(jīng)企業(yè)自主申報、各地推薦審核、省廳復(fù)審復(fù)查,杭州羅萊迪思科技股份有限公司成功入選該名單。
    的頭像 發(fā)表于 09-04 15:05 ?728次閱讀
    羅萊迪思入選2024年第<b class='flag-5'>一批</b>浙江省制造業(yè)單項冠軍培育企業(yè)!

    穩(wěn)拌合站監(jiān)測管理系統(tǒng)在水穩(wěn)層施工中的價值應(yīng)用

    穩(wěn)拌合站監(jiān)測管理系統(tǒng)主要應(yīng)用在路面施工水穩(wěn)層水穩(wěn)拌合站,采用無線傳輸模式將拌合機(jī)生產(chǎn)過程中的生產(chǎn)數(shù)據(jù)進(jìn)行采集,將采集數(shù)據(jù)通過采集客戶端發(fā)送至遠(yuǎn)端服務(wù)器進(jìn)行存儲,然后通過
    的頭像 發(fā)表于 08-16 08:23 ?472次閱讀
    水<b class='flag-5'>穩(wěn)</b>拌合站監(jiān)測管理<b class='flag-5'>系統(tǒng)</b>在水<b class='flag-5'>穩(wěn)</b>層施工中的價值應(yīng)用
    主站蜘蛛池模板: 金湖县| 宜宾市| 佛学| 凤山县| 山丹县| 天祝| 米林县| 临清市| 玛曲县| 玉田县| 临江市| 拉孜县| 杭锦旗| 涡阳县| 哈密市| 宜兰县| 抚顺市| 宜春市| 桂阳县| 彰化市| 九寨沟县| 清流县| 泰安市| 昌乐县| 民权县| 汨罗市| 南乐县| 尤溪县| 即墨市| 梅州市| 莫力| 新源县| 报价| 仪征市| 康定县| 宁乡县| 库伦旗| 长沙市| 军事| 满城县| 乐平市|