CN115438047A - 目录树的权限确定方法、装置、存储介质及电子设备 - Google Patents
目录树的权限确定方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115438047A CN115438047A CN202211071660.XA CN202211071660A CN115438047A CN 115438047 A CN115438047 A CN 115438047A CN 202211071660 A CN202211071660 A CN 202211071660A CN 115438047 A CN115438047 A CN 115438047A
- Authority
- CN
- China
- Prior art keywords
- node
- depth
- target
- authority
- adjusted
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种目录树的权限确定方法、装置、存储介质及电子设备。涉及大数据技术领域,该方法包括:读取目录树中的目录数据,根据目录数据生成目录树的有向节点图信息;在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整;若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。通过本申请,解决了相关技术中在目录树中存在大量目录数据的情况下,目录数据的权限继承计算效率较低的问题。
Description
技术领域
本申请涉及大数据技术领域,具体而言,涉及一种目录树的权限确定方法、装置、存储介质及电子设备。
背景技术
在我行的各类后台***中,都涉及到权限管理。这是***中一个重要的组成部分,其主要目的是对整个后台管理***进行权限的控制,避免因权限控制缺失或者操作不当引发的风险问题。
一个后台***通常有各类功能,一些功能下会涉及元数据管理,通常会使用目录树对这些元数据进行分类划分。用户可以在目录树中的某个目录下新建子目录或者新建元数据,也可以对某个目录或者元数据进行修改或删除操作。一些对互联网发布信息的后台***权限管理尤为严格,不同的用户对于不同功能下的不同目录都会有各不相同的权限,权限会包括新增、修改、删除、各层级审批、发布。以此确保发布出去的内容都能够由对应的专人采编,并经过专人审批发布。
不同的业务功能,其下的目录数量会有几个到几十万不等。若需要对每个目录单独赋权,用户工作量会巨大。所以通常会希望若某个用户对目录a有某类权限qa,则希望该用户对该目录下所有子孙目录都可以有这类权限。若对目录a下某个子孙目录b又单独赋了另外的权限qb,则此时希望对目录b下的子孙目录,能有权限qb而不再是权限qa。
可以发现,当目录树中的目录数量多,且用户对目录树中单独目录赋予的权限也多时,如果用传统的遍历的方式去计算权限,会导致查询超时,相关业务功能完全无法使用。
针对相关技术中的上述问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种目录树的权限确定方法、装置、存储介质及电子设备,以解决相关技术中在目录树中存在大量目录数据的情况下,目录数据的权限继承计算效率较低的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种目录树的权限确定方法。该方法包括:读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称;根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限;判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离;在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点;若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
进一步地,根据目录数据生成目录树的有向节点图信息包括:对目录数据中的目标目录序号赋予预设权限;根据预设权限生成目录树的有向节点图信息。
进一步地,在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,方法还包括:若有向节点图信息中的第一节点的节点深度与第二节点的节点深度不相同,获取第一节点的节点深度与第二节点的节点深度;通过二分法调整第一节点的节点深度和/或第二节点的节点深度,以使第一节点的节点深度与第二节点的节点深度相同。
进一步地,在第一节点的节点深度大于第二节点的节点深度时,通过二分法调整第一节点的节点深度,以使第一节点的节点深度与第二节点的节点深度相同包括:通过二分法将第一节点的节点深度按照预设步数进行调整,得到调整后的第一节点;判断调整后的第一节点的节点深度是否大于第二节点的节点深度;若调整后的第一节点的节点深度大于第二节点的节点深度,执行通过二分法将调整后的第一节点的节点深度按照预设步数进行调整的步骤,以使第一节点的节点深度与第二节点的节点深度相同。
进一步地,若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限包括:若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,则调整后的第一目标节点的目标前驱节点与调整后的第二目标节点的目标前驱节点相同;同时,确定目标前驱节点为目标根节点,并确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
进一步地,在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,方法还包括:若有向节点图信息中的第一节点的节点深度与第二节点的节点深度相同,且第一节点与第二节点相同时,将第二节点携带的权限作为调整后的第一节点的权限。
进一步地,在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之前,方法还包括:获取第一节点的前驱节点与第二节点的前驱节点;若第一节点的前驱节点与第二节点的前驱节点分别被赋予对应的权限,则确定第一节点携带的权限为第一节点的前驱节点携带的权限,确定第二节点携带的权限为第二节点的前驱节点携带的权限。
为了实现上述目的,根据本申请的另一方面,提供了一种目录树的权限确定装置。该装置包括:读取单元,用于读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称;生成单元,用于根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限;判断单元,用于判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离;第一调整单元,用于在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点;第一确定单元,用于若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
通过本申请,采用以下步骤:读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称;根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限;判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离;在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点;若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。通过本申请,解决了相关技术中在目录树中存在大量目录数据的情况下,目录数据的权限继承计算效率较低的问题,通过判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,进而确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限,进而达到了提升对目录数据的权限继承计算效率的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的目录树的权限确定方法的流程图;
图2是根据本申请实施例提供的目录树的权限确定方法的有向图示意图;
图3是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图一;
图4是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图二;
图5是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图三;
图6是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图四;
图7是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图五;
图8是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图六;
图9是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图七;
图10是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图八;
图11是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图九;
图12是根据本申请实施例提供的目录树的权限确定方法的带权有向图示意图十;
图13是根据本申请实施例提供的目录树的权限确定装置的示意图;
图14是根据本申请实施例提供的目录树的权限确定电子设备的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
下面结合优选的实施步骤对本发明进行说明,图1是根据本申请实施例提供的目录树的权限确定方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称。
例如,在目录树中的目录数据的表结构设计为邻接表,例如,通常包含节点父子关系的邻接表(表1)的表结构设计如下:
表1
例如,在权限管理功能设计中,需要根据用户对不同的目录赋不同的权限(表2),通常表结构设计如下:
表2
上表中每一条记录,即表示用户user_id对目录dir_id拥有权限role_id。这三个字段将组成一个元组(user_id,dir_id,role_id),每个元组不完全相同,这样能保证数据不重复。
步骤S102,根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限。
具体的,程序启动时,先读取表1中的全量数据,将数据先存储在程序内存中,然后构造成一张目录树的树形有向图,获取该有向图的信息。
具体的,一般来说,有向图的节点展示可以如图2所示,图中节点1表示整个目录树的根目录,其下有节点2、节点3、节点4三个子目录,以此类推。
可选地,在本申请实施例提供的目录树的权限确定方法中,根据目录数据生成目录树的有向节点图信息包括:对目录数据中的目标目录序号赋予预设权限;根据预设权限生成目录树的有向节点图信息。
需要说明的是,本申请先根据某用户对整棵树中部分目录赋权,生成目录的带权图,如图3所示,用户对于节点1有权限qa,对节点3有权限qb。按照对业务功能的理解,此时该用户对于以节点3为根节点的子树上任意节点都该有qb权限,对以节点1为根节点的排除节点3为根节点的子树后的节点有qa权限,具体如图4所示,因此,接下来研究如何对每个根节点上任意节点的权限进行计算。
步骤S103,判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离。
例如,如图5所示,选取了节点7、节点12两个节点,计算用户对这两个节点拥有的权限。并判断节点7的节点深度与节点12的节点深度是否相同,其中,节点7的节点深度可以是节点7到节点4的路径,节点12的节点深度可以是节点12到节点4的路径(也即本申请中的距离)。
现在,选取树中任意n个节点,需要判断该用户对这些节点都有哪些权限。算法推导如下:
首先假设LCA(x,y)表示节点x到根节点的路径与节点y到根节点的路径的交汇节点。它也是x与y之间路径上深度最小的节点。假设fa[x,k]表示x的2k层的前驱节点,即从x向根节点移动2k步所达到的节点。如果该节点不存在,则令fa[x,k]=0。fa[x,0]就是x的父节点。于是可以得到:fa[x,k]=fa[fa[x,k-1],k-1]。
这就类似于是一种不断动态规划的过程,阶段即表示节点深度。因此,我们能够通过对树进行BFS(广度优先遍历),按照层次顺序,在把节点加入到队列前,计算节点在fa数组中对应的值,基于fa数组计算LCA(x,y),最终基于LCA(x,y)确定节点x以及节点y的权限。
可选地,在本申请实施例提供的目录树的权限确定方法中,在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,方法还包括:若有向节点图信息中的第一节点的节点深度与第二节点的节点深度不相同,获取第一节点的节点深度与第二节点的节点深度;通过二分法调整第一节点的节点深度和/或第二节点的节点深度,以使第一节点的节点深度与第二节点的节点深度相同。
例如,选中任意n个节点中的两个节点,并获取两个节点的节点深度,通过二分法调整节点深度,以保证两个节点的深度相同,具体操作步骤如下:
可选地,在本申请实施例提供的目录树的权限确定方法中,在第一节点的节点深度大于第二节点的节点深度时,通过二分法调整第一节点的节点深度,以使第一节点的节点深度与第二节点的节点深度相同包括:通过二分法将第一节点的节点深度按照预设步数进行调整,得到调整后的第一节点;判断调整后的第一节点的节点深度是否大于第二节点的节点深度;若调整后的第一节点的节点深度大于第二节点的节点深度,执行通过二分法将调整后的第一节点的节点深度按照预设步数进行调整的步骤,以使第一节点的节点深度与第二节点的节点深度相同。
例如,设depth[x]表示x的深度,depth[y]表示y的深度,如图6所示,已知x,y两个节点,depth[x]≥depth[y],使用二分的思想,将x调整到与y一样的深度。具体来说,就是依次尝试x向上移动k=2logn,…21,20步(对应于本申请中的预设步数),也即是对x的深度进行不断调整,每移动一次,检查x到达的节点深度是否比y深。若是,则令x=fa[x,k],也就是说将x移动至x的前驱节点之后,继续使用二分法对x的节点深度进行调整,直至如图7所示,将x,y的节点深度调整相同,本申请通过利用二分法将两个节点的节点深度调整相同,为后续节点跳跃实现了极大的便捷,提高了后续对节点权限的计算速度。
可选地,在本申请实施例提供的目录树的权限确定方法中,在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,方法还包括:若有向节点图信息中的第一节点的节点深度与第二节点的节点深度相同,且第一节点与第二节点相同时,将第二节点携带的权限作为调整后的第一节点的权限。
例如,若对节点x的节点深度与节点y调整相同时,且调整后节点x与节点y重合,也即节点x=y,说明已经找到了LCA(x,y),此时LCA(x,y)=y,将节点y携带的权限作为调整节点深度后的节点x的权限。
步骤S104,在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点。
例如,若对节,点x的节点深度与节点y调整相同时,且第一节点与第二节点不同时,也即,节点x≠y时,仍然用二分的思想,把x和y同时向上调整,并保持深度一致且两者不会交汇。具体来说,就是依次把x,y同时向上移动k=2logn,…21,20步(对应于本申请中的相同步数),具体节点跳跃调整细节可以如图8所示,若发现前驱节点相同,跳跃太多,缩减一半,跳跃到2k节点位置;如如图9所示,相同的前驱节点,还是太多,继续重复缩减一半,跳跃到2k-1节点位置以及2k-2节点位置,如图10所示,发现前驱节点不同,在2k-3处停止缩减,如图11所示,将x,y移动到这个位置,此刻从2k-3开始跳跃。不断重复跳跃,可以跳到离x,y初始位置最远的,且不同的前驱节点,本申请通过利用二分法将两个节点的节点深度调整相同,提高了后续对节点权限的计算速度。
步骤S105,若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
上述步骤S104得到可以跳到离x,y初始位置最远的,且不同的前驱节点,也即,fa[x,k]≠fa[y,k],即仍未交汇,则令x=fa[x,k],y=fa[y,k],此时x,y必定只差一步就交汇了,它们的父节点fa[x,0]就是LCA(x,y)。
可选地,在本申请实施例提供的目录树的权限确定方法中,若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限包括:若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,则调整后的第一目标节点的目标前驱节点与调整后的第二目标节点的目标前驱节点相同;同时,确定目标前驱节点为目标根节点,并确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
例如,如图12所示,fa[x,k]=fa[y,k],也即调整后的第一目标节点的目标前驱节点与调整后的第二目标节点的目标前驱节点相同,也就是跳跃后的节点x与节点y存在相同的目标前驱节点,该目标前驱节点也为LCA(x,y),并将该目标前驱节点作为x,y节点的根节点,也即图13中20处的节点权限为x,y节点的权限。
可选地,在本申请实施例提供的目录树的权限确定方法中,在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之前,方法还包括:获取第一节点的前驱节点与第二节点的前驱节点;若第一节点的前驱节点与第二节点的前驱节点分别被赋予对应的权限,则确定第一节点携带的权限为第一节点的前驱节点携带的权限,确定第二节点携带的权限为第二节点的前驱节点携带的权限。
需要说明的是,在整个节点跳跃过程中发现某个节点已经达到赋过权的前驱节点,则可以直接根据达到赋过权的前驱节点得到该节点的权限,再取一个剩下未处理的节点加入进来进行计算,直至所有节点都算出权限,进一步提升了对节点权限的计算速度,其中,本申请处理事件复杂度可以是O(klogn),其中,k为节点的个数。
综上,本申请实施例提供的目录树的权限确定方法,通过读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称;根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限;判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离;在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点;若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。通过本申请,解决了相关技术中在目录树中存在大量目录数据的情况下,目录数据的权限继承计算效率较低的问题,通过判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,进而确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限,进而达到了提升对目录数据的权限继承计算效率的效果。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种目录树的权限确定装置,需要说明的是,本申请实施例的目录树的权限确定装置可以用于执行本申请实施例所提供的用于目录树的权限确定方法。以下对本申请实施例提供的目录树的权限确定装置进行介绍。
图13是根据本申请实施例的目录树的权限确定装置的示意图。如图13所示,该装置包括:读取单元1301、生成单元1302、判断单元1303、第一调整单元1304、第一确定单元1305。
具体的,读取单元1301,用于读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称;
生成单元1302,用于根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限;
判断单元1303,用于判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离;
第一调整单元1304,用于在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点;
第一确定单元1305,用于若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
综上,本申请实施例提供的目录树的权限确定装置,通过读取单元1301,用于读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称;生成单元1302,用于根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限;判断单元1303,用于判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离;第一调整单元1304,用于在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点;第一确定单元1305,用于若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限,解决了相关技术中在目录树中存在大量目录数据的情况下,目录数据的权限继承计算效率较低的问题,通过判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,进而确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限,进而达到了提升对目录数据的权限继承计算效率的效果。
可选地,在本申请实施例提供的目录树的权限确定装置中,生成单元包括:设置模块,用于对目录数据中的目标目录序号赋予预设权限;生成模块,用于根据预设权限生成目录树的有向节点图信息。
可选地,在本申请实施例提供的目录树的权限确定装置中,装置还包括:第一获取单元,用于在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,若有向节点图信息中的第一节点的节点深度与第二节点的节点深度不相同,获取第一节点的节点深度与第二节点的节点深度;第二调整单元,用于通过二分法调整第一节点的节点深度和/或第二节点的节点深度,以使第一节点的节点深度与第二节点的节点深度相同。
可选地,在本申请实施例提供的目录树的权限确定装置中,在第一节点的节点深度大于第二节点的节点深度时,第二调整单元包括:调整模块,用于通过二分法将第一节点的节点深度按照预设步数进行调整,得到调整后的第一节点;判断模块,用于判断调整后的第一节点的节点深度是否大于第二节点的节点深度;执行模块,用于若调整后的第一节点的节点深度大于第二节点的节点深度,执行通过二分法将调整后的第一节点的节点深度按照预设步数进行调整的步骤,以使第一节点的节点深度与第二节点的节点深度相同。
可选地,在本申请实施例提供的目录树的权限确定装置中,确定单元包括:比较模块,用于若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,则调整后的第一目标节点的目标前驱节点与调整后的第二目标节点的目标前驱节点相同;同时,确定模块,用于确定目标前驱节点为目标根节点,并确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
可选地,在本申请实施例提供的目录树的权限确定装置中,装置还包括:第二确定单元,用于在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,若有向节点图信息中的第一节点的节点深度与第二节点的节点深度相同,且第一节点与第二节点相同时,将第二节点携带的权限作为调整后的第一节点的权限。
可选地,在本申请实施例提供的目录树的权限确定装置中,装置还包括:第二获取单元,用于在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之前,获取第一节点的前驱节点与第二节点的前驱节点;第三确定单元,用于若第一节点的前驱节点与第二节点的前驱节点分别被赋予对应的权限,则确定第一节点携带的权限为第一节点的前驱节点携带的权限,确定第二节点携带的权限为第二节点的前驱节点携带的权限。
目录树的权限确定装置包括处理器和存储器,上述读取单元1301、生成单元1302、判断单元1303、第一调整单元1304、第一确定单元1305等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来进行目录树的权限确定。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现目录树的权限确定方法。
本发明实施例提供了一种处理器,处理器用于运行程序,其中,程序运行时执行目录树的权限确定方法。
如图14所示,本发明实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称;根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限;判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离;在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点;若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
处理器执行程序时还实现以下步骤:对目录数据中的目标目录序号赋予预设权限;根据预设权限生成目录树的有向节点图信息。
处理器执行程序时还实现以下步骤:在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,若有向节点图信息中的第一节点的节点深度与第二节点的节点深度不相同,获取第一节点的节点深度与第二节点的节点深度;通过二分法调整第一节点的节点深度和/或第二节点的节点深度,以使第一节点的节点深度与第二节点的节点深度相同。
处理器执行程序时还实现以下步骤:通过二分法将第一节点的节点深度按照预设步数进行调整,得到调整后的第一节点;判断调整后的第一节点的节点深度是否大于第二节点的节点深度;若调整后的第一节点的节点深度大于第二节点的节点深度,执行通过二分法将调整后的第一节点的节点深度按照预设步数进行调整的步骤,以使第一节点的节点深度与第二节点的节点深度相同。
处理器执行程序时还实现以下步骤:若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,则调整后的第一目标节点的目标前驱节点与调整后的第二目标节点的目标前驱节点相同;同时,确定目标前驱节点为目标根节点,并确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
处理器执行程序时还实现以下步骤:若有向节点图信息中的第一节点的节点深度与第二节点的节点深度相同,且第一节点与第二节点相同时,将第二节点携带的权限作为调整后的第一节点的权限。
处理器执行程序时还实现以下步骤:获取第一节点的前驱节点与第二节点的前驱节点;若第一节点的前驱节点与第二节点的前驱节点分别被赋予对应的权限,则确定第一节点携带的权限为第一节点的前驱节点携带的权限,确定第二节点携带的权限为第二节点的前驱节点携带的权限。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:读取目录树中的目录数据,其中,目录数据至少包括:子目标序号、父目录序号、目录名称;根据目录数据生成目录树的有向节点图信息,其中,有向节点图信息中至少存在一个目标根节点携带有预设权限;判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,第一节点的节点深度为第一节点与第一节点对应的目标根节点之间的距离,第二节点的节点深度为第二节点与第二节点对应的目标根节点之间的距离;在第一节点的节点深度与第二节点的节点深度相同的情况下,且第一节点与第二节点不同时,通过二分法分别对第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与调整后的第二目标节点;若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:对目录数据中的目标目录序号赋予预设权限;根据预设权限生成目录树的有向节点图信息。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在判断有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,若有向节点图信息中的第一节点的节点深度与第二节点的节点深度不相同,获取第一节点的节点深度与第二节点的节点深度;通过二分法调整第一节点的节点深度和/或第二节点的节点深度,以使第一节点的节点深度与第二节点的节点深度相同。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:通过二分法将第一节点的节点深度按照预设步数进行调整,得到调整后的第一节点;判断调整后的第一节点的节点深度是否大于第二节点的节点深度;若调整后的第一节点的节点深度大于第二节点的节点深度,执行通过二分法将调整后的第一节点的节点深度按照预设步数进行调整的步骤,以使第一节点的节点深度与第二节点的节点深度相同。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:若调整后的第一目标节点的节点深度与调整后的第二目标节点的节点深度小于预设节点深度时,则调整后的第一目标节点的目标前驱节点与调整后的第二目标节点的目标前驱节点相同;同时,确定目标前驱节点为目标根节点,并确定第一节点携带的权限与第二节点携带的权限为目标根节点携带的预设权限。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:若有向节点图信息中的第一节点的节点深度与第二节点的节点深度相同,且第一节点与第二节点相同时,将第二节点携带的权限作为调整后的第一节点的权限。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:获取第一节点的前驱节点与第二节点的前驱节点;若第一节点的前驱节点与第二节点的前驱节点分别被赋予对应的权限,则确定第一节点携带的权限为第一节点的前驱节点携带的权限,确定第二节点携带的权限为第二节点的前驱节点携带的权限。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种目录树的权限确定方法,其特征在于,包括:
读取目录树中的目录数据,其中,所述目录数据至少包括:子目标序号、父目录序号、目录名称;
根据所述目录数据生成所述目录树的有向节点图信息,其中,所述有向节点图信息中至少存在一个目标根节点携带有预设权限;
判断所述有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,所述第一节点的节点深度为所述第一节点与所述第一节点对应的所述目标根节点之间的距离,所述第二节点的节点深度为所述第二节点与所述第二节点对应的目标根节点之间的距离;
在所述第一节点的节点深度与所述第二节点的节点深度相同的情况下,且所述第一节点与所述第二节点不同时,通过二分法分别对所述第一节点的节点深度与所述第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与所述调整后的第二目标节点;
若所述调整后的第一目标节点的节点深度与所述调整后的第二目标节点的节点深度小于预设节点深度时,确定所述第一节点携带的权限与所述第二节点携带的权限为所述目标根节点携带的所述预设权限。
2.根据权利要求1所述的方法,其特征在于,根据所述目录数据生成所述目录树的有向节点图信息包括:
对所述目录数据中的目标目录序号赋予预设权限;
根据所述预设权限生成所述目录树的有向节点图信息。
3.根据权利要求1所述的方法,其特征在于,在判断所述有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,所述方法还包括:
若所述有向节点图信息中的所述第一节点的节点深度与所述第二节点的节点深度不相同,获取所述第一节点的节点深度与第二节点的节点深度;
通过二分法调整所述第一节点的节点深度和/或第二节点的节点深度,以使所述第一节点的节点深度与第二节点的节点深度相同。
4.根据权利要求3所述的方法,其特征在于,在所述第一节点的节点深度大于所述第二节点的节点深度时,通过二分法调整所述第一节点的节点深度,以使所述第一节点的节点深度与第二节点的节点深度相同包括:
通过所述二分法将所述第一节点的节点深度按照预设步数进行调整,得到调整后的第一节点;
判断所述调整后的第一节点的节点深度是否大于所述第二节点的节点深度;
若所述调整后的第一节点的节点深度大于所述第二节点的节点深度,执行通过所述二分法将所述调整后的第一节点的节点深度按照预设步数进行调整的步骤,以使所述第一节点的节点深度与第二节点的节点深度相同。
5.根据权利要求1所述的方法,其特征在于,若所述调整后的第一目标节点的节点深度与所述调整后的第二目标节点的节点深度小于预设节点深度时,确定所述第一节点携带的权限与所述第二节点携带的权限为所述目标根节点携带的所述预设权限包括:
若所述调整后的第一目标节点的节点深度与所述调整后的第二目标节点的节点深度小于预设节点深度时,则所述调整后的第一目标节点的目标前驱节点与所述调整后的第二目标节点的目标前驱节点相同;同时,
确定所述目标前驱节点为所述目标根节点,并确定所述第一节点携带的权限与所述第二节点携带的权限为所述目标根节点携带的所述预设权限。
6.根据权利要求1所述的方法,其特征在于,在判断所述有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之后,所述方法还包括:
若所述有向节点图信息中的所述第一节点的节点深度与所述第二节点的节点深度相同,且所述第一节点与所述第二节点相同时,将所述第二节点携带的权限作为所述调整后的第一节点的权限。
7.根据权利要求1所述的方法,其特征在于,在判断所述有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同之前,所述方法还包括:
获取所述第一节点的前驱节点与所述第二节点的前驱节点;
若所述第一节点的前驱节点与所述第二节点的前驱节点分别被赋予对应的权限,则确定所述第一节点携带的权限为所述第一节点的前驱节点携带的权限,确定所述第二节点携带的权限为所述第二节点的前驱节点携带的权限。
8.一种目录树的权限确定装置,其特征在于,包括:
读取单元,用于读取目录树中的目录数据,其中,所述目录数据至少包括:
子目标序号、父目录序号、目录名称;
生成单元,用于根据所述目录数据生成所述目录树的有向节点图信息,其中,所述有向节点图信息中至少存在一个目标根节点携带有预设权限;
判断单元,用于判断所述有向节点图信息中的第一节点的节点深度与第二节点的节点深度是否相同,其中,所述第一节点的节点深度为所述第一节点与所述第一节点对应的所述目标根节点之间的距离,所述第二节点的节点深度为所述第二节点与所述第二节点对应的目标根节点之间的距离;
第一调整单元,用于在所述第一节点的节点深度与第二节点的节点深度相同的情况下,且所述第一节点与所述第二节点不同时,通过二分法分别对所述第一节点的节点深度与第二节点的节点深度按照相同步数进行调整,得到调整后的第一目标节点与所述调整后的第二目标节点;
第一确定单元,用于若所述调整后的第一目标节点的节点深度与所述调整后的第二目标节点的节点深度小于预设节点深度时,确定所述第一节点携带的权限与所述第二节点携带的权限为所述目标根节点携带的所述预设权限。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序,其中,所述程序执行权利要求1至7中任意一项所述的方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211071660.XA CN115438047A (zh) | 2022-09-02 | 2022-09-02 | 目录树的权限确定方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211071660.XA CN115438047A (zh) | 2022-09-02 | 2022-09-02 | 目录树的权限确定方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115438047A true CN115438047A (zh) | 2022-12-06 |
Family
ID=84246751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211071660.XA Pending CN115438047A (zh) | 2022-09-02 | 2022-09-02 | 目录树的权限确定方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115438047A (zh) |
-
2022
- 2022-09-02 CN CN202211071660.XA patent/CN115438047A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797496B2 (en) | System and method for parallel support of multidimensional slices with a multidimensional database | |
KR102158435B1 (ko) | 단말기 룰 엔진 디바이스 및 단말기 룰 연산 방법 | |
JP6998964B2 (ja) | ジオフェンスのインデックスグリッドを判断するための方法及び装置 | |
Heidari et al. | Big data clustering with varied density based on MapReduce | |
US11048685B1 (en) | Function-based object queries | |
CN110019298B (zh) | 数据处理方法和装置 | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
Hou et al. | Efficient maximal clique enumeration over graph data | |
CN111475511A (zh) | 基于树状结构的数据存储方法、访问方法、装置及设备 | |
US10108624B1 (en) | Concurrent directory move operations using ranking rules | |
CN115438047A (zh) | 目录树的权限确定方法、装置、存储介质及电子设备 | |
CN107644086B (zh) | 空间数据的分布方法 | |
CN115473895B (zh) | 泛在环境下的数字对象仓库节点共识组划分方法和装置 | |
CN111159192A (zh) | 基于大数据的数据入库方法、装置、存储介质和处理器 | |
CN108536759B (zh) | 一种样本回放数据存取方法及装置 | |
US10437809B1 (en) | Projection-based updates | |
CN112540979A (zh) | 表达式的存储方法及装置 | |
CA3065157C (en) | Parallel map and reduce on hash chains | |
Tantawi | Quantitative placement of services in hierarchical clouds | |
Höppli et al. | Hera object storage: A seamless, automated multi-tiering solution on top of OpenStack swift | |
Ryu et al. | MapReduce-based distributed clustering method using CF+ tree | |
CN112749189A (zh) | 数据查询方法及装置 | |
CN113836500B (zh) | 数据权限控制方法、***、终端以及储存介质 | |
CN111949505B (zh) | 一种测试方法、装置及设备 | |
Erkoç et al. | Out-of-core constrained delaunay tetrahedralizations for large scenes |
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 |