大家好,我是指北君。
前几天指北君的朋友小 B,写了一个导出 excel 下载太慢被客户嫌弃了。
指北君就让小 B 用 CyclicBarrier 。CyclicBarrier 是一个循环的栅栏,在多个线程完成各自的任务之后,主线程才可以开始执行任务。小 B 的情况就适用于多个线程并行查询数据库,然后写入 excel 的各个 sheet 页,在所有操作完成之后执行汇总数据的算法并将结果写入汇总的 sheet 页。
Java 's Blog
大家好,我是指北君。
前几天指北君的朋友小 B,写了一个导出 excel 下载太慢被客户嫌弃了。
指北君就让小 B 用 CyclicBarrier 。CyclicBarrier 是一个循环的栅栏,在多个线程完成各自的任务之后,主线程才可以开始执行任务。小 B 的情况就适用于多个线程并行查询数据库,然后写入 excel 的各个 sheet 页,在所有操作完成之后执行汇总数据的算法并将结果写入汇总的 sheet 页。
哈喽,大家好,我是指北君。
本篇文章给大家总结自媒体大佬粥佐罗取标题技巧,看完之后再也不担心文章如何取标题了。
大家好,我是指北君。
Zookeeper作为一个开源的分布式应用协调系统,简称 ZK。已经用到了许多分布式项目中,用来完成统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等工作,使用场景也是非常多。
面试中如何你能够对原理讲解清楚,甚至从源码的角度谈一谈,那征服面试官想必也是水到渠成的事情。
大家好,我是指北君。
如果说个人主机时代大家都是比拼单机 CPU 主频的高低和内存的大小,那么现在的云计算时代,虚拟化技术毫无疑问是时代的主流了(进一步压榨硬件资源)。而 Docker 就是实现轻量级虚拟机技术的代表了。它实现了应用组件级别的 “一次封装,到处运行”。
大家好,我是指北君
我们知道,阿里面试时非常喜欢考Java多线程编程题,如果你AC不了,可能会给面试官留下一个基础不扎实的印象,影响到你offer的收割,想当年指北君面阿里时就因为秒AC了一道多线程面试题,让面试官刮目相看,所以我们需要重视Java多线程编程。
一般在解决多线程编程题时,我们都离不开JUC并发包下的各种工具类,特别是ReentrantLock锁,它能提供互斥与线程同步的能力,那它是如何获得这个能力的呢?今天指北君就来详细说说给它提供强大能力的两大接口。(PS:文末有当年指北君面试阿里的多线程编程原题以及答案喔)
大家好,我是指北君。
这是AQS系列的第三篇文章,也是最后一篇,如果没看过AQS系列前两篇的童鞋,建议先去公号中的”Java并发编程”专栏中把前两篇看完。这篇主要是讲AQS是如何解决线程同步通信问题的。
我们在第一篇中说到AQS使用的是管程模型,而管程模型是使用条件变量来解决同步通信问题的。条件变量会有两个方法,唤醒和等待。当条件满足时,我们会通过唤醒方法将条件队列中的线程放入第二篇所说的同步队列中;如果不满足条件,则会通过等待方法将线程阻塞放入条件队列中。而AQS中通过ConditionObject类实现了条件变量,所以接下来我们就具体看看ConditionObject类吧。
大家好, 我是指北君。
相信大家在启动 Spring Boot 项目的时候,也遇到过由于各种各样的原因而启动失败的情况吧,显示出一大堆的错误信息,比如端口占用时会打印如下异常:
1 |
|
相信大家应该很熟悉吧,多少遇到过这种情况吧。
文稿原地址: https://www.yuque.com/wbf1013/mglhnr/ah83wl
大家好,我是指北君。
今天,我给大家来讲讲在 Spring Boot 项目中,自定义 banner 的事情。有些新入门的朋友可能会不知道 banner 是什么?它在哪里? 我在哪里见过它吗? 这3连门是不是很有意思。 我们今天所说的 banner 如下图所示,想必大家在启动 Spring Boot 项目的时候,大家都见过吧。
大家好,函数式接口的应用篇已经给大家讲完,今天,指北君和大家一同深入探索Java实现函数式接口的原理。本篇将从编译,执行层面为大家讲解函数式接口运行的机制,让各位小伙伴更进一步加深对函数式接口的理解。
大家好,我是指北君。
在前面的文章中,已经对 ArrayBlockingQueue 进行了一次源码分析,对它的核心源码做了分析,今天来解析一波同为 BlockingQueue 家族中的一员的 LinkedBlockingQueue。它的底层基于单向链表实现。
哈喽,大家好,我是指北君。
本篇文章给大家介绍面试常问的深拷贝和浅拷贝,看完之后再也不担心面试官问你这道题而做不到了。
大家好,上次指北君给大家开启了函数式接口的介绍,今天,指北君将在第一篇基础上继续为大家解读函数式接口涉及到的知识点。本篇文章为函数接口的应用篇二,将会为各位小伙伴详细介绍“@FunctionInterface”注解,java.util.function包中所有接口。
大家好,我是指北君。
今天学习了ThreadLocal相关的知识,发现原来道哥(Doug Lea)也用ThreadLocal。既然大师们都喜欢用的,我们必须得研究起来。大师的背影总是需要追随。
那么指北君给大家安排上了,如果你拥有了Java中的ThreadLocal,那麽你可以创建一个只允许同一个线程读写的变量。 因此,即使两个线程执行了相同的代码,并且引用了相同的ThreadLocal变量,这两个线程也无法看到彼此的ThreadLocal。 可以说ThreadLocal提供了一种代码线程安全的的简单方法。
下面我们就来看看道哥都用的ThreadLocal。
大家好,我是指北君。
今天我们来聊一聊以数组为数据结构的阻塞队列 ArrayBlockingQueue,它实现了 BlockingQueue 接口,继承了抽象类 AbstractQueue
可能很多初学者会比较困惑,Spring Boot 是如何做到将应用代码和所有的依赖打包成一个独立的 Jar 包,因为传统的 Java 项目打包成 Jar 包之后,需要通过 -classpath 属性来指定依赖,才能够运行。我们今天就来分析讲解一下 Spring Boot 的启动原理。
哈喽,大家好,我是指北君。
“今天,天气晴,32度,今天的砖头格外烫手,对面商店的冰镇可乐和你,依然是我不敢奢求的梦。我辛苦搬了一天砖,才写好这篇文章,你说你看到了这篇文章,马上就划掉了。突然天空开始有些暗了,暗的刚刚好,我流下泪水的样子就没人看到。”
你们看到这个标题的时候,肯定在骂我,什么类这么厉害,使用率100%? 其实我不是标题党,本篇文章给大家介绍的就是JDK中所有类的父类——java.lang.Object,你说使用率是不是100%,我想任何类都逃不掉吧。
Object 类属于 java.lang 包,此包下的所有类在使用时无需手动导入,系统会在程序编译期间自动导入。Object 类是所有类的基类,当一个类没有直接继承某个类时,默认继承Object类,也就是说任何类都直接或间接继承此类,Object 类中能访问的方法在所有类中都可以调用,下面我们会分别介绍Object 类中的所有方法。
哈喽,大家好,我是指北君。
今天的砖比较烫手,指北君不能出去搬砖了,在家为你们肝下了这篇文章。前面介绍了 java.lang 包下的 Object 类,这是所有类的父类。本篇文章接着介绍该包下的另一个也很常用的类 Integer。
大家好,我是指北君。
之前说了立志不当最菜程序员,所以上次我们不是决定要学习下这个分布式都会用到的这个技术:Zookeeper嘛,也给大家聊了被称为是最难理解的 Paxos 算法。
不懂 Paxos 算法的那得看下我们之前的这篇文章:Zookeeper基础Paxos算法详解
今天咱指北君就更进一步,学习下这个 Zookeeper 实现的基础协议–Zab协议(Zookeeper Atomic Broadcast),也称为zk原子广播协议。
首先大家可能会有疑问,Zab和我们上一篇讲解的Paxos之间有什么区别和联系 别着急,带着这个问题接着往下看吧,后面指北君会揭晓这个问题的答案的。