常见事务管理器综述

techzealot
常见事务管理器综述 事务管理器功能 开启事务 提交事务 回滚事务 管理多个关联事务 spring事务管理器设计 事务管理器接口定义为PlatformTransactionManager,默认实现为DataSourceTransactionManager,通过Connection接口提供的功能实现事务相关功能的管理,其本身不具备事务功能

Seata

techzealot
seata 分布式事务简介 分布式事务产生的根本原因 组成业务逻辑的一组操作使用的数据库连接不是同一个 CAP理论(布鲁尔定理) 分布式系统中无法同时满足CAP Consistency 一致性 一致性指all nodes see the same data at the same time,即所有节点在同一时间的数据完全一致。

Mysql事务

techzealot
mysql事务详解 本文所有讨论皆是针对innodb存储引擎 锁 锁分类 表锁模式兼容矩阵 InnoDB锁分类 InnoDB锁关系矩阵 行锁算法 不同索引加锁行为分析 InnoDB存储引擎的行锁是通过锁住索引实现的,而不是记录

Spring循环依赖与三级缓存

techzealot
spring循环依赖与三级缓存 单例对象三级缓存出处 //org.springframework.beans.factory.support.DefaultSingletonBeanRegistry /** Cache of singleton objects: bean name to bean instance.

字符串常量池

techzealot
Java字符串常量池 本文讨论的是JDK8及之后的版本 内存模型的变化 jdk8之后字符串常量池从Perm区转移到堆中 intern机制的变化 如果字符串常量池中存在(StringTable在比较时equals返回true),则返回该字符串对象地址; 如果字符串常量池中不存在,则返回调用intern的字符串对象在堆中的地址,达到复用该对象 字符串常量池的添加方式 通过双引号字符串声明添加 //创建一个对象 String s = "test"; //创建hello,world两个字符串常量池中对象,两个栈中中间变量,一个堆中最终变量"helloworld",注意此字符串不在常量池中 String s = new String("hello") + new String("world"); 通过intern方法添加 //常量池不存在时 String s = new String("hello") + new String("world"); s.

Spring Aop

techzealot
Spring AOP AOP实现模式 动态代理 jdk cglib AspectJ静态代理 aspectj compiler AOP失效 动态代理模式下

数据库软删除设计

techzealot
软删除设计 常见方案 使用删除标识字段,通常为布尔类型(mysql tinyint) 使用delete_at时间类型字段,默认值为空,代表未删除,不为空则代表删除时间 优点:实现简单方便,框架支持较好

Spring事务

techzealot
spring事务 声明式事务 声明式事务底层由spring AOP支持 引入依赖spring-boot-starter-jdbc即可使用开箱即用的声明式事务支持 @Service public class OrderService { @Autowired private StoreService storeService; @Transactional(rollbackFor = Exception.

JUC

techzealot
JUC JUC知识体系 @startmindmap * juc ** base *** unsafe *** varhandle *** volatile ** atomic *** AtomicInteger *** AtomicBoolean *** AtomicLong *** AtomicReference *** AtomicMarkablereference *** AtomicStampedReference *** AtomicXXXArray *** AtomicXXXFieldUpdater *** LongAdder/DoubleAdder *** LongAccumulator/DoubleAccumulator ** Locks *** AQS *** ReentrantLock *** ReentrantReadWriteLock *** StampedLock ** uitls *** CountdownLatch *** CyclicBarrier *** Semaphore *** Exchanger *** Phaser ** Containers *** BlockingQueue **** ArrayBlockingQueue **** LinkedBlockingQueue **** PriorityBlockingQueue **** SynchronusQueue ***** TransferQueue ***** TransferStack **** DelayQueue *** BlockingDeque **** LinkedBlockingDeque *** TransferQueue **** LinkedTransferQueue *** CopyOnWrite **** CopyOnWriteArrayList **** CopyOnWriteArraySet *** Concurrent **** ConcurrentLinkedDeque **** ConcurrentLinkedQueue **** ConcurrentSkipListSet **** ConcurrentSkipListMap **** ConcurrentHashMap ** ThreadPool *** ThreadPoolExecutor *** ScheduledThreadPoolExecutor *** ForkJoinPool ** Async *** Future **** FutureTask(Treiber Stack) *** CompletableFuture @endmindmap Synchronized 使用wait/notifyAll,Lock/Condition实现阻塞队列 实现锁的核心要素 为了实现一把具有阻塞或唤醒功能的锁,需要几个核心要素:

sharding sphere

techzealot
sharding-sphere 兼容JDBC规范 常见接口: 如何阅读源码 微内核架构及实现 可参考dubbo spi的增强: 按需加载