陈的博客

Thinking will not overcome fear but action will.

linux下软件源的问题

linux

前言 记录一次ubuntu18下apt下载软件失败的问题。 问题 ### 今天准备在ubuntu下载vim,但系统如下报错: W: GPG 错误:https://apt.dockerproject.org ubuntu-trusty InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY F76221572C52609D 解决方案如下(–recv-keys ...

AQS源码分析

AQS

前言 AQS是Semaphore、ReentrantReadWriteLock、ReentrantLock、CountDownLatch等并发类 底层的实现,点开上面说的并发类的源码我们可以看到,它们自身的实现很少,基本上都是在AQS下实现的。面试的 时候上述所说的并发工具都会问到,但一般我们只关注它们的用法与区别,很少关注其实现。今天这篇文章,我们以 ReentrantLock为基础,来看...

各种技术的区别

各种技术的区别

前言 面试中老是有人问A与B有什么区别这样的问题,所以已此片文章来记录这些常见技术的区别。 get 与 post 的区别 GET 请求可被缓存,POST 请求不会被缓存 GET 请求保留在浏览器历史记录中,POST 请求不会保留在浏览器历史记录中 GET 请求可被收藏为书签,POST 不能被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制,PO...

Java位图法分析

位图法

前言 前几天的面试有问到海量数字去重的问题,当时知道能用位图法来解决,但却对其原理不是太了解所有有了这篇文章。 什么是位图法? 位图法即bitmap,就是使用每一个bit来存储数据状态,来表示数据是否存在,适合用于大规模的数据去重。 由上图可以知道,每一 bit 位代表一位数字,bit置为1表示数据存在。上图数组是从0开始的,可能出 现数字最小值很大的问题,那么小于最小值的bit位就...

ThreadPoolExecutor线程池源码分析

ThreadPoolExecutor

前言 在并发很大的情况下,频繁创建线程与销毁线程会带来很大的消耗,线程池就是在解决这个问题的。 线程构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ...