
JAVA
文章平均质量分 54
幸福的小雨
java
展开
-
Java基于数据库表的ID生成序列
客户端获取ID时先判断本地内存是否有足够生成ID个数,如果有就在ID池中获取一个,否则从数据中批量取出一部分到本地内存,然后在取出一个提供给相应业务使用。考虑到在多线程和分布式集群环境下,需要做到高性能、高可靠性和ID生成不重复,就需要结合本地锁和分布式锁来保证。使用本地电脑测试100线程循环100次,大概1秒可生成3W个ID。Oracle和Postgresql等数据库都有主键序列生成功能,但存在一定局限性,例如:每条数据生成都需要查询一次序列、没有其它业务属性、过度依赖特定数据库环境等。原创 2023-01-18 10:14:41 · 1859 阅读 · 1 评论 -
数据库事物隔离级别
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted(读未提交) 、Read committed(读已提交) 、Repeatable read(重复读) 、Serializable(序列化) ,这四个级别可以逐个解决脏读 、不可重复读 、幻读这几类问题。而事务1,继续执行在旧版本的数据上。整个事务过程中,对同一笔数据的读取结果是相同的,不管其他事务是否在对共享数据进行更新,也不管更新提交与否。一个事务的更新操作结果只有在该事务提交之后,另一个事务才可以的读取到同一笔数据更新后的结果。原创 2023-01-17 16:40:21 · 2864 阅读 · 0 评论 -
定时删除Map中的元素 -- Map中的元素自动过期
不会写博客,就简介绍一下吧。主要功能是定时删除Map中的元素,类似于redis中的get和set,是增强型HashMap,在put时可为每个KEY增加一个过期时间,如果没有设置过期时间那这个key是永久的,忙写的没经过测试,如果有问题请自行解决,谢谢!import java.util.HashMap;import java.util.Map;import java.util.Timer;...原创 2020-03-21 18:04:09 · 8877 阅读 · 9 评论 -
平衡二叉树详解
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。平衡二叉树大部分操作和二叉查找树类似,主要不同在于插入删除的时候平衡二叉树的平衡可转载 2021-06-17 10:53:20 · 44186 阅读 · 2 评论 -
JAVA多线程执行结果汇总,多线程执行,将结果汇总后返回给主线程
/*** 多线程执行结果汇总工具** @author 张帅* @date 2021年05月20日 11时28分02秒* @version V1.0** @param <T>*/@Slf4jpublic class MultiFutureThread<T> { // 总线程数量 private int threadSize; // 单次执行多少次线程 private int singleSize; ...原创 2021-06-01 11:58:05 · 9583 阅读 · 2 评论