<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tigerJGG的博客]]></title><description><![CDATA[学习记录]]></description><link>https://blog.youkuaiyun.com/tigerJGG</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tigerJGG]]></copyright><item><title><![CDATA[SpringCloud之Eureka（三）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/89247379</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/89247379</guid><author>tigerJGG</author><pubDate>Tue, 28 May 2019 17:52:36 +0800</pubDate><description><![CDATA[前言


之前两篇已经搭建了简单的高可用注册中心，服务提供者及服务消费者。但是仅仅做这些在实际应用中还是不够的，这篇主要对Eureka的架构进一步了解以及学习一些进阶特性。


服务续约


服务提供者会定时发送一个心跳来防止EurekaServer将其从服务列表中排除出去，这种操作成为服务续约(Renew)。有以下两个属性值可以设置：


eureka.instance.lease-renew...]]></description><category></category></item><item><title><![CDATA[SpringCloud之简介]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/89106924</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/89106924</guid><author>tigerJGG</author><pubDate>Wed, 17 Apr 2019 14:05:44 +0800</pubDate><description><![CDATA[目录

概述

子项目

版本




概述


Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理，服务治理，断路器，智能路由，微代理，控制总线，全局锁，决策竞选，分布式会话和集群状态管理等操作提供了一种简单的开发方式。


子项目


Spring Cloud包含了多个子项目：

Spring Cloud Config：配置管理工...]]></description><category></category></item><item><title><![CDATA[SpringCloud之Eureka（一）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/89205784</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/89205784</guid><author>tigerJGG</author><pubDate>Wed, 17 Apr 2019 14:05:36 +0800</pubDate><description><![CDATA[目录

服务治理

Netflix Eureka

搭建服务注册中心（单机模式）

注册服务提供者


服务治理


服务治理是微服务架构中非常重要的模块，主要用来实现服务的自动注册与发现。在最初构建微服务系统的时候服务可能并不多，可以通过简单的静态配置来维护服务间的相互调用，但是当系统功能越来越复杂，微应用也不断增加，静态配置已经不能起到很好的作用，服务间的调用关系越来越难以理清，并且集群规...]]></description><category></category></item><item><title><![CDATA[SpringCloud之Eureka（二）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/89212086</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/89212086</guid><author>tigerJGG</author><pubDate>Wed, 17 Apr 2019 14:05:24 +0800</pubDate><description><![CDATA[目录

前言

实现高可用注册中心




前言


在SpringCloud之Eureka（一）中，简单的配置了Eureka的单节点注册中心，但是在分布式环境中，我们需要充分考虑发生故障的情况，需要一些高可用方案。在这篇文章中，我将会构建一个高可用的Eureka服务注册中心。

Eureka Server的高可用方案实际上就是将自己作为服务向其他注册中心注册自己，这样就形成一组互相注册的服务注...]]></description><category></category></item><item><title><![CDATA[ZooKeeper之基础概念（一）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/89309485</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/89309485</guid><author>tigerJGG</author><pubDate>Wed, 17 Apr 2019 14:05:18 +0800</pubDate><description><![CDATA[之前在项目中使用过zooKeeper，但是只是简单的应用和配置，这当然不能满足我这渴望求知的心，于是我打算重新完整深入学习一下ZooKeeper，做到知其然知其所以然！


ZooKeeper是什么？


中心观点：它可以在分布式系统中协作多个任务。

在计算机发展初期，所有的程序运行和计算都在同一台计算机上，服务也相对简单，但是随着计算机的告诉发展以及各种服务的复杂度不断提升，单体应用已经不能满...]]></description><category></category></item><item><title><![CDATA[redis持久化]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/89321679</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/89321679</guid><author>tigerJGG</author><pubDate>Wed, 17 Apr 2019 14:05:04 +0800</pubDate><description><![CDATA[前言


温故而知新！学习本来就是一个不断重复记忆，不断加深理解的过程。本篇对于已经学习过的redis知识点做个记录。


两种不同的持久化方法


快照方式
优点：它将存在于某一时刻的所有数据都写入到硬盘里面。在创建快照之后，用户可以对快照进行备份，可以将快照复制到其他服务器作为副本，还可以将快照留在原地以便重启服务器时使用。

缺点：由于创建快照是有时间间隔的，如果在某一次创建快照期间，系统...]]></description><category></category></item><item><title><![CDATA[ZooKeeper之基础概念（二）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/89330944</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/89330944</guid><author>tigerJGG</author><pubDate>Wed, 17 Apr 2019 14:04:52 +0800</pubDate><description><![CDATA[食谱（recipes)



ZooKeeper数据数结构

recipes是应用使用ZooKeeper提供的API作为原语的实现。recipes包含了ZooKeeper的操作，并且维护一个小型的数据节点，这些节点被称为znode。

上图描述了一个znode树的结构，根节点包含4个子节点，下面三个子节点包含下一级节点，叶子节点存储了数据信息。如果一个znode没有数据，那这代表着一些信息。在...]]></description><category></category></item><item><title><![CDATA[并发之捕获异常]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/89086793</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/89086793</guid><author>tigerJGG</author><pubDate>Mon, 08 Apr 2019 14:30:28 +0800</pubDate><description><![CDATA[概要


由于线程的本质特性，不能捕获从线程中逃逸的异常，一旦异常从run()方法抛出，它就会从控制台打印出来，除非采取特殊的步骤来捕获这种错误的异常。这篇文章就来了解一下并发中异常的捕获处理。


问题描述


首先看以下代码，在run()方法中抛出一个异常，很明显没有经过任何处理的话，会在控制台输出异常信息。





如果在main方法中假如try-catch块是没有作用的，与上面的代码...]]></description><category></category></item><item><title><![CDATA[Dubbo之参数配置（六）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/88788072</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/88788072</guid><author>tigerJGG</author><pubDate>Mon, 25 Mar 2019 13:18:33 +0800</pubDate><description><![CDATA[目录

令牌验证

路由规则

条件路由规则

脚本路由规则




令牌验证



验证步骤

使用场景
	防止消费者绕过注册中心访问提供者
	在注册中心控制权限，以决定要不要下发令牌给消费者
	注册中心可灵活改变授权方式，而不需要修改或升级提供者
（1）全局设置开启令牌验证


&lt;!--随机token令牌，使用UUID生成--&gt;
&lt;dubbo:provider inter...]]></description><category></category></item><item><title><![CDATA[Dubbo之参数配置（五）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/88785660</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/88785660</guid><author>tigerJGG</author><pubDate>Mon, 25 Mar 2019 10:45:12 +0800</pubDate><description><![CDATA[目录

并发控制

连接控制

延迟连接

粘滞连接




并发控制


使用场景
限制服务的方法在服务器端占用线程池线程数的数量。

配置
（1）限制BarService的每个方法，服务器端并发执行数不能超过10个


&lt;dubbo:service interface="com.foo.BarService" executes="10" /&gt;

（2）限制BarService的s...]]></description><category></category></item><item><title><![CDATA[Dubbo之参数配置（四）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/88743705</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/88743705</guid><author>tigerJGG</author><pubDate>Fri, 22 Mar 2019 16:45:19 +0800</pubDate><description><![CDATA[目录

本地存根

本地伪装

延迟暴露




本地存根


使用场景
远程服务后，客户端通常只剩下接口，而实现全在服务器端，但提供方有些时候想在客户端也执行部分逻辑，比如：做ThreadLocal缓存，提前验证参数，调用失败后伪造容错数据等等，此时就需要在API中带上Stub,客户端生成Proxy时，会把Proxy通过构造函数传输给Stub,然后把Stub暴露给用户，Stub可以决定要不要去...]]></description><category></category></item><item><title><![CDATA[Dubbo之参数配置（三）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/88740873</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/88740873</guid><author>tigerJGG</author><pubDate>Fri, 22 Mar 2019 15:57:12 +0800</pubDate><description><![CDATA[目录

本地调用

参数回调

事件通知




本地调用


使用场景
本地调用使用Injvm协议，是一个伪协议，它不开启端口，不发起远程调用，只在JVM内直接关联，但执行Dubbo的Filter链。

配置

//定义injvm协议
&lt;dubbo:protocol name="injvm" /&gt;

//设置默认协议
&lt;dubbo:provider protocol="in...]]></description><category></category></item><item><title><![CDATA[Dubbo之参数配置（二）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/88707732</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/88707732</guid><author>tigerJGG</author><pubDate>Thu, 21 Mar 2019 11:03:21 +0800</pubDate><description><![CDATA[目录

泛化引用

泛化实现

回声测试

上下文信息

异步调用




泛化引用


使用场景
主要用于客户端没有API接口及模型类元的情况，参数及返回值中的所有POJO均用Map表示。如：实现一个通用的服务测试框架，可通过GenericService调用所有服务实现。

&lt;dubbo:reference id="barService" interface="com.demo...]]></description><category></category></item><item><title><![CDATA[Dubbo之参数配置（一）]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/88707192</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/88707192</guid><author>tigerJGG</author><pubDate>Thu, 21 Mar 2019 09:55:20 +0800</pubDate><description><![CDATA[目录

启动时检查

集群容错

负载均衡

线程模型

直连提供者

服务只订阅,不注册

只注册

静态服务

多协议配置

多注册中心注册（服务端）和多注册中心引用（消费端）

多版本

服务分组

分组聚合

结果缓存




启动时检查


  dubbo默认会在启动时检查依赖的服务是否可用，不可用会抛出异常
  1）xml中配置
  没有提供者时报错 关闭某个服务的启动...]]></description><category></category></item><item><title><![CDATA[Dubbo之基础概念和配置]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/88706787</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/88706787</guid><author>tigerJGG</author><pubDate>Thu, 21 Mar 2019 09:36:52 +0800</pubDate><description><![CDATA[Dubbo基本需求



 1）需要一个服务注册中心，动态的注册和发现服务，使服务的位置透明，在消费方获取服务提供方地址列表，实现软负载均衡和Failover
 2）需要自动画出应用间的依赖关系图，帮助架构师理清关系
 3）当服务调用量越来越大，需要将服务每天的调用量，响应时间统计出来，作为容量规划的参考指标


Dubbo架构


   


dubbo架构



...]]></description><category></category></item><item><title><![CDATA[LeetCode_Easy_665]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/87874000</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/87874000</guid><author>tigerJGG</author><pubDate>Fri, 22 Feb 2019 12:44:18 +0800</pubDate><description><![CDATA[Non-decreasing Array

题目 

这道题的意思就是，提供一个数组，它是否满足只改变一个元素就能变成非递减数组的条件。

思路 

可以看作遍历数组，非递减元素最多有几个。

比如[1,2,3,4,3,5,6]，正向遍历的话，如果遇到递减元素就记录下来（排除掉不符合条件元素），否则继续往下遍历，最长非递减元素集合是[1,2,3,4,5,6]，但如果数组是[1,2,3,4,8,5,...]]></description><category></category></item><item><title><![CDATA[Java类加载机制——双亲委派模型]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/87863615</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/87863615</guid><author>tigerJGG</author><pubDate>Thu, 21 Feb 2019 17:11:58 +0800</pubDate><description><![CDATA[之前也有接触过这方面的知识，但都是看过之后就忘记了，这次做一下学习记录加深自己的对这方面知识的印象。

在java中，通过ClassLoader或者它的子类将字节码文件加载到jvm中，装载过程在此不再说明，本文重点是分析双亲委派模型在源码中的实现。JVM预定义有三种类加载器，当一个 JVM启动的时候，Java缺省开始使用如下三种类加载器：

1）引导类加载器（bootstrap class loa...]]></description><category></category></item><item><title><![CDATA[activemq的重发策略参数配置]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/87804476</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/87804476</guid><author>tigerJGG</author><pubDate>Wed, 20 Feb 2019 17:14:21 +0800</pubDate><description><![CDATA[activemq为保证消息的可靠性，引入重发机制。

触发重发的情况:

   1．在使用事务的Session中，调用rollback()方法；
   2．在使用事务的Session中，调用commit()方法之前就关闭了Session;
   3．在Session中使用CLIENT_ACKNOWLEDGE签收模式或者INDIVIDUAL_ACKNOWLEDGE模式，并且调...]]></description><category></category></item><item><title><![CDATA[LeetCode_Easy_69]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/86539503</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/86539503</guid><author>tigerJGG</author><pubDate>Fri, 18 Jan 2019 14:46:54 +0800</pubDate><description><![CDATA[Sqrt(x)

这道题的意思就是计算x的平方根,如果返回值是浮点数类型，那么返回整数部分。

看到这个题，下意识的使用java中Math.sqrt(x)，当然也能Accepted，但是太缺少挑战性。

首先贴出代码：

public int mySqrt(int x) {
        if(x==0){
            return 0;
        }
        int ...]]></description><category></category></item><item><title><![CDATA[LeetCode_Easy_38]]></title><link>https://blog.youkuaiyun.com/tigerJGG/article/details/86306796</link><guid>https://blog.youkuaiyun.com/tigerJGG/article/details/86306796</guid><author>tigerJGG</author><pubDate>Fri, 11 Jan 2019 17:18:24 +0800</pubDate><description><![CDATA[Count and Say

首先贴出我第一次accepted的代码：

class Solution {
    public String countAndSay(int n) {
        String res =&quot;1&quot;;//保存上一个值，默认为1
        String tVal = &quot;&quot;;//循环过程中的临时值，用来累加每个读数
        char curVal = r...]]></description><category></category></item></channel></rss>