一种Linux下注册表的模拟实现方法技术

技术编号:15639519 阅读:63 留言:0更新日期:2017-06-16 00:04
本发明专利技术描述了一种Linux下注册表的模拟实现方法,该方法通过在数据库基础上建立注册表的原始表,并基于原始表实现注册表的所有功能,本发明专利技术定义注册表分层结构,实现数据分层存储,实现了注册表的所有功能(包括增删改查、监控变动),并且分层方式与windows可以很好适配,另外根据本发明专利技术,windows注册表使用程序移植到linux上简单方便。

【技术实现步骤摘要】
一种Linux下注册表的模拟实现方法
本专利技术涉及一种Linux下注册表的模拟实现方法,属于计算机

技术介绍
Windows下注册表是微软自己实现的一个key-value数据库,在该key-value基础上实现注册表。注册表有几大特性:一、有分层的概念,以‘/’作为不同层级的分隔符;二、存储内容为key-value的方式,并支持多种value的格式;三、可以随意进行增删改查操作,并以较高的效率运行;四、可以监控某个key的value的改变。Windows系统下自带注册表能够很方便的实现一些简单key-value数据的存储,同时又增加了分层的概念,便于数据管理。Linux系统本身没有注册表,不方便数据的管理。
技术实现思路
针对当前Linux系统下没有注册表的缺陷,本专利技术提供一种Linux下注册表的模拟实现方法,比较方便的实现并管理key-value数据。为了解决所述技术问题,本专利技术提供一种Linux下注册表的模拟实现方法,所述方法为:在数据库基础上建立注册表的原始表,原始表包括字段标识id、关键字key、父节点标识pid、数据类型valtype、存放数值类型数据valint、存放字符串类型数据valstr,并在原始表中建立父节点标识pid与字段标识id的联动删除关系,然后基于原始表实现注册表增删改查的监控功能,在实现注册表监控功能的过程中使用注册表分层结构。本专利技术所述Linux下注册表的模拟实现方法,注册表完成的监控功能包括插入数据、定位插入数据、查询数据、定位查询数据、删除数据和监控数据变化。本专利技术所述Linux下注册表的模拟实现方法,插入数据的流程为:1、根据传入的键标识定位数据,如果定位失败则不再执行插入,并向上层返回错误;2、定位成功,则判断数据类型;3、根据数据类型,对数据库执行插入操作,并返回插入是否成功,如果插入失败,返回错误。本专利技术所述Linux下注册表的模拟实现方法,定位插入数据的流程为:1、遍历传入的键标识,如果不需要继续遍历,返回上次获取到的位置;2、如果需要继续遍历,将key分层,根据当前层的键值和上一层的位置,查询当前层的位置;3、如果当前层的位置查询失败,则插入新数据,内容为当前层的键值和上一层的位置,并返回新插入的位置;4、在当前层的位置查询成功和插入新数据后,继续定位下一层,进入递归操作。本专利技术所述Linux下注册表的模拟实现方法,查询数据的流程为:1、根据传入的键标识定位数据,如果定位失败,说明没有查询到该项,向上层返回错误;2、如果定位成功,根据位置从数据库中获取内容,向上层返回获取到的内容。本专利技术所述Linux下注册表的模拟实现方法,定位查询数据的流程为:1、遍历传入的键标识,如果不需要继续遍历,则返回上次获取到的位置;2、如果需要继续遍历,将key分层,根据当前层的键值和上一层的位置,查询当前层的位置;3、如果当前层的位置查询失败,则向上层返回错误;4、如果当前层的位置查询成功,则继续定位下一层,进入递归操作。本专利技术所述Linux下注册表的模拟实现方法,删除数据的流程为:1、根据传入的键标识定位数据,如果定位失败,则该项不存在,向上层返回错误;2、如果定位成功,根据位置在数据库中删除该调数据。本专利技术所述Linux下注册表的模拟实现方法,监控数据变化通过数据库自带的监控功能实现。本专利技术所述Linux下注册表的模拟实现方法,建立注册表的数据库为sqlite、mysql、postgres中的一种。作为优选,选择轻量级且比较稳定、完善的开源数据库系统sqlite。为了Windows下注册表简单方便的移植到Linux系统,增加一层适配器,将Windows下使用注册表编写的程序,直接移植Linux系统,仅需链接该适配器即可。为了提高内存的利用效率,避免内存的浪费,在增删改查时,当返回值为字符串时,返回char*格式;在操作句柄中统一管理字符串的内存,当不需要时再释放。本专利技术的有益效果:本专利技术在Linux系统下模拟实现注册表,可以比较方便的实现并管理key-value数据;并且实现数据分层存储,实现了注册表的所有功能(包括增删改查、监控变动),并且分层方式与Windows可以很好适配;Windows注册表使用程序移植到Linux上简单方便;内存利用效率高,处理速度快。附图说明图1为插入数据的流程图;图2为定位插入数据的流程图;图3为查询数据的流程图;图4为定位插入数据的流程图;图5为删除数据的流程图。具体实施方式下面结合附图和具体实施例对本专利技术作进一步的说明。首先对本专利技术中使用的关键术语进行解释。sqlite:sqlite数据库,这是一款开源的轻量级数据库,支持linux系统。key:关键字。value:数据值。key-value:键值对,key指关键字,value指该关键字对应的数据。注册表格式:HKEY_LOCAL_MACHINE\SOFTWARE\123。本专利技术所述Linux下注册表的模拟实现方法首先在sqlite基础上建立注册表的原始表,基于该原始表实现注册表的增删改查监控功能。原始表的结构为:表结构说明:1)id为一个字段的唯一标识;2)key为关键字,相当于注册表中的目录或项名称;3)pid为父节点的id(只能填入id列中存在的数据);4)valtype为值的类型,0为无类型,1为数字,2为字符串;5)valint代表:当valtype为数字类型时,使用该字段存储数值数据;6)valstr代表:当valtype为字符串类型时,使用该字段存储字符串数据;7)建立pid和id的联动删除关系,效果是当删除某一项时,其所有子项会被递归删除;8)pid相同代表在同一层,同一层的key不允许重复。注册表完成的监控功能包括插入数据、定位插入数据、查询数据、定位查询数据、删除数据和监控数据变化。如图1所示,插入数据的流程为:1、根据传入的键标识符定位需要插入的位置,如果定位失败表示没有该项,不再继续执行,并向上层返回错误,2、定位成功后判断数据类型,根据数据类型,对数据库执行插入操作,比如如果是数值,更新数值数据,如果是字符串,更新字符串数据,然后返回插入是否成功,如果插入失败,返回错误。如图2所示,定位插入数据的流程为:1、首先定位需要插入的位置,然后遍历传入的键标识,如果不需要继续遍历,返回上次获取到的位置;2、如果需要继续遍历,将key分层,根据当前层的键值和上一层的位置,查询当前层的位置;3、如果当前层的位置查询失败,则插入新数据,内容为当前层的键值和上一层的位置,并返回新插入的位置;4、在当前层的位置查询成功和插入新数据后,继续定位下一层,进入递归操作。如图3所示,查询数据的流程为:1、定位需要查询的位置,即根据传入的键标识定位数据,如果定位失败,说明没有查询到该项,向上层返回错误;2、如果定位成功,则判断需要获取的数据类型,然后根据位置从数据库中获取内容,向上层返回获取到的内容,即如果需要获取的数据为数值,则验证类型,并查询数值书;如果需要获取的数据为字符串,则验证类型,并查询字符串数据。如图4所示,定位查询数据的流程为:1、首先定位需要查询的位置,然后遍历传入的键标识,如果不需要继续遍历,则返回上次获取到的位置;2、如果需要继续遍历,将key分层,本文档来自技高网...
一种Linux下注册表的模拟实现方法

【技术保护点】
一种Linux下注册表的模拟实现方法,其特征在于:在数据库基础上建立注册表的原始表,原始表包括字段标识id、关键字key、父节点标识pid、数据类型valtype、存放数值类型数据valint、存放字符串类型数据valstr,并在原始表中建立父节点标识pid与字段标识id的联动删除关系,然后基于原始表实现注册表增删改查的监控功能,在实现注册表监控功能的过程中使用注册表分层结构。

【技术特征摘要】
1.一种Linux下注册表的模拟实现方法,其特征在于:在数据库基础上建立注册表的原始表,原始表包括字段标识id、关键字key、父节点标识pid、数据类型valtype、存放数值类型数据valint、存放字符串类型数据valstr,并在原始表中建立父节点标识pid与字段标识id的联动删除关系,然后基于原始表实现注册表增删改查的监控功能,在实现注册表监控功能的过程中使用注册表分层结构。2.根据权利要求1所述的Linux下注册表的模拟实现方法,其特征在于:注册表完成的功能包括插入数据、定位插入数据、查询数据、定位查询数据、删除数据和监控数据变化。3.根据权利要求2所述的Linux下注册表的模拟实现方法,其特征在于:插入数据的流程为:1、根据传入的键标识定位数据,如果定位失败则不再执行插入,并向上层返回错误;2、定位成功,则判断数据类型;3、根据数据类型,对数据库执行插入操作,并返回插入是否成功,如果插入失败,返回错误。4.根据权利要求2所述的Linux下注册表的模拟实现方法,其特征在于:定位插入数据的流程为:1、遍历传入的键标识,如果不需要继续遍历,返回上次获取到的位置;2、如果需要继续遍历,将key分层,根据当前层的键值和上一层的位置,查询当前层的位置;3、如果当前层的位置查询失败,则插入新数据,内容为当前层的键值和上一层的位置,并返回新插入的位置;4、在当前层的位置查询成功...

【专利技术属性】
技术研发人员:贾斌
申请(专利权)人:山东华软金盾软件股份有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1