<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JayCoding]]></title><description><![CDATA[记录点点滴滴]]></description><link>https://blog.youkuaiyun.com/zn0813</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zn0813]]></copyright><item><title><![CDATA[explain各列解读]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/129092085</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/129092085</guid><author>zn0813</author><pubDate>Fri, 17 Feb 2023 22:42:04 +0800</pubDate><description><![CDATA[• EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况• EXPLAIN不考虑各种Cache• EXPLAIN不能显示MySQL在执行查询时所作的优化工作• 部分统计信息是估算的，并非精确值• EXPALIN只能解释SELECT操作，其他操作要重写为SELECT后查看执行计划。]]></description><category></category></item><item><title><![CDATA[Jvm垃圾收集算法及垃圾收集器]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/128898017</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/128898017</guid><author>zn0813</author><pubDate>Mon, 06 Feb 2023 11:58:39 +0800</pubDate><description><![CDATA[当前虚拟机的垃圾收集都采用分代收集算法，这种算法没有什么新的思想，只是根据对象存活周期的不同将内存分为几 块。一般将java堆分为新生代和老年代，这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中，每次收集都会有大量对象(近99%)死去，所以可以选择复制算法，只需要付出少量对象的复制成本就可 以完成每次垃圾收集。而老年代的对象存活几率是比较高的，而且没有额外的空间对它进行分配担保，所以我们必须选 择“标记-清除”或“标记-整理”算法进行垃圾收集。]]></description><category></category></item><item><title><![CDATA[InnoDB引擎底层原理（上）]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/128738776</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/128738776</guid><author>zn0813</author><pubDate>Thu, 19 Jan 2023 22:54:29 +0800</pubDate><description><![CDATA[InnoDB引擎底层原理及Mysql8.0新增特性详解]]></description><category></category></item><item><title><![CDATA[数据结构与算法之----动态规划]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/128588358</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/128588358</guid><author>zn0813</author><pubDate>Sat, 07 Jan 2023 11:11:30 +0800</pubDate><description><![CDATA[动态规划和贪心算法类似，但是又有所区别。贪心算法是由局部最优解，推导出全局最优解。动态规划也是局部最优解，但是无法通过局部最优解推导全局最优解。]]></description><category></category></item><item><title><![CDATA[MySQL索引原理以及介绍]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/128576825</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/128576825</guid><author>zn0813</author><pubDate>Fri, 06 Jan 2023 12:37:59 +0800</pubDate><description><![CDATA[索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B 树， B+树和 Hash。索引的作用就相当于书的目录。打个比方: 我们在查字典的时候，如果没有目录，那我们就只能一页一页的去找我们需要查的那个字，速度很慢。如果有目录了，我们只需要先去目录里查找字的位置，然后直接翻到那一页就行了。]]></description><category></category></item><item><title><![CDATA[Springboot整合gRPC实践]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/108350888</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/108350888</guid><author>zn0813</author><pubDate>Tue, 01 Sep 2020 21:39:41 +0800</pubDate><description><![CDATA[Springboot整合gRPC
最近公司其他服务为go语言开发，这边Java服务需要进行交互，考虑到效率和系统发展的问题，因此使用了gRPC来作为rpc框架。由于基本是第一次使用Springboot集成gRPc，经过一系列的踩坑，终于完成了项目的开发，这边记录下整合方式。
gRPC简介
gRPC是谷歌开源的基于go语言的一个现代的开源高性能RPC框架，可以在任何环境中运行。它可以有效地连接数据中心内和跨数据中心的服务，并提供可插拔的支持，以实现负载平衡，跟踪，健康检查和身份验证。它还适用于分布式计算的最后]]></description><category></category></item><item><title><![CDATA[策略模式(Strategy Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94904462</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94904462</guid><author>zn0813</author><pubDate>Sat, 06 Jul 2019 21:59:54 +0800</pubDate><description><![CDATA[整体的替换算法
1.基本介绍
无论什么程序,其目的都是为了解决问题,而为了解决问题,我们需要编写特定算法,使用策略模式可以整体的替换算法的实现部分,即算法的具体实现不依赖于业务类,将俩者分离开,降低耦合,可以很轻松使用不同算法,或者修改算法。

2.具体实例
Hand类:
手势类,被其他类调用,并非设计模式中角色。
public class Hand {
	public static final ...]]></description><category></category></item><item><title><![CDATA[访问者模式(Visitor Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94901290</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94901290</guid><author>zn0813</author><pubDate>Sat, 06 Jul 2019 21:35:52 +0800</pubDate><description><![CDATA[访问数据结构并处理数据
数据结构中保存着许多的元素,在对这些元素处理的时候,将处理代码放入数据结构中,当每次增加或者修改处理方法时,都必须将数据结构的类进行修改,因此,我们需要用到访问者模式,数据结构和数据处理被分离出来,创建一个访问者专门来访问数据结构中的元素,把元素的处理交给访问者类,这样增加或修改时不需要改动数据结构。

1.实例
使用访问者模式来访问文件夹模式的数据结构
Vistitor类...]]></description><category></category></item><item><title><![CDATA[责任链模式(Chain of Responsibility Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94892261</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94892261</guid><author>zn0813</author><pubDate>Sat, 06 Jul 2019 20:13:12 +0800</pubDate><description><![CDATA[推卸责任
1.模式介绍
当外部请求程序进行某个处理,但程序暂时无法直接决定由哪个对象负责处理时,就需要推卸责任,可将多个对象组成一条职责链,然后按照他们在职责链上的顺序一个一个找出到底应该谁来负责处理。
可以弱化请求方和处理方之间的关联关系,让双方各自成为都可以独立复用的组件,程序还可以应对其他需求,根据处理的对象而变化。

2.具体实例
Trouble类
/**
 * @author Jay
 ...]]></description><category></category></item><item><title><![CDATA[中介者模式(Mediator Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94887737</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94887737</guid><author>zn0813</author><pubDate>Sat, 06 Jul 2019 19:31:08 +0800</pubDate><description><![CDATA[只有一个仲裁者
1.模式介绍
用一个中介对象封装一系列的对象交互，中介者使各对象不需要显示地相互作用，从而使其耦合松散，而且可以独立的改变它们之间的交互。
使用场景:
中介者模式适合用于多个对象之间紧密耦合的情况，紧密耦合的标准是：在类图中出现了蜘蛛网状结构。这有利于把蜘蛛网状结构梳理为星型结构，使原本复杂混乱的关系变得清晰简单。
实际使用:
中介者模式也叫调停者模式，一个对象要与N个对象交流，就...]]></description><category></category></item><item><title><![CDATA[备忘录模式(Memento Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94884688</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94884688</guid><author>zn0813</author><pubDate>Sat, 06 Jul 2019 19:01:01 +0800</pubDate><description><![CDATA[保存对象状态
1.基本介绍
为了使软件的使用更加人性化，对于误操作，我们需要提供一种类似“后悔药”的机制，让软件系统可以回到误操作前的状态，因此需要保存用户每一次操作时系统的状态，一旦出现误操作，可以把存储的历史状态取出即可回到之前的状态。
在应用软件的开发过程中，很多时候我们都需要记录一个对象的内部状态。
在具体实现过程中，为了允许用户取消不确定的操作或从错误中恢复过来，需要实现备份点和撤销机制...]]></description><category></category></item><item><title><![CDATA[命令模式(Command Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94881419</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94881419</guid><author>zn0813</author><pubDate>Sat, 06 Jul 2019 18:29:42 +0800</pubDate><description><![CDATA[命令也是类
1.基本介绍
将来自客户端的请求传入一个对象，从而使你可用不同的请求对客户进行参数化。用于==“行为请求者”与“行为实现者”解耦==，可实现二者之间的松耦合，以便适应变化。分离变化与不变的因素。
在面向对象的程序设计中，一个对象调用另一个对象，一般情况下的调用过程是：创建目标对象实例；设置调用参数；调用目标对象的方法。
但在有些情况下有必要使用一个专门的类对这种调用过程加以封装，我们把...]]></description><category></category></item><item><title><![CDATA[解释器模式(Interpreter Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94779841</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94779841</guid><author>zn0813</author><pubDate>Fri, 05 Jul 2019 23:33:47 +0800</pubDate><description><![CDATA[语法规则也是类
1.基本介绍
给定一个语言，定义它的文法的一种表示，并定义一个解释器，这个解释器使用该表示来解释语言中的句子

类的一览表



2.具体实现
Node抽象类
/**
 * @author Jay
 * @date 2019/7/5 23:00
 * @description 节点类
 */
public abstract class Node {
    /**
     * 解...]]></description><category></category></item><item><title><![CDATA[抽象工厂模式(Abstract Factory Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94667306</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94667306</guid><author>zn0813</author><pubDate>Thu, 04 Jul 2019 23:31:12 +0800</pubDate><description><![CDATA[将关联零件组装成产品
1.基本介绍
抽象工厂是工厂方法的扩展,工厂方法一般只能生成一种实例,而抽象工厂可以生成多种实例.

2.代码实现
Factory:抽象工厂接口
/**
 * @author Jay
 * @date 2019/7/4 22:26
 * @description 抽象方法
 * 抽象工厂可以生产多个抽象产品
 */
public interface IFactory {
  ...]]></description><category></category></item><item><title><![CDATA[享元模式(Flyweight Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94416235</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94416235</guid><author>zn0813</author><pubDate>Tue, 02 Jul 2019 00:43:16 +0800</pubDate><description><![CDATA[共享对象,避免浪费
1.基本介绍
享元模式适用于需要new大量对象的情况。通过共享实例的方式避免new出实例，浪费资源。
在使用享元模式的时候要注意，当共享实例修改时，将会影响使用该实例的多处地方，所以使用前需要斟酌，什么类需要使用享元模式。

2.实现实例
BigChar类
/**
 * @author Jay
 * @date 2019/7/2 0:06
 * @description 大字符...]]></description><category></category></item><item><title><![CDATA[代理模式(Proxy Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94229960</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94229960</guid><author>zn0813</author><pubDate>Sun, 30 Jun 2019 00:12:19 +0800</pubDate><description><![CDATA[只在必要时生成实例
代理模式可以简单的看作是有个中间人代替你进行工作，当中间人完成不了时，才会由你出马完成。

1.具体实例
Printable接口
/**
 * @author Jay
 * @date 2019/6/29 23:40
 * @description 打印接口
 */
public interface Printable {

    /**
     * 设置名字
     *...]]></description><category></category></item><item><title><![CDATA[外观模式(Facade Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/94226405</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/94226405</guid><author>zn0813</author><pubDate>Sat, 29 Jun 2019 23:37:37 +0800</pubDate><description><![CDATA[简单窗口
外观模式是一种使用频率非常高的结构型设计模式，它通过引入一个外观角色来简化客户端与子系统之间的交互，为复杂的子系统调用提供一个统一的入口，降低子系统与客户端的耦合度，且客户端调用非常方便。

1.外观模式概述
在软件开发中，(Facade)来实现该功能，外观类充当了软件系统中的“服务员”，它为多个业务类的调用提供了一个统一的入口，简化了类与类之间的交互。在外观模式中，那些需要交互的业务类...]]></description><category></category></item><item><title><![CDATA[构建者模式(Builder Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/93672206</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/93672206</guid><author>zn0813</author><pubDate>Tue, 25 Jun 2019 23:39:25 +0800</pubDate><description><![CDATA[组装复杂的实例
1.基本介绍
对于组件复杂的实例时,很难一气呵成,而且实例形式不定,会经常性变化,这时候就需要创建组成实例的各个部分,然后根据具体需求,分阶段将其组装起来,如同活字印刷术,或者建造建筑。

2.具体实现
Builder类:
/**
 * @author Jay
 * @date 2019/6/25 22:41
 * @description 声明编写文档方法的抽象类
 */
pub...]]></description><category></category></item><item><title><![CDATA[装饰者模式(Decorator Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/93541699</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/93541699</guid><author>zn0813</author><pubDate>Mon, 24 Jun 2019 23:32:52 +0800</pubDate><description><![CDATA[装饰边框与被装饰物的一致性
1.基本介绍
有一个原型程序作为被装饰者,和装饰者实现同一接口,装饰者则可以去修改加强来自用接口相同的方法,这样不断的为对象添加装饰物的设计模式为装饰者设计模式。
2.具体实例
Display类
抽象类或者接口,供装饰者和被装饰者去实现,这样装饰者就可以通过接口去装饰对象。
/**
 * @author Jay
 * @date 2019/6/24 22:33
 * @...]]></description><category></category></item><item><title><![CDATA[迭代器模式(Iterator Pattern)]]></title><link>https://blog.youkuaiyun.com/zn0813/article/details/93407864</link><guid>https://blog.youkuaiyun.com/zn0813/article/details/93407864</guid><author>zn0813</author><pubDate>Sun, 23 Jun 2019 21:03:30 +0800</pubDate><description><![CDATA[一个一个遍历
1.模式介绍
迭代器模式（Iterator Pattern）又称为游标（Cursor）模式，是行为型设计模式之一。
源于对容器的访问，比如java中的list，Map，数组等，我们知道对容器对象的访问必然是多种多样的，所以我们把遍历的方法封装在容器中，或者不提供遍历方法。

如果我们将遍历的方法封装到容器中，那么对于容器类来说就承担了过多的功能，容器类不仅要维护自身内部的数据元素而且...]]></description><category></category></item></channel></rss>