源码分析笔记Vector】的更多相关文章

概述 继承抽象类AbStractList,实现接口List.RandomAccess.Cloneable以及序列化接口默认容量大小为10,扩容增量为0,扩容为原容量的2倍如设置的增量大于0,则扩容为(原容量+增量)支持随机访问,添加删除元素较慢线程安全的动态数组,方法加上了synchronized同步锁,故性能较低源码 字段信息 public class Vector<E> extends AbstractList<E> implements List<E>, Rand…
在zeromq源码分析笔记之架构说到了zmq的整体架构,可以看到线程间通信包括两类,一类是用于收发命令,告知对象该调用什么方法去做什么事情,命令的结构由command_t结构体确定:另一类是socket_base_t实例与session的消息通信,消息的结构由msg_t确定.命令的发送与存储是通过mailbox_t实现的,消息的发送和存储是通过pipe_t实现的,这两个结构都会详细说到,今天先说一下线程间的收发命令. zeromq的线程可分为两类,一类是io线程,像reaper_t.io_thr…
ReentrantReadWriteLock包含两把锁,一是读锁ReadLock, 此乃共享锁, 一是写锁WriteLock, 此乃排它锁. 这两把锁都是基于AQS来实现的. 下面通过源码来看看ReentrantReadWriteLock是如何做到读读共享,读写互斥的. 1. 测试代码  import java.util.concurrent.CyclicBarrier; import java.util.concurrent.locks.ReentrantReadWriteLock; publ…
ArrayList源码分析笔记 先贴出ArrayList一些属性 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { /** * 系列化ID. */ private static final long serialVersionUID = 8683452581122892189L; /**…
rocketmq源码解析笔记 大家好,先安利一下自己,本人男,35岁,已婚.目前就职于小资生活(北京),职位是开发总监. 姓名DaneBrown 好了.我保证本文绝不会太监!转载时请附上以上安利信息.THXALOT. OK,开始. 因为我没有在rocketmq团队中工作过,只好以一个使用者的角度去思考rocketmq的源码.我使用的是3.2.6版本,其他版本可能略有不同. 我先讲rocketmq-tools rocketmq-tools rocketmq-tools是个独立的jar包,所以应该是…
1.线程池的作用 一方面当执行大量异步任务时候线程池能够提供较好的性能,在不使用线程池的时候,每当需要执行异步任务时候是直接 new 一线程进行运行,而线程的创建和销毁是需要开销的.使用线程池时候,线程池里面的线程是可复用的,不会每次执行异步任务时候都重新创建和销毁线程. 另一方面线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等,每个 ThreadPoolExecutor 也保留了一些基本的统计数据,比如当前线程池完成的任务数目等. 2.ThreadPoolExecu…
#Handler机制# Handler机制实际就是实现一个 异步消息循环处理器 Handler的真正意义: 异步处理 Handler机制的整体表述: 消息处理线程: 在Handler机制中,异步消息处理线程启动后,该线程在Looper.loop()的影响下会进入无线循环. 获取消息: 在loop()方法的循环中,每循环一次,就从MessageQueue消息队列中取出一个消息. 没有消息的时: 如果消息队列没有消息.那么异步消息处理线程就会进入阻塞等待. 处理消息: 该线程中会回调Handler的…
上篇简单介绍了gcc4.8提供的几种allocator的实现方法和作用,这是所有stl组件的基础,容器必须通过allocator申请分配内存和释放内存,至于底层是直接分配释放内存还是使用内存池等方法就不是组件需要考虑的事情.这篇文章开始分析gcc4.8 stl的容器源码实现.stl的容器分为序列式容器和关联式容器,前者包括vector,list,queue以及stack等常用数据结构,后者包含了map,set以及hash table等比较高级的结构,本文就从使用最广泛也是最基础的vector开始…
经过昨晚的培训.对AQS源码的理解有所加强,现在写个小笔记记录一下 同样,还是先写个测试代码,debug走一遍流程, 然后再总结一番即可. 测试代码 import java.util.concurrent.CyclicBarrier; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class AqsTest { public static void m…
CLIENT 之前讲过tools里面有大量调用client的东西.为了从源码层面了解rocket,决定啃下client这块骨头. pom 先看pom,看看CLIENT依赖谁.看完后原来是依赖common的.common又依赖remoting的 翻开remoting看了看,都是一些接口定义.明白了,remoting应该是通信协议,公共接口.看来如果讲框架的时候,应该从remoting开始讲. 而common,看名字就知道是个公共包,里面提供了各种公用的东西.先不讲了,用到再看吧. 好的,开始分析源…