- 博客(14)
- 收藏
- 关注
原创 Jedis不同版本一致性hash实现的坑
最近做新旧系统做会话统一,新旧系统都是用redis存储会话,原以为很简单的事情,然而出现了奇怪现象。新系统创建了会话,理论上旧系统就可以正常访问,但是出现时而可以,时而不行(报会话不存在需登录)。本地debug,用新系统创建的token在旧系统上查,确实有的可以查到,有的不行。由于系统是用Jedis分片模式(ShardedJedis),猜测新系统把会话存在A节点,旧系统去B节点查,但是同一个token hash后应该是同一个节点才是,查了下两个系统用的Jedis版本不一样,感觉问题接近了,一查代码果然新
2021-12-26 21:40:56 360
原创 PageHelper分页原理与隐藏坑
PageHelper分页原理与隐藏坑欢迎使用Markdown编辑器新的改变欢迎使用Markdown编辑器最近项目使用的PageHelper发生一个神奇的分页问题 代码没有使用分页,但是在运行的时候却发生了分页,而且还是偶现,因此研究了一番PageHelper的分页原理,在此记录一番。新的改变maven依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId&g
2021-06-05 17:46:53 4573 3
原创 activiti工作流共用数据库版本冲突解决
背景之前做一个新项目 A 的时候,由于某些原因需要跟另外一个项目 B 共用数据库,刚开始开发的时候为了不影响项目 B 的开发和测试,我们拷贝了一个数据库进行开发。问题终于等到开发完想要部署测试的时候用回了原来的数据库,出现了一个尴尬的问题 ̄□ ̄||,因为两个项目都用activiti工作流,而且版本还不一致,新项目 A 用了6.0.0,旧项目 B 用的5.21.0,出现了版本冲突,导致旧项目 B 无法启动。眼看上线deadline越来越近,得赶紧解决这个版本冲突的问题,于是就有了下文的探索过程。尝试
2020-05-30 14:22:29 1409
原创 MySQL表的状态检查、索引修复、碎片整理
检测和重组表的关键字分布:Analyze TableMySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应的列包含多少个不同的值,比如性别,正常就有2个值,男/女——如果cardinality大大少于数据的实际散列程度,那么会影响 SQL 执行计划的生成,也就可能导致索引失效了(不走索引)。我们可以使用SHOW INDEX语句来查看索引的散列程度:SHOW INDEX FROM PLA
2020-05-25 22:48:08 1562
原创 基于Java的布隆过滤器奥秘之BitSet原理
基于Java的布隆过滤器奥秘之BitSet原理一、布隆过滤器的介绍二、布隆过滤器的原理三、布隆过滤器奥秘-BitSet的原理一、布隆过滤器的介绍布隆过滤器想必大家都有耳闻,使用场景大概是:给你一堆数据,如地名、人名,然后判断某个名字在不在里面。到这里可能第一反应会想到我们常用的一些数据结构就可以解决,比如HashSet、HashMap,把数据先放进HashSet或者HashMap中,要判断某个...
2020-04-19 19:31:54 311 1
原创 依赖冲突导致的NoSuchMethodError
最近在做旧项目的微服务改造,将原来的Spring、SpringMVC项目迁移到Spring Boot、Spring Cloud上,同时也将MyBatis换成了Mybatis Plus。把一些基础依赖还有旧项目用的包加进来后尝试启动一下,果不其然,报错了……看错误信息报了NoSuchMethodError,怎么会找不到方法呢?同样的基础包在我另一个微服务项目运行地好好的,旧项目的依赖包也是用地好...
2020-04-01 18:41:25 449
原创 部门工资前三高的所有员工- group by的使用
Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。Department 表包含公司所有部门的信息。编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工。例如,根据上述给定的表,查询结果应返回:解释:IT 部门中,Max 获得了最高的工资,Randy 和 Joe 都拿到了第二高的工资,...
2020-03-27 23:42:35 836
原创 快排实现数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: "3033459"提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要...
2020-03-26 23:10:34 343
原创 环形数组队列求滑动窗口最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置最大值[1 3 -1] -3 5 3 6 7 3...
2020-03-02 19:49:56 723
原创 两个递归实现K个一组翻转链表
题目:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2-&...
2020-03-01 14:58:53 237
原创 SimpleDateFormat时间格式转换坑
SimpleDateFormat时间格式转换坑近日项目里碰到一个SimpleDateFormat时间格式转换的问题,代码类似为:SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd"); String dateStr1 = "9999-12-31"; String dateStr2 ...
2019-11-02 16:01:28 753
原创 面向对象设计原则与设计模式 - 如何写出更优雅的代码
面向对象设计原则单一职责原则开放封闭原则Liskov替换原则接口隔离原则依赖倒置原则前段时间有幸参加了麦思博优雅代码养成指南的培训,故借此记录总结一番,希望能有助于他人。一个软件、一段代码从合格到优雅或者说优秀,可以归纳为逐级满足以下特质,学术名叫ISO/IEC 软件质量特质:功能:软件符合需求所必需的条件可靠性:满足某种指定级别稳定性能的能力易用性:易理解、使用并吸引客户的能力性能...
2019-10-27 10:26:04 353
原创 HashMap源码笔记 - 数据结构与基本操作
HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口,结构可以理解数组+链表(或红黑树),即主干是数组,存放值的时候如果出现hash碰撞,那么该位置就会变成链表,再如果这个链表的长度太长了就会转换为红黑树。此外,HashMap……
2019-10-27 00:44:29 311 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人