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

    JDK 8 HashMap源码解读

    开始进入HashMap前,先了解一下知识,这样才能更好的理解源码。 开始前预习 关于二叉树的知识点摘自:https://www.jianshu.com/p/bf73c8d50dc2 推荐看原文;树的相关知识只作为回顾,不会详细说明。 源码 红黑树源码 上边我们从原理和实例上了解了红黑树,现在从源码级别来看看他的一个流程,HashMap的插入有使用到红黑树,所以,了解了红黑树,再去看效果会更好。 HashMap 源码 JDK7和8有这样一些区别: 在hash上的计算,8 的没有7 的复杂,原因可能就是在8里面引入了红黑树,已经将插入读取的效率提高了,再在下标上下功夫没有多大用处了。 0 : (h = key.hashCode()) ^ (h >>> 16); } 8里的内部数组数组类型是Node,7里面是Entry 8里面链表是尾插法,7是头插法 final V

    49620发布于 2021-01-29
  • 来自专栏学习计划

    JDK 8 ConcurrentHashMap源码解读

    7和8 的结构还是有些不一样;7里面是Segment、entry数组实现的,将entry数组分段加锁,而8里是对数组元素加锁,并发上增加了一个counterCells的数组记录并发时增加的值,然后通过cas = sc; } break; } } return tab; } jdk8中没有

    39910发布于 2021-01-29
  • 来自专栏全栈程序员必看

    datax(8):TaskGroupContainer源码解读

    检查当前时间是否超过汇报时间检测,如果是,则汇报当前状态 6)当所有的执行完成从while中退出之后,再次全局汇报当前的任务状态 ---- 二、主要方法 三、主入口start的时序图 ---- 四、源码解读 writerThread.isAlive(); } } } 注: 对源码进行略微改动,主要修改为 1 阿里代码规约扫描出来的,2 clean code; 所有代码都已经上传到github

    59940编辑于 2022-08-30
  • 来自专栏奕仁专栏

    jdk8HashMap源码解读一【源码

    p.next = newNode(hash, key, value, null); // TREEIFY_THRESHOLD 为 8, 如果没有碰撞,直接放入桶中(碰撞的意思是计算得到的 Hash 值相同,需要放到同一个 bucket 中) 如果碰撞了,以链表的方式链接到后面 如果链表长度超过阀值(TREEIFY THRESHOLD==8

    57610发布于 2020-04-20
  • 来自专栏857-Bigdata

    源码解读】|SparkContext源码解读

    (最短栈、最长栈) private[spark] case class CallSite(shortForm: String, longForm: String) 源码中通过「getCallSite( )」 方法配置返回CallSite 参数示意: 参数英文名 参数含义 lastSparkMethod 方法存入 firstUserFile 类名存入 firstUserLine 行号存入 源码如下:

    2.3K20编辑于 2022-05-17
  • 来自专栏857-Bigdata

    源码解读】| LiveListenerBus源码解读

    异步事件列队主要由LinkedBlockingQueue[SparkListenerEvent] 构建,默认大小为10000

    1.9K20编辑于 2022-07-07
  • 来自专栏857-Bigdata

    源码解读】|SparkEnv源码解读

    metricsSystem, memoryManager, outputCommitCoordinator, conf) 总结 Spark Env 源码顺序大致就是上面的流程 ,更细致的后面的博文中会持续更新解读

    1.6K20编辑于 2022-05-17
  • 来自专栏北风IT之路

    一文解读JDK8中HashMap的源码

    前言 HashMap是平时开发中非常常用的一个集合框架类,了解其内部构造及运行原理可以说是每一个Java程序员必不可少的,接下来就从源码一探究竟HashMap到底是什么样的类。 话不多说,接下来就直接进入源码解析部分吧 二、HashMap源码解读 温馨提示:阅读需耐心哦~~ 1. KeySet、Values、EntrySet、HashIterator等,因为本文仅涉及增删改查操作,Node类、TreeNode类是其中操作的主要类,但是由于红黑树较为复杂,不是本文的重点,所以这里暂只解读 extends V> m) { putMapEntries(m, true); } 8. 源码解读文章,和大家一起学习一下它在HashMap的基础上又进行了哪些优化。

    1.1K62发布于 2019-08-01
  • 来自专栏云深之无迹

    Tiny X8M遥控器源码解读.1

    众所周知,我昨天买了个遥控器->Tiny X8M遥控器全解,文章在此。不过这个是开源的,代码就写的好,不读可惜了,读它。 一共有两套,8D和16D的协议,先看8D的。 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16 注意是一个1x420的数组 startUp这个有点像是一个初始化得方法 这是里面的一段关于摇杆采集发送的代码 这是在这个包里面所有的方法 按道理其实我还应该继续往下读,但是我觉得这个menu的源码很有趣 这块有点像实现了一个自己的协议,但是很简陋的亚子 通过 USART 外设传输 8 位数据。 最终发的是灯的状态 这个灯的闪烁在这里 uint8_t LED_Status_SendDat = 0; 然后这个LED的是一个8位的无符号的变量 这就是注释说的,如果无效就保持自己的状态。

    90920发布于 2021-11-12
  • 来自专栏子曰五溪

    Flex 源码解读

    你能通过源码看见 Row 和 Column 都继承了 Flex ,布局具体的计算都在这个类中,我们可以通过源码 github.com/flutter/flut 了解一下 Flex 是如何计算布局的。 const <Widget>[], }) 基本上默认值的设计不管是 Row 还是 Column 都遵循了 Flex 的设计,唯一相比之下只有 this.direction 参数是多余出来的一个,通过源码的注释我们可以了解到它是用于设置轴的排列方向

    1.1K20发布于 2019-06-24
  • 来自专栏TomatoCool

    Fscan源码解读

    Hosts)) } if common.Scantype == "icmp" { common.LogWG.Wait() return } common.GC() CheckLive函数(源码解读在 其它情况则调用PortScan函数(源码解读在portscan.go中)扫描存活的端口。LogWG.Wait()会等待PortScan函数中的goroutine执行完毕后,再执行后面的代码。

    1.1K30编辑于 2023-09-17
  • 来自专栏java、Spring、技术分享

    AbstractQueuedSynchronizer源码解读

    AbstractQueuedSynchronizer关键属性 下面来看看acquire获取锁的部分源码: public abstract class AbstractQueuedSynchronizer 源码如下: abstract static class Sync extends AbstractQueuedSynchronizer { //非公平锁最终最调用到当前这个方法,传入的acquires 源码如下: //这个方法是不允许子类重写的 final boolean acquireQueued(final Node node, int arg) { boolean failed 下面再来看看释放锁的逻辑AbstractQueuedSynchronizer的relase源码如下: //释放锁需要调用release方法 public final boolean release

    70930发布于 2018-09-11
  • 来自专栏JMCui

    ConcurrentLinkedQueue 源码解读

    二、源码解读 现在我们有了 head 和 tail 节点,如果按照我们平常的思维,head 节点即头节点,tail 节点即尾节点。 想要读懂 ConcurrentLinkedQueue 的源码,最好先搞懂以下特质: 队列中任意时刻只有最后一个元素的 next 为 null head 和 tail 不会是 null(哨兵节点的设计)

    1.1K20发布于 2019-09-02
  • 来自专栏Android记忆

    Volley源码解读

    先来一张图 2EDCC13D-2CA8-492B-A276-63D985F4C826.png 一、Volley使用方式 RequestQueue queue=Volley.newRequestQueue ============= 新增一个请求 queue.add(request); 新增一个请求 queue.add(request2); 新增一个请求 queue.add(request3); 二、源码讲解 我们来看下源码 public static RequestQueue newRequestQueue(Context context) { return newRequestQueue(context 看下源码,我们发现在cancelAll、finish方法中使用。 我们来看下processRequest源码 @VisibleForTesting void processRequest(Request<?

    94470编辑于 2022-01-25
  • 来自专栏源码揭秘

    vuex源码解读

    源码阅读 核心功能在store.js,根据注释阅读便于理解。 总结 最后我们回过来看文章开始提出的5个问题。 引用 Vuex框架原理与源码分析 -美团 Examples Counter Counter with Hot Reload TodoMVC Flux Chat Shopping Cart Running

    71330编辑于 2022-02-14
  • 来自专栏大数据-数据人生

    SparkContext源码解读

    TaskSceduler在具体创建的时候,是由不同发布模式比如standalone、yarn、mesos决定的,返回一个SchedulerBackend.

    99042发布于 2020-04-08
  • 来自专栏jeremy的技术点滴

    harbor源码解读

    快速部署 这里使用官方提供的helm chart快速在k8s里进行部署。 ... ingress: enabled: true hosts: core: harbor.k8s.local notary: notary.k8s.local ... 这11个组件的k8s部署描述文件在$GOPATH/src/github.com/goharbor/harbor/make/kubernetes目录里,同样以后如果要将业务应用部署在k8s里,可以参考这里的描述文件 解读源码 主要代码位于$GOPATH/src/github.com/goharbor/harbor/src这个目录,这里将这几个目录逐个分析一下。 源码目录大概就这些内容了,还是比较清晰的。

    3K10发布于 2019-03-13
  • 来自专栏一头猪的学习

    OpenFeign源码解读

    spm_id_from=333.1007.top_right_bar_window_history.content.click 2.深入理解Feign之源码解析-腾讯云开发者社区-腾讯云 (tencent.com @Bean注解 7.FactoryBean接口,该接口实现getObject方法 8.SingletonBeanRegistry.registerSingleton()方法 其中前5种方法bean的创建交给 metadata.isConcrete() || (metadata.isAbstract() && metadata.hasAnnotatedMethods(Lookup.class.getName())))); } } 源码解读 SynchronousMethodHandler.Factory -> SynchronousMethodHandler 总结: 设计:组件化思维 技术点:适配器模式,SpringBoot自动装配,父子容器 OpenFeign的源码实现过程如下

    1.2K80编辑于 2023-05-09
  • 来自专栏Java工程师成长之路

    springboot源码解读

    springboot源码从main函数开始 public static void main(String[] args) { ApplicationContext app = SpringApplication.run IllegalStateException(ex); } } 我把主要步骤的每一步都标明了注释,看起来这里很多都是springboot特有,但主要的实现还是对springMVC的继承,你去看springmvc的源码

    58120发布于 2019-09-10
  • 来自专栏黯羽轻扬

    Redux源码解读

    最核心的两个东西是createStore和applyMiddleware,地位相当于core和plugin 二.设计理念 核心思路与Flux相同: (state, action) => state 在源码 丢进去执行了2遍,省了一个action case,此外还省了初始环境的标识变量和额外的store.init方法 充分利用了自身的dispatch机制,相当聪明的做法 四.applyMiddleware 这一部分源码被 重构可能会考虑要不要做break change,是否支持边界case,够不够易读(很多人关注这几行代码,相关issue/pr至少有几十个)等等,Redux维护团队比较谨慎,这块的迷惑性被质疑了非常多次才决定要重构 五.源码分析

    67340发布于 2019-06-12
领券