日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 架構(gòu)師社區(qū)
[導(dǎo)讀]什么是冪等性??jī)绲仁且粋€(gè)數(shù)學(xué)與計(jì)算機(jī)學(xué)概念,在數(shù)學(xué)中某一元運(yùn)算為冪等時(shí),其作用在任一元素兩次后會(huì)和其作用一次的結(jié)果相同。

什么是冪等性?

冪等是一個(gè)數(shù)學(xué)與計(jì)算機(jī)學(xué)概念,在數(shù)學(xué)中某一元運(yùn)算為冪等時(shí),其作用在任一元素兩次后會(huì)和其作用一次的結(jié)果相同。

在計(jì)算機(jī)中編程中,一個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。

冪等函數(shù)或冪等方法是指可以使用相同參數(shù)重復(fù)執(zhí)行,并能獲得相同結(jié)果的函數(shù)。這些函數(shù)不會(huì)影響系統(tǒng)狀態(tài),也不用擔(dān)心重復(fù)執(zhí)行會(huì)對(duì)系統(tǒng)造成改變。

什么是接口冪等性?

HTTP/1.1中,對(duì)冪等性進(jìn)行了定義。它描述了一次和多次請(qǐng)求某一個(gè)資源對(duì)于資源本身應(yīng)該具有同樣的結(jié)果(網(wǎng)絡(luò)超時(shí)等問(wèn)題除外),即第一次請(qǐng)求的時(shí)候?qū)Y源產(chǎn)生了副作用,但是以后的多次請(qǐng)求都不會(huì)再對(duì)資源產(chǎn)生副作用。

這里的副作用是不會(huì)對(duì)結(jié)果產(chǎn)生破壞或者產(chǎn)生不可預(yù)料的結(jié)果。也就是說(shuō),其任意多次執(zhí)行對(duì)資源本身所產(chǎn)生的影響均與一次執(zhí)行的影響相同。

為什么需要實(shí)現(xiàn)冪等性?

在接口調(diào)用時(shí)一般情況下都能正常返回信息不會(huì)重復(fù)提交,不過(guò)在遇見(jiàn)以下情況時(shí)可以就會(huì)出現(xiàn)問(wèn)題,如:

  1. 前端重復(fù)提交表單:在填寫(xiě)一些表格時(shí)候,用戶填寫(xiě)完成提交,很多時(shí)候會(huì)因網(wǎng)絡(luò)波動(dòng)沒(méi)有及時(shí)對(duì)用戶做出提交成功響應(yīng),致使用戶認(rèn)為沒(méi)有成功提交,然后一直點(diǎn)提交按鈕,這時(shí)就會(huì)發(fā)生重復(fù)提交表單請(qǐng)求。

  2. 用戶惡意進(jìn)行刷單:例如在實(shí)現(xiàn)用戶投票這種功能時(shí),如果用戶針對(duì)一個(gè)用戶進(jìn)行重復(fù)提交投票,這樣會(huì)導(dǎo)致接口接收到用戶重復(fù)提交的投票信息,這樣會(huì)使投票結(jié)果與事實(shí)嚴(yán)重不符。

  3. 接口超時(shí)重復(fù)提交:很多時(shí)候 HTTP 客戶端工具都默認(rèn)開(kāi)啟超時(shí)重試的機(jī)制,尤其是第三方調(diào)用接口時(shí)候,為了防止網(wǎng)絡(luò)波動(dòng)超時(shí)等造成的請(qǐng)求失敗,都會(huì)添加重試機(jī)制,導(dǎo)致一個(gè)請(qǐng)求提交多次。

  4. 消息進(jìn)行重復(fù)消費(fèi):當(dāng)使用 MQ 消息中間件時(shí)候,如果發(fā)生消息中間件出現(xiàn)錯(cuò)誤未及時(shí)提交消費(fèi)信息,導(dǎo)致發(fā)生重復(fù)消費(fèi)。

使用冪等性最大的優(yōu)勢(shì)在于使接口保證任何冪等性操作,免去因重試等造成系統(tǒng)產(chǎn)生的未知的問(wèn)題。

引入冪等性后對(duì)系統(tǒng)有什么影響?

冪等性是為了簡(jiǎn)化客戶端邏輯處理,能放置重復(fù)提交等操作,但卻增加了服務(wù)端的邏輯復(fù)雜性和成本,其主要是:

  1. 把并行執(zhí)行的功能改為串行執(zhí)行,降低了執(zhí)行效率。

  2. 增加了額外控制冪等的業(yè)務(wù)邏輯,復(fù)雜化了業(yè)務(wù)功能;

所以在使用時(shí)候需要考慮是否引入冪等性的必要性,根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景具體分析,除了業(yè)務(wù)上的特殊要求外,一般情況下不需要引入的接口冪等性。

Restful API 接口冪等性如何?

現(xiàn)在流行的 Restful 推薦的幾種 HTTP 接口方法中,分別存在冪等行與不能保證冪等的方法,如下:

  1. 滿足冪等
  2. x?不滿足冪等
  3. -?可能滿足也可能不滿足冪等,根據(jù)實(shí)際業(yè)務(wù)邏輯有關(guān)
一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

方案一:數(shù)據(jù)庫(kù)唯一主鍵實(shí)現(xiàn)冪等性

數(shù)據(jù)庫(kù)唯一主鍵的實(shí)現(xiàn)主要是利用數(shù)據(jù)庫(kù)中主鍵唯一約束的特性,一般來(lái)說(shuō)唯一主鍵比較適用于“插入”時(shí)的冪等性,其能保證一張表中只能存在一條帶該唯一主鍵的記錄。

使用數(shù)據(jù)庫(kù)唯一主鍵完成冪等性時(shí)需要注意的是,該主鍵一般來(lái)說(shuō)并不是使用數(shù)據(jù)庫(kù)中自增主鍵,而是使用分布式 ID 充當(dāng)主鍵,這樣才能能保證在分布式環(huán)境下 ID 的全局唯一性。

適用操作

  • 插入操作
  • 刪除操作

使用限制

  • 需要生成全局唯一主鍵 ID;

主要流程

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

主要流程如下:

  1. 客戶端執(zhí)行創(chuàng)建請(qǐng)求,調(diào)用服務(wù)端接口。

  2. 服務(wù)端執(zhí)行業(yè)務(wù)邏輯,生成一個(gè)分布式?ID,將該 ID 充當(dāng)待插入數(shù)據(jù)的主鍵,然 后執(zhí)數(shù)據(jù)插入操作,運(yùn)行對(duì)應(yīng)的?SQL?語(yǔ)句。

  3. 服務(wù)端將該條數(shù)據(jù)插入數(shù)據(jù)庫(kù)中,如果插入成功則表示沒(méi)有重復(fù)調(diào)用接口。如果拋出主鍵重復(fù)異常,則表示數(shù)據(jù)庫(kù)中已經(jīng)存在該條記錄,返回錯(cuò)誤信息到客戶端。

方案二:數(shù)據(jù)庫(kù)樂(lè)觀鎖實(shí)現(xiàn)冪等性

數(shù)據(jù)庫(kù)樂(lè)觀鎖方案一般只能適用于執(zhí)行更新操作的過(guò)程,我們可以提前在對(duì)應(yīng)的數(shù)據(jù)表中多添加一個(gè)字段,充當(dāng)當(dāng)前數(shù)據(jù)的版本標(biāo)識(shí)。

這樣每次對(duì)該數(shù)據(jù)庫(kù)該表的這條數(shù)據(jù)執(zhí)行更新時(shí),都會(huì)將該版本標(biāo)識(shí)作為一個(gè)條件,值為上次待更新數(shù)據(jù)中的版本標(biāo)識(shí)的值。

適用操作

  • 更新操作

使用限制

  • 需要數(shù)據(jù)庫(kù)對(duì)應(yīng)業(yè)務(wù)表中添加額外字段

描述示例

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

例如,存在如下的數(shù)據(jù)表中:

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

為了每次執(zhí)行更新時(shí)防止重復(fù)更新,確定更新的一定是要更新的內(nèi)容,我們通常都會(huì)添加一個(gè)?version?字段記錄當(dāng)前的記錄版本,這樣在更新時(shí)候?qū)⒃撝祹?,那么只要?zhí)行更新操作就能確定一定更新的是某個(gè)對(duì)應(yīng)版本下的信息。

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

這樣每次執(zhí)行更新時(shí)候,都要指定要更新的版本號(hào),如下操作就能準(zhǔn)確更新?version=5?的信息:

UPDATE?my_table?SET?price=price+50,version=version+1?WHERE?id=1?AND?version=5

上面?WHERE?后面跟著條件?id=1 AND version=5?被執(zhí)行后,id=1?的?version?被更新為?6,所以如果重復(fù)執(zhí)行該條 SQL 語(yǔ)句將不生效,因?yàn)?id=1 AND version=5?的數(shù)據(jù)已經(jīng)不存在,這樣就能保住更新的冪等,多次更新對(duì)結(jié)果不會(huì)產(chǎn)生影響。

方案三:防重 Token 令牌實(shí)現(xiàn)冪等性

針對(duì)客戶端連續(xù)點(diǎn)擊或者調(diào)用方的超時(shí)重試等情況,例如提交訂單,此種操作就可以用?Token?的機(jī)制實(shí)現(xiàn)防止重復(fù)提交。

簡(jiǎn)單的說(shuō)就是調(diào)用方在調(diào)用接口的時(shí)候先向后端請(qǐng)求一個(gè)全局?ID(Token),請(qǐng)求的時(shí)候攜帶這個(gè)全局?ID?一起請(qǐng)求(Token?最好將其放到?Headers?中),后端需要對(duì)這個(gè)?Token?作為?Key,用戶信息作為?Value?到?Redis?中進(jìn)行鍵值內(nèi)容校驗(yàn),如果?Key?存在且?Value?匹配就執(zhí)行刪除命令,然后正常執(zhí)行后面的業(yè)務(wù)邏輯。如果不存在對(duì)應(yīng)的?Key?或?Value?不匹配就返回重復(fù)執(zhí)行的錯(cuò)誤信息,這樣來(lái)保證冪等操作。

適用操作

  • 插入操作
  • 更新操作
  • 刪除操作

使用限制

  • 需要生成全局唯一? Token?串
  • 需要使用第三方組件? Redis?進(jìn)行數(shù)據(jù)效驗(yàn)

主要流程:

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~
  1. 服務(wù)端提供獲取 Token 的接口,該 Token 可以是一個(gè)序列號(hào),也可以是一個(gè)分布式?ID?或者?UUID?串。

  2. 客戶端調(diào)用接口獲取 Token,這時(shí)候服務(wù)端會(huì)生成一個(gè) Token 串。

  3. 然后將該串存入 Redis 數(shù)據(jù)庫(kù)中,以該 Token 作為 Redis 的鍵(注意設(shè)置過(guò)期時(shí)間)。

  4. 將 Token 返回到客戶端,客戶端拿到后應(yīng)存到表單隱藏域中。

  5. 客戶端在執(zhí)行提交表單時(shí),把 Token 存入到?Headers?中,執(zhí)行業(yè)務(wù)請(qǐng)求帶上該?Headers

  6. 服務(wù)端接收到請(qǐng)求后從?Headers?中拿到 Token,然后根據(jù) Token 到 Redis 中查找該?key?是否存在。

  7. 服務(wù)端根據(jù) Redis 中是否存該?key?進(jìn)行判斷,如果存在就將該?key?刪除,然后正常執(zhí)行業(yè)務(wù)邏輯。如果不存在就拋異常,返回重復(fù)提交的錯(cuò)誤信息。

注意,在并發(fā)情況下,執(zhí)行 Redis 查找數(shù)據(jù)與刪除需要保證原子性,否則很可能在并發(fā)下無(wú)法保證冪等性。其實(shí)現(xiàn)方法可以使用分布式鎖或者使用?Lua?表達(dá)式來(lái)注銷(xiāo)查詢與刪除操作。

方案四: 下游傳遞唯一序列號(hào)實(shí)現(xiàn)冪等性

所謂請(qǐng)求序列號(hào),其實(shí)就是每次向服務(wù)端請(qǐng)求時(shí)候附帶一個(gè)短時(shí)間內(nèi)唯一不重復(fù)的序列號(hào),該序列號(hào)可以是一個(gè)有序?ID,也可以是一個(gè)訂單號(hào),一般由下游生成,在調(diào)用上游服務(wù)端接口時(shí)附加該序列號(hào)和用于認(rèn)證的?ID。

當(dāng)上游服務(wù)器收到請(qǐng)求信息后拿取該?序列號(hào)?和下游?認(rèn)證ID?進(jìn)行組合,形成用于操作 Redis 的?Key,然后到 Redis 中查詢是否存在對(duì)應(yīng)的?Key?的鍵值對(duì),根據(jù)其結(jié)果:

  1. 如果存在,就說(shuō)明已經(jīng)對(duì)該下游的該序列號(hào)的請(qǐng)求進(jìn)行了業(yè)務(wù)處理,這時(shí)可以直接響應(yīng)重復(fù)請(qǐng)求的錯(cuò)誤信息。

  2. 如果不存在,就以該?Key?作為 Redis 的鍵,以下游關(guān)鍵信息作為存儲(chǔ)的值(例如下游商傳遞的一些業(yè)務(wù)邏輯信息),將該鍵值對(duì)存儲(chǔ)到 Redis 中 ,然后再正常執(zhí)行對(duì)應(yīng)的業(yè)務(wù)邏輯即可。

適用操作

  • 插入操作
  • 更新操作
  • 刪除操作

使用限制

  • 要求第三方傳遞唯一序列號(hào);
  • 需要使用第三方組件 Redis 進(jìn)行數(shù)據(jù)效驗(yàn);

主要流程

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~
  1. 下游服務(wù)生成分布式?ID?作為序列號(hào),然后執(zhí)行請(qǐng)求調(diào)用上游接口,并附帶唯一序列號(hào)與請(qǐng)求的認(rèn)證憑據(jù)ID。

  2. 上游服務(wù)進(jìn)行安全效驗(yàn),檢測(cè)下游傳遞的參數(shù)中是否存在序列號(hào)憑據(jù)ID。

  3. 上游服務(wù)到 Redis 中檢測(cè)是否存在對(duì)應(yīng)的序列號(hào)認(rèn)證ID組成的?Key,如果存在就拋出重復(fù)執(zhí)行的異常信息,然后響應(yīng)下游對(duì)應(yīng)的錯(cuò)誤信息。如果不存在就以該序列號(hào)認(rèn)證ID組合作為?Key,以下游關(guān)鍵信息作為?Value,進(jìn)而存儲(chǔ)到 Redis 中,然后正常執(zhí)行接來(lái)來(lái)的業(yè)務(wù)邏輯。

上面步驟中插入數(shù)據(jù)到 Redis 一定要設(shè)置過(guò)期時(shí)間。這樣能保證在這個(gè)時(shí)間范圍內(nèi),如果重復(fù)調(diào)用接口,則能夠進(jìn)行判斷識(shí)別。如果不設(shè)置過(guò)期時(shí)間,很可能導(dǎo)致數(shù)據(jù)無(wú)限量的存入 Redis,致使 Redis 不能正常工作。

實(shí)現(xiàn)接口冪等示例

這里使用防重 Token 令牌方案,該方案能保證在不同請(qǐng)求動(dòng)作下的冪等性,實(shí)現(xiàn)邏輯可以看上面寫(xiě)的”防重 Token 令牌”方案,接下來(lái)寫(xiě)下實(shí)現(xiàn)這個(gè)邏輯的代碼。

1. Maven 引入相關(guān)依賴

這里使用?Maven?工具管理依賴,這里在?pom.xml中引入?SpringBoot、Redislombok?相關(guān)依賴。

<dependencies>
????????
????????<dependency>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-starter-webartifactId>
????????dependency>
????????
????????<dependency>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-starter-data-redisartifactId>
????????dependency>
????????<dependency>
????????????<groupId>org.apache.commonsgroupId>
????????????<artifactId>commons-pool2artifactId>
????????dependency>
????????
????????<dependency>
????????????<groupId>org.projectlombokgroupId>
????????????<artifactId>lombokartifactId>
????????dependency>
????dependencies>

2. 配置連接 Redis 的參數(shù)

在?application?配置文件中配置連接?Redis?的參數(shù),如下:

spring:
??redis:
????ssl:?false
????host:?127.0.0.1
????port:?6379
????database:?0
????timeout:?1000
????password:
????lettuce:
??????pool:
????????max-active:?100
????????max-wait:?-1
????????min-idle:?0
????????max-idle:?20

3. 創(chuàng)建與驗(yàn)證 Token 工具類

創(chuàng)建用于操作 Token 相關(guān)的 Service 類,里面存在 Token 創(chuàng)建與驗(yàn)證方法,其中:

  1. Token?創(chuàng)建方法:使用?UUID?工具創(chuàng)建?Token?串,設(shè)置以?“idempotent_token:“+“Token串”?作為?Key,以用戶信息當(dāng)成?Value,將信息存入 Redis 中。

  2. Token?驗(yàn)證方法:接收 Token 串參數(shù),加上 Key 前綴形成?Key,再傳入?value?值,執(zhí)行?Lua?表達(dá)式(Lua?表達(dá)式能保證命令執(zhí)行的原子性)進(jìn)行查找對(duì)應(yīng)?Key?與刪除操作。執(zhí)行完成后驗(yàn)證命令的返回結(jié)果,如果結(jié)果不為空且非0,則驗(yàn)證成功,否則失敗。

@Slf4j
@Service
public?class?TokenUtilService?{

????@Autowired
????private?StringRedisTemplate?redisTemplate;

????/**
?????*?存入?Redis?的?Token?鍵的前綴
?????*/

????private?static?final?String?IDEMPOTENT_TOKEN_PREFIX?=?"idempotent_token:";

????/**
?????*?創(chuàng)建?Token?存入?Redis,并返回該?Token
?????*
?????*?@param?value?用于輔助驗(yàn)證的?value?值
?????*?@return?生成的?Token?串
?????*/

????public?String?generateToken(String?value)?{
????????//?實(shí)例化生成?ID?工具對(duì)象
????????String?token?=?UUID.randomUUID().toString();
????????//?設(shè)置存入?Redis?的?Key
????????String?key?=?IDEMPOTENT_TOKEN_PREFIX?+?token;
????????//?存儲(chǔ)?Token?到?Redis,且設(shè)置過(guò)期時(shí)間為5分鐘
????????redisTemplate.opsForValue().set(key,?value,?5,?TimeUnit.MINUTES);
????????//?返回?Token
????????return?token;
????}

????/**
?????*?驗(yàn)證?Token?正確性
?????*
?????*?@param?token?token?字符串
?????*?@param?value?value?存儲(chǔ)在Redis中的輔助驗(yàn)證信息
?????*?@return?驗(yàn)證結(jié)果
?????*/

????public?boolean?validToken(String?token,?String?value)?{
????????//?設(shè)置?Lua?腳本,其中?KEYS[1]?是?key,KEYS[2]?是?value
????????String?script?=?"if?redis.call('get',?KEYS[1])?==?KEYS[2]?then?return?redis.call('del',?KEYS[1])?else?return?0?end";
????????RedisScript?redisScript?=?new?DefaultRedisScript<>(script,?Long.class);
????????//?根據(jù)?Key?前綴拼接?Key
????????String?key?=?IDEMPOTENT_TOKEN_PREFIX?+?token;
????????//?執(zhí)行?Lua?腳本
????????Long?result?=?redisTemplate.execute(redisScript,?Arrays.asList(key,?value));
????????//?根據(jù)返回結(jié)果判斷是否成功成功匹配并刪除?Redis?鍵值對(duì),若果結(jié)果不為空和0,則驗(yàn)證通過(guò)
????????if?(result?!=?null?&&?result?!=?0L)?{
????????????log.info("驗(yàn)證?token={},key={},value={}?成功",?token,?key,?value);
????????????return?true;
????????}
????????log.info("驗(yàn)證?token={},key={},value={}?失敗",?token,?key,?value);
????????return?false;
????}

}

4、創(chuàng)建測(cè)試的 Controller 類

創(chuàng)建用于測(cè)試的?Controller?類,里面有獲取?Token?與測(cè)試接口冪等性的接口,內(nèi)容如下:

@Slf4j
@RestController
public?class?TokenController?{

????@Autowired
????private?TokenUtilService?tokenService;

????/**
?????*?獲取?Token?接口
?????*
?????*?@return?Token?串
?????*/

????@GetMapping("/token")
????public?String?getToken()?{
????????//?獲取用戶信息(這里使用模擬數(shù)據(jù))
????????//?注:這里存儲(chǔ)該內(nèi)容只是舉例,其作用為輔助驗(yàn)證,使其驗(yàn)證邏輯更安全,如這里存儲(chǔ)用戶信息,其目的為:
????????//?-?1)、使用"token"驗(yàn)證?Redis?中是否存在對(duì)應(yīng)的?Key
????????//?- 2)、使用"用戶信息"驗(yàn)證 Redis 的 Value 是否匹配。
????????String?userInfo?=?"mydlq";
????????//?獲取?Token?字符串,并返回
????????return?tokenService.generateToken(userInfo);
????}

????/**
?????*?接口冪等性測(cè)試接口
?????*
?????*?@param?token?冪等?Token?串
?????*?@return?執(zhí)行結(jié)果
?????*/

????@PostMapping("/test")
????public?String?test(@RequestHeader(value?=?"token")?String?token)?{
????????//?獲取用戶信息(這里使用模擬數(shù)據(jù))
????????String?userInfo?=?"mydlq";
????????//?根據(jù)?Token?和與用戶相關(guān)的信息到?Redis?驗(yàn)證是否存在對(duì)應(yīng)的信息
????????boolean?result?=?tokenService.validToken(token,?userInfo);
????????//?根據(jù)驗(yàn)證結(jié)果響應(yīng)不同信息
????????return?result???"正常調(diào)用"?:?"重復(fù)調(diào)用";
????}

}

最后總結(jié)

冪等性是開(kāi)發(fā)當(dāng)中很常見(jiàn)也很重要的一個(gè)需求,尤其是支付、訂單等與金錢(qián)掛鉤的服務(wù),保證接口冪等性尤其重要。在實(shí)際開(kāi)發(fā)中,我們需要針對(duì)不同的業(yè)務(wù)場(chǎng)景我們需要靈活的選擇冪等性的實(shí)現(xiàn)方式:

  1. 對(duì)于下單等存在唯一主鍵的,可以使用“唯一主鍵方案”的方式實(shí)現(xiàn)。

  2. 對(duì)于更新訂單狀態(tài)等相關(guān)的更新場(chǎng)景操作,使用“樂(lè)觀鎖方案”實(shí)現(xiàn)更為簡(jiǎn)單。

  3. 對(duì)于上下游這種,下游請(qǐng)求上游,上游服務(wù)可以使用“下游傳遞唯一序列號(hào)方案”更為合理。

  4. 類似于前端重復(fù)提交重復(fù)下單、沒(méi)有唯一ID號(hào)的場(chǎng)景,可以通過(guò)?Token?與?Redis?配合的“防重 Token 方案”實(shí)現(xiàn)更為快捷。

上面只是給與一些建議,再次強(qiáng)調(diào)一下,實(shí)現(xiàn)冪等性需要先理解自身業(yè)務(wù)需求,根據(jù)業(yè)務(wù)邏輯來(lái)實(shí)現(xiàn)這樣才合理,處理好其中的每一個(gè)結(jié)點(diǎn)細(xì)節(jié),完善整體的業(yè)務(wù)流程設(shè)計(jì),才能更好的保證系統(tǒng)的正常運(yùn)行。最后做一個(gè)簡(jiǎn)單總結(jié),然后本博文到此結(jié)束,如下:

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

—————END—————

特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒(méi)關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

長(zhǎng)按訂閱更多精彩▼

一口氣說(shuō)出4種冪等性解決方案,面試官露出了姨母笑~

如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉