java
文章平均质量分 58
51xplan
技术分享,共同成长
展开
-
信号量是什么
什么是信号量原创 2023-12-17 14:28:40 · 457 阅读 · 0 评论 -
log4j2中Pattern Layout 对消息体转义
log4j对消息体进行转义原创 2021-12-07 20:57:28 · 1887 阅读 · 0 评论 -
lombok基本使用
lomnokidea安装lombok插件pom.xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency>@Setter自动产生 setterstatic原创 2021-07-21 20:35:03 · 344 阅读 · 0 评论 -
mybatis foreach list特殊处理
最近做一个功能,sql要用到 IN 条件,通过list传入IN 的值,如:SELECT * FROM table1 WHERE id in (1,2,3)对应的mybatis写法为: <select id="queryByIds" resultMap="resultMap" parameterType="list"> SELECT * FROM table1 WHERE id <foreach collection="list"原创 2021-06-24 14:08:12 · 195 阅读 · 0 评论 -
jstack排查锁竞争
排查线程信息的常用工具是jstack,jstack用于生成当前进程的所有线程快照。准备设计一个程序:两个线程,两个锁,互相等待造成死锁。然后使用jstack排查锁竞争情况。jstack使用一般出现cpu异常的情况下,会使用top命令找到cpu占用较高的进程,得到进程pid。如果定位到或怀疑是某个java进程出现锁竞争,可以直接使用jps找到对应的pid,进行一下操作。jstack查看线程信息jstack -pidjstack 181762021-06-08 09:51:39Full t原创 2021-06-08 10:45:20 · 422 阅读 · 0 评论 -
校验类注解的区别 @NotNull、@NotEmpty、@NotBlank
校验类注解的区别 @NotNull、@NotEmpty、@NotBlank使用场景@NotEmpty用在集合类@NotBlank 用在String@NotNull 用在基本类型注解的探究@NotEmpty/** * The annotated element must not be {@code null} nor empty. * <p> * Supported types are: * <ul> * <li>{@code CharSeque原创 2021-02-20 17:53:02 · 600 阅读 · 0 评论 -
Spring Boot tomcat 启动探索
Spring Boot tomcat 启动探索Spring Boot 内置tomcat 一键启动的使用引入pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.6.RELEASE</version></de原创 2020-12-30 20:30:16 · 114 阅读 · 0 评论 -
ThreadLocal使用及分析
ThreadLocal特点ThreadLocal实现了线程间数据隔离,ThreadLocal的实例代表了一个线程局部的变量,每条线程都只能看到自己的值,并不会意识到其它的线程中也存在该变量。简单来说就是一个公共的Map,map的key是Thread本身,value是线程携带的数据。ThreadLocal的简单使用使用方式一开启三个新的线程,每个线程对数据进行累加。public class TestThreadLocal { //线程本地存储变量 private static fi原创 2020-10-27 09:55:26 · 401 阅读 · 0 评论 -
@PostConstruct及跳坑记录
@PostConstruct及跳坑记录@PostConstruct的一个控制方法加载顺序的一个注解,如果使用恰当,可以方便解决很多问题,如果使用不当,也会出现一些认为莫名其妙的问题。这里说一下@PostConstruct和@Autowired 一起使用的一些问题。首先@PostConstruct是javax.annotation包下的注解,并不是Spring提供的。看一下servlet中的加载顺序。graph TB 服务器加载Sevlet-->Servlet-Construct原创 2020-09-27 19:45:01 · 850 阅读 · 0 评论 -
java CPU消耗过高
CPU消耗过高常见的消耗CPU场景频繁GC,访问量高时,有可能造成频繁的GC、甚至FGC。当调用量大时,内存分配过快,就会造成GC线程不停的执行,导致CPU飙高序列化与反序列化,调用量增大的情况下,导致了CPU被打满加密、解密正则表达式校验,Java 正则表达式使用的引擎实现是 NFA 自动机,这种引擎在进行字符匹配会发生回溯(backtracking)线程上下文切换、当启动了很多线程,而这些线程都处于不断的阻塞状态(锁等待、IO等待等)和执行状态的变化过程中。当锁竞争激烈时,很容易出现这种情原创 2020-09-21 18:33:19 · 1477 阅读 · 0 评论 -
java线程池原理及使用
java线程池合理使用线程池的好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗;提高执行速度。当任务到达时,任务可以不需要等待线程创建就能立即执行;提高线程的可管理性。线程是系统重要资源,线程池可以控制线程数量,避免独自创建线程,引发系统问题。核心类-ThreadPoolExecutorjava.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。ThreadPool原创 2020-09-21 18:28:54 · 92 阅读 · 0 评论