1、什麼是熱更新?
熱更新也叫不停機更新,是在遊戲伺服器執行期間對遊戲進行更新。實現不停機修正bug、修改遊戲資料等操作。也可以這樣講:一輛車以時速150km跑著,突然爆胎了,然後司機告訴你,我不停車,你去把輪胎換了,小心點。恩
2、熱更新原理
第一種:
並把全域性表中的對應的模組表置 nil 。
同時把資料記錄在專用的全域性表下,並用 local 去引用它。初始化這些資料的時候,首先應該檢查他們是否被初始化過了。這樣來保證資料不被更新過程重置。
**示例:
function reloadup(module_name)
package.loaded[modulename] = nil
require(modulename)
end
這種做法簡單粗暴,雖然能完成熱更新,但是
問題很多,舊的引用的模組無法得到更新,這種程度的熱更新顯然不能滿足現在的遊戲開發需求。
第二種:
function reloadup(module_name)
local old_module = _g[module_name]
package.loaded[module_name] = nil
require (module_name)
local new_module = _g[module_name]
for k, v in pairs(new_module) do
old_module[k] = v
endpackage.loaded[module_name] = old_module
end
Lua熱更新原理及示例
網上有不少lua熱更新的文章,都只說了理論,被沒有給出實際可操作的 下面是我寫的幾個例子。lua的require modelname 把乙個lua檔案載入存放到package.loaded modelname 當我們載入乙個模組的時候,會先判斷是否在package.loaded中已存在,若存在則返回...
Socket 簡介及面試題
socket 簡介1.什麼是socket?socket是對tcp ip 協議的抽象,是作業系統對外開放的介面。socket起源於unix,而unix linux基本哲學之一就是 一切皆檔案 都可以用 開啟open 讀寫write read 關閉close 模式來操作。我的理解就是socket就是該模...
面試題之熱修復原理
1 經過多重的類載入器dexclassloader的分析後,從當中獲取element陣列對應的類之後在載入,然後採用陣列遍歷,遍歷出乙個個的dex檔案。2 執行for迴圈,對dex檔案處理,獲取class檔案。3 我們將打包修復好的補丁dex檔案放入element陣列的第乙個元素中,這樣就能保證獲取...