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

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)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲美女啪啪| 免费在线观看日韩欧美| 欧美日韩亚洲91| 欧美专区18| 亚洲欧美不卡| 日韩视频在线观看免费| 影音先锋成人资源站| 国产精品观看| 欧美私人网站| 欧美日韩hd| 久久综合给合久久狠狠狠97色69| 欧美在现视频| 亚洲欧美视频在线观看| 亚洲视频在线观看网站| 99精品国产一区二区青青牛奶| 亚洲国产精品999| 亚洲国产第一页| 亚洲高清不卡一区| 亚洲国产日本| 亚洲美女黄色| 亚洲午夜免费视频| 亚洲伊人观看| 久久成人18免费观看| 久久久精品tv| 欧美成人蜜桃| 国产精品久久国产愉拍| 国产精品呻吟| 狠狠久久婷婷| 亚洲三级免费| 亚洲一区二区三区四区五区午夜| 亚洲在线视频| 欧美一区二区视频在线观看2020| 久久精品国产清自在天天线| 久久精品国产69国产精品亚洲 | 夜夜嗨一区二区| 中文国产成人精品| 午夜一级久久| 老司机午夜精品| 欧美日韩国产影片| 国产精品久久久久久久久| 国产一区二区三区久久精品| 亚洲国产精品免费| 国产精品99久久久久久白浆小说| 亚洲午夜女主播在线直播| 欧美综合第一页| 欧美激情一区在线| 国产精品一区二区久激情瑜伽| 国模私拍视频一区| 亚洲蜜桃精久久久久久久| 一二美女精品欧洲| 国产欧美亚洲视频| 欧美猛交免费看| 在线一区二区三区四区| 亚洲欧美日韩国产综合| 玖玖视频精品| 国产精品一区在线播放| 亚洲福利国产| 午夜电影亚洲| 欧美日本一区二区高清播放视频| 国产精品视频精品视频| 伊人久久av导航| 亚洲综合精品一区二区| 久久香蕉国产线看观看av| 欧美日韩一区在线播放| 韩国欧美一区| 亚洲视屏一区| 欧美激情视频网站| 一区二区免费在线播放| 久久国产欧美精品| 亚洲剧情一区二区| 性欧美大战久久久久久久免费观看| 久久综合久色欧美综合狠狠| 麻豆成人av| 国产亚洲精品自拍| 激情一区二区三区| 国产精品尤物| 国产精品亚洲第一区在线暖暖韩国| 国产日韩欧美高清免费| 在线看视频不卡| 午夜欧美不卡精品aaaaa| 六十路精品视频| 国产欧美日韩精品丝袜高跟鞋 | 国产精品美腿一区在线看| 狠狠色综合网| 韩国自拍一区| 国产精品夜夜嗨| 亚洲人成网站在线播| 欧美一区二区三区婷婷月色| 欧美日韩第一区| 娇妻被交换粗又大又硬视频欧美| 亚洲自拍偷拍网址| 欧美午夜精品久久久久免费视 | 蜜臀a∨国产成人精品| 国产精品中文在线| 亚洲一区免费在线观看| 欧美日韩一区二区精品| 一级日韩一区在线观看| 欧美日韩精品免费观看| 亚洲人成77777在线观看网| 麻豆久久久9性大片| 国内精品国产成人| 久久精品日韩欧美| 国产一区二区丝袜高跟鞋图片| 亚洲专区一二三| 国产精品国产三级国产专播精品人 | 欧美一区二区三区免费在线看 | 久久不射2019中文字幕| 亚洲美女精品一区| 在线观看亚洲精品| 99视频在线观看一区三区| 9久re热视频在线精品| 一区二区激情| 久久久久久电影| 久久免费一区| 欧美高清hd18日本| 免费不卡亚洲欧美| 欧美日韩另类国产亚洲欧美一级| 国产精品v欧美精品v日本精品动漫| 欧美激情精品久久久久久蜜臀| 亚洲激情在线观看| 午夜欧美大片免费观看| 久久成人精品视频| 欧美精品在线一区| 中文av一区二区| 一区二区不卡在线视频 午夜欧美不卡在| 国产色综合久久| 欧美第一黄网免费网站| 欧美一级淫片播放口| 亚洲国产精品999| 欧美.com| 亚洲天堂av高清| 国产精品视频成人| 久久久亚洲人| 一区二区三区欧美在线| 国产伦精品一区二区三区四区免费| 欧美亚洲综合网| 国产亚洲一区二区三区在线观看| 亚洲精品久久久久中文字幕欢迎你 | 亚洲一区二区三区中文字幕在线 | 亚洲经典三级| 欧美精品videossex性护士| 亚洲第一免费播放区| 欧美美女bb生活片| 欧美在线免费看| 亚洲美女黄色片| 国语自产精品视频在线看| 欧美人牲a欧美精品| 欧美在线观看一二区| 亚洲精品乱码| 好吊色欧美一区二区三区四区| 欧美日韩一区在线观看| 久久亚洲精品视频| 午夜天堂精品久久久久| 亚洲麻豆一区| 美女脱光内衣内裤视频久久网站| 亚洲午夜精品视频| 最新日韩精品| 伊人成年综合电影网| 久久亚洲综合色| 午夜日韩在线| 国产精品一区二区三区乱码| 欧美激情视频一区二区三区在线播放| 欧美在线播放一区| 亚洲一区在线免费| 日韩视频专区| 99re8这里有精品热视频免费| 尤物99国产成人精品视频| 国产女人精品视频| 国产精品二区二区三区| 欧美日韩午夜剧场| 欧美国产精品劲爆| 欧美aaaaaaaa牛牛影院| 亚洲一品av免费观看| 亚洲视频图片小说| 亚洲视频你懂的| 亚洲一区二区三区高清不卡| 亚洲视频每日更新| 亚洲一本视频| 亚洲欧美日韩综合| 亚洲一区二区在线观看视频| 日韩午夜剧场| 99视频+国产日韩欧美| 99re热精品| 在线亚洲欧美专区二区| 亚洲美女啪啪| 一区二区冒白浆视频| 在线亚洲伦理| 午夜伦理片一区| 久久久久国产精品一区三寸| 久久久www成人免费精品| 欧美中在线观看| 久久久久网站| 欧美电影在线播放| 欧美精选午夜久久久乱码6080| 欧美日本精品一区二区三区| 欧美日韩精品二区| 欧美日韩三级在线| 国产精品中文在线| 国产一区二区中文字幕免费看| 在线观看一区二区视频|