Java
一颗小小的石头.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java对象池pool2分析PooledObjectFactory
背景: 池化技术 在Java中使用的相当多了,例如各种数据库连接池,以及JDK自己实现的线程池等等,从根本上说他们都是对象池,把资源池化,按需存取,不仅能够一定程度上节省对象的创建时间(缓存思想),还能够对池子做一些管理和控制(例如设置资源最大数,闲置数等等)。池的经典实现要数 apache 的 pool2 了 .Pool2默认的对...原创 2020-02-08 23:40:55 · 5217 阅读 · 0 评论 -
最新 springboot2.x 整合 shiro 身份认证
背景shiro是一套工业级的身份及权限验证模块,具体功能和原理在此实战中不多累述。总之 Shiro 的核心是两个功能,一是 身份验证 (通俗说就是登录),二是 权限验证(此用户有没有权限操作)。这里使用 Springboot 2.x 搭建,引入的是 shiro-spring-boot-web-starter,注意其中的web不能少,如果是web项目的话。这里需要指出,sp...原创 2020-02-05 15:07:26 · 373 阅读 · 0 评论 -
idea中maven命令启动的java路径
问题描述:在idea中,使用 maven 和其插件(在右侧栏中),双击运行时启动的是jdk7疑惑:JAVA_HOME 是1.8的项目的 project 和 modules 设置也都是 1.8的maven config 文件按照如图设置 (确定使用的是这个idea的maven)所有的 jdk配置都是 1.8的了,为什么它还从1.7启动?在网上搜索不到这个问题之后,给自己留...原创 2019-12-28 22:35:50 · 453 阅读 · 0 评论 -
CopyOnWriteArrayList set方法中的 Not quite a no-op; ensures volatile write semantics
背景:CopyOnWrite技术即写时复制,原理在网上一大堆了,关于CopyOnWriteArrayList的 set方法中(420行) 为什么即使没有发生任何变化,也要 setArray 一下? 需要去刷新volatile所修饰的数组引用吗?探索:网上解析很多,但核心其实就一点:这不是为了保证CopyOnWriteArrayList本身的可见性,\color{red}{这不是为了保证...原创 2019-11-30 20:52:31 · 614 阅读 · 0 评论 -
ArrayList构造函数 c.toArray might (incorrectly) not return Object[] (see 6260652)
问题:在ArrayList或者CopyOnWriteArrayList等源码中,以Collection为参数的构造方法中为什么会出现红框中的判断呢,难道c.toArray()返回的还不一定是Object类型的数组?探究:打开 c.toArray的源码,发现是接口,我们随便找一个实现类,就例如最常见的ArrayList吧注意,这里的elementData是ArrayList的内部数组,它...原创 2019-11-30 15:01:52 · 398 阅读 · 0 评论 -
Java LRU的两种实现
LRU 最近最久未使用,是一种常用的淘汰算法,广泛应用与OS内存页面调度,Redis缓存淘汰策略,等等。在Java中有两种实现方式,一个是直接利用JDK已有的 LInkedHashMap ,一个是自己手写 DoubleLinkedList 结合HashMap。一:利用JDK方法public class LRU<K,V> extends LinkedHashMap<K,V>...原创 2019-11-22 14:23:26 · 650 阅读 · 0 评论 -
java用迭代器时修改集合一定会触发Fast-fail机制?
已经有很多帖子分析了Fast-fail机制,就不累述了。往往我们喜欢把知识点提炼成最精简的话语放到大脑里,就是Fast-fail机制是为了防止迭代器进行集合迭代过程中对集合元素进行增加或删除(包括单线程和多线程),保证数据一致性但事实真的这么简单?看个小demo运行可以发现,移除 “hello” 或 “java” 都会引发 ConcurrentModificationException异常...原创 2019-11-19 21:32:40 · 225 阅读 · 0 评论 -
Java 实现生产者消费者问题 使用 BlockingQueue
生产者消费者有多种实现方法,最基础的有Java原生语法,synchronized + wait和notify或者进一步有ReEntrantLock + Condition而在 Java 多线程编程最佳实践中提到,多用同步工具少用 wait() 和 notify()建议使用 BlockingQueue 实现生产者消费者问题import java.util.concurrent.ArrayB...原创 2019-11-07 20:33:10 · 201 阅读 · 0 评论 -
mybatis + lombok 出现 java.lang.IndexOutOfBoundsException
**问题描述:**就是一个简单的select语句,拿出来单独运行也是OK的。select s.sid,s.title,s.url,s.icon,s.cate_id from sites s跟进错误栈调试发现,报错是因为mybatis要把select出来的字段包装成Java对象时,找不到其构造函数中对应的字段。构造函数为啥这5个字段呢。就是因为用了lombok的@Builder方法,这...原创 2019-10-05 17:57:00 · 3494 阅读 · 1 评论 -
JDK设计缺陷
最近在看经典书籍Effective Java 中文版(第三版),里面讲了好几处JDK的设计缺陷,特此记录,缓原创 2019-05-19 09:27:33 · 535 阅读 · 0 评论
分享