2021年3月2日

MyBatis缓存

摘要: MyBatis是常见的Java数据库访问层框架. 在日常工作中, 开发人员多数情况下是使用MyBatis的默认缓存配置, 但是MyBatis缓存机制有一些不足之处, 在使用中容易引起脏数据, 形成一些潜在的隐患. 个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题, 带着个人的兴趣, 阅读全文

posted @ 2021-03-02 20:45 annwyn 阅读(77) 评论(0) 推荐(0)

2021年2月22日

ArrayList源码解析

摘要: ArrayList 是一个动态数组, 它是线程不安全的, 允许元素为null. 其底层数据结构是数组, 它实现了List, RandomAccess, Cloneable, Serializable接口. 1. 构造函数 public class ArrayList<E> extends Abstr 阅读全文

posted @ 2021-02-22 21:11 annwyn 阅读(72) 评论(0) 推荐(0)

Spring事务简介

摘要: 事务可以看做是一次大的活动, 由不同的小活动组成, 这些活动要么全部成功, 要么全部失败. 1. 基本特性ACID 原子性: 执行单元中的操作要么全部执行成功, 要么全部失败. 如果有一部分成功一部分失败那么成功的操作要全部回滚到执行前的状态. 一致性: 执行一次事务会使用数据从一个正确的状态转换到 阅读全文

posted @ 2021-02-22 21:10 annwyn 阅读(192) 评论(0) 推荐(0)

RocketMQ入门

摘要: RocketMQ设计基于主题的发布与订阅模式, 其核心功能包括消息发送, 消息存储, 消息消费. 整体设计追求简单与性能单一. 1. 消息队列 1.1 为什么使用消息队列 消息队列主要解决的问题一共有三个: 解耦: 解决不同重要程度、不同能力级别系统之间依赖 异步: 当存在一对多调用时, 可以发一条 阅读全文

posted @ 2021-02-22 21:06 annwyn 阅读(146) 评论(0) 推荐(0)

Java虚拟机入门

摘要: Java虚拟机的工作原理, 大致可以分为以下步骤: 首先Java源文件(.java文件)经过编译器(javac命令等)将代码编译为字节码文件(.class文件), 然后加载字节码文件, 载入系统分配给JVM的内存区, 然后执行引擎解释或编译类文件, 再由即时编译器将字节码转化为机器码. 1. JVM 阅读全文

posted @ 2021-02-22 21:04 annwyn 阅读(95) 评论(0) 推荐(0)

MySQL explain详解

摘要: 在日常工作中, 我们会记录一些执行时间比较久的SQL语句, 找出这些SQL语句并不意味着完事了, 我们常常用到explain这个命令来查看一个这些SQL语句的执行计划, 查看该SQL语句有没有使用上了索引, 有没有做全表扫描, 所以我们需要深入了解MySQL基于开销的优化器. explain sel 阅读全文

posted @ 2021-02-22 21:01 annwyn 阅读(5883) 评论(0) 推荐(1)

分布式事务

摘要: 分布式事务是指事务的参与者、资源服务器以及事务管理器分别位于分布式系统的不同节点之上. 1. 基础理论 1.1 本地事务 事务是指由一组操作组成的一个工作单元, 这个工作单元具有原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability 阅读全文

posted @ 2021-02-22 21:00 annwyn 阅读(173) 评论(0) 推荐(0)

ConcurrentHashMap源码解析

摘要: ConcurrentHashMap是java.util.concurrent包的重要成员, 本文结合JAVA内存模型, 分析ConcurrentHashMap的源码解析. 1. ConcurrentHashMap 在多线程环境下, 一般都是不能直接使用HashMap的, 因为他不是线程安全的. 通常 阅读全文

posted @ 2021-02-22 20:59 annwyn 阅读(118) 评论(0) 推荐(0)

HashMap源码解析

摘要: 本文主要基于JDK 1.8版本进行HashMap的源码解析. 1. 简介 HashMap继承自Map接口, 内部使用数组 + 链表 + 红黑树的结构. 在JDK 1.8之前都是数组 + 链表的结构, 因为链表的查询操作是O(N)的时间复杂度, 而且hashMap中查询操作也是占了很大比例的, 如果当 阅读全文

posted @ 2021-02-22 20:58 annwyn 阅读(73) 评论(0) 推荐(0)

ThreadPoolExecutor分析

摘要: 线程池由于减少了每个任务调用的开销, 它们通常可以在执行大量异步任务时提供增强的性能, 并且还可以提供绑定和管理资源(包括执行任务集时使用的线程)的方法. 1. ThreadPoolExecutor 1.1 构造函数 public class ThreadPoolExecutor extends A 阅读全文

posted @ 2021-02-22 17:18 annwyn 阅读(65) 评论(0) 推荐(0)

导航