中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

skynet 近期更新及 sproto 若干 bug 的修復(fù)
來源:易賢網(wǎng) 閱讀:1976 次 日期:2015-04-09 14:29:42
溫馨提示:易賢網(wǎng)小編為您整理了“skynet 近期更新及 sproto 若干 bug 的修復(fù)”,方便廣大網(wǎng)友查閱!

skynet 的 1.0 版已經(jīng)發(fā)布了 3 個 alpha 版,等穩(wěn)定以后將發(fā)布 beta 版本。

最近的問題主要集中在一些我們在老項目中沒有使用到的特性上面。尤其是 sproto 這個模塊,我希望它將來作為 skynet 推薦的通訊協(xié)議,但我們老的項目開始的比 sproto 的項目早,所以早期項目全部使用的是 google protocol buffers (以及我自己做的實現(xiàn))。 隨著新項目的開展,我們公司內(nèi)部開始大面積使用 sproto ,也就發(fā)現(xiàn)了一些 bug ,在最近集中修復(fù)。

由于 skynet 使用多 lua VM 結(jié)構(gòu),為了不在每個 VM 里重復(fù)加載 sproto 協(xié)議,最近增加了 sproto 協(xié)議對象的共享。這個作為未寫入 sproto 文檔的特性提供,當(dāng)然也不影響 sproto 在其它領(lǐng)域的使用。不過加這個特性比較匆忙,第一次提交時在 gc 方面遺留了一個 bug ,有可能導(dǎo)致多個 VM 重復(fù)釋放 C 對象,問題已經(jīng)在倉庫最新的提交中修復(fù)。

另一個為了 skynet 的應(yīng)用而特別加上的特性是讓 sproto 的 decode 可以接收指針(lightuserdata)。固然只接受 string 會讓實現(xiàn)更穩(wěn)固一些,不過在 skynet 里很多地方 string 和 lightuserdata + size 是通用的,所以就順帶支持了。這樣可以減少一次內(nèi)存拷貝。

根據(jù)使用的同學(xué)的需求,在 sproto 的 lua bingding 里增加了更為詳細(xì)的出錯提示,這可以幫助實際使用時的錯誤定位。另外,還增加更為嚴(yán)格的類型檢查。缺少這些檢查應(yīng)該算是 bug ,因為使用 sproto 而不是 json 這種的無格式的協(xié)議,就是為了可以多做一些類型檢查的。復(fù)雜類型(在 lua 里用 table 實現(xiàn))不檢查還會導(dǎo)致進(jìn)程掛掉,這是絕對不可以接受的。

最后一個嚴(yán)重的 bug 是設(shè)計上的。

sproto 的 encode C API 采用的是 callback 的方式。由使用者(通常是其它語言的 binding )提供一個 callback 函數(shù),C 核心根據(jù) sproto 協(xié)議,每個字段調(diào)用一次這個函數(shù)。

如果它返回 -1 表示編碼錯誤(一般是 buffer 不夠大),會讓 C 核心的編碼過程錯誤返回。

如果它返回 0 表示這個字段不存在。這是因為 sproto 是允許字段不存在的,不存在的字段不會被編碼進(jìn)最終的串。另外,對數(shù)組的編碼也依賴它。如果在編碼一個數(shù)組時返回 0 ,表示數(shù)組結(jié)束。

其它情況應(yīng)返回一個正數(shù),表示當(dāng)前需要編碼的對象的長度。

對于簡單類型,如 boolean ,integer ,一般返回的是固定值。boolean 返回 4 ,integer 返回 4 或 8 (提示 C 核心這個整數(shù)是 32bit 還是 64bit 的)。最終編碼不一定按這個數(shù)字來,且 callback 函數(shù)得到的寫入地址也并非最終 buffer 的地址。C 核心會提供一個地址對齊的地址,然后根據(jù) sproto 的編碼協(xié)議來轉(zhuǎn)換到最終 buffer 中,同時還要處理大小端問題。

對于不定長類型,如 string 或自定義類型。這個長度會幫助 C 核心了解應(yīng)該將 buffer 指針后移多少字節(jié)。callback 函數(shù)將直接把數(shù)據(jù)寫入最終的 buffer 。而問題就出在這里。

當(dāng) string 是一個空串時,由于空串的長度為 0 ,會讓 C 核心誤會這個字段并不存在,這導(dǎo)致所有的空串無法編碼。更嚴(yán)重的是,如果是字符串?dāng)?shù)組,碰到空串就會停止編碼這個數(shù)組。最終的修補方案是,約定在編碼 string 的時候,應(yīng)該返回字符串長度 + 1 。這屬于一個設(shè)計問題,所以除了 lua binding 之外,別的語言的 binding 也需要修改。好在目前已知的 python binding 也是我們公司的同學(xué)實現(xiàn)的,應(yīng)該馬上能改過來。

對于用戶類型,沒有 string 這個問題。即使是空的對象,也有一個數(shù)據(jù)頭。所以不可能為 0 。對于空對象,不在數(shù)組中時,目前的 lua binding 會返回 0 ,讓 C 核心跳過這個字段,而在數(shù)組中時,則會返回一個空的數(shù)據(jù)頭。

利用 sproto 實現(xiàn)的 sharemap 也被查出一個 bug ,不過這個 bug 不屬于 sproto 。它的 metatable 被不小心循環(huán)引用了,如果一個字段不存在會導(dǎo)致 lua 檢測出 metatable 循環(huán)引用而出錯。

還有一個問題是在使用 httpc 時發(fā)現(xiàn)的,雖然已經(jīng)知道,但因為用的不多也沒有特別在意。這次在正式版發(fā)布前,還是給出解決方案:

skynet 的 socket 層在處理域名的時候直接調(diào)用了系統(tǒng) api getaddrinfo ,這會阻塞住線程。由于 skynet 的 socket 是單線程的,所以一旦做域名查詢,會導(dǎo)致 skynet 所有的 socket 消息處理阻塞。一般我們不會使用域名,即使用,也是在數(shù)據(jù)庫第一次連接的時候,通常發(fā)生在 skynet 進(jìn)程啟動的時候,所以影響不大。但一旦使用 httpc 模塊,就很容易向外連接一個域名了。

由于系統(tǒng)并不提供異步的域名解析方法,很多其它網(wǎng)絡(luò)庫的做法是使用額外的線程去查詢域名。我并不想針對這個需求而大幅度修改已經(jīng)穩(wěn)定了的 skynet socket 層,所以提供了獨立的解決方案:那就是在上層自己使用 dns 協(xié)議發(fā)送 udp 包查詢。為了讓 httpc 模塊可以使用它,對其也做了一點改變,允許用戶連接一個 IP 地址,而自己在 http header 里填寫 host 字段。

另外,在充當(dāng) http 客戶端時,http 服務(wù)器往往會在返回的 header 中填寫多個 Set-Cookie 字段,之前對同名的 header 中字段沒有正確的處理,現(xiàn)在做了修正。(多個同名字段會生成一個 table )

更多信息請查看IT技術(shù)專欄

更多信息請查看技術(shù)文章
易賢網(wǎng)手機網(wǎng)站地址:skynet 近期更新及 sproto 若干 bug 的修復(fù)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产一区二区三区直播精品电影 | 国产人久久人人人人爽| 欧美日韩中文字幕日韩欧美| 一区二区三区精品| 久久久噜噜噜久久中文字幕色伊伊 | 黄色成人av网站| 欧美香蕉视频| 欧美精品国产| 激情国产一区| 亚洲欧美春色| 国产精品高潮呻吟久久| 国产欧美一级| 玖玖国产精品视频| 午夜久久黄色| 亚洲欧洲在线播放| 午夜视频一区| 欧美日韩一区高清| 老司机成人网| 日韩一级黄色大片| 欧美日韩第一区日日骚| 在线一区二区日韩| 久久久美女艺术照精彩视频福利播放 | 禁断一区二区三区在线| 亚洲深夜福利视频| 欧美91大片| 99精品热视频只有精品10| 亚洲一区二区少妇| 亚洲精华国产欧美| 伊人久久大香线蕉av超碰演员| 一区二区三区四区国产| 欧美极品一区| 伊人久久婷婷| 免费看成人av| 久热精品视频| 浪潮色综合久久天堂| 欧美一级视频免费在线观看| 宅男精品视频| 亚洲欧美国产另类| 欧美在线视频a| 国产精品专区一| 在线不卡欧美| 欧美精品在线观看| 欧美精品一区二区三区高清aⅴ| 欧美大片在线看| 欧美日韩精品一区| 久久精品欧美| 欧美精品在线观看| 一区二区三区四区国产| 欧美性片在线观看| 性欧美精品高清| 91久久国产综合久久91精品网站| 欧美xx视频| 亚洲欧美日韩人成在线播放| 久久亚洲私人国产精品va媚药 | 国产精品乱码久久久久久| 亚洲美女av黄| 欧美色综合网| 国产日韩欧美麻豆| 国产三级欧美三级日产三级99| 亚洲第一区在线| 亚洲国产高清高潮精品美女| 欧美日韩系列| 欧美精品色一区二区三区| 午夜视频一区二区| 欧美成va人片在线观看| 亚洲欧美视频一区二区三区| 欧美成人午夜激情视频| 国产精品丝袜xxxxxxx| 久久午夜av| 久久久99免费视频| 99天天综合性| 欧美xxxx在线观看| 亚洲一区精品视频| 亚洲精品国产精品国自产观看| 国产精品成av人在线视午夜片| 麻豆精品网站| 性高湖久久久久久久久| 亚洲区免费影片| 欧美成人嫩草网站| 激情成人av| 国产日韩精品电影| 亚洲免费在线视频一区 二区| 亚洲国产视频一区| 久久精品免费观看| 亚洲欧美日韩综合| 亚洲自拍偷拍网址| 国产精品欧美风情| 亚洲大胆av| 国产亚洲精品v| 欧美一区二区在线看| 亚洲一区美女视频在线观看免费| 久久亚洲国产精品日日av夜夜| 午夜激情综合网| 校园春色综合网| 国产亚洲成av人在线观看导航| 欧美日韩国产色站一区二区三区| 亚洲精品国产精品国产自| 亚洲伦理自拍| 亚洲精品美女在线观看| 欧美精品久久久久久| 欧美91大片| 国产精品福利在线| 国内久久精品| 亚洲国产日韩欧美在线99| 国内精品久久久久影院色| 精品电影在线观看| 欧美电影免费观看网站| 欧美午夜片欧美片在线观看| 欧美性淫爽ww久久久久无| 欧美午夜剧场| 国产日韩精品久久久| 久久久午夜精品| 136国产福利精品导航| 亚洲精品日韩精品| 欧美四级在线| 久久婷婷综合激情| 1024日韩| 国产精品美女主播| 亚洲国产欧美国产综合一区| 欧美亚州韩日在线看免费版国语版| 亚洲三级免费观看| 国产精品视频免费观看www| 午夜精品久久久久99热蜜桃导演| 夜久久久久久| 久久蜜桃av一区精品变态类天堂| 久久成人精品电影| 亚洲理论电影网| 亚洲欧美激情精品一区二区| 久久久中精品2020中文| 欧美日韩在线免费观看| 国模吧视频一区| 国产精品久久久久一区| 欧美精品一区二区蜜臀亚洲| 亚洲日本中文字幕| 亚洲第一色中文字幕| 老司机午夜免费精品视频| 国产精品高潮呻吟视频| 欧美视频在线观看 亚洲欧| 亚洲欧洲一区二区三区| 久久免费99精品久久久久久| 亚洲欧美日韩国产综合| 99热免费精品在线观看| 欧美日韩的一区二区| av成人激情| 国产欧美日韩一区二区三区在线观看 | 欧美国产综合一区二区| 国产午夜精品全部视频在线播放| 国产精品一区2区| 在线观看中文字幕不卡| 欧美精品亚洲二区| 亚洲视频在线看| 国内在线观看一区二区三区| 久久久av网站| 亚洲一级二级| 国产精品久久精品日日| 美女图片一区二区| 欧美综合二区| 久久久久久有精品国产| 欧美久久久久久久久| 国产精品视频网站| 夜夜夜久久久| 免费成人黄色片| 国产精品成人播放| 欧美精品一区二区三区蜜桃 | 日韩亚洲精品视频| 国产嫩草一区二区三区在线观看 | 欧美日韩成人在线播放| 国产欧美婷婷中文| 午夜在线视频观看日韩17c| 欧美精品国产精品日韩精品| 国产综合自拍| 国产一区二区三区久久久久久久久 | 欧美777四色影视在线| 亚洲午夜电影网| 日韩一区二区久久| 夜夜嗨av一区二区三区网站四季av| 精品不卡一区| 一本色道久久| 亚洲欧美视频| 国产精品视频九色porn| 国产精品二区三区四区| 欧美日韩国产成人在线免费| 国产综合在线视频| 久久精品毛片| 中文国产成人精品| 久久亚洲风情| 欧美一区二区三区免费视频| 欧美激情久久久| 欧美午夜在线视频| 久久免费视频在线| 国产一区二区高清| 欧美精品在线播放| 国产精品成av人在线视午夜片| 亚洲特级毛片| 狠狠色丁香婷婷综合久久片| 欧美在线日韩精品| 99这里只有精品| 一色屋精品视频免费看| 一区二区免费在线观看| 亚洲第一页中文字幕|