动态链接库SO文件的加载方法、装置及存储介质制造方法及图纸

技术编号:22594346 阅读:45 留言:0更新日期:2019-11-20 10:54
本发明专利技术实施例涉及一种动态链接库SO文件的加载方法及、装置及存储介质;所述方法,应用于GO语言服务器中的应用程序,包括:当接收到访问请求时,确定接收所述访问请求的端口;判断所述端口是否为动态链接库SO文件更新端口;若所述端口为动态链接库SO文件更新端口,调用本地预先配置的程序代码,加载目标动态链接库SO文件。如此通过以预设的方式在GO语言服务器中应用程序设置程序代码,与所述GO语言服务器中应用程序相互独立运行,调用本地预先配置的程序代码,加载用户输入的目标动态链接库SO文件,无需停止应用程序的运行,无需重启应用程序,可以动态实现动态链接库SO文件的热加载。

Loading method, device and storage medium of dynamic link library so file

The embodiment of the invention relates to a loading method, a device and a storage medium of a dynamic link library so file; the method is applied to an application program in a go language server, including: when receiving an access request, determining the port for receiving the access request; judging whether the port is a dynamic link library so file update port; if the port is a dynamic link library so file Update the port, call the local pre configured program code, load the target dynamic link library so file. In this way, the dynamic link library so file can be dynamically realized by setting the program code in the application program in the go language server in a preset way, running independently of the application program in the go language server, calling the local pre configured program code, loading the target dynamic link library so file entered by the user, without stopping the operation of the application program and restarting the application program Hot loading of.

【技术实现步骤摘要】
动态链接库SO文件的加载方法、装置及存储介质
本专利技术实施例涉及计算机
,尤其涉及一种动态链接库SO文件的加载方法及、装置及存储介质。
技术介绍
动态链接库SO文件,是指linux平台下文件名以.so结尾的文件,里面包含有完成某一特定服务的函数。为了便于管理众多的动态链接库SO文件,可以将动态链接库SO文件存储于服务器中,例如GO语言服务器。针对GO语言服务器,可以向用户提供动态链接库SO文件的调用功能。目前由于动态链接库SO文件需要进行版本升级,需要将最新的动态链接库SO文件加载至GO语言服务器,将GO语言服务器中的动态链接库SO文件替换为最新的动态链接库SO文件。现有技术中,在对GO语言服务器中动态链接库SO文件进行版本升级的过程中,加载动态链接库SO文件的实现方式为:将动态链接库SO文件引入至应用程序中工程代码,在应用程序工程代码中编译动态链接库SO文件。如此在GO语言服务器中对动态链接库SO文件进行版本升级的过程中,需要停止应用程序的运行,然后重启应用程序。
技术实现思路
鉴于此,为解决现有技术中在对动态链接库SO文件进行版本升级的过程中,需要停止应用程序的运行,然后重启应用程序的技术问题,本专利技术实施例提供一种动态链接库SO文件的加载方法及、装置及存储介质。第一方面,本专利技术实施例提供一种动态链接库SO文件的加载方法,包括:当接收到访问请求时,确定接收所述访问请求的端口;判断所述端口是否为动态链接库SO文件更新端口;若所述端口为动态链接库SO文件更新端口,调用本地预先配置的程序代码,加载目标动态链接库SO文件;其中,所述程序代码采用预设的方式设置于所述应用程序中。在一个可能的实施方式中,所述程序代码采用预设的方式设置于所述应用程序中,包括:以注释的方式在所述GO语言服务器中的应用程序引入程序代码。在一个可能的实施方式中,所述方法还包括:从所述目标动态链接库SO文件中读取目标库函数,并将所述目标库函数缓存至内存对应的缓存地址中;将库函数指针指向的地址设置为所述缓存地址;向用户返回动态链接库SO文件的更新结果。在一个可能的实施方式中,所述将库函数指针指向的地址设置为所述缓存地址,包括:对所述库函数指针加锁;在所述库函数指针加锁的过程中,将库函数指针指向的地址设置为所述缓存地址;在对所述库函数指针指向的地址进行修改后,对所述库函数指针解锁。在一个可能的实施方式中,所述方法还包括:若接收所述访问请求的端口非动态链接库SO文件更新端口,则判断接收所述访问请求的端口是否为动态链接库SO文件调用端口;若接收所述访问请求的端口为动态链接库SO文件调用端口,则获取库函数指针;根据所述访问请求,确定库函数指针指向的地址;获取所述库函数指针指向的地址对应的库函数,并返回给用户。在一个可能的实施方式中,所述获取所述库函数指针指向的地址对应的库函数,并返回给用户,包括:对所述库函数指针加锁;在所述库函数指针加锁的过程中,获取所述库函数指针指向的地址对应的库函数,并返回给用户;在获取所述库函数指针指向的地址对应的库函数后,对所述库函数指针解锁。在一个可能的实施方式中,所述当接收到用户输入的访问请求时,确定接收所述访问请求的端口,包括:按照预设的监测周期,监测动态链接库SO文件更新端口以及动态链接库SO文件调用端口是否接收到用户输入的访问请求;当接收到用户输入的访问请求时,确定接收所述访问请求的端口。第二方面,本专利技术实施例提供一种动态链接库SO文件的加载装置,其特征在于,所述装置包括:端口确定模块,用于当接收到访问请求时,确定接收所述访问请求的端口;判断模块,用于判断所述端口是否为动态链接库SO文件更新端口;文件加载模块,用于若所述端口为动态链接库SO文件更新端口,调用本地预先配置的程序代码,加载目标动态链接库SO文件;其中,所述程序代码采用预设的方式设置于所述应用程序中。第三方面,本专利技术实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如前述的动态链接库SO文件的加载方法。第四方面,本专利技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述的动态链接库SO文件的加载方法。本专利技术实施例提供的技术方案,通过以预设的方式在GO语言服务器中应用程序设置程序代码,与所述GO语言服务器中的应用程序相互独立运行,当接收到访问请求时,确定接收所述访问请求的端口,判断所述端口是否为动态链接库SO文件更新端口,若所述端口为动态链接库SO文件更新端口,调用本地预先配置的程序代码,加载目标动态链接库SO文件。如此通过以预设的方式在GO语言服务器中应用程序设置程序代码,与所述GO语言服务器中应用程序相互独立运行,调用本地预先配置的程序代码,加载用户输入的目标动态链接库SO文件,无需停止应用程序的运行,无需重启应用程序,可以动态实现动态链接库SO文件的热加载。附图说明图1是本专利技术实施例提供的一种动态链接库SO文件的加载方法的流程示意图;图2是本专利技术实施例提供的另一种动态链接库SO文件的加载方法的流程示意图;图3是本专利技术实施例的一种动态链接库SO文件的加载装置的结构示意图;图4是本专利技术实施例的用于配置本专利技术实施例装置的一种设备的结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。为便于对本专利技术实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本专利技术实施例的限定。在对本专利技术实施例提供的技术方案进行说明之前,首先对本专利技术实施例技术方案的原理进行解释说明:在本专利技术实施例中,为了解决现有技术中动态链接库SO文件不能热加载(热加载是应用程序运行时重新加载动态链接库SO文件以更新服务)的问题,在GO语言服务器中的应用程序,以预设的方式引入程序代码,所述程序代码用于加载动态链接库SO文件,与所述GO语言服务器中应用程序相互独立运行。具体可以以注释的方式在所述GO语言服务器中的应用程序引入程序代码,如此并不会影响所述GO语言服务器中应用程序的运行,可以实现动态链接库SO文件的热加载。意味着在源代码中以注释的方式引入程序代码。例如,在GO语言服务器中应用程序内嵌C语言的程序代码,利用C语言自身能够加载动态链接库SO文件的特性,来实现go语言也能加载动态链接库SO文件。上述C本文档来自技高网...

【技术保护点】
1.一种动态链接库SO文件的加载方法,其特征在于,包括:/n当接收到访问请求时,确定接收所述访问请求的端口;/n判断所述端口是否为动态链接库SO文件更新端口;/n若所述端口为动态链接库SO文件更新端口,调用本地预先配置的程序代码,加载目标动态链接库SO文件;/n其中,所述程序代码采用预设的方式设置于所述应用程序中。/n

【技术特征摘要】
1.一种动态链接库SO文件的加载方法,其特征在于,包括:
当接收到访问请求时,确定接收所述访问请求的端口;
判断所述端口是否为动态链接库SO文件更新端口;
若所述端口为动态链接库SO文件更新端口,调用本地预先配置的程序代码,加载目标动态链接库SO文件;
其中,所述程序代码采用预设的方式设置于所述应用程序中。


2.根据权利要求1所述的方法,其特征在于,所述程序代码采用预设的方式设置于所述应用程序中,包括:
以注释的方式在GO语言服务器中的应用程序引入程序代码。


3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述目标动态链接库SO文件中读取目标库函数,并将所述目标库函数缓存至内存对应的缓存地址中;
将库函数指针指向的地址设置为所述缓存地址;
向用户返回动态链接库SO文件的更新结果。


4.根据权利要求3所述的方法,其特征在于,所述将库函数指针指向的地址设置为所述缓存地址,包括:
对所述库函数指针加锁;
在所述库函数指针加锁的过程中,将库函数指针指向的地址设置为所述缓存地址;
在对所述库函数指针指向的地址进行修改后,对所述库函数指针解锁。


5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若接收所述访问请求的端口非动态链接库SO文件更新端口,则判断接收所述访问请求的端口是否为动态链接库SO文件调用端口;
若接收所述访问请求的端口为动态链接库SO文件调用端口,则获取库函数指针;
根据所述访问请求,确定库函数指针指向的地址;
获...

【专利技术属性】
技术研发人员:范枭鹏甄志坚赵慧子康林林王沅召
申请(专利权)人:珠海格力电器股份有限公司珠海联云科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利