ThreadLocal内存泄露代码演示,和内存泄露原因分析 引发的内存泄漏分析预备知识引用Object o = new Object();这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。当写下 o=null时,只是表示o不再指向堆中object的对象实例,不代表这个对象实例不存在了。强引用一直活着:类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象实例。软引用有一次活的机会:软引用关联着的对象,在系统将要发生内
Spring Boot 拦截器、过滤器、监听器 1. 拦截器、过滤器、监听器区别拦截器(interceptor):依赖于web框架,基于Java的反射机制,属于AOP的一种应用。一个拦截器实例在一个controller生命周期内可以多次调用。只能拦截Controller的请求。过滤器(Filter):依赖于Servlet容器,基于函数回掉,可以对几乎所有请求过滤,一个过滤器实例只能在容器初使化调用一次。监听器(Listener):web监听器是Servlet中的特殊的类,用于监听web的特定事件,随web应用启动而启动,只初始化一次。2. 有什
mysql主从执行sql失败:Slave_IO_Running: No, Slave_SQL_Running: No. 详细报错:Slave_IO_Running: No, Slave_SQL_Running: No. Please make sure replication runs before using gh-ost.网上找了下资料,特此记录:一、问题描述:当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后或者其他原因导致MySQL无法同步了。二、Slave两个关键进程mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave
记一次由于cas和线程调度出现的问题 先直接上代码:import sun.misc.Unsafe;import java.lang.reflect.Field;public class UnSafeTest { private int i = 0; private static Unsafe UNSAFE; private static Long I_OFFSET; static { try { Field field = Unsafe.class.ge
2020.3版idea的application.yml显示不正确 如图,先看显示正确的长啥样:但是你的长这样:然后我找了很多网站照着操作都不行,最后发现是少了依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>没有这个依赖,文件是不会改变的
2020.3版idea的RunDashboard怎么显示出来 查看idea版本help>>About 2.启动你的maven项目(至少两个)3.打开View下的servicesview>>Tool Windows>>Services4.添加springBoot在弹出的区域点击加号,Run Configuration Type,在列表里面找到Spring Boot另外还有一种方式,不过我没用:https://blog.csdn.net/zhang1873310/article/det..
值大小相同的Integer和Long为什么hashCode值一样 关于Interger和Long的hashCode方法源码 /** * Returns a hash code for this <code>Integer</code>. * * @return a hash code value for this object, equal to the * primitive <code>int</code> value represented by
线上java生产环境服务器变慢,诊断思路和方法 生产环境变慢,出现了服务器卡顿,那么就需要进行排查了,一般定位出问题的步骤如下:1.使用top命令找出CPU占比最高的ps -ef 或者 jps 进一步定位,得知是一个怎么样的后台程序出的问题,定位到具体线程或者代码2.找出此进程pid下最耗cpu的线程ps -mp 进程号(pid) -o THREAD,tid,time参数解释-m:显示所有的线程 -p:pid进程使用CPU的时间 -o:该参数后是用户自定义格式3.将需要的线程ID转换为16进制格式(英文小写格式)prin
Linux常见系统诊断命令 1.查看整机信息: top使用top命令的话,重点关注的是 %CPU、%MEM 、load average 三个指标,上图里面我们关注的是有一个java进程占用了11%的cpu,需要关注(主要是pid93733)。load average三个指标:分别代表1、5、15分钟的负载情况,如果这些平均值都大于0.6的话,说明现在的系统的负载很高在这个命令下,按1的话,可以看到每个CPU的占用情况uptime:系统性能命令的精简版2.CPU:vmstat查看CPU(包含但是不限于
Linux系统chmod,chown和chgrp的区别和使用 Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为只读,可写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。 有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文
linux系统执行.java文件 如图,一个简单的Java程序,要把它丢到linux里面执行:package OOM;public class UnableCreateNewThreadDemo { public static void main(String[] args) { for (int i = 0; ; i++) { System.out.println("******** i = " + i); new Thread(() -> {
kafka面试题 基础题目1、Apache Kafka 是什么?Apach Kafka 是一款分布式流处理框架,用于实时构建流处理应用。它有一个核心 的功能广为人知,即作为企业级的消息引擎被广泛使用。你一定要先明确它的流处理框架地位,这样能给面试官留 下一个很专业的印象。2、什么是消费者组?消费者组是 Kafka 独有的概念,如果面试官问这 个,就说明他对此是有一定了解的。我先给出标准答案:1、定义:即消费者组是 Kafka 提供的可扩展且具有容错性的消费者机制。2、原理:在 Kafka 中,消费者组
kafka命令行操作 首先是环境的搭建,我的本地环境是三台机器集群,master,slave1,slave2,端口号9092。zk采用的是本地环境,端口号21811.操作主题:1.1查看当前服务器中的所有topicbin/kafka-topics.sh --zookeeper master:2181 --list1.2创建topic选项说明:--topic 定义topic名--replication-factor 定义副本数--partitions 定义分区数bin/kafka-t..
linux命令执行批处理脚本启动和关闭kafka 1.脚本命令vim xcallkafka.sh#!/bin/bash# 获取控制台指令cmd=$*# 判断指令是否为空if [ ! -n "$cmd" ]then echo "command can not be null!" exitfi# 获取当前登录用户user=`whoami`# 在从机执行命令,需要根据具体集群情况配置hosts=(master slave1 slave2)case $1 in"start"){for host in
linux命令执行批处理脚本,例如jps,hostname... 1.脚本命令vim xcall.sh#!/bin/bash# 获取控制台指令cmd=$*# 判断指令是否为空if [ ! -n "$cmd" ]then echo "command can not be null!" exitfi# 获取当前登录用户user=`whoami`# 在从机执行命令,需要根据具体集群情况配置hosts=(master slave1 slave2)for host in ${hosts[@]}do echo "===
linux命令执行批处理脚本启动和关闭zookeeper 1.脚本命令:vim xcallzk.sh其中hosts文件和zkServer.sh的位置需要和你本机的安装位置一致#!/bin/bash# 获取控制台指令cmd=$*# 判断指令是否为空if [ ! -n "$cmd" ]then echo "command can not be null!" exitfi# 获取当前登录用户user=`whoami`# 在从机执行命令,需要根据具体集群情况配置hosts=(master slave1 slave2
并发编程之AQS中的CLH队列 CLH队列在AQS类文件的开头,作者添加了很长一段注释,向开发者解释CLH队列,以及AQS对CLH队列的使用。AQS里面的CLH队列是CLH同步锁的一种变形。其主要从两方面进行了改造:节点的结构与节点等待机制。在结构上,AQS类引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁、入队列、释放锁等实现都与头尾节点相关:To enqueue into a CLH lock, you atomically splice it in as new tail. To dequeue, you jus