
java
文章平均质量分 81
Java宝典
关注公众号:java宝典
展开
-
JAVA的SPI机制
JAVA的SPI机制是什么?SPI(Service Provider Interface): ,“服务提供者接口”,是指在 服务使用方 角度提出的“接口要求”,是对“服务提供方”提出的约定,简单说就是:“我需要这样的服务,现在你们来满足”。是不是看起来很高深的样子.其实特别简单 我们先来一个例子,大家更容易理解什么是JAVA的SPI机制:首先我们提供了一个订单处理的接口/** * @Author: lty * @Date: 2021/1/22 14:24 * 订单的处理接口 */publ原创 2021-01-22 15:38:55 · 361 阅读 · 0 评论 -
学习单例模式引发的思考
单例存在哪里问题?1.单例对oop的支持不友好OOP 四大特性: 封装 继承 多态 抽象而单例这种设计模式对于其中的抽象 继承 多态 都支持的不好 为什么这么说呢?我们先来看一个单例的例子public class Singleton_4 { //使用内部类方式构造单例, 线程安全并且懒加载 private AtomicInteger id = new AtomicInteger(0); private Singleton_4() { } public原创 2021-01-13 09:08:26 · 205 阅读 · 0 评论 -
一文搞懂什么是布隆过滤器(附JAVA实现)
1.什么是布隆过滤器?首先,我们需要了解布隆过滤器的概念。布隆过滤器(Bloom Filter)是一个叫做 Bloom 的老哥于1970年提出的。我们可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。位数组中的每个原创 2021-01-08 14:21:21 · 1243 阅读 · 0 评论 -
缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。常见类型包括LFU、LRU、ARC、FIFO、MRU。最不经常使用算法(LFU):这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。最近最少使用算法(LRU):这个缓存算法将最近使用的条目存放到靠近缓存顶部的位置。当一个新条目被访问时,LRU将它放置到缓存的顶部。当缓存达到极限时原创 2021-01-07 09:34:22 · 417 阅读 · 0 评论 -
Mybatis源码分析(一)
准备在阅读源码前,需要先clone源码 地址:https://github.com/mybatis/mybatis-3Mybatis框架使用大量常见的设计模式,学习Mybatis源码我们主要学习以下几点:学习大佬们的编码思想及规范学习一些传承下来的设计模式实践java基础理论带着问题阅读源码 问题1:源码中用了哪些设计模式?为什么要用这些设计模式?问题2.Mybatis打开调试模式之后,能打印sql语句等信息,这是怎么实现的?实现过程中使用了什么设计模式?假如有多个日志实现,加原创 2020-11-26 12:52:53 · 262 阅读 · 0 评论 -
ReetrantLock源码分析
ReentrantLock类的大部分逻辑,都是其均继承自AQS的内部类Sync实现的啥是AQS:Java并发编程核心在于java.concurrent.util包而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如「等待队列、条件队列、独占获取、共享获取」等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称AQS 它定义了一套多线程访问共享资源的同步器框架,是一个「依赖状态(state)的同步器」。以公平锁为例子: public static void原创 2020-11-06 15:52:23 · 270 阅读 · 2 评论 -
SpringBoot项目集成sentinel降级快速失败
项目的配置:pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> ...原创 2020-04-02 15:32:07 · 2130 阅读 · 0 评论 -
HashMap的的实现原理
文章目录HashMapJDK7和JDK8中大致变化哈希表的主干就是数组哈希冲突 哈希碰撞HashMap的整体结构图对代码的简单介绍重写equals方法需同时重写hashCode方法总结HashMapJDK7和JDK8中大致变化1.7中采用数组+链表,1.8采用的是数组+链表/红黑树,1.8中链表长度超过8,元素长度超过64才用红黑树储存1.7扩容时需要重新计算哈希值和索引位置,1.8并不...原创 2020-01-03 10:47:32 · 196 阅读 · 0 评论 -
Spring Boot JWT Token 认证 (JAVA WEB TOKEN)
Spring Boot REST 风格 API 接口 JWT Token 认证 (JAVA WEB TOKEN)文章目录Spring Boot REST 风格 API 接口 JWT Token 认证 (JAVA WEB TOKEN)需求分析核心依赖核心代码Token 拦截器测试需求分析接口认证需求:1 能够有选择地过滤没有权限(Token)的请求2 Token 具有时效性3 如果用户连...原创 2019-12-17 13:55:25 · 530 阅读 · 0 评论 -
事务提供的安全保证 : ACID
文章目录事务提供的安全保证 : ACID原子性(Atomicity):一致性(Consistency):隔离性(isolation):持久性(durability):事务提供的安全保证 : ACIDACID:原子性一致性隔离性持久性AtomicityconsistencyIsolationDurability原子性(Atomicity): 写操作被分...原创 2019-12-17 09:15:38 · 347 阅读 · 0 评论