欢迎您的访问
专注于Java技术系列文章的Java技术分享网站

技术文章汇总

如何设计 QQ、微信等第三方账号登陆

站长阅读(571)评论(0)赞(68)

名称解释 这里的多账户区别于系统级别的,我们讲的多账户系统是指,在我们互联网应用当中,我们的应用会使用多个第三方账号进行登录,必须现在常用的APP(网易云音乐)登录方式包含:网易、微信、QQ 内容 通过这一篇文章, 可以学到:多用户下面的技...

手写阻塞队列(Condition实现)

站长阅读(523)评论(0)赞(97)

自己实现阻塞队列的话可以采用Object下的wait和notify方法,也可以使用Lock锁提供的Condition来实现,本文就是自己手撸的一个简单的阻塞队列,部分借鉴了JDK的源码。Ps:最近看面经的时候发现字节跳动的面试官特别喜欢让面...

为什么ConcurrentHashMap的读操作不需要加锁?

站长阅读(519)评论(0)赞(74)

为什么ConcurrentHashMap的读操作不需要加锁? 我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——...

吃透线程池源码

站长阅读(517)评论(0)赞(82)

线程池源码解析 线程池的概念 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互。使用线程池可以很好的提高性能,尤其是程序中需要创建大量生存期很短暂的线程。 使用线程池的优势 降低资源消耗。通过重复利用已创建的线程降低线程创建和...

分布式全局ID生成器设计

站长阅读(515)评论(0)赞(86)

分布式全局ID生成器设计 项目是分布式的架构,需要设计一款分布式全局ID,参照了多种方案,最后基于snowflake的算法设计了一款自用ID生成器。具有以下优势: 1、 保证分布式场景下生成的ID是全局唯一的 2、 生成的全局ID整体上是呈...

Join的加强版CountDownLatch

站长阅读(513)评论(0)赞(70)

CountDownLatch允许一个或多个线程等待其他线程完成操作。 假如有这样一个需求:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需...

对volatile不具有原子性的理解

站长阅读(516)评论(0)赞(93)

在阅读多线程书籍的时候,对volatile的原子性产生了疑问,问题类似于这篇文章所阐述的那样。经过一番思考给出自己的理解。 我们知道对于可见性,Java提供了volatile关键字来保证可见性、有序性。但不保证原子性。 普通的共享变量不能保...

Java中数组与集合的相互转换

站长阅读(521)评论(0)赞(75)

数组与List的相互转换 List转数组:采用集合的toArray()方法 数组转List:采用Arrays的asList()方法 数组转换为集合 注意:在数组转集合的过程中,要注意是否使用了视图的方式直接返回数组中的数据。以Arrays....

一个专注于Java技术系列文章的技术分享网站