比如,一年中污染最严重三天的 PM2.5 涨幅,了解这个涨幅,就能观察出严重污染是突然出现的,还是逐渐积累起来的。用 SQL 语句找出污染最严重的三天,不算难: select top 3 * from T order by pm25 desc 但后面的步骤比较麻烦,要找到这三天的前一天,还要和前一天 ...
分类:
其他好文 时间:
2020-06-24 17:45:12
阅读次数:
48
一、BlockingQueued BlockingQueued 队列使用 ReentrantLock 和 Condition(AQS实现)来实现的。Condition 只能用于独占模式。 条件队列中的节点永远不会被唤醒,一直阻塞者;要想唤醒,则需要把该节点放到CLH队列中,放入到CLH队列中才有机会 ...
分类:
其他好文 时间:
2020-06-20 19:41:21
阅读次数:
61
一、ReentrantLock原理 ReentrantLock是一个可重入的独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞而放入该锁的AQS阻塞队列里面。ReentrantLock最终是使用AQS来实现的,并且根据参数来决定其内部是一个公平锁还是非公平锁,默认是非公平锁。 pub ...
分类:
其他好文 时间:
2020-06-18 12:49:04
阅读次数:
63
什么是AQS ReentrantLock的底层实现 支持尝试获取锁 支持重入 支持打断 支持多条件 支持公平锁和非公平锁 支持共享锁和排他锁 怎么做到的 使用了模板方法实现tryAcquire 子类Sync实现 通过CAS操作state的值,state为volatile修饰,线程可见 state为0 ...
分类:
其他好文 时间:
2020-06-17 20:00:10
阅读次数:
69
wcf接口是由.net提供的webservice接口,一般是使用wsdl文件的样式发布,在wsdl文件中,包含该webservice暴露在外面可供使用的接口。 了解到的调用wfc接口方法有三种: AXIS调用远程webservice SOAP调用远程webservice wsimport生成java ...
分类:
编程语言 时间:
2020-06-14 18:52:06
阅读次数:
79
我们有个带 3 个数据集的报表跑了 2 分多钟,太慢了,有啥办法优化吗? ...
分类:
其他好文 时间:
2020-05-31 22:01:57
阅读次数:
81
J.U.C 简介 Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发 场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并 发包的作者是大名鼎鼎的 Doug Lea。我们在接下来的课程中,回去剖析一些经典 的比较常用的组件的设计思想 ...
分类:
编程语言 时间:
2020-05-24 18:09:24
阅读次数:
69
关于线程安全一提到可能就是加锁,在面试中也是面试官百问不厌的考察点,往往能看出面试者的基本功和是否对线程安全有自己的思考。 那锁本身是怎么去实现的呢?又有哪些加锁的方式呢? 我今天就简单聊一下乐观锁和悲观锁,他们对应的实现 CAS ,Synchronized,ReentrantLock 正文一个12 ...
分类:
其他好文 时间:
2020-05-24 13:43:50
阅读次数:
224
所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实 ...
分类:
其他好文 时间:
2020-05-24 09:25:20
阅读次数:
57
一、AQS 什么是AQS fifo队列 + 原子int(表示状态) 原子int:AtomicInteger这个类的存在是为了满足在高并发的情况下,原生的整形数值自增线程不安全的问题; AQS(AbstractQueuedSynchronizer),AQS是JDK下提供的一套用于实现基于FIFO等待队 ...
分类:
其他好文 时间:
2020-05-21 19:20:38
阅读次数:
59