php 解析mib文件,Mib库解析

MibAnalyser

介绍

MibAnalyser可以解析MIB文件,并转化为对应的实体,持久化到本地。MibAnalyser分为三个模块:解析模块、持久化模块、工具库模块。

解析模块

解析模块用于解析MIB文件的语法,并最终生成实体列表。

管理模块

由于对MIB文件解析时需要依赖到其他的MIB文件,该子模块用于读取其他MIB的节点数据。

该模块的接口是IMIBManager,系统实现类是MIBManager。

节点解析模块

节点解析模块会解析MIB文件的语法,把里面的节点提取出来并转化为对应的实体类型。当前生成的节点类型并不完整,需要通过节点连接模块加功后才能生成完整的节点信息。

该模块的接口是IMIBSyntaxAnalyzer,系统实现类MIBSyntaxAnalyzer。

节点连接模块

对半完成的节点列表进行关联操作,生成完整节点的节点列表。

该模块的接口是INodeLinker,系统实现类是NodeLinker。

持久化模块

持久化模块是mib文件与底层数据直接访问的模块,用于存储和读取OID节点。

数据访问组件

数据访问组件由多个数据访问接口构成,主要职责是与底层数据存储进行交互,读取持久化的数据并生成对应的实体。

本系统的数据访问模块主要包括两个接口:IMIBModuleDao, IMIBNodeDao。这两个接口定义了解析模块所需要用到的访问数据的方法。

IMIBModuleDao:判断指定MIB库是否存在。

IMIBNodeDao:根据指定MIB库获取其定义的节点集合。

本系统为两个数据访问接口提供了实现类MIBFileDao,该实现类主要把数据持久化到本地文件系统。

实体序列化组件

实体序列化组件是MIBFileDao使用到的组件之一,该组件把各种类型的节点实体序列化成json格式,以及从Json逆序列化成对应的节点,十分灵活。

实体转化器

实体转化器可以实现解析实体和其他实体之间的映射,通常使用者自行定义了用于持久化的实体,则可以通过转换器进行解析实体和自定义实体的互相转换。

该模块的接口是IConverter。系统实现了抽象类Converter,Converter实现了IConverter接口,并实现了一个默认转换方法:根据属性名进行转化,获取待转化对象相同属性名属性,并进行赋值操作。

自定义持久化实体

系统提供的默认持久化实体就是解析实体,且保存到本地本件夹。如果使用者希望存储到其他位置如数据库,则需要自定义持久化实体。

自定义持久化需要使用者重新定义三样东西:

自定义的数据访问组件:由于解析模块中需要对底层的数据进行访问,因此在自定义持久化时候,需要实现数据访问模块中的接口并组装成数据访问组件传入解析模块,确保解析模块的正常执行。

自定义实体:由于持久化本质是底层数据与实体的映射,因此自定义的持久化方式通常会有对应匹配的实体。如果默认的解析实体能够匹配上自定义的持久化方式,这里则可以不需要定义新的实体。

实体转化接口:假如使用者定义了自定义实体,则需要实现实体转化接口,实现对默认解析实体和自定义实体的映射。为了方便使用者的使用,接口自身实现了一个默认的转化方法:发现转化实体和待转化实体相同的属性名,并把转化实体该属性的值赋给待转化实体的属性中。

工具库模块

工具库提供了一些常用的方法,简化使用这使用的难度。

核心工具库:OID列表转化为树状结构的功能,在OID树中寻找指定OID节点。

格式化工具库:对OID树进行剪枝等操作,对文本字符串进行处理等方法。

展示工具库:提供了把OID树转化为zTree数据格式。

工具库处理的对象都是解析实体,自定义持久化实体的使用者需要先把持久化实体转化为解析实体再使用。

MibAnalyserDemo

一个展示MibAnalyser的demo。

环境

springboot + hibernate + MibAnalyser

MibAnalyser

使用了默认的解析框架和逻辑

自定义了持久化实体,存于数据库。并定义了相关的接口层和转化器。

前端

jquery + bootstrap + angularjs

使用了zTree用于展示树状结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CodeForces - 299C 】Weird Game (思维,模拟,贪心,博弈,OAE思想)

题干: Yaroslav, Andrey and Roman can play cubes for hours and hours. But the game is for three, so when Roman doesnt show up, Yaroslav and Andrey play another game. Roman leaves a word for each of them. Each word consists of 2n binary characte…

matlab大作业题题单,2011MATLAB大作业-题目-

(1)求解线性规划问题:minZ 4x1 x2 7x3s.t.x1 x2 x3 53x1 x2 x3 4x1 x2 4x3 7x1,x2 0问各xi分别取何值时,Z有何极小值。(2)编写一个函数,使其能够产生如下的分段函数:0.5x,x 2f(x) 1.5 0.25x,2 x 6&#xff…

【CodeForces - 298D】Fish Weight (OAE思想,思维)

题干&#xff1a; It is known that there are k fish species in the polar ocean, numbered from 1 to k. They are sorted by non-decreasing order of their weight, which is a positive number. Let the weight of the i-th type of fish be wi, then 0 < w1 ≤ …

php 字符串比较的规则,PHP字符串比较函数strcmp()与strcasecmp()的用法介绍

使用“”来判断。它和“”的区别&#xff0c;前者强调“identical(相同的&#xff0c;完全相同)”类型也要求一样&#xff1b;后者要求“equal(相等)”&#xff0c;值相同就可以了。或者使用strcmp来判断&#xff0c;但是这不能说明两个字符串是否相等。一般能用 !, 比较两个对…

【CodeForces - 140C】New Year Snowmen (贪心)

题干&#xff1a; As meticulous Gerald sets the table and caring Alexander sends the postcards, Sergey makes snowmen. Each showman should consist of three snowballs: a big one, a medium one and a small one. Sergeys twins help him: theyve already made n sno…

php正文重复度,百度如何判断网页文章的重复度?两个页面相似度确认方法介绍...

在这个科技高度发达的时代&#xff0c;百度已经成为人们能获取消息的主要途径。但如今的百度&#xff0c;到处充斥着一些重复的内容&#xff0c;对用户的访问造成很大的困扰。因此&#xff0c;百度需要对网页重复进行判断&#xff0c;对重复的网页&#xff0c;只选取一些高质量…

【CodeForces - 892C 】Pride (数学,思维构造,gcd)

题干&#xff1a; You have an array a with length n, you can perform operations. Each operation is like this: choose two adjacent elements from a, say x and y, and replace one of them with gcd(x, y), where gcd denotes the greatest common divisor. What is…

php webshell编写,php webshell学习

一、环境kali 192.168.43.177开户apache /etc/init.d/apache2 start/var/www/html/目录下编辑php代码hackbarhttps://github.com/Mr-xn/hackbar2.1.3二、php基础输出函数:echo - 可以输出一个或多个字符串print - 只允许输出一个字符串&#xff0c;返回值总为 1提示&#xff1a…

【CodeForces - 27E】Number With The Given Amount Of Divisors (数论,数学,反素数)

题干&#xff1a; Given the number n, find the smallest positive integer which has exactly n divisors. It is guaranteed that for the given n the answer will not exceed 1018. Input The first line of the input contains integer n (1 ≤ n ≤ 1000). Outp…

js php c语言for循环,小蚂蚁学习C语言(8)——C语言for循环

最近听到流程控制和循环了&#xff0c;感觉语言之间的语法很相似&#xff0c;不听吧&#xff0c;怕耽误某一个不同点或知识点&#xff0c;听吧&#xff0c;消耗很多时间&#xff0c;着实很纠结&#xff0c;莫非这需要传说中的空杯心态&#xff1f;循环 定义和分类定义&#…

【HDU - 1559】最大子矩阵 (二维前缀和裸题)

题干&#xff1a; 给你一个mn的整数矩阵&#xff0c;在上面找一个xy的子矩阵&#xff0c;使子矩阵中所有元素的和最大。 Input 输入数据的第一行为一个正整数T&#xff0c;表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y&#xff08;0<m,n<1000 AND 0…

php _invoke 闭包,PHP新特性之闭包、匿名函数

闭包闭包是什么&#xff1f;1).闭包和匿名函数在PHP5.3中被引入。2).闭包是指在创建时封装函数周围状态的函数&#xff0c;即使闭包所在的环境不存在了&#xff0c;闭包封装的状态依然存在&#xff0c;这一点和Javascript的闭包特性很相似。3).匿名函数就是没有名称的函数&…

*【UVA - 10382】Watering Grass(贪心,区间覆盖问题,思维)

题干&#xff1a; 题目大意&#xff1a; 有一块草坪&#xff0c;长为l&#xff0c;宽为w&#xff0c;在它的水平中心线上有n个位置可以安装喷水装置&#xff0c;各个位置上的喷水装置的覆盖范围为以它们自己的半径ri为圆。求出最少需要的喷水装置个数&#xff0c;如果无论如何…

oracle如何把字符集改回默认,更改oracle字符集

在安装oracle时&#xff0c;选了默认字符集是utf8&#xff0c;后来发现与plsql developer工具联合使用时&#xff0c;会出现各种乱码问题。再加上我的项目也是gbk的&#xff0c;因此&#xff0c;将字符集改成gbk试试。步骤如下&#xff1a;1.查看当前的字符集和语言select * fr…

【HDU - 2570】迷瘴 (贪心,水题,排序,卡精度有坑)

题干&#xff1a; 通过悬崖的yifenfei&#xff0c;又面临着幽谷的考验—— 幽谷周围瘴气弥漫&#xff0c;静的可怕&#xff0c;隐约可见地上堆满了骷髅。由于此处长年不见天日&#xff0c;导致空气中布满了毒素&#xff0c;一旦吸入体内&#xff0c;便会全身溃烂而死。 幸好…

oracle 1天后,Oracle Code One - 第1天 精彩亮点回顾

原标题&#xff1a;Oracle Code One - 第1天 精彩亮点回顾原文作者&#xff1a;Padmini Murthy 产品营销总监2018年Oracle CodOracle CodeOne大会实况 – 第1天2018年Oracle CodeOne大会开幕第一天&#xff0c;精彩纷呈&#xff0c;乐趣繁多。从Developers Exchange活动的欢畅交…

【牛客 - 303D第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Campaign(二进制枚举,位运算,暴力,思维)

题干&#xff1a; 星际争霸(StarCraft)单人战役模式中有很多供人游玩的任务关卡。 tokitsukaze新开始了一关单人战役模式下的任务。在这场战役中&#xff0c;你要作为指挥官指挥克鲁普星区的艾伦人类(Terran)来防御人类的敌人——邪恶异虫(Zerg)的袭击。 这一次&#xff0c;…

oracle mssql 实例,oracle,mysql,SqlServer三种数据库的分页查询的实例

MySql&#xff1a;MySQL数据库实现分页比较简单&#xff0c;提供了 LIMIT函数。一般只需要直接写到sql语句后面就行了。LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量&#xff0c;它有一个或两个参数&#xff0c;如果给出两个参数&#xff0c; 第一个参数指定返回的第…

【牛客 - 303H第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Protoss and Zerg(快速幂取模,组合数学)

题干&#xff1a; 1v1&#xff0c;是星际争霸(StarCraft)中最常见的竞技模式。 tokitsukaze进行了n场1v1。在每一场的1v1中&#xff0c;她都有星灵(Protoss)和异虫(Zerg)两个种族可以选择&#xff0c;分别有a个单位和b个单位。因为tokitsukaze不太擅长玩人类(Terran)&#x…

oracle 控制文件冗余,Oracle 添加冗余控制文件 for RAC On Linux

萌哒萌哒的分割线注&#xff1a;添加冗余控制文件期间需要有关库操作&#xff0c;需注意&#xff01;&#xff01;&#xff01;备份控制文件SQL> alter session set tracefile_identifier‘backupctrl‘;Session altered.SQL> alter database backup controlfile to trac…