java
文章平均质量分 71
鲍倩和鲍新春
这个作者很懒,什么都没留下…
展开
-
Java线上问题排查常用方法
Java程序在运行中会出现各种问题,包括CPU、内存、磁盘等。下面介绍一下常用的问题排查方法。 一、CPU问题 当出现性能问题时,我们首先会排查是否是CPU方面的问题。包括CPU负载过高、死循环、频繁 gc 以及上下文切换过多。在JAVA程序中,经常使用jstat、jstack命令来排查Java程序导致的CPU问题。 我们先用 ps 命令找到对应进程的 pid(如果你有好几个目标进程,可以先用 top 看一下哪个占用比较高)。 接着用top -H -p pid来找到 CPU 使用率比较高的一些线程原创 2021-09-14 21:41:50 · 622 阅读 · 0 评论 -
xxl-job的作业触发机制
XXL-JOB是一个轻量级分布式任务调度平台,采用集中式的触发方式。由注册模块接收用户的作业信息并写入到数据库中,然后服务端启动两个线程scheduleThread、ringThread来触发任务 一、scheduleThread scheduleThread的执行代码如下: scheduleThread = new Thread(new Runnable() { @Override public void run() {原创 2021-08-30 00:01:55 · 1264 阅读 · 0 评论 -
sentinel调用上下文(Context)数据结构分析
sentinel是一个轻量级高可用流量控制组件,使用sentinel来进行流量控制的简单demo如下: Entry entry = null; try { entry = SphU.entry("abc"); entry = SphU.entry("abc"); } catch (BlockException e1) { } finally { if (entry != null) { entry.exit(); } } 将字符串“abc”抽象成一个原创 2021-07-10 21:47:23 · 611 阅读 · 0 评论 -
sentinel基于滑动窗口实现实时指标统计原理
sentinel通过责任链模式,让每个slot来实现一种功能来实现流量控制、熔断降级等功能。其中,最重要的一个Slot非StatisticSlot莫属,它通过统计单位时间的调用数、成功数、失败数等,为流量控制、熔断降级等提供数据支撑,而StatisticSlot的底层是基于滑动窗口实现实时指标统计的,下面介绍一下StatisticSlot的工作过程 一、StatisticSlot的入口 sentinel将多个slot串联起来,每个slot在处理完成后,将数据传递给下一个slot,这些slot都是...原创 2021-07-03 17:38:41 · 583 阅读 · 1 评论 -
Java线程池ThreadPoolExecutor-终止线程池原理
一、终止线程池主要有两个方法:shutdown() 和 shutdownNow()。 shutdown()后线程池将变成shutdown状态,此时不接收新任务,但会处理完正在运行的 和 在阻塞队列中等待处理的任务。 shutdownNow()后线程池将变成stop状态,此时不接收新任务,不再处理在阻塞队列中等待的任务,还会尝试中断正在处理中的工作线程。 二、shutdown() – 温柔的终止线程池 public void shutdown() { final ReentrantLock ma原创 2021-02-21 17:16:32 · 1200 阅读 · 1 评论 -
Java8 函数式接口原理及用法
Java8相比之前的Java新增了几个重要的功能:Lambda表达式、函数式接口、Stream流。下面介绍一下Java中常用的函数式接口 一、什么是函数式接口? 函数式接口是指只有一个抽象方法的接口,它有个专门的注解@FunctionalInterface,该注解主要特点有: 1、该注解只能标记在"有且仅有一个抽象方法"的接口上,表示函数式接口。 2、JDK8接口中的静态方法和默认方法,都不算是抽象方法。 3、接口默认继承 java.lang.Object,所以如果接口显示声明覆盖了Object中的原创 2020-11-15 20:42:21 · 1088 阅读 · 3 评论 -
Eureka Service启动原理
Eureka是Netflix开发的服务治理框架,包括Eureka Service 和Eureka Client。其中Eureka Service是作为服务端,主要功能是登记注册的服务、将服务信息同步给集群中的其它节点、接收客户端发送的心跳信息、将注册的服务列表返回给请求的客户端,Eureka Client作为客户端主要进行服务的注册和发现。Spring Boot中使用Eureka Service很简单,只需要引入依赖以后添加一个@EnableEurekaServer注解即可,如 @SpringBoo..原创 2020-11-08 20:43:45 · 348 阅读 · 0 评论 -
Java线程同步实现方式
作为一个Java程序员,平常的工作中除了实现代码的业务逻辑,还需要提高代码运行的效率。Java作为一个支持多线程的语言,并发编程对于提高程序的效率至关重要,在Java并发编程是整个Java开发体系中最难以理解但也是最重要的知识点,也是各类开源分布式框架中各个并发组件实现的基础。本周学习了一下Java的并发编程,总结如下。 一、Java并发编程需要注意什么? 1、共享数据的安全性问题 堆内存和方法区内存可以共享。 因此成员变量和静态变量存在数据安全性问题。 2、锁竟争带来的程序效率问题 多个线程访问原创 2020-10-27 00:05:05 · 209 阅读 · 0 评论