摘要:
周六的早晨8点,应用出现了大面积的登录超时问题。作为一款日活15W、用户量700W+的应用,这是致命的问题。唯一的安慰是——好在今天是周末,加班的公司才会使用。虽然如此,客服、产品的电话也被打爆了。初步怀疑,问题与前一天晚上的更新有关,运维的同事回滚了更新,应用全部回滚完毕,然而,问题依然没有解决,... 阅读全文
摘要:
何谓反射机制JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 阅读全文
摘要:
作者简介Dong Lea任职于纽约州立大学奥斯威戈分校(State University of New York at Oswego),他发布了第一个广泛使用的java collections框架实现,他实现了java.concurrent.*(JDK5开始至今)。论文译文开始:论文摘要本论文介绍一... 阅读全文
摘要:
在泛型编程时,使用部分限定的形参时,和的使用场景容易混淆,PECS原则可以帮助我们很好记住它们:生产者(Producer)使用extends,消费者(Consumer)使用super。留下一段代码加深印象(来自JDK 8 Collections.copy()源码)/** * Copies a... 阅读全文
摘要:
Executor框架集对线程调度进行了封装,将任务提交和任务执行解耦。它提供了线程生命周期调度的所有方法,大大简化了线程调度和同步的门槛。Executor框架集的核心类图如下:从上往下,可以很清晰的看出框架集的各个类,以及它们之间的关系:Executor,是一个可以提交可执行(Runnable)任务... 阅读全文
摘要:
1. 复制集(Replica sets)模式时,其会使用下面的local数据库local.system.replset 用于复制集配置对象存储 (通过shell下的rs.conf()或直接查询)local.oplog.rs 一个capped collection集合.可在命令行下使用--oplogS... 阅读全文
摘要:
移相器(Phaser)内有2个重要状态,分别是phase和party。phase就是阶段,初值为0,当所有的线程执行完本轮任务,同时开始下一轮任务时,意味着当前阶段已结束,进入到下一阶段,phase的值自动加1。party就是线程,party=4就意味着Phaser对象当前管理着4个线程。Phase... 阅读全文
摘要:
Semaphore 直译是信号量,它的功能比较好理解,就是通过构造函数设定一个数量的许可,然后通过 acquire 方法获得许可,release 方法释放许可。它还有 tryAcquire 和 acquireUninterruptibly 方法,可以根据自己的需要选择。以下是模拟一个连接池,控制同一... 阅读全文
摘要:
CyclicBarrier 直译过来叫循环栅栏,它主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。在这之后,如果再次调用 await() 方法,计数就又会变... 阅读全文
摘要:
闭锁是一种同步器 ( Synchronizer ),它可以延迟线程的进度直到线程到达终止状态,CountDownLatch是一个灵活的闭锁实现:1)允许一个或多个线程等待一个事件集的发生,闭锁的状态包括一个计数器,初始化为一个正数,用来实现需要等待的事件数。2)countDown对计数器做减操作,表... 阅读全文