
数据结构
文章平均质量分 69
qlql489
你可以被打倒,但不能被打败
展开
-
AQS中的condition是如何实现的
condition的作用condition的使用场景其实很多,涉及到条件判断的并发场景都可以用到,比如:阻塞队列的ArrayBlockingQueue中做队列满和空的条件判断CyclicBarrier中做阻塞与唤醒所有线程的判断DelayQueue中的阻塞获取队列数据的判断线程池ThreadPoolExecutor中awaitTermination方法的条件判断condition怎么用呢?在使用synchronized时我们可以使用wait()、notify()、notifyAll()方法原创 2022-02-16 22:02:42 · 434 阅读 · 0 评论 -
Skywalking收集与发送链路数据部分源码解析
链路收集大体逻辑这里先不分析skywalking是如何自动收集数据的,而是说一下agent在收集后如何存储与发送给collector,这部分的架构关系到性能开销与对服务的影响大体逻辑如下:agent内部缓存维护了一个生产消费者,收集数据时将生产的数据按分区放到缓存中,消费者用多线程消费数据,将缓存的数据封装成grpc对象发送给collector链路数据接收与发送数据的接收与发送主要在类TraceSegmentServiceClient中处理其中的一个重要属性是DataCarrier,它来实现的生原创 2022-02-16 21:54:50 · 538 阅读 · 0 评论 -
HashMap原理分析
HashMap的原理在面试时经常问到,也有很多人分析过,自己也写一写,仅供参考,部分内容参考别人的文章一、HashMap的数据结构数组和链表是最基本的数据结构,但这两个基本是两个极端1、数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;2、链表链表存储区间离散,占用内存比较原创 2015-07-21 15:31:02 · 287 阅读 · 0 评论