[发明专利]动态库热更新方法、装置、介质和设备有效
申请号: | 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.vipzhuanli.com/pat/books/201910828207.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种多校区联动学员信息管理方法和系统
- 下一篇:一种数据库的更新方法及装置