学习笔记
文章平均质量分 92
瘦宅190411
这个作者很懒,什么都没留下…
展开
-
Netty源码解析(五)信息交互
前几篇文章主要讲解了netty从服务端启动到接收到客户端连接并为客户端添加感兴趣事件的流程,接下来主要讲解信息的写出流程,至于解码流程,知识比较单一,以后会单独出一篇讲解我们都知道,我们写入消息用ctx.writeAndFlush()方法,或者用ctx.channel().writeAndFlush()方法,但是两者也是有差别的加入我们的pipeline结构如下如果我们在TestInHan...原创 2020-02-04 18:05:58 · 132 阅读 · 0 评论 -
Netty源码解析(四)接收客户端
上一篇我们学完了NioServerSocketChannel创建,初始化,注册到selector,添加感兴趣事件,相当于完成了Nio的如下几步//创建一个ServerSocketChannel ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); //创建一个Selector...原创 2020-02-04 14:07:39 · 162 阅读 · 0 评论 -
Netty源码解析(三)bind方法(二)
上一篇说完了NioEventLoop完成的三件事,1.轮询感兴趣事件 2.处理IO事件 3.处理任务队列流程走到了启动好reactor线程后,ServerSocketChannel注册到selector上,但是感兴趣事件填的0,我们继续跟流程,走到这里,initAndRegister方法完成,继续跟bind方法,我们看bind方法中的doBind0方法/** * * @pa...原创 2020-02-04 12:19:04 · 178 阅读 · 0 评论 -
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 · 307 阅读 · 0 评论 -
Netty源码解析(一)初始化
Netty运行整体流程:以后的讲究都会按着这幅图来理解1.对NioEventLoopGroup的整体流程从第一行代码分析EventLoopGroup bossGroup=new NioEventLoopGroup(1);//cpu核心数*2EventLoopGroup workerGroup=new NioEventLoopGroup(); //cpu核心数*2看NioEvent...原创 2020-02-03 16:23:54 · 139 阅读 · 0 评论 -
Spring源码解析(三) 包扫描,ConfigurationClassPostProcessor(1)
上一篇主要讲了refresh()方法的invokeBeanFactoryPostProcessors方法,主要是执行后置处理器BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor,执行BeanDefinitionRegistryPostProcessor的方法是invokeBeanDefinitionRegistryPostP...原创 2020-01-10 17:35:52 · 130 阅读 · 0 评论 -
Spring源码解析(二)初始化环境
本章主要讲Spring初始化环境的方法,即refresh()方法先来回顾一下AnnotationConfigApplicationContext的构造方法 public AnnotationConfigApplicationContext(Class<?>... componentClasses) { //无参构造方法 this(); //注册方法 register...原创 2020-01-10 14:40:53 · 133 阅读 · 0 评论 -
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 · 396 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 146 阅读 · 0 评论 -
NIO的非阻塞式实现
首先解释一下阻塞和非阻塞对于传统的BIO,线程在同一时间只能等待数据的发送和接收,在此期间不能做其他的事用图来表示所以对于这种io,我们应该使用多线程的方式完成io通信多线程虽然能完成同时接收和发送,但是本质上也是多个阻塞的单线程,多个线程中某个陷入阻塞,该线程还是不能做其他的事,造成资源的浪费。NIO非阻塞模式,将每一个用于传输数据的通道都注册到选择器上,选择器监控通道的io状况...原创 2019-08-13 20:37:15 · 1831 阅读 · 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 · 183 阅读 · 0 评论 -
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 · 1019 阅读 · 0 评论 -
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 · 125 阅读 · 0 评论 -
java实现单链表逆转
java实现单链表翻转最简答的思路,就是假设每个节点都有一个pre,一个next,而这个pre和next就是我们的当前节点的前后位置我们在遍历当前节点的时候,顺便将pre和next构造出来。这样就可以实现链表翻转了。代码如下:public class Reverse { //单链表 static class ListNode{ int val; ...原创 2019-06-09 16:14:02 · 1697 阅读 · 0 评论 -
eureka实现服务的优雅停服
由于eureka的自我保护机制,直接对服务进行停止会使得eureka serve进入自我保护模式。服务并不会从列表中删除介绍两种能实现服务优雅停服的方法方法一:关闭eureka的自我保护修改eureka server配置文件,添加:#关闭自我保护eureka.server.enable-self-preservation=false#清理间隔,单位毫秒,超过时间间隔后,会将服务从列表中...原创 2019-05-31 22:30:32 · 1718 阅读 · 0 评论 -
关于Eureka的自我保护机制
之前学习Eureka,关于他的自我保护机制一直不太理解。今天整理下学到的内容。一.自我保护的条件一般情况下,为服务在Eureka上注册后,每30s会发送一次心跳包,eureka也就通过心跳包来判断服务的存活情况。会定期删除90s内没有发送心跳的服务。二。导致eureka server收不到微服务心跳的情况1.微服务自身的原因。2.微服务与eureka之间的网络故障通常微服务自身的故障...原创 2019-05-31 20:38:36 · 1218 阅读 · 2 评论