CN107357632A - 一种命令行解析方法及装置 - Google Patents
一种命令行解析方法及装置 Download PDFInfo
- Publication number
- CN107357632A CN107357632A CN201710581783.0A CN201710581783A CN107357632A CN 107357632 A CN107357632 A CN 107357632A CN 201710581783 A CN201710581783 A CN 201710581783A CN 107357632 A CN107357632 A CN 107357632A
- Authority
- CN
- China
- Prior art keywords
- keyword
- hash
- optional
- element position
- cryptographic hash
- 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
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
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
本发明公开一种命令行解析方法及装置,包括:获取用户输入的可选关键字;按照哈希算法公式计算得到所述可选关键字的哈希值;按照所述哈希值,索引到哈希数组中对应的元素位置;判断所述元素位置中是否包含与所述可选关键字相同的匹配关键字,若否,则通知用户输入错误,若是,则执行所述可选关键字对应的动作。采用哈希算法替代常见的按关键字依次进行字符串比较和解析的处理方法,减少了字符串比较,提高了命令行解析过程的性能。
Description
技术领域
本发明涉及数据处理领域,更具体地说,涉及一种命令行解析方法及装置。
背景技术
在存储设备管理领域,常见的方法有命令行方式。对于存储设备支持的命令行方式,常见的实现方法是命令关键字比较、从命令树中查找等处理过程。有一种情况,在某个命令关键字的后面可以跟随很多关键字时,按照常规的实现方式,就需要先获取用书输入的命令关键字,然后将用户输入的命令关键字后面跟随的关键字与所有可能跟随的关键字进行匹配,直到匹配到与用户输入的命令关键字后面跟随的关键字为止,或者与所有可能跟随的关键字对比完后也未发现能够相匹配的。按照匹配结果程序决定命令需要执行的动作或报错。例如,实现一个命令程序deviceinfo show命令,用以下命令形式的命令:
“deviceinfo show temperature”,用于显示设备温度信息;
“deviceinfo show power”,用于显示设备电源信息;
“deviceinfo show fan”,用于显示设备风扇信息;
“deviceinfo show led”,用于显示设备指示灯信息;
“deviceinfo show slot”,用于显示设备外围电路插槽信息;
“deviceinfo show cpu”,用于显示设备中央处理器信息;
“deviceinfo show memory”,用于显示设备内存条信息;
“deviceinfo show usb”,用于显示USB接口信息;
“deviceinfo show serial”,用于显示串口状态信息;
“deviceinfo show network”,用于显示网口状态信息;
“deviceinfo show sas”,用于显示SAS接口信息;
“deviceinfo show fc”,用于显示FC接口信息。
命令关键字“deviceinfo show”可以跟随的关键字包括temperature、power、fan、led、slot、cpu、memory、usb、serial、network、sas、fc等等。在接受用户输入的命令后,先获取命令关键字“deviceinfo show”;再将用书输入的命令关键字后跟随的关键字依次与temperature、power、fan、led、slot、cpu、memory、usb、serial、network、sas、fc等等所有可能的字符串进行比较。因此,在某个命令行出现了特别多的可选关键字时,关键字字符串比较的处理方式会导致程序本身比较臃肿和繁琐,并且太多的字符串比较也会影响到程序处理的性能。
发明内容
有鉴于此,本发明提出一种命令行解析方法及装置,欲减少字符串比较,提高命令行解析过程的性能。
为了实现上述目的,现提出的方案如下:
一种命令行解析方法,包括:
获取用户输入的可选关键字;
按照哈希算法公式计算得到所述可选关键字的哈希值;
按照所述哈希值,索引到哈希数组中对应的元素位置;
判断所述元素位置中是否包含与所述可选关键字相同的匹配关键字,若否,则通知用户输入错误,若是,则执行所述可选关键字对应的动作。
优选的,在所述获取用户的可选关键字前,还包括:
通过哈希算法计算得到匹配关键字的索引哈希值,将索引哈希值作为哈希数组的索引,将匹配关键字存入对应的哈希数组的元素位置。
优选的,在所述元素位置允许存放多个匹配关键字。
一种命令行解析装置,包括:
获取关键字单元,用于获取用户输入的可选关键字;
哈希值计算单元,用于按照哈希算法公式计算得到所述可选关键字的哈希值;
位置索引单元,用于按照所述哈希值,索引到哈希数组中对应的元素位置;
命令解析单元,判断所述元素位置中是否包含与所述可选关键字相同的匹配关键字,若否,则通知用户输入错误,若是,则执行所述可选关键字对应的动作。
优选的,上述装置还包括:
哈希数组建立单元,用于在所述获取用户的可选关键字前,通过哈希算法计算得到匹配关键字的索引哈希值,将索引哈希值作为哈希数组的索引,将匹配关键字存入对应的哈希数组的元素位置。
与现有技术相比,本发明的技术方案具有以下优点:
上述技术方案提供的一种命令行解析方法及装置,包括:获取用户输入的可选关键字;按照哈希算法公式计算得到所述可选关键字的哈希值;按照所述哈希值,索引到哈希数组中对应的元素位置;判断所述元素位置中是否包含与所述可选关键字相同的匹配关键字,若否,则通知用户输入错误,若是,则执行所述可选关键字对应的动作。采用哈希算法替代常见的按关键字依次进行字符串比较和解析的处理方法,减少了字符串比较,提高了命令行解析过程的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种命令行解析方法的流程图;
图2为本发明实施例提供的一种命令行解析装置的结构示意图;
图3为本发明实施例提供的另一种命令行解析装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供一种命令行解析方法,参见图1,该方法可以包括:
步骤S11:获取用户输入的可选关键字;
用户输入的命令关键字后面跟随的关键字即为可选关键字。例如,命令关键字deviceinfo show后面跟随的关键字emperature、power、fan、led、slot、cpu、memory、usb、serial、network、sas或fc均为可选关键字。当用户输入deviceinfo show temperature指令时,获取temperature。
步骤S12:按照哈希算法公式计算得到所述可选关键字的哈希值;
利用哈希算法公式计算可选关键字的哈希值。假设哈希算法函数hash(),对temperature进行哈希计算得到哈希值hash(temperature)。
步骤S13:按照所述哈希值,索引到哈希数组中对应的元素位置;
哈希数组是根据哈希值而直接进行访问的数据结构。也就是说,它通过把哈希值映射到表中一个位置来访问。建立哈希数组时,利用哈希算法公式计算匹配关键字的哈希值,将此哈希值作为哈希数组的索引,将匹配关键字存入对应的哈希数组元素位置。哈希数组元素位置存储的元素包括以下属性:关键字名字字符串和对应关键字的动作。假设哈希数组命名为keys_table,keys_table[hash(temperature)]的位置存储元素temperature,关键字名字字符串是“temperature”,对应的temperature关键字的动作是显示温度信息。
步骤S14:判断所述元素位置中是否包含与所述可选关键字相同的匹配关键字,若否,则通知用户输入错误,若是,则执行所述可选关键字对应的动作。
若哈希数组中包含与可选关键相同的匹配关键字,那么就可以通过哈希计算的方式匹配到该匹配关键字。例如可选关键字为“temperature”,则可以通过哈希计算得到哈希值hash(temperature),进而索引到元素位置keys_table[hash(temperature)],通过将“temperature”与元素位置keys_table[hash(temperature)]包含的匹配关键字“temperature”比对,匹配成功,执行对应的temperature关键字的动作。
本实施例提供的一种命令行解析方法,采用哈希算法替代常见的按关键字依次进行字符串比较和解析的处理方法,减少了字符串比较,提高了命令行解析过程的性能。
在所述获取用户的可选关键字步骤前,还包括:通过哈希算法计算得到匹配关键字的索引哈希值,将索引哈希值作为哈希数组的索引,将匹配关键字存入对应的哈希数组的元素位置。
例如针对命令关键字“deviceinfo show”可以跟随的匹配关键字包括temperature、power、fan、led、slot、cpu、memory、usb、serial、network、sas、fc等等。假设哈希算法函数hash(),对匹配关键字进行哈希计算得到哈希值hash(temperature)=1、hash(power)=2、hash(fan)=3、hash(led)=4、hash(slot)=5、hash(cpu)=6、hash(memory)=7、hash(usb)=8、hash(serial)=9、hash(network)=10、hash(sas)=11、hash(fc)=12、……、第100个匹配关键字xxx计算得出hash(xxx)=100。则在keys_table[1]元素位置存入匹配关键字“temperature”;在keys_table[2]元素位置存入匹配关键字“power”;……;在keys_table[100]元素位置存入匹配关键字“xxx”。
选取的哈希算法公式如果并不是那么完美,将可能导致多于一个的匹配关键字计算出的哈希值是相同的。这种情况就导致建立的哈希数组时出现了某个元素位置需要存放多于一个的匹配关键字。所以为了解决这种因为哈希值碰撞造成的冲突,在元素位置允许存放多个匹配关键字。也就是说哈希数组在存放元素时,允许让多于一个匹配关键字的元素建立链表关系,他们使用相同的哈希数组索引值。判断元素位置中是否包含与可选关键字相同的匹配关键字时,按照链表顺序依次比较链表上的匹配关键字。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
本实施例提供一种命令行解析装置,参见图2,该装置可以包括:
获取关键字单元11,用于获取用户输入的可选关键字;
哈希值计算单元12,用于按照哈希算法公式计算得到所述可选关键字的哈希值;
位置索引单元13,用于按照所述哈希值,索引到哈希数组中对应的元素位置;
命令解析单元14,判断所述元素位置中是否包含与所述可选关键字相同的匹配关键字,若否,则通知用户输入错误,若是,则执行所述可选关键字对应的动作。
本实施例提供的一种命令行解析装置,采用哈希算法替代常见的按关键字依次进行字符串比较和解析的处理方法,减少了字符串比较,提高了命令行解析过程的性能。
本实施例提供另一种命令行解析装置,参见图3,相对图2公开的装置还可以包括:哈希数组建立单元10,用于在所述获取用户的可选关键字前,通过哈希算法计算得到匹配关键字的索引哈希值,将索引哈希值作为哈希数组的索引,将匹配关键字存入对应的哈希数组的元素位置。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对本发明所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种命令行解析方法,其特征在于,包括:
获取用户输入的可选关键字;
按照哈希算法公式计算得到所述可选关键字的哈希值;
按照所述哈希值,索引到哈希数组中对应的元素位置;
判断所述元素位置中是否包含与所述可选关键字相同的匹配关键字,若否,则通知用户输入错误,若是,则执行所述可选关键字对应的动作。
2.根据权利要求1所述的方法,其特征在于,在所述获取用户的可选关键字前,还包括:
通过哈希算法计算得到匹配关键字的索引哈希值,将索引哈希值作为哈希数组的索引,将匹配关键字存入对应的哈希数组的元素位置。
3.根据权利要求2所述的方法,其特征在于,在所述元素位置允许存放多个匹配关键字。
4.一种命令行解析装置,其特征在于,包括:
获取关键字单元,用于获取用户输入的可选关键字;
哈希值计算单元,用于按照哈希算法公式计算得到所述可选关键字的哈希值;
位置索引单元,用于按照所述哈希值,索引到哈希数组中对应的元素位置;
命令解析单元,判断所述元素位置中是否包含与所述可选关键字相同的匹配关键字,若否,则通知用户输入错误,若是,则执行所述可选关键字对应的动作。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
哈希数组建立单元,用于在所述获取用户的可选关键字前,通过哈希算法计算得到匹配关键字的索引哈希值,将索引哈希值作为哈希数组的索引,将匹配关键字存入对应的哈希数组的元素位置。
6.根据权利要求5所述的方法,其特征在于,在所述元素位置允许存放多个匹配关键字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710581783.0A CN107357632A (zh) | 2017-07-17 | 2017-07-17 | 一种命令行解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710581783.0A CN107357632A (zh) | 2017-07-17 | 2017-07-17 | 一种命令行解析方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107357632A true CN107357632A (zh) | 2017-11-17 |
Family
ID=60292245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710581783.0A Pending CN107357632A (zh) | 2017-07-17 | 2017-07-17 | 一种命令行解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107357632A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108090358A (zh) * | 2017-12-28 | 2018-05-29 | 哈尔滨安天科技股份有限公司 | 一种防御哈希碰撞躲避反病毒检测的方法及系统 |
CN113407370A (zh) * | 2020-03-16 | 2021-09-17 | 中国移动通信有限公司研究院 | 根因错误的聚类方法、装置、设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949221A (zh) * | 2006-11-27 | 2007-04-18 | 北京金山软件有限公司 | 存储元素的方法与系统及查找元素的方法与系统 |
CN101345694A (zh) * | 2007-07-11 | 2009-01-14 | 上海未来宽带技术及应用工程研究中心有限公司 | 一种快速查找定位和匹配访问控制列表的方法 |
US20150046450A1 (en) * | 2013-08-08 | 2015-02-12 | Hitachi Solutions, Ltd. | Searchable code processing system and method |
CN104866502A (zh) * | 2014-02-25 | 2015-08-26 | 深圳市中兴微电子技术有限公司 | 数据匹配的方法及装置 |
-
2017
- 2017-07-17 CN CN201710581783.0A patent/CN107357632A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949221A (zh) * | 2006-11-27 | 2007-04-18 | 北京金山软件有限公司 | 存储元素的方法与系统及查找元素的方法与系统 |
CN101345694A (zh) * | 2007-07-11 | 2009-01-14 | 上海未来宽带技术及应用工程研究中心有限公司 | 一种快速查找定位和匹配访问控制列表的方法 |
US20150046450A1 (en) * | 2013-08-08 | 2015-02-12 | Hitachi Solutions, Ltd. | Searchable code processing system and method |
CN104866502A (zh) * | 2014-02-25 | 2015-08-26 | 深圳市中兴微电子技术有限公司 | 数据匹配的方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108090358A (zh) * | 2017-12-28 | 2018-05-29 | 哈尔滨安天科技股份有限公司 | 一种防御哈希碰撞躲避反病毒检测的方法及系统 |
CN108090358B (zh) * | 2017-12-28 | 2021-07-20 | 哈尔滨安天科技集团股份有限公司 | 一种防御哈希碰撞躲避反病毒检测的方法及系统 |
CN113407370A (zh) * | 2020-03-16 | 2021-09-17 | 中国移动通信有限公司研究院 | 根因错误的聚类方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102171702B (zh) | 机密信息的检测 | |
CN103902698B (zh) | 一种数据存储系统和存储方法 | |
EP3550444B1 (en) | Query generation based on a logical data model | |
US7844607B2 (en) | Annotation of query components | |
CN103902701B (zh) | 一种数据存储系统和存储方法 | |
CA2957674C (en) | Testing insecure computing environments using random data sets generated from characterizations of real data sets | |
US20110234593A1 (en) | Systems and methods for contextual mapping utilized in business process controls | |
US10169208B1 (en) | Similarity scoring of programs | |
KR20060048780A (ko) | 정보 검색 시스템에서의 문구 기반 인덱싱 | |
CN109062936B (zh) | 一种数据查询方法、计算机可读存储介质及终端设备 | |
US7765219B2 (en) | Sort digits as number collation in server | |
CN107844425A (zh) | 一种数据库语句检查方法和装置 | |
CN103714086A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN115577701B (zh) | 针对大数据安全的风险行为识别方法、装置、设备及介质 | |
CN102999637A (zh) | 根据文件特征码为文件自动添加文件标签的方法及系统 | |
CN107357632A (zh) | 一种命令行解析方法及装置 | |
US9984108B2 (en) | Database joins using uncertain criteria | |
CN109240903A (zh) | 一种自动评估的方法和装置 | |
CN106294714A (zh) | 一种信息采集方法和装置 | |
CN110245281A (zh) | 互联网资产信息收集方法及终端设备 | |
CN103442016B (zh) | 基于网站指纹推送白名单的方法及系统 | |
CN109597933B (zh) | 医疗关键词精确搜索的方法、系统、设备及存储介质 | |
CN116860311A (zh) | 脚本分析方法、装置、计算机设备及存储介质 | |
Zhang et al. | A program plagiarism detection model based on information distance and clustering | |
US11645274B2 (en) | Minimizing group generation in computer systems with limited computing resources |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171117 |