<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ai_0922的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ai_0922</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ai_0922]]></copyright><item><title><![CDATA[MySQL存储引擎特性解析]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124237381</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124237381</guid><author>ai_0922</author><pubDate>Sun, 17 Apr 2022 21:57:56 +0800</pubDate><description><![CDATA[MySQL存储引擎特性解析
关于
各存储引擎之间的对比：官方介绍
InnoDB存储引擎的详细介绍：官方介绍

注意：此处官方介绍的MySQL版本为5.7，不同版本的介绍可能存在差异，可自行去官方网站上寻找对应的地址

存储引擎

InnoDB
MyISAM
Memory
CSV
Archive
NDB

存储引擎特性

InnoDB

支持事务（ACID）、外键、表级别和行级别的锁、读写的并发、写不阻塞读（MVCC），数据的完整性和一致性更高，用一种索引特殊存储方式，该方式可以减少IO次数，从而达到提升查询]]></description><category></category></item><item><title><![CDATA[Redis的简介以及安装教程]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124220084</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124220084</guid><author>ai_0922</author><pubDate>Sat, 16 Apr 2022 21:07:59 +0800</pubDate><description><![CDATA[Redis的简介以及安装教程
简介

Redis 是完全开源的，遵守 BSD 协议，是一个高性能的 key-value 数据库

特点

Redis支持数据持久化，可以将内存中的数据存入到磁盘中
Redis不仅支持简单的key-value类型的数据，同时还提供了list，set，zset，hash等数据结构的存储
Redis支持master-slave模式的数据备份

安装教程

https://redis.io  官网下载
tar -zxvf  tar包名
cd 到解压目录中，执行make；
tcl 、g]]></description><category></category></item><item><title><![CDATA[MySQL优化解析]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124217741</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124217741</guid><author>ai_0922</author><pubDate>Sat, 16 Apr 2022 20:39:15 +0800</pubDate><description><![CDATA[MySQL优化解析
前言

MySQL

怎样优化？
分析：局限MySQL方面有
硬件与操作系统
MySQL配置


增加MySQL服务器可用连接数
show variables like 'MAX_CONNECTIONS';  --- 查看连接数，默认151，可以设置成16384(2^14)



减少客户端可用连接数

连接池
设置批量操作最大传输数据大小

调节MySQL的配置文件my.ini中的 max_allowed_socket  参数大小


设置第三方缓存模块

使用redis等第三方中间件]]></description><category></category></item><item><title><![CDATA[MySQL常见的索引及创建方式]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124219738</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124219738</guid><author>ai_0922</author><pubDate>Sat, 16 Apr 2022 20:33:04 +0800</pubDate><description><![CDATA[MySQL常见的索引及创建方式
普通索引
CREATE INDEX indexName ON tableName(columnName(length)); 
ALTER table tableName INDEX indexName(columnName); 
CREATE TABLE mytable(  
ID INT NOT NULL,   
username VARCHAR(16) NOT NULL,  
INDEX [indexName] (username(length))  
);  

主键索]]></description><category></category></item><item><title><![CDATA[java中logback在项目中的配置]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124196614</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124196614</guid><author>ai_0922</author><pubDate>Fri, 15 Apr 2022 15:52:52 +0800</pubDate><description><![CDATA[Logback配置
配置方式
application.yml
logging:
  pattern:
    console: "%d - %msg%n"     #只输出日期和信息
  path: /var/log/tomcat/      #日志输出路径
  file: /var/log/tomcat/sell.log  #日志文件名称
  level:
    com.imooc.LoggerTest: debug  #默认日志级别

logback-spring.xml
&lt;?xml versi]]></description><category></category></item><item><title><![CDATA[工厂方法模式详解]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124127913</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124127913</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 16:46:07 +0800</pubDate><description><![CDATA[工厂方法模式详解
​        

工厂方法模式
定义

工厂方法模式是指定义一个创建对象的接口，但让实现这个接口的类来决定实例化哪个类，工厂方法让类的实例化推迟到子类中进行。

适用场景

创建对象需要大量重复的代码
客户端（应用层）不依赖于产品类实例如何被创建、实现等细节
一个类通过其子类来指定创建哪个对象

缺点

类的个数容易过多，增加复杂度
增加的系统的抽象性和理解难度

实践案例

以生产手机为例：
工厂方法主要解决产品扩展的问题，在简单工厂中，随着产品的丰富，如果每个课程的创建逻辑有区别的]]></description><category></category></item><item><title><![CDATA[简单工厂模式详解]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124127144</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124127144</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 16:36:45 +0800</pubDate><description><![CDATA[简单工厂模式详解
​        

简单工厂模式
定义

简单工厂模式是指由一个工厂对象决定创建出哪一种产品类的实例，但它不属于GOF23中设计模式。

适用场景

适用于工厂类负责创建的对象较少的场景，且客户端只需要传入工厂类的参数，对于如何创建对象的逻辑不需要关系。

缺点

工厂类的职责相对过重，不易于扩展过于复杂的产品结构

实践案例

以生产手机为例

public interface IPhone {
    //生产
    void produce();
}

public class ]]></description><category></category></item><item><title><![CDATA[设计模式简介]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124127011</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124127011</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 16:15:52 +0800</pubDate><description><![CDATA[设计模式
简介

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。
这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

经典框架中的设计模式应用

Spring

IOC
AOP
MVC
JDBC



常见的设计模式

工厂模式
单例模式
代理模式
装饰器模式
委派模式
适配器模式
模板方法模式
观察者模式
策略模式
原型模式

常见的设计模式分类




类型
名称
英文




创建型模式
工厂模式
Factory Pattern



单例模式
Single]]></description><category></category></item><item><title><![CDATA[Composie&Aggregate Reuse Principle 合成复用原则]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124126554</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124126554</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 16:06:13 +0800</pubDate><description><![CDATA[Composie&amp;Aggregate Reuse Principle 合成复用原则
简介

定义：尽量使用对象组合、聚合、而不是继承关系达到软件复用的目的

主要核心思想

尽量使用对象组合、聚合，而不使用继承关系达到代码复用的目的。
聚合has-a和组合contains-a

优点

可以使系统更加灵活，降低类与类之间的耦合度
一个类的变化对其他类造成的影响相对较少

实践案例

数据库连接为例

public abstract class DBConnection {
    public ab]]></description><category></category></item><item><title><![CDATA[Liskov Substitution Principle 里氏替换原则]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124126384</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124126384</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 16:02:04 +0800</pubDate><description><![CDATA[Liskov Substitution Principle 里氏替换原则
简介

定义：如果对每一个类型为T1的对象o1，都有类型为T2的对象o2，使得以T1定义的所有程序P在所有的对象o1都替换成o2时，程序P的行为没有发生变化，那么类型T2是类型T1的子类型，
定义扩展：一个软件实体如果使用一个父类的话，那一定适用于其子类，所有引用父类的地方必须能透明地使用其子类的对象，子类对象能够替代父类对象，而程序逻辑不变。

主要核心思想

强调只和朋友交流，不和陌生人说话
朋友：出现在成员变量、方法的输入、输出]]></description><category></category></item><item><title><![CDATA[Law of Demeter 迪米特法则]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124126012</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124126012</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 15:51:45 +0800</pubDate><description><![CDATA[Law of Demeter 迪米特法则
简介

定义：一个对象应该对其他对象保持最少的了解。又叫最少知道原则

主要核心思想

强调只和朋友交流，不和陌生人说话
朋友：出现在成员变量、方法的输入、输出参数中的类称为成员朋友类，而出现在方法体内部的类不属于朋友类。

优点

降低类之间的耦合度

实践案例

领导部署任务给员工为例

public class Course {
    Integer courseId;
    String courseName;
}

public class Emplo]]></description><category></category></item><item><title><![CDATA[Interface Segregation Principle 接口隔离原则]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124125833</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124125833</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 15:47:40 +0800</pubDate><description><![CDATA[Interface Segregation Principle 接口隔离原则
简介

定义：用多个专门的接口，而不是使用单一的总接口，客户端不应该依赖它不需要的接口

主要核心思想

尽量保证接口的纯洁性，客户端不应该依赖不需要的接口

优点

符合我们常说的高内聚、低耦合的设计思想
使得类具有很好的可读性、可扩展性和可维护性

实践案例

动物行为为例

V1：
public interface IAnimal {

    void eat();
    void fly();
    void swi]]></description><category></category></item><item><title><![CDATA[Simple Responsibility Principle 单一职责原则]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124125530</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124125530</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 15:38:11 +0800</pubDate><description><![CDATA[Simple Responsibility Principle 单一职责原则
简介

定义：不要存在多余一个导致类变更的原因

主要核心思想

强调一个类、接口、方法只负责一项职责

优点

降低类的复杂度
提高类的可读性
提高系统的可维护性
降低变更引起的风险

实践案例

课程为例

public interface ICourse {

    String getCourseName();
    byte[] getCourseVideo();

    void studyCourse();
 ]]></description><category></category></item><item><title><![CDATA[Dependence Inversion Principle 依赖倒置原则]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124125337</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124125337</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 15:34:32 +0800</pubDate><description><![CDATA[Dependence Inversion Principle 依赖倒置原则
简介

定义：高层模块不应该依赖底层模块，二者都应该依赖其抽象

主要核心思想

强调抽象不应该依赖细节；细节应该依赖抽象，及针对接口编程，不要针对实现编程

优点

可以减少类间的耦合性、提高系统稳定性
提高代码可读性和可维护性
可降低修改程序所造成的风险

实践案例

手机为例：618活动中Aaron购买了多部品牌手机

public interface IPhone {
    void buy();
}

public cl]]></description><category></category></item><item><title><![CDATA[Open-Closed Principle 开闭原则]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124125155</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124125155</guid><author>ai_0922</author><pubDate>Tue, 12 Apr 2022 15:27:38 +0800</pubDate><description><![CDATA[Open-Closed Principle 开闭原则
简介

定义：一个软件实体如类、模块和函数应该对扩展开放，对修改关闭

强调用抽象构建框架，用实现扩展细节
优点：提高软件系统的可复用性及可维护性

手机为例：手机售价618促销

public interface IPhone {
    Integer getId();
    String getModel();
    String getSpecification();
    Double getPrice();
}

public clas]]></description><category></category></item><item><title><![CDATA[API网关Kong 简介以及安装教程]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/124099312</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/124099312</guid><author>ai_0922</author><pubDate>Mon, 11 Apr 2022 15:16:01 +0800</pubDate><description><![CDATA[Kong
简介

Kong基于OpenResty，是一个云原生、快速、可扩展、分布式的流量网关（门户网关）

特性

提供了多样化的认证层来保护API
可对出入流量进行管控
提供了可视化的流程检查、监控分析API
能够及时得转换请求和响应
提供log解决方案
可通过API Serverless函数

安装

Kong不支持windows，所以本地如果想安装只能用虚拟机，支持的安装方式https://konghq.com/install/
简单提一下，这里我是用VirtualBox+Vagrant虚拟化技术，]]></description><category></category></item><item><title><![CDATA[Kong 运行报 Error: don‘t know how to auth: 10]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/120864397</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/120864397</guid><author>ai_0922</author><pubDate>Wed, 20 Oct 2021 13:51:05 +0800</pubDate><description><![CDATA[Kong 运行报 Error: don’t know how to auth: 10
环境背景
docker、kong 2.6.0、postgresql 14.0
问题产生过程
按照docker镜像中说明，安装kong后再安装postgreSQL，将两者关联起来，postgreSQL作为kong的应用数据库，启动kong，报如上错误
问题解决
初步看了一下，有可能跟权限有关，但也无从下手，百度了一下stackoverflow有类似的问题，具体问题原因是根据版本有关系，postgreSQL高版本都会有这个问题]]></description><category></category></item><item><title><![CDATA[Spring Boot 注解驱动解析]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/120383237</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/120383237</guid><author>ai_0922</author><pubDate>Sun, 19 Sep 2021 18:51:08 +0800</pubDate><description><![CDATA[Spring Boot 的注解驱动
Spring的动态Bean的装载

Spring引擎如何知道配置类在哪里？
标准/规范：classpath:META-INF/spring.factories文件
如何实现批量的扫描?
ImportSelector：DeferredImportSelector
Registator：ImportBeanDefinitionRegistrar

这里以 ImportSelector 为例：
public class DefineImportSelector implemen]]></description><category></category></item><item><title><![CDATA[Docker Image 基础使用命令]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/120070640</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/120070640</guid><author>ai_0922</author><pubDate>Thu, 02 Sep 2021 22:01:57 +0800</pubDate><description><![CDATA[Docker Image（镜像）
Docker官方存储Image（镜像）的地址：https://hub.docker.com/
Docker Image的基础使用


查看本地镜像：docker images


拉取镜像：docker pull imageName ，比如 docker pull hello-world

拉取不同版本镜像：在官方镜像地址中找到你要下载的镜像查看不同版本




删除镜像：docker rmi -f imageName，比如 docker rmi -f hello-worl]]></description><category></category></item><item><title><![CDATA[docker push 到阿里云镜像仓库过程中发生了 denied: requested access to the resource is denied 错误]]></title><link>https://blog.youkuaiyun.com/ai_0922/article/details/106457669</link><guid>https://blog.youkuaiyun.com/ai_0922/article/details/106457669</guid><author>ai_0922</author><pubDate>Sun, 31 May 2020 17:10:20 +0800</pubDate><description><![CDATA[docker push 到阿里云镜像仓库过程中发生了 denied: requested access to the resource is denied 错误
问题发生环境

Vagrant 2.2.6 + VirtualBox 6.0.14
docker 19.03.9

问题发生情况

本人在学习docker 过程，想通过push 命令将本地的image上传到阿里云镜像仓库中去
在执行 sudo docker push registry.cn-hangzhou.aliyuncs.com/itcrazy]]></description><category></category></item></channel></rss>