上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 26 下一页
摘要: 执行流程: 源码分析 1、SpringBoot容器启动类,xxxApplication springApplication.run(args); 2、SpringApplication#run /** * Run the Spring application, creating and refres 阅读全文
posted @ 2020-03-26 15:18 杨岂 阅读(1161) 评论(0) 推荐(0) 编辑
摘要: 一、自旋锁和自适应自旋锁 自旋锁: 互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要操作系统切换CPU从用户态转到核心态中去完成。这些操作给操作系统的并发性能带来了很大的压力。 如果同步代码块中的内容过于简单,状态切换消耗的时间有可能比用户代码执行的时间还要长。 在许多场景中,共 阅读全文
posted @ 2020-03-23 18:22 杨岂 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 一、饿汉式 1、在static属性中实例化(类加载的初始化阶段实例化(在准备阶段分配内存)) 2、在static代码块中实例化(类加载的初始化阶段实例化) 3、枚举实现(https://www.cnblogs.com/yangyongjie/p/11056454.html) 二、懒汉式 1、同步方法 阅读全文
posted @ 2020-03-22 23:23 杨岂 阅读(4917) 评论(0) 推荐(0) 编辑
摘要: 一、需求背景 对外提供服务的接口需要统一做验签和参数合法性校验。每个接口的加签算法相同,不同的是参数的不为空的要求不同。 要求,在controller层外做校验,校验不通过直接返回,不进入controller层。 引入jar包 1、Spring <dependency> <groupId>org.s 阅读全文
posted @ 2020-03-21 00:22 杨岂 阅读(1150) 评论(0) 推荐(0) 编辑
摘要: 需求背景 有时候我们需要某个请求下的所有的traceId都是一致的,以获得统一解析的日志文件。便于排查问题。 为每一个请求分配同一个traceId据我所知有两种方式:MDC和ThreadLocal,MDC的内部实现也是ThreadLocal,下面分别介绍这两种方式。 一、MDC MDC(Mapped 阅读全文
posted @ 2020-03-19 12:46 杨岂 阅读(8227) 评论(0) 推荐(1) 编辑
摘要: kafka官方文档:https://kafka.apache.org/documentation/#quickstart 1、main方法中(1.0以上) import org.apache.kafka.clients.consumer.Consumer; import org.apache.kaf 阅读全文
posted @ 2020-03-18 21:15 杨岂 阅读(6892) 评论(0) 推荐(0) 编辑
摘要: OutOfMemoryError 除了程序计数器外,其余的几个运行数据区都有可能发生OutOfMemoryError(OOM)的可能。 因此在遇到OOM的问题时应能根据异常的信息快速定位到时哪个内存区域的内存溢出,知道什么样的代码会导致OOM,以及该如何处理。 1、Java堆溢出 Heap堆是OOM 阅读全文
posted @ 2020-03-18 09:53 杨岂 阅读(3077) 评论(0) 推荐(0) 编辑
摘要: JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。 JVM运行时数据区: 1、堆 虚拟机中最大的一块内存区域,是线程共享的内存区域,用于存放对象的实例,数组内存在此分配(所有的对象实例和数组都在堆上分配),可能划分出多个线程私有的分配缓冲区(Thread 阅读全文
posted @ 2020-03-18 09:48 杨岂 阅读(281) 评论(0) 推荐(0) 编辑
摘要: Java会对内存进行自动分配与回收管理,使上层业务更加安全,方便地使用内存实现程序逻辑。 垃圾回收的目的是清除不再使用的对象,自动释放内存。 垃圾收集器与内存分配策略 栈的内存随着方法的结束和线程结束自动回收,因此Java堆和方法区是垃圾收集器所关注的内存区域 判断对象是否可以回收 1、 引用计数法 阅读全文
posted @ 2020-03-18 09:45 杨岂 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 项目描述:定时任务扫描300万条数据库记录,并对每条记录执行检查操作(调用其他服务接口,发送短信等)。 版本迭代记录: 1)第一版:一次查询全部300万条数据放在JVM内存中,没有使用线程池,使用固定20个线程,每个线程循环不停的从内存中取一条数据执行,直到所有数据全部执行完为止。 这种方式耗时大约 阅读全文
posted @ 2020-03-17 09:57 杨岂 阅读(243) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 26 下一页