日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

不可變模式篇:非常抓狂,這特么到底是哪里不對?

來源: 責編: 時間:2023-09-25 10:37:54 367觀看
導讀本章難度:★★☆☆☆本章重點:以場景故事的形式講述小菜到公司幾天后,接到第一個統(tǒng)計調用商品詳情接口次數(shù)的任務,在梳理了業(yè)務流程后,快速實現(xiàn)了功能,但測試結果與預期差距很大,排查和調試了一天也沒定位到問題的過程。大家
  • 本章難度:★★☆☆☆
  • 本章重點:以場景故事的形式講述小菜到公司幾天后,接到第一個統(tǒng)計調用商品詳情接口次數(shù)的任務,在梳理了業(yè)務流程后,快速實現(xiàn)了功能,但測試結果與預期差距很大,排查和調試了一天也沒定位到問題的過程。

大家好,我是冰河~~ZpE28資訊網——每日最新資訊28at.com

“這特么到底是哪里出了問題,我感覺沒啥問題啊,為什么我統(tǒng)計出來的數(shù)據(jù)就是和運維統(tǒng)計出來的數(shù)據(jù)對不上呢?為啥運維統(tǒng)計出來的結果是正確的呢?我覺得自己的代碼沒毛病???”——此時的小菜已經糾結好久了,幾乎到精神崩潰的邊緣。ZpE28資訊網——每日最新資訊28at.com

一、需求背景

事情是這樣的,小菜是一名剛從學校畢業(yè)的大學生,幾乎沒啥工作經驗,憑借著在學校的傳奇經歷,順利進入了某頭部互聯(lián)網大廠實習,剛來沒幾天,就被分到了一個統(tǒng)計線上調用商品詳情接口次數(shù)的任務。說起來不就是統(tǒng)計一個接口的訪問次數(shù)嗎?這個需求小菜很懂,也很明白,沒一會兒就搞定了,可是發(fā)布到測試環(huán)境測試時,卻發(fā)生了各種詭異的問題。ZpE28資訊網——每日最新資訊28at.com

二、接手任務

時間過的真快,小菜不只不覺來公司實習快一周了,這幾天基本都是學習公司技術資料和項目業(yè)務,平時自己寫寫demo,還沒有真正寫項目功能。ZpE28資訊網——每日最新資訊28at.com

這不,這天小菜剛到公司,把自己厚重的電腦包往辦公位一放,就看到產品經理屁顛屁顛的走過來了,不過不是找小菜的,而是徑直走到了小菜的直屬領導——老王的身邊。ZpE28資訊網——每日最新資訊28at.com

“王工,咱的社區(qū)電商項目不是剛上線嗎?現(xiàn)在運營有個需求,要統(tǒng)計下訪問調用商品詳情接口的次數(shù)?!?span style="display:none">ZpE28資訊網——每日最新資訊28at.com

“好,什么時候需要。”ZpE28資訊網——每日最新資訊28at.com

“下周發(fā)布上線就行?!?span style="display:none">ZpE28資訊網——每日最新資訊28at.com

“好的。”ZpE28資訊網——每日最新資訊28at.com

老王把調用商品詳情的接口梳理了下,這個需求確實比較簡單。老王考慮到小菜來公司好幾天了,學習了幾天公司的技術資料和項目業(yè)務。心里就想著把這個簡單的需求,交給小菜做。ZpE28資訊網——每日最新資訊28at.com

“小菜,你過來下,給你個簡單的任務”,老王說道。ZpE28資訊網——每日最新資訊28at.com

于是小菜起身來到老王的身邊,老王開始巴拉巴拉的為小菜講解任務需求和對應的接口情況。ZpE28資訊網——每日最新資訊28at.com

雖說小菜沒啥工作經驗吧,但是這個需求聽起來確實比較簡單,小菜聽完老王的講解后,說道:“沒問題,我盡快完成”。ZpE28資訊網——每日最新資訊28at.com

于是小菜回到工位,開始認真分析代碼,并在本子上畫實現(xiàn)的流程。ZpE28資訊網——每日最新資訊28at.com

三、梳理任務

雖說小菜沒啥工作經驗吧,但是他確實是懂得在搞清楚任務需求和實現(xiàn)流程之前,不會輕易干代碼的。這也是他剛來公司的時候,老王跟他說的,說起老王,特么確實是個大好人,新人剛來公司的第一天,就會將自己的一些踩坑經驗巴拉巴拉的分享給這些新人(我剛參加工作那會兒怎么就遇不見像老王這樣的大好人呢?)。ZpE28資訊網——每日最新資訊28at.com

經過認真的思考和仔細的梳理商品詳情接口后,小菜畫出了下面的這幅圖。ZpE28資訊網——每日最新資訊28at.com

圖片圖片ZpE28資訊網——每日最新資訊28at.com

客戶端在訪問系統(tǒng)接口時,首先會經過網關,由網關將訪問系統(tǒng)的流量路由到后端微服務。在網關的設計和實現(xiàn)上,總體上會分為網關核心組件和網關控制臺,網關的一些規(guī)則,比如接口統(tǒng)計、UV統(tǒng)計、PV統(tǒng)計,鑒權規(guī)則,其他規(guī)則等等,都是在網關控制臺進行配置,并且在網關控制臺的配置會及時生效。ZpE28資訊網——每日最新資訊28at.com

網關采用責任鏈設計模式實現(xiàn)了一系列的攔截器鏈,比如風控攔截器、接口攔截器、鑒權攔截器、其他攔截器等,每個攔截器專注實現(xiàn)某種特定邏輯的校驗規(guī)則,例如風控攔截器會調用風控系統(tǒng)檢測請求是否存在風險,接口攔截器主要是統(tǒng)計接口層面的一些請求信息,鑒權攔截器主要是檢測與鑒權相關的邏輯等等。到達網關的請求只有通過所有攔截器的校驗后,才會被路由到后端服務。ZpE28資訊網——每日最新資訊28at.com

梳理完請求的流程和網關的攔截器邏輯后,小菜拿著本子走到了老王的面前。ZpE28資訊網——每日最新資訊28at.com

“老大,業(yè)務流程我梳理清楚了,你看看對嗎?”ZpE28資訊網——每日最新資訊28at.com

“好,我看看”。ZpE28資訊網——每日最新資訊28at.com

大神就是大神,只見老王接過小菜的本子后,只是看了一眼,說道:“可以這樣實現(xiàn),沒問題,實現(xiàn)的過程中遇到自己解決不了的問題,可以再問我?!?span style="display:none">ZpE28資訊網——每日最新資訊28at.com

“好的”。ZpE28資訊網——每日最新資訊28at.com

小菜回到了工位上。ZpE28資訊網——每日最新資訊28at.com

四、實現(xiàn)任務

要不說這個任務很簡單呢?小菜梳理清楚業(yè)務流程,向老王確認可以這樣實現(xiàn)后,回到工位,啪啦啪啦就翹起了鍵盤,沒一會就完成了代碼開發(fā)。ZpE28資訊網——每日最新資訊28at.com

“這個功能確實是簡單啊,我也只是花了沒多少時間就完成了,看來公司的項目其實也挺簡單的,哈哈哈”——小菜心里暗暗自喜。于是乎,小菜并沒有在自己本地對寫完的代碼進行單元測試,他覺得這個功能太簡單了,沒必要測試。所以,小菜將代碼合并到了測試分支,由 CI/CD 平臺自動構建并發(fā)布到了測試環(huán)境。ZpE28資訊網——每日最新資訊28at.com

此時的小菜向測試提交了一份文檔,詳細的描述了自己這次實現(xiàn)的業(yè)務功能,交付測試。不一會兒,測試便將測試結果反饋給了小菜。ZpE28資訊網——每日最新資訊28at.com

小菜拿到結果一看,瞬間懵逼了:“臥槽,不是吧,期望值10000,實際值7596?差距這么大嗎?不可能吧?這功能很簡單??!就是計數(shù)?。∈遣皇菧y試搞錯了?(應該大部分程序員首先會覺得是別人的問題吧,哈哈哈哈)”。ZpE28資訊網——每日最新資訊28at.com

于是乎,小菜重新打開開發(fā)環(huán)境,一遍遍排查自己寫的代碼,也在自己本地一遍遍調試著自己的代碼。ZpE28資訊網——每日最新資訊28at.com

過了很久,小菜得出一個結論:沒毛病啊,結果是對的??!于是小菜去問測試:”你是怎么測試的呢?“。ZpE28資訊網——每日最新資訊28at.com

“我就是按照正常流程測試的啊,你寫的代碼肯定有問題”。ZpE28資訊網——每日最新資訊28at.com

“沒問題啊,我自己調試半天了,結果是對的”。ZpE28資訊網——每日最新資訊28at.com

于是,測試給小菜發(fā)了一份運維從測試服務器上統(tǒng)計的結果數(shù)據(jù),敲好與測試的結果一致。ZpE28資訊網——每日最新資訊28at.com

小菜看到數(shù)據(jù)后,說了句:“好吧,我再看看吧”。ZpE28資訊網——每日最新資訊28at.com

小菜回到工位,又開始了排查代碼和調試代碼,ZpE28資訊網——每日最新資訊28at.com

就這樣,小菜從上午一直排查、調試到快下班了,得出的結論是:沒毛病啊,哪里除了問題呢?ZpE28資訊網——每日最新資訊28at.com

此時的小菜已經失去了剛做完這個功能時的自豪感,心情也越來越煩躁?!暗降啄睦镉袉栴}?。课铱创a沒毛病??!怎么就不對呢?”ZpE28資訊網——每日最新資訊28at.com

五、求助老王

實在是沒招了,小菜起身走到老王身邊:“老大,上午寫的那個功能,發(fā)布到測試環(huán)境,測試說我統(tǒng)計的結果數(shù)據(jù)不對,運維那邊從服務器上統(tǒng)計的結果是正確的,我排查了很久都沒發(fā)現(xiàn)問題?!?span style="display:none">ZpE28資訊網——每日最新資訊28at.com

“是嗎?我看看你寫的代碼。”ZpE28資訊網——每日最新資訊28at.com

于是老王將測試分支的代碼拉取到本地,找到小菜的提交記錄,僅僅看了一眼代碼,就發(fā)現(xiàn)了問題所在。ZpE28資訊網——每日最新資訊28at.com

原來在小菜寫的代碼里定義了一個接口訪問計數(shù)器。ZpE28資訊網——每日最新資訊28at.com

源碼詳見:concurrent-design-patterns-immutable工程下的io.binghe.concurrent.design.wrong.WrongCounter。ZpE28資訊網——每日最新資訊28at.com

public class WrongCounter {    private int visitCount;    public void accessVisit(){        visitCount++;    }    public int getVisitCount() {        return visitCount;    }}

這個類中定義了一個int類型的成員變量visitCount,用來統(tǒng)計接口的訪問次數(shù),每次訪問接口時,在網關的接口攔截器里都會調用一次accessVisit()方法,將visitCount的值加1,這樣不斷累計接口的訪問次數(shù)。表面上看起來邏輯是沒毛病的。ZpE28資訊網——每日最新資訊28at.com

老王對小菜說:“這個類實現(xiàn)的有問題,這樣實現(xiàn)根本就不能統(tǒng)計出正確的結果”。ZpE28資訊網——每日最新資訊28at.com

“不對呀,我排查和調試半天了,沒問題呀,結果跟我自己預想的一樣呀”,小菜確實不知道哪里有問題,也并沒有發(fā)現(xiàn)這個類的不妥之處。ZpE28資訊網——每日最新資訊28at.com

正好此時到了下班的點,老王今天還要早點回去接孩子放學,于是就對小菜說:“這樣吧,你先回去想想,查查資料看看哪里有問題,我今天要早點回去接孩子放學,明天到公司了,我給你講講哪里有問題”。ZpE28資訊網——每日最新資訊28at.com

“好的”,小菜回答到。ZpE28資訊網——每日最新資訊28at.com

就這樣,看起來一個很簡單的問題,小菜前前后后花了一天的時間,也沒搞定,心里確實有點郁悶:“明明是很簡單的功能啊,這特么到底是哪里不對呢?”。ZpE28資訊網——每日最新資訊28at.com

他又回到了座位上。。。ZpE28資訊網——每日最新資訊28at.com

六、本章總結

本章,主要以場景故事線的方式講述了小菜來公司幾天后,接到第一個統(tǒng)計訪問商品詳情接口的項目任務,本以為很簡單的功能,三下五除二做完,提交測試環(huán)境后,被測試打回,反復排查和調試代碼,也沒發(fā)現(xiàn)問題的過程。此時的小菜心里有點郁悶,明明很簡單的功能,這特么到底是哪里不對?ZpE28資訊網——每日最新資訊28at.com

好在明天到公司了,老王會給小菜講清楚到底是哪里的問題(再次感嘆:老王是真特么的好?。。?span style="display:none">ZpE28資訊網——每日最新資訊28at.com

最后,可以在評論區(qū)寫下你學完本章節(jié)的收獲,祝大家都能學有所成,我們一起搞定高并發(fā)設計模式。ZpE28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-11245-0.html不可變模式篇:非常抓狂,這特么到底是哪里不對?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 理解Kafka offset

下一篇: Go 語言史詩級更新-循環(huán)Bug修復

標簽:
  • 熱門焦點
  • 一加Ace2 Pro官宣:普及16G內存 引領24G

    一加官方今天繼續(xù)為本月發(fā)布的新機一加Ace2 Pro帶來預熱,公布了內存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待?!蓖瑫r
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據(jù)今天鴻蒙OS 4.0的現(xiàn)場演示顯示,華為的實況窗可以更高效的展現(xiàn)出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發(fā)布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產生的排名變動,剛剛開始的蘋果WWDC2023,推出的產品也依舊是新款Mac Pro、新款Mac Stu
  • 0糖0卡0脂 旭日森林仙草烏龍茶優(yōu)惠:15瓶到手29元

    旭日森林無糖仙草烏龍茶510ml*15瓶平時要賣為79.9元,今日下單領取50元優(yōu)惠券,到手價為29.9元。產品規(guī)格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • Java NIO內存映射文件:提高文件讀寫效率的優(yōu)秀實踐!

    Java的NIO庫提供了內存映射文件的支持,它可以將文件映射到內存中,從而可以更快地讀取和寫入文件數(shù)據(jù)。本文將對Java內存映射文件進行詳細的介紹和演示。內存映射文件概述內存
  • 如何通過Python線程池實現(xiàn)異步編程?

    線程池的概念和基本原理線程池是一種并發(fā)處理機制,它可以在程序啟動時創(chuàng)建一組線程,并將它們置于等待任務的狀態(tài)。當任務到達時,線程池中的某個線程會被喚醒并執(zhí)行任務,執(zhí)行完任
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續(xù)發(fā)布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 聯(lián)想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯(lián)想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據(jù)有人爆料,聯(lián)想的下一款 ThinkBook Plus 可能更特殊,它
  • 微軟發(fā)布Windows 11新版 引入全新任務欄狀態(tài)

    近日,微軟發(fā)布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統(tǒng)更流暢了。更新中,Windows 11加入了專門針對平板優(yōu)化的任務欄
Top 主站蜘蛛池模板: 玉树县| 明溪县| 云浮市| 日土县| 宜兰市| 锦屏县| 来凤县| 石嘴山市| 罗平县| 西乌珠穆沁旗| 明星| 德令哈市| 濉溪县| 白水县| 金溪县| 库尔勒市| 随州市| 安多县| 扎鲁特旗| 西华县| 蓝田县| 东城区| 繁峙县| 新安县| 荆门市| 鄄城县| 奉节县| 宜城市| 项城市| 崇义县| 庆安县| 梁山县| 高雄市| 小金县| 祁阳县| 民乐县| 枝江市| 剑阁县| 庆城县| 肃南| 锡林郭勒盟|