- 博客(9)
- 收藏
- 关注
原创 AQS应用——ReentrantLock源码分析
前言本文通过可重入锁ReentrantLock的源码分析,加深对aqs和ReentrantLock的理解关于AQS相关的知识可以参考我的另一篇文章Java并发——AQS源码解析先从使用上入手构造方法public ReentrantLock() { sync = new NonfairSync();}public ReentrantLock(boolean fair) { ...
2020-04-04 18:06:48 234
原创 Zookeeper 安装配置 伪集群搭建
本文总结一下在Linux上Zookeeper的安装和配置安装在zookeeper官网上推荐的清华镜像地址下载对应版本的zk安装包,以最新版本3.5.6举例,这里记住要下载带-bin的包如果下载不带-bin的包,启动zk时可能会报错Starting zookeeper … FAILED TO START查看日志会看到如下错误Error: Could not find or load m...
2020-03-29 15:53:37 273
原创 Java并发——AQS源码解析
本文通过总结源码学习,来分析了解下AQS的工作原理AQS是juc包锁实现的基础框架,研究juc包源码之前,AQS是必经之路虽然说,平时项目中,我们几乎不会有自己去继承aqs实现锁的需要,但是通过源码了解aqs的机制和原理,有助于我们加深对各种锁的理解,以及出现问题时排查的思路AbstractQueuedSynchronizer抽象队列同步器,CLH 锁The wait queue is...
2020-03-29 15:51:37 469
原创 Java并发——ThreadPoolExecutor源码解析
本文总结一下对线程池源码的学习,基于jdk 1.8什么是线程池顾名思义线程池就是一个可以提供一组可复用线程的对象。线程池内部有阻塞队列,用来存放等待执行的任务。然后内部的线程来执行这些任务,线程会不断的从阻塞队列中获取任务来执行,而不是执行完一个任务就销毁。线程池的作用在高并发场景下,如果给每个任务都去创建一个线程来执行,结果就是大量的线程创建与销毁,系统的开销将会很大,影响应用的执行...
2020-03-29 15:50:14 231
原创 Java集合框架——ArrayList源码
本文通过源码来总结一下ArrayListArrayListArrayList 底层上是一个动态数组属性// 默认初始容量private static final int DEFAULT_CAPACITY = 10;// 指定容量为0时,数组为该值private static final Object[] EMPTY_ELEMENTDATA = {};// 调用无参构造方法,数...
2020-03-29 15:47:19 91
原创 spring boot 2.1.x log4j2 配置
本文通过项目中的日志配置问题,引出并总结一下spring boot 2.1.x 中 log4j2 的配置现象在服务器上调试项目的时候,发现日志文件生成的路径有问题,总是找不到日志位置,后来测试发现每次都在当前目录下生成 log/xxx.log查看项目配置如下:logging.level.com.xxx.yyy=INFOlogging.file=log/xxx.log在resource...
2020-03-29 15:46:23 726
原创 Java中的回调方法
引言回调方法大家经常听,但是可能有的同学并不是很清楚回调到底是怎么回事,本文以一个简单的例子,带你了解回调方法。概念所谓回调方法,就是在调用方把一个需要被回调的方法作为参数,传递给要调用的方法,被调用的方法执行完成后,通过该参数返回来调用此方法,作为参数传递的该方法就称作回调方法。应用场景在项目开发中,通常会碰到各个模块或者对象之间的消息传递,A模块的某些方法,需要在B模块满足某些条件...
2020-03-29 15:45:10 1156
原创 斐波那契数列的递归与尾递归
引言之前在lintcode上刷算法入门题,366题是求斐波那契数列,当时就想用递归应该很快就ac了,最后递归是没写错,但是提交报时间超限了,也就引出了这篇文章——尾递归。测试先来看一下,常规的斐波那契递归写法,假设第一项为0,第二项为1:public int fibonacci(int n) { if(n == 1) { return 0; } if(n ...
2020-03-29 15:42:01 1284
原创 Integer中valueOf与parseInt区别及其缓存策略
本文来聊一下Integer中的两个常用的静态方法valueOf和parseInt,顺便引出基本类型包装类的缓存策略前言这篇文章的想法来源于一次代码检查,使用findbugs插件检查代码,然后报了如下信息(不属于bug,但是是一个更好的建议)A boxed primitive is created from a String, just to extract the unboxed prim...
2020-03-29 14:59:33 306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人