哈希算法在字典上的测试应用_安企神电脑终端安全管理监控软件
安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能对比
下载中心
购买咨询
客户列表
关于安企神

哈希算法在字典上的测试应用

更新时间:2022-10-28 15:46:47


本文简介:此前我们了解过二叉树算法,哈希算法,二分法等等,其中由最常用的二叉树算法演变过来的哈希算法乃是从刚开始就学过的,此次因为一些项目的需要,要做一个类似ispell 的软件,其中会产生大量的对单词的查找操作,于是经过一翻研究,得出以下HASH算法,经过验证比一般的查表的FNV HASH算法产生的分布曲线基本没什么两样,并且在大部分的不同字典下,本算法要比查表的FNV HASH算法表现出速度更快,分布更

哈希算法在字典上的测试应用

此前我们了解过二叉树算法,哈希算法,二分法等等,其中由最常用的二叉树算法演变过来的哈希算法乃是从刚开始就学过的,此次因为一些项目的需要,要做一个类似ispell 的软件,其中会产生大量的对单词的查找操作,于是经过一翻研究,得出以下HASH算法,经过验证比一般的查表的FNV HASH算法产生的分布曲线基本没什么两样,并且在大部分的不同字典下,本算法要比查表的FNV HASH算法表现出速度更快,分布更均匀。但是因为是实验结果,所以暂时还没得出有效的数学推论,但是从大量的不同的字典测试数据来看,此算法确实效率不错。
由于以前没有涉及过相关的纯算法的设计,所以刚刚开始的时候,打算随便选用一种HASH,比如说用%除大质数,然后借此搭建一个比较强壮的测试环境,然后打算根据测试结果来改进HASH算法的模型。

最开始,我的HASH函数是这样的:
unsigned int hash_func(char *str, int len)
{
register unsigned int sum = 0;
register char *p = str;

while(p - str < len)
sum += *(p++);

return sum % MAX_PRIME_LESS_THAN_HASH_LEN;
}
非常简单,但是这是绝对不可取的,通过这个函数,我选取了一个23w词的字典做为测试,当HASH SIZE=1024的时候,震荡幅度相当大,那么如何来改进呢?首先想到可能产生的冲突的是这种情况:abcd和acbd,对于这两种单词来说,如果用上面的HASH函数,就一定会发生碰撞,为什么呢?因为每个字符少了关于它自己的位置信息,于是第一次改进版本的HASH函数就给每个字符加上了它的位置信息,将上面所描述的函数改进为:

unsigned int hash_func(char *str, int len)
{
register unsigned int sum = 0;
register char *p = str;

while(p - str < len)
sum += *(p++) * (p–str);

return sum % MAX_PRIME_LESS_THAN_HASH_LEN;
}

某种程度上来说,比不带位置信息产生的分布图要好多了,但是仍然非常的不均匀。那么接来分析产生分布不均匀的原因,因为是用的乘法,所以仍然太过于依赖字母产生的结果了。于是改用XOR操作,选用以下函数:

unsigned int hash_func(char *str, int len)
{
register unsigned int sum = 0;
register char *p = str;

while(p - str < len)
sum += (*(p++) * (p–str)) ^ sum;

return sum % MAX_PRIME_LESS_THAN_HASH_LEN;
}

虽然震荡幅度比较,不过做出来的regression line明显比上两张图片平得多了。但是结果仍然非常不好,从800到100的range太大。原因还是因为数据分布得不够均匀,于是思考单独的用加法来算是不是不太好,根据其他查表类HASH算法的过程,发现其大多都用了高低位来组合成最后的结果,于是我也采用了他们的方法:

unsigned int hash_func(char *str, int len)
{
register unsigned int sum = 0; 
register unsigned int h = 0;
register char *p = str;

while(p - s < len) 
{
register unsigned short a = *(p++);
sum ^=  a * (p - str); 
h ^= a / (p - str);
}
return ((sum << 16) | h) % MAX_PRIME_LESS_THAN_HASH_LEN;
}

最后得出结论,不用查表的方法,而通过字符串本身的位置对字符本身进行修正的方法也能得到结果相当满意的HASH函数,之后换了几个大小不同的字典进行测试,得出的图象都大致和上图一致,非常令人满意。对于这个项目,包括如何检查单词错误,和自动修正等等相关的内容,会随着项目的完成一一在整理成文档,希望大家支持。

立即下载试用

在公司中追剧会不会被软件检测到

很多打工人在公司上班的时候都有偷偷摸鱼的经历,工作一会刷一会视频,小编以前上班的时候,就有同事小明开了双页面,一边工作一边刷视频,由于工位离老板比较远,老板一过来他就切换到工作的页面,老板一走远他就开始悄悄摸鱼,那么在公司里偷偷看视频能被老板监控到吗?

在公司中追剧会不会被软件检测到(图1)

只要老板查看一下后台,还是很容易发现的,一看这几天流量消耗怎么这么多,就知道有人在追剧。

但是办公室那么多人,也不知道是谁,也不知道什么时候,这种方法也并不能称得上明智。

在公司中追剧会不会被软件检测到(图2)


在办公室装监控,不一定能看清电脑屏幕,看得清屏幕的摄像头又价格不菲,这也算是一笔不小的开支,有没有可以什么方法可以直接监控员工的电脑屏幕,而且还能一次看多个员工,聪明的老板来到了安企神的官网,给企业增加了一套安企神,从此员工任何时间在干什么,老板都能一清二楚。

在公司中追剧会不会被软件检测到(图3)

安企神还有几大优点

1、它不仅可以记录员工的电脑操作,还可以实时监控员工的工作效率。同时,该软件还具有远程控制功能,方便管理者对员工电脑进行远程操作和管理。

2、该软件还具有屏幕录制和文件加密功能,能够有效地保护公司的机密信息。能够全面监控员工的电脑使用情况。

3、不仅有助于保护公司的机密信息,还能提高员工的工作效率。简单易用的计算机监控软件,适用于各种规模的企业。


综上所述,在公司中追剧是有可能被软件检测到的,而且老板还能查到员工电脑的后台,还支持文件加密,功能齐全的同时也非常强大好用,而且这款软件在员工电脑通常是比较隐秘的,员工很难发现也很卸载,所以,人在职场,摸鱼需谨慎。


本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。/cjwt/16498.html

~article_body_code~