转载请注明出处... 接着上一篇的ReentrantLock和condition源码浅析(一),这篇围绕着condition 一.condition的介绍 在这里为了作对比,引入Object类的两个方法,notify和wait方法,这两个方法作用,估计都很清楚,就是一个具有唤醒线程,另一个具有让线程等待的功能,适用场景,像类似生产者,消费者,那样. 这两个方法的注意点,在于必须放在同步块中执行,具体原因可自行百度或谷歌.执行wait方法后,线程会阻塞,并释放同步代码块的锁(sleep方法会持有锁…
第二篇,慢慢来 根据指数调整有效小数位数 // 上一篇由字符串创建BigDecimal代码中,有部分代码没有给出,这次补上 // 这个是当解析字符数组时存在有效指数时调整有小小数位数方法 private int adjustScale(int scl, long exp) {// 参数:scl-->>原生有效小数位数,exp:有效指数 long adjustedScale = scl - exp;// 这个其实自己写个例子就能明白,例如数值1.234*10^-3次方,此时实际数值位0.0012…
紧接着昨天,我们继续开搞了啊.. 1.下面,开始创建BroadcastManager,就是传说中的广播变量管理器.BroadcastManager用于将配置信息和序列化后的RDD.Job以及ShuffleDependency等信息在本地存储.紧接着blockManager的创建后创建.如下: 随之我们继续深入看这个broadcastManager是怎么创建与实现的. 可以看到,在initialize()初始化方法调用以后,通过utils.classForName反射生成工厂实例broadcast…
1.上一节介绍了LinkedList的几个基本的方法,其他方法类似,就不一一介绍: 现在再来看一个删除的方法:remove(Object o) remove方法接受一个Object参数,这里需要对参数做空与非空处理: 但是删除一个Object元素,都需要遍历整个链表,这样如果需要频繁的调用remove方法,删除的效率是非常低的: 类似的方法还有indexOf(Object o):这是根据传入的object参数来获取下标的方法: 2.根据下标来查找节点元素:node(int index) 这个查询…
1.removeAll(Collection<?> c)和retainAll(Collection<?> c)方法 第一个是从list中删除指定的匹配的集合元素,第二个方法是用指定的集合替换list: 但是在这两方法中调用同一个batchRemove方法: 2.内部类Sublist 这个类继承自AbstractList抽象类,实现RandomAccess接口,类中的字段有 这个类中的大部分的方法都是在调用ArrayList的方法:ArrayList.this.elementData…
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐进增强)优雅的处理能力以及 Ajax 等方面周到而强大的定制功能无不令人惊叹. 另外,阅读源码让我接触到了大量底层的知识.对原生JS .框架设计.代码优化有了全新的认识,接下来将会写一系列关于 jQuery 解析的文章. 我在 github 上关于 jQuery 源码的全文注解,感兴趣的可以围观一下…
1 背景 前段时间群里有伙伴问到了关于Android开发中Theme与Style的问题,当然,这类东西在网上随便一搜一大把模板,所以关于怎么用的问题我想这里也就不做太多的说明了,我们这里把重点放在理解整个Android中Theme.Style的关系及结构,这样我们就能游刃有余的面对实际开发中遇到的很多问题了,也就免得在自定义时遇到各种坑,譬如不清楚该继承哪个parent.不清楚为何背景会有一个黑边等. 本文主要分两部分来进行简单粗略的浅析,首先会围绕Theme与Style的定义及在App开发中的…
Cmd Markdown链接 CountDownLatch源码浅析 参考好文: JDK1.8源码分析之CountDownLatch(五) Java并发之CountDownLatch源码分析 CountDownLatch源码的理解 JDK API 前言 CountDownLatch用于同步一个或者多个任务,强制他们等待有其他任务执行的一组操作完成.CountDownLatch典型的用法是将一个程序分成n个相互独立的可分解任务,并创建值为n个互相独立的可分解任务,并创建值为n的CountDownLa…
Bytom侧链Vapor源码浅析-节点出块过程 在这篇文章中,作者将从Vapor节点的创建开始,进而拓展讲解Vapor节点出块过程中所涉及的源码. 做为Vapor源码解析系列的第一篇,本文首先对Vapor稍加介绍.Vapor是目前国内主流公链Bytom的高性能侧链,是从Bytom主链中发展出来的一条独立的高性能侧链.Vapor是平台最重要的区块链基础设施之一,目前采用DPoS的共识算法,具有高性能.高安全.可扩展等特点,用于搭建规模化的商业应用. Vapor节点创建及出块模块的启动 Vapor入…
date: 2020-09-27 13:50:00 updated: 2020-09-28 16:30:00 Phoenix创建索引源码过程 org.apache.phoenix.index.IndexMaintainer public byte[] buildRowKey(ValueGetter valueGetter, ImmutableBytesWritable rowKeyPtr, byte[] regionStartKey, byte[] regionEndKey, long ts)…