[發明專利]動態庫熱更新方法、裝置、介質和設備有效
| 申請號: | 201910828207.0 | 申請日: | 2019-09-03 |
| 公開(公告)號: | CN110750545B | 公開(公告)日: | 2023-07-25 |
| 發明(設計)人: | 陳云 | 申請(專利權)人: | 抖音視界有限公司 |
| 主分類號: | G06F16/23 | 分類號: | G06F16/23;G06F8/41 |
| 代理公司: | 北京國昊天誠知識產權代理有限公司 11315 | 代理人: | 王思超 |
| 地址: | 100041 北京市石景山區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 動態 更新 方法 裝置 介質 設備 | ||
本公開提供了一種動態庫熱更新方法、裝置、介質和設備,該方法包括:創建以當前時間命名的文件夾路徑;遍歷編譯目錄下所有文件,判斷文件是否為指定類型文件;當所述文件為所述指定類型文件時,修改所述指定類型文件的導入包路徑;將修改后的所述指定類型文件加入所述文件夾路徑的第一位置;在所述第一位置,接收對動態庫文件的編譯指令;將更新后的動態庫加載到指定主程序,實現動態庫文件的更新。本方法使得動態庫文件更新后,主程序不需要做相應修改,直接調用修改后的動態庫文件就可以執行更新后的動態庫文件,讓golang動態庫的熱更新變成可方便調用的文件,解決了動態庫更新必須重啟程序的問題,提升了升級程序的便捷性,提高了程序開發效率。
技術領域
本公開涉及計算機技術領域,具體而言,涉及一種動態庫熱更新方法、裝置、介質和設備。
背景技術
golang語言從1.8版本開始提供了plugin的機制,支持編譯及加載動態庫。但由于golang底層代碼的限制,無法做到不重啟程序的情況下更新動態庫,這造成動態庫使用的局限性。golang為每個package根據內容計算了一個相應的哈希值。當程序內容變更時,會導致計算得到的哈希值改變。golang在熱加載時會判斷當前動態庫中所有的package對應的哈希值是否有變更,如果有,會導致熱更新失敗。現有技術中沒有已知的好方案解決動態庫的熱更新問題。每次動態庫有更新后,都需要主程序做相應的更新,才能順利的調用、執行動態庫文件。這給開發帶來了極大的困擾。
本公開的目的在于提供一種動態庫熱更新方法、裝置、介質和設備,能夠解決上述提到的至少一個技術問題。具體方案如下:
根據本公開的具體實施方式,第一方面,本公開提供一種動態庫熱更新方法,包括:
創建以當前時間命名的文件夾路徑;
遍歷編譯目錄下所有文件,判斷所述文件是否為指定類型文件;
當所述文件為所述指定類型文件時,修改所述指定類型文件的導入包路徑;
將修改后的所述指定類型文件加入所述文件夾路徑的第一位置;
在所述第一位置,接收對動態庫文件的編譯指令;
將更新后的動態庫加載到指定主程序,實現動態庫文件的更新。
可選的,當所述文件為所述指定類型文件時,修改所述指定類型文件的導入包路徑,包括:
當所述文件為所述指定類型文件時,將所述指定類型文件的導入包路徑修改為所述以當前時間命名的文件夾路徑。
可選的,所述遍歷編譯目錄下所有文件,判斷所述文件是否為指定類型文件,之后包括:
當所述文件為非指定類型文件時,直接拷貝所述文件內容到所述文件夾路徑的第二位置。
可選的,所述指定類型文件為golang語言下的go文件。
根據本公開的具體實施方式,第二方面,本公開提供一種動態庫熱更新裝置,包括:
創建單元,配置為創建以當前時間命名的文件夾路徑;
判斷單元,配置為遍歷編譯目錄下所有文件,判斷所述文件是否為指定類型文件;
修改單元,配置為當所述文件為所述指定類型文件時,修改所述指定類型文件的導入包路徑;
加入單元,配置為將修改后的所述指定類型文件加入所述文件夾路徑的第一位置;
接收單元,配置為在所述第一位置,接收對動態庫文件的編譯指令;
加載單元,配置為將更新后的動態庫加載到指定主程序,實現動態庫文件的更新。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于抖音視界有限公司,未經抖音視界有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910828207.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種多校區聯動學員信息管理方法和系統
- 下一篇:一種數據庫的更新方法及裝置





