lua面試題 熱更新簡介 原理及示例

2021-07-24 17:39:50 字數 845 閱讀 3641

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陣列的第乙個元素中,這樣就能保證獲取...