<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chd_sun的博客]]></title><description><![CDATA[文能提笔安天下，武能上"码"定乾坤]]></description><link>https://blog.youkuaiyun.com/chd_sun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chd_sun]]></copyright><item><title><![CDATA[Java 中，如何跳出当前的多重嵌套循环]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/145207096</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/145207096</guid><author>chd_sun</author><pubDate>Fri, 17 Jan 2025 14:41:28 +0800</pubDate><description><![CDATA[要想跳出多重循环，可以在外面的循环语句前定义一个标号，然后在里层循环体的代码中使用带有标号的break 语句，即可跳出外层循环。然而当满足条件后，想要跳出当前多层循环，继续执行下面的逻辑，这该如何办？在for循环当中，终止循环有三个关键字。]]></description><category></category></item><item><title><![CDATA[Docker之安装redis]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/129266706</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/129266706</guid><author>chd_sun</author><pubDate>Tue, 28 Feb 2023 18:01:47 +0800</pubDate><description><![CDATA[下面记录一下在docker中安装redis过程。6.进入容器测试redis。2.拉去镜像到Linux。3.查看镜像是否拉取成功。1.查看redis镜像。]]></description><category></category></item><item><title><![CDATA[Linux之安装node]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/129172407</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/129172407</guid><author>chd_sun</author><pubDate>Wed, 22 Feb 2023 23:01:32 +0800</pubDate><description><![CDATA[Linux之安装node步骤如下。]]></description><category></category></item><item><title><![CDATA[Redis之分布式锁]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/129132403</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/129132403</guid><author>chd_sun</author><pubDate>Mon, 20 Feb 2023 22:20:32 +0800</pubDate><description><![CDATA[随着业务发展的需要，原单体单机部署的系统被演化成分布式集群系统后，由于分布式系统多线程、多进程并且分布在不同机器上，这将使原单机部署情况下的并发控制锁策略失效，单纯的 Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨 JVM 的互斥机制来控制共享资源的访问，这就是分布式锁要解决的问题!4.解决redis原子性的问题，可以使用lua脚本进行锁的释放。2.避免锁长时间未释放，设置过期时间。1.基于数据库实现分布式锁.再次设置对应值会设置失败。1.redis设置锁。]]></description><category></category></item><item><title><![CDATA[Redis之集群搭建]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/129072629</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/129072629</guid><author>chd_sun</author><pubDate>Thu, 16 Feb 2023 22:28:33 +0800</pubDate><description><![CDATA[redis的集群模式中可以实现多个节点同时提供写操作，redis集群模式采用无中心结构，每个节点都保存数据，节点之间互相连接从而知道整个集群状态。需要进入到redis安转目录下的src文件当中，使用redis-cli命令创建集群。2.分别编写每个配置，文件内容如下(每个配置文件替换一下涉及的端口的内容)把redis配置文件复制到指定位置，并创建6个配置文件。6个节点服务都启动了，并且生成了对应6个节点配置文件。输入yes确定如此分配之后，结果如下，搭建集群成功。4.使用集群命令创建集群。]]></description><category></category></item><item><title><![CDATA[Redis之哨兵模式]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/129051343</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/129051343</guid><author>chd_sun</author><pubDate>Wed, 15 Feb 2023 22:54:39 +0800</pubDate><description><![CDATA[Sentinel(哨兵)是用于监控Redis集群中Master状态的工具，是Redis高可用解决方案，哨兵可以监视一个或者多个redis master服务，以及这些master服务的所有从服务。某个master服务宕机后，会把这个master下的某个从服务升级为master来替代已宕机的master继续工作。此选举出的主服务器为6381，6379自动变成从服务器，为down状态。当6379重启之后，则会自动加入当前主服务器6381的从服务器当中。5.重启6379服务器，自动变成6381的从服务器。]]></description><category></category></item><item><title><![CDATA[Redis之搭建一主多从]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/129034179</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/129034179</guid><author>chd_sun</author><pubDate>Tue, 14 Feb 2023 23:00:25 +0800</pubDate><description><![CDATA[搭建redis一主多从的过程]]></description><category></category></item><item><title><![CDATA[Redis之事务]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/129017409</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/129017409</guid><author>chd_sun</author><pubDate>Mon, 13 Feb 2023 21:30:13 +0800</pubDate><description><![CDATA[事务支持一次执行多个命令，一个事务中所有命令都会被序列化。在事务执行过程，会按照顺序串行化执行队列中的命令，其他客户端提交的命令请求不会插入到事务执行命令序列中。批量操作在发送 EXEC 命令前被放入队列缓存，并不会被实际执行，也就不存在事务内的查询要看到事务里的更新，事务外查询不能看到。Redis中，单条命令是原子性执行的，但事务不保证原子性，且没有回滚。事务中任意命令执行失败，其余的命令仍会被执行。事务中的所有命令都会序列化、按顺序的执行。事务在执行的过程汇总，不会被其他客户端发送来的命令请求所打断。]]></description><category></category></item><item><title><![CDATA[Redis之整合到SpringBoot]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128960940</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128960940</guid><author>chd_sun</author><pubDate>Thu, 09 Feb 2023 21:48:42 +0800</pubDate><description><![CDATA[Redis整合到SpringBoot步骤如下。4.编写Controller类简单调用测试。2.创建Redis配置类。3.填写Redis配置。]]></description><category></category></item><item><title><![CDATA[Redis之Geospatial类型]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128944255</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128944255</guid><author>chd_sun</author><pubDate>Wed, 08 Feb 2023 22:17:15 +0800</pubDate><description><![CDATA[GEO，Geographic，地理信息的缩写该类型，就是元素的 2 维坐标，在地图上就是经纬度。redis 基于该类型，提供了经纬度设置，查询，范围查询，距离查询，经纬度 Hash 等常见操作。2.有效的纬度从 -85.05112878 度到85.05112878 度。3.当坐标位置超出指定范围时，该命令将会返回一个错误。1.有效的经度从 -180 度到 180 度。4.已经添加的数据，是无法再次往里面添加的。4.以给定的经纬度为中心，找出某一半径的元素。3.获取两个位置之间的直线距离。]]></description><category></category></item><item><title><![CDATA[Redis之HyperLogLog类型]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128944101</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128944101</guid><author>chd_sun</author><pubDate>Wed, 08 Feb 2023 21:57:21 +0800</pubDate><description><![CDATA[比如数据集{1,3,5,7,5,7,8},那么这个数据集的基数集为{1,3,5,7,8},基数（不重复元素）为5.3.将一个或多个HyperLogLog合并到新HyperLogLog中。HyperLogLog是用来做基数统计的算法。1.添加命令 成功添加返回1 否则返回0。]]></description><category></category></item><item><title><![CDATA[Redis之Bitmaps类型]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128943496</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128943496</guid><author>chd_sun</author><pubDate>Wed, 08 Feb 2023 21:40:35 +0800</pubDate><description><![CDATA[( 2 )Bitmaps 单独提供了一套命令 ， 所以在 Redis 中使用 Bitmaps 和使用字符串的方法不太相同。可以把 Bitmaps 想象成一个以位为单位的数组数组的每个单元只能存储0和1，数组的下标在 Bitmaps 中叫做偏移量。(1) Bitmaps 本身不是一种数据类型，实际上它就是字符串( key-value )，但是它可以对字符串的位进行操作。4.对多个Bitmaps的and(交集)、or(并集)、not(非)、xor(异或)操作并将结果保存在destkey中。]]></description><category></category></item><item><title><![CDATA[Redis之 Zset类型]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128926693</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128926693</guid><author>chd_sun</author><pubDate>Tue, 07 Feb 2023 22:19:44 +0800</pubDate><description><![CDATA[不同之处是有序集合的每个成员都关联了一个评分( score ),这个评分( score ) 被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的，但是评分可以是重复了。3.返回有序集 key 中，所有 score 值介于 min 和 max 之间(包括等于 min 或 max成员有序集成员按 score 值递增(从小到大)次序排列。Redis有序集合 zset 与普通集合 set 非常相似，是一个。2.返回有序集合key中，下标在n-m之间的元素。8.返回该值在集合中的排名，从0开始。]]></description><category></category></item><item><title><![CDATA[Redis之集合(Set)]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128908954</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128908954</guid><author>chd_sun</author><pubDate>Mon, 06 Feb 2023 22:09:52 +0800</pubDate><description><![CDATA[Redis的Set是string类型的无序集合。6.随机从该集合中取出一个值，并删除（如果值都取完，删除key）11.返回两个集合的差集元素(key1中的，不包含key2中的)7.随机从该集合中取出n个值，不会删除值。所有的value都指向同一个内部值。8.把集合中的一个值移动到另一个集合。1.将一个多个元素加入集合key中。3.判断集合中是否存在某个值。10.返回两个集合的并集元素。9.返回两个元素的交集元素。2.取出该集合所有值。4.获取集合元素个数。5.删除集合中的元素。]]></description><category></category></item><item><title><![CDATA[RabbitMq之优先队列]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128858470</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128858470</guid><author>chd_sun</author><pubDate>Thu, 02 Feb 2023 22:24:56 +0800</pubDate><description><![CDATA[总有一些消息需要提前消费处理，下面代码实现一下优先队列。运行生产者和消费者，结果如下。消费者优先级高的消息优先消费。生产者正常发送10条消息。]]></description><category></category></item><item><title><![CDATA[RabbitMq之发布确认(高级)]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128841732</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128841732</guid><author>chd_sun</author><pubDate>Wed, 01 Feb 2023 22:41:57 +0800</pubDate><description><![CDATA[二是在发布消息成功后使用 rabbitTemplate 调用 waitForConfirms 或 waitForConfirmsOrDie 方法，等待 broker 节点返回发送结果，根据返回结果来判定下一步的逻辑。要注意的点是 waitForConfirmsOrDie 方法如果返回 false 则会关闭 channel，回导致接下来无法发送消息到 broker。正常情况下生产者只发布消息到交换机，无法确定是否成功把消息发送到交换机当中，由此发布确认可以通知生产者消息是否发送到了交换机。]]></description><category></category></item><item><title><![CDATA[RabbitMq之实现基于插件的延迟队列]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128824700</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128824700</guid><author>chd_sun</author><pubDate>Tue, 31 Jan 2023 22:40:35 +0800</pubDate><description><![CDATA[由于队列先入先出的特性, 如果队列头的消息过期时间很长, 后面的消息过期时间很短, 会导致后面的消息过期后不能及时被消费掉。基于死信队列的缺点，基于插件实现的延迟队列就很好地解决了这个问题。死信队列通过设置延迟时间TTL能实现延迟队列的效果，但是。运行调用接口发送消息，基于插件实现了延迟队列的效果。，基于springBoot框架。]]></description><category></category></item><item><title><![CDATA[RabbitMQ之安装delayed_message_exchange插件(实现插件延迟队列)]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128824549</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128824549</guid><author>chd_sun</author><pubDate>Tue, 31 Jan 2023 22:23:06 +0800</pubDate><description><![CDATA[下载地址：https://www.rabbitmq.com/community-plugins.html。先关闭：rabbitmqctl stop 再重启：rabbitmq-server。1.首先要下载delayed_message_exchange插件。5.查看RabbitMq可视化界面，显示了对应的选项。2.下载好的插件移动到mq的plugins文件夹下。3.进入sbin目录下，执行安装语句。4.重启RabbitMq。]]></description><category></category></item><item><title><![CDATA[RabbitMq之死信队列]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128795001</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128795001</guid><author>chd_sun</author><pubDate>Sun, 29 Jan 2023 22:43:40 +0800</pubDate><description><![CDATA[当生产者发的消息通过正常的交换机进入到正常的队列时，无法被正常消费，则会通过死信交换机进入死信队列当中进一步处理，此处举例子是有死信消费者消费。在停掉正常消费者，做出挂了的现象，然后分别启动生产者和死信消费者。由于设置的过期时间为10s 等待10s之后消息到了死信队列当中。通常无法消费的消息，通常会进入死信队列当中，以保证完整数据。3.设置最大队列长度，超过的消息进入死信队列。先启动正常消费者，此时看MQ可视化界面。死信消费者就能正常收到并消费对应消息。设置成为死信的三个条件如下。简单举个例子，流程如下。]]></description><category></category></item><item><title><![CDATA[RabbitMq之Exchange的Topic模式]]></title><link>https://blog.youkuaiyun.com/chd_sun/article/details/128794261</link><guid>https://blog.youkuaiyun.com/chd_sun/article/details/128794261</guid><author>chd_sun</author><pubDate>Sun, 29 Jan 2023 21:19:55 +0800</pubDate><description><![CDATA[Topic模式]]></description><category></category></item></channel></rss>