<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Redis創(chuàng)始人開(kāi)源最小聊天服務(wù)器,僅200行代碼

          共 1820字,需瀏覽 4分鐘

           ·

          2023-11-08 14:38

          大家好,我是TJ

          一個(gè)勵(lì)志推薦10000款開(kāi)源項(xiàng)目與工具的程序員

          大家好,我是TJ君,一個(gè)專(zhuān)注推薦開(kāi)源、免費(fèi)、好用工具的程序員!

          中午時(shí)候,在技術(shù)交流群里聊起關(guān)于Redis創(chuàng)始人的一些趣事,比如離開(kāi)Redis之后,去寫(xiě)科幻小說(shuō)之類(lèi)的。

          因?yàn)楹闷婵苹眯≌f(shuō),TJ君就去搜索了一下。結(jié)果一搜,發(fā)現(xiàn)Redis作者最近居然又搞了個(gè)新活兒!

          世界上最小的聊天服務(wù)器

          這次Redis作者的新開(kāi)源項(xiàng)目名叫:SmallChat

          從關(guān)于內(nèi)容中可以知道,這個(gè)開(kāi)源項(xiàng)目是要打造最小的聊天服務(wù)器。再?gòu)拈_(kāi)源項(xiàng)目的內(nèi)容中來(lái)看,確實(shí)如此,就下面這些:

          代碼部分除去大量注釋之后,更是驚人的只有200+行代碼,可以說(shuō)真的是做到了極致的精簡(jiǎn)。

          起源與未來(lái)

          在該項(xiàng)目的README中,目前還沒(méi)有更多關(guān)于該項(xiàng)目的使用說(shuō)明,更多的是關(guān)于該項(xiàng)目的背景和未來(lái)展望。

          內(nèi)容也是非常值得大家細(xì)品,TJ君從中感受到一名優(yōu)秀開(kāi)發(fā)者的思維模式,是非常值得大家去學(xué)習(xí)的。我們也可以去多學(xué)習(xí)這種思維方式,來(lái)多創(chuàng)造一些更有意思的東西。

          下面一起來(lái)看看他的故事:

          昨天和幾個(gè)朋友聊天,大部分都是前端開(kāi)發(fā)人員,離系統(tǒng)編程有點(diǎn)遠(yuǎn)。我們正在回憶 IRC 的舊時(shí)光。我說(shuō)道:編寫(xiě)一個(gè)非常簡(jiǎn)單的 IRC 服務(wù)器是每個(gè)人都應(yīng)該做的經(jīng)歷(我向他們展示了我用 TCL 編寫(xiě)的實(shí)現(xiàn);我很震驚我在 18 年前寫(xiě)了它:時(shí)間過(guò)得很快)。這樣的程序中有一些非常有趣的部分。單個(gè)進(jìn)程執(zhí)行多路復(fù)用、獲取客戶(hù)端狀態(tài)并在客戶(hù)端擁有新數(shù)據(jù)后嘗試快速訪問(wèn)此類(lèi)狀態(tài),等等。

          但后來(lái)討論發(fā)生了變化,我想,我將向您展示一個(gè)用 C 編寫(xiě)的非常簡(jiǎn)單的示例。您可以編寫(xiě)的最小的聊天服務(wù)器是什么?為了真正做到最小化,我們不應(yīng)該需要任何合適的客戶(hù)。即使不是很好,它也應(yīng)該與 telnet 或者 netcat 一起使用。服務(wù)器的主要操作只是接收一些聊天行并將其發(fā)送到所有其他客戶(hù)端,有時(shí)稱(chēng)為扇出操作。然而,這需要適當(dāng)?shù)墓δ埽缓笫蔷彌_等等。我們希望它更簡(jiǎn)單:讓我們使用內(nèi)核緩沖區(qū)進(jìn)行欺騙,并假裝我們每次都從客戶(hù)端收到完整的行(這個(gè)假設(shè)在實(shí)踐中通常是正確的,所以事情還算有效)。

          好吧,通過(guò)這些技巧,我們可以實(shí)現(xiàn)一個(gè)聊天,甚至能夠讓用戶(hù)在短短 200 行代碼中設(shè)置他們的昵稱(chēng)(當(dāng)然,刪除空格和注釋?zhuān)R驗(yàn)槲覍?xiě)了這個(gè)小程序作為給我的朋友們的例子,所以我決定也將它推送到 GitHub 上。

          關(guān)于未來(lái)的工作:

          在接下來(lái)的幾天里,我將繼續(xù)修改這個(gè)程序,以使其進(jìn)化。不同的演變步驟將根據(jù)我的寫(xiě)作系統(tǒng)軟件系列的 YouTube 劇集(涵蓋此類(lèi)變化)進(jìn)行標(biāo)記。這是我的計(jì)劃(可能會(huì)改變,但或多或少這就是我想要涵蓋的內(nèi)容):

          • 實(shí)現(xiàn)讀和寫(xiě)的緩沖
          • 避免使用線(xiàn)性數(shù)組,使用字典數(shù)據(jù)結(jié)構(gòu)來(lái)保存客戶(hù)端狀態(tài)
          • 編寫(xiě)適當(dāng)?shù)目蛻?hù)端:能夠處理異步事件的行編輯
          • 從 select(2) 切換到更高級(jí)的 API
          • 用于聊天的簡(jiǎn)單對(duì)稱(chēng)加密

          怎么樣?一個(gè)有趣的開(kāi)源項(xiàng)目就這樣誕生了。好了,今天的分享就到這里。最后,老規(guī)矩,奉上開(kāi)源地址,感興趣的可以去圍觀代碼。

          • https://github.com/antirez/smallchat

          歡迎關(guān)注公眾號(hào):TJ君,訂閱每日推薦,獲取更多好用效率工具!

          往期推薦

          阿里發(fā)布AI編碼助手:通義靈碼
          又一款優(yōu)秀的開(kāi)源Markdown編輯器,太秀了!
          一款助你觀看外語(yǔ)視頻效率++的配音插件,太好用了!
          一款免費(fèi)的響應(yīng)式界面調(diào)試工具


          點(diǎn)擊下方卡片,關(guān)注公眾號(hào)“TJ君

          每天了解一個(gè)牛x、好用、有趣的東東

          瀏覽 2500
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91成人电影a | 亚洲视频黄色 | 日逼电影网| 亚洲A∨| 免费成人毛片网站 |