<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AlanGogogo]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wanghaoalain</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wanghaoalain]]></copyright><item><title><![CDATA[Websocket实现心跳]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/104194189</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/104194189</guid><author>wanghaoalain</author><pubDate>Thu, 06 Feb 2020 12:04:13 +0800</pubDate><description><![CDATA[Angular的实现，分成service部分，以及调用该service的component。

service代码 websocket.service.ts

import {Injectable} from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class WebSocketService {

  cons...]]></description><category></category></item><item><title><![CDATA[Gradle笔记]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/92561194</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/92561194</guid><author>wanghaoalain</author><pubDate>Fri, 17 Jan 2020 13:50:53 +0800</pubDate><description><![CDATA[buildscript中的声明
buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
虽然gradle支持开箱即用，但是如果你想在脚本中使用一些第三方的插件、类库等，就需要自己手动添加对这些插件、类库的 引用。而这些插件、类库又不是直接服务于项目的，而是支持其它build脚本的运行。
所以你应当将这部分的引用放置在buil...]]></description><category></category></item><item><title><![CDATA[SpringBoot集成HttpClient]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/103988606</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/103988606</guid><author>wanghaoalain</author><pubDate>Wed, 15 Jan 2020 14:16:20 +0800</pubDate><description><![CDATA[##HttpClient几个主要概念

CloseableHttpClient
用于发送请求，因为是线程安全的，所以只需要在程序中创建一个单例。
RequestConfig
用于配置每个请求的各项timeout等等
PoolingHttpClientConnectionManager
用于配置连接池
ConnetionKeepAliveStrategy
用于创建KeepAlive策略。
HTTP ...]]></description><category></category></item><item><title><![CDATA[Centos 7_MySQL主主复制_Haproxy实现负载均衡]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/80271463</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/80271463</guid><author>wanghaoalain</author><pubDate>Thu, 10 May 2018 22:47:52 +0800</pubDate><description><![CDATA[Centos 7下安装MySQL 5.5以管理员身份进行以下操作：删除centos预先安装的mariadbrpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
rpm -qa | grep mariadb安装MySQL依赖yum install -y gcc gcc-c++ gcc-g77 autoconf ...]]></description><category></category></item><item><title><![CDATA[Spring boot集成Quartz与RabbitMQ]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/79325032</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/79325032</guid><author>wanghaoalain</author><pubDate>Wed, 14 Feb 2018 13:47:36 +0800</pubDate><description><![CDATA[完成一个本地demo的小项目。 
在Spring boot中集成Quartz与RabbitMQ，完成通过Quartz定时向RabbitMQ发送消息，并且在客户端监听RabbitMQ队列的消息并进行处理。同时针对Quartz使用了集群特性。数据层采用Spring boot jpa，用Hibernate简易处理了下CRUD。环境准备
数据库中建立业务存储表 
t_account 账户表 
t_order]]></description><category></category></item><item><title><![CDATA[Spring Boot与Quartz集成实现分布式定时任务集群]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/79288387</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/79288387</guid><author>wanghaoalain</author><pubDate>Thu, 08 Feb 2018 12:47:00 +0800</pubDate><description><![CDATA[直接贴代码POM<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma]]></description><category></category></item><item><title><![CDATA[docker工作笔记1 -- 开启docker Rest api的远程调用]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/79206458</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/79206458</guid><author>wanghaoalain</author><pubDate>Thu, 08 Feb 2018 12:35:21 +0800</pubDate><description><![CDATA[工作环境为CentOS


配置docker daemon启动参数 
在 /lib/systemd/system/docker.service中做如下修改


# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does no]]></description><category></category></item><item><title><![CDATA[ThreadPoolExecutor关于Execute方法]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/79123448</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/79123448</guid><author>wanghaoalain</author><pubDate>Sun, 21 Jan 2018 21:49:26 +0800</pubDate><description><![CDATA[ThreadPoolExecutor的两个核心集合： 
一个是持有当前可用线程的集合HashSet<Worker> workers， 
另一个是待执行的task的集合BlockingQueue<Runnable> workQueueExecute()方法的逻辑当我们调用ThreadPoolExecutor中的Execute方法时，线程池会对当前自身状态做出判断来决定是否创建新的worker来立即执行]]></description><category></category></item><item><title><![CDATA[递归设计]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78966335</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78966335</guid><author>wanghaoalain</author><pubDate>Wed, 03 Jan 2018 22:38:03 +0800</pubDate><description><![CDATA[递归设计的核心

递归设计的核心在于两点：


递归停止条件的判断
递归中对于问题的普适情况的解决方案


抓住这两点才能巧妙的解决问题。

递归问题的经典案例：


迷宫问题
汉诺塔问题






迷宫问题

假设有如下迷宫，其中1代表通路，0代表短路，请找出走出迷宫的道路。



1110110001111
1011101111001
0000101010100
1110111010111]]></description><category></category></item><item><title><![CDATA[设计模式-行为型模式]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78938687</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78938687</guid><author>wanghaoalain</author><pubDate>Sat, 30 Dec 2017 18:30:51 +0800</pubDate><description><![CDATA[原文地址：http://blog.youkuaiyun.com/column/details/pattern.html?&page=1行为型模式
模版方法模式
策略模式 
状态模式
命令模式
迭代器模式
备忘录模式
观察者模式
中介者模式
访问者模式
责任链模式
解释器模式
模版方法模式定义：定义一个操作中算法的框架，而将一些步骤延迟到子类中，使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。模版模]]></description><category></category></item><item><title><![CDATA[设计模式-创建型模式]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78930895</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78930895</guid><author>wanghaoalain</author><pubDate>Fri, 29 Dec 2017 14:06:40 +0800</pubDate><description><![CDATA[原文地址：http://blog.youkuaiyun.com/column/details/pattern.html?&page=1创建型模式
单例模式
工厂方法模式
抽象工厂模式
建造者模式
原型模式
单例模式定义：确保一个类只有一个实例，而且自行实例化并向整个系统提供这个实例。饿汉式单例    public class Singleton {  
        private static Single]]></description><category></category></item><item><title><![CDATA[设计模式的六大原则]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78930499</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78930499</guid><author>wanghaoalain</author><pubDate>Fri, 29 Dec 2017 13:20:30 +0800</pubDate><description><![CDATA[原文专栏：http://blog.youkuaiyun.com/column/details/pattern.html?&page=1单一职责原则不要存在多于一个导致类变更的原因。通俗的说，即一个类只负责一项职责。里氏替换原则如果对每一个类型为 T1的对象 o1，都有类型为 T2 的对象o2，使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时，程序 P 的行为没有发生变化，那么类型 T2 是]]></description><category></category></item><item><title><![CDATA[CentOS 7配置FastDFS与Ngnix实践]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78915067</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78915067</guid><author>wanghaoalain</author><pubDate>Wed, 27 Dec 2017 18:15:45 +0800</pubDate><description><![CDATA[根据参考文章：http://www.linuxidc.com/Linux/2016-09/135537.htm实践 
精简的实践过程如下。创建/opt安装目录mkdir /opt安装libfastcommon包在opt目录下执行wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz
tar -zxvf V1.]]></description><category></category></item><item><title><![CDATA[MyBatis使用小结]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78891372</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78891372</guid><author>wanghaoalain</author><pubDate>Mon, 25 Dec 2017 12:43:31 +0800</pubDate><description><![CDATA[MyBatis的xml配置文件示例<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAlias]]></description><category></category></item><item><title><![CDATA[byte转换至16进制字符串_计算机原/反/补码]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78864859</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78864859</guid><author>wanghaoalain</author><pubDate>Thu, 21 Dec 2017 16:03:33 +0800</pubDate><description><![CDATA[Java完成的byte数组与16进制字符串转化代码：    public static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0) {]]></description><category></category></item><item><title><![CDATA[Spring REST API整理]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78790768</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78790768</guid><author>wanghaoalain</author><pubDate>Sat, 16 Dec 2017 21:23:18 +0800</pubDate><description><![CDATA[REST Representational State Transfer]]></description><category></category></item><item><title><![CDATA[Spring MVC后台表单校验]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78775287</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78775287</guid><author>wanghaoalain</author><pubDate>Mon, 11 Dec 2017 18:11:06 +0800</pubDate><description><![CDATA[Spring MVC后台表单校验使用了JSR-303的Java Validation API。 
主要涉及三个方面： 
1. Form Bean的验证规则注解 
2. Controller处理方法参数注解 
3. 利用Spring tag展现错误信息Form Bean的验证规则注解public class Spitter {  private Long id;  @NotNull
  @Size(m]]></description><category></category></item><item><title><![CDATA[Spring MVC Java配置梳理]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78773601</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78773601</guid><author>wanghaoalain</author><pubDate>Mon, 11 Dec 2017 17:48:04 +0800</pubDate><description><![CDATA[Spring MVC处理流程
DispatcherServlet收到用户请求
DS调用处理映射器来找到具体Controller
DS将请求发送给具体Controller
Controller返回ViewAndModel给DS
DS通过视图解析器解析出具体视图位置
DS用Model来渲染视图
被渲染的视图最终响应给用户
Servelet 3规范下的Spring MVC配置创建继承AbstractAnn]]></description><category></category></item><item><title><![CDATA[Spring Core配置笔记]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78768355</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78768355</guid><author>wanghaoalain</author><pubDate>Sun, 10 Dec 2017 23:39:55 +0800</pubDate><description><![CDATA[Configruation类配置@Configuration 表明一个类是配置类，应该包含Spring应用上下文中如何创建bean的细节。@ComponentScan(basePackages = “com.habuma.soundsystem”,  
               excludeFilters = { @Filter(Configuration.class) })@Import({]]></description><category></category></item><item><title><![CDATA[@Controller与@RestController区别]]></title><link>https://blog.youkuaiyun.com/wanghaoalain/article/details/78767306</link><guid>https://blog.youkuaiyun.com/wanghaoalain/article/details/78767306</guid><author>wanghaoalain</author><pubDate>Sun, 10 Dec 2017 20:45:30 +0800</pubDate><description><![CDATA[@Controller@Controller是最普通的Spring MVC中的Controller标注形式。在一个类上标注@Controller后，该方法将被当作一个Controller装配到Spring的web上下文中。该类中的处理方法可以使用@RequestMapping标注。并且这些方法通常返回一个String，或者ModelAndView对象，用于与InternalResourceViewR]]></description><category></category></item></channel></rss>