CN112559203A - 一种实现业务层与so库进行数据交换的方法与装置 - Google Patents
一种实现业务层与so库进行数据交换的方法与装置 Download PDFInfo
- Publication number
- CN112559203A CN112559203A CN202011434701.8A CN202011434701A CN112559203A CN 112559203 A CN112559203 A CN 112559203A CN 202011434701 A CN202011434701 A CN 202011434701A CN 112559203 A CN112559203 A CN 112559203A
- Authority
- CN
- China
- Prior art keywords
- memory block
- dynamic memory
- external
- service
- address
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000015654 memory Effects 0.000 claims abstract description 475
- 230000008859 change Effects 0.000 claims abstract description 13
- 238000012544 monitoring process Methods 0.000 claims description 24
- 230000005540 biological transmission Effects 0.000 abstract description 9
- 238000004891 communication Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 9
- 238000012806 monitoring device Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000005291 magnetic effect Effects 0.000 description 7
- 238000004806 packaging method and process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006378 damage Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请的目的是提供一种实现业务层与so库进行数据交换的方法与装置,该方法包括:申请一堆外固定内存块,调用对应的so库的Jni接口,将该堆外固定内存块的地址传递至该so库;申请一堆外动态内存块,将与该so库约定的业务数据写入该堆外动态内存块中,并将该堆外动态内存块的地址写入堆外固定内存块中;当监测到堆外固定内存块的内容发生变化,从中解析出堆外动态内存块的地址,该堆外动态内存块已由so库更改;读取堆外动态内存块中的内容,其为由so库执行业务所得到的业务结果;销毁堆外动态内存块。通过共享内存来完成数据的交换和传递,不暴露数据传递接口,能很好地保障数据的安全性。
Description
技术领域
本申请涉及通信领域,尤其涉及一种实现业务层与so(shared object,共享对象)库进行数据交换的技术。
背景技术
应用开发中使用到Jni(Java Native Interface)接口调用so库,目前业界一般都是定义Jni接口,通过接口参数或者返回值传递数据,这些传递的参数很容易被反编译查看接口后动态断点调试抓取到传递的数据,存在巨大的安全隐患。
发明内容
本申请的一个目的是提供一种实现业务层与so库进行数据交换的方法与装置。
根据本申请的一个方面,提供了一种在业务层中实现与so库进行数据交换的方法,其中,所述方法包括:
申请一堆外固定内存块,调用对应的so库的Jni接口,将所述堆外固定内存块的地址传递至所述so库;
申请一堆外动态内存块,将与所述so库约定的业务数据写入所述堆外动态内存块中,并将所述堆外动态内存块的地址写入所述堆外固定内存块中;
当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出所述堆外动态内存块的地址,其中,所述堆外动态内存块已由所述so库更改;
根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,其中,所述业务类型和数据为由所述so库执行对应业务所得到的业务结果;
销毁所述堆外动态内存块。
根据本申请的另一个方面,还提供了一种在so库中实现与业务层进行数据交换的方法,其中,该方法包括:
接收对应的业务层通过调用Jni接口所传递的堆外固定内存块的地址;
当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出对应的堆外动态内存块的地址;
根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,执行业务得到对应的业务结果;
销毁所述堆外动态内存块,并重新申请一个新的堆外动态内存块;
将所述业务结果写入所述新的堆外动态内存块,将所述新的堆外动态内存块的地址写入所述堆外固定内存块。
根据本申请的另一个方面,还提供了一种在业务层中实现与so库进行数据交换的装置,其中,所述装置包括:
第一申请装置,用于申请一堆外固定内存块,调用对应的so库的Jni接口,将所述堆外固定内存块的地址传递至所述so库;
第二申请装置,用于申请一堆外动态内存块,将与所述so库约定的业务数据写入所述堆外动态内存块中,并将所述堆外动态内存块的地址写入所述堆外固定内存块中;
第一解析装置,用于当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出所述堆外动态内存块的地址,其中,所述堆外动态内存块已由所述so库更改;
第一读取装置,用于根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,其中,所述业务类型和数据为由所述so库执行对应业务所得到的业务结果;
销毁装置,用于销毁所述堆外动态内存块。
根据本申请的另一个方面,还提供了一种在so库中实现与业务层进行数据交换的装置,其中,该装置包括:
接收装置,用于接收对应的业务层通过调用Jni接口所传递的堆外固定内存块的地址;
第二解析装置,用于当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出对应的堆外动态内存块的地址;
第二读取装置,用于根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,执行业务得到对应的业务结果;
第三申请装置,用于销毁所述堆外动态内存块,并重新申请一个新的堆外动态内存块;
写入装置,用于将所述业务结果写入所述新的堆外动态内存块,将所述新的堆外动态内存块的地址写入所述堆外固定内存块。
根据本申请的另一个方面,还提供了一种实现与业务层进行数据交换的设备,其中,所述设备包括:
处理器,以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如上任一项所述的方法。
根据本申请的另一个方面,还提供了一种存储指令的计算机可读介质,所述指令在被计算机执行时使得所述计算机进行如上任一项所述方法的操作。
与现有技术相比,本申请提供了一种业务层与so库之间的数据交换的方法,通过共享内存来完成数据的交换和传递,不暴露数据传递接口,能很好地保障数据的安全性。进一步地,通过定义固定内存协议头和动态内存协议头,使得业务层和so库在内存中进行特定格式的数据交换,进一步保障了数据的安全性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个实施例的一种在业务层中实现与so库进行数据交换的方法流程图;
图2示出根据本申请一个实施例的一种在so库中实现与业务层进行数据交换的方法流程图;
图3示出根据本申请一个实施例的一种在业务层中实现与so库进行数据交换的装置结构图;
图4示出根据本申请一个实施例的一种在so库中实现与业务层进行数据交换的装置结构图;
图5示出根据本申请一个实施例的业务层和so库交互来进行数据交换的流程示意图;
图6示出可被用于实施本申请中所述的各个实施例的示例性系统。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(例如,中央处理器(Central Processing Unit,CPU))、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read OnlyMemory,ROM)或闪存(Flash Memory)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-Change Memory,PCM)、可编程随机存取存储器(Programmable Random Access Memory,PRAM)、静态随机存取存储器(Static Random-Access Memory,SRAM)、动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Versatile Disc,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请所指设备包括但不限于用户设备、网络设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备包括但不限于任何一种可与用户进行人机交互(例如通过触摸板进行人机交互)的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作系统,如Android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、数字信号处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述网络设备包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,所述设备还可以是运行于所述用户设备、网络设备、或用户设备与网络设备、网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的程序。
当然,本领域技术人员应能理解上述设备仅为举例,其他现有的或今后可能出现的设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
在本申请的描述中,“多个”的含义是两个或者更多,除非另有明确具体的限定。
图1示出了根据本申请一个实施例的一种在业务层中实现与so库进行数据交换的方法流程图,该方法包括步骤S11、步骤S12、步骤S13、步骤S14、步骤S15。在步骤S11中,业务层申请一堆外固定内存块,调用对应的so库的Jni接口,将所述堆外固定内存块的地址传递至所述so库;在步骤S12中,业务层申请一堆外动态内存块,将与所述so库约定的业务数据写入所述堆外动态内存块中,并将所述堆外动态内存块的地址写入所述堆外固定内存块中;在步骤S13中,业务层当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出所述堆外动态内存块的地址,其中,所述堆外动态内存块已由所述so库更改;在步骤S14中,业务层根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,其中,所述业务类型和数据为由所述so库执行对应业务所得到的业务结果;在步骤S15中,业务层销毁所述堆外动态内存块。
在步骤S11中,当应用,例如安卓应用,需要NDK(Native Development Kit)的so库支撑时,业务层申请一堆外固定内存块,并调用对应的so库的Jni接口,将该堆外固定内存块的地址传递至该so库。该堆外固定内存块的大小例如可以是12个字节,其中,4个字节存放标识,8个字节存放堆外动态内存块的地址,该堆外动态内存块将在下文中进行详细描述。该so库编写一个Jni接口,参数为长整型,用来传递该堆外固定内存块的地址。
本领域技术人员应能理解,上述堆外固定内存块的大小和存放的内容仅为举例,而不应视为对本实施例的限制,其他现有或今后可能出现的堆外固定内存块的大小和存放的内容如可适用于本实施例,也应包含在本实施例保护范围以内,并在此以引用方式包含于此。
在步骤S12中,当该应用的上层业务需要对应的so库进行处理的时候,业务层申请一堆外动态内存块,将与该so库约定的业务数据写入所述堆外动态内存块中。例如,业务层需要该so库对一业务数据进行加密,则当有该业务需求时,业务层申请一堆外动态内存块,并将该待加密的业务数据写入该堆外动态内存块中,随后,将该堆外动态内存块的地址写入在步骤S11中所申请的堆外固定内存块中。
在一些实施例中,在该步骤S12中,业务层根据动态内存协议头封装所述与so库约定的业务数据,并将封装后的业务数据写入所述堆外动态内存块中;根据固定内存协议头封装所述堆外动态内存块的地址,将封装后的所述堆外动态内存块的地址写入所述堆外固定内存块中。
在此,定义一动态内存协议头,业务层根据该动态内存协议头来封装与so库约定的业务数据,再将封装后的业务数据写入堆外动态内存块中,这样,当后续需要从该堆外动态内存块中读取并解析业务数据,也可按照该动态内存协议头来进行。
在此,定义一固定内存协议头,业务层根据该固定内存协议头来封装该动态内存块的地址,将封装后的地址写入堆外固定内存块中,这样,当后续需要从该堆外固定内存块中读取并解析该动态内存块的地址时,也可按照该固定内存协议头来进行。
在一些实施例中,所述动态内存协议头包括预定字节的任务索引、预定字节的任务类型、预定字节的数据结构个数和预定字节的业务数据内容;所述固定内存协议头包括预定字节的标识位和预定字节的内存地址。
例如,该动态内存协议头包括4个字节的任务索引、4个字节的任务类型、4个字节的数据结构个数以及若干字节的业务数据二进制内容。该固定内存协议头包括4个字节的标识位和8个字节的内存地址。
在一些实施例中,该动态内存协议头中包括的业务数据内容包括若干份如下内容:预定字节的业务长度值、预定字节的数据类型以及若干字节的业务内容。例如,该业务数据内容包括4个字节的业务数据长度值、2个字节的数据类型以及若干字节的业务内容。或者,该业务数据内容可以包括多种业务数据,一个例子如,该业务数据内容包括:4个字节的业务数据长度值+2个字节的数据类型+N1个字节的业务内容4个字节的业务数据长度值+2个字节的数据类型+N2个字节的业务内容+…+4个字节的业务数据长度值+2个字节的数据类型+Nx个字节的业务内容。
本领域技术人员应能理解,上述动态内存协议头和固定内存协议头仅为举例,而不应视为对本实施例的限制,其他现有或今后可能出现的动态内存协议头和固定内存协议头如可适用于本实施例,也应包含在本实施例保护范围以内,并在此以引用方式包含于此。
在步骤S13中,业务层当监测到该堆外固定内存块的内容发生变化,表示其中所存储的堆外动态内存块的地址发生了变化,因此,该业务层自该堆外固定内存块中解析出该堆外动态内存块的地址,例如,根据前述固定内存协议头,从堆外固定内存块中解析堆外动态内存块的地址,其中,该堆外动态内存块已由该so库更改。在此,so库执行业务得到对应的业务结果之后,销毁掉原来的堆外动态内存块,并重新申请一个新的堆外动态内存块,将该业务结果写入该新的堆外动态内存块,并将该新的堆外动态内存块的地址写入该堆外固定内存块中,因此,在步骤S13中,业务层可以监测到该堆外固定内存块的内容发生了变化,从中解析新的堆外动态内存块。
在一些实施例中,当业务层申请该堆外固定内存块之后,为该堆外固定内存块赋初始值;随后,该业务层开启监控线程监视该堆外固定内存块内的数据跟该初始值比较是否发生了变化。
在此,业务层在申请堆外固定内存块之后即为该堆外固定内存块赋初始值,以便于后续判断该堆外固定内存块是否发生了变化,当该业务层有业务数据需要发送至对应的so库进行处理时,即可开启监控线程对该堆外固定内存块进行监视,由于so库在完成对业务数据的处理之后会更新堆外动态内存块,并随即更新该堆外固定内存块,因此,业务层需要开启监控线程来监视该堆外固定内存块内的数据跟该初始值比较是否发生了变化。当然,在该业务层下一次有业务数据发送至so库进行处理时,该监控线程所监控的是该堆外固定内存块内的数据与上一次数据相比是否发生了变化。该监控线程可以是始终保持开启状态的,其可以在该堆外固定内存块被申请成功之后即被开启,也可以是当业务层有业务发送至so库处理之后再进行开启。
在步骤S14中,业务层根据在步骤S13中所解析出的该堆外动态内存块的地址,读取该堆外动态内存块中的内容,根据预定协议,例如根据前述动态内存协议头,解析出业务类型和数据,其中,所述业务类型和数据为由所述so库执行对应业务所得到的业务结果。接前述对步骤S13的描述,so库执行业务得到对应的业务结果之后,销毁掉原来的堆外动态内存块,并重新申请一个新的堆外动态内存块,将该业务结果写入该新的堆外动态内存块,并将该新的堆外动态内存块的地址写入该堆外固定内存块中,因此,在步骤S13中,业务层可以监测到该堆外固定内存块的内容发生了变化,从中解析新的堆外动态内存块,在步骤S14中,业务层再从该新的堆外动态内存块中读取内容,并从中解析出业务类型和数据,该业务类型和数据即是该so库执行业务得到的业务结果。
在步骤S15中,当业务层得到解析的业务类型和数据,也即,得到该so库执行对应业务所得到的业务结果后,标志一次业务完整结束,该业务层销毁掉该堆外动态内存块。
上述实施例通过共享内存来完成业务层与so库之间数据的交换和传递,不暴露数据传递接口,能很好地保障数据的安全性。进一步地,通过定义固定内存协议头和动态内存协议头,使得业务层和so库在内存中进行特定格式的数据交换,进一步保障了数据的安全性。
在一优选实施例中,当有新的业务时,业务层重新申请一新的堆外动态内存块,并重复执行前述步骤S12至步骤S15的操作。
在此,由于业务层已经申请了堆外固定内存块,并且将该堆外固定内存块的地址通过调用Jni接口传递至了so库,因此,当有新的业务时,业务层无需再重新申请一新的堆外固定内存块。而由于上一次业务完整结束后,业务层已经销毁了堆外动态内存块,因此,在此次有新的业务时,业务层需要重新申请一新的堆外动态内存块,并将此次的业务数据写入该堆外动态内存块中,再并将该堆外动态内存块的地址写入该堆外固定内存块中。随后,so库监测到堆外固定内存块的内容发生了变化,从中解析出此次新的堆外动态内存块的地址,再从该新的堆外动态内存块中解析出此次的业务数据,执行业务并得到业务结果,再重新申请一个新的堆外动态内存块且销毁之前的堆外动态内存块;接着,so库将业务结果写入该so库申请的新的堆外动态内存块,将该新的堆外动态内存块的地址写入堆外固定内存块。随后,业务层监测到堆外固定内存块的内容发生变化,再自该堆外固定内存块中解析出已由该so库更改的堆外动态内存块的地址,根据该堆外动态内存块的地址,读取该堆外动态内存块中的该so库的业务结果;又一次业务完整结束,业务层再一次销毁该堆外动态内存块。
图2示出了根据本申请一个实施例的一种在so库中实现与业务层进行数据交换的方法流程图,该方法包括步骤S21、步骤S22、步骤S23、步骤S24、步骤S25。在步骤S21中,so库接收对应的业务层通过调用Jni接口所传递的堆外固定内存块的地址;在步骤S22中,so库当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出对应的堆外动态内存块的地址;在步骤S23中,so库根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,执行业务得到对应的业务结果;在步骤S24中,so库销毁所述堆外动态内存块,并重新申请一个新的堆外动态内存块;在步骤S25中,so库将所述业务结果写入所述新的堆外动态内存块,将所述新的堆外动态内存块的地址写入所述堆外固定内存块。
在步骤S21中,当应用,例如安卓应用,需要NDK(Native Development Kit)的so库支撑时,业务层申请一堆外固定内存块,并调用对应的so库的Jni接口,将该堆外固定内存块的地址传递至该so库,so库接收对应的业务层通过调用Jni接口所传递的堆外固定内存块的地址。
在一些实施例中,该so库编写一个Jni接口,该Jni接口的参数为长整型,用来传递该堆外固定内存块的地址。
在步骤S22中,由于对应的业务层申请了一堆外动态内存块并将该堆外动态内存块的地址封装并写入了该堆外固定内存块中,因此,so库可以监测到该堆外固定内存块的内容发生了变化,当该so库监测到该变化,自该堆外固定内存块中解析出对应的堆外动态内存块的地址。在此,封装以及解析所依照的固定内存协议头和动态内存协议头可参考前述实施例对此的描述。
在一些实施例中,so库开启监控线程来监视该堆外固定内存块内的数据是否发生变化。该so库可以在接收到堆外固定内存块的地址之后,即开启一监控线程,来监视该堆外固定内存块的变化。
在步骤S23中,so库根据该堆外动态内存块的地址,读取该堆外动态内存块中的内容,根据预定协议,例如,如前所述的动态内存协议头,解析出业务类型和数据,随后,so库再根据该业务类型和数据,执行对应的业务得到业务结果。
在步骤S24中,so库销毁当前的堆外动态内存块,并重新申请一个新的堆外动态内存块,使两者命名相同。
在步骤S25中,so库将在步骤S23中执行业务所得到的业务结果写入该新的堆外动态内存块,将该新的堆外动态内存块的地址写入堆外固定内存块。对应地,业务层监测到堆外固定内存块的内容发生了变化,自该堆外固定内存块中解析出由该so库重新申请的堆外动态内存块的地址,根据该新的堆外动态内存块的地址,读取该新的堆外动态内存块中的该so库的业务结果,表示一次业务完整结束,业务层销毁该堆外动态内存块。
在一些实施例中,在该步骤S25中,so库根据动态内存协议头封装执行业务所得到的业务结果,将封装后的业务结果写入该新的堆外动态内存块;根据固定内存协议头封装该新的堆外动态内存块的地址,将封装后的新的堆外动态内存块的地址写入所述堆外固定内存块中。
此处的动态内存协议头和固定内存协议头与前述实施例中的动态内存协议头和固定内存协议头相同或基本相同,故此处不再赘述,并通过引用的方式包含于此。
一个业务层和so库交互来进行数据交换的实施例如图5所示:
so库业务编写之后,该so库编写一个Jni接口initJni(long),即,该Jni接口的参数为长整型,在该参数中存放安卓业务层即将发送过来的堆外固定内存块的地址;
安卓层业务编写之后,当安卓应用需要so库支撑时,业务层申请一个12个字节的堆外固定内存块,为该堆外固定内存块赋初始值,并调用对应的so库的Jni接口,将该堆外固定内存块的地址传递至该so库;
当安卓应用的上层业务需要so库进行处理的时候,申请一堆外动态内存块,根据动态内存协议头封装跟so库约定的业务数据,并将该封装后的业务数据写入到堆外动态内存块中,同时根据固定内存协议头封装数据,将该堆外动态内存块的地址写入到堆外固定内存块中;
业务层开启监控线程,监视堆外动态内存块中的内容,跟初始值或者前述封装的堆外动态内存块的地址进行比较;
对应地,so库接收到该堆外固定内存块的地址后,开启监控线程监视该堆外动态内存块内的数据跟初始值比较是否有变化;
当so库中的监控线程监视到堆外动态内存块中的内容发生了变化,根据固定内存协议头的定义自堆外固定内存块中读取堆外动态内存块的地址;
so库根据该地址访问堆外动态内存块,读取其中的二进制数据,并根据动态内存协议头解析出业务类型和数据,根据业务约定执行对应的业务操作,得到业务结果;
so库执行完业务操作后,销毁当前的堆外动态内存块,并重新申请一新的堆外动态内存块,保持其命名相同,再将业务结果按照动态内存协议头进行封装,写入该新的堆外动态内存块中;
so库再根据固定内存协议头将新的堆外动态内存块的地址封装后写入堆外固定内存块中;
对应地,当业务层中的监控线程监视到堆外固定内存块中的内容发生变化,根据固定内存协议头的定义读取新的堆外动态内存块的地址;
业务层读取堆外动态内存块中的二进制数据,并根据动态内存协议头的定义解析业务类型和数据;
业务层得到解析的业务类型和数据后,标志一次业务完整结束,销毁掉该堆外动态内存块。
在此,该图5中所记载的内存块1、堆外内存块1等术语即指堆外固定内存块,所记载的内存块2、动态内存2等术语即指堆外动态内存块。
图3示出根据本申请一个实施例的一种在业务层中实现与so库进行数据交换的装置结构图,装置1位于业务层中,其包括第一申请装置31、第二申请装置32、第一解析装置33、第一读取装置34和销毁装置35。第一申请装置31申请一堆外固定内存块,调用对应的so库的Jni接口,将所述堆外固定内存块的地址传递至所述so库;第二申请装置32申请一堆外动态内存块,将与所述so库约定的业务数据写入所述堆外动态内存块中,并将所述堆外动态内存块的地址写入所述堆外固定内存块中;第一解析装置33当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出所述堆外动态内存块的地址,其中,所述堆外动态内存块已由所述so库更改;第一读取装置34根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,其中,所述业务类型和数据为由所述so库执行对应业务所得到的业务结果;销毁装置35销毁所述堆外动态内存块。在此,所述图3示出的第一申请装置31、第二申请装置32、第一解析装置33、第一读取装置34和销毁装置35对应的具体实施方式分别与前述步骤S11、步骤S12、步骤S13、步骤S14和步骤S15的具体实施例相同或相近,故不再赘述,以引用方式包含于此。
在一些实施例中,当第二申请装置32申请该堆外固定内存块之后,第二申请装置32为该堆外固定内存块赋初始值;该装置1还包括第一监控装置(未示出)。该第一监控装置开启监控线程监视该堆外固定内存块内的数据跟该初始值比较是否发生了变化。
在此,第二申请装置32在申请堆外固定内存块之后即为该堆外固定内存块赋初始值,以便于后续判断该堆外固定内存块是否发生了变化,当该业务层有业务数据需要发送至对应的so库进行处理时,第一监控装置即可开启监控线程对该堆外固定内存块进行监视,由于so库在完成对业务数据的处理之后会更新堆外动态内存块,并随即更新该堆外固定内存块,因此,业务层中的第一监控装置需要开启监控线程来监视该堆外固定内存块内的数据跟该初始值比较是否发生了变化。当然,在该业务层下一次有业务数据发送至so库进行处理时,该监控线程所监控的是该堆外固定内存块内的数据与上一次数据相比是否发生了变化。该监控线程可以是始终保持开启状态的,其可以在该堆外固定内存块被申请成功之后即被第一监控装置开启,也可以是当业务层有业务发送至so库处理之后再由第一监控装置进行开启。
在一些实施例中,第二申请装置32还包括第一封装单元(未示出)和第二封装单元(未示出)。第一封装单元根据动态内存协议头封装所述与so库约定的业务数据,并将封装后的业务数据写入所述堆外动态内存块中;第二封装单元根据固定内存协议头封装所述堆外动态内存块的地址,将封装后的所述堆外动态内存块的地址写入所述堆外固定内存块中。
在此,定义一动态内存协议头,第一封装单元根据该动态内存协议头来封装与so库约定的业务数据,再将封装后的业务数据写入堆外动态内存块中,这样,当后续需要从该堆外动态内存块中读取并解析业务数据,也可按照该动态内存协议头来进行。
在此,定义一固定内存协议头,第二封装单元根据该固定内存协议头来封装该动态内存块的地址,将封装后的地址写入堆外固定内存块中,这样,当后续需要从该堆外固定内存块中读取并解析该动态内存块的地址时,也可按照该固定内存协议头来进行。
此处的动态内存协议头和固定内存协议头与前述实施例中的动态内存协议头和固定内存协议头相同或基本相同,故此处不再赘述,并通过引用的方式包含于此。
在一优选实施例中,该装置1还包括调用装置(未示出)。该调用装置当有新的业务时,重新申请一新的堆外动态内存块,并调用前述第二申请装置32、第一解析装置33、第一读取装置34和销毁装置35重复执行其操作。
在此,由于业务层的第一申请装置31已经申请了堆外固定内存块,并且将该堆外固定内存块的地址通过调用Jni接口传递至了so库,因此,当有新的业务时,业务层无需再重新申请一新的堆外固定内存块。而由于上一次业务完整结束后,业务层的销毁装置35已经销毁了堆外动态内存块,因此,在此次有新的业务时,业务层的第二申请装置32需要重新申请一新的堆外动态内存块,并将此次的业务数据写入该堆外动态内存块中,再并将该堆外动态内存块的地址写入该堆外固定内存块中。随后,so库监测到堆外固定内存块的内容发生了变化,从中解析出此次新的堆外动态内存块的地址,再从该新的堆外动态内存块中解析出此次的业务数据,执行业务并得到业务结果,再重新申请一个新的堆外动态内存块且销毁之前的堆外动态内存块;接着,so库将业务结果写入该so库申请的新的堆外动态内存块,将该新的堆外动态内存块的地址写入堆外固定内存块。随后,业务层的第一监控装置监测到堆外固定内存块的内容发生变化,第一解析装置33自该堆外固定内存块中解析出已由该so库更改的堆外动态内存块的地址,第一读取装置34根据该堆外动态内存块的地址,读取该堆外动态内存块中的该so库的业务结果;又一次业务完整结束,业务层的销毁装置35再一次销毁该堆外动态内存块。
图4示出根据本申请一个实施例的一种在so库中实现与业务层进行数据交换的装置结构图;装置2位于so库中,其包括接收装置41、第二解析装置42、第二读取装置43、第三申请装置44和写入装置45。接收装置41接收对应的业务层通过调用Jni接口所传递的堆外固定内存块的地址;第二解析装置42当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出对应的堆外动态内存块的地址;第二读取装置43根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,执行业务得到对应的业务结果;第三申请装置44销毁所述堆外动态内存块,并重新申请一个新的堆外动态内存块;写入装置45将所述业务结果写入所述新的堆外动态内存块,将所述新的堆外动态内存块的地址写入所述堆外固定内存块。在此,所述图4示出的接收装置41、第二解析装置42、第二读取装置43、第三申请装置44和写入装置45对应的具体实施方式分别与前述步骤S21、步骤S22、步骤S23、步骤S24和步骤S25的具体实施例相同或相近,故不再赘述,以引用方式包含于此。
在一些实施例中,该装置2还包括编写装置(未示出),该编写装置编写一Jni接口,该Jni接口的参数为长整型,用来传递该堆外固定内存块的地址。
在一些实施例中,该装置2还包括第二监控装置(未示出)。该第二监控装置开启监控线程监视所述堆外固定内存块内的数据是否发生变化。该第二监控装置可以在so库接收到堆外固定内存块的地址之后,即开启一监控线程,来监视该堆外固定内存块的变化。
在一些实施例中,该写入装置45还包括第三封装单元(未示出)和第四封装单元(未示出)。第三封装单元根据动态内存协议头封装执行业务所得到的业务结果,将封装后的业务结果写入该新的堆外动态内存块;第二封装单元根据固定内存协议头封装该新的堆外动态内存块的地址,将封装后的新的堆外动态内存块的地址写入所述堆外固定内存块中。
此处的动态内存协议头和固定内存协议头与前述实施例中的动态内存协议头和固定内存协议头相同或基本相同,故此处不再赘述,并通过引用的方式包含于此。
图6示出了可被用于实施本申请中所述的各个实施例的示例性系统;
如图6所示在一些实施例中,系统300能够作为各所述实施例中的任意一个设备。在一些实施例中,系统300可包括具有指令的一个或多个计算机可读介质(例如,系统存储器或NVM/存储设备320)以及与该一个或多个计算机可读介质耦合并被配置为执行指令以实现模块从而执行本申请中所述的动作的一个或多个处理器(例如,(一个或多个)处理器305)。
对于一个实施例,系统控制模块310可包括任意适当的接口控制器,以向(一个或多个)处理器305中的至少一个和/或与系统控制模块310通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块310可包括存储器控制器模块330,以向系统存储器315提供接口。存储器控制器模块330可以是硬件模块、软件模块和/或固件模块。
系统存储器315可被用于例如为系统300加载和存储数据和/或指令。对于一个实施例,系统存储器315可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器315可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块310可包括一个或多个输入/输出(I/O)控制器,以向NVM/存储设备320及(一个或多个)通信接口325提供接口。
例如,NVM/存储设备320可被用于存储数据和/或指令。NVM/存储设备320可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备320可包括在物理上作为系统300被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备320可通过网络经由(一个或多个)通信接口325进行访问。
(一个或多个)通信接口325可为系统300提供接口以通过一个或多个网络和/或与任意其他适当的设备通信。系统300可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信。
对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器(例如,存储器控制器模块330)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器305中的至少一个可与系统控制模块310的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统300可以但不限于是:服务器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统300可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统300包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
除上述各实施例介绍的方法和设备外,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。本领域技术人员应能理解,计算机程序指令在计算机可读介质中的存在形式包括但不限于源文件、可执行文件、安装包文件等,相应地,计算机程序指令被计算机执行的方式包括但不限于:该计算机直接执行该指令,或者该计算机编译该指令后再执行对应的编译后程序,或者该计算机读取并执行该指令,或者该计算机读取并安装该指令后再执行对应的安装后程序。在此,计算机可读介质可以是可供计算机访问的任意可用的计算机可读存储介质或通信介质。
通信介质包括藉此包含例如计算机可读指令、数据结构、程序模块或其他数据的通信信号被从一个系统传送到另一系统的介质。通信介质可包括有导的传输介质(诸如电缆和线(例如,光纤、同轴等))和能传播能量波的无线(未有导的传输)介质,诸如声音、电磁、RF、微波和红外。计算机可读指令、数据结构、程序模块或其他数据可被体现为例如无线介质(诸如载波或诸如被体现为扩展频谱技术的一部分的类似机制)中的已调制数据信号。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被更改或设定的信号。调制可以是模拟的、数字的或混合调制技术。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。例如,计算机可读存储介质包括,但不限于,易失性存储器,诸如随机存储器(RAM,DRAM,SRAM);以及非易失性存储器,诸如闪存、各种只读存储器(ROM,PROM,EPROM,EEPROM)、磁性和铁磁/铁电存储器(MRAM,FeRAM);以及磁性和光学存储设备(硬盘、磁带、CD、DVD);或其它现在已知的介质或今后开发的能够存储供计算机系统使用的计算机可读信息/数据。
在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (15)
1.一种在业务层中实现与so库进行数据交换的方法,其中,所述方法包括:
申请一堆外固定内存块,调用对应的so库的Jni接口,将所述堆外固定内存块的地址传递至所述so库;
申请一堆外动态内存块,将与所述so库约定的业务数据写入所述堆外动态内存块中,并将所述堆外动态内存块的地址写入所述堆外固定内存块中;
当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出所述堆外动态内存块的地址,其中,所述堆外动态内存块已由所述so库更改;
根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,其中,所述业务类型和数据为由所述so库执行对应业务所得到的业务结果;
销毁所述堆外动态内存块。
2.根据权利要求1所述的方法,其中,所述申请一堆外固定内存块还包括:
为所述堆外固定内存块赋初始值;
其中,该方法在当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出所述堆外动态内存块的地址,其中,所述堆外动态内存块已由所述so库更改之前还包括:
开启监控线程监视所述堆外固定内存块内的数据跟所述初始值比较是否发生变化。
3.根据权利要求1或2所述的方法,其中,所述申请一堆外动态内存块,将与所述so库约定的业务数据写入所述堆外动态内存块中,并将所述堆外动态内存块的地址写入所述堆外固定内存块中还包括:
根据动态内存协议头封装所述与so库约定的业务数据,并将封装后的业务数据写入所述堆外动态内存块中;
根据固定内存协议头封装所述堆外动态内存块的地址,将封装后的所述堆外动态内存块的地址写入所述堆外固定内存块中。
4.根据权利要求3所述的方法,其中,所述动态内存协议头包括预定字节的任务索引、预定字节的任务类型、预定字节的数据结构个数和若干字节的业务数据内容;所述固定内存协议头包括预定字节的标识位和预定字节的内存地址。
5.根据权利要求4所述的方法,其中,所述业务数据内容包括若干份如下内容:预定字节的业务长度值、预定字节的数据类型以及若干字节的业务内容。
6.根据权利要求1所述的方法,其中,该方法还包括:
当有新的业务时,重新申请一新的堆外动态内存块,并重复执行以下操作:
申请一堆外动态内存块,将与所述so库约定的业务数据写入所述堆外动态内存块中,并将所述堆外动态内存块的地址写入所述堆外固定内存块中;当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出所述堆外动态内存块的地址,其中,所述堆外动态内存块已由所述so库更改;根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,其中,所述业务类型和数据为由所述so库执行对应业务所得到的业务结果;销毁所述堆外动态内存块。
7.一种在so库中实现与业务层进行数据交换的方法,其中,该方法包括:
接收对应的业务层通过调用Jni接口所传递的堆外固定内存块的地址;
当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出对应的堆外动态内存块的地址;
根据所述堆外动态内存块的地址,读取所述堆外动态内存块中的内容,根据预定协议解析出业务类型和数据,执行业务得到对应的业务结果;
销毁所述堆外动态内存块,并重新申请一个新的堆外动态内存块;
将所述业务结果写入所述新的堆外动态内存块,将所述新的堆外动态内存块的地址写入所述堆外固定内存块。
8.根据权利要求7所述的方法,其中,该方法在当监测到所述堆外固定内存块的内容发生变化,自所述堆外固定内存块中解析出对应的堆外动态内存块的地址之前还包括:
开启监控线程监视所述堆外固定内存块内的数据是否发生变化。
9.根据权利要求7或8所述的方法,其中,所述将所述业务结果写入所述新的堆外动态内存块,将所述新的堆外动态内存块的地址写入所述堆外固定内存块包括:
根据动态内存协议头封装所述业务结果,将封装后的所述业务结果写入所述新的堆外动态内存块;
根据固定内存协议头封装所述新的堆外动态内存块的地址,将封装后的所述新的堆外动态内存块的地址写入所述堆外固定内存块中。
10.根据权利要求9所述的方法,其中,所述动态内存协议头包括预定字节的任务索引、预定字节的任务类型、预定字节的数据结构个数和若干字节的业务数据内容;所述固定内存协议头包括预定字节的标识位和预定字节的内存地址。
11.根据权利要求10所述的方法,其中,所述业务数据内容包括若干份如下内容:预定字节的业务长度值、预定字节的数据类型以及若干字节的业务内容。
12.根据权利要求7所述的方法,其中,该方法在所述接收对应的业务层通过调用Jni接口所传递的堆外固定内存块的地址之前还包括:
编写一Jni接口,所述Jni接口的参数为长整型,用来传递所述堆外固定内存块的地址。
13.一种实现与业务层进行数据交换的设备,其中,所述设备包括:
处理器,以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如权利要求1至6中任一项所述的方法。
14.一种实现与业务层进行数据交换的设备,其中,所述设备包括:
处理器,以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如权利要求7至12中任一项所述的方法。
15.一种存储指令的计算机可读介质,所述指令在被计算机执行时使得所述计算机进行如权利要求1至12中任一项所述方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011434701.8A CN112559203B (zh) | 2020-12-10 | 一种实现业务层与so库进行数据交换的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011434701.8A CN112559203B (zh) | 2020-12-10 | 一种实现业务层与so库进行数据交换的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559203A true CN112559203A (zh) | 2021-03-26 |
CN112559203B CN112559203B (zh) | 2024-10-25 |
Family
ID=
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114666420A (zh) * | 2022-03-29 | 2022-06-24 | 浙江大学 | 一种开放式的多通讯协议组件 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5566302A (en) * | 1992-12-21 | 1996-10-15 | Sun Microsystems, Inc. | Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist |
CN102110196A (zh) * | 2009-12-25 | 2011-06-29 | 中国长城计算机深圳股份有限公司 | 并行运行多用户操作系统间的数据安全传输方法及系统 |
CN103716393A (zh) * | 2013-12-27 | 2014-04-09 | 深圳天珑无线科技有限公司 | 资源共享的方法、装置及用于局域网通信的终端 |
CN104318182A (zh) * | 2014-10-29 | 2015-01-28 | 中国科学院信息工程研究所 | 一种基于处理器安全扩展的智能终端隔离系统及方法 |
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
WO2019047745A1 (zh) * | 2017-09-06 | 2019-03-14 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5566302A (en) * | 1992-12-21 | 1996-10-15 | Sun Microsystems, Inc. | Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist |
CN102110196A (zh) * | 2009-12-25 | 2011-06-29 | 中国长城计算机深圳股份有限公司 | 并行运行多用户操作系统间的数据安全传输方法及系统 |
CN103716393A (zh) * | 2013-12-27 | 2014-04-09 | 深圳天珑无线科技有限公司 | 资源共享的方法、装置及用于局域网通信的终端 |
CN104318182A (zh) * | 2014-10-29 | 2015-01-28 | 中国科学院信息工程研究所 | 一种基于处理器安全扩展的智能终端隔离系统及方法 |
WO2019047745A1 (zh) * | 2017-09-06 | 2019-03-14 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
YANN-HANG LEE ET AL.: "Efficient Java Native Interface for Android Based Mobile Devices", 2011IEEE 10TH INTERNATIONAL CONFERENCE ON TRUST, 2 January 2012 (2012-01-02) * |
尤国芳, 王学香, 刘昊: "嵌入式系统中数据同步协议SyncML的研究和实现", 电子器件, no. 01, 26 March 2004 (2004-03-26) * |
许健;于鸿洋;: "一种Linux多线程应用下内存池的设计与实现", 电子技术应用, no. 11, 6 November 2012 (2012-11-06) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114666420A (zh) * | 2022-03-29 | 2022-06-24 | 浙江大学 | 一种开放式的多通讯协议组件 |
CN114666420B (zh) * | 2022-03-29 | 2023-11-14 | 浙江大学 | 一种开放式的多通讯协议组件 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1214322C (zh) | 保护引导块数据和精确地报告引导块内容 | |
CN110765395B (zh) | 一种用于提供小说信息的方法与设备 | |
CN110290557B (zh) | 一种加载应用内页面标签的方法与设备 | |
WO2023109202A1 (zh) | 一种小程序插件调试方法、系统及计算机可读存储介质 | |
CN109992489B (zh) | 一种用于监控用户设备中应用的执行行为的方法与设备 | |
CN114979303B (zh) | 网络数据包的服务质量处理方法、装置、设备和可读介质 | |
CN110286920B (zh) | 一种安装应用的方法与设备 | |
CN106293688B (zh) | 一种网页请求的处理方法、装置和系统 | |
CN113641503B (zh) | 多云多集群的Kubernetes管理系统及方法与设备 | |
CN111182050B (zh) | 一种实现应用与服务器间通信的方法与设备 | |
CN111181864B (zh) | 确定从应用至服务器的链路拥塞状态的方法与设备 | |
CN112559203B (zh) | 一种实现业务层与so库进行数据交换的方法与装置 | |
CN112968899A (zh) | 一种加密通信的方法与设备 | |
CN112559203A (zh) | 一种实现业务层与so库进行数据交换的方法与装置 | |
WO2023124656A1 (zh) | 一种用于存储自定义数据信息的方法与设备 | |
CN112671715B (zh) | 一种用于保障应用的数据安全通信的方法与装置 | |
CN110958315A (zh) | 一种呈现消息通知的方法与设备 | |
CN116192835A (zh) | 预启动执行环境网络数据包查询方法、装置、设备和介质 | |
CN115134325A (zh) | 一种用于信息推送的方法、设备及介质 | |
CN115309657A (zh) | 一种用于提供测试用例的方法、设备、介质及程序产品 | |
CN113099025B (zh) | 一种在社交应用中添加好友的方法与设备 | |
CN110333914B (zh) | 一种用于执行目标操作的方法与设备 | |
CN111680249B (zh) | 一种推送呈现信息的方法与设备 | |
CN112486496B (zh) | 一种用于生成和运行so文件的方法与设备 | |
WO2020221033A1 (zh) | 管理设备对远端存储设备进行管理的方法 |
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 |