Java中文社群

其他

Java 中 List 分片的 5 种方法!

也无法满足你的需求,你就可以考虑自己写代码来实现分片功能了。因为此方式不常用,所以咱们这里只给出关键方法。自定义分片功能的关键实现方法是
2021年11月2日
其他

4 种方法!检查字符串是否为合法的日期格式

}}java.time.format.DateTimeFormatter类是不可变的,也就是天然的线程安全,我们可以在不同线程使用同一个校验器实例。我们通过单元测试验证下:class
2021年10月29日
其他

SpringBoot官方热部署和远程调试神器,真带劲!

平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款SpringBoot官方的热部署工具spring-boot-devtools,修改完代码后可快速自动重启应用!spring-boot-devtools简介
2021年10月26日
其他

高并发下秒杀商品,必须知道的9个细节

高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。秒杀一般出现在商城的促销活动中,指定了一定数量(比如:10个)的商品(比如:手机),以极低的价格(比如:0.1元),让大量用户参与活动,但只有极少数用户能够购买成功。这类活动商家绝大部分是不赚钱的,说白了是找个噱头宣传自己。虽说秒杀只是一个促销活动,但对技术要求不低。下面给大家总结一下设计秒杀系统需要注意的9个细节。1
2021年10月25日
其他

SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了!

在我们平时工作中经常会遇到要操作Excel的功能,比如导出个用户信息或者订单信息的Excel报表。你肯定听说过POI这个东西,可以实现。但是POI实现的API确实很麻烦,它需要写那种逐行解析的代码(类似Xml解析)。今天给大家推荐一款非常好用的Excel导入导出工具EasyPoi,希望对大家有所帮助!EasyPoi简介
2021年10月21日
其他

再见 Postman!Apifox 才是 YYDS!

自动化测试二、存在的问题维护不同工具之间数据一致性非常困难、低效。并且这里不仅仅是工作量的问题,更大的问题是多个系统之间数据不一致,导致协作低效、频繁出问题,开发测试人员痛苦不堪。开发人员在
2021年10月19日
其他

MyBatis原生批量插入的坑与解决方案!

原生批量插入时的问题:可能会因为插入的数据太多从而导致运行失败,我们可以通过分片的方式来解决此问题,分片批量插入的实现步骤如下:
2021年10月18日
其他

再见收费的Navicat!操作所有数据库靠它就够了!

为了快速管理数据库,我们一般都会选择一款顺手的数据库管理工具。Navicat、DataGrip虽然很好用,但都是收费的。今天给大家推荐一款免费、功能强大的数据库管理工具DBeaver,希望对大家有所帮助!DBeaver简介
2021年10月15日
其他

@Value竟然能玩出这么多花样

前言对于从事java开发工作的小伙伴来说,spring框架肯定再熟悉不过了。spring给开发者提供了非常丰富的api,满足我们日常的工作需求。如果想要创建bean实例,可以使用@Controller、@Service、@Repository、@Component等注解。如果想要依赖注入某个对象,可以使用@Autowired和@Resource注解。如果想要开启事务,可以使用@Transactional注解。如果想要动态读取配置文件中的某个系统属性,可以使用@Value注解。等等,还有很多。。。今天咱们重点聊聊@Value注解,因为它是一个非常有用,但极其容易被忽视的注解,绝大多数人可能只用过它的一部分功能,这是一件非常遗憾的事情。所以今天有必要和大家一起,重新认识一下@Value。1.
2021年10月14日
其他

如何给SpringBoot配置轻松加密?

上述实例中我们将加密的密码放在了application.properties文件中,这样并不安全,如果查看代码就知道如何解密了。通常,还可以采用另外一种形式来传递参数:在启动命令中传输密码。
2021年10月11日
其他

MyBatis 批量插入数据的 3 种方法!

org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass
2021年10月9日
其他

再见 Spring Task,这个定时任务框架真香!

虽然也支持分布式任务。但是,它是在数据库层面,通过数据库的锁机制做的,有非常多的弊端比如系统侵入性严重、节点负载不均衡。有点伪分布式的味道。
2021年9月28日
其他

MyBatis Plus 批量数据插入功能,yyds!

不是本文讨论的重点,所以这里咱们就不介绍了,如果有不熟悉的朋友可以去他的官方自行恶补:https://baomidou.com/guide/,咱们本文重点介绍一下
2021年9月27日
其他

40 个 SpringBoot 常用注解:让生产力爆表!

@CrossOrigin注解将为请求处理类或请求处理方法提供跨域调用支持。如果我们将此注解标注类,那么类中的所有方法都将获得支持跨域的能力。使用此注解的好处是可以微调跨域行为。使用此注解的示例如下:
2021年9月17日
其他

聊聊Spring事务失效的12种场景,太坑了

resources");我们说的同一个事务,其实是指同一个数据库连接,只有拥有同一个数据库连接才能同时提交和回滚。如果在不同的线程,拿到的数据库连接肯定是不一样的,所以是不同的事务。
2021年9月9日
其他

1.3w字,一文详解死锁!

以上简易版的轮询锁,如果遇到有一个线程一直霸占或者长时间霸占锁资源的情况,就会导致这个轮询锁进入死循环的状态,它会尝试一直获取锁资源,这样就会造成新的问题,带来不必要的性能开销,具体示例如下。
2021年9月6日
其他

再见收费的 XShell,我改用国产良心工具!

使用或维护Linux系统的都知道,我们日常对服务器的操作,一般都会借助SSH工具远程登录到服务器之后进行操作。常用的SSH工具有不少,比如:Xshell、Putty、SSH
2021年9月3日
其他

16 条 yyds 的代码规范

尽量在初始化时指定集合的大小,能有效减少集合的扩容次数,因为集合每次扩容的时间复杂度很可能时O(n),耗费时间和性能。
2021年9月2日
其他

轮询锁使用时遇到的问题与解决方案!

以上简易版的轮询锁,如果遇到有一个线程一直霸占或者长时间霸占锁资源的情况,就会导致这个轮询锁进入死循环的状态,它会尝试一直获取锁资源,这样就会造成新的问题,带来不必要的性能开销,具体示例如下。
2021年8月31日
其他

死锁终结者:顺序锁和轮询锁!

轮询锁是通过打破“请求和保持条件”来避免造成死锁的,它的实现思路简单来说就是通过轮询来尝试获取锁,如果有一个锁获取失败,则释放当前线程拥有的所有锁,等待下一轮再尝试获取锁。
2021年8月28日
其他

死锁的 4 种排查工具 !

Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。
2021年8月24日
其他

图解:为什么非公平锁的性能更高?

尝试获取锁,如果获取成功就直接拥有锁,如果获取锁失败才会进入等待队列,等待下次尝试获取锁。这样做的好处是,获取锁不用遵循先到先得的规则,从而避免了线程休眠和恢复的操作,这样就加速了程序的执行效率。
2021年8月20日
其他

ReentrantLock 中的 4 个坑!

默认情况下为非公平锁。因为线程的名称是根据创建的先后顺序递增的,所以如果是公平锁,那么线程的执行应该是有序递增的,但从上述的结果可以看出,线程的执行和打印是无序的,这说明
2021年8月14日
其他

synchronized 中的 4 个优化,你知道几个?

}自旋锁优点在于它避免一些线程的挂起和恢复操作,因为挂起线程和恢复线程都需要从用户态转入内核态,这个过程是比较慢的,所以通过自旋的方式可以一定程度上避免线程挂起和恢复所造成的性能开销。
2021年8月10日
其他

synchronized 优化手段之锁膨胀机制!

Locking)指的是,它会偏向于第一个访问锁的线程,如果在运行过程中,同步锁只有一个线程访问,不存在多线程争用的情况,则线程是不需要触发同步的,这种情况下会给线程加一个偏向锁。
2021年8月3日
其他

synchronized 加锁 this 和 class 的区别!

后置代码...}以上代码在执行时,被修饰的代码块称为同步语句块,其作用范围是大括号“{}”括起来的代码块,作用的对象是调用这个代码块的对象。
2021年8月2日
其他

使用了synchronized,竟然还有线程安全问题!

但分析上面的日志,会发现两个线程同时进入了“开始休眠”状态,也就是说锁并未起效,线程安全依旧存在问题。下面我们就针对synchronized失效原因进行逐步分析。
2021年7月29日
其他

SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!

RuntimeException("自定义异常");}当我们引入Validator参数校验器的时候,参数校验不通过会抛出异常,此时是无法用try...catch捕获的,只能使用全局异常处理器。
2021年7月28日
其他

SpringBoot时间格式化的5种方法!

以上两种后端格式化的实现都有一个致命的缺点,它们在进行时间格式化的时候,都需要对核心业务类做一定的修改,这就相当为了解决一个问题,又引入了一个新的问题,那有没有简单一点、优雅一点的解决方案呢?
2021年7月26日
其他

绝,Java 中创建对象的 5 种方法!

FileOutputStream("xxx"));out.writeObject(user2);out.close();//DeserializationObjectInputStream
2021年7月23日
其他

SpringBoot 优雅的参数效验!

其实Spring框架已经给我们封装了一套校验组件:validation。其特点是简单易用,自由度高。接下来咱使用springboot-2.3.1.RELEASE搭建一个简单的
2021年7月21日
其他

MyBatis 的执行流程,学废了!

user_name=#{userName,jdbcType=VARCHAR,typeHandler=com.lonelyWolf.mybatis.typeHandler.MyTypeHandler}
2021年7月19日
其他

面霸篇:MQ 的 5 大关键问题详解

有时候为了吸引用户,我们会搞一些活动,比如秒杀等。如果用户少还好,不会影响系统的稳定性。但如果用户突增,一时间所有的请求都到数据库,可能会导致数据库无法承受这么大的压力,响应变慢或者直接挂掉。
2021年7月16日
其他

批处理框架 Spring Batch 这么强,你会用吗?

getJobParametersValidator();}在Job这个接口当中定义了五个方法,它的实现类主要有两种类型的job,一个是simplejob,另一个是flowjob。在spring
2021年7月14日
其他

再有人问你MySql的隔离级别,直接把这篇文章发给他!

事务是程序中一系列严密的操作,所有的操作必须完成,否则在所有的操作中所做的所有的更改都会被撤销。也就是事务的原子性,一个事务中的一系列的操作要么全部成功,要么就是失败。
2021年7月12日
其他

Mybatis中SQL注入攻击的3种方式,真是防不胜防!

以上就是mybatis的sql注入审计的基本方法,我们没有分析的几个点也有问题,新手可以尝试分析一下不同的注入点来实操一遍,相信会有更多的收获。当我们再遇到类似问题时可以考虑:
2021年7月9日
其他

Spring Cache 实战:兼容所有缓存中间件!

是否缓存控制,防止缓存穿透spring.cache.redis.cache-null-values=true然后需要加一个配置类:MyCacheConfig。可以在我的开源项目
2021年7月7日
其他

厉害了,Spring中bean的12种定义方法!

}}重写setBeanFactory方法,在该方法中能够获取BeanFactory对象,它能够强制转换成DefaultListableBeanFactory对象,然后通过该对象的实例注册bean。
2021年7月6日
其他

@Autowired报错的4种解决方案和原因分析!

上图的报错信息相信大部分程序员都遇到过,奇怪的是虽然代码报错,但丝毫不影响程序的正常执行,也就是虽然编译器
2021年7月5日
其他

SpringBoot 中的 3 种条件装配!

一、介绍在实际的项目开发中,我们往往需要根据不同的环境做出不同的配置,例如:在开发环境下,我们会使用内存数据库以便快速启动服务并进行开发调试,在test环境、生产环境,会使用对应环境的数据库。
2021年7月1日
其他

SpringBoot 过滤器、拦截器、监听器对比及使用场景!

registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
2021年6月25日
其他

Spring为什么建议构造器注入?

查找name为svc的bean匹配不到,则报错。(@Autowired(required=false),如果设置required为false(默认为true),则注入失败时不会抛出异常)
2021年6月23日
其他

图解Java中的18 把锁!

Locking)是指它会偏向于第一个访问锁的线程,如果在运行过程中,只有一个线程访问加锁的资源,不存在多线程竞争的情况,那么线程是不需要重复获取锁的,这种情况下,就会给线程加一个偏向锁。
2021年6月21日
其他

synchronized 的超多干货!

的作者经过研究发现,大多数情况下,锁不仅不存在多线程竞争,还存在锁由同一线程多次获得的情况,偏向锁就是在这种情况下出现的,它的出现是为了解决只有在一个线程执行同步时提高性能。
2021年6月3日
其他

11个小技巧,玩转Spring!

我们使用RestTemplate调用远程接口时,有时需要在header中传递信息,比如:traceId,source等,便于在查询日志时能够串联一次完整的请求链路,快速定位问题。
2021年6月2日
其他

2万字!66道并发面试题及答案

ConcurrentHashMap 采⽤分段锁技术,同步容器中,是⼀个容器⼀个锁,但在ConcurrentHashMap中,会将hash表的数组部分分成若⼲段,每段维护⼀个锁,以达到⾼效的并发访问;
2021年5月31日
其他

ThreadLocal内存溢出代码演示和原因分析!

所谓的线程不安全是指,多个线程在同一时刻对同一个全局变量做写操作时(读操作不会涉及线程不安全问题),如果执行的结果和我们预期的结果不一致就称之为线程不安全,反之,则称为线程安全。
2021年5月26日
其他

一个ThreadLocal和面试官大战30个回合

之前我跟你们一面面试官聊过,我是怎么把支付宝后台负责的系统四十几个核心rpc接口性能大幅度提升的,下面这个就是其中一个接口切流之后的效果,其中就用到了Threadlocal。
2021年5月21日
其他

超级详细的Spring Boot 注解总结

db.username=rootdb.password=123@PropertySource+@Value注解读取方式@Component@PropertySource(value
2021年5月19日
其他

SimpleDateFormat线程不安全的5种解决方案!

加锁方案虽然可以正确的解决线程不安全的问题,但同时也引入了新的问题,加锁会让程序进入排队执行的流程,从而一定程度的降低了程序的执行效率,如下图所示:
2021年5月17日