<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[one_dayR的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/one_dayR</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; one_dayR]]></copyright><item><title><![CDATA[Redis分布式锁演变]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/170148348</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/170148348</guid><author>one_dayR</author><pubDate>Thu, 05 Nov 2026 21:48:52 +0800</pubDate><description><![CDATA[redis同样实现了这个功能，使用的是异步线程+redis发布订阅+信号量，这个锁是非公平的，具体代码就不贴出来了。另一个线程B进入，可以正常抢到锁，又会出现超卖现象，解决方案：删除锁的时候需要判断业务是否执行完成，可以使用redission的watchdog续期。单台服务器，这么部署使用是没有问题的，为了高可用和高并发，或者滚动发布，需要增加了多台服务器或者节点，那么这个本地锁就无法支持了。还有各种各样的问题，如果手写一个这种类似的分布式锁，需要不断地压测才能真正的去使用。]]></description><category></category></item><item><title><![CDATA[redis各种数据类型的应用场景]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/135070440</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/135070440</guid><author>one_dayR</author><pubDate>Mon, 18 Dec 2023 20:33:31 +0800</pubDate><description><![CDATA[差集：SDIFF set1 set2 set3  { a } 「备注：set1和（set2 and set3和）得差集」并集：SUNION set1 set2 set3  { a,b,c,d,e }交集：SINTER set1 set2 set3  { c }关注了MacTalk，备胎说车等大V。筛选出安卓系统intel、8G。]]></description><category></category></item><item><title><![CDATA[一文了解java中volatile关键字]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/135003000</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/135003000</guid><author>one_dayR</author><pubDate>Thu, 14 Dec 2023 20:11:16 +0800</pubDate><description><![CDATA[上面讲了两个看起来跟我们的主角volatile关系不大的知识点，但其实是非常重要的知识点。首先，通过Java内存模型的理解，现在知道为什么会出现线程对变量的修改其他线程未立即可知的原因了吧？线程修改变量之后，可能并不会立即写回主内存，而其他线程，在主内存数据更新后，也并不会立即去主内存获取最新的数据。这也是问题所在。每次使用数据都必须去主内存中获取；每次修改完数据都必须马上同步到主内存。这样就实现了每个线程都可以立即收到该变量的修改信息。不会出现读取脏数据旧数据的情况。第二个作用是禁止指令重排。]]></description><category></category></item><item><title><![CDATA[Mysql查询某个节点下的所有子节点]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/119567031</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/119567031</guid><author>one_dayR</author><pubDate>Tue, 10 Aug 2021 12:14:17 +0800</pubDate><description><![CDATA[创建表


CREATE TABLE `dynamic_dict` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `company_id` int(11) NOT NULL,
  `dict_code` varchar(100) NOT NULL,
  `item_code` varchar(100) NOT NULL,
  `parent_item_code` varchar(100) DEFAULT NULL COMMENT '级联父级节点',
  `item_]]></description><category></category></item><item><title><![CDATA[Swagger2系列三     常用注解]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/116060741</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/116060741</guid><author>one_dayR</author><pubDate>Fri, 23 Apr 2021 16:30:45 +0800</pubDate><description><![CDATA[Swagger常用到的注解有：


@Api
@ApiModel
@ApiModelProperty
@ApiOperation
@ApiIgnore
@ApiParam
@ApiResponse
@ApiResponses
@ResponseHeader



1. @Api

Api 用在类上，说明该类的作用。可以标记一个Controller类做为swagger 文档资源，使用方式：


@Api(value =“测试", tags = {“测试"})

与Controller注解并列使用。 属性配置.]]></description><category></category></item><item><title><![CDATA[Swagger2系列二     多模块分工开发时配置]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/116059524</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/116059524</guid><author>one_dayR</author><pubDate>Fri, 23 Apr 2021 15:59:12 +0800</pubDate><description><![CDATA[核心配置

每个模块调用此配置分别命名和分组,下文会举例说明:



import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import org.sp...]]></description><category></category></item><item><title><![CDATA[Swagger2系列一     配置篇]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/116058507</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/116058507</guid><author>one_dayR</author><pubDate>Fri, 23 Apr 2021 15:46:42 +0800</pubDate><description><![CDATA[最近开发项目需要和前端人员提供接口文档，文档十分繁琐，索性使用了最近看的这个swagger2，感觉还是不错的，虽然有一定的侵入性，但无伤大雅，如果只是单纯的使用，看此篇和第三篇就可以了，第二篇是为了多模块使用。

swagger2有很多版本，本人踩坑了访问ui404 doc404、登录密码不可使用等诸多问题，最终使用的2.9.2这个版本，还是非常好的体验的

pom文件引入依赖:


&lt;!-- swagger-ui --&gt;
&lt;dependency&gt;
    &lt;groupId&.]]></description><category></category></item><item><title><![CDATA[MySQL 批量插入，如何不插入重复数据]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/115488399</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/115488399</guid><author>one_dayR</author><pubDate>Wed, 07 Apr 2021 16:16:21 +0800</pubDate><description><![CDATA[1、insert ignore into
当插入数据时，如出现错误时，如重复数据，将不返回错误，只以警告形式返回。所以使用ignore请确保语句本身没有问题，否则也会被忽略掉。例如：
INSERT IGNORE INTO user (name) VALUES ('telami') 

这种方法很简便，但是有一种可能，就是插入不是因为重复数据报错，而是因为其他原因报错的，也同样被忽略了～
2、on duplicate key update
当primary或者unique重复时，则执行update语句，如up]]></description><category></category></item><item><title><![CDATA[454. 四数相加 II]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/110244365</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/110244365</guid><author>one_dayR</author><pubDate>Fri, 27 Nov 2020 19:36:58 +0800</pubDate><description><![CDATA[给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l)，使得A[i] + B[j] + C[k] + D[l] = 0。

为了使问题简单化，所有的 A, B, C, D 具有相同的长度N，且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间，最终结果不会超过231 - 1 。

例如:

输入:
A = [ 1, 2]
B = [-2,-1]
C = [-1, 2]
D = [ 0, 2]

输出:
2

解释:
两个元组...]]></description><category></category></item><item><title><![CDATA[452. 用最少数量的箭引爆气球]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/110073885</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/110073885</guid><author>one_dayR</author><pubDate>Tue, 24 Nov 2020 14:27:37 +0800</pubDate><description><![CDATA[452. 用最少数量的箭引爆气球

难度中等301收藏分享切换为英文接收动态反馈

在二维空间中有许多球形的气球。对于每个气球，提供的输入是水平方向上，气球直径的开始和结束坐标。由于它是水平的，所以纵坐标并不重要，因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。

一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭，若有一个气球的直径的开始和结束坐标为xstart，xend，且满足 xstart≤ x ≤ xend，则该气球会被引爆。可以射出的弓箭的数量没有限...]]></description><category></category></item><item><title><![CDATA[973. 最接近原点的 K 个点]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/109592805</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/109592805</guid><author>one_dayR</author><pubDate>Tue, 10 Nov 2020 09:56:44 +0800</pubDate><description><![CDATA[我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。

（这里，平面上两点之间的距离是欧几里德距离。）

你可以按任何顺序返回答案。除了点坐标的顺序之外，答案确保是唯一的。



示例 1：

输入：points = [[1,3],[-2,2]], K = 1
输出：[[-2,2]]
解释：
(1, 3) 和原点之间的距离为 sqrt(10)，
(-2, 2) 和原点之间的距离为 sqrt(8)，
由于 sqrt(8) &lt; sqrt(10)，(-2..]]></description><category></category></item><item><title><![CDATA[127. 单词接龙(java)]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/109519058</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/109519058</guid><author>one_dayR</author><pubDate>Thu, 05 Nov 2020 19:49:17 +0800</pubDate><description><![CDATA[给定两个单词（beginWord和 endWord）和一个字典，找到从beginWord 到endWord 的最短转换序列的长度。转换需遵循如下规则：

每次转换只能改变一个字母。
转换过程中的中间单词必须是字典中的单词。
说明:

如果不存在这样的转换序列，返回 0。
所有单词具有相同的长度。
所有单词只由小写字母组成。
字典中不存在重复的单词。
你可以假设 beginWord 和 endWord 是非空的，且二者不相同。
示例1:

输入:


beginWord = "hit",
endWor...]]></description><category></category></item><item><title><![CDATA[941. 有效的山脉数组]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/109479087</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/109479087</guid><author>one_dayR</author><pubDate>Tue, 03 Nov 2020 21:09:30 +0800</pubDate><description><![CDATA[给定一个整数数组A，如果它是有效的山脉数组就返回true，否则返回 false。

让我们回顾一下，如果 A 满足下述条件，那么它是一个山脉数组：

A.length &gt;= 3
在0 &lt; i&lt; A.length - 1条件下，存在i使得：
A[0] &lt; A[1] &lt; ... A[i-1] &lt; A[i]
A[i] &gt; A[i+1] &gt; ... &gt; A[A.length - 1]




示例 1：

输入：[2,1]
输出：false
示...]]></description><category></category></item><item><title><![CDATA[463. 岛屿的周长]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/109399579</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/109399579</guid><author>one_dayR</author><pubDate>Sat, 31 Oct 2020 10:54:10 +0800</pubDate><description><![CDATA[给定一个包含 0 和 1 的二维网格地图，其中 1 表示陆地0 表示水域。

网格中的格子水平和垂直方向相连（对角线方向不相连）。整个网格被水完全包围，但其中恰好有一个岛屿（或者说，一个或多个表示陆地的格子相连组成的岛屿）。

岛屿中没有“湖”（“湖” 指水域在岛屿内部且不和岛屿周围的水相连）。格子是边长为 1 的正方形。网格为长方形，且宽度和高度均不超过 100 。计算这个岛屿的周长。



示例 :

输入:
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0...]]></description><category></category></item><item><title><![CDATA[129. 求根到叶子节点数字之和（java）]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/109392349</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/109392349</guid><author>one_dayR</author><pubDate>Fri, 30 Oct 2020 20:19:13 +0800</pubDate><description><![CDATA[给定一个二叉树，它的每个结点都存放一个0-9的数字，每条从根到叶子节点的路径都代表一个数字。

例如，从根到叶子节点路径 1-&gt;2-&gt;3 代表数字 123。

计算从根到叶子节点生成的所有数字之和。

说明:叶子节点是指没有子节点的节点。

示例 1:

输入: [1,2,3]
  1
 / \
 2  3
输出: 25
解释:
从根到叶子节点路径 1-&gt;2 代表数字 12.
从根到叶子节点路径 1-&gt;3 代表数字 13.
因此，数字总和 = 12 + 13 = 2...]]></description><category></category></item><item><title><![CDATA[学习RabbitMQ案例系列，从认识到高级特性]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/108740596</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/108740596</guid><author>one_dayR</author><pubDate>Tue, 22 Sep 2020 20:44:27 +0800</pubDate><description><![CDATA[GitHub地址

没用过消息队列？一文带你体验RabbitMQ收发消息

刚体验完RabbitMQ？一文带你SpringBoot+RabbitMQ方式收发消息

上手了RabbitMQ？再来看看它的交换机(Exchange)吧

RabbitMQ高级之如何保证消息可靠性？

RabbitMQ高级之消息限流与延时队列

注：本人在学习是看到一篇mq教学 从认知到高级特性，受益匪浅，记录一下，防止走丢，如有侵权请告知

来自掘金 和耳朵


...]]></description><category></category></item><item><title><![CDATA[Mybatis注解开发逆向工程MybatisAnnotationTools]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/108609103</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/108609103</guid><author>one_dayR</author><pubDate>Tue, 15 Sep 2020 21:16:01 +0800</pubDate><description><![CDATA[由于近期参与项目用到的是Mybatis的注解开发，不涉及到Xml文件，为了图省事，想到以前的Mybatis的逆向工程MyBatis Generator实现MySQL分页插件， Mybaties-plus之AutoGenerator 代码生成器，

重复的劳动何必反复去做呢？，就各种百度git，找到了MybatisAnnotationTools，这里对于别人的代码做了优化和增加功能，可能还不是很完善，如果有侵权或者建议，请及时反馈或者及时改正，文章后会给出具体参考链接

这里简单介绍下我是怎么实现的，具体配置]]></description><category></category></item><item><title><![CDATA[mybatis generator自动生成代码时 只生成了insert 而没有其他的]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/108519811</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/108519811</guid><author>one_dayR</author><pubDate>Thu, 10 Sep 2020 17:59:05 +0800</pubDate><description><![CDATA[mybatis generator自动生成代码时 只生成了insert 而没有其他的

转载来源：来源

mybatis框架提供了非常好用的逆向工程插件，但是在使用过程中会有很多问题。

我在使用中就遇到了只生成insert和insertSeletive方法，而不生成其他根据primary key查询更新删除的方法。

解决方案：

1.检查数据库中的表是否有主键，如果没有主键是不会生成类似selectByPrimaryKey之类的方法的。

2.检查generatorConfig.xml配置文件中的tab]]></description><category></category></item><item><title><![CDATA[Java8中的Steam测试案例]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/108242870</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/108242870</guid><author>one_dayR</author><pubDate>Wed, 26 Aug 2020 16:45:05 +0800</pubDate><description><![CDATA[public class TestFilter {

    public static void main(String[] args) {
        List&lt;String&gt; list = new ArrayList&lt;&gt;();
        list.add("two2");
        list.add("one");
        list.add("three");
        list.add("three");
        //默认
      .]]></description><category></category></item><item><title><![CDATA[工作中遇到的sql优化中的and和or]]></title><link>https://blog.youkuaiyun.com/one_dayR/article/details/107913196</link><guid>https://blog.youkuaiyun.com/one_dayR/article/details/107913196</guid><author>one_dayR</author><pubDate>Mon, 10 Aug 2020 15:06:48 +0800</pubDate><description><![CDATA[先来列举两个sql


select *
  from am_base_info a, am_talent_info t
 where a.id_num = t.id_num
   and t.talent_level = '1'
   and (t.highend_type = '1' or t.highend_type = '3' or
       t.highend_type = '4')
   or a.region_code in (110001)

通过oracle中的explain查看执行计]]></description><category></category></item></channel></rss>