<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[clsq0913的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/clsq0913</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; clsq0913]]></copyright><item><title><![CDATA[Jedis不同版本一致性hash实现的坑]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/122160445</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/122160445</guid><author>clsq0913</author><pubDate>Sun, 26 Dec 2021 21:40:56 +0800</pubDate><description><![CDATA[最近做新旧系统做会话统一，新旧系统都是用redis存储会话，原以为很简单的事情，然而出现了奇怪现象。新系统创建了会话，理论上旧系统就可以正常访问，但是出现时而可以，时而不行（报会话不存在需登录）。
本地debug，用新系统创建的token在旧系统上查，确实有的可以查到，有的不行。由于系统是用Jedis分片模式（ShardedJedis），猜测新系统把会话存在A节点，旧系统去B节点查，但是同一个token hash后应该是同一个节点才是，查了下两个系统用的Jedis版本不一样，感觉问题接近了，一查代码果然
新]]></description><category></category></item><item><title><![CDATA[java程序通过http代理访问网络获取节假日数据]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/119615604</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/119615604</guid><author>clsq0913</author><pubDate>Sun, 26 Dec 2021 17:25:51 +0800</pubDate><description><![CDATA[1、http代理验证用户名密码发送http请求
2、获取节假日数据]]></description><category></category></item><item><title><![CDATA[PageHelper分页原理与隐藏坑]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/116856954</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/116856954</guid><author>clsq0913</author><pubDate>Sat, 05 Jun 2021 17:46:53 +0800</pubDate><description><![CDATA[PageHelper分页原理与隐藏坑欢迎使用Markdown编辑器新的改变
欢迎使用Markdown编辑器
最近项目使用的PageHelper发生一个神奇的分页问题 代码没有使用分页，但是在运行的时候却发生了分页，而且还是偶现，因此研究了一番PageHelper的分页原理，在此记录一番。
新的改变
maven依赖
&lt;dependency&gt;
     &lt;groupId&gt;com.github.pagehelper&lt;/groupId&gt;
     &lt;artifactId&g]]></description><category></category></item><item><title><![CDATA[activiti工作流共用数据库版本冲突解决]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/106438256</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/106438256</guid><author>clsq0913</author><pubDate>Sat, 30 May 2020 14:22:29 +0800</pubDate><description><![CDATA[背景
之前做一个新项目 A 的时候，由于某些原因需要跟另外一个项目 B 共用数据库，刚开始开发的时候为了不影响项目 B 的开发和测试，我们拷贝了一个数据库进行开发。
问题
终于等到开发完想要部署测试的时候用回了原来的数据库，出现了一个尴尬的问题￣□￣｜｜，因为两个项目都用activiti工作流，而且版本还不一致，新项目 A 用了6.0.0，旧项目 B 用的5.21.0，出现了版本冲突，导致旧项目 B 无法启动。
眼看上线deadline越来越近，得赶紧解决这个版本冲突的问题，于是就有了下文的探索过程。
尝试]]></description><category></category></item><item><title><![CDATA[MySQL表的状态检查、索引修复、碎片整理]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/106343654</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/106343654</guid><author>clsq0913</author><pubDate>Mon, 25 May 2020 22:48:08 +0800</pubDate><description><![CDATA[检测和重组表的关键字分布：Analyze Table
MySQL 的Optimizer（优化元件）在优化SQL语句时，首先需要收集一些相关信息，其中就包括表的cardinality（可以翻译为“散列程度”），它表示某个索引对应的列包含多少个不同的值，比如性别，正常就有2个值，男/女——如果cardinality大大少于数据的实际散列程度，那么会影响 SQL 执行计划的生成，也就可能导致索引失效了（不走索引）。
我们可以使用SHOW INDEX语句来查看索引的散列程度：
SHOW INDEX FROM PLA]]></description><category></category></item><item><title><![CDATA[基于Java的布隆过滤器奥秘之BitSet原理]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/105617947</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/105617947</guid><author>clsq0913</author><pubDate>Sun, 19 Apr 2020 19:31:54 +0800</pubDate><description><![CDATA[基于Java的布隆过滤器奥秘之BitSet原理一、布隆过滤器的介绍二、布隆过滤器的原理三、布隆过滤器奥秘-BitSet的原理
一、布隆过滤器的介绍
布隆过滤器想必大家都有耳闻，使用场景大概是：给你一堆数据，如地名、人名，然后判断某个名字在不在里面。到这里可能第一反应会想到我们常用的一些数据结构就可以解决，比如HashSet、HashMap，把数据先放进HashSet或者HashMap中，要判断某个...]]></description><category></category></item><item><title><![CDATA[依赖冲突导致的NoSuchMethodError]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/105250951</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/105250951</guid><author>clsq0913</author><pubDate>Wed, 01 Apr 2020 18:41:25 +0800</pubDate><description><![CDATA[最近在做旧项目的微服务改造，将原来的Spring、SpringMVC项目迁移到Spring Boot、Spring Cloud上，同时也将MyBatis换成了Mybatis Plus。把一些基础依赖还有旧项目用的包加进来后尝试启动一下，果不其然，报错了……

看错误信息报了NoSuchMethodError，怎么会找不到方法呢？同样的基础包在我另一个微服务项目运行地好好的，旧项目的依赖包也是用地好...]]></description><category></category></item><item><title><![CDATA[部门工资前三高的所有员工- group by的使用]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/105151869</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/105151869</guid><author>clsq0913</author><pubDate>Fri, 27 Mar 2020 23:42:35 +0800</pubDate><description><![CDATA[Employee 表包含所有员工信息，每个员工有其对应的工号 Id，姓名 Name，工资 Salary 和部门编号 DepartmentId 。

Department 表包含公司所有部门的信息。

编写一个 SQL 查询，找出每个部门获得前三高工资的所有员工。例如，根据上述给定的表，查询结果应返回：

解释：
IT 部门中，Max 获得了最高的工资，Randy 和 Joe 都拿到了第二高的工资，...]]></description><category></category></item><item><title><![CDATA[快排实现数组排成最小的数]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/105128672</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/105128672</guid><author>clsq0913</author><pubDate>Thu, 26 Mar 2020 23:10:34 +0800</pubDate><description><![CDATA[输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。
示例 1:
输入: [10,2]
输出: “102”
示例 2:
输入: [3,30,34,5,9]
输出: "3033459"
提示:
0 &lt; nums.length &lt;= 100
说明:
输出结果可能非常大，所以你需要返回一个字符串而不是整数
拼接起来的数字可能会有前导 0，最后结果不需要...]]></description><category></category></item><item><title><![CDATA[环形数组队列求滑动窗口最大值]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/104617899</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/104617899</guid><author>clsq0913</author><pubDate>Mon, 02 Mar 2020 19:49:56 +0800</pubDate><description><![CDATA[给定一个数组 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...]]></description><category></category></item><item><title><![CDATA[两个递归实现K个一组翻转链表]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/104592200</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/104592200</guid><author>clsq0913</author><pubDate>Sun, 01 Mar 2020 14:58:53 +0800</pubDate><description><![CDATA[题目：给你一个链表，每 k 个节点一组进行翻转，请你返回翻转后的链表。
k 是一个正整数，它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍，那么请将最后剩余的节点保持原有顺序。
示例 :
给定这个链表：1-&gt;2-&gt;3-&gt;4-&gt;5
当 k = 2 时，应当返回: 2-&gt;1-&gt;4-&gt;3-&gt;5
当 k = 3 时，应当返回: 3-&gt;2-&...]]></description><category></category></item><item><title><![CDATA[SimpleDateFormat时间格式转换坑]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/102769860</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/102769860</guid><author>clsq0913</author><pubDate>Sat, 02 Nov 2019 16:01:28 +0800</pubDate><description><![CDATA[SimpleDateFormat时间格式转换坑
近日项目里碰到一个SimpleDateFormat时间格式转换的问题，代码类似为：
SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");
            String dateStr1 = "9999-12-31";
            String dateStr2 ...]]></description><category></category></item><item><title><![CDATA[面向对象设计原则与设计模式 - 如何写出更优雅的代码]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/102764000</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/102764000</guid><author>clsq0913</author><pubDate>Sun, 27 Oct 2019 10:26:04 +0800</pubDate><description><![CDATA[面向对象设计原则单一职责原则开放封闭原则Liskov替换原则接口隔离原则依赖倒置原则
前段时间有幸参加了麦思博优雅代码养成指南的培训，故借此记录总结一番，希望能有助于他人。
一个软件、一段代码从合格到优雅或者说优秀，可以归纳为逐级满足以下特质，学术名叫ISO/IEC 软件质量特质：

功能：软件符合需求所必需的条件
可靠性：满足某种指定级别稳定性能的能力
易用性：易理解、使用并吸引客户的能力
性能...]]></description><category></category></item><item><title><![CDATA[HashMap源码笔记 - 数据结构与基本操作]]></title><link>https://blog.youkuaiyun.com/clsq0913/article/details/102654654</link><guid>https://blog.youkuaiyun.com/clsq0913/article/details/102654654</guid><author>clsq0913</author><pubDate>Sun, 27 Oct 2019 00:44:29 +0800</pubDate><description><![CDATA[HashMap 继承于AbstractMap，实现了Map、Cloneable、java.io.Serializable接口，结构可以理解数组+链表（或红黑树），即主干是数组，存放值的时候如果出现hash碰撞，那么该位置就会变成链表，再如果这个链表的长度太长了就会转换为红黑树。此外，HashMap……]]></description><category></category></item></channel></rss>