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 · 662 阅读 · 0 评论 -
xxl-job的作业触发机制
XXL-JOB是一个轻量级分布式任务调度平台,采用集中式的触发方式。由注册模块接收用户的作业信息并写入到数据库中,然后服务端启动两个线程scheduleThread、ringThread来触发任务一、scheduleThreadscheduleThread的执行代码如下:scheduleThread = new Thread(new Runnable() { @Override public void run() {原创 2021-08-30 00:01:55 · 1364 阅读 · 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 · 659 阅读 · 0 评论 -
sentinel基于滑动窗口实现实时指标统计原理
sentinel通过责任链模式,让每个slot来实现一种功能来实现流量控制、熔断降级等功能。其中,最重要的一个Slot非StatisticSlot莫属,它通过统计单位时间的调用数、成功数、失败数等,为流量控制、熔断降级等提供数据支撑,而StatisticSlot的底层是基于滑动窗口实现实时指标统计的,下面介绍一下StatisticSlot的工作过程一、StatisticSlot的入口 sentinel将多个slot串联起来,每个slot在处理完成后,将数据传递给下一个slot,这些slot都是...原创 2021-07-03 17:38:41 · 651 阅读 · 1 评论 -
Java线程池ThreadPoolExecutor-终止线程池原理
一、终止线程池主要有两个方法:shutdown() 和 shutdownNow()。shutdown()后线程池将变成shutdown状态,此时不接收新任务,但会处理完正在运行的 和 在阻塞队列中等待处理的任务。shutdownNow()后线程池将变成stop状态,此时不接收新任务,不再处理在阻塞队列中等待的任务,还会尝试中断正在处理中的工作线程。二、shutdown() – 温柔的终止线程池public void shutdown() { final ReentrantLock ma原创 2021-02-21 17:16:32 · 1285 阅读 · 1 评论 -
Java8 函数式接口原理及用法
Java8相比之前的Java新增了几个重要的功能:Lambda表达式、函数式接口、Stream流。下面介绍一下Java中常用的函数式接口一、什么是函数式接口?函数式接口是指只有一个抽象方法的接口,它有个专门的注解@FunctionalInterface,该注解主要特点有:1、该注解只能标记在"有且仅有一个抽象方法"的接口上,表示函数式接口。2、JDK8接口中的静态方法和默认方法,都不算是抽象方法。3、接口默认继承 java.lang.Object,所以如果接口显示声明覆盖了Object中的原创 2020-11-15 20:42:21 · 1169 阅读 · 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 · 377 阅读 · 0 评论 -
Java线程同步实现方式
作为一个Java程序员,平常的工作中除了实现代码的业务逻辑,还需要提高代码运行的效率。Java作为一个支持多线程的语言,并发编程对于提高程序的效率至关重要,在Java并发编程是整个Java开发体系中最难以理解但也是最重要的知识点,也是各类开源分布式框架中各个并发组件实现的基础。本周学习了一下Java的并发编程,总结如下。一、Java并发编程需要注意什么?1、共享数据的安全性问题堆内存和方法区内存可以共享。 因此成员变量和静态变量存在数据安全性问题。2、锁竟争带来的程序效率问题多个线程访问原创 2020-10-27 00:05:05 · 234 阅读 · 0 评论
分享