2023年10月记录(java双冒号写法(Lambda的简写),延迟队列,postgresql快速生成序列函数)

1.java中浮点转换字符串

String ret=String.format("%.2f", val);

内部主要方法为

sun.misc.FormattedFloatingDecimal#valueOf=======》java.lang.Double#doubleToRawLongBits===========》sun.misc.FloatingDecimal.BinaryToASCIIBuffer#dtoa

底层需调用本地方法java.lang.Double#doubleToRawLongBits获取浮点型原始Long值,并按照标准解析该值每一位

2.springboot的@ConditionalOnClass注解

https://www.cnblogs.com/teach/p/16519087.html

3.【精选】@Conditional注解详解_怪 咖@的博客-CSDN博客 

4.java双冒号写法(Lambda的简写) 

String::valueOf         //x -> String.valueOf(x)

Object::toString        //x -> x.toString()

x::toString             //() => x.toString()

ArrayList::new          //() => new ArrayList<>()
 
Math::abs               //n -> Math.abs(n)

marry(this::buyHouse)   //marry(() -> this.buyHouse())

int[]::new              //length -> new int[length]

Stream.of(1, 2, 3, 4, 5, 6).min(Integer::compareTo)  //Stream.of(1, 2, 3, 4, 5, 6).min((a,b) -> a.compareTo(b))

//循环中使用
list.forEach(System.out::println);

list.forEach(new Demo()::print);

list.forEach(Demo::print);

5.Java Excel 中设置行高和列宽

https://www.e-iceblue.cn/spirexls_java_cells/set-row-height-and-column-width-in-excel-in-java.html

6.CompletableFuture详解 - 掘金 

7.SpringBoot中的定时任务的同步与异步你确定真的知道?-阿里云开发者社区

8.(转)Redis实现延迟队列详解-Redis-PHP中文网 

随着互联网和移动互联网的普及,我们经常会遇到需要延迟处理某些任务的情况,例如定时发送邮件、短信、推送通知等。通常情况下,我们会通过多线程或定时任务来实现延迟处理任务的逻辑,但这些实现方式较为复杂,需要大量的代码编写。而 Redis 中的延迟队列可以轻松地完成这些任务,并且效率非常高,是一种非常优秀的解决方案。

Redis 的延迟队列实现原理

Redis 的延迟队列实现原理非常简单,主要分为两个步骤:

  1. 把需要延迟处理的任务按照指定的延迟时间添加到有序集合中。
  2. 启动一个子线程或者异步任务不断地从有序集合中获取当前时间可以被处理的任务,并执行处理逻辑。

实现步骤

具体地,Redis 实现延迟队列的主要步骤如下:

  1. 创建一个 Redis 有序集合,集合中每个元素都必须有一个分数,这个分数就代表着元素需要延迟的时间。根据业务需要,可以将分数设置为 Unix 时间戳或者某个时间点距离当前时间的秒数或毫秒数。
  2. 在有序集合中添加需要延迟处理的任务,每个任务都是一个字符串类型的值,元素的分数即为任务需要延迟的时间,可以使用 ZADD 命令实现。
  3. 启动一个子线程或者异步任务,不断地从有序集合中查询当前时间可以被处理的任务,并执行处理逻辑。为了避免多个线程/任务同时取到同一个任务进行处理的并发问题,我们采用 Redis 的有序集合中移除元素的命令 ZREM 来保证任务只被一个线程/任务处理。
  4. 如果延迟任务的总数不大,可以使用 Redis 的 BRPOPLPUSH 命令来阻塞获取元素,该命令可以保证线程不断地获取任务,同时也不会频繁地从 Redis 中获取任务。如果任务的总数较大,可以使用 BLPOP 命令来批量获取元素,但是需要注意的是,由于 BLPOP 命令会阻塞线程,因此需要在合适的时间间隔后重新启动线程/任务来获取新的待处理任务。

优势和适用场景

相较于传统的多线程和定时任务方式,Redis 实现的延迟队列具有以下优势:

  1. 性能极高:基于 Redis 的内存数据库特性和异步 I/O 模型,延迟队列的性能非常高,可以轻松处理大量延迟任务。
  2. 高可用性:Redis 的多节点部署和复制机制可以有效地保证系统的高可用性,避免单点故障。
  3. 扩展性强:由于 Redis 的数据结构非常灵活,支持多种数据类型和数据结构,因此可以根据业务需要更加方便地扩展和修改队列。

Redis 实现的延迟队列主要适用于以下场景:

  1. 需要延迟处理任务的业务场景,例如定时发送邮件、短信、推送通知等。
  2. 需要高性能和高可用性的业务场景,例如大规模分布式系统中的任务调度和消息处理等。

总结

延迟队列是一种非常实用的工具,在实际开发中有非常广泛的应用。Redis 的实现方式非常简单、高效、可靠,可以轻松地应对各种业务场景,是一种非常优秀的解决方案。因此,建议开发者在实际工作中学习并使用 Redis 的延迟队列功能。

9.多线程返回结果合并 java 多线程返回结果合并 

多线程返回结果合并 java 多线程返回结果合并_mob6454cc6ba5a5的技术博客_51CTO博客

10.postgresql快速生成序列函数

select generate_series(1,10) 

INSERT into construction_waste_quantity(gcmc) 
VALUES (generate_series(1,18))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值