哈希

snapraid的错误排除

主宰稳场 提交于 2020-01-21 00:39:09
硬盘坏了,还好坏的是“校验盘”,数据没事,重新做一遍 snapraid即可。 snapraid --force-full sync 0 file errors 0 io errors 1 data errors DANGER! Unexpected data errors! The failing blocks are now marked as bad! Use 'snapraid status' to list the bad blocks. Use 'snapraid -e fix' to recover. 但没想到,最后竟然报错,一个block出错。但不知道是哪个文件,在做一次sync同步,同时保存一下日志。 snapraid -l snap_20200120110201.log -v sync 查询日志文件,发现出错的block应该在某个文件内,看了下是一个word文件。重新打开这个文件,发现正常,另存盘一下,覆盖掉原来的文件。如果嫌弃麻烦,直接在linux中touch一下该文件,重新sync一下,报错解除。 snapraid -v --pre-hash sync 加了预校验pre-hash(-h),增加校验(这样会增加同步时间,但更确保数据校验的正确性),通过检测。 原因可能如下: 1.文件已正确存储(未损坏)在磁盘上。 2.在第一次快照同步期间,文件读取不正确(损坏)

分布式哈希和一致性哈希算法

时间秒杀一切 提交于 2020-01-18 17:25:33
目录 1、数据分布 2、哈希方式 3、一致性哈希方式 笔记来自分布式原理一书,供个人学习。 数据分布 单机系统与分布式系统的最大的区别在于问题的规模,即计算、存储的数据量的区别。将一个单机问题使用分布式解决,首先要解决的就是如何将问题拆解为可以使用多机分布式解决,使得 分布式系统中的每台机器负责原问题的一个子集。由于无论是计算还是存储,其问题输入对象都是数据,所以如何拆解分布式系统的输入数据成为分布式系统的基本问题,我们称这样的数据拆解为数据分布方式。 哈希方式 哈希方式是最常见的数据分布方式,其方法是按照数据的某一特征计算哈希值,并将哈希值与机器中的机器建立映射关系,从而将不同哈希值的数据分布到不同的机器上。所谓数据特征可以是 key-value 系统中的 key,也可以是其他与应用业务逻辑相关的值。例如,一种常见的哈希方式是按数据属于的用户 id 计算哈希值,集群中的服务器按0到机器数减 1 编号,哈希值除以服务器的个数,结果的余数作为处理该数据的服务器编号。工程中,往往需要考虑服务器的副本冗余,将每数台(例如 3)服务器组成一组,用哈希值除以总的组数,其余数为服务器组的编号。图 2-1 给出了哈希方式分数据的一个例子,将数据按哈希值分配到 4 个节点上。 哈希方式特点 : 1.每个节点只计算一部分数据;每个节点只存储一部分数据。 我们假设节点的数量没有变化(实际上不可能)

第五章-索引与算法

别等时光非礼了梦想. 提交于 2020-01-18 02:17:31
5.1 InnoDB存储引擎索引概述 183 InnoDB存储引擎支持以下几种常见的索引: B+树索引 全文索引 哈希索引 InnoDB 存储引擎支持的哈希索引是自适应的,InnoDB 存储引擎会根据表的使用情况自动为表生成哈希索引,不能人为干预是否在一张表中生成哈希索引。 B+树索引目前关系型数据库系统中查找最为常用和最为有效的索引。 B+树索引并不能找到一个给定键值的具体行,只能找到对应的页,然后把页读到内存,再在内存中进行查找。 5.2 数据结构与算法 184 5.2.1 二分查找法 184 5.2.2 二叉查找树和平衡二叉树 185 5.3 B+树 187 5.3.1 B+树的插入操作 187 5.3.2 B+树的删除操作 190 5.4 B+树索引 191 根据叶子节点存放的是否是一整行的信息,可将数据库中的B+树索引分为聚集索引(clustered inex)和辅助索引(非聚集索引)(secondary index) 5.4.1 聚集索引 192 聚集索引(clustered index)就是按照每张表的主键构造一棵 B+树,同时叶子节点中存放的即为表的行记录数据(所有叶子节点加起来就是整张表的行记录数据),也将聚集索引的叶子节点称为数据页。 聚集索引的存储并不是物理上连续的,而是逻辑上连续的。 5.4.2 辅助索引 196 对于辅助索引(Secondary Index

校招面试,关于hashTree

二次信任 提交于 2020-01-16 14:23:26
新手小白 今天在面试的时候,面试官问了hashmap和hashtable和hashtree的区别,我只了解过hashmap’和hashtable的区别和底层实现,对hashtree的底层实属没用过和没了解过,借这个机会,学习下hashtree的基本知识。 哈希树是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,而非叶节点则以其子节点标签的加密哈希作为标签。 优点: 哈希树是一个单向增加的结构,即随着所需要存储的数据量增加而增大。即使数据量减少到原来的数量,但是哈希树的总节点数不会减少。这样做的目的是为了避免结构的调整带来的额外消耗。所以它的结构相当简单且稳定。结构不易被数据量的改变而改变。 查找速度很快:哈希树层级最多能增加到10。因此最多只需要十次取余和比较操作,就可以知道这个对象是否存在。这个在算法逻辑上决定了哈希树的优越性。 缺点: 可能和tree等数据结构来比对,数据没有排序性。 来源: CSDN 作者: 清风一曲 链接: https://blog.csdn.net/weixin_42374301/article/details/104001629

meterpreter 渗透用法

风格不统一 提交于 2020-01-16 01:17:12
获取凭证 hashdump模块(post)可以从 SAM 数据库中导出本地用户账号,credential_collector脚本(post/windows/gather/credentials)也可以从目标设备中收集令牌信息。 脚本和post模块都需要通过“run”命令执行,我在测试环境中运行hashdump模块后的结果如下: 数据的输出格式为:用户名:SID:LM哈希:NTLM哈希:::,所以我们得到了三个用户账号,分别为Administrator, Guest和Coen。 其中的 LM 哈希(aad3b435b51404eeaad3b435b51404ee)跟 NTLM 哈希(31d6cfe0d16ae931b73c59d7e0c089c0)对应的是一个空密码。 接下来要处理的就是用户Coen的密码(f773c5db7ddebefa4b0dae7ee8c50aea)了。虽然我们可以使用类似 John the Ripper 这样的工具来破解密码,但是我们直接 Google 这个哈希之后,就直接得到了 密码明文 : trustno1 。 运行程序 我们还可以使用“execute”命令在目标系统中执行应用程序。这个命令的使用方法如下: execute -f<file> [Options] 运行后它将执行file参数所指定的文件。可选参数如下: -H:创建一个隐藏进程 -a

哈希算法

試著忘記壹切 提交于 2020-01-15 06:19:50
哈希算法 /*--> */ /*--> */ 哈希算法 什么是哈希算法 哈希算法的应用 应用一:安全加密 应用二:唯一标识 应用三:数据校验 应用四:负载均衡 应用五:数据分片 应用六:分布式存储 哈希算法 什么是哈希算法 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法) 对输入数据非常敏感,哪怕原始数据只修改了一个Bit,最后得到的哈希值也大不相同 散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小 哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。 哈希算法的应用 应用一:安全加密 说到哈希算法的应用,最先想到的应该就是安全加密。最常用于加密的哈希算法是MD5(MD5 Message-Digest Algorithm,MD5消息摘要算法)和SHA(Secure Hash Algorithm,安全散列算法)。 对用于加密的哈希算法来说,有两点格外重要。第一点是很难根据哈希值反向推导出原始数据,第二点是散列冲突的概率要很小。 第一点很好理解,加密的目的就是防止原始数据泄露,所以很难通过哈希值反向推导原始数据,这是一个最基本的要求。所以我着重讲一下第二点。实际上,不管是什么哈希算法,我们只能尽量减少碰撞冲突的概率,理论上是没办法做到完全不冲突的。 没有绝对安全的加密。越复杂、越难破解的加密算法,需要的计算时间也越长。比如SHA

高维向量快速检索方法Locality Sensitive Hashing之一汉明空间和欧式空间实现

给你一囗甜甜゛ 提交于 2020-01-15 01:14:07
1 高维向量检索问题 高维向量检索主要解决由数据维数增加所引发检索速度急剧下降的的问题。高维空间中数据的特点主要包括以下三个方面: (1) 稀疏性。随着维度增长,数据在空间分布的稀疏性增强; (2) 空空间现象。对于服从正态分布的数据集,当维数大约增加到10时,只有不到1%的数据点分布在中心附近; (3) 维度效应。随着维数的增加,对索引的维护效率急剧下降,并且高维空间中数据点之间的距离接近于相等。 2 树索引方法在高维检索中的缺点 传统的树索引方法,如基于数据划分的索引R-tree、R-tree、SR-tree、k-d tree等和基于空间划分的索引quad-tree、kdb-tree等,在特征维度不高的情况下具有良好的性能,在特征维数足够高的情况下(超过几十维),它们的性能会退化到最原始的顺序查找,这就是所谓的“维度灾难”。树索引方法在高维情况下主要面临着三个困难: (1) 每次划分只使用了特征向量一个维度的信息,在高维情况下这种数据划分方法效率很低; (2) 需要某种形状的覆盖对象来表示某个区域,而固定形状的覆盖对象对区域的描述会有偏差。在高维情况下这个偏差会更明显; (3) 为了获得精确最近邻检索的结果,索引的性能退化到顺序查找的程度。 3 ANN和LSH 由于精确最近邻搜索计算代价高、算法效率低,人们采用近似最近邻搜索方法完成检索的任务。当前

极客时间课程《数据结构与算法之美》笔记07 - 哈希算法

故事扮演 提交于 2020-01-14 06:02:10
哈希算法-如何防止数据库中的用户信息被脱库 定义和原理: 将任意长度的二进制值串映射为固定长度的二进制值串 要求: 不能反向推导(单向哈希算法) 对输入数据敏感,哪怕只修改了一个Bit,最后得到的哈希值也大不相同。 散列冲突概率要很小。 执行效率要高,针对较长的文本,也能很快地计算出哈希值。 哈希算法的应用很多,常见有: 安全加密、唯一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储 唯一标识 在海量的图片信息中,搜索一张图是否存在。任何文件在计算机中都可以表示成二进制码串,将图片的二进制码串开头、中间、结尾分别取100个字节,然后再通过哈希得到唯一标识。(减轻工作量) 数据校验 BT下载的时候会做数据校验。 散列函数 防范字典攻击 引入一个盐(salt),跟用户密码组合在一起,增加密码复杂度,然后用组合后的字符串来做哈希算法加密,将它存储到数据库中,进一步增加破解的难度。 除此之外,一些公司采用的方法:无论密码长度多少,采用计算hash时间都固定或者足够慢的算法,比如: PBKDF2WithHmacSHA1。避免因计算时间不一样而泄露字符串长度信息。 负载均衡 负载均衡需要维护一个映射表,哈希算法能很方便地维护这个功能,通过客户端IP或者会话ID计算哈希,通过和服务器列表的大小进行取模运算,最终得到服务器编号。 数据分片 统计“搜索关键词”出现的次数,1T的文件日志

redis集群搭建

99封情书 提交于 2020-01-14 03:34:03
1.单机安装(会的直接跳到下面集群安装) 下载,解压,安装 >> cd /usr/local/app >> wget http://download.redis.io/releases/redis-4.0.10.tar.gz >> tar -zxvf redis-4.0.10.tar.gz >> mv redis-4.0.10.tar.gz redis >> cd redis >> make MALLOC = libc >> make install 安装完成,这时候会在/usr/local/bin/目录下看到redis-server、redis-cli等可执行脚本,进入看一下,如果没有,就要去解压目录复制进去了。 修改配置 >> vim /usr/local/app/redis/redis.conf 修改以下两个地方 #默认是只有一个127.0.0.1,这个时候只能自己连接,其他局域网内是连接不上的。所以,需要配置多个 IP ,这样就可以局域网内进行连接了。我设置的0.0.0.0,虽然这不太安全,方便我在其它地方连接。 bind 0.0.0.0 ##后台启动 daemonize yes 启动redis >> redis-server /usr/local/app/redis/redis.conf ##查看是否启动成功 >> netstat -anp | grep 6379 >>

哈希算法及其应用场景

淺唱寂寞╮ 提交于 2020-01-12 20:26:32
哈希算法的概念和特性 我们前面分享了散列表、散列函数和散列冲突,其实也可以译作哈希表、哈希函数和哈希冲突,是一个意思。哈希算法简单理解就是实现前面提到的哈希函数的算法,用于将任意长度的二进制值串映射为固定长度的二进制值串,映射之后得到的二进制值就是哈希值(散列值)。 我们日常开发中最常见的哈希算法应用就是通过 md5 函数对数据进行加密了,md5 就是一个哈希函数,结合 md5 我们可以归纳出哈希算法的一般特性: 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向算法,不可逆); 对输入数据非常敏感,哪怕原始数据只修改了一个比特,最后得到的哈希值也大不相同; 散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小; 哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值 哈希算法的应用 1、场景一:安全加密 日常用户密码加密通常使用的都是 md5、sha等哈希函数,因为不可逆,而且微小的区别加密之后的结果差距很大,所以安全性更好。 2、场景二:唯一标识 比如 URL 字段或者图片字段要求不能重复,这个时候就可以通过对相应字段值做 md5 处理,将数据统一为 32 位长度从数据库索引构建和查询角度效果更好,此外,还可以对文件之类的二进制数据做 md5 处理,作为唯一标识,这样判定重复文件的时候更快捷。 3、场景三:数据校验 比如从网上下载的很多文件