<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GanYangBa的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/GanYangBa</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GanYangBa]]></copyright><item><title><![CDATA[设计模式之装饰者模式]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/130034134</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/130034134</guid><author>GanYangBa</author><pubDate>Fri, 14 Apr 2023 07:38:50 +0800</pubDate><description><![CDATA[使用场景：动态地给一些对象添加一些额外的职责但又不想增加子类，功能随时组合Decorator 模式与继承关系的目的都是要扩展对象的功能，但是 Decorator 可以提供比继承更多的灵活性。通过使用不同的具体装饰类以及这些装饰类的排列组合，设计者可以创造出很多不同行为的组合。用导致架构复杂：这种比继承更加灵活机动的特性，也同时意味着更加多的复杂性。]]></description><category></category></item><item><title><![CDATA[redis问题]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/129636580</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/129636580</guid><author>GanYangBa</author><pubDate>Sat, 18 Mar 2023 14:40:10 +0800</pubDate><description><![CDATA[答：从数据层面来说，redis库之间像是多个命名空间数据之间完全隔离，不互通。但是从操作命令层面来说，并不完全隔离。比如flushall删除所有数据会清空所有库的数据，每个库的登陆密码也是统一的，由此一个应用程序的操作会影响到其他应用程序，所以不能多个应用程序使用一个redis实例。]]></description><category></category></item><item><title><![CDATA[mysql根据时间格式生成x轴]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/124655867</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/124655867</guid><author>GanYangBa</author><pubDate>Tue, 10 May 2022 08:48:25 +0800</pubDate><description><![CDATA[根据时间格式生成x轴]]></description><category></category></item><item><title><![CDATA[JS获取当前时间的日周月年的开始结束时间]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/121861880</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/121861880</guid><author>GanYangBa</author><pubDate>Fri, 10 Dec 2021 18:09:12 +0800</pubDate><description><![CDATA[JS获取当前时间的日周月年的开始结束时间日期格式化日周月年
日期格式化
法一：
new Date().toLocaleString('zh', {hour12: false}).split('/').join('-');

法二：
var startTime=new Date();
var sMonth =(startTime.getMonth()+1)&lt;10?('0'+(startTime.getMonth()+1)):(startTime.getMonth()+1);
var sDay=start]]></description><category></category></item><item><title><![CDATA[ping 命令的基本使用]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/120300595</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/120300595</guid><author>GanYangBa</author><pubDate>Wed, 15 Sep 2021 08:43:51 +0800</pubDate><description><![CDATA[ping 命令的基本使用一、主要作用二、返回值参数的意义三、ping参数四、常用1、-c2、-n3、-i4、-p5、-r6、-R7、-s8、-S9、-t10、批量ping网段五、如何禁止他人ping你的IP
一、主要作用
1.用来检测网络的连通情况和分析网络速度
2.根据域名得到服务器ip
3.根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器的数量
二、返回值参数的意义

bytes值：数据包大小，也就是字节，一般Windows是32 linux是64.
time值：响应时间，这个时间]]></description><category></category></item><item><title><![CDATA[遇到报错 org.hibernate.ObjectDeletedException: deleted instance passed to merge: [xxx#＜null＞]]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/120031331</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/120031331</guid><author>GanYangBa</author><pubDate>Wed, 01 Sep 2021 07:46:04 +0800</pubDate><description><![CDATA[分享遇到报错  org.hibernate.ObjectDeletedException: deleted instance passed to merge: [xxx#]的情况现象扩展
现象
1、百度后大多博客上都说是先删除一个对象，后面又保存了这个对象导致的，但是其实
如果一个对象删两次也会遇到这个问题
2、注解@manyToOne里面的fetchType默认是eager，在调用这个实体的时候，就会立即得到该实体对应表的数据引用，这个时候再对数据进行操作是不被允许的
扩展
1、fetch属性指定关联对象]]></description><category></category></item><item><title><![CDATA[git的一些基础知识]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109516338</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109516338</guid><author>GanYangBa</author><pubDate>Thu, 05 Nov 2020 19:21:38 +0800</pubDate><description><![CDATA[git的一些基础知识一、概念1、四个工作区域2、工作流程3、文件的四种状态

一、概念
1、四个工作区域
Git 有四个工作区域：

工作目录（Working Directory）：工作区，就是你平时存放项目代码的地方
暂存区(Stage/Index)：暂存区，用于临时存放你的改动，事实上它只是一个文件，保存
即将提交到文件列表信息
仓库区（或版本库，本地仓库）(Repository 或 Git Directory)：就是安全存放数据的位置，这里面有你提交
到所有版本的数据。其中 HEAD 指向最新放入仓库]]></description><category></category></item><item><title><![CDATA[设置统一的hystrix fallback接口]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109497084</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109497084</guid><author>GanYangBa</author><pubDate>Wed, 04 Nov 2020 22:52:08 +0800</pubDate><description><![CDATA[设置统一的hystrix fallback接口前言Order工程改进（将fallback方法放到类中）：1.不在方法上使用@HystrixCommand注解2、创建回调类

前言
一般在实际开发中fallback 方法不会直接写在接口方法所在类里，那样太杂乱，例如之前订单工程中的写法：
@HystrixCommand(fallbackMethod = "errorReturn")
    public Order createOrder3() {
        //1.创建订单对象
        Ord]]></description><category></category></item><item><title><![CDATA[feign客户端-声明式REST调用]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109495755</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109495755</guid><author>GanYangBa</author><pubDate>Wed, 04 Nov 2020 19:19:09 +0800</pubDate><description><![CDATA[feign客户端-声明式REST调用一、为什么要使用feign？二、使用步骤1、导入依赖2、创建一个ProductFeignClient接口3、改造OrderService4、在启动类（ServiceOrderApplication）中添加 @EnableFeignClients 注解5、重启测试6、原理

一、为什么要使用feign？
之前通过RestTemplate调用REST服务，代码是这样的：
 @HystrixCommand(fallbackMethod = "errorReturn")
    ]]></description><category></category></item><item><title><![CDATA[容错保护Hystrix]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109493857</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109493857</guid><author>GanYangBa</author><pubDate>Wed, 04 Nov 2020 17:30:06 +0800</pubDate><description><![CDATA[容错保护Hystrix前言一、雪崩效应二、Hystrix简介三、原理说明四、使用步骤1、导入依赖2、修改orderService的createOrder方法（这里添加了一个createOrder2方法）3、在启动类OrderApplication添加@EnableHystrix注解4、在Controller增加一个入口create2，调用createOrder2方法5、重新启动进行测试

前言


一、雪崩效应
在微服务架构中通常会有多个服务层调用，基础服务的故障可能会导致级联故障，进而造成整个系统不可用的]]></description><category></category></item><item><title><![CDATA[Ribbon负载均衡的使用]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109482894</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109482894</guid><author>GanYangBa</author><pubDate>Wed, 04 Nov 2020 16:48:07 +0800</pubDate><description><![CDATA[文章目录前言二、架构三、开始使用Ribbon1、为microservice order增加ribbon依赖，其实，该依赖是可以省略的，因为spring-cloud-starter-netflix-eureka-client中已经包含了spring-cloud-starter-netflix-ribbon：2、为RestTemplate设置@LoadBalanced注解3、改造ItemService的实现4、重启订单服务进行测试四、设置负载均衡策略

前言
，如果为同一个的提供者在Eureka中注册了多个服务]]></description><category></category></item><item><title><![CDATA[Eureka的高可用(Eureka集群)]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109482750</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109482750</guid><author>GanYangBa</author><pubDate>Wed, 04 Nov 2020 16:35:36 +0800</pubDate><description><![CDATA[Eureka的高可用前言第二步，修改配置文件，再建一个Eureka server工程，启动两个工程（两个工程的name属性一样）测试：

前言
Eureka服务是一个单点服务，在生产环境就会出现单点故障，为了确保Eureka服务的高可用，我需要搭建Eureka服务的集群。搭建Eureka集群非常简单，只要启动多个Eureka Server服务并且让这些Server端之间彼此进行注册即可实现。

# 第一步，修改eureka server端的application.yml文件：
eureka:
	client]]></description><category></category></item><item><title><![CDATA[Eureka的自我保护模式]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109482746</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109482746</guid><author>GanYangBa</author><pubDate>Wed, 04 Nov 2020 06:23:32 +0800</pubDate><description><![CDATA[Eureka的自我保护模式


如图，当前Eureka进入了自我保护模式。(先开启Eureka server端和client端，然后再断开client端，此时刷新Eureka界面，就会看到红色字样)

在短时间内丢失了服务实例的心跳，不会剔除该服务，这是eurekaserver的自我保护机制的宗旨。主要是为了防止由于短暂的网络故障误删除可用的服务。
所以，一般进入自我保护模式，无需处理。如果，需要禁用自我保护模式，只需要在配置文件中添加配置即可：(测试环境、开发环境可以关闭自我保护机制，保证服务不可用时及时]]></description><category></category></item><item><title><![CDATA[为Eureka添加用户认证]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109482733</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109482733</guid><author>GanYangBa</author><pubDate>Wed, 04 Nov 2020 06:14:38 +0800</pubDate><description><![CDATA[为Eureka添加用户认证前言第一步，为Eureka服务端（eureka-server）添加安全认证依赖第二步，增加application.yml配置文件：第三步，在eurka服务端添加一个安全认证类：第四步，重新启动Eureka服务进行测试：第五步，服务注册时(client端)设置账户信息

前言
登录即可访问到Eureka服务，这样其实是不安全的。接下来，我们为Eureka添加用户认证。

第一步，为Eureka服务端（eureka-server）添加安全认证依赖
在eureka-server的pom文]]></description><category></category></item><item><title><![CDATA[分布式的一些基础概念]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109459560</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109459560</guid><author>GanYangBa</author><pubDate>Mon, 02 Nov 2020 22:59:06 +0800</pubDate><description><![CDATA[分布式的一些基础概念一、集群二、节点三、分布式四、集群与分布式

一、集群
集群指的是将几台服务器集中在一起，实现同一个业务
只要是⼀堆机器，就可以叫集群，他们是不是⼀起协作着⼲活，这个谁也不知道
二、节点
集群中的⼀个服务器
三、分布式
分布式是指将不同的业务分布在不同的地方
四、集群与分布式
分布式中每一个节点，都可以做成集群，而集群并不一定就是分布式的。
例如：京东是⼀个分布式系统，众多业务运⾏在不同的机器，所有业务构成⼀个⼤型的业务集群，每⼀个⼩的业务，⽐如⽤户系统，访问压⼒⼤的时候⼀台服务器是不够]]></description><category></category></item><item><title><![CDATA[架构的发展历程总结]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109455868</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109455868</guid><author>GanYangBa</author><pubDate>Mon, 02 Nov 2020 22:47:33 +0800</pubDate><description><![CDATA[架构的发展历程总结前言一、单体架构1.所有的资源都在一个服务上二、垂直架构三、分布式架构四、SOA架构五、微服务架构

前言
随着互联网的发展，网站应用的规模不断扩大，常规的垂直应用架构已无法应对，分布式服务架构以及流动计算架构势在必行，亟需一个治理系统确保架构有条不紊的演进。
大概的发展历程大致可以用下面的这张图来概括：


一、单体架构
1.所有的资源都在一个服务上
优点：当网站流量很小时，只需一个应用，将所有功能都部署在一起，以减少部署节点和成本。
缺点：1、某些模块的访问量增大影响整个项目性能。2、]]></description><category></category></item><item><title><![CDATA[服务注册与发现的一些相关概念]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109366579</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109366579</guid><author>GanYangBa</author><pubDate>Thu, 29 Oct 2020 19:13:15 +0800</pubDate><description><![CDATA[服务注册与发现的一些相关概念
负载：从服务中筛选一个调用服务的过程（可以根据不同的筛选方式（负载算法：轮循、随机等）来筛选服务）
注册中心：用于保存服务端的地址信息。常见的注册中心有zookeeper 、eureka、consul、etcd。
服务端负载：服务端来负载。
例如：客户端发出一个请求，注册中心接收，注册中心从已有的服务中选出一个服务，让客户端访问（注册中心与服务都属于服务端，这个服务是由注册中心选出的）
客户端负载：客户端来负载。
例如：客户端发出一个请求，注册中心接收，注册中心将已有的服务列表]]></description><category></category></item><item><title><![CDATA[MySQL]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109354915</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109354915</guid><author>GanYangBa</author><pubDate>Thu, 29 Oct 2020 11:11:17 +0800</pubDate><description><![CDATA[一篇比较全的MySQL问题https://www.cnblogs.com/panwenbin-logs/p/8366940.html

]]></description><category></category></item><item><title><![CDATA[Redis的持久化策略]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109329679</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109329679</guid><author>GanYangBa</author><pubDate>Wed, 28 Oct 2020 11:58:06 +0800</pubDate><description><![CDATA[Redis的持久化策略一、RDB介绍二、AOF介绍

一、RDB介绍
RDB 是 Redis 默认的持久化方案。在指定的时间间隔内，执行指定次数的写操作，则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。


可以在redis.windows.conf配置文件中修改save来进行相应的配置

60秒内10000条数据则保存
这里有三个save，只要满足其中任意一条就可以保存
例子：
（1）在redis中保存几条新的数据，用ki]]></description><category></category></item><item><title><![CDATA[jedis连接池的使用]]></title><link>https://blog.youkuaiyun.com/GanYangBa/article/details/109319206</link><guid>https://blog.youkuaiyun.com/GanYangBa/article/details/109319206</guid><author>GanYangBa</author><pubDate>Tue, 27 Oct 2020 20:27:28 +0800</pubDate><description><![CDATA[jedis连接池的使用使用工具类上文中需要配置的jedis.properties文件


使用

创建JedisPool连接池对象
调用方法 getResource()方法获取Jedis连接

@Test
public void testRedisPool(){
    //0.创建一个配置对象
    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    jedisPoolConfig.setMaxTotal(50);//设置最大连接个数]]></description><category></category></item></channel></rss>