<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[郭敬仰的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jingyangV587</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jingyangV587]]></copyright><item><title><![CDATA[当线上接口请求过慢如何排查？]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/103438347</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/103438347</guid><author>jingyangV587</author><pubDate>Sat, 07 Dec 2019 20:25:20 +0800</pubDate><description><![CDATA[线上接口过慢，排除网络的原因之外无非有以下三点：
1.内存使用过高，频繁gc导致cpu占满
2.内存使用不高，出现了类似死循环场景
3.死锁
一般在遇到问题的时候先使用top -c 命令查看cpu是否占满，然后再使用free -m查看内存使用率，初步判断是上面问题的哪一种，然后再针对这一种问题深入排查。下面来模拟一下以上几种情况：
内存使用过高导致CPU满载
案例代码
public class F...]]></description><category></category></item><item><title><![CDATA[关于RocketMQ你需要掌握哪些点？]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/103434460</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/103434460</guid><author>jingyangV587</author><pubDate>Sat, 07 Dec 2019 13:15:50 +0800</pubDate><description><![CDATA[核心组件


Producer，消息生产者
Consumer，消息消费者，负责消费消息，服务端向消费者推送消息或者消费者向服务端定时拉取消息。包括ConsumerGroup，逻辑概念通常消费一类的消息，且消费逻辑一致
NameServer，元数据信息存储，相当于注册中心，集群架构中的组织协调员
Broker，是RocketMq核心是真正干活的，专门负责消息的发送，接收，默认每10秒同步一次自身情况...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-主流算法搜集《二十》]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/103170763</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/103170763</guid><author>jingyangV587</author><pubDate>Wed, 20 Nov 2019 20:23:09 +0800</pubDate><description><![CDATA[二分查找算法
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));
    }
    //使...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-图-笔记整理《十九》]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/103108667</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/103108667</guid><author>jingyangV587</author><pubDate>Sun, 17 Nov 2019 21:55:15 +0800</pubDate><description><![CDATA[图的基本理论
图解决了什么问题

线性表只有一个前驱一个后继节点的关系
树也只能有一个前驱节点也就是父节点
图可以表示多对多关系

常用概念

顶点
边
路径
无向图
顶点之间没有方向
有向图
顶点之间右方向
带权图
边带全值

图的表示方式
邻接矩阵
邻接矩阵表示顶点之间相邻关系的矩阵，相邻的值为1不相邻的值为0

邻接表

邻接矩阵因为不存在的边也会分配空间造成空间的浪费，邻接表只关心存在的边...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-树结构-多路查找树-笔记整理《十八》]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/103089601</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/103089601</guid><author>jingyangV587</author><pubDate>Fri, 15 Nov 2019 19:17:09 +0800</pubDate><description><![CDATA[二叉树问题分析
二叉树需要加载到内存中，节点少的情况下没问题，节点多的情况下：

在构建二叉树时需要多次io，构建速度慢
节点海量，二叉树高度大，降低操作速度

B树
B树中的B是Balanced的意思，B树即多路平衡搜索树

B树简介：

B树的阶：节点最多子节点的个数
B树的搜索：从根节点开始对节点的关键字进行二分查找，命中则结束；否则查询关键字所属范围的儿子节点，直到儿子指针为空或已是叶子节...]]></description><category></category></item><item><title><![CDATA[《Netty实战》读书笔记]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/103056681</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/103056681</guid><author>jingyangV587</author><pubDate>Wed, 13 Nov 2019 23:29:24 +0800</pubDate><description><![CDATA[第一部分  Netty 的概念及体系结构
《第一章  Netty-异步事件驱动》
(1)异步和事件驱动

异步、异步方法会立即返回，非阻塞网络的调用使我们不必等待一个操作的完成
选择器使得我们能够通过较少的线程便可监视许多连接上的事件。

(2)Netty核心组件

channel、NIO的基本构造负责连接以及缓冲区数据的传输
回调、Netty内部使用回调处理事件，例如一个新的连接建立的时候Cha...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-树结构-平衡二叉树-笔记整理《十七》]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102853831</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102853831</guid><author>jingyangV587</author><pubDate>Sun, 03 Nov 2019 22:56:23 +0800</pubDate><description><![CDATA[二叉排序树的弊端
比如给数列{1,2,3,4,5,6}，创建一颗二叉排序树，会出现如下情况：


左子树为空，像一个单链表
插入速度没有影响，但是查询速度会降低，因为每次都需要比较左子树，比单链表的情况还慢
这时候就需要平衡二叉树

平衡二叉树特点

平衡二叉树可以是一颗空树
左右子树的高度差不超过1，且左右两个子树都是平衡二叉树

左旋
步骤如下：

创建一个新节点NewNode，值等于当前根节...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-树结构-二叉排序树-笔记整理《十六》]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102677111</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102677111</guid><author>jingyangV587</author><pubDate>Tue, 22 Oct 2019 10:22:53 +0800</pubDate><description><![CDATA[为什么要用二叉排序树
使用数组
查找快，可以使用二分查找；
插入元素需要整体移动，速度慢
使用链表
无论是否有序查找都慢
添加数据快，不需要整体移动
使用二叉排序树
查找快，类似于二分查找
添加快，类似于链表
二叉排序树简介
特点：任何一个节点它的左子结点小于等于当前节点，右子节点大于等于当前节点
举例，对于数据（7,3,10,12,5,1,9）对于的二叉树为：

二叉排序树创建与遍历
创建流程：...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-《开篇》]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102605699</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102605699</guid><author>jingyangV587</author><pubDate>Thu, 17 Oct 2019 14:25:52 +0800</pubDate><description><![CDATA[数据结构与算法-概述-笔记整理《一》
数据结构与算法-数组与稀疏数组-笔记整理《二》
数据结构与算法-队列实现-笔记整理《三》
数据结构与算法-链表-笔记整理《四》
数据结构与算法-栈-笔记整理《五》
数据结构与算法-递归-笔记整理《六》
数据结构与算法-排序算法-冒泡排序-笔记整理《七》
数据结构与算法-排序算法-选择排序-笔记整理《八》
数据结构与算法-排序算法-插入排序-笔记整理《九》
数...]]></description><category></category></item><item><title><![CDATA[《九》DispatcherServlet视图呈现设计]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102574095</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102574095</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 20:24:00 +0800</pubDate><description><![CDATA[（1）通过render方法对ModelAndView对象中的数据进行呈现

（2）根据视图对象的名字获取视图对象，最后是通过ioc容器获取到的



（3）以jstlview为例解析view的实现
继承关系为：



exposeModelAsRequestAttributes里面的实现如下


...]]></description><category></category></item><item><title><![CDATA[《八》springMVC对HTTP请求的分发处理]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102573709</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102573709</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 20:17:09 +0800</pubDate><description><![CDATA[调用过程时序图

（1）代码调用流程



（2）获取handler
会从httprequerst中获取handler，通过遍历所有的handlerMapping最后返回需要的handler
（3）适配器作用
通过HandlerAdapter适配器对handler的合法性进行判断，然后返回适配结果。判断手段其实就判断是不是controller类型的


（4）具体的调用
通过触发handleReq...]]></description><category></category></item><item><title><![CDATA[《七》HandlerMapping对请求的映射处理]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102573646</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102573646</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 19:56:07 +0800</pubDate><description><![CDATA[getHandlerInternal接收HTTP请求作为参数，从HTTP中得到URL,然后从urlMapping中获取handler




]]></description><category></category></item><item><title><![CDATA[《六》HandlerMapping的配置和设计原理]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102573582</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102573582</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 19:54:42 +0800</pubDate><description><![CDATA[（1）HandlerMapping类继承关系图

（2）HandlerMapping是一个抽象类接口，以SimpleUrlHandlerMapping为例分析HandlerMapping的设计与实现

这些map持有HTTP请求与controller的映射关系。
(3)HandlerExecutionChain拦截器链的实现


（4）AbstractUrlHandlerMapping对handl...]]></description><category></category></item><item><title><![CDATA[《五》DispatcherServlet的启动以及初始化]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102573502</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102573502</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 19:51:19 +0800</pubDate><description><![CDATA[初始化建立上下文的流程
（1）初始化从HttpServletBean的init方法开始，从web.xml中读取参数设置到BeanWrapper中

这里开始初始化上下文



这样DispatcherServlet就持有一个以自己的Servlet命名的IOC容器，这个容器是一个WebApplicationContext对象。
初始化过程
HandlerMapping为HTTP请求找到相对于的con...]]></description><category></category></item><item><title><![CDATA[《四》MVC继承关系以及设计调用流程]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102572266</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102572266</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 19:38:59 +0800</pubDate><description><![CDATA[（1）类继承关系图

（2）调用时序图
DispatcherServlet可以分为两个部分：

初始化部分，由HttpServletBean的init开始，调用initServletBean();最终调用DispatcherServlet的initStrategies方法。
响应部分，对http请求进行响应，由DispatcherServlet的doService()方法作为入口最终调用HTTP的...]]></description><category></category></item><item><title><![CDATA[《三》ServletContext的设计与实现]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102572162</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102572162</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 18:20:36 +0800</pubDate><description><![CDATA[（１）

（２）ServletContextListener是ServletContext的监听者，当ServletContext发生变化的时候会触发相应的动作。如contextInitialized与contextDestroyed而ContextLoaderListener实现了ServletContext从而实现容器的初始化与销毁。

（３）参考《一》ContextLoader对ioc初始化...]]></description><category></category></item><item><title><![CDATA[《二》web容器的上下文设计]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102571891</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102571891</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 18:02:15 +0800</pubDate><description><![CDATA[（1）WebApplicationContext接口集成层次关系如图：


这里开始加载Ｂｅａｎ的定义，依然是容器ｒｅｆｒｅｓｈ（）时启动：


]]></description><category></category></item><item><title><![CDATA[《一》web容器启动基本过程]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102571719</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102571719</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 17:51:37 +0800</pubDate><description><![CDATA[（1）启动流程时序图

（2）web容器的启动可以从配置的ContextLoaderListener入手，在tomcat启动的时候会触发它，结构为：

（3）
ContextLoader是ContextLoaderListener的基类，上下文体系的建立就是由ContextLoader来完成的。
具体web容器初始化的代码流程为：

上面还有contextDestroyed这个方法，可见web容器...]]></description><category></category></item><item><title><![CDATA[《四》DataSourceTransactionManager的实现]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102571572</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102571572</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 17:42:00 +0800</pubDate><description><![CDATA[概述：DataSource创建事务会把数据库的Connection与当前线程绑定，关闭数据库Connection的AutoCommit属性




]]></description><category></category></item><item><title><![CDATA[《三》事务处理器的设计与实现]]></title><link>https://blog.youkuaiyun.com/jingyangV587/article/details/102571533</link><guid>https://blog.youkuaiyun.com/jingyangV587/article/details/102571533</guid><author>jingyangV587</author><pubDate>Tue, 15 Oct 2019 17:40:03 +0800</pubDate><description><![CDATA[AbstractPlatformTransactionManager定义了一系列接口方法，对于接口的实现大都是由具体的事务处理器来实现。
（1）事务处理器类设计

（2）类继承关系图


]]></description><category></category></item></channel></rss>