热门问题-技术问答-汇集知识碎片解决技术难题-第2页-阿里云开发者社区-阿里云

13

回答

xi哈啥哈 2022-04-29 16278浏览量 回答数 13

15

回答

兮叶William 2022-05-02 16162浏览量 回答数 15

13

回答

aoxunb4t7tn3w 2022-04-25 15919浏览量 回答数 13

14

回答

14

回答

济南三爷 2022-05-23 15553浏览量 回答数 14

13

回答

aoxunb4t7tn3w 2022-04-25 15398浏览量 回答数 13

16

回答

13

回答

游客x3a254b44ahsk 2022-05-09 15239浏览量 回答数 13

1

回答

1736042623236776 2022-06-02 14110浏览量 回答数 1

32

回答

为啥容量都是 2 的幂? 容量是 2 的幂时,key 的 hash 值然后 & (容量-1) 确定位置时碰撞概率会比较低,因为容量为 2 的幂时,减 1 之后的二进制数为全 1,这样与运算的结果就等于 hash值后面与 1 进行与运算的几位。

下面是个例子。


hash HEX(97)  = 0110 0001‬
n-1  HEX(15)  = 0000 1111
--------------------------
         结果  = 0000 0001
# 计算得到位置是 1
hash HEX(99)  = 0110 0011‬
n-1  HEX(15)  = 0000 1111
--------------------------
         结果  = 0000 0011
# 计算得到位置是 3
hash HEX(101)  = 0110 0101‬
n-1  HEX(15)   = 0000 1111
--------------------------
         结果   = 0000 0101
# 计算得到位置是 5

如果是其他的容量值,假设是 9,进行与运算结果碰撞的概率就比较大。


hash HEX(97)  = 0110 0001‬
n-1  HEX(09)  = 0000 1001
--------------------------
         结果  = 0000 0001
# 计算得到位置是 1
hash HEX(99)  = 0110 0011‬
n-1  HEX(09)  = 0000 1001
--------------------------
         结果  = 0000 0001
# 计算得到位置是 1
hash HEX(101)  = 0110 0101‬
n-1  HEX(09)   = 0000 1001
--------------------------
         结果   = 0000 0001
# 计算得到位置是 1

另外,每次都是 2 的幂也可以让 HashMap 扩容时可以方便的重新计算位置。

hash HEX(97)  = 0110 0001‬
n-1  HEX(15)  = 0000 1111
--------------------------
         结果  = 0000 0001
# 计算得到位置是 1
    
hash HEX(97)  = 0110 0001‬
n-1  HEX(31)  = 0001 1111
--------------------------
         结果  = 0000 0001
# 计算得到位置是 1

参考:HashMap 源码分析解读

未读代码 评论 0

12

回答

六月的雨在钉钉 2022-04-20 13619浏览量 回答数 12

26

回答

云原生架构,是一种创新的软件开发方法,专为充分利用云计算模型而设计。它使组织能够使用微服务架构将应用程序构建为松散耦合的服务,并在动态编排的平台上运行它们。因此,基于云原生应用程序架构构建的应用程序是可靠的,可提供规模和性能,并缩短上市时间。

云原生架构的好处

  1. 加速软件开发生命周期 (SDLC)
    • 云原生应用程序补充了基于 DevOps 的持续交付环境,并在整个产品生命周期中嵌入了自动化,从而为桌面带来速度和质量
  2. 更快的上市时间
    • 速度和服务质量是当今快速发展的 IT 世界中的两个重要要求。由 DevOps 实践增强的云原生应用程序架构可帮助轻松构建和自动化持续交付管道,从而更快、更好地交付软件
  3. 高可用性与弹性
    • 通过将云原生架构与微服务和 Kubernetes 相结合,可以构建可自我修复的弹性和容错系统。在停机期间,应用程序仍然可用,因为可以简单地隔离故障系统并通过自动启动其他系统来运行应用程序
  4. 更低的成本
    • 云原生应用程序架构带有按使用付费的模式,这意味着所涉及的组织只需为使用的资源付费,同时从规模经济中受益匪浅
  5. 将应用程序转变为API
    • 云原生环境能够使用基于 API 的集成将海量企业数据与前端应用程序连接起来。由于每个 IT 资源都在云中并使用 API,因此应用程序也变成了 API

云原生所需要的能力和特征

  • 微服务
    1. 应用间通过RESTful API通信
    2. 可以被独立部署,更新,scale和重启
  • DevOps
    1. 自动化发布管道,CI工具
    2. 快速部署到生产环境
    3. 开发,运维协同合作
  • 持续交付
    1. 频繁发布,快速交付,快速反馈,降低发布风险
  • 容器化
    1. 微服务的最佳载体 在当今瞬息万变的技术世界中,云原生架构不再是可选的——它是必需的。变化是云中唯一不变的东西,这意味着您的软件开发环境应该足够灵活,以便在不干扰业务运营的情况下快速适应新技术和方法
Star时光 评论 0

10

回答

游客jdpc6rjflgyeu 2022-04-29 11880浏览量 回答数 10

13

回答

18

回答

18

回答

1

回答

18

回答

岩茶芋泥 2022-04-22 11019浏览量 回答数 18

2

回答

May-Hologres 2022-05-06 11078浏览量 回答数 2

17

回答

岩茶芋泥 2022-04-22 10935浏览量 回答数 17

2

回答

1

回答