自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (4)
  • 收藏
  • 关注

原创 《Netty实战》读书笔记

第一部分 Netty 的概念及体系结构《第一章 Netty-异步事件驱动》(1)异步和事件驱动异步、异步方法会立即返回,非阻塞网络的调用使我们不必等待一个操作的完成选择器使得我们能够通过较少的线程便可监视许多连接上的事件。(2)Netty核心组件channel、NIO的基本构造负责连接以及缓冲区数据的传输回调、Netty内部使用回调处理事件,例如一个新的连接建立的时候Cha...

2019-11-13 23:29:24 499 2

原创 数据结构与算法-《开篇》

数据结构与算法-概述-笔记整理《一》数据结构与算法-数组与稀疏数组-笔记整理《二》数据结构与算法-队列实现-笔记整理《三》数据结构与算法-链表-笔记整理《四》数据结构与算法-栈-笔记整理《五》数据结构与算法-递归-笔记整理《六》数据结构与算法-排序算法-冒泡排序-笔记整理《七》数据结构与算法-排序算法-选择排序-笔记整理《八》数据结构与算法-排序算法-插入排序-笔记整理《九》数...

2019-10-17 14:25:52 747

原创 《Java并发编程实战》读书笔记

第一章-简介多线程开销多线程临时挂起活跃线程转而运行另一个线程会频繁的出现上下文切换的操作,这将带来极大的开销:保存和恢复执行上下文,导致CPU时间将更多的花在线程调度上而不是线程运行上第二章-线程安全性线程安全问题的解决不在线程之间共享变量变量状态改为不可变访问状态变量时使用同步线程安全的定义:正确性当多个线程访问某个类的时候,这个类始终能表现出正确的行为,那么这个类...

2019-09-20 21:47:56 507

原创 最全最简单的dubbo教程-开篇《一》

前言搜搜dubbo相关文章,都是一堆复制粘贴的,有的甚至直接复制官网的变成自己的博客,不知道有啥意思?无奈之下只有自己学习,自己弄一套完整的资料分享给大家。如果项目紧急需要五分钟上手dubbo进行开发,请参考:最简单的dubbo教程-快速入门本文主要参考:dubbo官网简介本文会用HelloWorld开始,带大家从0到1,逐渐学会dubbo,都有demo的案例可以下载。dubbo的其...

2018-12-13 11:07:30 23465 7

原创 最简单的dubbo教程-快速入门

所需环境zookeeper作为dubbo的注册中心,dubbo服务提供方和消费方都需要在zookeeper注册中心注册。 可参考:http://blog.csdn.net/jingyangv587/article/details/78901508 注意:启动后,请勿关闭!开始搭建1. 服务提供方和消费方都需要的包(这里我新建的maven工程为pom工程,将共同的项目依赖写到pom.xml中)总

2017-12-26 14:29:34 45637 41

原创 当线上接口请求过慢如何排查?

线上接口过慢,排除网络的原因之外无非有以下三点:1.内存使用过高,频繁gc导致cpu占满2.内存使用不高,出现了类似死循环场景3.死锁一般在遇到问题的时候先使用top -c 命令查看cpu是否占满,然后再使用free -m查看内存使用率,初步判断是上面问题的哪一种,然后再针对这一种问题深入排查。下面来模拟一下以上几种情况:内存使用过高导致CPU满载案例代码public class F...

2019-12-07 20:25:20 11304

原创 关于RocketMQ你需要掌握哪些点?

核心组件Producer,消息生产者Consumer,消息消费者,负责消费消息,服务端向消费者推送消息或者消费者向服务端定时拉取消息。包括ConsumerGroup,逻辑概念通常消费一类的消息,且消费逻辑一致NameServer,元数据信息存储,相当于注册中心,集群架构中的组织协调员Broker,是RocketMq核心是真正干活的,专门负责消息的发送,接收,默认每10秒同步一次自身情况...

2019-12-07 13:15:50 273

原创 数据结构与算法-主流算法搜集《二十》

二分查找算法public class BinarySearch { public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5}; System.out.println(binarySearch2(arr, 0, arr.length - 1, 4)); } //使...

2019-11-20 20:23:09 295 2

原创 数据结构与算法-图-笔记整理《十九》

图的基本理论图解决了什么问题线性表只有一个前驱一个后继节点的关系树也只能有一个前驱节点也就是父节点图可以表示多对多关系常用概念顶点边路径无向图顶点之间没有方向有向图顶点之间右方向带权图边带全值图的表示方式邻接矩阵邻接矩阵表示顶点之间相邻关系的矩阵,相邻的值为1不相邻的值为0邻接表邻接矩阵因为不存在的边也会分配空间造成空间的浪费,邻接表只关心存在的边...

2019-11-17 21:55:15 290

原创 数据结构与算法-树结构-多路查找树-笔记整理《十八》

二叉树问题分析二叉树需要加载到内存中,节点少的情况下没问题,节点多的情况下:在构建二叉树时需要多次io,构建速度慢节点海量,二叉树高度大,降低操作速度B树B树中的B是Balanced的意思,B树即多路平衡搜索树B树简介:B树的阶:节点最多子节点的个数B树的搜索:从根节点开始对节点的关键字进行二分查找,命中则结束;否则查询关键字所属范围的儿子节点,直到儿子指针为空或已是叶子节...

2019-11-15 19:17:09 243

原创 数据结构与算法-树结构-平衡二叉树-笔记整理《十七》

二叉排序树的弊端比如给数列{1,2,3,4,5,6},创建一颗二叉排序树,会出现如下情况:左子树为空,像一个单链表插入速度没有影响,但是查询速度会降低,因为每次都需要比较左子树,比单链表的情况还慢这时候就需要平衡二叉树平衡二叉树特点平衡二叉树可以是一颗空树左右子树的高度差不超过1,且左右两个子树都是平衡二叉树左旋步骤如下:创建一个新节点NewNode,值等于当前根节...

2019-11-03 22:56:23 194

原创 数据结构与算法-树结构-二叉排序树-笔记整理《十六》

为什么要用二叉排序树使用数组查找快,可以使用二分查找;插入元素需要整体移动,速度慢使用链表无论是否有序查找都慢添加数据快,不需要整体移动使用二叉排序树查找快,类似于二分查找添加快,类似于链表二叉排序树简介特点:任何一个节点它的左子结点小于等于当前节点,右子节点大于等于当前节点举例,对于数据(7,3,10,12,5,1,9)对于的二叉树为:二叉排序树创建与遍历创建流程:...

2019-10-22 10:22:53 210

原创 《九》DispatcherServlet视图呈现设计

(1)通过render方法对ModelAndView对象中的数据进行呈现(2)根据视图对象的名字获取视图对象,最后是通过ioc容器获取到的(3)以jstlview为例解析view的实现继承关系为:exposeModelAsRequestAttributes里面的实现如下...

2019-10-15 20:24:00 176

原创 《八》springMVC对HTTP请求的分发处理

调用过程时序图(1)代码调用流程(2)获取handler会从httprequerst中获取handler,通过遍历所有的handlerMapping最后返回需要的handler(3)适配器作用通过HandlerAdapter适配器对handler的合法性进行判断,然后返回适配结果。判断手段其实就判断是不是controller类型的(4)具体的调用通过触发handleReq...

2019-10-15 20:17:09 186

原创 《七》HandlerMapping对请求的映射处理

getHandlerInternal接收HTTP请求作为参数,从HTTP中得到URL,然后从urlMapping中获取handler

2019-10-15 19:56:07 235

原创 《六》HandlerMapping的配置和设计原理

(1)HandlerMapping类继承关系图(2)HandlerMapping是一个抽象类接口,以SimpleUrlHandlerMapping为例分析HandlerMapping的设计与实现这些map持有HTTP请求与controller的映射关系。(3)HandlerExecutionChain拦截器链的实现(4)AbstractUrlHandlerMapping对handl...

2019-10-15 19:54:42 325

原创 《五》DispatcherServlet的启动以及初始化

初始化建立上下文的流程(1)初始化从HttpServletBean的init方法开始,从web.xml中读取参数设置到BeanWrapper中这里开始初始化上下文这样DispatcherServlet就持有一个以自己的Servlet命名的IOC容器,这个容器是一个WebApplicationContext对象。初始化过程HandlerMapping为HTTP请求找到相对于的con...

2019-10-15 19:51:19 191

原创 《四》MVC继承关系以及设计调用流程

(1)类继承关系图(2)调用时序图DispatcherServlet可以分为两个部分:初始化部分,由HttpServletBean的init开始,调用initServletBean();最终调用DispatcherServlet的initStrategies方法。响应部分,对http请求进行响应,由DispatcherServlet的doService()方法作为入口最终调用HTTP的...

2019-10-15 19:38:59 180

原创 《三》ServletContext的设计与实现

(1)(2)ServletContextListener是ServletContext的监听者,当ServletContext发生变化的时候会触发相应的动作。如contextInitialized与contextDestroyed而ContextLoaderListener实现了ServletContext从而实现容器的初始化与销毁。(3)参考《一》ContextLoader对ioc初始化...

2019-10-15 18:20:36 188

原创 《二》web容器的上下文设计

(1)WebApplicationContext接口集成层次关系如图:这里开始加载Bean的定义,依然是容器refresh()时启动:

2019-10-15 18:02:15 145

原创 《一》web容器启动基本过程

(1)启动流程时序图(2)web容器的启动可以从配置的ContextLoaderListener入手,在tomcat启动的时候会触发它,结构为:(3)ContextLoader是ContextLoaderListener的基类,上下文体系的建立就是由ContextLoader来完成的。具体web容器初始化的代码流程为:上面还有contextDestroyed这个方法,可见web容器...

2019-10-15 17:51:37 240

原创 《四》DataSourceTransactionManager的实现

概述:DataSource创建事务会把数据库的Connection与当前线程绑定,关闭数据库Connection的AutoCommit属性

2019-10-15 17:42:00 714

原创 《三》事务处理器的设计与实现

AbstractPlatformTransactionManager定义了一系列接口方法,对于接口的实现大都是由具体的事务处理器来实现。(1)事务处理器类设计(2)类继承关系图

2019-10-15 17:40:03 206

原创 《二》事务的创建

一、创建过程已经存在事务的处理情况二、事务的挂起返回的SuspendedResourcesHolder作为参数传给TransactionStatus三、事务的提交四、事务的回滚小结:在事务的处理中,TransactionInfo与TransactionStatus对象尤为重要,记录他们积累的事务的执行情况,以及与线程绑定。...

2019-10-15 17:21:43 139

原创 《一》事务传播行为

一、事务的传播行为Spring中事务的定义:Propagation(key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。)有以下选项可供使用:PROPAGATION_REQUIRED—如果当前有事务,就用当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。//...

2019-10-15 17:04:59 121

原创 《六》Advice通知的实现

aop定义的通知是怎样对目标对象增强的呢?这里以MethodBeforeAdviceAdapter为例,从advisor获取到通知器之后,通过invoke的回调来实现目标的增强

2019-10-14 20:56:10 131

原创 《五》Advisor通知器的配置生成

(1)拦截器的获取是从advisor通知器中获取的,这个通知器装了配置的所有的Advice通知,而AdvisorAdapterRegistry用来注册拦截器链的。如上图61行所示,AdvisorAdapterRegistry从advisor中获取符合条件的拦截器。主意上面有切点的赛选。至于advisor器中怎样封装Advice通知的呢,如下图:遍历配置的interceptorName...

2019-10-14 20:38:58 206

原创 《四》Aop拦截器调用的实现

一、JdkDynamicAopProxy的invoke拦截JdkDynamicAopProxy的invoke方法作为proxy对象的回调函数被触发,对proxy对象的代理设置是在invoke方法中完成的,包括获取目标对象,拦截器链。创建了ReflectiveMethodInvocation对象来完成对aop实现的封装,来完成一个完整的拦截器链对目标对象的拦截过程:拦截器链中拦截器配置、逐个运...

2019-10-14 20:21:56 201

原创 《三》JDK与CGLIB动态代理

一、AopProxy接口下的JdkDynamicAopProxy与CglibAopProxy区别AopProxy接口设计就是为了获取Proxy代理对象,在AopProxy接口下分别有JdkDynamicAopProxy与CglibAopProxy两种Proxy代理对象实现, 区别在于JdkDynamicAopProxy需要指定ClassLoader而CglibAopProxy不需要指定。二...

2019-10-14 19:29:13 142

原创 《二》SpringAOP代理类浅析

一、简介AopProxy代理对象ProxyConfig、AdvisedSupport、ProxyCreatorSupport作为ProxyFactoryBean、ProxyFactory、AspectJProxyFactory共同的基类,ProxyConfig作为数据基类,提供配置属性;AdvisedSupport封装AOP通知和通知器相关操作;ProxyCreatorSupport看作子类...

2019-10-14 17:46:34 155

原创 《一》SpringAOP中Advice 、Pointcut、Advisor之间的关系

(1)Advice(通知)可以理解为连接点具体做些什么事情,为切面增强提供织入接口,是增强目标方法的入口。包括前置通知,后知通知,异常通知。(2)Pointcut(切点)理解为Advice(通知)作用于哪些点,以JdkRegexpMethodPointcut为例:根据一定规则匹配方法,表明哪些方法可以被增强。(3)Advisor(通知器)通知器作用将通知与切点结合起来,可以定义应该哪...

2019-10-14 17:26:58 659

原创 Spring解决相互依赖的问题

参考博客: https://blog.csdn.net/zl1zl2zl3/article/details/86071240个人理解:(1)如果用构造函数循环初始化所需要的bean的时候,比如文中C初始化的它所需要依赖的时候发现A已经在初始化状态了,就抛出异常。(2)如果用autowored注入(也就是默认的方式),会先把各个bean实例化放到map中,进而给属性赋值。(推荐用法)(3...

2019-10-14 17:19:31 1522

原创 autowiring自动装配实现原理

(1)在AbstractAutowireCapableBeanFactory中populateBean方法,也就是依赖注入的时候发生的(2)获取当前bean的所有属性,然后判断属性中有AUTOWIRE_BY_NAME等类型的执行autowireByName相关操作(3)最后执行getBean()进行依赖注入...

2019-10-14 17:15:53 213

原创 Spring中的后置处理器BeanPostProcessor讲解

参考博客:https://www.cnblogs.com/sishang/p/6576665.htmlhttps://www.cnblogs.com/libra0920/p/6118157.html个人理解思路:(1)initializeBean在populateBean方法之后开始调用,而populateBean是属性注入的方法,说明initializeBean在属性注入之后调用...

2019-10-14 17:09:27 173

原创 springIOC 中bean的生命周期

参考博客:https://www.cnblogs.com/redcool/p/6397398.html主要流程1、bean实例创建2、给bean属性赋值3、如果bean实现了Aware相关接口如,BeanNameAware, BeanFactoryAware, InitializingBean, ApplicationContextAware就调用相对于的初始化方法4、通过容器使用b...

2019-10-14 17:00:01 153

原创 FactoryBean在spring中的应用

参考博客:https://blog.csdn.net/zknxx/article/details/79588391factorybean调用流程截图:

2019-10-14 14:21:13 141

原创 springioc初始化bean与依赖注入流程分析《二》

优秀博客参考: https://blog.csdn.net/u013400939/article/details/81321246https://www.cnblogs.com/dongguacai/p/6438603.htmlgetbean初始化截图流程:

2019-10-14 13:55:17 154

原创 Spring ioc 启动初始化流程分析《一》

IOC核心为BeanFactory接口,beandefinition装载过程,分析流程如下:1、从ClassPathXmlApplicationContext为切入点,找到父类AbstractRefreshableApplicationContext,进入refreshBeanFactory()2、进入loadBeanDefinitions(beanFactory);3、loadBeanDe...

2019-10-14 10:56:01 138

原创 NIO笔记

NIO与IO的主要区别IO面向流单向传输、NIO面向缓冲区双向传输;IO阻塞、NIO非阻塞;网络编程NIO多了个选择器传统io模型的缺点:传统io单线程模型:如果线程未完成数据处理,新的请求将阻塞;传统io多线程模型:每个请求都会新启一个线程,阻塞的线程依旧不能做其它事情,cpu利用率仍然不高;缓冲区(Buffer)Buffer 主要用于与NIO 通道进行交互,数据是从通道读...

2019-10-13 20:01:30 144

原创 掌门一对一面试总结

1.a>b与a-b>0的区别参考文章:https://blog.csdn.net/asd991936157/article/details/52033118总结:a>b在计算机中不一定等于a-b>0,比如Integer.MAX_VALUE-(-1)将得到一个-2147483648的负数。比如一个32位的操作系统,会预留一位作为符号位,比如Integer.MAX_V...

2019-10-13 12:57:59 4446

ThreadDemo.rar

java.util.concurrent包中,用来测试运行代码的案例。

2019-09-21

MySQL.xmind

MySQL常见优化思路导图

2019-06-18

activiteMq

activiteMq通过spring整合的例子。大家参考使用

2019-01-17

protobuf小demo

这个是protobuf相关的小案例,大家可以自行下载使用。

2019-01-17

空空如也

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

TA关注的人

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