技术标签: C# gethashcode.
根据MSDN GethashCode方法:
public struct Point
{
private int x;
private int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public override bool Equals(Object obj)
{
if (!(obj is Point)) return false;
Point p = (Point) obj;
return x == p.x & y == p.y;
}
public override int GetHashCode()
{
return ShiftAndWrap(x.GetHashCode(), 2) ^ y.GetHashCode();
}
private int ShiftAndWrap(int value, int positions)
{
positions = positions & 0x1F;
// Save the existing bit pattern, but interpret it as an unsigned integer.
uint number = BitConverter.ToUInt32(BitConverter.GetBytes(value), 0);
// Preserve the bits to be discarded.
uint wrapped = number >> (32 - positions);
// Shift and wrap the discarded bits.
return BitConverter.ToInt32(BitConverter.GetBytes((number << positions) | wrapped), 0);
}
}
我对此感到困惑 shiftandwrap. 方法,我知道它用于避免生成碰撞散列码。但我有如下疑问:
为什么参数 姿势 设置为2?
为什么该方法进行右转 (32位) 首先做左转 阳性,它有特定的意义吗?
如上所述,该方法用于减少碰撞的情况,例如,新点(5,8)vs新点(8,5),但如果我创建一个像新点(3,16)的对象一样,它将获得与新点(5,8)相同的哈希码,所以.. 。这种方法的实际效果是什么?
我不能说他们为什么选择这种特定的哈希码实现,而是关于这个问题:
- 为什么方法执行右移(32位)首先进行左移旋转,它有特定的含义吗?
这 ShiftAndWrap() 这里的方法是一种算法的通用实现,用于将值左转移到n位并将溢出返回到末端。因此,在他们进行班次之前,他们首先得到最左边的n位,以便它们可以将那些申请到最后。
所以这是什么呼唤 ShiftAndWrap() 如果我们只是使用8位值(bytes)并打电话给它 value =(二进制)11010010和 positions = 3:
value = 11010010
positions = 3
wrapped = value >> (8 - positions)
= 11010010 >> (8 - 3)
= 11010010 >> 5
= 00000110
result = value << positions | wrapped
= 11010010 << 3 | 00000110
= 10010000 | 00000110
= 10010110
我们可以看到回报值 10010110 是转移的结果 11010010 通过三位和围绕结果包裹。
至于他们为什么不使用的问题 x ^ y,我怀疑这是因为这意味着 Point(N, M) 总是会产生相同的哈希码 Point(M, N)。通过换来 x 价值,我们可以拥有一个哈希码,不仅需要考虑到 x 和 y 价值观,但也是他们的订单,而 x ^ y 会忽略他们的订单。
在包含相同类型的子组件的数据结构上进行散列时,哈希函数不同地处理每个子组件,以便它们的位置很重要。例如,Java使用此哈希公式for字符串(这里 ^ 表示指数,而不是XOR):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
我们可以看到每个字符乘以31的不同功率,这样 stop 有一个不同的哈希码 pots.
至于他们选择的原因 2 随着转移的职位数量,可能是任意的,或者他们可能已经完成了一些评估,以查看可能产生最佳分配的换档程度。
Java中在一个构造方法中调用另外一个构造方法的好处?以及如何调用? 直接上例子: 如图便在无参构造方法中调用了有参构造,又在有参构造中调用了有参构造。 上图中,我们仅仅使用了红色方框中的一句Student xiaoming=new Student()这一语句,就完成了对学生对象 的服饰和行为的初始化,这也太强了趴。 归根结底,就是今天我们要谈的,通过在一个构造方法中调用另外一个,可以使得代码更加...
微服务,关键其实不仅仅是微服务本身,而是系统要提供一套基础的架构,这种架构使得微服务可以独立的部署、运行、升级,不仅如此,这个系统架构还让微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。这种所谓的“统一的整体”表现出来的是统一风格的界面,统一的权限管理,统一的安全策略,统一的上线过程,统一的日志和审计方法,统一的调...
教程来自官网:https://docs.docker.com/install/linux/docker-ce/ubuntu/#extra-steps-for-aufs 这个很流行,而且我也喜欢这个概念,我喜欢新鲜的东西(可以说相当的井底之蛙了)。所以尝试安装: 首先是仓库的选择,两种,核心在4之上可以用overlay2,也比较推荐用这个,特别是16.04及以上版本已经默认是包含了overlay2了...
某年某月某日,几名蒙面大汉冲进一家银行,一声枪声响起。其中,一名劫匪对银行柜员大喊:“把所有钱都交出来!” 银行工作人员一副生无可恋的表情:“先生,不好意思,所有的钱刚才被一个黑客转走了。” 这可以是一个故事,也可能是现实。 今年2月,第一个利用SWIFT(环球银行金融电信协会)系统进行网络金融盗窃的攻击事件被发现,攻击者成...
创建状态(new):进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。==如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态== 就绪状态(ready):进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行 执行状态(running):进程处于就绪状态被调度后,进程进入执行状态 阻塞状态(waiting):正在执行的...
登陆界面 v 登陆使用Membership的ValidateUser方法验证用户名与密码,根据用户所拥有的角色转到管理页面与个人页面,判断方法Roles.IsUserInRole(userName, “Admin”),可以使用FormsAuthentication.SetAuthCookie(userName,...
数据结构学习(五)——线性表 参考文献: [1]王道论坛.2018年数据结构考研复习指导 [M]北京:电子工业出版社,2017.03 [2]吴伟民,李小妹,刘添添,黄剑锋,苏庆,林志毅,李杨.数据结构(校内教材修订版) 广东工业大学计算机学院,2015.6 目录: 1、简单笔记: 2、顺序表删除最小值: 3、单链表就地逆置: 4、将单链表中元素排序: 5、找出两个单链表公共...
4、fetch子进程 如果收到的后端响应报文的ttl值小于0(失效了),或者响应报文中有Set-cookie首部,或者首部Vary等于“*”,则设定响应报文的ttl值为120秒,返回关键字hit_for_pass进行处理 5、移除单个缓存对象: purge与GET、DEAD一样,也是一种请求类型,用于清理缓存中的某特定对象及其变种(variants),因此,在有着明确要修剪...
博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主 威威喵 原创,请多支持与指教。 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/smile_running 介绍 在安装了 archlinux 之后呢,我们看到的...
程序下载地址: https://download.csdn.net/download/qq_36631079/11238917 设计结果: 在本设计中,设置初始阈值为10º。当倾斜角小于此阈值时点亮绿灯,说明倾角在安全范围内;当倾斜角大于此阈值时点亮红灯,发出报警信号。如图4-1和4-2所示:  ...
When I go to the homepage of my website after clearing my cache and history, it oftentimes takes up to 10 s to load, but it is sporadic. Sometimes it loads quickly; other times it does not. Because we...
I'm swapping a program out that is several years old, and updating the PHP, and MySQL deprication, and am getting jammed up on syntax for preg_match versus ereg. I tried putting slashes everywhere, an...
How can I check if an NTFS drive exists before launching an application. If it's not present I'd like to display an error message. This is what I've got, but I'm no good at scripting. itunes.bat Messa...
I'm trying to extract information from strings like: to info like: Currently I'm not able to parse correctly when the module_name part contains . chars. See table below. The example below show how I e...
I have a form with a text area, I need to remove from the string entered here eventuals multiple spaces and multiple new lines. I have written this function to remove the multiple spaces This function...