面試官:Netty心跳檢測機制是什麼,怎麼自定義檢測間隔時間?

曠世奇才927發表於2022-05-31

哈嘍!大家好,我是小奇,一位熱愛分享的程式設計師
小奇打算以輕鬆幽默的對話方式來分享一些技術,如果你覺得通過小奇的文章學到了東西,那就給小奇一個贊吧
文章持續更新

一、前言

書接上回,昨天在地裡幹了一天的活,累壞我了,今天是個週末,我得去鎮上買點好吃的然後宅家歇上一天,打打遊戲,看看電視劇,嘛錢不錢的,樂呵樂呵得了。。。

首當其衝必須買點熟食,回去再喝上二兩小酒,美滋滋。

在這裡插入圖片描述

今天正好碰上鎮上趕集,人真多呀,小奇最喜歡湊熱鬧了,擠一波。

在這裡插入圖片描述

週末宅家水果必須得整點,不然光吃零食上火,砂糖橘必須炫上,多買點跟老闆砍砍價。

在這裡插入圖片描述

我:老闆這砂糖橘怎麼賣啊!

老闆:六塊錢一斤。

我:我要多要點能便宜點不。

老闆:你要多少嘞!

我:三斤!!!

老闆:那你就給20塊錢吧。

我:???我沒聽錯吧,六塊錢一斤,三斤20怎麼還貴了呢。

老闆:哎呀你反應過來了啊,看你蔫了吧唧的以為你轉不過彎呢。

我:靠,我好歹也是經歷過九年義務教育的好吧,三斤15塊錢好吧,給我裝起來。

買完了騎上我的小三輪肥家。

在這裡插入圖片描述

就在我漂移在鄉間小路上的時候,我的手機突然響了。。。

我:“喂您好”。

對面:“您好,請問是小奇嗎”。

我:“是我,你是?”。

對面:“我是XXX公司的,我看到hr推給我你的簡歷,我感覺還不錯,你什麼時候方便來現場面試一下”。

我:“現在不方便現場面試了”。

對面:“好吧,那你現在方便嗎?我們現線上上面試一下吧”。

我:“好的”。

二、面試

面試官:我看你簡歷上寫的精通Netty,那你能說一下Netty怎麼保證能夠長時間連線呢?

我:通過心跳檢測機制來判斷Netty是否正常連線。

面試官:什麼是心跳檢測機制呢?

我:比如醫生怎麼知道你的心臟是否正常運作呢,肯定是心臟在以一定的頻率跳動,醫生通過監聽器監聽到了跳動就知道你的心臟是好的。

所以在Netty中也是一樣的,客戶端和服務端怎麼知道對方是否還在正常執行呢,就是對方定期向自己傳送一條訊息,這樣的話我就知道對方還在正常執行,後續有活要乾的話我就可以直接發給對方讓對方處理。

相反如果服務端長時間沒有給客戶端傳送心跳,那麼客戶端可以認為服務端死亡,後面再有讀寫請求就不會傳送給相應的服務端了。

面試官:如果我想自定義心跳檢測的時間間隔怎麼實現?

我:可以實現IdleStateHandler()方法

public IdleStateHandler(int readerIdleTimeSeconds, int writerIdleTimeSeconds, int allIdleTimeSeconds) {
  this((long)readerIdleTimeSeconds, (long)writerIdleTimeSeconds, (long)allIdleTimeSeconds, TimeUnit.SECONDS);
 }

面試官:這裡的三個引數是什麼意思,間隔的時間單位是多少?

方法裡有三個引數,預設時間都是秒

readerIdleTimeSeconds:讀超時,當在指定的時間間隔內沒有讀取到資料就會超時。

writerIdleTimeSeconds:寫超時,當在指定的時間間隔內沒有寫入成功就會超時。

allIdleTimeSeconds:讀/.寫超時,當在指定的時間間隔內沒有讀或寫操作的時候,就會超時。

面試官:“小夥子不錯呀,什麼時候能回北京入職呢”

我:“額。。。等等吧,現在還有好多家公司等著談薪資呢,我得挑一家合適的。”

面試官:“你要多少我都給你,來我這吧”

我:“額。。。那就月薪100個W吧”。

面試官:“喂,你說什麼我聽不見,訊號不好。。。”

我:“喂喂喂”(嘟嘟嘟嘟嘟嘟嘟嘟。。。)。

三、總結

這裡的相關內容還沒有整理完畢,文章後面持續更新,建議收藏。

文章中涉及到的命令大家一定要像我一樣每個都敲幾遍,只有在敲的過程中才能發現自己對命令是否真正的掌握了。

如果覺得我的文章還不錯的話就點個贊吧

相關文章