<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[QiYang1024的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/QiYang1024</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; QiYang1024]]></copyright><item><title><![CDATA[关于异常类的处理]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107946079</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107946079</guid><author>QiYang1024</author><pubDate>Tue, 11 Aug 2020 23:04:24 +0800</pubDate><description><![CDATA[处理异常的核心思想：逐层上抛，统一处理。
在java的lang包里面有一个类是Throwable，他的子类中有Error和Exception。
其中Error是jdk运行代码的时候发生的错误我们人为是不可以控制的。
所以关于异常我们主要研究的还是Exception。
其中异常又分为运行时期异常（RuntimeException）
和编译时期异常（CompilerException，代码编写时候就发生了异常 ）
public class Code implements Serializable {
    p]]></description><category></category></item><item><title><![CDATA[关于参数校验的几种情况以及简化if判断,进行代码的优化]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107944003</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107944003</guid><author>QiYang1024</author><pubDate>Tue, 11 Aug 2020 20:45:50 +0800</pubDate><description><![CDATA[对于前端传入的参数,或者我们查询出来的参数我们需要就参数进行参数的校验.
参数校验可以提高代码的健壮性,同时阻止不必要的查询,减少了和数据库之间的交互,一定程度上优化了数据库的性能.
我们一般的参数校验
 if (searchMap.get("image") != null &amp;&amp; !"".equals(searchMap.get("image")) {
            throw new RuntimeException();
 }

JDK1.7的方案
 if (Objects.i]]></description><category></category></item><item><title><![CDATA[springcloud之config(配置中心)和使用consul和nacos作为配置中心]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107795805</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107795805</guid><author>QiYang1024</author><pubDate>Tue, 04 Aug 2020 21:17:21 +0800</pubDate><description><![CDATA[什么是springcloud的config?为什么我们要使用它?
springcloud的config的组件是一种用于微服务的多环境的在外部管理我们的配置文件的组件,通过添加bootstrap.yml配置文件，在该配置文件中配置config配置中心的信息。让我们的工程能够从配置中心读取配置.
优点:
集中管理
不同环境下动态刷新
配置信息修改不需要重新启动服务.
将config注册到eureka中,当服务A需要配置文件的时候可以从eureka注册中心中拉取对应的config_server,然后config_]]></description><category></category></item><item><title><![CDATA[springcloud之gateway(网关)]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107795290</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107795290</guid><author>QiYang1024</author><pubDate>Tue, 04 Aug 2020 19:12:12 +0800</pubDate><description><![CDATA[什么是gateway,有什么用?
gateway是springcloud的组件之一也就是我们说的网关.
gateway作用：客户端访问后端微服务的统一入口！在gateway中我们可以对用户进行鉴权,限流,提供安全性、监控.由网关暴露端口供用户访问,后台通过从注册中心中拉取服务,通过用户的请求去注册中心里面寻找相应服务.
gateway的使用步骤
1、导入依赖
&lt;dependencies&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;]]></description><category></category></item><item><title><![CDATA[springcloud之hystrix(熔断机制)]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107773545</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107773545</guid><author>QiYang1024</author><pubDate>Tue, 04 Aug 2020 18:49:27 +0800</pubDate><description><![CDATA[springcloud的组件之hystrix
1.什么是hystrix?
hysrix是一种spirngcloud的保护机制
为什么会有这种熔断机制的出现?
那就得要说起微服务之间的相互调用了,在微服务相互调用的时候可能会出现服务调用发生异常或调用超时,多此请求造成服务积压导致服务无法使用后接着级联导致调用此服务的消费者也出现异常或调用超时,最后导致整个系统的全部崩溃.这就是级联(失败)雪崩.
级联(失败)雪崩：一个服务失败，导致整条链路的服务都失败的情形。
为了防止级联失败的情况我们就引进了hystrix]]></description><category></category></item><item><title><![CDATA[spingcloud小记]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107740614</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107740614</guid><author>QiYang1024</author><pubDate>Mon, 03 Aug 2020 00:31:01 +0800</pubDate><description><![CDATA[1.什么是springcloud?
springcloud其实没有进行硬编码,它是一直架构的体现,将原本一个整体的服务架构拆分成了无数的小模块,断开了原本一个整体架构直接的耦合程度,使各个小模块之间相互独立.,服务之间一般通过HTTP 的 RESTfuL API 进行通信协作.并使用springboot整合了许多其他的主流的框架.
springcloud本身并没有进行代码的编写,它更像是一个容器将所有流行的框架进行了整合.
通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理，最终给开发]]></description><category></category></item><item><title><![CDATA[rabbitmq的ttl和死信交换机,以及使用ttl和死信交互机配合来实现延迟消息的发送]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107690987</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107690987</guid><author>QiYang1024</author><pubDate>Thu, 30 Jul 2020 18:53:12 +0800</pubDate><description><![CDATA[TTL:过期时间
 * 1. 队列统一过期(整个队列设置了时间的过期)
 * 2. 消息单独过期(在发送消息的时候,其中有一条消息有过期时间,而其他的消息都是正常的消息没有设置过期的消息时间限制,只有设置时间消息在队列顶端，才会判断其是否移除掉)
 * 如果设置了消息的过期时间，也设置了队列的过期时间，它以时间短的为准。
 * 队列过期后，会将队列所有消息全部移除。
 * 消息过期后，只有消息在队列顶端，才会判断其是否过期(移除掉)

成为死信的三种情况
 * 1.进入队列的消息超过了队列本身的长度限制,这]]></description><category></category></item><item><title><![CDATA[消息队列之rabbitmq的高级特性之消息的可靠投递(confirm和return)以及消费者端的可靠信ACK机制,和消费者端的限流机制]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107684029</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107684029</guid><author>QiYang1024</author><pubDate>Thu, 30 Jul 2020 14:59:39 +0800</pubDate><description><![CDATA[消息队列mq,是作为消息的中间件存在的,它的优势在于
1.解耦合
2.异步提速
3.削峰填谷
解耦:在消息队列没有出现前我们的系统传递消息是由A系统直接传递给系统B,系统A和B直接存在紧密的耦合度,若是其中一个系统发生故障导致整体系统瘫痪,可维护性和容错性较低,不利于程序的拓展.
然而出现了mq,之后系统相互之间的耦合就变成了和消息中间件的耦合了,降低了系统之间的耦合度,独立出来的消息中间件也可以被其他系统所利用,提高了系统的拓展性和可维护性,容错性
异步提速:系统A的消息都存放在消息中间件中,不用去将请求]]></description><category></category></item><item><title><![CDATA[自定义autoconfigure和starter用于SpringBoot整合mybatis]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107609527</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107609527</guid><author>QiYang1024</author><pubDate>Mon, 27 Jul 2020 14:18:51 +0800</pubDate><description><![CDATA[springboot的自动装配原理简单来说就是使用了注解

@SpringBootConfiguration(对于SpringBootConfiguration此注解就是将我们写的springboot的启动类变成配置类)
@EnableAutoConfiguration(这个注解时springboot自动配置的关键)
为什么我们在使用springboot时候需要引入某些依赖的时候我们仅仅只需要引入某个依赖,而不需要像以前我们编写ssm框架时候编写大量的配置,这个注解就是关键所在.
因为springboot在]]></description><category></category></item><item><title><![CDATA[关于菜单删除问题,当父级菜单选中,对应删除所有的子集菜单(能力有限,这里只写到了三级菜单)]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107501194</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107501194</guid><author>QiYang1024</author><pubDate>Tue, 21 Jul 2020 23:43:14 +0800</pubDate><description><![CDATA[对应的数据库的表
对应的菜单表

其中七张表的总体关系

这里我们通过字段level来判断是否是1\2\3级菜单
前端传递过来的id
第一步:我们先通过id来查找对应的菜单的等级
前端传过来的id有可能是1/2/3级别
等级为3直接删除
等级为2,先删除3再删2
等级为1先删除3再用等级二的方法
我们通过level和parentMenuId
  &lt;!--查找菜单等级--&gt;
    &lt;select id="findLevel" resultType="java.lang.Integer"&g]]></description><category></category></item><item><title><![CDATA[关于后台权限管理的数据库动态查询的sql和前端页面,后台权限控制侧边栏的动态遍历(能力有限这里前端页面只写到第三层)]]></title><link>https://blog.youkuaiyun.com/QiYang1024/article/details/107500648</link><guid>https://blog.youkuaiyun.com/QiYang1024/article/details/107500648</guid><author>QiYang1024</author><pubDate>Tue, 21 Jul 2020 23:02:04 +0800</pubDate><description><![CDATA[关于数据库的表图

在数据库中通过用户名查找对应的角色(UserDao.xml)
&lt;!--通过用户名查找对应的角色--&gt;
    &lt;select id="findMeauByUsername" resultMap="user2role2Menu"&gt;
        SELECT * FROM `t_user` WHERE username=#{username}
    &lt;/select&gt;


    &lt;resultMap id="user2role2Menu" t]]></description><category></category></item></channel></rss>