CN107391202A - 一种插件前期绑定方法、装置和电子设备 - Google Patents
一种插件前期绑定方法、装置和电子设备 Download PDFInfo
- Publication number
- CN107391202A CN107391202A CN201710625695.6A CN201710625695A CN107391202A CN 107391202 A CN107391202 A CN 107391202A CN 201710625695 A CN201710625695 A CN 201710625695A CN 107391202 A CN107391202 A CN 107391202A
- Authority
- CN
- China
- Prior art keywords
- unit
- plug
- single product
- subclass
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种插件前期绑定方法、装置和电子设备,其中方法包括:步骤101,解析单品插件并获得单品插件的类型,基于单品插件的类型通过类加载器将单品插件加载到类插件中;类插件具有独立存储空间,类插件中包括至少一个插件子类;步骤102,在类插件中,基于单品插件的类型将加载的单品插件加载到相同类型的插件子类中;每个插件子类中保存相同类型的至少一个单品插件。能够将不在本应用程序的类插件中的单品插件,利用类加载器加载到类插件中,并对单品插件进行类型划分,进而方便根据类型能够快速查找并调用该单品插件,这样在调用其他应用的单品插件时,无需一个一个替换,节省了调用时间,提高了调用效率。
Description
技术领域
本发明属于计算机技术领域,特别是涉及一种插件前期绑定方法、装置和电子设备。
背景技术
插件plug-in,其只能运行在程序规定的装置平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。因为插件需要调用原纯净装置提供的函数库或者数据。
但是现在很多情况下可能需要利用一个应用程序去调用另一个应用程序的插件,如果直接把插件的代码拿过来用的话,就会调取错误;如果让插件单独运行,则运行时会存在一个私用空间,例如用360卫士单独运行其他应用的插件,就是360卫士的私有空间,这样也会运行错误。
因此,如何简单快速的利用一个应用程序调用另一个应用程序的插件,成为目前亟待解决的技术问题。
发明内容
鉴于上述问题,本发明提出了一种以便克服上述问题或者至少部分地解决上述问题的插件前期绑定方法、装置和电子设备。
本发明实施例的一个方面提出了一种插件前期绑定方法,包括:
解析单品插件并获得所述单品插件的类型,基于所述单品插件的类型通过类加载器将所述单品插件加载到类插件中;所述类插件具有独立存储空间,所述类插件中包括至少一个插件子类;
在所述类插件中,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类中;每个所述插件子类中保存相同类型的至少一个单品插件。
基于上述方法的另一实施例中,所述基于所述单品插件的类型将所述加载的单品插件归类到相同类型的插件子类中,包括:
根据所述单品插件的类型判断是否存在对应的插件子类;当存在与所述类型对应的插件子类时,将所述单品插件加载到与所述类型对应的插件子类中;
当不存在与所述类型对应的插件子类时,基于所述类型建立一个新插件子类,将所述单品插件加载到所述新插件子类中。
基于上述方法的另一实施例中,在将所述单品插件加载到与所述类型对应的插件子类或新插件子类之前,包括:
在所述插件子类或新插件子类中添加与所述单品插件相对应的函数,其中,根据所述单品插件的类型编译代码,并将代码与所述单品插件进行映射形成所述函数,进而用所述函数调用所述单品插件。
基于上述方法的另一实施例中,还包括:根据所述类型形成对应所述单品插件的字符串,并将所述字符串拼接在所述函数的前面和/或后面。
基于上述方法的另一实施例中,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类或新插件子类中,包括:
基于对应所述单品插件的字符串在所述插件子类或新插件子类中建立索引,所有所述字符串构成索引目录,通过所述索引目录中的字符串可获得对应所述单品插件的函数。
基于上述方法的另一实施例中,还包括:在所述字符串中加入所述单品插件的包名。
基于上述方法的另一实施例中,在将所述单品插件加载到类插件之前,还包括:
对所述单品插件进行静态处理,得到静态类单品插件。
基于上述方法的另一实施例中,还包括:
所述类插件接收调用单品插件的指令;
根据所述指令中的类型查找得到相应插件子类,并从相应插件子类中调用单品插件。
基于上述方法的另一实施例中,所述从相应插件子类中调用单品插件,包括:
获取所述指令中的调用包名,根据调用包名查找调用类型;
根据所述调用类型查找相应插件子类,并从相应插件子类的索引目录中查找与所述调用包名相匹配的字符串,并利用字符串确定调用函数;
根据所述调用函数调用单品插件。
本发明的另一方面,提出了一种插件前期绑定装置,包括:
解析单元,用于解析单品插件并获得所述单品插件的类型,基于所述单品插件的类型通过类加载器将所述单品插件加载到类插件中;所述类插件具有独立存储空间,所述类插件中包括至少一个插件子类;
加载单元,用于在所述类插件中,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类中;每个所述插件子类中保存相同类型的至少一个单品插件。
本发明的再一方面,提出了一种电子设备,包括如上所述的插件前期绑定装置。
本发明实施例提供的插件前期绑定方法及装置,具有如下有益效果:
通过本发明的技术方案,能够将不在本应用程序的类插件中的单品插件,利用类加载器加载到类插件中,并对单品插件进行类型划分,进而方便根据类型能够快速查找并调用该单品插件,这样在调用其他应用的单品插件时,无需一个一个替换,节省了调用时间,提高了调用效率。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为本发明插件前期绑定方法一个实施例的流程图。
图2为本发明插件前期绑定方法另一个实施例的流程图。
图3为本发明插件前期绑定方法再一个实施例的流程图。
图4为本发明插件前期绑定装置一个实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
图1为本发明插件前期绑定方法一个实施例的流程图。
如图1所示,该实施例方法,包括:
步骤101,解析单品插件并获得单品插件的类型,基于单品插件的类型通过类加载器将单品插件加载到类插件中;类插件具有独立存储空间,类插件中包括至少一个插件子类。
其中,单品插件可以是其他应用程序下的插件,也可以是本应用程序下的插件,本发明主要针对其他应用程序下的插件进行处理。单品插件的类型可以根据插件的功能、使用平台、属性、大小等进行分类,并将单品插件和相应类型进行列表存储,以供在解析单品插件时能够根据列表查找并获得该单品插件的类型。其他应用程序的单品插件的调用指针最初是指向其他应用程序的,通过本应用程序的类加载器进行加载后,将单品插件的调用指针改变了,使单品插件指向本应用程序,进而方便本应用程序调用单品插件。
步骤102,在类插件中,基于单品插件的类型将加载的单品插件加载到相同类型的插件子类中;每个插件子类中保存相同类型的至少一个单品插件。
在上述技术方案中,由于其他应用中的单品插件是早已开发好的,本应用程序(例如,360卫士)在调用其他应用的单品插件时,如果把单品插件的代码直接调用会导致调用错误。因此通过上述技术方案,利用ClassLoader(类加载器)将单品插件加载到相应类型的插件子类中,进而本应用程序就可以从相应类型的插件子类中查找并调用该单品插件,这种调用方式操作简单方便,只是改变了单品插件的调用方式,无需修改太多内容节省工作量,并且没有改变单品插件的内容,因此不会影响单品插件的调用效果。
图2为本发明插件前期绑定方法另一个实施例的流程图。
如图2所示,该实施例方法,包括:
步骤101,解析单品插件并获得单品插件的类型,基于单品插件的类型通过类加载器将单品插件加载到类插件中;类插件具有独立存储空间,类插件中包括至少一个插件子类。
步骤1021,根据单品插件的类型判断是否存在对应的插件子类;是则进入步骤1022,否则进入步骤1023。
步骤1022,将单品插件加载到与类型对应的插件子类中。
步骤1023,基于类型建立一个新插件子类,将单品插件加载到新插件子类中。通过上述技术方案,能够将单品插件加载到对应类型的插件子类中,并且如果类插件中没有相应类型的插件子类就会建立一个与该类型想对应的新的插件子类,进而保证无论单品插件是何种类型都有与之对应的插件子类,以供其能够被加载进入。
在上述实施例方法的一个具体示例中,在步骤1022或步骤1023之前,包括:
在插件子类或新插件子类中添加与单品插件相对应的函数,其中,根据单品插件的类型编译代码,并将代码与单品插件进行映射形成函数,进而用函数调用单品插件。
在上述技术方案中,利用函数改变单品插件的调用路径,这样类插件就可以直接从插件子类中查找与单品插件相对应的函数,并利用函数对单品插件进行调用,进而执行单品插件的功能。该函数中包含有与单品插件的类型相对应的代码,还有单品插件的存储路径以及调用密码,只有这三类全部正确才能调用单品插件,否则就会调用失败,这样有效防止了一些恶意软件或病毒对单品插件进行强行调用的风险。
在上述实施例方法的一个具体示例中,根据类型形成对应单品插件的字符串,并将字符串拼接在函数的前面和/或后面。
在上述技术方案中,为所有的单品插件的类型编译相应的字符串,再将字符串拼接在函数中,以供根据字符串查找函数,由于查找时可以从函数的前面开始查找,也可以从函数的后面开始查找,因此为了能够快速找到对应的函数,将字符串拼接在函数的最前面或最后面。
在上述实施例方法的一个具体示例中,在步骤1022或步骤1023中具体包括:
基于对应单品插件的字符串在插件子类或新插件子类中建立索引,所有字符串构成索引目录,通过索引目录中的字符串可获得对应单品插件的函数。
在上述技术方案中,将该字符串与单品插件的函数进行一一对应,并列表存储形成索引目录,每添加一个单品插件就在索引目录中加入一组对应的字符串,进而方便根据索引目录查找相应函数。
每个单品插件都有自己特定的包名,为了使查找更加方便,在字符串中加入单品插件的包名,这样,在查找函数时就可以根据该包名进行查找,这样既不会找错还能节省查找时间。
在上述实施例方法的一个具体示例中,在步骤101之前,对单品插件进行静态处理,得到静态类单品插件。
由于单品插件的识别码一般都是动态随机码,由于动态随机码每次使用都要重新获取,这样会增加运算时间,也会影响中央处理器的运行速率,为了解决这个问题,本发明在加载单品插件之前先对单品插件进行静态处理,将单品插件的识别码由动态随机码,改成静态识别码。但是静态识别码容易被破译,为了避免这种情况对该静态识别码进行加密,进而保证单品插件的安全性,有效防止恶意软件的入侵。
图3为本发明插件前期绑定方法再一个实施例的流程图。
如图3所示,将单品插件加载到类插件中之后,就可以利用类插件对单品插件进行调用了,具体过程如下:
步骤101,解析单品插件并获得单品插件的类型,基于单品插件的类型通过类加载器将单品插件加载到类插件中;类插件具有独立存储空间,类插件中包括至少一个插件子类。
步骤102,在类插件中,基于单品插件的类型将加载的单品插件加载到相同类型的插件子类中;每个插件子类中保存相同类型的至少一个单品插件。
步骤103,类插件接收调用单品插件的指令。
步骤104,根据指令中的类型查找得到相应插件子类,并从相应插件子类中调用单品插件。
在上述技术方案中,调用单品插件的指令中包含有待调用的单品插件的类型以及对应的识别码,其中,识别码为静态识别码,并且该静态识别码中设有解密指令,利用解密指令对识别码进行解密后直接调用单品插件,并执行单品插件的功能。
在上述实施例方法的一个具体示例中,步骤104具体包括:
步骤1041,获取指令中的调用包名,根据调用包名查找调用类型。
步骤1042,根据调用类型查找相应插件子类,并从相应插件子类的索引目录中查找与调用包名相匹配的字符串,并利用字符串确定调用函数。
步骤1043,根据调用函数调用单品插件。
在上述技术方案中,在对应的调用单品插件的指令中可以没有相应的类型,只有一个调用包名,在调用过程中根据该调用包名查找相应的调用类型,这样就可以实现“调用包名→调用类型→插件子类→索引目录→字符串→调用函数→单品插件”的调用过程。这样就可以实现利用360卫士的类插件调用其他应用下的单品插件的功能,并且简单快捷,易于处理。
图4为本发明插件前期绑定装置一个实施例的结构示意图。
如图4所示,该实施例的装置可用于实现本发明上述各方法实施例,该实施例的装置包括:
解析单元410,用于解析单品插件并获得单品插件的类型,基于单品插件的类型通过类加载器将单品插件加载到类插件中;类插件具有独立存储空间,类插件中包括至少一个插件子类;
其中,单品插件可以是其他应用程序下的插件,也可以是本应用程序下的插件,本发明主要针对其他应用程序下的插件进行处理。单品插件的类型可以根据插件的功能、使用平台、属性、大小等进行分类,并将单品插件和相应类型进行列表存储,以供在解析单品插件时能够根据列表查找并获得该单品插件的类型。其他应用程序的单品插件的调用指针最初是指向其他应用程序的,通过本应用程序的类加载器进行加载后,将单品插件的调用指针改变了,使单品插件指向本应用程序,进而方便本应用程序调用单品插件。
加载单元420,用于在类插件中,基于单品插件的类型将加载的单品插件加载到相同类型的插件子类中;每个插件子类中保存相同类型的至少一个单品插件。
在上述技术方案中,由于其他应用中的单品插件是早已开发好的,本应用程序(例如,360卫士)在调用其他应用的单品插件时,如果把单品插件的代码直接调用会导致调用错误。因此通过上述技术方案,利用ClassLoader(类加载器)将单品插件加载到相应类型的插件子类中,进而本应用程序就可以从相应类型的插件子类中查找并调用该单品插件,这种调用方式操作简单方便,只是改变了单品插件的调用方式,无需修改太多内容节省工作量,并且没有改变单品插件的内容,因此不会影响单品插件的调用效果。
基于上述装置的另一实施例中,加载单元420包括:
判断单元421,用于根据单品插件的类型判断是否存在对应的插件子类;当存在与类型对应的插件子类时,将单品插件加载到与类型对应的插件子类中;当不存在与类型对应的插件子类时,基于类型建立一个新插件子类,将单品插件加载到新插件子类中。
通过上述技术方案,能够将单品插件加载到对应类型的插件子类中,并且如果类插件中没有相应类型的插件子类就会建立一个与该类型想对应的新的插件子类,进而保证无论单品插件是何种类型都有与之对应的插件子类,以供其能够被加载进入。
基于上述装置的另一实施例中,加载单元420还包括:
函数添加单元422,用于在插件子类或新插件子类中添加与单品插件相对应的函数,其中,根据单品插件的类型编译代码,并将代码与单品插件进行映射形成函数,进而用函数调用单品插件。
在上述技术方案中,利用函数改变单品插件的调用路径,这样类插件就可以直接从插件子类中查找与单品插件相对应的函数,并利用函数对单品插件进行调用,进而执行单品插件的功能。该函数中包含有与单品插件的类型相对应的代码,还有单品插件的存储路径以及调用密码,只有这三类全部正确才能调用单品插件,否则就会调用失败,这样有效防止了一些恶意软件或病毒对单品插件进行强行调用的风险。
基于上述装置的另一实施例中,函数添加单元422还用于:根据类型形成对应单品插件的字符串,并将字符串拼接在函数的前面和/或后面。
在上述技术方案中,为所有的单品插件的类型编译相应的字符串,再将字符串拼接在函数中,以供根据字符串查找函数,由于查找时可以从函数的前面开始查找,也可以从函数的后面开始查找,因此为了能够快速找到对应的函数,将字符串拼接在函数的最前面或最后面。
基于上述装置的另一实施例中,加载单元420还包括:
索引生成单元423,用于根据对应单品插件的字符串在插件子类或新插件子类中建立索引,所有字符串构成索引目录,通过索引目录中的字符串可获得对应单品插件的函数。
在上述技术方案中,将该字符串与单品插件的函数进行一一对应,并列表存储形成索引目录,每添加一个单品插件就在索引目录中加入一组对应的字符串,进而方便根据索引目录查找相应函数。
每个单品插件都有自己特定的包名,为了使查找更加方便,在字符串中加入单品插件的包名,这样,在查找函数时就可以根据该包名进行查找,这样既不会找错还能节省查找时间。
基于上述装置的另一实施例中,加载单元420还用于:在将单品插件加载到类插件之前,对单品插件进行静态处理,得到静态类单品插件。
由于单品插件的识别码一般都是动态随机码,由于动态随机码每次使用都要重新获取,这样会增加运算时间,也会影响中央处理器的运行速率,为了解决这个问题,本发明在加载单品插件之前先对单品插件进行静态处理,将单品插件的识别码由动态随机码,改成静态识别码。但是静态识别码容易被破译,为了避免这种情况对该静态识别码进行加密,进而保证单品插件的安全性,有效防止恶意软件的入侵。
基于上述装置的另一实施例中,还包括:
执行单元430,用于利用类插件接收调用单品插件的指令;根据指令对应的类型查找得到相应插件子类,并从相应插件子类中调用单品插件。
在上述技术方案中,调用单品插件的指令中包含有待调用的单品插件的类型以及对应的识别码,其中,识别码为静态识别码,并且该静态识别码中设有解密指令,利用解密指令对识别码进行解密后直接调用单品插件,并执行单品插件的功能。
基于上述装置的另一实施例中,执行单元430包括:
查找单元431,用于获取指令中的调用包名,根据调用包名查找调用类型;
匹配单元432,用于根据调用类型查找相应插件子类,并从相应插件子类的索引目录中查找与调用包名相匹配的字符串,并利用字符串确定调用函数;
调用单元433,用于根据调用函数调用单品插件。
在上述技术方案中,在对应的调用单品插件的指令中可以没有相应的类型,只有一个调用包名,在调用过程中根据该调用包名查找相应的调用类型,这样就可以实现“调用包名→调用类型→插件子类→索引目录→字符串→调用函数→单品插件”的调用过程。这样就可以实现利用360卫士的类插件调用其他应用下的单品插件的功能,并且简单快捷,易于处理。
通过本发明的上述技术方案,能够将不在本应用程序的类插件中的单品插件,利用类加载器加载到类插件中,并对单品插件进行类型划分,进而方便根据类型能够快速查找并调用该单品插件,这样在调用其他应用的单品插件时,无需一个一个替换,节省了调用时间,提高了调用效率。
1、一种插件前期绑定方法,包括:
解析单品插件并获得所述单品插件的类型,基于所述单品插件的类型通过类加载器将所述单品插件加载到类插件中;所述类插件具有独立存储空间,所述类插件中包括至少一个插件子类;
在所述类插件中,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类中;每个所述插件子类中保存相同类型的至少一个单品插件。
2、根据1所述的方法,所述基于所述单品插件的类型将所述加载的单品插件归类到相同类型的插件子类中,包括:
根据所述单品插件的类型判断是否存在对应的插件子类;当存在与所述类型对应的插件子类时,将所述单品插件加载到与所述类型对应的插件子类中;
当不存在与所述类型对应的插件子类时,基于所述类型建立一个新插件子类,将所述单品插件加载到所述新插件子类中。
3、根据2所述的方法,在将所述单品插件加载到与所述类型对应的插件子类或新插件子类之前,包括:
在所述插件子类或新插件子类中添加与所述单品插件相对应的函数,其中,根据所述单品插件的类型编译代码,并将代码与所述单品插件进行映射形成所述函数,进而用所述函数调用所述单品插件。
4、根据3所述的方法,还包括:根据所述类型形成对应所述单品插件的字符串,并将所述字符串拼接在所述函数的前面和/或后面。
5、根据4所述的方法,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类或新插件子类中,包括:
基于对应所述单品插件的字符串在所述插件子类或新插件子类中建立索引,所有所述字符串构成索引目录,通过所述索引目录中的字符串可获得对应所述单品插件的函数。
6、根据4或5所述的方法,还包括:在所述字符串中加入所述单品插件的包名。
7、根据1-6任一项所述的方法,在将所述单品插件加载到类插件之前,还包括:
对所述单品插件进行静态处理,得到静态类单品插件。
8、根据1-7任一项所述的方法,还包括:
所述类插件接收调用单品插件的指令;
根据所述指令中的类型查找得到相应插件子类,并从相应插件子类中调用单品插件。
9、根据8所述的方法,所述从相应插件子类中调用单品插件,包括:
获取所述指令中的调用包名,根据调用包名查找调用类型;
根据所述调用类型查找相应插件子类,并从相应插件子类的索引目录中查找与所述调用包名相匹配的字符串,并利用字符串确定调用函数;
根据所述调用函数调用单品插件。
10、一种插件前期绑定装置,包括:
解析单元,用于解析单品插件并获得所述单品插件的类型,基于所述单品插件的类型通过类加载器将所述单品插件加载到类插件中;所述类插件具有独立存储空间,所述类插件中包括至少一个插件子类;
加载单元,用于在所述类插件中,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类中;每个所述插件子类中保存相同类型的至少一个单品插件。
11、根据10所述的装置,所加载单元包括:
判断单元,用于根据所述单品插件的类型判断是否存在对应的插件子类;当存在与所述类型对应的插件子类时,将所述单品插件加载到与所述类型对应的插件子类中;当不存在与所述类型对应的插件子类时,基于所述类型建立一个新插件子类,将所述单品插件加载到所述新插件子类中。
12、根据11所述的装置,所述加载单元还包括:
函数添加单元,用于在所述插件子类或新插件子类中添加与所述单品插件相对应的函数,其中,根据所述单品插件的类型编译代码,并将代码与所述单品插件进行映射形成所述函数,进而用所述函数调用所述单品插件。
13、根据12所述的装置,所述函数添加单元还用于:根据所述类型形成对应所述单品插件的字符串,并将所述字符串拼接在所述函数的前面和/或后面。
14、根据13所述的装置,所述加载单元还包括:
索引生成单元,用于根据对应所述单品插件的字符串在所述插件子类或新插件子类中建立索引,所有所述字符串构成索引目录,通过所述索引目录中的字符串可获得对应所述单品插件的函数。
15、根据13或14所述的装置,在所述字符串中加入所述单品插件的包名。
16、根据10-15任一项所述的装置,所述加载单元还用于:在将所述单品插件加载到类插件之前,对所述单品插件进行静态处理,得到静态类单品插件。
17、根据10-16任一项所述的装置,还包括:
执行单元,用于利用所述类插件接收调用单品插件的指令;根据所述指令对应的类型查找得到相应插件子类,并从相应插件子类中调用单品插件。
18、根据17所述的装置,所述执行单元包括:
查找单元,用于获取所述指令中的调用包名,根据调用包名查找调用类型;
匹配单元,用于根据所述调用类型查找相应插件子类,并从相应插件子类的索引目录中查找与所述调用包名相匹配的字符串,并利用字符串确定调用函数;
调用单元,用于根据所述调用函数调用单品插件。
19、一种电子设备,包括如上述10-18任一项所述的插件前期绑定装置。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于装置实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和装置。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (10)
1.一种插件前期绑定方法,其特征在于,包括:
解析单品插件并获得所述单品插件的类型,基于所述单品插件的类型通过类加载器将所述单品插件加载到类插件中;所述类插件具有独立存储空间,所述类插件中包括至少一个插件子类;
在所述类插件中,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类中;每个所述插件子类中保存相同类型的至少一个单品插件。
2.根据权利要求1所述的方法,其特征在于,所述基于所述单品插件的类型将所述加载的单品插件归类到相同类型的插件子类中,包括:
根据所述单品插件的类型判断是否存在对应的插件子类;当存在与所述类型对应的插件子类时,将所述单品插件加载到与所述类型对应的插件子类中;
当不存在与所述类型对应的插件子类时,基于所述类型建立一个新插件子类,将所述单品插件加载到所述新插件子类中。
3.根据权利要求2所述的方法,其特征在于,在将所述单品插件加载到与所述类型对应的插件子类或新插件子类之前,包括:
在所述插件子类或新插件子类中添加与所述单品插件相对应的函数,其中,根据所述单品插件的类型编译代码,并将代码与所述单品插件进行映射形成所述函数,进而用所述函数调用所述单品插件。
4.根据权利要求3所述的方法,其特征在于,还包括:根据所述类型形成对应所述单品插件的字符串,并将所述字符串拼接在所述函数的前面和/或后面。
5.根据权利要求4所述的方法,其特征在于,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类或新插件子类中,包括:
基于对应所述单品插件的字符串在所述插件子类或新插件子类中建立索引,所有所述字符串构成索引目录,通过所述索引目录中的字符串可获得对应所述单品插件的函数。
6.一种插件前期绑定装置,其特征在于,包括:
解析单元,用于解析单品插件并获得所述单品插件的类型,基于所述单品插件的类型通过类加载器将所述单品插件加载到类插件中;所述类插件具有独立存储空间,所述类插件中包括至少一个插件子类;
加载单元,用于在所述类插件中,基于所述单品插件的类型将所述加载的单品插件加载到相同类型的插件子类中;每个所述插件子类中保存相同类型的至少一个单品插件。
7.根据权利要求6所述的装置,其特征在于,所加载单元包括:
判断单元,用于根据所述单品插件的类型判断是否存在对应的插件子类;当存在与所述类型对应的插件子类时,将所述单品插件加载到与所述类型对应的插件子类中;当不存在与所述类型对应的插件子类时,基于所述类型建立一个新插件子类,将所述单品插件加载到所述新插件子类中。
8.根据权利要求7所述的装置,其特征在于,所述加载单元还包括:
函数添加单元,用于在所述插件子类或新插件子类中添加与所述单品插件相对应的函数,其中,根据所述单品插件的类型编译代码,并将代码与所述单品插件进行映射形成所述函数,进而用所述函数调用所述单品插件。
9.根据权利要求8所述的装置,其特征在于,所述函数添加单元还用于:根据所述类型形成对应所述单品插件的字符串,并将所述字符串拼接在所述函数的前面和/或后面。
10.一种电子设备,其特征在于,包括如权利要求6-9任一项所述的插件前期绑定装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710625695.6A CN107391202B (zh) | 2017-07-27 | 2017-07-27 | 一种插件前期绑定方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710625695.6A CN107391202B (zh) | 2017-07-27 | 2017-07-27 | 一种插件前期绑定方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391202A true CN107391202A (zh) | 2017-11-24 |
CN107391202B CN107391202B (zh) | 2020-12-08 |
Family
ID=60342741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710625695.6A Active CN107391202B (zh) | 2017-07-27 | 2017-07-27 | 一种插件前期绑定方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391202B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060698A1 (en) * | 2003-09-11 | 2005-03-17 | International Business Machines Corporation | Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy |
CN102214109A (zh) * | 2010-04-08 | 2011-10-12 | 深圳市金蝶中间件有限公司 | 一种加载插件的方法及装置 |
CN104679572A (zh) * | 2015-03-26 | 2015-06-03 | 北京神舟航天软件技术有限公司 | 基于预加载机制的插件支持方法 |
CN105094890A (zh) * | 2012-03-29 | 2015-11-25 | 北京奇虎科技有限公司 | 一种应用程序插件加载方法及装置 |
CN105404524A (zh) * | 2014-09-15 | 2016-03-16 | 阿里巴巴集团控股有限公司 | Java应用中的类加载隔离方法及装置 |
-
2017
- 2017-07-27 CN CN201710625695.6A patent/CN107391202B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060698A1 (en) * | 2003-09-11 | 2005-03-17 | International Business Machines Corporation | Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy |
CN102214109A (zh) * | 2010-04-08 | 2011-10-12 | 深圳市金蝶中间件有限公司 | 一种加载插件的方法及装置 |
CN105094890A (zh) * | 2012-03-29 | 2015-11-25 | 北京奇虎科技有限公司 | 一种应用程序插件加载方法及装置 |
CN105404524A (zh) * | 2014-09-15 | 2016-03-16 | 阿里巴巴集团控股有限公司 | Java应用中的类加载隔离方法及装置 |
CN104679572A (zh) * | 2015-03-26 | 2015-06-03 | 北京神舟航天软件技术有限公司 | 基于预加载机制的插件支持方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107391202B (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10873596B1 (en) | Cybersecurity alert, assessment, and remediation engine | |
US7877091B2 (en) | Method and system for executing a container managed application on a processing device | |
CN109716729A (zh) | 动态的基于负载的自动缩放网络安全微服务架构 | |
CN107203419A (zh) | 应用程序中的模块间调用方法、装置及系统 | |
CN109376078A (zh) | 移动应用的测试方法、终端设备及介质 | |
CN106201566A (zh) | 利博伟特软件热升级方法及设备 | |
EP3962041A1 (en) | Microservices cloud-native architecture for ubiquitous simulation as a service | |
CN106681718A (zh) | 一种基于工具集的桌面端插件框架及实现方法 | |
US10423471B2 (en) | Virtualizing integrated calls to provide access to resources in a virtual namespace | |
CN106034138A (zh) | 一种远程服务调用方法及装置 | |
CN113722754B (zh) | 隐私可执行文件的生成方法、装置和服务器 | |
CN109218280A (zh) | 实施数据中心中的物理和虚拟应用组件的微分段策略 | |
US10139984B2 (en) | Devices, storage medium, and methods for multimedia processing | |
Alizadeh et al. | A brief review of mobile cloud computing opportunities | |
CN114640610B (zh) | 基于云原生的服务治理方法、装置及存储介质 | |
CN110083433A (zh) | 嵌入式软件运行方法及装置、终端和计算机可读存储介质 | |
US8645920B2 (en) | Data parallelism aware debugging | |
CN115658348A (zh) | 微服务调用方法、相关装置及存储介质 | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
CN113419712A (zh) | 跨平台的应用生成方法、跨平台应用调用方法、开发装置 | |
CN108446232A (zh) | 自定义检测规则的引入方法、装置、计算设备及存储介质 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
CN107391202A (zh) | 一种插件前期绑定方法、装置和电子设备 | |
CN106911634A (zh) | 一种登录方法和设备 | |
CN103176843B (zh) | MapReduce分布式系统的文件迁移方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |