<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sunpeiv的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sunpeiv</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sunpeiv]]></copyright><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107500162</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107500162</guid><author>sunpeiv</author><pubDate>Tue, 21 Jul 2020 22:14:16 +0800</pubDate><description><![CDATA[单例模式1. 设计模式2. 单例模式2.1 饿汉模式2.1.1  静态常量2.1.2 饿汉模式（静态代码块）2.2 懒汉模式2.2.1 懒汉模式（线程不安全）2.2.2 懒汉模式（线程安全,同步方法）2.3 双检索2.4 静态内部类2.5 枚举2.6 总结
1. 设计模式
设计模式分类：（23种）

创建型模式：单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式 （5种）
结构型模式：适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式（7种）
行为型模式：模板方法模式、命令模式、访问]]></description><category></category></item><item><title><![CDATA[统一建模语言UML]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107472218</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107472218</guid><author>sunpeiv</author><pubDate>Mon, 20 Jul 2020 20:13:18 +0800</pubDate><description><![CDATA[统一建模语言1.UML1.1. 依赖关系1.2 泛化关系1.3 实现关系1.4 关联关系1.5 聚合关系1.6 组合关系2. 总结
1.UML
UML（统一建模语言）

UML提供了多种图，包括：类图、用例图、活动图、状态图等
其中，类图最核心
类图
描述类和类之间关系的图
类和类之间的关系：依赖、泛化（继承）、实现、关联、组合、聚合
符号标志
依赖：（虚线 -----&gt;）
关联： (实线 )
泛化： (实线+三角）
实现: （虚线+三角）
组合： (实心菱形)
聚合： (空心菱形)


1.1. 依]]></description><category></category></item><item><title><![CDATA[合成复用原则]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107424392</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107424392</guid><author>sunpeiv</author><pubDate>Sat, 18 Jul 2020 09:53:04 +0800</pubDate><description><![CDATA[合成复用1. 合成复用1.1 案例1.2  总结
1. 合成复用

尽量使用组合聚合，而不是继承

1.1 案例

如果我们想让类B使用类A中的方法，

B继承A： 强耦合，不推荐
B依赖A:    低耦合，推荐
B聚合A:    低耦合，推荐
B组合A:    低耦合，推荐

1.2  总结

面向抽象编程
尽量降低耦合


...]]></description><category></category></item><item><title><![CDATA[迪米特法则]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107424350</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107424350</guid><author>sunpeiv</author><pubDate>Sat, 18 Jul 2020 09:49:49 +0800</pubDate><description><![CDATA[迪米特法则1. 迪米特法则1.1 案例1.2 总结
1. 迪米特法则
迪米特法则(Demeter Principle)：

一个对象应该对其他对象保持最少的了解
类与类关系越密切，耦合度越大
迪米特法则又叫最少知道原则
迪米特法则还有个更简单的定义：只与直接朋友通信
直接朋友：每个对象都会与其他对象有耦合关系，只要两个对象之间有耦合关系，我们就说这两个对象之间是朋友关系。耦合的方式很多，依赖，关联，组合，聚合等。其中，我们称出现成员变量，方法参数，方法返回值中的类为直接的朋友，而出现在局部变量中的类不是直接]]></description><category></category></item><item><title><![CDATA[开闭原则]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107424341</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107424341</guid><author>sunpeiv</author><pubDate>Sat, 18 Jul 2020 09:47:04 +0800</pubDate><description><![CDATA[开闭原则1. 开闭原则1.1 案例1.2 总结
1. 开闭原则
开闭原则(Open Close Principle):

开闭原则是编程中最基础、最重要的设计原则
一个软件实体如类，模块和函数应该对扩展开放(对提供方)，对修改关闭(对使用方)。用抽象构建框架，用实现扩展细节。
当软件需要变化时，尽量通过扩展软件实体的行为来实现变化，而不是通过修改已有的代码来实现变化。
面向接口编程

1.1 案例

代码

public class OpenClosePrinceOne {
    public stati]]></description><category></category></item><item><title><![CDATA[里氏替换原则]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107424253</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107424253</guid><author>sunpeiv</author><pubDate>Sat, 18 Jul 2020 09:43:58 +0800</pubDate><description><![CDATA[里氏替换原则1.里氏替换原则1.2 案例1.3 总结
1.里氏替换原则
里氏替换原则（Liskov Substitution Principle）

继承虽然允许子类重写继承来的方法，但是如果子类随意修改继承的方法，就会对整个继承体系造成破坏。
继承在给程序设计带来便利的同时，也带来了弊端。比如一个类被其他的类所继承，当这个类需要修改时，必须考虑到所有的子类，并且父类修改后，所有涉及到子类的功能都有可能产生故障
里氏替换原则（如何正确使用继承）

1.2 案例

代码

 public class Lisk]]></description><category></category></item><item><title><![CDATA[依赖倒置原则]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107424085</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107424085</guid><author>sunpeiv</author><pubDate>Sat, 18 Jul 2020 09:39:33 +0800</pubDate><description><![CDATA[依赖倒置原则1. 依赖倒置原则1.1 简述1.2 案例1.3 总结
1. 依赖倒置原则
1.1 简述
依赖倒置原则（Dependence Inversion Principle）

高层模块不应该依赖低层模块，二者都应该依赖其抽象
抽象不应该依赖细节，细节应该依赖抽象
依赖倒转(倒置)的中心思想是面向接口编程 
依赖倒转原则是基于这样的设计理念：相对于细节的多变性，抽象的东西要稳定的
多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中，抽象
指的是接口或抽象类，细节就是具体的实现类
使用]]></description><category></category></item><item><title><![CDATA[接口隔离原则]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107423940</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107423940</guid><author>sunpeiv</author><pubDate>Sat, 18 Jul 2020 09:27:28 +0800</pubDate><description><![CDATA[目录

1. 接口隔离原则

1.1 案例

1.1.1 改进方案：

1.2 总结

1. 接口隔离原则

接口隔离原则（Interface Segregation Principle）
1.1 案例

类图：


代码

public class InterfaceSegregationPrincipleOne {
    public static void main(String[] args) {
        A  a = new A();
        B  b = new B();
 .]]></description><category></category></item><item><title><![CDATA[单一职责原则]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107423763</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107423763</guid><author>sunpeiv</author><pubDate>Sat, 18 Jul 2020 09:18:00 +0800</pubDate><description><![CDATA[降低类的复杂度，一个类只负责一项职责。 
提高类的可读性，可维护性 
降低职责变更引起的风险 
通常情况下，我们应当遵守单一职责原则；只有逻辑足够简单，且类中方法数量足够少时，我们才可以下沉职责在代码级违反单一职责原则，在方法级别保持单一职责原则。]]></description><category></category></item><item><title><![CDATA[大话IO]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107371575</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107371575</guid><author>sunpeiv</author><pubDate>Wed, 15 Jul 2020 22:16:06 +0800</pubDate><description><![CDATA[大话IO1. 基础知识1.1 一次网络IO1.1.1  网络IO流程1.1.2  什么是DMA?1.1.3  CPU如何知道接收数据？1.2  CPU调度1.2.1 阻塞为什么不消耗CPU?1.2.1.1 工作队列1.2.1.2 等待队列2.BIO2.1  简介下什么是BIO?2.2  什么是C10K问题？2.3  BIO代码示范2.4  BIO存在的问题3.1  简介下什么是NIO?3.2 NIO核心3.2.1 通道3.2.2 缓冲区3.2.2.1 Buffer简介3.2.2.2 缓冲区分类3.2 如何提]]></description><category></category></item><item><title><![CDATA[大话synchronized]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/107347242</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/107347242</guid><author>sunpeiv</author><pubDate>Tue, 14 Jul 2020 20:51:19 +0800</pubDate><description><![CDATA[一.初始synchronized

 1.谈谈什么是synchronized?

   




]]></description><category></category></item><item><title><![CDATA[缓存云]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/103980876</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/103980876</guid><author>sunpeiv</author><pubDate>Tue, 14 Jan 2020 23:23:44 +0800</pubDate><description><![CDATA[目录

1.缓存云

1.1 简介

1.2 功能设计

1.3 架构设计

1.3.1 Zookeeper

1.3.2 InfluxDB

1.3.3 Mysql

1.3.4 Client

1.3.5 Ruby脚本



1.缓存云

1.1 简介

    本人毕业后在北京一家互联网金融公司工作，一个偶然的机会接手了公司的缓存云系统；通过一段时间的运维开发，对缓存云管理系统有了...]]></description><category></category></item><item><title><![CDATA[初识Mycat(上)]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/103812443</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/103812443</guid><author>sunpeiv</author><pubDate>Thu, 02 Jan 2020 22:36:22 +0800</pubDate><description><![CDATA[Mycat2.环境准备2.1  mysql2.1.1 安装mysql2.1.2 开启远程登录2.1.3 其他命令2.1.4 目录结构2.2  mycat2.2.1 安装mycat2.2.2   配置mycat2.2.3   启动mycat2.2.4   登录mycat2.3  机器名称3.读写分离3.1  一主一从3.1.1  主从复制3.1.2 修改主机配置文件3.1.3 修改从机配置文件3.1...]]></description><category></category></item><item><title><![CDATA[Redis集群]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/103605889</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/103605889</guid><author>sunpeiv</author><pubDate>Wed, 18 Dec 2019 22:32:06 +0800</pubDate><description><![CDATA[Redis集群RedisCluster1.搭建集群1.1  启动节点1.2  连接节点1.2.1  cluster meet命令的实现1.3 槽指派1.3.1 记录节点的槽指派信息1.3.2 传播节点的槽指派信息1.3.3 记录集群所有槽的指派信息1.3.4 addSlots的实现2.集群2.1 集群命令2.1.1 计算槽位2.1.2 判断槽位是否由当前节点负责2.1.3  Moved错误2.2 ...]]></description><category></category></item><item><title><![CDATA[整数集合]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/103571171</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/103571171</guid><author>sunpeiv</author><pubDate>Mon, 16 Dec 2019 22:20:15 +0800</pubDate><description><![CDATA[整数集合整数集合使用场景集合的实现升级场景升级步骤升级的好处降级总结
整数集合
针对集合中存在所有元素都为整数的情况，Redis中存在整数集合（intset);
使用场景
整数集合是Redis用于保存整数值的集合，可以保存16位，32位，64位的整数值。
①：集合中只包含整数值元素
②：集合的元素数量不多
例如：
sadd numbers  1 3 5 7 9,object ending numb...]]></description><category></category></item><item><title><![CDATA[Redis链表]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/103571019</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/103571019</guid><author>sunpeiv</author><pubDate>Mon, 16 Dec 2019 22:03:15 +0800</pubDate><description><![CDATA[链表链表链表 &amp; 链表节点总结
链表
Redis中的链表在不同情况下底层实现的数据结构是不同的，当列表的元素比较多或者列表中的元素都是比较长的字符串时，Redis就会用链表作为列表的底层实现。
链表 &amp; 链表节点

链表节点
数据结构：

// 链表节点
class listNode{
    //前置节点
    listNode  pre;
    //后置节点
    lis...]]></description><category></category></item><item><title><![CDATA[简单动态字符串]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/103570719</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/103570719</guid><author>sunpeiv</author><pubDate>Mon, 16 Dec 2019 21:39:45 +0800</pubDate><description><![CDATA[简单动态字符串字符串Redis中的字符串SDS简介SDS VS C获取字符串的长度杜绝缓冲区溢出减少字符串修改带来的内存重分配次数二进制安全兼容部分C字符串函数总结
字符串
作为内存数据库，Redis对字符串的底层数据结构做了很多优化，通过了解Redis的数据结构，我对Redis的高性能有了更深的理解。
Redis中的字符串
Redis中的字符串有两种表现形式：

C语言传统字符串(以空字符结尾的...]]></description><category></category></item><item><title><![CDATA[主从复制]]></title><link>https://blog.youkuaiyun.com/sunpeiv/article/details/103567574</link><guid>https://blog.youkuaiyun.com/sunpeiv/article/details/103567574</guid><author>sunpeiv</author><pubDate>Mon, 16 Dec 2019 18:27:12 +0800</pubDate><description><![CDATA[标题@Redis的主从模式
欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章，了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持，除了标准的Markdown编辑器功能，我们增加了如下几点新功能，帮助你用它写博客：

全新的界面...]]></description><category></category></item></channel></rss>