自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 java.lang.NoClassDefFoundError: Could not initialize class xxx

最近碰到这样一个报错,java.lang.NoClassDefFoundError: Could not initialize class xxx ,就是不能初始化一个类。位置是在调用一个类的静态方法的时候。本来想的是可能依赖冲突,导致不知道用哪个类,然后没有发现依赖冲突。后来发现,每次执行报的错不一样,第一次报的是不能从spring的类没注册的异常。后来发现是BlobStorageFileU...

2020-04-18 14:53:24 1941 1

原创 ThreadLocal的使用和问题

ThreadLocal和synchronized都用于解决多线程并发访问,可是两者有着本质区别,synchronized使用的锁机制,使变量和代码块能在某一时刻仅仅被某一线程访问。而ThreadLocal为每个线程提供了变量的副本,使得每个线程某一时间操作的不是同一个对象,这样就隔离了多个线程之间的数据共享。1.ThreadLocal的使用我们来探究一下ThreadLocal怎么实现的数据隔离...

2020-04-12 15:09:50 212

原创 AQS源码解析;Reentrantlock实现原理

AQS(AbstractQueuedSynchronizer, 队列同步器)它是Java并发用来构建锁和其他同步组件的基础框架。像Reentrantlock,Countdownlantch,Semaphore,ReadWriteLock都是由AQS来实现的,本篇文章将通过分析ReentrantLock源码来解释AQS先看一段代码:package com.example.AQS;import...

2020-03-19 19:16:53 116

原创 Netty源码解析(五)信息交互

前几篇文章主要讲解了netty从服务端启动到接收到客户端连接并为客户端添加感兴趣事件的流程,接下来主要讲解信息的写出流程,至于解码流程,知识比较单一,以后会单独出一篇讲解我们都知道,我们写入消息用ctx.writeAndFlush()方法,或者用ctx.channel().writeAndFlush()方法,但是两者也是有差别的加入我们的pipeline结构如下如果我们在TestInHan...

2020-02-04 18:05:58 133

原创 Netty源码解析(四)接收客户端

上一篇我们学完了NioServerSocketChannel创建,初始化,注册到selector,添加感兴趣事件,相当于完成了Nio的如下几步//创建一个ServerSocketChannel ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); //创建一个Selector...

2020-02-04 14:07:39 168

原创 Netty源码解析(三)bind方法(二)

上一篇说完了NioEventLoop完成的三件事,1.轮询感兴趣事件 2.处理IO事件 3.处理任务队列流程走到了启动好reactor线程后,ServerSocketChannel注册到selector上,但是感兴趣事件填的0,我们继续跟流程,走到这里,initAndRegister方法完成,继续跟bind方法,我们看bind方法中的doBind0方法/** * * @pa...

2020-02-04 12:19:04 179

原创 Netty源码解析(二)bind方法(一)

在一切初始化完成后,我们需要执行bind方法,来启动服务端ChannelFuture future = serverBootstrap.bind(9090).sync();跟进bind方法public ChannelFuture bind(int inetPort) { return bind(new InetSocketAddress(inetPort)); }...

2020-02-03 23:11:58 310

原创 Netty源码解析(一)初始化

Netty运行整体流程:以后的讲究都会按着这幅图来理解1.对NioEventLoopGroup的整体流程从第一行代码分析EventLoopGroup bossGroup=new NioEventLoopGroup(1);//cpu核心数*2EventLoopGroup workerGroup=new NioEventLoopGroup(); //cpu核心数*2看NioEvent...

2020-02-03 16:23:54 142

原创 Spring源码解析(三) 包扫描,ConfigurationClassPostProcessor(1)

上一篇主要讲了refresh()方法的invokeBeanFactoryPostProcessors方法,主要是执行后置处理器BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor,执行BeanDefinitionRegistryPostProcessor的方法是invokeBeanDefinitionRegistryPostP...

2020-01-10 17:35:52 134

原创 Spring源码解析(二)初始化环境

本章主要讲Spring初始化环境的方法,即refresh()方法先来回顾一下AnnotationConfigApplicationContext的构造方法 public AnnotationConfigApplicationContext(Class<?>... componentClasses) { //无参构造方法 this(); //注册方法 register...

2020-01-10 14:40:53 136

原创 Spring源码解析(一)AnnotationConfigApplicationContext实例化,注册方法

解析Spring源码,首先从第一行代码看起Config.java配置类@Configuration@ComponentScan("com.spring")public class Config {}Test.javapublic class Test { public static void main(String[] args) { AnnotationConfigAppl...

2020-01-09 20:26:30 402

原创 jdk动态代理实现(源码),包括自己实现的动态代理(2)

上一篇文章主要讲解了自己实现jdk动态代理,本文主要讲解jdk实现动态代理首先使用jdk动态代理流程如下:1.实现InvocationHandler接口,是代理类的实现逻辑package com.sixl.util;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public cl...

2020-01-02 20:30:55 82

原创 jdk动态代理实现(源码),包括自己实现的动态代理(1)

1.首先看一下自己实现的jdk动态代理:UserDao:package com.sixl.dao;public interface UserDao { public void query(); public void query(String p);}UserDaoImpl:package com.sixl.dao;public class UserDaoIm...

2020-01-02 19:48:32 148

原创 NIO的非阻塞式实现

首先解释一下阻塞和非阻塞对于传统的BIO,线程在同一时间只能等待数据的发送和接收,在此期间不能做其他的事用图来表示所以对于这种io,我们应该使用多线程的方式完成io通信多线程虽然能完成同时接收和发送,但是本质上也是多个阻塞的单线程,多个线程中某个陷入阻塞,该线程还是不能做其他的事,造成资源的浪费。NIO非阻塞模式,将每一个用于传输数据的通道都注册到选择器上,选择器监控通道的io状况...

2019-08-13 20:37:15 1855 1

原创 JDBC连接MySQL报错Unknown system variable 'query_cache_size'

报此错误是mysql-connecter-java的版本过低,很显然是数据库驱动程序与数据库版本不对应我之前用到的是5.1.37,换成8.0.11就可以了The query cache is deprecated as of MySQL 5.7.20, and is removed in MySQL 8.0. Deprecation includes query_cache_size....

2019-07-28 13:07:38 186

原创 java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' befo

开发的时候出现这个问题,说明父项目里面已经有了一个依赖,然后父项目或者子项目中有了重复或者冲突的依赖,会造成这个错误应该仔细检查pom文件,或者检查自己写的被spring管理的类的名字有没有冲突的。java.lang.IllegalStateException: BeanFactory not initialized or already closed - call ‘refresh’ bef...

2019-06-30 15:34:10 1026

原创 docker一些常用的命令及用法

1.Docker常用命令:1.1帮助命名docker version 查看版本docker info docker信息docker --help docker命令1.2镜像命令1.2.1 docker images 列出本地主机上的镜像-a:列出所有镜像;-q只显示镜像id;–digiest显示镜像摘要信息;–no-trunc:显示完成的镜像信息1.2.2 docker sea...

2019-06-30 00:18:31 128

原创 java实现单链表逆转

java实现单链表翻转最简答的思路,就是假设每个节点都有一个pre,一个next,而这个pre和next就是我们的当前节点的前后位置我们在遍历当前节点的时候,顺便将pre和next构造出来。这样就可以实现链表翻转了。代码如下:public class Reverse { //单链表 static class ListNode{ int val; ...

2019-06-09 16:14:02 1701

原创 eureka实现服务的优雅停服

由于eureka的自我保护机制,直接对服务进行停止会使得eureka serve进入自我保护模式。服务并不会从列表中删除介绍两种能实现服务优雅停服的方法方法一:关闭eureka的自我保护修改eureka server配置文件,添加:#关闭自我保护eureka.server.enable-self-preservation=false#清理间隔,单位毫秒,超过时间间隔后,会将服务从列表中...

2019-05-31 22:30:32 1734

原创 关于Eureka的自我保护机制

之前学习Eureka,关于他的自我保护机制一直不太理解。今天整理下学到的内容。一.自我保护的条件一般情况下,为服务在Eureka上注册后,每30s会发送一次心跳包,eureka也就通过心跳包来判断服务的存活情况。会定期删除90s内没有发送心跳的服务。二。导致eureka server收不到微服务心跳的情况1.微服务自身的原因。2.微服务与eureka之间的网络故障通常微服务自身的故障...

2019-05-31 20:38:36 1220 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除