首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏关忆北.

    深入解析JDK 8 HashMap

    JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于等于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树 ---- 数据结构 JDK 8版本的HashMap底层数据结构是数组+链表/红黑树结构,具体原因是: /** * The table, initialized on first use DEFAULT_LOAD_FACTOR = 0.75f; // 当桶(bucket)上的结点数大于等于这个值时会转成红黑树 static final int TREEIFY_THRESHOLD = 8; 即要插入的键已经存在于HashMap中,随后用新的value覆盖原值 判断该节点的类型,该节点是TreeNode红黑树时,红黑树直接插入键值对 该节点是Node链表时,开始准备遍历链表准备插入 判断链表长度是否大于8 当链表长度大于8时,执行链表树化逻辑,前提是,当前桶(bucket)中的节点数量大于64,如果小于64,优先给链表扩容,当链表不满足树化条件时,链表中插入新的元素,若key存在于当前列表,则直接覆盖原来的值

    52561编辑于 2023-10-11
  • 来自专栏落叶飞翔的蜗牛

    Java8 ConcurrentHashMap源码解析

    DEFAULT_CAPACITY = 16; //数组可能最大值,需要与toArray()相关方法关联 static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; DEFAULT_CONCURRENCY_LEVEL = 16; // 负载因子 private static final float LOAD_FACTOR = 0.75f; // 链表转红黑树阀值 > 8 链表转换为红黑树 static final int TREEIFY_THRESHOLD = 8; //树转链表阀值,小于等于6(tranfer时,lc、hc=0两个计数器分别++记录原bin、新binTreeNode = 0) { //如果链表的长度大于8时就会进行红黑树的转换 if (binCount >= TREEIFY_THRESHOLD) 当key值相等的元素形成的链表中元素个数超过8个的时候。

    52310发布于 2021-02-09
  • 来自专栏Lauren的FPGA

    深度解析ug1292(8

    图片来源: page 8, ug1292 1 异步跨时钟域路径是否被安全合理地约束 时钟关系有两种:同步时钟和异步时钟。

    2.1K30发布于 2019-10-30
  • 来自专栏数据库干货铺

    MySQL OCP试题解析8

    选项解析 A) 冷备份(Cold Backup) 错误。 选项解析 A) ibdata1:12M;ibdata2:12M:autoextend 正确。 选项解析 A) Firewall_access_denied 是被禁止主机的连接尝试次数 错误。 选项解析 A) 使用存储过程(Stored Procedures)访问数据库 错误。 题目解析 1.1 问题分析与解决方案 根据错误日志中的关键信息 InnoDB: Error: log file .

    39610编辑于 2025-05-23
  • 来自专栏信数据得永生

    Yolov8 源码解析(四十)

    \yolov8\ultralytics\utils\benchmarks.py # 从 glob 模块中导入 glob 函数,用于文件路径的模糊匹配 import glob # 导入 os 模块,提供了许多与操作系统交互的函数 ", data=None, imgsz=160, half=False, int8=False, device="cpu", verbose=False ): """ Benchmark Default is Path(SETTINGS['weights_dir']) / 'yolov8n.pt'. int8 (bool, optional): Use int8-precision for the model if True. Default is False. 's' to the logger file with open("benchmarks.log", "a", errors="ignore", encoding="utf-8"

    83410编辑于 2024-09-13
  • 来自专栏架构驿站

    K8S CRI解析

    上篇文章,我们讲到容器引擎Docker与Podman,关于K8S弃用Docker的根本原因在于容器运行时接口CRI,Kubelet 之前使用的是一个命名为 dockershim 的模块 具体,可参考上篇文章:容器引擎Docker与Podman解析。本文主要针对CRI进行简要解析,以使得大家能够更深入了解K8S底层运行机制,以便能够更好地掌握容器生态技能。 CRI 接口引入后的Kubelet 的架构如下图所示: 基于上图解析:Generic Runtime Manager,一个通用的运行时管理器。

    92430编辑于 2021-12-09
  • 来自专栏allsmallpi博客

    Java 8 Optional类深度解析

    新版本的Java,比如Java 8引入了一个新的Optional类。Optional类的Javadoc描述如下: 这是一个可以为null的容器对象。 Java8支持不用接口直接通过lambda表达式传入参数。 如果Optional实例有值,调用ifPresent()可以接受接口段或lambda表达式。 示例如下: 1 2 3 4 5 6 7 8 9 try {   //orElseThrow与orElse方法类似。 现在我来看看filter的各种用法,下面的示例介绍了满足限定条件和不满足两种情况: 1 2 3 4 5 6 7 8 9 10 //filter方法检查给定的Option值是否满足某些条件。 9 10 11 12 Sanaulla No value present The length of the value is: 8 There is no value present!

    72420发布于 2021-02-12
  • 来自专栏ops技术分享

    Nginx结构原理全解析8

    Nginx中从客户端访问的叫主请求,他被nginx这个程序来逐步处理。还有一种内部的请求,叫子请求。

    24820发布于 2021-05-11
  • 来自专栏架构驿站

    K8S Container解析

    本文主要针对K8S生态栈中(注:我的环境为Kubernetes-1.18.15)所支持的容器类型进行解析,以及详细介绍一下不同类型容器的特性以及其使用场景。 下面我们针对此4种类型的容器进行简要的解析,在解析之前,我们简要了解下Pod的生命周期,毕竟,Container与Pod息息相关,相互关联,一个Pod的生命活动涉及到Container相关活动事件,具体如下所示 “ 挂起 (Pending) ”、“ 运行中 (Running) ”、“ 成功(Succeeded) ”、“ 失败(Failed) ”以及“ 未知 (Unknown) ”等状态运行,具体细节后续将会解析 具体可参考如下示图: 为了彻底解决上述痛点,从K8S 1.18版本开始,K8S内置的Sidecar功能将确保边车在正常业务流程开始之前就启动并运行,即通过更改Pod的启动生命周期,在Init 具体可参考如下所示: 至此,关于Kubernetes 1.8版本中的4种类型的Container解析到此为止,大家有什么问题或者建议,欢迎随时留言沟通。

    2K30编辑于 2021-12-09
  • 来自专栏架构驿站

    K8S Pod解析

    上篇文章我们在解析K8S Container时,提到Pod的整个生命周期都是围绕“容器”这个核心进行运转,毕竟,Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元,只有弄清楚其底层原理以及实现细节 接下来,我们再看一下K8S Pod的基本实现原理,再解析原理之前,我们首先了解下Pod的生命周期,只有通过理解Pod 创建、重启和删除的原理,我们才能最终就能够系统地掌握Pod的生命周期与核心原理。 在这里我们先看一下K8S Pod生命周期流程图,具体如下所示: 基于上述流程图,我们可以看出:K8S Pod 被创建之后,首先会进入健康检查状态,当 Kubernetes 确定当前 Pod 现在我们详细解析下Pod不同状态的源码实现,主要涉及Create 、HealthCheak以及Delete操作,具体如下所示: Create-创建 K8S Pod 的创建都是基于 至此,关于Kubernetes Pod基本原理解析到此为止,大家有什么问题或者建议,欢迎随时留言沟通。

    81030编辑于 2021-12-09
  • 来自专栏Android 研究

    Retrofit解析8之核心解析——ServiceMethod及注解1

    > type) 静态方法:明显就是获取8个基本类型对应的装箱类 parsePathParameters (String path) 静态方法: 保证url中的路径参数(PathParameters)有且仅使用一次 2、源码详解: 2.1、变量解析: 大家先来看下变量,由于变量不多,我直接上注释了。 方法很简单就一行,就是调用响应解析/处理器(responseConverter)的convert方法来解析/反序列化响应体。 7、获取这个方法入参的个数 8、遍历这个方法的各个入参,首先判断是不是能处理的类型,如果是能处理的类型;然后获取这个入参对应的注解;最后调用parseParameter()来获取对应的parameterHandlers 3.2.7、 Builder的方法parseHeaders解析 这个方法看方法名,可以理解解析请求头 private Headers parseHeaders(String[] headers)

    2.1K40发布于 2018-08-30
  • 来自专栏Android 研究

    Retrofit解析8之核心解析——ServiceMethod及注解2

    由于简述篇幅的限制,接上一篇文章继续 3.2.8、 Builder的方法parseParameter解析 看名字这个方法我们理解为解析参数的方法 private ParameterHandler (二) 类代码解析 由于这个类的代码比价长,我就不全部粘贴,等用到时候再一一粘贴 1、变量解析 那我们来看下他对应的变量,内容不多也比较简单,比较复杂的,我直接在上注释了。 构造既不是public也不是private,所以不能在包外直接new,所以我们要通过Builder来创建Retrofit对象 3、相关方法解析 由于create比较关键,我们最后解析 3.1、eagerlyValidateMethods 方法解析 private void eagerlyValidateMethods(Class<? 4、由于Platform.Android没有重写isDefaultMethod(),所以platform.isDefaultMethod(method)默认返回false,Platform.Java8是重写了这个方法的

    1.5K20发布于 2018-08-30
  • 来自专栏原创分享

    v8源码解析之SymbolTable(v8 0.1.5)

    inline SymbolTable* cast(Object* obj); private: Object* LookupKey(Key* key, Object** s); class Utf8Key ; // Key based on utf8 string. 1 Utf8Key Utf8Key继承于HashTable::Key,封装了key原始的值、对应的哈希值、原始值对应的堆对象。Utf8Key代表以字符串作为哈希Key。 // Utf8Key carries a vector of chars as key. class SymbolTable::Utf8Key : public SymbolTable::Key { public: // key对应的内容 explicit Utf8Key(Vector<const char> string) : string_(string), hash_(0

    56420发布于 2020-11-02
  • 来自专栏原创分享

    v8源码解析之HashTable(v8 0.1.5)

    HashTable是v8中哈希表的实现,HashTable继承Array。HashTable提供一些公共的逻辑,供后续子类使用。我们看一下他 大内存布局。 ? 然后看一下类的定义。

    80330发布于 2020-11-02
  • 来自专栏原创分享

    v8源码解析之ByteArray(v8 0.1.5)

    比如value已经4字节对齐了,则(4 + 0 +3) & ~3 =4,如果value没有对齐,假设是5,则(4 + 1 +3) & ~3 = 8;如果value等于6,(4 + 2 + 3) & ~3 = 8;以此类推。 kHeaderSize + kHeapObjectTag); } // 获取数据部分首地址 Address ByteArray::GetDataStartAddress() { /* typedef uint8_

    92120发布于 2020-11-02
  • 来自专栏原创分享

    v8源码解析之Dictionary(v8 0.1.5)

    ) { return NumberOfElementsFilterAttributes( static_cast<PropertyAttributes>(DONT_ENUM)); } 8

    84130发布于 2020-11-02
  • 来自专栏用户8771298的专栏

    react源码解析8.render阶段

    react源码解析8.render阶段 视频讲解(高效学习):进入学习 往期文章: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api 6.legacy和concurrent模式入口函数 7.Fiber架构 8.render阶段 9.diff算法 10.commit阶段 11.生命周期 12.状态更新流程 13.hooks源码 14.

    40020编辑于 2021-12-13
  • 来自专栏JavaEdge

    Java8的TreeMap源码解析

    线程不安全,但是因为需要排序,进行key的compareTo方法,所以key是不能null中,value是可以的。

    45810发布于 2021-02-23
  • 来自专栏用户8771298的专栏

    react源码解析8.render阶段

    react源码解析8.render阶段 视频讲解(高效学习):进入学习 往期文章: 1.开篇介绍和面试题 2.react的设计理念 3.react源码架构 4.源码目录结构和调试 5.jsx&核心api 6.legacy和concurrent模式入口函数 7.Fiber架构 8.render阶段 9.diff算法 10.commit阶段 11.生命周期 12.状态更新流程 13.hooks源码 14.

    37210编辑于 2021-12-01
  • 来自专栏react源码分析

    react源码解析8.render阶段

    render阶段的主要工作是构建Fiber树和生成effectList,在第5章中我们知道了react入口的两种模式会进入performSyncWorkOnRoot或者performConcurrentWorkOnRoot,而这两个方法分别会调用workLoopSync或者workLoopConcurrent

    34040编辑于 2022-12-14
领券