<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yonhu123java的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yonhu123java</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yonhu123java]]></copyright><item><title><![CDATA[扩展Ribbon支持Nacos集群配置]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/115363438</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/115363438</guid><author>yonhu123java</author><pubDate>Wed, 31 Mar 2021 22:56:28 +0800</pubDate><description><![CDATA[由于在Nacos上，支持集群配置。集群是对指定微服务的一种虚拟分类。集群还是比较有用的，例如：
为了容灾，把指定微服务同时部署在两个机房（例如同城多活【其中1个机房崩溃另一个机房还能顶】、异地多活【防止自然灾害，例如地震什么的】），比如南京机房和北京机房。
调用时，可优先调用同机房的实例，如果同机房没有实例，再跨机房调用。
当然cluster还有很多其他作用，请各位看客自行脑补，本文将围绕上面描述的场景展开。
虽然Spring Cloud Alibaba支持集群配置，例如：
spring:
  cloud:]]></description><category></category></item><item><title><![CDATA[ConfigurationProperties,@ConditionalOnClass,@EnableConfigurationProperties，@PropertiesSource]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/113749094</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/113749094</guid><author>yonhu123java</author><pubDate>Sun, 07 Feb 2021 23:02:54 +0800</pubDate><description><![CDATA[我们还可以通过@ConfigurationProperties 读取application属性配置文件中的属性。
@ConfigurationProperties (prefix =  "spring.data.mongodb" )
publicclass MongoProperties {
  
     private  String host;
     privateint port = DBPort.PORT;
     private  String uri =  "mongodb://loca]]></description><category></category></item><item><title><![CDATA[Sentinel使用令牌桶实现预热和原理]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/111603949</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/111603949</guid><author>yonhu123java</author><pubDate>Thu, 24 Dec 2020 09:20:59 +0800</pubDate><description><![CDATA[Sentinel的QPS流控效果有快速失败、预热模式、排队等待、预热+排队等待模式，本文主要分析预热模式中是如何使用令牌桶算法限流的。
一、流控效果源码结构
1.流控效果封装入口

2.分发不同的控制类

3.流控控制类图

二、快速失败
快速失败即发送流控时抛出FlowException。
1.快速失败流程

备注
@1 获取当前已经使用的线程数或者QPS
@2 与阈值进行判断，是否允许本次通行
@3 QPS流控并且prioritized设置为true表示预占用令牌
@4 大于阈值触发流控
@5 小于阈值]]></description><category></category></item><item><title><![CDATA[redis布隆过滤器RedisBloomFilter]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/111520648</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/111520648</guid><author>yonhu123java</author><pubDate>Tue, 22 Dec 2020 11:29:03 +0800</pubDate><description><![CDATA[package org.olylakers.bloomfilter;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.commons.pool.impl.GenericObjectPool.Config;

import redis]]></description><category></category></item><item><title><![CDATA[Nginx限流、缓存、黑白名单等]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/111474693</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/111474693</guid><author>yonhu123java</author><pubDate>Mon, 21 Dec 2020 14:44:35 +0800</pubDate><description><![CDATA[Nginx应该是现在最火的web和反向代理服务器，没有之一。她是一款诞生于俄罗斯的高性能web服务器，尤其在高并发情况下，相较Apache，有优异的表现。那除了负载均衡，她还有什么其他的用途呢，下面我们来看下。
一、静态代理
Nginx擅长处理静态文件，是非常好的图片、文件服务器。把所有的静态资源的放到nginx上，可以使应用动静分离，性能更好。
二、负载均衡
Nginx通过反向代理可以实现服务的负载均衡，避免了服务器单节点故障，把请求按照一定的策略转发到不同的服务器上，达到负载的效果。常用的负载均衡策略有]]></description><category></category></item><item><title><![CDATA[dubbo泛化调用导致zk中同一个消费者节点数递增]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/111225831</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/111225831</guid><author>yonhu123java</author><pubDate>Tue, 15 Dec 2020 17:18:08 +0800</pubDate><description><![CDATA[dubbo2.6.8 泛化调用导致zk中同一个消费者节点数递增
泛化调用时,如果检查服务是否存在,服务不存在就会抛出异常,但是在此之前consumer节点已经创建,这样只要大量泛化调用这个不存在的服务,就会导致ZK上的consumer节点越来越多,给ZK造成性能!](https://img-blog.csdnimg.cn/20201215171700281.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aH]]></description><category></category></item><item><title><![CDATA[为什么Java里的Arrays.asList()返回的List不能使用add、remove方法？]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/111194632</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/111194632</guid><author>yonhu123java</author><pubDate>Tue, 15 Dec 2020 11:09:22 +0800</pubDate><description><![CDATA[我们从下面这段简单代码讲起，
public class MainFacade {
public static void main(String[] args) {
List list = Arrays.asList(1,2,3);
list.add(5);
System.out.print(list.toString());
}
}
运行时将会发现提示：UnsupportedOperationException的异常。
原因：通过源码我们发现，Arrays.asList()方法返回的ArrayList继承自]]></description><category></category></item><item><title><![CDATA[MYBATIS-PLUS性能分析插件—PERFORMANCEINTERCEPTOR]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/111186640</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/111186640</guid><author>yonhu123java</author><pubDate>Mon, 14 Dec 2020 21:46:53 +0800</pubDate><description><![CDATA[1，性能分析拦截器，用于显示每条 SQL 语句及其执行时间
@SpringBootApplication
@MapperScan("com.aiyi.springbootplus.dao")
public class SpringbootPlusApplication {
/**
 * SQL执行效率插件
 */
@Bean
public PerformanceInterceptor performanceInterceptor() {
    PerformanceInterceptor performa]]></description><category></category></item><item><title><![CDATA[rocketmq如何保证顺序消费]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/111039316</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/111039316</guid><author>yonhu123java</author><pubDate>Fri, 11 Dec 2020 15:55:29 +0800</pubDate><description><![CDATA[1、方案一
很简单，问题产生的关键在于多个队列都有消息，我消费的时候又不知道哪个队列的消息是最新的。那么思路就有了，发消息的时候你要想保证有序性的话，就都给我发到一个queue上，然后消费的时候因为只有那一个queue上有消息且queue是FIFO，先进先出，所以正常消费就完了。
很完美。而且RocketMQ也给我们提供了这种发消息的时候选择queue的api（MessageQueueSelector）。直接上
代码
import java.util.List;
import org.apache.rock]]></description><category></category></item><item><title><![CDATA[zxing介绍生成二维码]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/111032063</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/111032063</guid><author>yonhu123java</author><pubDate>Fri, 11 Dec 2020 11:31:15 +0800</pubDate><description><![CDATA[生成二维码实现
1）引入依赖 创建maven工程，在pom.xml中引入如下 依赖
&lt;dependency&gt;
            &lt;groupId&gt;com.google.zxing&lt;/groupId&gt;
            &lt;artifactId&gt;core&lt;/artifactId&gt;
            &lt;version&gt;3.3.3&lt;/version&gt;
        &lt;/dependency&gt;

   ]]></description><category></category></item><item><title><![CDATA[zuul网关Filter处理流程及异常处理]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/110850299</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/110850299</guid><author>yonhu123java</author><pubDate>Tue, 08 Dec 2020 09:27:47 +0800</pubDate><description><![CDATA[首先看到Filter的四个方法，FilterType，filterOrder，shouldFilter，run。
filterType代表过滤类型
PRE: 该类型的filters在Request routing到源web-service之前执行。用来实现Authentication、选择源服务地址等
ROUTING：该类型的filters用于把Request routing到源web-service，源web-service是实现业务逻辑的服务。这里使用HttpClient请求web-service。
P]]></description><category></category></item><item><title><![CDATA[canal同步原理，MySQL主从同步原理]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/109810708</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/109810708</guid><author>yonhu123java</author><pubDate>Thu, 19 Nov 2020 14:18:48 +0800</pubDate><description><![CDATA[1),主要用途是基于 MySQL 数据库增量日志解析，提供增量数据订阅和消费。
基于日志增量订阅和消费的业务包括

1，数据库镜像
2，数据库实时备份
3，索引构建和实时维护(拆分异构索引、倒排索引等)
4，业务 cache 刷新
5，带业务逻辑的增量数据处理

2),MySQL主备复制原理
MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events，可以通过 show binlog events 进行查看)
MySQL sla]]></description><category></category></item><item><title><![CDATA[java栈的优化]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/109405518</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/109405518</guid><author>yonhu123java</author><pubDate>Sat, 31 Oct 2020 17:23:43 +0800</pubDate><description><![CDATA[**
**

]]></description><category></category></item><item><title><![CDATA[SpringBoot设置接口超时时间]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/108846909</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/108846909</guid><author>yonhu123java</author><pubDate>Mon, 28 Sep 2020 11:37:46 +0800</pubDate><description><![CDATA[SpringBoot设置接口访问超时时间有两种方式
一、在配置文件application.properties中加了spring.mvc.async.request-timeout=20000，意思是设置超时时间为20000ms即20s，
二、还有一种就是在config配置类中加入：
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    @Override
    public void configureAsyncSupport(f]]></description><category></category></item><item><title><![CDATA[H5支付例子]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/108547448</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/108547448</guid><author>yonhu123java</author><pubDate>Sat, 12 Sep 2020 11:43:44 +0800</pubDate><description><![CDATA[![在这里插入图片描述](https://img-blog.csdnimg.cn/20200912113603136.png?x-oss-process=image/watermark,type
_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lvbmh1MTIzamF2YQ==,size_16,color_FFFFFF,t_70#pic_center)
1、用户在商户侧完成下单，使用微信支付进行支付

2、由商户后台向微信]]></description><category></category></item><item><title><![CDATA[安装docker]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/108538910</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/108538910</guid><author>yonhu123java</author><pubDate>Fri, 11 Sep 2020 17:38:09 +0800</pubDate><description><![CDATA[1.安装docker：yum install docker-ce
2.修改文件：vi /lib/systemd/system/docker.service，将第五行改为：ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
3.重启docker：
systemctl daemon-reload
service docker restart
systemctl restart docker
4.idea链接]]></description><category></category></item><item><title><![CDATA[JSON性能的比较（Jackson，Gson，Fastjson）]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/108496735</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/108496735</guid><author>yonhu123java</author><pubDate>Wed, 09 Sep 2020 17:59:45 +0800</pubDate><description><![CDATA[一 、各个JSON技术的简介和优劣
1.json-lib

json-lib最开始的也是应用最广泛的json解析工具，json-lib 不好的地方确实是依赖于很多第三方包，
包括commons-beanutils.jar，commons-collections-3.2.jar，commons-lang-2.6.jar，commons-logging-1.1.1.jar，ezmorph-1.0.6.jar，
对于复杂类型的转换，json-lib对于json转换成bean还有缺陷，比如一个类里面会出现另一个类的]]></description><category></category></item><item><title><![CDATA[开放 API 接口签名验证]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/108483494</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/108483494</guid><author>yonhu123java</author><pubDate>Wed, 09 Sep 2020 10:32:46 +0800</pubDate><description><![CDATA[1. 接口安全问题
请求身份是否合法？
请求参数是否被篡改？
请求是否唯一
AccessKey&amp;SecretKey （开放平台）

请求身份

 为开发者分配AccessKey（开发者标识，确保唯一）和SecretKey（用于接口加密，确保不易被穷举，生成算法不易被猜测）。

防止篡改
参数签名

重放攻击
虽然解决了请求参数被篡改的隐患，但是还存在着重复使用请求参数伪造二次请求的隐患。
timestamp+nonce方案
nonce指唯一的随机字符串，用来标识每个被签名的请求。通过为每个请求提供一]]></description><category></category></item><item><title><![CDATA[加密算法]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/108483873</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/108483873</guid><author>yonhu123java</author><pubDate>Wed, 09 Sep 2020 10:22:59 +0800</pubDate><description><![CDATA[加密算法我们整体可以分为：可逆加密和不可逆加密，可逆加密又可以分为：对称加密和非对称加密。
一、不可逆加密
常见的不可逆加密算法有MD5，HMAC，SHA1、SHA-224、SHA-256、SHA-384，和SHA-512，其中SHA-224、SHA-256、SHA-384，和SHA-512我们可以统称为SHA2加密算法，SHA加密算法的安全性要比MD5更高，而SHA2加密算法比SHA1的要高。其中SHA后面的数字表示的是加密后的字符串长度，SHA1默认会产生一个160位的信息摘要。
不可逆加密算法最大的特]]></description><category></category></item><item><title><![CDATA[为什么MySQL不推荐使用uuid或者雪花id作为主键？]]></title><link>https://blog.youkuaiyun.com/yonhu123java/article/details/108447441</link><guid>https://blog.youkuaiyun.com/yonhu123java/article/details/108447441</guid><author>yonhu123java</author><pubDate>Mon, 07 Sep 2020 14:34:13 +0800</pubDate><description><![CDATA[前言
在MySQL中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处？本篇博客我们就来分析这个问题,探讨一下内部的原因。

一、MySQL和程序实例
要说明这个问题,我们首先来建立三张表,分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机key作为主键,.]]></description><category></category></item></channel></rss>