<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JASON_CHEN]]></title><description><![CDATA[DO WHAT YOU SAY. SAY WAHT YOU DO.]]></description><link>https://blog.youkuaiyun.com/u010978040</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010978040]]></copyright><item><title><![CDATA[【Mysql分享】之事务分析篇]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/122330003</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/122330003</guid><author>u010978040</author><pubDate>Wed, 05 Jan 2022 19:11:45 +0800</pubDate><description><![CDATA[mysql 存储架构]]></description><category></category></item><item><title><![CDATA[【Mysql分享】之锁篇]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/121890507</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/121890507</guid><author>u010978040</author><pubDate>Sun, 12 Dec 2021 17:26:34 +0800</pubDate><description><![CDATA[mysql锁篇,了解mysql中各种锁情况]]></description><category></category></item><item><title><![CDATA[【Mysql分享】之索引篇]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/121843703</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/121843703</guid><author>u010978040</author><pubDate>Thu, 09 Dec 2021 20:49:41 +0800</pubDate><description><![CDATA[mysql知识图谱

mysql架构
逻辑架构图

（1）MySQL向外提供的交互接口（Connectors）
（2）管理服务组件和工具组件(Management Service &amp; Utilities)
（3）连接池组件(Connection Pool)
（4）SQL接口组件(SQL Interface)
（5）查询分析器组件(Parser)
（6）优化器组件（Optimizer）
（7）缓存主件（Caches &amp; Buffers）mysql8.0不再使用
（8）插件式存储引擎（Plugg]]></description><category></category></item><item><title><![CDATA[记一次生产redis线程堵塞fullgc问题分析]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/109674505</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/109674505</guid><author>u010978040</author><pubDate>Fri, 13 Nov 2020 15:00:41 +0800</pubDate><description><![CDATA[背景
目前线上运行推荐业务模块，因重构版本和老版本分别部署在不同的机器集群中，运行了几个版本后，老版本的流量已经少的可怜，日均50w左右，为了释放机器资源，然后把老版本代码复制到重构版本后的项目中继续为老版本用户提供服务。搞完后，测试通过，上线。当然我们也比较小心，首先切了一台网关然后观察了一段时间发现基本正常。等下一个上线日我们就把所有网关全部切到新项目的上边。首日基本正常，第二日后问题接踵而至。
一、老版本接口耗时超长
1.1 首次发现问题
首次发现问题是只在其中的一台机器(A)发生的，下图是首次发现问]]></description><category></category></item><item><title><![CDATA[美团点评Cat业务实践]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/108472468</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/108472468</guid><author>u010978040</author><pubDate>Tue, 08 Sep 2020 17:04:49 +0800</pubDate><description><![CDATA[项目背景
CAT（Central Application Tracking），是基于 Java 开发的分布式实时监控系统。CAT在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案。CAT 目前在美团的产品定位是应用层的统一监控组件，基本接入了美团所有核心应用，在中间件（RPC、数据库、缓存、MQ 等）框架中得到广泛应用，为各业务线提供系统的性能指标、健康状况、实时告警等。
项目地址：https://github.com/dianping/ca]]></description><category></category></item><item><title><![CDATA[Java线程池实现原理及其在多接口聚合业务中的实践]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/108217742</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/108217742</guid><author>u010978040</author><pubDate>Tue, 25 Aug 2020 11:21:29 +0800</pubDate><description><![CDATA[随着计算机行业的飞速发展，多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池：ThreadPoolExecutor类，帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池，是一个开发人员必修的基本功。
本文开篇简述线程池概念和用途，接着结合线程池的源码，帮助读者领略线程池的设计思路，最后回归实践，通过案例讲述使用线程池遇到的问题，并给出了一种动态化线程池解决方案。
一、前言
1.1 线程池是什么
线程池（Thread Pool）是一种基于池化思想]]></description><category></category></item><item><title><![CDATA[记调整SpringCloudGateway负载策略BestAvailableRule引发的事故]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/108106724</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/108106724</guid><author>u010978040</author><pubDate>Wed, 19 Aug 2020 18:00:25 +0800</pubDate><description><![CDATA[前言
因老信息流项目维护性太差及各种线程池乱用泛滥，原研发人员离职等等历史原因。导致信息流新研发人员中不断吐槽。当然吐槽老代码是程序员特点，看到别人写的不经意就想来一句 “我艹”，最后一看注释发现自己写的，默默修改中…。在不断的吐槽中，大家决定 “重构“，说干就干，don’t say too much。建项目、熟悉老业务逻辑、重构。
历程
经过一个星期小伙伴们的辛苦奋战，信息流核心接口完成提测，看样子一切都是如此的顺利。在测试环境中在测试周测一周期间修改一些细节问题，回归等等。在第二周部署上生产，在生产经过]]></description><category></category></item><item><title><![CDATA[Springboot+caffeine 实现两级缓存]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/108076198</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/108076198</guid><author>u010978040</author><pubDate>Tue, 18 Aug 2020 14:23:05 +0800</pubDate><description><![CDATA[目录：

缓存、两级缓存
spring cache：主要包含spring cache定义的接口方法说明和注解中的属性说明
spring boot + spring cache
caffeine简介
spring boot + spring cache 实现两级缓存（redis + caffeine）

缓存、两级缓存

简单的理解，缓存就是将数据从读取较慢的介质上读取出来放到读取较快的介质上，如磁盘–&gt;内存。平时我们会将数据存储到磁盘上，如：数据库。如果每次都从数据库里去读取，会因为磁盘本身的IO影响]]></description><category></category></item><item><title><![CDATA[亿级用户流量网站如何统计活跃用户？妙用redis中bitMap]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105868717</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105868717</guid><author>u010978040</author><pubDate>Thu, 30 Apr 2020 20:14:19 +0800</pubDate><description><![CDATA[BitMap是什么
就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。我们知道8个bit可以组成一个Byte，所以bitmap本身会极大的节省储存空间。你可以把它理解为一个特殊处理过的 字符串，key代表业务属性、标签。一个 bit 位来表示某个元素对应的值或者状态
Redis中的BitMap
Redis从2.2.0版本开始新增了setbit,getbit,bit...]]></description><category></category></item><item><title><![CDATA[Spring源码解析之SpringMVC源码解析(二)]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105833743</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105833743</guid><author>u010978040</author><pubDate>Wed, 29 Apr 2020 10:21:02 +0800</pubDate><description><![CDATA[在Spring源码解析之SpringMVC源码解析(一)中，分析了SpringBoot中SpringMVC的自动配置原理以及DispatcherServlet的初始化流程。本篇文章就分析一次请求在SpringMVC中的处理流程
在日常开发中，我们最常用的请求方式大概就是Get和Post了，当然也有put和delete,Tomcat或者Jetty等web服务器在接受到请求后会调用到Dispatche...]]></description><category></category></item><item><title><![CDATA[Spring源码解析之SpringMVC源码解析(一)]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105832693</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105832693</guid><author>u010978040</author><pubDate>Wed, 29 Apr 2020 09:47:01 +0800</pubDate><description><![CDATA[一、源码阅读环境
用idea快速创建一个springboot 项目 ，在项目添加一个controller 方法，这里就不写创建过程了。主要需要以下
启动类
@SpringBootApplication
public class MVCApplication {
    public static void main (String args[]){
        SpringApplicatio...]]></description><category></category></item><item><title><![CDATA[简说设计模式之适配器模式]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105329976</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105329976</guid><author>u010978040</author><pubDate>Sun, 05 Apr 2020 17:28:29 +0800</pubDate><description><![CDATA[一、什么是适配器模式
适配器模式（Adapter）的定义如下：将一个类的接口转换成客户希望的另外一个接口，使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种
1. 类适配器
1.1 UML结构图

1.2 模式实现代码
package adapter;
//目标接口
interface Target
{
    public void reque...]]></description><category></category></item><item><title><![CDATA[简说设计模式之策略模式]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105329958</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105329958</guid><author>u010978040</author><pubDate>Sun, 05 Apr 2020 17:25:55 +0800</pubDate><description><![CDATA[一、什么是策略模式
策略（Strategy）模式的定义：该模式定义了一系列算法，并将每个算法封装起来，使它们可以相互替换，且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式，它通过对算法进行封装，把使用算法的责任和算法的实现分割开来，并委派给不同的对象对这些算法进行管理。
​       举个例子：我们出门的时候会选择不同的出行方式，比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等，这些...]]></description><category></category></item><item><title><![CDATA[简说设计模式之设计模式概述]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105309854</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105309854</guid><author>u010978040</author><pubDate>Sat, 04 Apr 2020 14:15:56 +0800</pubDate><description><![CDATA[一、软件设计模式的概念与意义
1. 软件设计模式的概念
软件设计模式（Software Design Pattern），又称设计模式，是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题，以及该问题的解决方案。也就是说，它是解决特定问题的一系列套路，是前辈们的代码设计经验的总结，具有一定的普遍性，可以反复使用。其目的是为了提高代码的可...]]></description><category></category></item><item><title><![CDATA[Spring源码解析之Spring事务源码解析(二)]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105309827</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105309827</guid><author>u010978040</author><pubDate>Sat, 04 Apr 2020 14:14:08 +0800</pubDate><description><![CDATA[在上一篇文章Spring源码解析之Spring事务源码解析(一)@EnableTransactionManagement注解解析中，我们阅读了Spring事务功能的注解@EnableTransactionManagement的实现逻辑
在进行接下来的源码解析之前首先来简单了解一下
传统的jdbc应用事务操作

开启事务
save、update、delete等操作
出现异常进行回滚
正常情况提交事务...]]></description><category></category></item><item><title><![CDATA[Spring源码解析之Spring事务源码解析(一)]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105268443</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105268443</guid><author>u010978040</author><pubDate>Thu, 02 Apr 2020 13:55:38 +0800</pubDate><description><![CDATA[Spring事务**@EnableTransactionManagement**注解源码解析
首先在配置类中添加开启事务的注解@EnableTransactionManagement，
事务开始是通过@EnableTransactionManagement注解启用的，所以此次源码解析也从此注解开始
@Target({ElementType.TYPE})
@Retention(RetentionPo...]]></description><category></category></item><item><title><![CDATA[拒绝需求专用表情包,拿走不谢]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105263854</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105263854</guid><author>u010978040</author><pubDate>Thu, 02 Apr 2020 10:31:09 +0800</pubDate><description><![CDATA[眼看就要迎来3天大长假了

你想不想安静休假？

诺，有人给你排需求

你就甩他表情包

⬇





⬇



































































自从用上这套表情包

妈妈再也不怕我被Brief砸晕了呢
...]]></description><category></category></item><item><title><![CDATA[Spring源码解析-@Import注解源码解析]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105251162</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105251162</guid><author>u010978040</author><pubDate>Wed, 01 Apr 2020 17:35:19 +0800</pubDate><description><![CDATA[Spring 3.0之前，创建Bean可以通过xml配置文件与扫描特定包下面的类来将类注入到Spring IOC容器内。而在Spring 3.0之后提供了JavaConfig的方式，也就是将IOC容器里Bean的元信息以java代码的方式进行描述。我们可以通过@Configuration与@Bean这两个注解配合使用来将原来配置在xml文件里的bean通过java代码的方式进行描述
@Import...]]></description><category></category></item><item><title><![CDATA[spring源码解析-基于注解的SpringAOP源码解析（二）]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105217848</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105217848</guid><author>u010978040</author><pubDate>Tue, 31 Mar 2020 11:04:18 +0800</pubDate><description><![CDATA[在[Spring源码解析之基于注解的SpringAOP源码解析（一）]中，我们搭建了SpringAOP源码分析的环境，介绍了@EnableAspectJAutoProxy注解和postProcessBeforeInstantiation方法是如何加载所有增强的。本篇文章则将描述一下AOP中剩余的实现逻辑
postProcessAfterInitialization
这个方法是在bean实例化之后调...]]></description><category></category></item><item><title><![CDATA[spring源码解析-基于注解的SpringAOP源码解析（一）]]></title><link>https://blog.youkuaiyun.com/u010978040/article/details/105217814</link><guid>https://blog.youkuaiyun.com/u010978040/article/details/105217814</guid><author>u010978040</author><pubDate>Tue, 31 Mar 2020 11:03:03 +0800</pubDate><description><![CDATA[本文分析Spring的AOP模块的整体流程，分析过程需要使用一个简单的demo工程来启动Spring。
https://github.com/cjinjun/spring-framework-demo

写一个简单的接口和实现类，跟IOC源码解析那几篇文章用的同一个工程，
public interface IOCService {
    public String helloIoc();
}
...]]></description><category></category></item></channel></rss>