Java疑难杂症
lockie_zou
这个作者很懒,什么都没留下…
展开
-
Spring @Retryable注解轻松搞定循环重试功能
Spring 注解轻松搞定循环重试功能原创 2023-04-19 11:28:41 · 929 阅读 · 0 评论 -
java多线程批量更新插入数据
java多线程批量更新插入数据原创 2022-11-24 17:52:53 · 4442 阅读 · 1 评论 -
java 数据脱敏
java数据脱敏原创 2022-11-22 18:10:58 · 1446 阅读 · 0 评论 -
java遍历树形结构
可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理。我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。实体类:Menu.java/** * 菜单类 */@Datapublic class Menu { public Integer id; public String name; public Integer parent原创 2022-03-09 14:31:50 · 7058 阅读 · 1 评论 -
springboot定义线程池
springboot初始化线程池原创 2022-03-09 10:25:53 · 889 阅读 · 0 评论 -
spring手动控制事务
实际项目中要实现spring的事务大多数我们都是使用 @Transactional(rollbackFor = Exception.class) 注解即可,但是有些业务场景需要我们手动处理事务我们就可以这样://开启事务DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();// 嵌套事务defaultTransactionDefinition.setPropag原创 2021-10-15 16:31:51 · 4550 阅读 · 0 评论 -
@Async注解
使用async注解表示该方法为异步方法,需要注意以下问题:1.spring boot 项目使用时需要在启动类开启异步方式,增加 @EnableAsync注解2.被async注解的方法返回值只能是void或者使用Future包装一下,比如返回值Future(String)3.异步线程使用的是默认线程数8个,如果有多个异步线程需要注意内存溢出问题4.async注解有个value值来区分不同的线程,实际项目使用有多个异步线程时需要增加value值...原创 2021-09-11 16:02:34 · 1724 阅读 · 0 评论 -
分布式ID生成,基于Snowflake算法
1、SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图: ● 1位,不用。二进制中最高位为1的都是负数,但是我们生成的id一般都使用整数,所以这个最高位固定是0● 41位,用来记录时间戳(毫秒)。 ○ 41位可以表示$2^{41}-1$个数字, ○ 如果只用来表示正整数(计算机中正数包含0),可以表示...原创 2020-02-26 10:37:16 · 849 阅读 · 0 评论 -
springboot项目直接依赖打包报错,找不到包解决办法
如果单独使用springboot项目没有使用spring cloud的注册中心,网关等服务时,各个服务之间的依赖是通过引入jar包的方式。比如项目中经常会新建一个common项目,然后给其它项目使用比如order-service依赖于common。首先我们项目都是正常搭建的,然后再使用打包的时候开始就报找不到common包中的服务注意!注意!这里发现一个坑,项目中遇到过这里记录下希望后...原创 2019-03-26 15:17:47 · 10328 阅读 · 2 评论 -
String、StringBuffer、StringBuilder的区别
在Java学习中,String、StringBuffer、StringBuilder三者是很重要的,在编写代码中经常使用到他们,那么深入的了解他们的异同是非常重要的,接下里我们详细剖析下这三个的异同之处首先总结下这三者的区别:1.基本区别String的对象不可变,StringBuffer和StringBuilder的对象是可变的2.性能区别三者中StringBuilder执行速...原创 2018-11-30 12:10:11 · 11731 阅读 · 1 评论 -
static静态方法获取yml配置
java普通类获取yml文件的配置很简单,网上有很多类似的例子。比如:@Value("${zzp2.name}")private String name2;@Value("${zzp2.girl.age}")private Integer girlAge;@Value("${zzp2.girl.name}")private String girlName;但是我们经常会写u...原创 2018-08-16 11:31:21 · 18731 阅读 · 13 评论 -
空间与时间转换
空间和时间之间的转换无非就两种方式即:时间换空间,空间换时间。当年蒋介石就完成过空间换时间,以大量的土地换取自己喘息的时间。在实际开发中时间 = 运行时间,空间 = 运行内存,所以空间和时间的转换其实也就是运行时间和内存之间的占比。在时间运行中如何将两者的关系处理好就能提升系统的运行速度。时间换空间就是执行那些复杂的程序的时候需要消耗很大的内存,我们就需要把程序拆分成不同模块执行利用时间来...转载 2018-07-27 16:29:29 · 16503 阅读 · 0 评论