java
文章平均质量分 79
Toner_唐纳
自律!自信!自强!越努力越幸运!
展开
-
ThreadLocal 简述
ThreadLocal 简述文章目录ThreadLocal 简述前言场景实现原理ThreadLocal`set``get()`ThreadLocal$ ThreadLocalMap`Thread`关系引用图总结附录为何`Entry`使用弱引用?前言之前面试又被问过关于 ThreadLocal 的使用以及实现原理,回答的不是很好,在这里会对 ThreadLocal进行分析,介绍,以及总结性概述场景最常见的ThreadLocal使用场景为 用来解决 数据库连接、Session管理等。如class C原创 2020-06-04 08:55:28 · 243 阅读 · 0 评论 -
Integer使用==的几种情况
今天主要说一下 java 中的 Integer 的==比较的几种结果,知识点比较基础,但是需要细心。public class CompareInteger { /** * 基于 JDK自身属性,我们可以在这里给出几个前提: * <p> * 1.== 比较的是对内对象的地址 * 2.equals比较的是对象的值是否相等(可重写) * 3.int,long等基础类型的值存储在栈中 * 4.Integer的常量池大小范围为-128原创 2020-06-03 15:01:36 · 4394 阅读 · 0 评论 -
Java7/8中的 HashMap 和 ConcurrentHashMap
Java7/8中的 HashMap 和 ConcurrentHashMap文章目录Java7/8中的 HashMap 和 ConcurrentHashMapJava7 HashMapput 过程分析数组初始化计算具体数组位置添加节点到链表中数组扩容get 过程分析Java7 ConcurrentHashMap初始化put 过程分析初始化槽: ensureSegment获取写入锁: scanAndLockForPut扩容: rehashget 过程分析并发问题分析Java8 HashMapput 过程分析数原创 2020-05-28 18:57:11 · 602 阅读 · 0 评论 -
Java并发--AQS ( Condition )
Java并发–AQS ( Condition )文章目录Java并发--AQS ( Condition )Condition使用场景将节点加入到条件队列完全释放独占锁等待进入阻塞队列signal 唤醒线程,转移到阻塞队列唤醒后检查中断状态获取独占锁处理中断状态带超时机制的 await不抛出 InterruptedException 的 awaitAbstractQueuedSynchronizer 独占锁的取消排队参考Condition使用场景import java.util.concurrent.原创 2020-05-19 16:38:21 · 395 阅读 · 0 评论 -
java 线程中断和 InterruptedException 异常
java 线程中断和 InterruptedException 异常文章目录java 线程中断和 InterruptedException 异常线程中断InterruptedException 概述处理中断参考线程中断首先,我们要明白,中断不是类似 linux 里面的命令 kill -9 pid,不是说我们中断某个线程,这个线程就停止运行了。中断代表线程状态,每个线程都关联了一个中断状态,是一个 true 或 false 的 boolean 值,初始值为 false。Java 中的中断和操作系统的原创 2020-05-19 16:15:51 · 1701 阅读 · 0 评论 -
SpringBoot + Redis实现布隆过滤器拦截无效请求
SpringBoot + Redis布隆过滤器拦截无效请求文章目录SpringBoot + Redis布隆过滤器拦截无效请求简述Redis 安装 Bloom Filter基本指令结合 SpingBoot方式一方式二参考简述关于布隆过滤器的详细介绍,我在这里就不再赘述一遍了,不了解的可以移步BloomFilter 布隆过滤器-简述本文重点是在 springboot 中使用 redis 的布隆过滤器我们首先知道:BloomFilter使用长度为m bit的字节数组,使用k个hash函数,增加一个元素:原创 2020-05-27 10:36:10 · 1264 阅读 · 2 评论 -
Redisson 分布式锁实现分析
Redisson 分布式锁实现分析文章目录Redisson 分布式锁实现分析分布式锁常见问题互斥死锁性能重入RedissonLock 源码解析分布式锁使用*getLock()**lock()**tryAcquire()**unlock()*注意参考分布式锁常见问题互斥分布式系统中运行着多个节点,必须确保在同一时刻只能有一个节点的一个线程获得锁,这是最基本的一点。死锁分布式系统中,可能产生死锁的情况要相对复杂一些。分布式系统是处在复杂网络环境中的,当一个节点获取到锁,如果它在释放锁之前挂掉了,或者转载 2020-05-26 17:33:52 · 567 阅读 · 0 评论 -
jvm调优-命令篇
jvm调优-命令篇文章目录jvm调优-命令篇jpsjstatjmap**jhat**jstackjinfo转载运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决。所有的工具几乎都是依赖于jdk的接口和底层的这些命令,研究这些转载 2020-05-25 18:10:03 · 264 阅读 · 0 评论 -
JVM-知识点整理
JVM-知识点整理文章目录JVM-知识点整理JVM内存结构Java堆(Heap)方法区(Method Area)程序计数器(Program Counter Register)JVM栈(JVM Stacks)本地方法栈(Native Method Stacks)垃圾收集算法对象存活判断标记 -清除算法复制算法标记-压缩算法分代收集算法垃圾收集器Serial收集器ParNew收集器Parallel收集器Parallel Old 收集器CMS收集器G1收集器内存划分G1 工作流程年轻代收集Old GC / 并发原创 2020-05-25 17:03:07 · 607 阅读 · 0 评论 -
Redis-知识点整理
Redis文章目录Redisredis 特性性能集群模式持久化RDBAOF持久化处理过期 Key混合NOSql 对比对比Memcached数据结构StringHashListSetSortSetredis 内部机制过期策略内存淘汰机制redis哨兵分布式分布式缓存分布式锁应用场景热点数据排行榜/计数共享Session消息队列发布/订阅常见问题缓存击穿缓存穿透缓存雪崩参考最近准备面试,做一些技术栈整理和总结,希望能有更多的收货。redis 是一个数据库,不过与传统数据库不同的是 redis 的数据是存原创 2020-05-25 10:15:56 · 226 阅读 · 0 评论 -
Spring-- 事务
Spring-- 事务文章目录Spring-- 事务前言事务的特性(ACID)Spring对事务的支持事务管理方式编程式事务管理声明式事务管理Spring 事务管理接口PlatformTransactionManager:事务管理接口TransactionDefinition:事务属性TransactionStatus:事务状态事务属性详解事务传播行为事务隔离级别事务超时属性事务只读属性事务回滚规则@Transactional 注解使用详解`@Transactional` 的使用注意事项总结参考前言事原创 2020-05-22 17:34:34 · 192 阅读 · 0 评论 -
Java 并发--线程池设计思想和源码实现
Java 并发–线程池设计思想和源码实现文章目录Java 并发--线程池设计思想和源码实现总览Executor 接口ExecutorServiceFutureTaskAbstractExecutorService**`AbstractExecutorService`****`invokeAny`****`invokeAll`**ThreadPoolExecutor**`Worker`****`addWorker(Runnable firstTask, boolean core) `****`addWork原创 2020-05-21 15:15:14 · 400 阅读 · 0 评论 -
Java并发--AQS共享模式
Java并发–AQS共享模式文章目录Java并发--AQS共享模式CountDownLatch案例源码分析分析案例**`await()`****`countDown()`**CyclicBarrier源码分析Semaphore参考CountDownLatchCountDownLatch 这个类是比较典型的 AQS 的共享模式的使用,这是一个高频使用的类。latch 的中文意思是门栓、栅栏,具体怎么解释我就不废话了,大家随意,看两个例子就知道在哪里用、怎么用了。案例假设我们有 N ( N >原创 2020-05-19 20:11:06 · 997 阅读 · 0 评论 -
Java 并发--AQS(通过ReentrantLock理解 AQS)
Java 并发–AQS文章目录Java 并发--AQSAQS 结构AQS 属性线程抢锁????解锁操作总结补充参考AQS 结构AQS 属性// 头结点,你直接把它当做 当前持有锁的线程 可能是最好理解的private transient volatile Node head;// 阻塞的尾节点,每个新的节点进来,都插入到最后,也就形成了一个链表private transient volatile Node tail;// 这个是最重要的,代表当前锁的状态,0代表没有被占用,大于 0 代表原创 2020-05-19 13:21:25 · 405 阅读 · 0 评论 -
设计模式--行为型模式
设计模式–行为型模式文章目录设计模式--行为型模式前言策略模式观察者模式责任链模式模板方法模式状态模式总结参考前言行为型模式关注的是各个类之间的相互作用,将职责划分清楚,使得我们的代码更加地清晰。策略模式先定义一个策略接口:public interface Strategy { public void draw(int radius, int x, int y);}然后我们定义具体的几个策略:public class RedPen implements Strategy {原创 2020-05-17 10:44:42 · 132 阅读 · 0 评论 -
设计模式--结构型模式
设计模式–结构型模式文章目录设计模式--结构型模式前言代理模式适配器模式默认适配器模式对象适配器模式类适配器模式适配器模式总结桥梁模式装饰模式门面模式组合模式享元模式总结参考前言结构型模式旨在通过改变代码结构来达到解耦的目的,使得我们的代码容易维护和扩展。代理模式代理模式是我们最常用的模式之一了,用一个代理来隐藏具体实现类的实现细节,通常还用于在真实的实现的前后添加一部分逻辑。既然说是代理,那就要对客户端隐藏真实实现,由代理来负责客户端的所有请求。当然,代理只是个代理,它不会完成实际的业务逻辑,原创 2020-05-16 22:36:35 · 222 阅读 · 0 评论 -
设计模式--创建型模式
设计模式–创建型模式文章目录设计模式--创建型模式前言工厂模式简单工厂模式工厂模式抽象工厂模式单例模式饿汉模式饱汉模式经典嵌套类枚举单例实现(推荐)建造者模式原型模式总结参考前言设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。有一些重要的设计原则在开篇和大家分享下,这些原则将贯通全文:面向接口编程,而不是面原创 2020-05-16 17:49:08 · 2477 阅读 · 0 评论 -
Spring--IOC容器
Spring–IOC容器文章目录Spring--IOC容器简介上帝视角简述IOC 体系架构BeanFactory体系架构Application体系架构参考简介Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。上帝视角简述[外链图片转存失败原创 2020-05-13 20:42:29 · 137 阅读 · 0 评论 -
BloomFilter 布隆过滤器-简述
BloomFilter 布隆过滤器文章目录BloomFilter 布隆过滤器遇到问题布隆过滤器介绍原理优点缺点使用场景具体实现google guava实现的布隆过滤器简单使用问题解决方案遇到问题在实际开发过程中,为了应对高并发请求,需要对系统做缓存处理,设计缓存系统时,不得不考虑缓存穿透,缓存穿透、缓存击穿与失效时的雪崩效应缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,...原创 2020-05-08 11:44:55 · 582 阅读 · 0 评论 -
使用RabbitMq实现延迟队列
延迟队列的需求:在生产环境中,出现用户下单后,需要在半个小时之内进行支付,如果半个小时之内未进行支付,该订单将被处理。这时候就需要使用到了延迟队列。RabbitMq的特性TTL(time to live)RabbitMQ可以针对Queue设置x-expires 或者 针对Message设置 x-message-ttl,来控制消息的生存时间,如果超时(两者同时设置以最先到期的时间为准),则消息...原创 2020-03-30 09:09:01 · 285 阅读 · 0 评论 -
CentOS 安装mysql 5.7
CentOS 安装mysql 5.7方式一、rpm 安装包1.安装 mysql 源在 https://dev.mysql.com/downloads/repo/yum/ 找到 yum 源 rpm 安装包# 下载shell> wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm# 安装 ...原创 2019-08-09 10:20:27 · 99 阅读 · 0 评论 -
spring boot @value 无法注入static 修饰的参数
spring boot 拒绝 @value 注入static 修饰的参数中在spring boot中@value 的值是不能被注入进static 修饰的静态变量中,示例:import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Com...原创 2019-05-27 10:40:02 · 1032 阅读 · 0 评论 -
超级简单的guava配置
由于实际业务开发,现有需求如下: public class LightupCityRelation implements Serializable { private static final long serialVersionUID = -3086558476279595830L; private Long id;//唯一标识 ...原创 2019-04-04 16:11:31 · 1085 阅读 · 0 评论