自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

OceanSky的专栏

好记性不如烂笔头,内存虽快,但不持久

  • 博客(697)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 RabbitMQ学习笔记:集群和网络分区(Network Partitions)

集群成员之间的网络连接故障会影响客户机操作的数据一致性和可用性(如CAP定理)。由于不同的应用程序对一致性有不同的要求,并且对不可用性的容忍程度不同,所以可以使用不同的的分区处理策略。1.检测网络分区如果一个节点在一段时间内(默认是60秒)无法与对等端节点联系,则节点将认为其对等节点是否已关闭。如果两个节点重新接触,都认为另一个已关闭,则这些节点将确定已发生分区。将以如下形式记录到RabbitMQ日志:2020-05-18 06:55:37.324 [error] <0.341.0> .

2020-07-13 15:13:41 3458 1

原创 RabbitMQ学习笔记:RabbitMQ延迟队列(DLX、TTL及rabbitmq_delayed_message_exchange插件)

延迟队列存储的对象是对应的延迟消息,所谓的延迟消息是指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费。延迟消息使用的场景有很多,比如:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将进行异常处理,这时候就可以使用延迟队列来处理这些订单了。用户希望通过手机远程遥控家里的智能设备在指定...

2020-01-03 13:51:01 15442 10

原创 RabbitMQ学习笔记:CentOS7中安装RabbitMQ集群

安装rabbitmq的前提是 在CentOS7中,如果是在docker中安装,需要先创建镜像docker pull centos:7创建CentOS7服务器centos7docker run -itd --hostname rabbit1 --name centos7 -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 cen......

2019-11-28 19:28:02 4724

原创 RabbitMQ学习笔记:使用Docker部署RabbitMQ集群

RabbitMQ本身是基于Erlang编写,Erlang语言天生具备分布式、高并发的特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天生支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过Zookeeper分别来实现HA方案和保存集群的元数据。集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加消息吞...

2019-11-05 19:18:58 9439

原创 spring-boot-starter-data-redis是否支持reactive响应式编程

spring-boot-starter-data-redis-reactive: 使用响应式编程模型,在响应式编程中,你的操作是异步的,并且基于事件驱动;你可以继续处理其他的事情,而不必等待Redis操作完成;当Redis操作完成时,结果会被发送到一个回调函数或订阅者。spring-boot-starter-data-redis: 使用传统的基于阻塞的I/O编程模型,这意味着当你调用Redis操作时,线程将会被阻塞,知道操作完成,这在高并发场景下可能会导致线程资源的良费和响应时间的增加。

2024-06-29 15:28:17 447

原创 spring如何给bean动态取不同的别名

spring、springboot向容器中注入bean的时候一般情况下只有一个别名,在某些特殊场景需要指定多个别名。

2024-06-29 10:11:33 591

原创 spring-boot-configuration-processor注释处理器

spring-boot-configuration-processor是springboot提供的一个注释处理器(annotation processor),它用于在编译时生成元数据文件(META-INF/spring-configuration-metadata.json),该文件描述了你的配置属性,以便为开发者提供自动补全和文档支持。生成的元数据文件可以被 IDE(如 IntelliJ IDEA 或 Visual Studio Code)的 Spring Boot 插件使用,以提供自动补全和文档支持。

2024-06-29 10:09:55 611

原创 Java取消警告SuppressWarnings注解

SuppressWarnings是Java提供的一个注解(annotation),用于告诉编译器忽略特定的告警信息。这在某些情况下是非常有用的,特别是当你确定某个警告是安全的,或者是由第三方引起的且你也无法修改时。

2024-06-29 10:08:18 362

原创 maven-gpg-plugin插件

【代码】maven-gpg-plugin插件。

2024-06-29 10:06:33 400

原创 Maven Wrapper安装指令

Maven Wrapper是一个小脚本和库,它允许你再没有预装Maven的情况下构建Maven项目。通过Maven Wrapper项目的构建环境可以变的相同,解决版本不一致问题。

2024-06-22 11:42:14 423

原创 maven仓库推送报401 Content access is protected by token

本地很久配置好了往maven中央仓库推送jar包的配置,突然间报如下错误。

2024-06-22 11:40:41 440

原创 Java module-info模块系统

模块中如果未定义module-info.java,那么我们在自己的项目中通过module-info.java定义依赖的时候是否可以使用?答案:是可以的,如依赖的包名为a-b-c-starter,则系统自动会解析成模块名为a.b.c.starter,此模块中的所有包都导出官方没有明确指定具体的命名规则,只要遵从通用准则一般不会有问题,如:唯一性、建议小写字母、点号分割、允许字母数字混合。

2024-06-22 11:39:01 1359

原创 Java延迟初始化Logger日志对象

静态内部类只有在第一次被引用时才会被加载和初始化,这意味着Log对象只有在LogHolder类被首次访问时才会被创建,从而实现延迟初始化,这有助于减少应用程序的开销。由于java类加载器是线程安全的,静态内部类的加载和初始化也是线程安全的,这意味着多个线程可以安全地访问LogHolder.log对象而无需额外的同步措施。通过静态内部类的方式,可以确保Log对象在应用程序的生命周期中只被创建一次,即实现了单例模式,这有助于避免重复创建日志对象,从而节省资源。

2024-06-22 11:36:47 321

原创 Mysql常用函数及技巧

lenght()函数在mysql中用于返回字符串的从航都,它返回的是字符串的字节数,而不是字符数,如果是UTF-8编码的多字节字符串,那么一个字符可能栈多个字节,如:汉字。concat_ws函数用于连接两个或多个字符串,并在他们之间插入一个指定的分隔符,如果任何参数为null,则会忽略此参数。mysql中的substring和substr函数是等价的,它们用于从一个字符串中提取子字符串。count函数用于计算表中的记录数或特定列的非null值数;用于在字符串左侧和右侧填充指定的字符,知道达到指定的长度。

2024-06-22 11:34:40 882

原创 Mysql的null值处理

在Mysql中,null用于标识缺失的或未知的数据,处理null值需要特别小心,因为在数据库中塔可能会导致不同的结果。

2024-06-12 21:35:07 533

原创 Mysql union语句

UNION 操作符在合并结果集时会去除重复行,而 UNION ALL 不会去除重复行,因此 UNION ALL 的性能可能更好,但如果你确实希望去除重复行,可以使用 UNION。mysql union操作符用于连接两个以上的select语句的结果组合到一个结果集,并去除重复的行,每个select语句的雷叔和对应位置的数据类型必须相同。

2024-06-12 21:33:16 509

原创 Mysql分组如何使用

rank()是mysql8.0新增的函数,为查询结果中的每一行分配一个排名,如果遇到相同的排序字段值则会分配相同的排名,下一个对应的值会跳过上一个值对应的数量排名值。执行上述查询后将会得到一个结果集,其中每一行都包含原始销售额,以及当天对应的总的销售额、销售数量。窗口函数不会减少结果集中的行数,而是会为每一行添加额外的计算列。上述sql未指定partition by分组,则会将整个sql按照条件date进行降序排列,并标记数字序号。group by语句会减少结果的行数。

2024-06-12 21:31:55 531

原创 Java列表List分组并排序

new People("田晓霞", 28, 165),

2024-06-11 19:22:45 208

原创 Java中List集合中多个字段如何排序

new People("田晓霞", 28, 165),

2024-06-11 19:01:37 879

原创 Java的Stream如何将实体类列表转换为Map

注意:如果列表中有两个或多个具有相同name的People对象,Collectors.toMap会抛出一个IllegalStateException,因为Map不允许重复的键。在上面的代码中,People::getName是一个方法引用,它引用了People类的getName方法,这个方法用于提取每个People对象的name作为Map的键。existing标识如果已经存在,则会保留现有的值;如果需要处理键重复的问题,你可以使用重载的toMap方法,他接受一个合并函数来处理键冲突的情况。

2024-06-08 18:33:01 390

原创 List.of,Arrays.asList,和 Collections.singletonList创建列表的区别

不可变性:List.of和Collections.singletonList创建的列表是不可变的,而Arrays.asList创建的列表在大小上是固定的,但可以通过修改原始数组来间接修改列表内容。性能:List.of在性能上更优,因为它直接返回不可变的、优化的列表实现。Collections.singletonList可能会稍慢一些,因为它需要包装元素。Arrays.asList的性能取决于数组和列表的交互方式。用途:List.of适用于需要创建任意大小不可变列表的情况。

2024-06-08 00:08:53 353

原创 在Java中,为何枚举类型的比较推荐==而不是equals

枚举类型是一种特殊的类类型,它包含了一组固定的常量,每个枚举常量在JVM中都是唯一的,且枚举类型本身保证了这些常量的唯一性。比较运算符==是比较两个对象在内存中的引用,equals方法是比较两个对象的值是否相等。

2024-06-07 22:57:27 619

原创 测试学习笔记1:@SpringbootTest测试注解详解

在此案例中,spring boot会启动一个完整的spring应用上下文,并自动装配MysqlServiceTest类中所有的@Autowired类,通过@MockBean注解模拟真实需要的MysqlMapper实例对象,通过when、thenReturn模拟返回数据,避免调用真实的数据库实现。它主要用于集成测试,可以启动一个嵌入式的数据库,加载完整的spring上下文,并自动装配测试类的ApplicationContext。

2023-12-09 09:10:31 1837

原创 Redis学习笔记18:基于spring data redis及lua脚本的分布式锁

Redis分布式锁是一种在分布式系统中使用Redis实现的互斥锁。它可以确保在多个客户端同时访问共享资源时,只有一个客户端能够获取到锁,其它客户端需要等待或执行相应的逻辑。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-18 10:09:23 2361

原创 Redis学习笔记17:基于spring data redis及lua脚本批处理scan指令查询永久有效的key

Redis的KEYS和SCAN指令都可以用于在数据库中搜索匹配指定模式的键。然而,它们之间有一些关键的区别;KEYS指令会在整个数据库中阻塞地执行匹配操作,并返回匹配的键列表。如果数据库很大,或者匹配的键很多,将会对性能产生负面影响。而SCAN指令通过游标的方式逐步迭代数据库,每次返回一小部分匹配的键,不会阻塞数据库,可以在不影响其它操作的情况下进行遍历。KEYS指令会返回匹配的键列表,这可能会导致返回的结果集很大,可能会占用大量的内存。

2023-11-18 09:20:50 2578

原创 Redis学习笔记16:基于spring data redis及lua脚本通过TTL查询永久有效的key

Redis做为一个缓存服务,个人觉得不应该存在有永久有效的数据,要检索一个存在很久的redis服务器中存在哪些永久有效的key,可以通过lua脚本的方式实现;一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-18 09:19:47 1114

原创 Redis学习笔记15:基于spring data redis及lua脚本发送到redis服务器多久过期

在Redis服务器中,通过SCRIPT LOAD命令加载的脚本会被缓存,并且会一直保存在缓存中,直到服务器重启或者使用SCRIPT FLUSH名利手动清空缓存。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-18 09:18:38 597

原创 Redis学习笔记14:基于spring data redis及lua脚本ZSET有序集合实现环形结构案例及lua脚本如何发送到redis服务器

SHA1摘要是对lua脚本的内容进行哈希计算的结果。它是一个40个字符的十六进制字符串。在Redis中,使用SCRIPT LOAD命令可以将lua脚本加载到服务器,并返回一个SHA1摘要,这个摘要可以被用于后续的EVALSHA名利来执行脚本。SHA1摘要的作用是将脚本内容映射为一个唯一的标识符,以便在多次执行脚本时,可以通过传输摘要而不是完整的脚本内容来提高效率。"myvalue"

2023-11-18 09:17:17 811

原创 Redis学习笔记13:基于spring data redis及lua脚本list列表实现环形结构案例

工作过程中需要用到环形结构,确保环上的各个节点数据唯一,如果有新的不同数据到来,则将最早入环的数据移除,每次访问环形结构都自动刷新有效期;可以基于lua 的列表list结构来实现这一功能,lua脚本可以节省网络开销、确保操作的原子性。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-11 13:13:56 1282

原创 Redis学习笔记12:基于springboot的redis客户端执行lua脚本

Redis客户端允许通过eval指令直接将lua脚本发送到服务器端执行,服务器会阻塞其它指令的执行,确保脚本的原子性;一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-11 09:16:35 1345

原创 Redis学习笔记11:基于spring的Lettuce redis客户端普通指令、RedisCallback、SessionCallback建立连接数

一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-11 09:15:35 558

原创 Redis学习笔记10:基于spring的Lettuce redis客户端Pipelining管道

Redis提供了对pipelining管道的支持,这包括在不等待回复的情况下向服务器发送多个命令,然后在一个步骤中读取回复。当需要连续发送多个命令时,管道化可以提高性能,例如:将许多元素添加到同一列表中。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-11 09:14:31 709

原创 Redis学习笔记9:基于spring的Lettuce redis客户端连接器LettuceConnectionFactory配置

Lettuce是一个基于Netty的开源连接器,由Spring Data Redis通过org.springframework.data.redis.connection.lettuce包提供支持。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-11 09:13:39 1720

原创 Redis学习笔记8:基于springboot的Lettuce redis客户端connectTimeout、timeout、shutdownTimeout

一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-11-11 09:12:15 2007

原创 Redis学习笔记7:基于springboot的Lettuce redis客户端keepAlive保活机制

lettuce断线重连监视器ConnectionWatchdog#scheduleReconnect方法中的延迟重连时间是根据io.lettuce.core.resource.Delay策略来决定,默认是采用ExponentialDelay延迟策略,即2的幂次方,即时间是PT0.001S、PT0.002S、PT0.004S一直到最大PT30S。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK。

2023-11-11 09:11:01 1287

原创 Redis学习笔记6:基于springboot的Lettuce redis客户端ConnectionWatchdog断线重连时间ExponentialDelay延迟策略

lettuce断线重连监视器ConnectionWatchdog#scheduleReconnect方法中的延迟重连时间是根据io.lettuce.core.resource.Delay策略来决定,默认是采用ExponentialDelay延迟策略,即2的幂次方,即时间是PT0.001S、PT0.002S、PT0.004S一直到最大PT30S。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK。

2023-10-28 09:21:14 1032

原创 Redis学习笔记5:基于springboot的lettuce redis客户端断线重连ConnectionWatchdog

lettuce默认采用共享本地连接的模式和redis服务器端交互,如果连接断开如何及时发现并且重新建立连接呢?通过翻阅源码发现有两种方案,方案一:开启连接有效性检测;方案二:通过ConnectionWatchdog监视器一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-10-28 09:19:12 2218

原创 Redis学习笔记4:基于springboot的lettuce redis客户端LettuceConnectionFactory连接工厂LettuceConnectionProvider实现

LettuceConnectionFactory连接工厂在建立本地连接的时候会通过LettuceConnectionProvider的具体实现建立真实的本地连接,LettuceConnectionProvider在连接工厂中起到的作用就是连接提供者的角色,具体建立连接是会调用对应的getConnection方法。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-10-28 09:17:23 2170

原创 Redis学习笔记3:基于springboot的lettuce redis客户端validateConnection连接有效性检查

LettuceConnectionFactory连接工厂默认对redis操作时不会对本地共享连接进行有效性检测,不进行有效性检测可以 提升应用程序的性能,但是也会带来一定的连接无效性的风险,LettuceConnectionFactory提供了一个validateConnection属性,默认值是false,可以在我们对性能要求不是很高的场景下对redis操作之前进行有效性检查,如果无效则重新建立连接。

2023-10-28 09:15:33 1179

原创 Redis学习笔记2:基于springboot的lettuce redis客户端eagerInitialization提前初始化连接

LettuceConnectionFactory连接工厂类默认是不会提前初始化本地物理连接的,也就是懒加载模式,只有等到客户端的RedisTemplate等具体要操作Redis时才会去建立连接。一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

2023-10-28 09:13:53 487

eclipse-class-decompiler-update_v2.10.0.zip

该反编译工具支持spring tool suite 在mac上反编译class文件,

2017-09-30

struts2.3.4

标准的struts2.3.4APIchm文档,该文档是中文版

2013-06-21

JDK_API_1.6英文版

全面的java开发必备的英文版API文档

2013-03-07

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除