<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[不积跬步无以至千里; 不积小流无以成江海]]></title><description><![CDATA[博客里相关的代码存储在github上，地址为 https://github.com/hryou0922]]></description><link>https://blog.csdn.net/hry2015</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; hry2015]]></copyright><item><title><![CDATA[Spring cloud系列20 实现服务优雅上下线]]></title><link>https://blog.csdn.net/hry2015/article/details/100022746</link><guid>https://blog.csdn.net/hry2015/article/details/100022746</guid><author>hry2015</author><pubDate>Thu, 22 Aug 2019 20:02:40 +0800</pubDate><description><![CDATA[在使用Spring Cloud微服务的过程中，必然会碰到微服务因为版本升级而重启。如果只是使用kill命令结束服务进程，则依赖此服务的客户端服务不会立即知道目标服务已经下线，仍然会调用目标服务借口，会因为访问失败会抛出异常，为了避免这个情况，我们希望实现服务升级对用户是无感知的
如何解决问题
首先我们搜索网络，发现这篇文章实用技巧：Spring Cloud中，如何优雅下线微服务？，但是这篇文章的方...]]></description><category></category></item><item><title><![CDATA[Spring cloud系列20 OAuth2.0的实现客户端模式(client_credentials)支持refesh code]]></title><link>https://blog.csdn.net/hry2015/article/details/96382707</link><guid>https://blog.csdn.net/hry2015/article/details/96382707</guid><author>hry2015</author><pubDate>Wed, 17 Jul 2019 23:27:46 +0800</pubDate><description><![CDATA[默认情况下OAuth2.0 客户端模式(client_credentials)不支持refresh code。现在由于业务的关系，需要支持refresh code。
	
在Spring OAuth2.0中 client_credentials模式对应的类是ClientCredentialsTokenGranter 
在此类中有个变量可以控制是否返回refreshcode，此成员变量是allowRefresh，默认值为false。在此类的在grant()方法中，如果allowRefresh=false，则会将]]></description><category></category></item><item><title><![CDATA[问题备忘：Spring Cloud OAuth2.0 开发过程中碰到的问题]]></title><link>https://blog.csdn.net/hry2015/article/details/96380624</link><guid>https://blog.csdn.net/hry2015/article/details/96380624</guid><author>hry2015</author><pubDate>Wed, 17 Jul 2019 23:11:55 +0800</pubDate><description><![CDATA[Spring Cloud OAuth2.0 开发过程中碰到的问题：
1.Spring Security – There is no PasswordEncoder mapped for the id “null”
2. 调用接口/com-oauth/oauth/check_token失败
3.问题3： 在使用密码模式时，抛出异常：o.s.s.o.provider.endpoint.TokenEndpoint  : Handling error: UnsupportedGrantTypeException,]]></description><category></category></item><item><title><![CDATA[Spring cloud系列十九 Spring Cloud G版本集成oAuth2.0]]></title><link>https://blog.csdn.net/hry2015/article/details/96204602</link><guid>https://blog.csdn.net/hry2015/article/details/96204602</guid><author>hry2015</author><pubDate>Tue, 16 Jul 2019 23:50:48 +0800</pubDate><description><![CDATA[由于项目的关系，系统需要集成oAuth2.0功能
实现自定义功能：
1.  OAuth2.0中定义四种授权模式对应的类及其他一些重要的类
2.  实现自定义客户端账户（不是用户的账户）
3. 实现自定义用户账号
4. 将accesstoken存储到redis中]]></description><category></category></item><item><title><![CDATA[系统设计 - Zero-Copy总结和性能测试]]></title><link>https://blog.csdn.net/hry2015/article/details/95109709</link><guid>https://blog.csdn.net/hry2015/article/details/95109709</guid><author>hry2015</author><pubDate>Mon, 08 Jul 2019 23:09:14 +0800</pubDate><description><![CDATA[zero-copy应用场景：将本地一个文件通过网络传输给另一个程序。zero-copy技术的使用场景有很多，比如Kafka, 又或者是Netty等，可以大大提升程序的性能。下面我们通过对比传统方式和zero-copy的方式传输数据，来理解zero-copy。Zero-copy上下文切换的次数从4次降低到2次，数据复制次数从4次降低到2次。Zero-copy 中数据的copy都由DMA执行，CPU不参与复制，从而节省CPU的消耗。 Zero-copy中的zero不是指不需要copy，而是指user mo]]></description><category></category></item><item><title><![CDATA[问题备忘：Ftp上传文件线程一直阻塞在SocketInputStream.socketRead处]]></title><link>https://blog.csdn.net/hry2015/article/details/93904377</link><guid>https://blog.csdn.net/hry2015/article/details/93904377</guid><author>hry2015</author><pubDate>Thu, 27 Jun 2019 20:02:17 +0800</pubDate><description><![CDATA[commons-net里使用ftp执行文件上传时，导致线程阻塞在java.net.SocketInputStream.socketRead0，导致线程池耗费光]]></description><category></category></item><item><title><![CDATA[微信小程序学习和实践总结]]></title><link>https://blog.csdn.net/hry2015/article/details/92798578</link><guid>https://blog.csdn.net/hry2015/article/details/92798578</guid><author>hry2015</author><pubDate>Tue, 18 Jun 2019 19:34:57 +0800</pubDate><description><![CDATA[微信小程序学习和实践总结: 技术方案选型;原生小程序的UI库推荐;小程序和公众号账号的如何统一; 消息推送机制;小程序推广三类方式; 小程序的如何发布; 如何获取公共号微信用户openid]]></description><category></category></item><item><title><![CDATA[系统选型 - Java Bean Copy组件的性能对比]]></title><link>https://blog.csdn.net/hry2015/article/details/89648152</link><guid>https://blog.csdn.net/hry2015/article/details/89648152</guid><author>hry2015</author><pubDate>Sun, 28 Apr 2019 23:17:31 +0800</pubDate><description><![CDATA[公司系统中之前一直有使用组件进行Bean copy的操作，只是知道此操作对性能有影响，但是到底有多少影响心里一直没有数。现在对Bean copy进行测试获取量化的结果

目前Bean Copy的主流组件：

 -  Apache BeanUtils 	
 -  Spring BeanUtils 	
 -  Cglib BeanCopier

	众所周知Apache BeanUtils性能太差，一般不推荐使用。这里不对其进行测试，只测试后面两个组件]]></description><category></category></item><item><title><![CDATA[Spring cloud系列十八 Spring Cloud 从Dalston.SR5到Greenwich.SR1 的升级记录]]></title><link>https://blog.csdn.net/hry2015/article/details/89340069</link><guid>https://blog.csdn.net/hry2015/article/details/89340069</guid><author>hry2015</author><pubDate>Tue, 16 Apr 2019 19:37:36 +0800</pubDate><description><![CDATA[项目之前一直使用Spring Cloud Dalston.SR5，但是此版本2018年12月软件生命周期要结束，为了后续安全和维护的需要，需要将对版本进行升级。先从官网上分析D版本的后续版本的变更，发现大部分组件基本是兼容的，这里只列出对升级有重大影响的部分变化：

 - Edgware：依赖的spring boot版本升级仍然是1.5， 许多组件的名称变化 	
 - Finchley：依赖的spring boot版本升级到2.0，真正的大版本升级，重大变化 	
 - Greenwich：依赖的spring]]></description><category></category></item><item><title><![CDATA[系统设计 - 两个平台数据的同步系统设计和实现]]></title><link>https://blog.csdn.net/hry2015/article/details/88979443</link><guid>https://blog.csdn.net/hry2015/article/details/88979443</guid><author>hry2015</author><pubDate>Tue, 02 Apr 2019 19:44:40 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[问题备忘: 将工程打包成jar包运行，就报java.io.FileNotFoundException: class path resource错误]]></title><link>https://blog.csdn.net/hry2015/article/details/84260352</link><guid>https://blog.csdn.net/hry2015/article/details/84260352</guid><author>hry2015</author><pubDate>Mon, 19 Nov 2018 21:20:42 +0800</pubDate><description><![CDATA[最近在在使用@Value注入文件碰到如下问题：
工程在在IntelliJ IDEA开发环境里正常运行，但是一旦将工程打包成jar包运行，就报java.io.FileNotFoundException: class path resource错
代码如下：通过@Value将resource目录下test/billingconfig-file.xml目录注入到Resource上
@Value(&amp;quot;cla...]]></description><category></category></item><item><title><![CDATA[组件使用总结：使用 JAXB 实现 XML文件和java对象互转]]></title><link>https://blog.csdn.net/hry2015/article/details/83715176</link><guid>https://blog.csdn.net/hry2015/article/details/83715176</guid><author>hry2015</author><pubDate>Sun, 04 Nov 2018 13:40:24 +0800</pubDate><description><![CDATA[JAXB
JAXB：实现xml和java对象互转
JAXB是一个业界的标准，实现XML文件和Java对象的互转。
JAXB是JDK 的组成部分。我们不需要下载第三方jar包 即可做到轻松转换。

重要类和接口：
	○ JAXBContext类，是应用的入口，用于管理XML/Java绑定信息。
	○ Marshaller接口，将Java对象序列化为XML数据。
	○ Unmarshaller接口，将...]]></description><category></category></item><item><title><![CDATA[Spring cloud系列十七 Ribbon六大组件的详细说明和实现类，配置属性的详细说明]]></title><link>https://blog.csdn.net/hry2015/article/details/82693456</link><guid>https://blog.csdn.net/hry2015/article/details/82693456</guid><author>hry2015</author><pubDate>Thu, 13 Sep 2018 22:52:33 +0800</pubDate><description><![CDATA[本文详细介绍Ribbon的六大组件：ServerList:定义获取服务器列表;ServerListFilter:对ServerList服务器列表进行二次过滤;ServerListUpdater: 定义服务更新策略;IPing: 检查服务列表是否存活;IRule:根据算法中从服务列表中选取一个要访问的服务;ILoadBalancer:软件负载平衡器入口，整合以上所有的组件实现负载功能。
Ribbon详细的配置属性]]></description><category></category></item><item><title><![CDATA[Spring cloud系列十六 Eureka各个组件详解和相关配置详细说明]]></title><link>https://blog.csdn.net/hry2015/article/details/82597311</link><guid>https://blog.csdn.net/hry2015/article/details/82597311</guid><author>hry2015</author><pubDate>Mon, 10 Sep 2018 22:51:18 +0800</pubDate><description><![CDATA[Eureka概述

经过一年的学习，对Spring Cloud了解加深，所以这里重新书写一下对Eureka的理解和大家分享

Spring Cloud针对服务注册与发现，进行了一层抽象，并提供了三种实现：  
Eureka(支持得最好)、Consul、Zookeeper。本文详细讲解Eureka的用法。



Eureka角色



Eureka 是 Netflix 开源的服务注册发现组件，服务端...]]></description><category></category></item><item><title><![CDATA[问题备忘:Cannot generate variable name for non-typed Collection parameter type]]></title><link>https://blog.csdn.net/hry2015/article/details/81913638</link><guid>https://blog.csdn.net/hry2015/article/details/81913638</guid><author>hry2015</author><pubDate>Tue, 21 Aug 2018 20:10:08 +0800</pubDate><description><![CDATA[在spring mvc中，定义如下RequestMapping方法

@RequestMapping(value=&quot;queryList&quot;,method = RequestMethod.POST)
@ResponseBody
public String queryList(HttpSession httpSession,@RequestBody(required = false) List&amp;lt;S...]]></description><category></category></item><item><title><![CDATA[问题备忘: 服务器重启后，导致freeswitch的internal的profile无法启动]]></title><link>https://blog.csdn.net/hry2015/article/details/81584606</link><guid>https://blog.csdn.net/hry2015/article/details/81584606</guid><author>hry2015</author><pubDate>Sat, 11 Aug 2018 11:13:06 +0800</pubDate><description><![CDATA[服务器断电重启后，导致freeswitch的internal的profile无法启动

在fs_cli执行

sofia loglevel all 9
sofia profile internal start

打印如下信息：



2018-05-25 15:55:51.272130 [ERR] switch_core_db.c:108 SQL ERR [unsupported file for...]]></description><category></category></item><item><title><![CDATA[freeswitch系列六 freeswitch在拨号计划中通过lua实现对redis操作]]></title><link>https://blog.csdn.net/hry2015/article/details/81583890</link><guid>https://blog.csdn.net/hry2015/article/details/81583890</guid><author>hry2015</author><pubDate>Sat, 11 Aug 2018 11:04:20 +0800</pubDate><description><![CDATA[3种freeswitch访问redis数据方案的分析

由于项目的原因，需要在freeswitch的拨号计划根据redis中特定key的值，判断后续的操作是转发请求或者播放录音。这里需要freeswitch中实现对redis的操作，目前实现的方案有三：


创建一个java工程服务，通过esl和freeswitch交互，在java工程实现从redis获取数据。此方案优点是灵活性强，功能强大。缺点是...]]></description><category></category></item><item><title><![CDATA[问题备忘:	 class path resource [xx] cannot be resolved to absolute file path because it does not reside]]></title><link>https://blog.csdn.net/hry2015/article/details/81319547</link><guid>https://blog.csdn.net/hry2015/article/details/81319547</guid><author>hry2015</author><pubDate>Tue, 31 Jul 2018 19:57:15 +0800</pubDate><description><![CDATA[问题描述

测试服务的版本是Spring Cloud Dalston.SR5 
在Spring Boot中配置https时，代码如下：

    @Bean
    @ConditionalOnExpression(&amp;quot;#{ ${self.https.enable:false}}&amp;quot;)
    public EmbeddedServletContainerFactory servletContaine...]]></description><category></category></item><item><title><![CDATA[Spring Boot系列22 Spring Websocket实现websocket集群方案的Demo]]></title><link>https://blog.csdn.net/hry2015/article/details/81290941</link><guid>https://blog.csdn.net/hry2015/article/details/81290941</guid><author>hry2015</author><pubDate>Mon, 30 Jul 2018 20:20:23 +0800</pubDate><description><![CDATA[Spring Boot系列20 Spring Websocket实现向指定的用户发送消息## 概述 
上一篇文章Spring Boot系列21 Spring Websocket实现websocket集群方案讨论里详细介绍了WebSocket集群的有三种方案，并得出结论第三个方案是最好的，本文我们实现第三个方案

工程

工程名称： 
本文在Spring Boot系列20 Spring Websoc...]]></description><category></category></item><item><title><![CDATA[Spring Boot系列21 Spring Websocket实现websocket集群方案讨论]]></title><link>https://blog.csdn.net/hry2015/article/details/81226155</link><guid>https://blog.csdn.net/hry2015/article/details/81226155</guid><author>hry2015</author><pubDate>Thu, 26 Jul 2018 20:11:19 +0800</pubDate><description><![CDATA[概述

本文对websocket集群的方案进行讨论：


实现websocket集群。
通过webscoket实现前端实时接收服务推送的信息的功能; 将指定的消息推送到指定的用户




webscoket集群方案



集群方案分析



在上个博文Spring Boot系列20 Spring Websocket实现向指定的用户发送消息中实现向指定用户发送消息的功能，但是我们将提供websock...]]></description><category></category></item></channel></rss>