事务@Transactional未提交,锁已经释放的问题
最近在接口测试中遇到的问题
最近在接口测试中遇到的问题
高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。
在Java中,实用程序类是定义一组执行通用功能的方法的类。
Guava - 拯救垃圾代码,写出优雅高效,效率提升N倍
对于H5端的用户,系统部分内容需要登录才能访问。最好做到用到的时候去验证。目前项目里面用户状态管理好像就是这样做的。
在项目中,我们有一些公共的字段需要做修改
如:
gmt_create:创建时间
creator_id:创建人
gmt_modified:修改时间
modifier_id:修改人
这时候我们可以采用 MyBatis-Plus 中的字段自动填充功能去实现
思路:抽取公用字段封装到BaseEntity类中,再将使用到此公共字段的类继承基类,最后由 MyBatis-Plus 帮我们实现自动填充,这样我们便可以在service服务类中减少一定代码重复量!
刚入行的java开发程序员可能很多情况下对于一些代码的实现都是自己手动去实现的,不是说这样不好,在一定的程度上这种做法其实是浪费时间的,而且很可能出现一些错误,
不过这也是正常的,我刚入行的时候写的代码也是这样,但是学会使用现成的工具类之后,可能会给你节省大量时间。
在这篇文章里,我们将提供Java8 Stream distinct()示例。 distinct()返回由该流的不同元素组成的流。distinct()
是Stream接口的方法。distinct()使用hashCode()和equals()方法来获取不同的元素。因此,我们的类必须实现hashCode()和equals()方法。如果distinct()正在处理有序流,那么对于重复元素,将保留以遭遇顺序首先出现的元
素,并且以这种方式选择不同元素是稳定的。在无序流的情况下,不同元素的选择不一定是稳定的,是可以改变的。distinct()执行有状态的中间操作。在有序流的并行流的情况下,保持distinct()
的稳定性是需要很高的代价的,因为它需要大量的缓冲开销。如果我们不需要保持遭遇顺序的一致性,那么我们应该可以使用通过BaseStream.unordered()方法实现的无序流。
相信任何一个Java开发者都会遇到NPE(即NullPointerException),而为了避免出现NPE,通常的方法是在访问对象前进行判空,即使用分支语句进行判断if (xx != null)。
但是,过多的分支语句(尤其是和业务逻辑结合起来后),会导致代码可读性和可维护性的下降,因此需要减少它的出现。还好Java8提供了Optional这个工具,能够消除大部分判空和一部分普通判断。
修改mysql配置文件
1 | whereis mysql |
记录一次修改参数校验的bug