<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[caijunsen的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/caijunsen</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; caijunsen]]></copyright><item><title><![CDATA[RabbitMQ(一) - RabbitMQ的快速入门]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/116209406</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/116209406</guid><author>caijunsen</author><pubDate>Thu, 24 Mar 2022 18:02:12 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/weixin_38305440/article/details/102810522?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161951893516780255297437%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&amp;request_id=16195189351678025529743]]></description><category></category></item><item><title><![CDATA[MySQL 事务的隔离级别]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123625002</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123625002</guid><author>caijunsen</author><pubDate>Mon, 21 Mar 2022 11:04:44 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/coco3600/article/details/100508427?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164779169616780366545233%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&amp;request_id=164779169616780366545233&amp;biz_id=0&amp]]></description><category></category></item><item><title><![CDATA[可视化算法网站]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123256861</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123256861</guid><author>caijunsen</author><pubDate>Thu, 03 Mar 2022 21:00:00 +0800</pubDate><description><![CDATA[可视化算法网站]]></description><category></category></item><item><title><![CDATA[9-设计模式-桥接模式]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123192748</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123192748</guid><author>caijunsen</author><pubDate>Tue, 01 Mar 2022 07:00:00 +0800</pubDate><description><![CDATA[一、什么是桥接模式
1）桥接模式(Bridge模式)是指：将实现与抽象放在两个不同的类层次中，使两个层次可以独立改变。
2）是一种结构型设计模式
3）Bridge模式基于类的最小设计原则，通过使用封装、聚合及继承等行为让不同 的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现 (Implementation)分离开来，从而可以保持各部分的独立性以及应对他们的功能 扩展
UML图

原理类图说明：
1）Client类：桥接模式的调用者
2）抽象类(Abstraction) :维护了 ]]></description><category></category></item><item><title><![CDATA[8-设计模式-适配器模式]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123191554</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123191554</guid><author>caijunsen</author><pubDate>Tue, 01 Mar 2022 07:00:00 +0800</pubDate><description><![CDATA[设计模式-适配器模式]]></description><category></category></item><item><title><![CDATA[7-设计模式-建造者模式]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123169816</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123169816</guid><author>caijunsen</author><pubDate>Mon, 28 Feb 2022 06:00:00 +0800</pubDate><description><![CDATA[设计模式-建造者模式]]></description><category></category></item><item><title><![CDATA[6-设计模式-抽象工厂模式]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123166396</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123166396</guid><author>caijunsen</author><pubDate>Sun, 27 Feb 2022 21:00:00 +0800</pubDate><description><![CDATA[抽象工厂模式]]></description><category></category></item><item><title><![CDATA[5-设计模式-工厂方法模式]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123153139</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123153139</guid><author>caijunsen</author><pubDate>Sun, 27 Feb 2022 12:00:00 +0800</pubDate><description><![CDATA[工厂方法模式]]></description><category></category></item><item><title><![CDATA[4-设计模式-简单工厂模式]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123143178</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123143178</guid><author>caijunsen</author><pubDate>Sat, 26 Feb 2022 22:00:00 +0800</pubDate><description><![CDATA[一、什么是简单工厂
1）简单工厂模式是属于创建型模式，是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式
2）简单工厂模式：定义了一个创建对象的类，由这个类来封装实例化对象的行为（代码）
3）在软件开发中，当我们会用到大量的创建某种、某类或者某批对象时，就会使用工厂模式。
二、具体例子
一个披萨的项目：要便于披萨种类的扩展，要便于维护
1）披萨的种类很多（比如：GreekPizz、CheesePizz等 ）
2）披萨的制作有 prepar]]></description><category></category></item><item><title><![CDATA[3-设计模式-单例模式]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123138964</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123138964</guid><author>caijunsen</author><pubDate>Fri, 25 Feb 2022 19:02:22 +0800</pubDate><description><![CDATA[一、什么是单例模式
所谓类的单例设计模式，就是采取一定的方法保证在整个的软件系统中，对某个类 只能存在一个对象实例，并且该类只提供一个取得其对象实例的方法(静态方法)。
比如Hibernate的SessionFactory，它充当数据存储源的代理，并负责创建Session 对象。SessionFactory并不是轻量级的，一般情况下，一个项目通常只需要一个 SessionFactory就够，这是就会使用到单例模式。
二、单例设计模式八种方式

饿汉式（静态常量）
饿汉式（静态代码块）
懒汉式(线程不安全)
]]></description><category></category></item><item><title><![CDATA[1-设计模式-UML类图关系图标认识及Java代码示例]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/123114290</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/123114290</guid><author>caijunsen</author><pubDate>Thu, 24 Feb 2022 16:35:54 +0800</pubDate><description><![CDATA[详细大图：https://www.processon.com/embed/62170865e0b34d075bae8b2f
参考：https://www.cnblogs.com/haizai/archive/2020/02/28/12376166.html


]]></description><category></category></item><item><title><![CDATA[MySQL 获取祖父节点，子节点]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/122766397</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/122766397</guid><author>caijunsen</author><pubDate>Tue, 01 Feb 2022 21:41:11 +0800</pubDate><description><![CDATA[函数获取祖父节点
CREATE DEFINER=`root`@`%` FUNCTION `getDeptParentList`(`rootId` varchar(64)) RETURNS varchar(1000) CHARSET utf8
BEGIN

DECLARE nParentList VARCHAR(10000);
DECLARE nParentTemp VARCHAR(10000);

SET nParentTemp = rootId;

WHILE nParentTemp IS NOT NUL]]></description><category></category></item><item><title><![CDATA[vue前端项目启动出错处理(Syntax Error: ..\eslint\lib\cli-engine\cli-engine.js:4)]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/122710498</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/122710498</guid><author>caijunsen</author><pubDate>Wed, 26 Jan 2022 23:47:47 +0800</pubDate><description><![CDATA[背景
vue前端项目启动 npm run dev 出错
Syntax Error: D:\RuoYi-Vue\ruoyi-ui\node_modules\eslint\lib\cli-engine\cli-engine.js:421
    } catch {
            ^
 
SyntaxError: Unexpected token {
 
 
 @ multi (webpack)-dev-server/client?http://localhost:81&amp;sockPath=/so]]></description><category></category></item><item><title><![CDATA[Redis、Ehcache、Memcache之间如何选择]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/116482230</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/116482230</guid><author>caijunsen</author><pubDate>Fri, 07 May 2021 10:24:16 +0800</pubDate><description><![CDATA[Ehcache
基本介绍
EhCache 是一个纯Java的进程内缓存框架，具有快速、精干等特点，是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储，缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。
Spring 提供了对缓存功能的抽象：即允许绑定不同的缓存解决方案（如Ehcache），但本身不直接提供缓存功能的实现。]]></description><category></category></item><item><title><![CDATA[MQ(一) - 什么是MQ]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/116060867</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/116060867</guid><author>caijunsen</author><pubDate>Fri, 23 Apr 2021 17:20:39 +0800</pubDate><description><![CDATA[1. MQ 的基本概念
MQ全称 Message Queue（消息队列），是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。

2. MQ 的优劣
MQ 的优势
1. 应用解耦
降低工程间的强依赖程度，针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求，是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层，两边的处理过程都要实现这一接口，当应用发生变化时，可以独立的扩展或修改两边的处理过程，只要确保它们遵守同样的接口约束。

没有MQ的情况
比如库存系统出]]></description><category></category></item><item><title><![CDATA[JVM(六) - JVM调优]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/115691896</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/115691896</guid><author>caijunsen</author><pubDate>Fri, 16 Apr 2021 21:50:07 +0800</pubDate><description><![CDATA[前言
JVM调优主要是调整下面两个指标
停顿时间：垃圾收集器做垃圾回收中断应用执行的时间。-XX:MaxGCPauseMillis
吞吐量：垃圾收集的时间和总时间占比：1/(1+n) ，吞吐量为：1-1/(1+n)。-XX:GCTimeRation=n
GC调优步骤：

打印GC日志
Tomcat则直接加在JAVA_OPTS变量里。

 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps ‐Xloggc:./gc.log


分]]></description><category></category></item><item><title><![CDATA[JVM(五) - JVM垃圾收集器]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/115671791</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/115671791</guid><author>caijunsen</author><pubDate>Wed, 14 Apr 2021 01:27:15 +0800</pubDate><description><![CDATA[前言
在上一篇文章中，我们介绍了JVM垃圾回收算法，这些算法属于方法论，而在 JVM 中，垃圾回收的具体实现是由 垃圾回收器（Garbage Collector）负责。
在了解 垃圾回收器 之前，首先得了解一下垃圾回收器的几个名词。
并发与并行

串行（Parallel）
单线程 进行垃圾回收工作，但此时 用户线程 仍然处于 等待状态。
并发（Concurrent）
这里的并发指 用户线程 与 垃圾回收线程 交替执行。
并行（Parallel）
这里的并行指 用户线程 和多条 垃圾回收线程 分别在不同 CP]]></description><category></category></item><item><title><![CDATA[JVM(四) - JVM垃圾收集算法]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/115636547</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/115636547</guid><author>caijunsen</author><pubDate>Tue, 13 Apr 2021 16:22:02 +0800</pubDate><description><![CDATA[前言
Java内存运行时区域，其中程序计数器、虚拟机栈、本地方法栈 三个区域随线程而生，随线程而灭；栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的，因此这几个区域的内存分配和回收都具备确定性。在这几个区域内不需要过多考虑回收的问题，因为方法结束或线程结束时，内存自然就跟随着回收了。
Java堆 和 方法区 则不一样，一个接口中的多个实现类需要的内存可能不一样，一个方法中的多个分支需要的内存也可能不一样。我们只有在程序处于运行期间时才]]></description><category></category></item><item><title><![CDATA[Java进阶之计算机网络]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/115553616</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/115553616</guid><author>caijunsen</author><pubDate>Sat, 10 Apr 2021 14:39:49 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/qq_39843371/article/details/83858383


]]></description><category></category></item><item><title><![CDATA[JVM(六) - JVM性能调优监控工具]]></title><link>https://blog.youkuaiyun.com/caijunsen/article/details/115416230</link><guid>https://blog.youkuaiyun.com/caijunsen/article/details/115416230</guid><author>caijunsen</author><pubDate>Sun, 04 Apr 2021 18:45:40 +0800</pubDate><description><![CDATA[前言
在线上我们经常会遇见如下几个问题：

内存泄露；
某个进程突然 CPU 飙升；
线程死锁；
响应变慢。
如果遇到了以上这种问题，在 线下环境 可以有各种 可视化的本地工具 支持查看。但是一旦到 线上环境，就没有这么多的 本地调试工具 支持，我们该如何基于 监控工具 来进行定位问题？

我们一般会基于 数据收集 来定位问题，而数据的收集离不开 监控工具 的处理，比如：运行日志、异常堆栈、GC 日志、线程快照、堆内存快照 等。为了解决以上问题，我们常用的 JVM 性能调优监控工具 大致有：jps、jsta]]></description><category></category></item></channel></rss>