哈希

MySQL中的索引

五迷三道 提交于 2020-01-25 21:52:06
索引是一个比较复杂的模块,要学好需要多花点时间。索引是MySQL进行查询优化的一个很重要的手段,如果用得好,可以成为数据访问的有力而且灵活的工具,快速提高查询效率,所以多花点时间好好学习和思考这一块内容也是很值得的。下面,对MySQL中索引的内容做了一下归纳总结,有点零散。 01、索引基础 1、索引是存储引擎用于快速找到记录的一种数据结构。 2、索引是对查询性能优化最有效的手段。 3、B-树索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是索引的根节点开始进行搜索。根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下一层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么是找到对应的值,要么该记录不存在。 4、B-树对索引列是顺序组织存储的,所以很适合查找范围数据。 5、使用B-树索引适用于全键值、键值范围或键前缀查找。具体地: (1)全值匹配 (2)匹配最左前缀 (3)匹配列前缀 (4)匹配范围值 (5)精确匹配某一列并范围匹配另一列 (6)只访问索引的查询 6、如果不是按照索引的最左列开始查找,则无法使用索引。 7、不能跳过索引中的列。 8、如果查询中有某个列的范围查找,则其右边所有列都无法使用索引优化查找。 9、哈希索引:对于每一行数据

No.24-VulnHub-Lin.Security: 1-Walkthrough渗透学习

陌路散爱 提交于 2020-01-25 21:04:10
** VulnHub-Lin.Security: 1-Walkthrough ** 靶机地址:https://www.vulnhub.com/entry/linsecurity-1,244/ 靶机难度:中级(CTF) 靶机发布日期:2018年7月11日 靶机描述:在in.security,我们希望开发一个Linux虚拟机,该虚拟机在编写本文时基于最新的Ubuntu发行版(18.04 LTS),但存在许多漏洞,这些漏洞使用户无法升级扎根在盒子上。旨在帮助理解某些内置应用程序和服务(如果配置错误)可能会被攻击者滥用。 我们已将该框配置为模拟真实世界的漏洞(尽管位于单个主机上),这将帮助您完善本地特权升级技能,技术和工具集。从简单到中级都有许多挑战,我们很高兴看到您用来解决这些挑战的方法! 该图像不到1.7 GB,可以使用上面的链接下载。打开OVA文件时,将导入并使用NAT适配器配置名为lin.security的VM,但是可以通过首选虚拟化平台的首选项将其更改为桥接。 首先,您可以使用以下凭据登录主机:bob / secret 目标:得到root权限 作者: 大余 时间:2020-01-20 请注意:对于所有这些计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为解决该CTF的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标

SHA256加密算法

余生长醉 提交于 2020-01-25 11:40:57
概述 对于任意长度的消息,SHA256都会产生一个256位的哈希值,称作消息摘要。这个摘要相当于四个长度为32个字节的数组,通常有一个长度为64的十六进制字符串来表示,其中1个字节=8位,一个十六进制的字符的长度为4位。 总体上,HSA256与MD4、MD5以及HSA-1等哈希函数的操作流程类似,待哈希的消息在继续哈希计算之前首先要进行以下两个步骤: 对消息进行补位处理,是的最终的长度是512位的倍数 然后以512位为单位对消息进行分块为M (1) , M (2) ,…M (N) 消息区块将进行逐个处理:从一个固定的初始哈希H (0) 开始,进行以下序列的计算: H (i) = H (i-1) + C M (i) (H (i-1) ) 其中C是SHA256的压缩函数,+是mod 2 32 加法,即将两个数字加在一起。 针对每一个消息M,都将其hash为长度为64位的16进制表示,既H。 来源: CSDN 作者: TechNewBee 链接: https://blog.csdn.net/etrpaul/article/details/103936737

当你set一个key-value的时候,redis集群是怎么给你放到相应的节点?

别等时光非礼了梦想. 提交于 2020-01-24 05:08:25
Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群不能使用mset,mget这样的指令,也就是不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下保证不了原子性。 Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势: 自动分割数据到不同的节点上。 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。 Redis 集群的数据分片 Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念。 Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么: 节点 A 包含 0 到 5500号哈希槽. 节点 B 包含5501 到 11000 号哈希槽. 节点 C 包含11001 到 16384号哈希槽. 这种结构很容易添加或者删除节点. 比如如果我想新添加个节点D, 我需要从节点 A, B, C中得部分槽到D上. 如果我想移除节点A,需要将A中的槽移到B和C节点上,然后将没有任何槽的A节点从集群中移除即可. 由于从一个节点将哈希槽移动到另一个节点并不会停止服务

字符串哈希

旧巷老猫 提交于 2020-01-23 12:18:04
方法很牛逼,直接看题: 给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数 l 1 , r 1 , l 2 , r 2 l1,r1,l2,r2,请你判断[ l 1 , r 1 l1,r1]和[ l 2 , r 2 l2,r2]这两个区间所包含的字符串子串是否完全相同。 字符串中只包含大小写英文字母和数字。 输入格式 第一行包含整数n和m,表示字符串长度和询问次数。 第二行包含一个长度为n的字符串,字符串中只包含大小写英文字母和数字。 接下来m行,每行包含四个整数 l 1 , r 1 , l 2 , r 2 l1,r1,l2,r2,表示一次询问所涉及的两个区间。 注意,字符串的位置从1开始编号。 输出格式 对于每个询问输出一个结果,如果两个字符串子串完全相同则输出“Yes”,否则输出“No”。 每个结果占一行。 数据范围 1 ≤ n , m ≤ 10 5 1≤n,m≤105 输入样例: 8 3 aabbaabb 1 3 5 7 1 3 6 8 1 2 1 2 输出样例: Yes No Yes###################################################### 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int N = 1e5+10; 5 const int

论文阅读(6):Deep Clustering and Block Hashing Network for Face Image Retrieval

走远了吗. 提交于 2020-01-23 03:14:31
1.Motivation a. inter-class similarities(similar appearance between different persons) b. intra-class variations(same person with different pose, facial expressions, illuminations) 人脸图像存在类间相似,类内变化大的问题。很多方法都会针对这个问题设计Loss或者算法 2.Contribution 针对上述的问题,文章主要做的事情有: a. 用center-clustering loss来最小化属于同一类的人脸特征之间的距离,解决intra-class variation b. 分别对人脸的实数值特征和哈希码应用classification loss(即softmax),目的是学习出具有判别性的特征/哈希码, 将人脸从众多身份中辨认出来 c. 提出block hashing layer,这一层的作用是同时减少哈希码之间的冗余度,以及参数的数量 3.Proposed Approach (1) 网络 和之前的几篇深度哈希论文一样,取最后一个池化层和最后一个卷积层的输出分别做全局最大池化,然后合并在一起进入全连层。这样做的目的是提取多尺度特征,并且减少参数的数量。 (2) 损失函数 文章用了四个loss,

兔子与兔子----字符串哈希

谁都会走 提交于 2020-01-22 17:55:46
链接:https://ac.nowcoder.com/acm/contest/1008/B 来源:牛客网 很久很久以前,森林里住着一群兔子。有一天,兔子们想要研究自己的 DNA 序列。我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母),然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是否一模一样。注意两个兔子一模一样只可能是他们的 DNA 序列一模一样。 输入描述: 第一行一个 DNA 字符串 S。 接下来一个数字 m,表示 m 次询问。 接下来 m 行,每行四个数字 l1, r1, l2, r2,分别表示此次询问的两个区间,注意字符串的位置从1开始编号。 其中 1≤strlen(s),m≤1000000 输出描述: 对于每次询问,输出一行表示结果。如果两只兔子完全相同输出 Yes,否则输出 No(注意大小写) 示例1 输入 复制 aabbaabb 3 1 3 5 7 1 3 6 8 1 2 1 2 输出 复制 Yes No Yes 哈希的裸题,直接套用哈希字符串就行。 # include <bits/stdc++.h> using namespace std ; typedef unsigned long long LL ; const int N = 1e6 + 5 , b =

【哈希-字符串匹配+模拟栈】SCU - 4438: Censor

做~自己de王妃 提交于 2020-01-22 11:44:59
写在前:由于哈希没有好好听讲,也没有下来看。这是排位我开的第一道题,直接string暴力T了。昨天其实就看了哈希,太浮躁,于是本来很简单的哈希愣是没看懂。(于是放弃去看爱5了23333333)今天补上。 字符串匹配_哈希 我们将'a' - 'z'字符看成1-26,一个字符串就相当于一个某 合适进制 的“大数”,那么它的哈希值就是对应位 按权相加. 初始化 : Hash[0] = 0; Hash[i] = Hash[i - 1] * base + s[i] - 'a' + 1 ; 为了优化,于是区间的哈希值就有公式: 其中的base就是我们的合适进制,一般是取大质数。对于 我们可以预处理出来存在数组p[ ]中,对应 ,那我们遍历的时候就很方便了。 我们将Hash[ ]用unsighed long long,那么如果万一溢出,会自动取余 。这就有可能会造成哈希冲突。但是概率极低。(至于如何解决哈希冲突,我个小白自然是不会了。我师父说叫我百度……等以后做题遇见再说吧。23333333) SCU - 4438: Censor 题意:给一个敏感字符串tar,再给一个目标字符串s。要求是目标字符串中不能出现敏感字符串,一旦出现就删掉咯qwq. (删掉中间的可能前后连起来又出现了敏感字符串),所以最终我们能得到什么合法的字符串呢?字符串可以为空。 思路:首先我们就先将敏感字符串的哈希值算出来

分布式存储系统横向对比

折月煮酒 提交于 2020-01-21 03:26:34
(一)关键问题 数据分布 对于存储系统,最重要的问题就是数据分布,即什么样的数据放置在什么样的节点上。数据分布时需要考虑数据是否均衡、以后是否容易扩容等一系列问题。不同的数据分布方式也存在不同的优缺点,需要根据自身数据特点进行选择。 1)哈希分布 => 随机读取 取模直接哈希: 将不同哈希值的数据分布到不同的服务器上 关键: 找出一个散列特性很好的哈希函数 问题: 增加、减少服务器时的大量数据迁移 解决: 1)将<哈希值,服务器>元数据存储在元数据服务器中;2)一致性哈希 一致性哈希: 给系统每个节点分配一个随机token,这些token构成一个hash环。执行数据存放操作时,先计算key的hash值,然后存放到顺时针方向第一个大于或者等于该hash值的token所在节点。 关键: 哈希值变成了一个范围,每个物理节点上存储的数据是哈希值处于前一段范围的数据。 优点: 节点增加/删除时只会影响到在hash环中相邻的节点,而对其他节点没影响。 维护每台机器在哈希环中的位置方式:1) 记录它前一个&后一个节点的位置信息,每次查找可能遍历整个哈希环所有服务器;2) O(logN)位置信息,查找的时间复杂度为O(logN);3) 每台服务器维护整个集群中所有服务器的位置信息,查找服务器的时间复杂度为O(1) 虚拟节点: 将哈希取模的模数取得很大,就会得到更多的哈希值,这个哈希值成为逻辑节点

Java 容器 - 一文详解HashMap

扶醉桌前 提交于 2020-01-21 02:36:04
Map 类集合 Java Map类集合,与Collections类集合存在很大不同。它是与Collection 类平级的一个接口。 在集合框架中,通过部分视图方法这一根 微弱的线联系起来。 (在之后的分享中,我们会讨论到Collections 框架的内容) Map类集合中的存储单位是K-V键值对,就是 使用一定的哈希算法形成一组比较均匀的哈希值作为Key,Value值挂在Key上。 Map类 的特点: 没有重复的Key,可以具有多个重复的Value Value可以是List/Map/Set对象 KV是否允许为null,以实现类的约束为准 Map集合类 Key Value Super JDK 说明 Hashtable 不允许为 null 不允许为 null Dictionary 1.0 (过时)线程安全类 ConcurrentHashMap 不允许为 null 不允许为 null AbstractMap 1.5 锁分段技术或CAS(JDK8 及以上) TreeMap 不允许为 null 允许为 null AbstractMap 1.2 线程不安全(有序) HashMap 允许为 null 允许为 null AbstractMap 1.2 线程不安全(resize 死链问题) 从jdk1.0-1.5,这几个重点KV集合类,见证了Java语言成为工业级语言的成长历程。 知识点: Map