Sqlite文件恢復(fù)自增主鍵值的方法及其系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種Sqlite文件恢復(fù)自增主鍵值的方法及其系統(tǒng)。Sql ite文件恢復(fù)自增主鍵值的方法包括以下步驟:第一步,查找刪除單元;根據(jù)SQLite刪除數(shù)據(jù)恢復(fù)原理,找到已經(jīng)被刪除的刪除單元的數(shù)據(jù);第二步,定位到刪除單元的前面或者后面的存在自增長(zhǎng)主鍵的數(shù)據(jù);在刪除單元的前或后去查找含有自增長(zhǎng)主鍵的單元數(shù)據(jù);第三步,恢復(fù)刪除數(shù)據(jù)的自增長(zhǎng)鍵值。本發(fā)明根據(jù)數(shù)據(jù)的存儲(chǔ)位置和上下文的關(guān)系,推斷出刪除數(shù)據(jù)的自增長(zhǎng)主鍵值,由此使得SQLite文件在刪除數(shù)據(jù)之后,能恢復(fù)自增長(zhǎng)主鍵值。為SQLite文件的數(shù)據(jù)恢復(fù)提供了一種可行的方案。
【專(zhuān)利說(shuō)明】
Sq I i te文件恢復(fù)自増主鍵值的方法及其系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及一種數(shù)據(jù)恢復(fù)方法,更具體地說(shuō)是指Sqlite文件恢復(fù)自增主鍵值的 方法及其系統(tǒng)。
【背景技術(shù)】
[0002] SQLite是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它 是化化char地ipp建立的公有領(lǐng)域項(xiàng)目。它是嵌入式的和輕量級(jí)的sql數(shù)據(jù)庫(kù),廣泛用于 包括瀏覽器(支持html5的大部分瀏覽器,ie除外)、ios、amlroid W及4E00些便攜需求 的小型web應(yīng)用系統(tǒng)。
[0003] 自增主鍵:在用sqlite設(shè)計(jì)表時(shí),每個(gè)表都有一個(gè)自己的整形id值作為主鍵,其 實(shí)可W不指定運(yùn)么一個(gè)id值,sqlite內(nèi)部本來(lái)就會(huì)為每個(gè)表加上一個(gè)rowid,運(yùn)個(gè)rowid 可W當(dāng)成一個(gè)隱含的字段使用,但是由sqlite引擎來(lái)維護(hù)的,在3.0 W前rowid是32位的 整數(shù),3.0 W后是64位的整數(shù)。
[0004] Sqlite 中,一個(gè)自增長(zhǎng)字段定義為 INTEGER PRIMARY KEY AUT0INCREMENT,那 么在插入一個(gè)新數(shù)據(jù)時(shí),只需要將運(yùn)個(gè)字段的值指定為NU化,即可由引擎自動(dòng)設(shè)定其 值,引擎會(huì)設(shè)定為最大的rowid+1。當(dāng)然,也可W設(shè)置為非NU化的數(shù)字來(lái)自己指定運(yùn)個(gè) 值,但運(yùn)樣就必須自己小屯、,不要引起沖突。當(dāng)運(yùn)個(gè)rowid的值大于所能表達(dá)的最大值 9223372036854775807 (3. 0及W后版本的rowid最大值)后,rowid的新值會(huì)運(yùn)個(gè)最大數(shù)之 前隨機(jī)找一個(gè)沒(méi)被使用了的值。所W在rowid達(dá)到最大值前,rowid的值是嚴(yán)格單調(diào)增加 的。 陽(yáng)005] INTEGER PRIMARY KEY AUT0INCREMENT自增長(zhǎng)字段的算法與rowid稍微有些不同。
[0006] 第一,在達(dá)到最大值后,rowid會(huì)找已被刪除的字段對(duì)應(yīng)的rowid作為新值,而自 增長(zhǎng)字段則會(huì)丟出一個(gè)SQLITE_即化的錯(cuò)誤。
[0007] 第二,自增長(zhǎng)字段在增加新值時(shí),是找一個(gè)從沒(méi)被使用過(guò)的rowid作為新值,而 rowid則是找最大已存在的rowid+l。運(yùn)里對(duì)應(yīng)用的影響會(huì)比較大,尤其是一些對(duì)id值有 依賴(lài)的元記錄,只適合使用自增長(zhǎng)字段而不能用rowid。如圖1所示。
[0008] SQLite數(shù)據(jù)存儲(chǔ):S化ite數(shù)據(jù)庫(kù)文件由固定大小的"頁(yè)(page)"組成。頁(yè)的大 小可W在512~32768之間(包含運(yùn)兩個(gè)值,必須是2的指數(shù)),默認(rèn)大小為1024個(gè)字節(jié) ακΒ)。頁(yè)大小可W在數(shù)據(jù)庫(kù)剛剛創(chuàng)建時(shí)設(shè)置,一旦創(chuàng)建了數(shù)據(jù)庫(kù)對(duì)象之后,運(yùn)個(gè)值就不能 再改變了。
[0009] 頁(yè)的類(lèi)型可W是:Btree頁(yè)、空閑(free)頁(yè)或溢出(ove;rflow)頁(yè)。Btree又可W 是B-tree或B+tree,每一種樹(shù)的結(jié)點(diǎn)又區(qū)分為內(nèi)部頁(yè)和葉子頁(yè)。一個(gè)數(shù)據(jù)庫(kù)文件中可能沒(méi) 有空閑頁(yè)或溢出頁(yè),但必然有化ree頁(yè)。
[0010] 每個(gè)化ree頁(yè)由四個(gè)部分構(gòu)成:
[0011]
[0012] 首先介紹"單元"的概念:Btree頁(yè)內(nèi)部W單元(cell)為單位來(lái)組織數(shù)據(jù),一個(gè)單 元包含一個(gè)(或部分,當(dāng)使用溢出頁(yè)時(shí))payload (也稱(chēng)為化ree記錄)。由于各類(lèi)數(shù)據(jù)大小 各不相同,每個(gè)單元的大小也就是可變的,所WBtree頁(yè)內(nèi)部的空間需要進(jìn)行動(dòng)態(tài)分配(程 序內(nèi)部動(dòng)態(tài)分配,不是動(dòng)態(tài)申請(qǐng)空間),單元是化ree頁(yè)內(nèi)部進(jìn)行空間分配和回收的基本單 位。
[001引頁(yè)內(nèi)所有單元的內(nèi)容集中在頁(yè)的底部,稱(chēng)為"單元內(nèi)容區(qū)",由下向上增長(zhǎng)。由于單 元的大小可變,因此需要對(duì)每個(gè)單元在頁(yè)內(nèi)的起始位置(稱(chēng)為單元指針)進(jìn)行記錄。單元 指針保存在單元指針數(shù)組中,位于頁(yè)頭之后。單元指針數(shù)組包含0個(gè)或多個(gè)指針,由上向下 增長(zhǎng)。
[0014] 單元指針數(shù)組和單元內(nèi)容區(qū)相向增長(zhǎng),中間部分為未分配空間。系統(tǒng)盡量保證未 分配空間位于最后的指針之后,運(yùn)樣,就很容易增加新的單元,而不需要整理碎片。
[0015] SQLite的單元被刪除的時(shí)候,單元指針值會(huì)被刪除,同時(shí)單元內(nèi)容區(qū)的包含自增 長(zhǎng)主鍵的區(qū)域會(huì)被刪除填零或是填充隨機(jī)數(shù),而單元中的數(shù)據(jù)不會(huì)被刪除。
[0016] 圖2A是一條已存在單元的截圖,其中藍(lán)色線條的區(qū)域時(shí)整個(gè)的單元內(nèi)容,紅色的 框住的區(qū)域時(shí)自增長(zhǎng)主鍵值。
[0017] 圖2B是對(duì)應(yīng)的刪除的單元的數(shù)據(jù),看明顯看見(jiàn)自增長(zhǎng)主鍵不存在了。
【發(fā)明內(nèi)容】
[0018] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺陷,提供Sqlite文件恢復(fù)自增主鍵值的方 法及其系統(tǒng)。
[0019] 為實(shí)現(xiàn)上述目的,本發(fā)明采用W下技術(shù)方案:
[0020] Sqlite文件恢復(fù)自增主鍵值的方法,該方法包括W下步驟:
[0021] 第一步,查找刪除單元;根據(jù)SQLite刪除數(shù)據(jù)恢復(fù)原理,找到已經(jīng)被刪除的刪除 單元的數(shù)據(jù);
[0022] 第二步,定位到刪除單元的前面或者后面的存在自增長(zhǎng)主鍵的數(shù)據(jù);
[0023] 在刪除單元的前或后去查找含有自增長(zhǎng)主鍵的單元數(shù)據(jù);
[0024] 第Ξ步,恢復(fù)刪除數(shù)據(jù)的自增長(zhǎng)鍵值。
[00巧]優(yōu)選地,第Ξ步:如果刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的高地 址位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減一;如果 刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的低地址位置,那么刪除單元的自增長(zhǎng) 主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值加一。
[00%] 優(yōu)選地,第Ξ步:如果刪除單元存儲(chǔ)在高于能正確找回自增長(zhǎng)主鍵值單元的N個(gè) 單元位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減N;如 果刪除單元存儲(chǔ)在低于能正確找回自增長(zhǎng)主鍵值單元的Μ個(gè)單元位置,那么刪除單元的自 增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值加 Μ。
[0027] Sqlite文件恢復(fù)自增主鍵值的系統(tǒng),包括:
[0028] 查找模塊,用于查找刪除單元;根據(jù)SQLite刪除數(shù)據(jù)恢復(fù)原理,找到已經(jīng)被刪除 的刪除單元的數(shù)據(jù);
[0029] 定位模塊,用于定位到刪除單元的前面或者后面的存在自增長(zhǎng)主鍵的數(shù)據(jù);
[0030] 在刪除單元的前或后去查找含有自增長(zhǎng)主鍵的單元數(shù)據(jù);
[0031] 恢復(fù)模塊,用于恢復(fù)刪除數(shù)據(jù)的自增長(zhǎng)鍵值。
[0032] 優(yōu)選地,恢復(fù)模塊工作時(shí):如果刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單 元的高地址位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減 一;如果刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的低地址位置,那么刪除單元 的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值加一。
[0033] 優(yōu)選地,恢復(fù)模塊工作時(shí):如果刪除單元存儲(chǔ)在高于能正確找回自增長(zhǎng)主鍵值單 元的N個(gè)單元位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值 減N ;如果刪除單元存儲(chǔ)在低于能正確找回自增長(zhǎng)主鍵值單元的Μ個(gè)單元位置,那么刪除單 元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值加 Μ。
[0034] 本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:本發(fā)明根據(jù)數(shù)據(jù)的存儲(chǔ)位置和上下文的關(guān) 系,推斷出刪除數(shù)據(jù)的自增長(zhǎng)主鍵值,由此使得SQLite文件在刪除數(shù)據(jù)之后,能恢復(fù)自增 長(zhǎng)主鍵值。為SQLite文件的數(shù)據(jù)恢復(fù)提供了一種可行的方案。
[0035] 下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述。
【附圖說(shuō)明】
[0036] 圖1為現(xiàn)有技術(shù)中的SQLite文件的表格圖;
[0037] 圖2A為現(xiàn)有技術(shù)中的SQLite文件在刪除前的數(shù)據(jù)截圖;
[003引圖2B為圖2A所示數(shù)據(jù)中的第一行被刪除的數(shù)據(jù)截圖;
[0039] 圖3為采用本發(fā)明處理的具體實(shí)施例的Sqlite文件的數(shù)據(jù)截圖;
[0040] 圖4為圖3中的數(shù)據(jù)刪除自增長(zhǎng)字段為05的單元的示意圖;
[0041] 圖5為圖3中的數(shù)據(jù)刪除自增長(zhǎng)字段為05和04的單元的示意圖;
[0042] 圖6為圖3中的數(shù)據(jù)刪除自增長(zhǎng)字段為01的單元的示意圖;
[0043] 圖7為本發(fā)明Sqlite文件恢復(fù)自增主鍵值的系統(tǒng)的具體實(shí)施例方框結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0044] 為了更充分理解本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn) 一步介紹和說(shuō)明,但不局限于此。
[0045] 本發(fā)明Sqlite文件恢復(fù)自增主鍵值的方法,該方法包括W下步驟:
[0046] 第一步,查找刪除單元;根據(jù)SQLite刪除數(shù)據(jù)恢復(fù)原理,找到已經(jīng)被刪除的刪除 單元的數(shù)據(jù);
[0047] 第二步,定位到刪除單元的前面或者后面的存在自增長(zhǎng)主鍵的數(shù)據(jù);
[0048] 在刪除單元的前或后去查找含有自增長(zhǎng)主鍵的單元數(shù)據(jù); W例第立步,恢復(fù)刪除數(shù)據(jù)的自增長(zhǎng)鍵值。
[0050] 第Ξ步:如果刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的高地址位置, 那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減一;如果刪除單元 存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的低地址位置,那么刪除單元的自增長(zhǎng)主鍵值是 能正確找回自增長(zhǎng)主鍵值單元的鍵值加一?;蛘?,如果刪除單元存儲(chǔ)在高于能正確找回自 增長(zhǎng)主鍵值單元的N個(gè)單元位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵 值單元的鍵值減N ;如果刪除單元存儲(chǔ)在低于能正確找回自增長(zhǎng)主鍵值單元的Μ個(gè)單元位 置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值加 Μ。
[0051] 如圖3-6所示的實(shí)施例。
[0052] 圖3為采用本發(fā)明處理的具體實(shí)施例的Sqlite文件的數(shù)據(jù)截圖;
[0053] 圖4為圖3中的數(shù)據(jù)刪除自增長(zhǎng)字段為05的單元的示意圖;如圖所示,自增長(zhǎng)字 段為05的單位被刪除后,單元頭包含自增長(zhǎng)字段的位置已經(jīng)被修改了,不能找到刪除前的 自增長(zhǎng)字段值。運(yùn)時(shí)候可W定位到自增長(zhǎng)字段為04的單元,此單元的存儲(chǔ)位置和刪除的單 元是緊鄰的,同時(shí)被刪除的單元處在04單元的低地址位置,根據(jù)恢復(fù)原理,在被刪除單元 的自增長(zhǎng)字段為4+1 = 5。
[0054] 圖5為圖3中的數(shù)據(jù)刪除自增長(zhǎng)字段為05和04的單元的示意圖;如圖所示,自增 長(zhǎng)字段為05和04的單位被刪除后,單元頭包含自增長(zhǎng)字段的位置已經(jīng)被修改了,不能找到 刪除前的自增長(zhǎng)字段值。運(yùn)時(shí)候可W定位到自增長(zhǎng)字段為03的單元,并且03單元的地址處 在刪除單元的高地址位置,那么緊鄰此03單元的存儲(chǔ)位置的刪除字段的自增長(zhǎng)字段為3+1 =4,另外一個(gè)刪除的單元是4+1 = 5。
[0055] 圖6為圖3中的數(shù)據(jù)刪除自增長(zhǎng)字段為01的單元的示意圖;如圖所示,自增長(zhǎng)字 段為01的單位被刪除后,單元頭包含自增長(zhǎng)字段的位置已經(jīng)被修改了,不能找到刪除前的 自增長(zhǎng)字段值。運(yùn)時(shí)候可W定位到自增長(zhǎng)字段為02的單元,此單元的存儲(chǔ)位置和刪除的單 元是緊鄰的,同時(shí)被刪除的單元處在02單元的高地址位置,根據(jù)恢復(fù)原理,在被刪除單元 的自增長(zhǎng)字段為2-1 = 1。
[0056] 如圖7所示,本發(fā)明Sqlite文件恢復(fù)自增主鍵值的系統(tǒng),包括:
[0057] 查找模塊10,用于查找刪除單元;根據(jù)SQLite刪除數(shù)據(jù)恢復(fù)原理,找到已經(jīng)被刪 除的刪除單元的數(shù)據(jù);
[0058] 定位模塊20,用于定位到刪除單元的前面或者后面的存在自增長(zhǎng)主鍵的數(shù)據(jù);在 刪除單元的前或后去查找含有自增長(zhǎng)主鍵的單元數(shù)據(jù);
[0059] 恢復(fù)模塊30,用于恢復(fù)刪除數(shù)據(jù)的自增長(zhǎng)鍵值。
[0060] 恢復(fù)模塊工作時(shí):如果刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的高地 址位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減一;如果 刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的低地址位置,那么刪除單元的自增長(zhǎng) 主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值加一。如果刪除單元存儲(chǔ)在高于能正確找回 自增長(zhǎng)主鍵值單元的N個(gè)單元位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主 鍵值單元的鍵值減N ;如果刪除單元存儲(chǔ)在低于能正確找回自增長(zhǎng)主鍵值單元的Μ個(gè)單元 位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值加 Μ。
[0061] 綜上所述,本發(fā)明根據(jù)數(shù)據(jù)的存儲(chǔ)位置和上下文的關(guān)系,推斷出刪除數(shù)據(jù)的自增 長(zhǎng)主鍵值,由此使得SQLite文件在刪除數(shù)據(jù)之后,能恢復(fù)自增長(zhǎng)主鍵值。為SQLite文件 的數(shù)據(jù)恢復(fù)提供了一種可行的方案。
[0062] 上述僅W實(shí)施例來(lái)進(jìn)一步說(shuō)明本發(fā)明的技術(shù)內(nèi)容,W便于讀者更容易理解,但不 代表本發(fā)明的實(shí)施方式僅限于此,任何依本發(fā)明所做的技術(shù)延伸或再創(chuàng)造,均受本發(fā)明的 保護(hù)。本發(fā)明的保護(hù)范圍W權(quán)利要求書(shū)為準(zhǔn)。
【主權(quán)項(xiàng)】
1. Sqlite文件恢復(fù)自增主鍵值的方法,該方法包括以下步驟: 第一步,查找刪除單元;根據(jù)SQLite刪除數(shù)據(jù)恢復(fù)原理,找到已經(jīng)被刪除的刪除單元 的數(shù)據(jù); 第二步,定位到刪除單元的前面或者后面的存在自增長(zhǎng)主鍵的數(shù)據(jù); 在刪除單元的前或后去查找含有自增長(zhǎng)主鍵的單元數(shù)據(jù); 第三步,恢復(fù)刪除數(shù)據(jù)的自增長(zhǎng)鍵值。2. 根據(jù)權(quán)利要求1所述的Sqlite文件恢復(fù)自增主鍵值的方法,其特征在于第三步:如 果刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的高地址位置,那么刪除單元的自增 長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減一;如果刪除單元存儲(chǔ)在緊鄰能正確找 回自增長(zhǎng)主鍵值單元的低地址位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主 鍵值單元的鍵值加一。3. 根據(jù)權(quán)利要求1所述的Sqlite文件恢復(fù)自增主鍵值的方法,其特征在于第三步:如 果刪除單元存儲(chǔ)在高于能正確找回自增長(zhǎng)主鍵值單元的N個(gè)單元位置,那么刪除單元的自 增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減N ;如果刪除單元存儲(chǔ)在低于能正確 找回自增長(zhǎng)主鍵值單元的Μ個(gè)單元位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回自增 長(zhǎng)主鍵值單元的鍵值加 Μ。 4. Sqlite文件恢復(fù)自增主鍵值的系統(tǒng),包括: 查找模塊,用于查找刪除單元;根據(jù)SQLite刪除數(shù)據(jù)恢復(fù)原理,找到已經(jīng)被刪除的刪 除單元的數(shù)據(jù); 定位模塊,用于定位到刪除單元的前面或者后面的存在自增長(zhǎng)主鍵的數(shù)據(jù);在刪除單 元的前或后去查找含有自增長(zhǎng)主鍵的單元數(shù)據(jù); 恢復(fù)模塊,用于恢復(fù)刪除數(shù)據(jù)的自增長(zhǎng)鍵值。5. 根據(jù)權(quán)利要求4所述的Sqlite文件恢復(fù)自增主鍵值的系統(tǒng),其特征在于恢復(fù)模塊工 作時(shí):如果刪除單元存儲(chǔ)在緊鄰能正確找回自增長(zhǎng)主鍵值單元的高地址位置,那么刪除單 元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減一;如果刪除單元存儲(chǔ)在緊鄰 能正確找回自增長(zhǎng)主鍵值單元的低地址位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確找回 自增長(zhǎng)主鍵值單元的鍵值加一。6. 根據(jù)權(quán)利要求4所述的Sqlite文件恢復(fù)自增主鍵值的系統(tǒng),其特征在于恢復(fù)模塊工 作時(shí):如果刪除單元存儲(chǔ)在高于能正確找回自增長(zhǎng)主鍵值單元的N個(gè)單元位置,那么刪除 單元的自增長(zhǎng)主鍵值是能正確找回自增長(zhǎng)主鍵值單元的鍵值減N;如果刪除單元存儲(chǔ)在低 于能正確找回自增長(zhǎng)主鍵值單元的Μ個(gè)單元位置,那么刪除單元的自增長(zhǎng)主鍵值是能正確 找回自增長(zhǎng)主鍵值單元的鍵值加 Μ。
【文檔編號(hào)】G06F17/30GK105989124SQ201510081132
【公開(kāi)日】2016年10月5日
【申請(qǐng)日】2015年2月13日
【發(fā)明人】李亮
【申請(qǐng)人】深圳萬(wàn)興信息科技股份有限公司