发明内容
本发明要解决的技术问题是提供一种基于智能卡的对象存储访问方法及智能卡,解决传统方法中访问和存储对象过程复杂繁琐导致智能卡程序对对象访问的效率低的问题。
为了解决上述技术问题,本发明提供了一种基于智能卡的对象存储访问方法,包括:设置各对象的对象属性的长度相同,在对象属性里设置用于指示对象内容数据地址的地址项,按照对象的标识依次存放对象;根据对象的标识和对象属性的长度查找待访问对象的对象属性的存储位置并在所述存储位置访问所述对象属性,或者还包括从所述对象属性的地址项获知对象内容数据地址并在所述对象内容数据地址访问数据。
进一步地,上述方法还可以具有以下特点:
所述按照对象的标识依次存放对象是指按照对象的标识值从小到大的顺序依次存放。
进一步地,上述方法还可以具有以下特点:
所述对象属性包括以下项:对象类型、上下文、对象类引用、对象类所在包、数组长度、组件对象类引用、组件对象类所在包、地址。
进一步地,上述方法还可以具有以下特点:
所述地址项的长度为2字节时,所述对象属性的长度为13字节;
所述地址项的长度为4字节时,所述对象属性的长度为15字节。
为了解决上述技术问题,本发明提供了一种智能卡,所述智能卡包括中心控制模块和存储模块;
所述中心控制模块,用于设置各对象的对象属性的长度相同,在对象属性里设置用于指示对象内容数据地址的地址项,按照对象的标识在所述存储模块依次存放对象;还用于根据对象的标识和对象属性的长度查找待访问对象的对象属性的存储位置并在所述存储位置访问此对象属性,或者还包括从此对象属性的地址项获知对象内容数据地址并在此对象内容数据地址访问数据。
所述存储模块,用于存储对象属性和对象内容数据。
进一步地,上述智能卡还可以具有以下特点:
所述中心控制模块,具体用于按照对象的标识值从小到大的顺序依次存放。
进一步地,上述智能卡还可以具有以下特点:
所述对象属性包括以下项:对象类型、上下文、对象类引用、对象类所在包、数组长度、组件对象类引用、组件对象类所在包、地址。
进一步地,上述智能卡还可以具有以下特点:
所述地址项的长度为2字节时,所述对象属性的长度为13字节;
所述地址项的长度为4字节时,所述对象属性的长度为15字节。
本发明可以达到执行1次定位操作即可完成对对象属性的访问,执行2次定位操作即可完成对对象数据的访问,而传统二级表方式中无论访问对象属性还是对象数据都需要3次定位操作才能完成,所以相比传统方法本发明大幅提高了对智能卡对象的访问效率,也大幅提高了智能卡的性能。
具体实施方式
如图1所示,基于智能卡的对象存储访问方法包括:设置各对象的对象属性的长度相同,在对象属性里设置用于指示对象内容数据地址的地址项,按照对象的标识依次存放对象。根据对象的标识和对象属性的长度查找待访问对象的对象属性的存储位置并在所述存储位置访问此对象属性,或者还包括从此对象属性的地址项获知对象内容数据地址并在此对象内容数据地址访问数据。
对象存储方法包括:设置各对象的对象属性的长度相同,在对象属性里设置用于指示对象内容数据地址的地址项,按照对象的标识依次存放对象。
对象属性的访问方法包括:根据对象的标识和对象属性的长度查找待访问对象的对象属性的存储位置并在所述存储位置访问此对象属性。
对象数据的访问方法包括:根据对象的标识和对象属性的长度查找待访问对象的对象属性的存储位置并在所述存储位置访问此对象属性,或者还包括从此对象属性的地址项获知对象内容数据地址并在此对象内容数据地址访问数据。
本方法中将对象属性和对象数据分开存放。对象属性区只用于存放对象属性,对象数据区只用于存放对象数据。
本方法中,按照对象的标识依次存放对象是指按照对象的标识值从小到大的顺序依次存放,如图2所示,存在N个对象时,对象标识依次为0,1,2,3……N,按照对象标识0,1,2,3……N的顺序依次存放,N为大于零的整数。访问对象属性时,计算对象的标识和对象属性长度的乘积即可定位待访问对象的对象属性。当然本方法中不限于上述按照对象的标识值从小到大的顺序依次存放的方式,还可以是按照对象的标识值从大到小的顺序依次存放,或者按对象的标识值的预设函数的方式设置。
如表1所示,对象属性包括以下项:对象类型、上下文、对象类引用、对象类所在包、数组长度、组件对象类引用、组件对象类所在包、地址。其中各项的排列顺序可以是但不限于表1所示的顺序。
表1
一般对象中ObjectType、Context、ObjClassRef、ObjClasspkg、addr,5个属性项有效。简单数组对象中ObjectType、Context、ObjClassRef、ObjClasspkg、NumFields、addr6个属性项有效。对象数组对象中ObjectType、Context、ObjClassRef、ObjClasspkg、NumFields、ComponentClassClassRec、ComponentClassClasspkg、addr8个属性项有效。
不同对象的对象属性的长度相同即对象属性的长度固定,地址项的长度为2字节时,对象属性的长度为13字节;地址项的长度为4字节时,对象属性的长度为15字节。
智能卡包括中心控制模块和存储模块。
中心控制模块,用于设置各对象的对象属性的长度相同,在对象属性里设置用于指示对象内容数据地址的地址项,按照对象的标识在所述存储模块依次存放对象;还用于根据对象的标识和对象属性的长度查找待访问对象的对象属性的存储位置并在所述存储位置访问此对象属性,或者还包括从此对象属性的地址项获知对象内容数据地址并在此对象内容数据地址访问数据。
存储模块,用于存储对象属性和对象内容数据。
中心控制模块可以将对象属性和对象数据分开存放。对象属性区只用于存放对象属性,对象数据区只用于存放对象数据。
中心控制模块可以按照对象的标识依次存放对象是指按照对象的标识值从小到大的顺序依次存放,如图2所示,存在N个对象时,对象标识依次为0,1,2,3……N,按照对象标识0,1,2,3……N的顺序依次存放,N为大于零的整数。访问对象属性时,计算对象的标识和对象属性长度的乘积即可定位待访问对象的对象属性。当然本方法中不限于上述按照对象的标识值从小到大的顺序依次存放的方式,还可以是按照对象的标识值从大到小的顺序依次存放,或者按对象的标识值的预设函数的方式设置。
如表1所示,对象属性包括以下项:对象类型、上下文、对象类引用、对象类所在包、数组长度、组件对象类引用、组件对象类所在包、地址。其中各项的排列顺序可以是但不限于表1所示的顺序。
一般对象中ObjectType、Context、ObjClassRef、ObjClasspkg、addr,5个属性项有效。简单数组对象中ObjectType、Context、ObjClassRef、ObjClasspkg、NumFields、addr6个属性项有效。对象数组对象中ObjectType、Context、ObjClassRef、ObjClasspkg、NumFields、ComponentClassClassRec、ComponentClassClasspkg、addr8个属性项有效。
不同对象的对象属性的长度相同即对象属性的长度固定,地址项的长度为2字节时,对象属性的长度为13字节;地址项的长度为4字节时,对象属性的长度为15字节。
本发明可以达到执行1次定位操作即可完成对对象属性的访问,执行2次定位操作即可完成对对象数据的访问,而传统二级表方式中无论访问对象属性还是对象数据都需要3次定位操作才能完成,所以相比传统方法本发明大幅提高了对智能卡对象的访问效率,也大幅提高了智能卡的性能。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。