发明内容
本发明实施例提供了一种代码动态加载方法、装置及计算机可读存储介质,旨在解决现有技术方法中所存在的无法对用于程序开发的组件代码进行高效加载的问题。
第一方面,本发明实施例提供了一种代码动态加载方法,应用于用户终端,其包括:
接收用户输入的配置信息,执行所述配置信息的文件加载指令以从所述管理服务器获取与所述配置信息相匹配的基本文件并进行加载;
根据所述配置信息的组件目录信息对所述管理服务器中与所述组件目录信息对应的组件目录进行遍历,得到组件基本信息;
从所述管理服务器获取与所述配置信息的目标用户相匹配的历史组件使用信息;
根据所述基本文件的转换函数对所述组件基本信息进行转换得到组件转换信息;
根据所述历史组件使用信息及所述配置信息的组件分块规则对所述组件转换信息进行分块得到对应的多个组件信息块;
将多个所述组件信息块依次发送至管理服务器,以接收所述管理服务器根据所述组件信息块反馈的待加载组件代码并进行加载。
第二方面,本发明实施例提供了一种代码动态加载方法,应用于管理服务器,其包括:
判断是否存储有与配置信息的目标用户相匹配的历史使用记录;
若存储有与所述目标用户相匹配的历史使用记录,将所述历史使用记录作为历史组件使用信息反馈至所述用户终端;
若未存储与所述目标用户相匹配的历史使用记录,获取与所述目标用户相匹配的相似用户的历史使用记录作为历史组件使用信息反馈至所述用户终端。
第三方面,本发明实施例提供了一种代码动态加载装置,可配置于用户终端中,所述用户终端包括基本文件加载单元、组件基本信息获取单元、历史组件使用信息获取单元、组件转换信息获取单元、组件信息块获取单元及组件代码加载单元,包括:
基本文件加载单元,用于接收用户输入的配置信息,执行所述配置信息的文件加载指令以从所述管理服务器获取与所述配置信息相匹配的基本文件并进行加载;
组件基本信息获取单元,用于根据所述配置信息的组件目录信息对所述管理服务器中与所述组件目录信息对应的组件目录进行遍历,得到组件基本信息;
历史组件使用信息获取单元,用于从所述管理服务器获取与所述配置信息的目标用户相匹配的历史组件使用信息;
组件转换信息获取单元,用于根据所述基本文件的转换函数对所述组件基本信息进行转换得到组件转换信息;
组件信息块获取单元,用于根据所述历史组件使用信息及所述配置信息的组件分块规则对所述组件转换信息进行分块得到对应的多个组件信息块;
组件代码加载单元,用于将多个所述组件信息块依次发送至管理服务器,以接收所述管理服务器根据所述组件信息块反馈的待加载组件代码并进行加载。
第四方面,本发明实施例又提供了一种代码动态加载装置,可配置于管理服务器中,所述管理服务器包括判断单元、第一使用信息反馈单元及第二使用信息反馈单元;
判断单元,用于判断是否存储有与配置信息的目标用户相匹配的历史使用记录;
第一使用信息反馈单元,用于若存储有与所述目标用户相匹配的历史使用记录,将所述历史使用记录作为历史组件使用信息反馈至所述用户终端;
第二使用信息反馈单元,用于若未存储与所述目标用户相匹配的历史使用记录,获取与所述目标用户相匹配的相似用户的历史使用记录作为历史组件使用信息反馈至所述用户终端。
第五方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时实现如第一方面所述的代码动态加载方法。
本发明实施例提供了一种代码动态加载方法、装置及计算机可读存储介质。执行配置信息的文件加载指令以获取基本文件并进行加载,对管理服务器中与目标信息对应的组件目标进行遍历得到组件基本信息并进一步转换为组件转换信息,获取与配置信息的目标用户相匹配的历史组件使用信息,根据历史组件使用信息及组件分块规则对组件转换信息进行分块得到多个组件信息块,依次获取与组件信息块对应的待加载组件代码并进行加载。通过上述方法,依次获取与每一组件信息块对应的待加载组件代码进行分批次加载,并依据目标用户的使用习惯对代码组件进行动态加载,可提高对组件代码进行加载的效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1及图2,图1是本发明实施例提供的代码动态加载方法的流程示意图,图2为本发明实施例提供的代码动态加载方法的应用场景示意图;该代码动态加载方法应用于代码动态加载装置,代码动态加载装置可以是用户终端20或管理服务器30,该代码动态加载方法通过安装于用户终端20或管理服务器30中的应用软件进行执行,管理服务器30与用户终端20进行网络连接以实现数据信息的传输,用户终端20即是从管理服务器30获取相应组件代码并进行动态加载的终端设备,例如台式电脑、笔记本电脑、平板电脑或手机等,管理服务器30即是根据用户终端20请求信息对应反馈组件代码的服务器端,管理服务器30可以是企业、政府机关等单位所设立的服务器,用户终端20的使用者可以是程序开发人员。如图1所示,该方法包括可在用户终端20内执行的步骤S110~S160。
S110、接收用户输入的配置信息,执行所述配置信息的文件加载指令以从所述管理服务器获取与所述配置信息相匹配的基本文件并进行加载。
若用户终端接收到用户输入的配置信息,执行所述配置信息的文件加载指令以从所述管理服务器获取与所述配置信息相匹配的基本文件并进行加载。企业的程序开发人员可输入配置信息至用户终端,配置信息中包含文件加载指令,文件加载指令即为从管理服务器获取相应程序文件进行加载的指令信息,基本文件即为进行页面开发所必需的基本程序文件,基本文件包括依赖文件及核心代码库。
在一实施例中,如图3所示,步骤S110包括子步骤S111、S112和S113。
S111、执行所述文件加载指令的依赖文件加载指令,以从所述管理服务器获取与所述依赖文件加载指令相匹配的依赖文件进行加载。
可执行文件加载指令中的依赖文件加载指令以在用户终端中对依赖文件进行加载,依赖文件包含前端Vue框架中的基本工具,对组件代码进行加载以及使用的过程中需要使用这些基本工具。
例如,若用户终端的操作系统为mac系统,则依赖文件加载指令可以是“npm ipa-auto-import-module--save-dev”。
S112、判断本地目录中是否包含核心代码库;S113、若所述本地目录中不包含核心代码库,执行所述文件加载指令的代码库加载指令以从所述管理服务器获取与所述代码库加载指令相匹配的核心代码库进行加载。
对用户终端的本地目录进行检索以判断本地目录中是否包含核心代码库,本地目录即为用户终端中对进行页面开发所需的程序文件进行存储的存储目录,可根据核心代码库对应的关键词对本地目录所对应的目录信息进行检索,若目录信息中包含与关键词相匹配的文件名,则表明本地目录中已包含核心代码库,无需执行文件加载指令的代码库加载指令;若目录信息中不包含与关键词相匹配的文件名,则表明本地目录中不包含核心代码库。
例如,若与核心代码库对应的关键词为“babel”和“babel/core”,则可根据上述两个关键词判断本地目录中是否包含与关键词对应的核心代码库。
若本地目录不包含核心代码库,则需执行代码库加载指令以在用户终端中对核心代码库进行加载,核心代码库包含转换函数等核心函数。
例如,若用户终端的操作系统为mac系统,代码库加载指令可以是“npm install--save-dev@babel/core;npminstall--save-dev babel-plugin-syntax-dynamic-import”。
在配置文件中还包括模式修改指令,可通过执行模式修改指令对组件代码的加载模式进行修改,将自动加载修改为动态按需加载,则用户终端可根据修改后的加载模式对组件代码进行动态按需加载。
例如,若用户终端的操作系统为mac系统,模式修改指令可以是“npmrun pa-auto-import-module”。
S120、根据所述配置信息的组件目录信息对所述管理服务器中与所述组件目录信息对应的组件目录进行遍历,得到组件基本信息。
根据所述配置信息的组件目录信息对所述管理服务器中与所述组件目录信息对应的组件目录进行遍历,得到组件基本信息。配置信息中还包含组件目录信息,组件目录即为管理服务器中所配置的用于对组件代码进行存储的存储目录,组件目录信息即为与组件目录对应的目录地址信息,组件目录信息可采用URL地址进行表示。用户终端可发送与组件目录信息相匹配的目录遍历请求至管理服务器,管理服务器根据目标遍历请求对与组件目标信息相匹配的组件目录进行遍历得到组件基本信息并反馈至用户终端。组件基本信息中包含组件引入语法、组件格式、组件大小等信息,组件引入语法中包含组件名称。
例如,根据组件目录信息获取得到的组件基本信息如表1所示。
表1
S130、从所述管理服务器获取与所述配置信息的目标用户相匹配的历史组件使用信息。
从所述管理服务器获取与所述配置信息的目标用户相匹配的历史组件使用信息。配置信息中还包括目标用户,目标用户即为当前使用用户终端的程序开发人员,用户终端将目标用户发送至管理服务器,管理服务器可根据目标用户获取相匹配的历史组件使用信息并反馈至用户终端,历史组件使用信息即为对与目标用户对应的组件使用情况进行记录得到的历史记录信息。
如图8所示,该方法包括可在管理服务器30内执行的步骤S210、S220和S230,也即是管理服务器30接收到目标用户后,执行以下步骤。
S210、判断是否存储有与配置信息的目标用户相匹配的历史使用记录;S220、若存储有与所述目标用户相匹配的历史使用记录,将所述历史使用记录作为历史组件使用信息反馈至所述用户终端。
目标用户对使用组件代码进行开发工作时,用户终端可对组件代码的使用情况进行记录并转存至管理服务器,形成该目标用户的历史使用记录。若管理服务器中存储有与目标用户相匹配的历史使用记录,则表明该目标用户并非首次进行程序开发工作,获取该目标用户的历史使用记录作为对应历史组件使用信息并反馈至用户终端;若管理服务器中未存储与目标用户相匹配的历史使用记录,则表明该目标用户首次进行程序开发工作,则无法直接获取该目标用户的历史使用记录。
S230、若未存储与所述目标用户相匹配的历史使用记录,获取与所述目标用户相匹配的相似用户的历史使用记录作为历史组件使用信息反馈至所述用户终端。
若管理服务器中未存储与目标用户相匹配的历史使用记录,则可根据管理服务器中预存的开发人员信息表获取与所述目标用户相匹配的开发人员信息,并基于开发人员信息获取与该目标用户匹配度最高的一个相似用户,将相似用户的历史使用记录作为与该目标用户相匹配的历史组件使用信息,历史组件使用信息中包含多个组件程序的使用次数。
获取与所述目标用户相匹配的相似用户的历史使用记录的具体步骤包括:a、从所述开发人员信息表中获取与所述目标用户相匹配的开发人员信息;b、根据所述开发人员信息从所述开发人员信息表中获取与所述开发人员信息相匹配的备选开发人员信息;
具体的,开发人员信息表即为管理服务器中设置的用于存储企业每一开发人员信息的数据表,可从开发人员信息表中获取该目标用户的开发人员信息,开发人员信息包括年龄、性别,职级、部门、项目小组、开发类别,将存在历史使用记录且与该目标用户对应部门所属的其他开发人员作为备选开发人员,(管理服务器中存储有与每一备选开发人员相匹配的历史使用记录),从开发人员信息表中获取每一备选开发人员的备选开发人员信息。
c、根据预置的信息量化规则对所述开发人员信息及所述备选开发人员信息进行量化得到对应的开发人员量化信息和备选开发人员量化信息;d、将所述开发人员量化信息分别与每一所述备选开发人员量化信息进行组合得到对应的多个量化输入信息;e、将所述量化输入信息输入预置的匹配模型以获取每一量化输入信息对应的匹配度;f、获取匹配度最高的一个量化输入信息对应的备选开发人员作为所述相似用户。
信息量化规则中包含多个量化项目,每一量化项目均可将开发人员信息中对应的一项信息转换为一个量化值进行表示,可根据信息量化规则包含的量化项目对开发人员信息进行量化,得到与开发人员信息对应的开发人员量化信息,则开发人员量化信息中包含量化值的数据与转换项目的数量相等,开发人员量化信息可表示为一个多维的特征向量,开发人员量化信息中每一量化值的取值范围均为[0,1]。根据信息量化规则采用相同方式对备选开发人员信息进行量化,则得到备选开发人员量化信息。
以对开发人员信息进行转换为例,对于开发人员信息中与量化项目对应的信息以非数值方式进行表示的情况,则直接获取量化项目中与该非数值相匹配的关键字所对应的数据,作为与该非数值对应的量化值。例如,信息量化规则与开发类型这一量化项目中包含“界面开发”、“逻辑流程开发”、“数据库开发”三个关键字,与“界面开发”相匹配的数据为“0.7”、与“逻辑流程开发”相匹配的数据为“0.45”,与“数据库开发”相匹配的数据为“0.3”,某开发人员信息中开发类别为界面开发,则对应的量化值为“0.7”。
对于与量化项目对应的信息以数值方式表示的情况,信息量化规则中对应的量化规则为一个激活函数及一个中间值,根据激活函数对中间值及量化项目的一项信息进行计算,即可得到对应的量化值。
例如,激活函数可表示为其中,x为与量化项目对应的一项信息,v为与该量化项目对应的中间值。与年龄这一量化项目对应的中间值为v=40,开发人员信息中年龄这一量化项目对应的信息为x=35,则根据上述激活函数计算得到对应的量化值为0.6514。
匹配模型是基于神经网络所构建的智能分析模型,需求分类模型由一个输入层、多个中间层及一个输出层组成,输入层与中间层之间、中间层与前后相邻的其他中间层之间、中间层与输出层之间均通过关联公式进行关联,例如某一关联公式可表示为y=r×x+t,r和t即为该关联公式中的参数值。输入层中包含的输入节点的数量与开发人员量化信息及备选开发人员量化信息的长度之和相等,则输入节点的数量为开发人员量化信息中量化值数量的两倍,将开发人员量化信息与每一备选开发人员量化信息进行组合,得到与备选开发人员量化信息数量相等的多个量化输入信息,量化输入信息中的每一个量化值均与一个输入节点相对应,将每一量化输入信息分别输入匹配模型进行计算,即可从其输出层获取输出结果,输出结果即为输出节点的输出节点值,每一量化输入信息对应一个输出节点值,输出节点值即为开发人员量化信息与一个备选开发人员量化信息之间的匹配度,输出节点值可采用一个百分比进行表示,取值范围为[0,1]。获取匹配度最高的量化输入信息对应的一个备选开发人员作为与目标用户相匹配的相似用户,获取管理服务器中所存储的与相似用户对应的历史使用记录,作为与目标用户相匹配的历史组件使用信息。在使用匹配模型之前,可对匹配模型进行训练得到训练后的匹配模型,使用训练后的匹配模型可提高计算匹配度的精确性。
S140、根据所述基本文件的转换函数对所述组件基本信息进行转换得到组件转换信息。
根据所述基本文件的转换函数对所述组件基本信息进行转换得到组件转换信息。基本文件的核心代码库中包含转换函数,可根据转换函数对组件基本信息进行转换得到组件转换信息,转换函数即为对组件基本信息进行转换处理的函数方法,转换过程仅涉及对组件基本信息中的组件引入语法,组件转换信息可将组件引入语法采用箭头函数形式进行记载,将转换得到的组件转换信息发送至管理服务器即可方便获取相应组件程序并进行加载。
例如,对“importAfrom./src/componet/A”进行转换得到的组件转换信息为“constA=()=>import('./src/componet/A')”。
S150、根据所述历史组件使用信息及所述配置信息的组件分块规则对所述组件转换信息进行分块得到对应的多个组件信息块。
根据所述历史组件使用信息及所述配置信息的组件分块规则对所述组件转换信息进行分块得到对应的多个组件信息块。为对与组件转换信息对应的组件代码进行动态按需加载,可根据历史组件使用信息及组件分块规则对组件转换信息进行分块,得到对应的多个组件信息块,每一组件信息块均至少包含一个组件转换信息。组件分块规则即为对组件转换信息进行分块的具体规则,组件分块规则包括数量阈值及分块阈值。
在一实施例中,如图4所示,步骤S150包括子步骤S151、S152、S153、S154和S155。
S151、根据所述历史组件使用信息中每一组件代码的使用次数对所述组件转换信息进行排序,得到组件转换排序信息。
历史组件使用信息中包含多个组件代码的使用次数,则历史组件使用信息中包含的每一组件代码的使用次数均大于零,可依据其中组件代码的使用次数对组件转换信息进行排序得到组件转换排序信息,使用次数越多则组件代码对应的组件转换信息在组件转换排序信息的排序越靠前;其中,若某一组件代码未包含于历史组件使用信息中,则将该组件代码的使用次数记为零。
S152、根据所述数量阈值对组件转换排序信息进行分块,得到多个初始组件信息块。
具体的,根据数量阈值依次获取组件转换排序信息与数量阈值相等的多个组件转换信息,得到多个初始组件信息块,则最后一个初始组件信息块中包含的组件转换信息的数量少于或等于数量阈值,除最后一个初始组件信息块之外,其它初始组件信息块包含的组件转换信息的数量均等于数量阈值,还可对初始组件信息块进行编号以确定初始组件信息块的排列顺序。
例如,数量阈值为10,则依次从组件转换排序信息中获取10条组件转换信息组成一个初始组件信息块,直至所有组件转换信息均被分块至初始组件信息块。
S153、对每一所述初始组件信息块的组件代码大小总和是否小于所述分块阈值进行判断;S154、若每一所述初始组件信息块的组件代码大小总和均小于所述分块阈值,将所述初始组件信息块作为组件信息块。
可对每一初始组件信息块中对应的多个组件代码的大小相加,得到每一初始组件信息块的组件代码大小总和,判断每一初始组件信息块是否均小于分块阈值,若组件信息块小于分块阈值,则直接将初始组件信息块作为最终得到的组件信息块进行输出。
S155、若某一所述初始组件信息块的组件代码大小总和不小于所述分块阈值,根据所述分块阈值对所述初始组件信息块进行拆分,得到与所述初始组件信息块对应的多个组件信息块。
某一初始组件信息块不小于分块阈值,则可根据分块阈值对初始组件信息块中包含的组件转换信息进行拆分,拆分得到的每一组件信息块的组件代码大小总和均小于分块阈值。
例如,分块阈值为500kb,则可判断初始组件信息块的组件代码大小总和是否小于500kb,若不小于则对其进行拆分。
S160、将多个所述组件信息块依次发送至管理服务器,以接收所述管理服务器根据所述组件信息块反馈的待加载组件代码并进行加载。
将多个所述组件信息块依次发送至管理服务器,以接收所述管理服务器根据所述组件信息块反馈的待加载组件代码并进行加载。具体的,根据初始组件信息块的排序,依次将多个组件信息块所包含的组件转换信息发送至管理服务器,还可对发送组件信息块的发送间隔时间进行设置,则可根据发送间隔时间将多个组件信息块依次发送至管理服务器,发送前一组件信息块的时间与发送后一组件信息块的时间之间必须间隔一个发送间隔时间。管理服务器接收组件信息块后,即可从组件目录中获取与组件信息块对应的组件代码反馈至用户终端,用户终端接收与组件信息块对应的组件代码进行加载,程序开发人员即可使用已加载的组件代码进行程序开发工作。
例如,发送间隔时间设置为20秒,则前后两个组件信息块的发送时间之间间隔20秒。
在一实施例中,如图5所示,步骤S160之后包括步骤S170。
S170、若到达预设的转存时间点,获取处于转存时间段内的组件使用记录并转存至所述管理服务器,所述转存时间段为当前转存时间点与上一转存时间点之间的间隔时间。
若到达预设的转存时间点,获取处于转存时间段内的组件使用记录并转存至所述管理服务器,所述转存时间段为当前转存时间点与上一转存时间点之间的间隔时间。若到达转存时间点,则可对当前转存时间点与上一转存时间点之间所记录得到的组件使用记录转存至管理服务器,其中,若用户终端首次对组件使用记录进行转存,则将程序开发人员对第一个组件代码进行使用的使用时间作为起始的转存时间点。
在一实施例中,如图6所示,步骤S170包括子步骤S171、S172和S173。
S171、对每一组件代码的使用时间进行记录得到对应的组件使用记录;S172、若到达所述转存时间点,获取处于所述转存时间段内的组件使用记录并发送至所述管理服务器进行转存;S173、删除处于所述转存时间段内的组件使用记录,并返回执行所述对每一组件代码的使用时间进行记录得到对应的组件使用记录的步骤。
对组件代码的使用情况进行记录得到组件使用记录,组件使用记录中包含相应组件代码的使用时间及组件名称,根据组件使用记录中的使用时间即可获取处于转存时间段内的组件使用记录,重复执行这一转存步骤,直至程序开发人员关闭前端Vue框架并停止使用。
例如,可设置间隔时间为5分钟,则以5分钟为一个转存时间段对组件使用记录进行获取及转存,直至程序开发人员在用户终端内关闭前端Vue框架。
在一实施例中,如图6所示,步骤S170之后还包括:步骤S180。
S180、将所述组件使用记录同步上传至区块链进行存储。
将所述组件使用记录上传至区块链进行存储,基于组件使用记录得到对应的摘要信息,具体来说,摘要信息由组件使用记录进行散列处理得到,比如利用sha256s算法处理得到。将摘要信息上传至区块链可保证其安全性和对用户的公正透明性。用户设备可以从区块链中下载得该摘要信息,以便查证组件使用记录是否被篡改。本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
在本发明实施例所提供的代码动态加载方法中,执行配置信息的文件加载指令以获取基本文件并进行加载,对管理服务器中与目标信息对应的组件目标进行遍历得到组件基本信息并进一步转换为组件转换信息,获取与配置信息的目标用户相匹配的历史组件使用信息,根据历史组件使用信息及组件分块规则对组件转换信息进行分块得到多个组件信息块,依次获取与组件信息块对应的待加载组件代码并进行加载。通过上述方法,依次获取与每一组件信息块对应的待加载组件代码进行分批次加载,并依据目标用户的使用习惯对代码组件进行动态加载,可提高对组件代码进行加载的效率。
本发明实施例还提供一种代码动态加载装置,该代码动态加载装置可配置于用户终端20中,该代码动态加载装置用于执行前述用户终端20中可执行的代码动态加载方法的任一实施例。具体地,请参阅图9,图9为本发明实施例提供的用户终端的示意性框图。如图9所示,用户终端20包括基本文件加载单元21、组件基本信息获取单元22、历史组件使用信息获取单元23、组件转换信息获取单元24、组件信息块获取单元25及组件代码加载单元26。
基本文件加载单元21,用于接收用户输入的配置信息,执行所述配置信息的文件加载指令以从所述管理服务器获取与所述配置信息相匹配的基本文件并进行加载。
在一实施例中,所述基本文件加载单元21包括子单元:依赖文件加载单元、本地目录判断单元和核心代码库加载单元。
依赖文件加载单元,用于执行所述文件加载指令的依赖文件加载指令,以从所述管理服务器获取与所述依赖文件加载指令相匹配的依赖文件进行加载;本地目录判断单元,用于判断本地目录中是否包含核心代码库;核心代码库加载单元,用于若所述本地目录中不包含核心代码库,执行所述文件加载指令的代码库加载指令以从所述管理服务器获取与所述代码库加载指令相匹配的核心代码库进行加载。
组件基本信息获取单元22,用于根据所述配置信息的组件目录信息对所述管理服务器中与所述组件目录信息对应的组件目录进行遍历,得到组件基本信息;历史组件使用信息获取单元23,用于从所述管理服务器获取与所述配置信息的目标用户相匹配的历史组件使用信息;组件转换信息获取单元24,用于根据所述基本文件的转换函数对所述组件基本信息进行转换得到组件转换信息。
组件信息块获取单元25,用于根据所述历史组件使用信息及所述配置信息的组件分块规则对所述组件转换信息进行分块得到对应的多个组件信息块。
在一实施例中,所述组件信息块获取单元25包括子单元:排序处理单元、初始组件信息块获取单元、大小总和判断单元、组件信息块确定单元和初始组件信息块拆分单元。
排序处理单元,用于根据所述历史组件使用信息中每一组件代码的使用次数对所述组件转换信息进行排序,得到组件转换排序信息;初始组件信息块获取单元,用于根据所述数量阈值对组件转换排序信息进行分块,得到多个初始组件信息块;大小总和判断单元,用于对每一所述初始组件信息块的组件代码大小总和是否小于所述分块阈值进行判断;组件信息块确定单元,用于若每一所述初始组件信息块的组件代码大小总和均小于所述分块阈值,将所述初始组件信息块作为组件信息块;初始组件信息块拆分单元,用于若某一所述初始组件信息块的组件代码大小总和不小于所述分块阈值,根据所述分块阈值对所述初始组件信息块进行拆分,得到与所述初始组件信息块对应的多个组件信息块。
组件代码加载单元26,用于将多个所述组件信息块依次发送至管理服务器,以接收所述管理服务器根据所述组件信息块反馈的待加载组件代码并进行加载。
在一实施例中,所述用户终端20还包括子单元:组件使用记录转存单元。
组件使用记录转存单元,用于若到达预设的转存时间点,获取处于转存时间段内的组件使用记录并转存至所述管理服务器,所述转存时间段为当前转存时间点与上一转存时间点之间的间隔时间。
在一实施例中,所述组件使用记录转存单元包括子单元:组件使用记录获取单元、转存单元及删除单元。
组件使用记录获取单元,用于对每一组件代码的使用时间进行记录得到对应的组件使用记录;转存单元,用于若到达所述转存时间点,获取处于所述转存时间段内的组件使用记录并发送至所述管理服务器进行转存;删除单元,用于删除处于所述转存时间段内的组件使用记录,并返回执行所述对每一组件代码的使用时间进行记录得到对应的组件使用记录的步骤。
在一实施例中,所述用户终端20还包括子单元:组件使用记录存储单元。
组件使用记录存储单元,用于将所述组件使用记录同步上传至区块链进行存储。
本发明实施例还提供一种代码动态加载装置,该代码动态加载装置可配置于管理服务器30中,该代码动态加载装置用于执行前述管理服务器30中可执行的代码动态加载方法的任一实施例。具体地,请参阅图10,图10为本发明实施例提供的管理服务器的示意性框图。如图10所示,所述管理服务器30包括判断单元31、第一使用信息反馈单元32及第二使用信息反馈单元33。
判断单元31,用于判断是否存储有与配置信息的目标用户相匹配的历史使用记录;第一使用信息反馈单元32,用于若存储有与所述目标用户相匹配的历史使用记录,将所述历史使用记录作为历史组件使用信息反馈至所述用户终端;第二使用信息反馈单元33,用于若未存储与所述目标用户相匹配的历史使用记录,获取与所述目标用户相匹配的相似用户的历史使用记录作为历史组件使用信息反馈至所述用户终端。
在本发明实施例所提供的代码动态加载装置应用上述代码动态加载方法,执行配置信息的文件加载指令以获取基本文件并进行加载,对管理服务器中与目标信息对应的组件目标进行遍历得到组件基本信息并进一步转换为组件转换信息,获取与配置信息的目标用户相匹配的历史组件使用信息,根据历史组件使用信息及组件分块规则对组件转换信息进行分块得到多个组件信息块,依次获取与组件信息块对应的待加载组件代码并进行加载。通过上述方法,依次获取与每一组件信息块对应的待加载组件代码进行分批次加载,并依据目标用户的使用习惯对代码组件进行动态加载,可提高对组件代码进行加载的效率。
上述代码动态加载装置可以实现为计算机程序的形式,该计算机程序可以在如图11所示的计算机设备上运行。
请参阅图11,图11是本发明实施例提供的计算机设备的示意性框图。该计算机设备可以是用于执行代码动态加载方法以从管理服务器30获取相应组件代码并进行动态加载的用户终端20,也可以是用于执行代码动态加载方法以根据用户终端20请求信息对应反馈组件代码的管理服务器30。
参阅图11,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括存储介质503和内存储器504。
该存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行代码动态加载方法,其中,存储介质503可以为易失性的存储介质或非易失性的存储介质。
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器504为存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行代码动态加载方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图11中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现上述的代码动态加载方法中对应的功能。
本领域技术人员可以理解,图11中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图11所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元(CentralProcessingUnit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为的计算机可读存储介质。该计算机可读存储介质存储有第一计算机程序或第二计算机程序,当所述第一计算机程序被第一处理器执行时实现如用户终端20中所执行的代码动态加载方法,当所述第二计算机程序被第二处理器执行时实现如管理服务器30中所执行的代码动态加载方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。