<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ifwinds的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ifwinds</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ifwinds]]></copyright><item><title><![CDATA[聊天机器人介绍]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/114595443</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/114595443</guid><author>ifwinds</author><pubDate>Tue, 09 Mar 2021 19:12:08 +0800</pubDate><description><![CDATA[什么是聊天机器人
聊天机器人，是一种通过自然语言模拟人类进行对话的程序，比如微软小冰、图灵机器人、Siri等。

对话机器人可以干什么


聊天机器人可以作为应用的入口和载体，可以作为其他运营工具，为其他业务方赋能。

可以支持对话、客服、游戏、虚拟形象等多种场景
可以支持SDK、HTTP、RPC等多种接入方式
通过管理平台多种技能可以自由配置
依托深度学习算法和大数据让机器人更智能


聊天机器人案例


...]]></description><category></category></item><item><title><![CDATA[Feed流系统设计]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/114585091</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/114585091</guid><author>ifwinds</author><pubDate>Tue, 09 Mar 2021 17:12:50 +0800</pubDate><description><![CDATA[Feed流系统简介
Feed 是一种数据格式，用于给订阅的用户提供持续更新的内容，内容大多是基于时间线的方式呈现，“从上往下流动”，通常称为Feed流。
移动互联网时代，国内最具代表性的Feed流类产品包括微信、微博、抖音，它们各具特点。




产品
特点




微信
双向关系，需要相互添加好友才能看到对方的动态


微博
单向关系，添加关注，就可以订阅对方的动态


抖音
个性化推荐，不需要建立关系就可以看到别人发布的内容


Feed流系统要素
Feed流系统是比较典型的发布-订阅模式，其本质是发布]]></description><category></category></item><item><title><![CDATA[Netty-入门]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/88948464</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/88948464</guid><author>ifwinds</author><pubDate>Thu, 24 Oct 2019 10:21:46 +0800</pubDate><description><![CDATA[一、Netty3/4/5




版本
版本特点
备注




3.x
OLD  VERSION
3.x版本是比较旧的版本，跟4.x版本相比变化比较大，特别是API。


4.x
RECOMMENDED VERSION
4.x版本是当前官方推荐，4.x版本目前一直在维护中


5.x
ABANDONED VERSION - NOT SUPPORTED
5.x是被舍弃的版本，官方不再支持！最新版本是...]]></description><category></category></item><item><title><![CDATA[Springboot Filter Interceptor]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/100691514</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/100691514</guid><author>ifwinds</author><pubDate>Tue, 10 Sep 2019 12:25:19 +0800</pubDate><description><![CDATA[本篇文章主要介绍 Springboot中Filter和Interceptor的使用方法，相关
过滤器 Filter 是 java 过滤器，和框架无关，是所有过滤组件中最外层的，可以控制最初的http请求，粒度最大；
拦截器 Interceptor 是 Spring 框架的拦截器，可以拦截Controller外层的调用，可以控制请求的请求处理器和方法，但控制不了请求方法里的参数；

Intercep...]]></description><category></category></item><item><title><![CDATA[Springboot工作原理]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/100669792</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/100669792</guid><author>ifwinds</author><pubDate>Mon, 09 Sep 2019 18:21:25 +0800</pubDate><description><![CDATA[本文通过图解的方式，介绍Springboot的工作原理、执行流程，对Filter、Interceptor、ControllerAdvice、Handler等组件的用途执行流程做了详细的介绍，并附有代码示例。]]></description><category></category></item><item><title><![CDATA[Springboot统一异常处理]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/100654359</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/100654359</guid><author>ifwinds</author><pubDate>Mon, 09 Sep 2019 11:24:41 +0800</pubDate><description><![CDATA[当服务端发生异常(Exception)时，我们往往不希望程序异常终止，也不希望暴露过多的异常信息给客户端，这时候就需要一个统一的异常处理机制，来保证客户端能够收到友好的提示。
异常(exception) 是程序运行过程中发生的事件, 该事件可以中断程序指令的正常执行流程.
1）当Java程序运行时出现问题时，系统能够自动检测到，并立即生成一个与该问题对应的异常对象；
2）然后把该异常对象提交给Ja...]]></description><category></category></item><item><title><![CDATA[HTTP 超文本传输协议]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/98470610</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/98470610</guid><author>ifwinds</author><pubDate>Sun, 04 Aug 2019 17:30:11 +0800</pubDate><description><![CDATA[HTTP（Hyper Text Transfer Protocol），超文本传输协议，是一种建立在TCP上的无状态连接的应用层协议。
请求方法
HTTP/1.1协议定义了八种通用的请求方法，来以不同方式操作指定的资源：
HTTP1.0 定义了 GET, POST 和 HEAD 方法；
HTTP1.1 新增了 OPTIONS、PUT、DELETE、TRACE 和 CONNECT 方法；
除了上述方法...]]></description><category></category></item><item><title><![CDATA[HTTP 获取客户端真实IP]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/97247296</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/97247296</guid><author>ifwinds</author><pubDate>Thu, 25 Jul 2019 11:26:52 +0800</pubDate><description><![CDATA[/**
     * 获取客户端的IP
     *
     * @param request
     * @return
     */
    public static String getRemoteAddr(HttpServletRequest request) {
        String ip = "";
        try {
            ip = ...]]></description><category></category></item><item><title><![CDATA[Springboot gzip解压http数据流]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/97243892</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/97243892</guid><author>ifwinds</author><pubDate>Thu, 25 Jul 2019 11:00:00 +0800</pubDate><description><![CDATA[编写Filter
/**
 * GZIP处理Filter
 */
@WebFilter(filterName = "httpServletGzipFilter", urlPatterns = "/")
public class HttpServletGzipFilter implements Filter {
    @Override
    public void destroy() {}
 ...]]></description><category></category></item><item><title><![CDATA[Springboot2.0 undertow http2.0]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/97239157</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/97239157</guid><author>ifwinds</author><pubDate>Thu, 25 Jul 2019 10:36:20 +0800</pubDate><description><![CDATA[添加依赖
&lt;dependency&gt;
	&lt;!--web 模块--&gt;
    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
    &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
    &lt;exclusions&gt;
    	&l...]]></description><category></category></item><item><title><![CDATA[Java gzip 压缩和解压缩]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/96854770</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/96854770</guid><author>ifwinds</author><pubDate>Mon, 22 Jul 2019 14:13:57 +0800</pubDate><description><![CDATA[package src;

import java.io.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

/**
 * GZIP工具类
 *
 * @author xie.pengcheng@immomo.com
 * @date 2019/7/19 下午7:03
 */
public...]]></description><category></category></item><item><title><![CDATA[并发编程-Java中的线程池]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83758371</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83758371</guid><author>ifwinds</author><pubDate>Mon, 05 Nov 2018 22:46:40 +0800</pubDate><description><![CDATA[JDK1.5中引入了强大的concurrent包，其中最常用的莫过了线程池的实现ThreadPoolExecutor，Java 中的线程池是运用场景最多的并发框架，几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中合理地使用线程池能够带来 3 个好处。

降低资源消耗：通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
提高响应速度：当任务到达时，任务可以不需要等到线程创建就能...]]></description><category></category></item><item><title><![CDATA[并发编程-并发机制的底层实现原理]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83721068</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83721068</guid><author>ifwinds</author><pubDate>Sun, 04 Nov 2018 23:06:36 +0800</pubDate><description><![CDATA[CPU术语




术语
英文
描述




内存屏障
memory barriers
是一组处理器指令，用于实现对内存操作的顺序限制


缓存行
cache line
CPU 高速缓存中可以分配的最小存储单位。


缓存行填充
cache line fill
当处理器识别到从内存中读取操作数是可缓存的，处理器读取整个高速缓存行到适当的缓存（L1，L2，L3 的或所有）


缓存命中
cache ...]]></description><category></category></item><item><title><![CDATA[并发编程-并发编程的挑战]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83717570</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83717570</guid><author>ifwinds</author><pubDate>Sun, 04 Nov 2018 19:03:30 +0800</pubDate><description><![CDATA[并发编程的挑战
并发编程中，我们或多或少会遇到线程上下文切换、死锁、受限于软硬件资源限制的挑战。
上下文切换
CPU会通过时间片分配算法给各个线程分配时间片来实现多线程机制。获得CPU时间片的线程将可以执行。当前一个线程执行一个时间片后会切换到下一个线程，线程切换前需要保存执行的状态，下回该线程切换回来时再加载这个执行状态，线程状态从保存到再加载的过程就是一次上下文切换。线程上下文切换会消耗一定的...]]></description><category></category></item><item><title><![CDATA[架构运维-监控设计]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83713615</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83713615</guid><author>ifwinds</author><pubDate>Sun, 04 Nov 2018 10:09:22 +0800</pubDate><description><![CDATA[监控内容

网络数据，针对接入层的监控。
服务器数据，包括服务器的 CPU、内存、硬盘、连接数的各项使用数据。
应用数据。应用数据是这三者中最难的，但也是最重要的。应用数据是和业务逻辑紧密相关的数据，业务逻辑变了，应用数据的收集也会变化。
性能监控，根据日志监控接口的流量、超时率、错误率等
安全监控，通过实时监控网络或主机活动，分析用户和系统的行为，识别攻击行为，对异常行为进行统计和跟踪。

通知...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-哈夫曼树]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83691048</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83691048</guid><author>ifwinds</author><pubDate>Sat, 03 Nov 2018 21:21:13 +0800</pubDate><description><![CDATA[最优二叉树又称哈夫曼树，定义为带权路径长度WPL最小的二叉树。

结点的路径长度：从根结点到该结点的路径上分支的数目。
树的路径长度：树中每个结点的路径长度之和。下图，树的路径长度为5。

树的带权路径长度：树中所有叶子结点的带权路径长度之和，WPL(T) = ∑k=0n\sum_{k=0}^n∑k=0n​WkW_kWk​LkL_kLk​
下图，WPL(T) = 7 × 2 + 5 × 2 + 2...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-二叉树]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83662125</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83662125</guid><author>ifwinds</author><pubDate>Fri, 02 Nov 2018 21:55:28 +0800</pubDate><description><![CDATA[定义
二叉树或为空树；或是由一个根结点加上两棵分别称为左子树和右子树的、互不交的二叉树组成。

满二叉树
指的是深度为k且含有2^k - 1个结点的二叉树。

完全二叉树
树中所含的 n 个结点和满二叉树中编号为 1 至 n 的结点一一对应。

性质

在二叉树的第 i 层上至多有xi-1   个结点。(i≥1)
深度为 k 的二叉树上至多含 2k-1 个结点（k≥1）
对任何一棵二叉树，若它含有...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-树]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83661676</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83661676</guid><author>ifwinds</author><pubDate>Fri, 02 Nov 2018 21:18:59 +0800</pubDate><description><![CDATA[抽象数据类型定义
若|D|=0，则称为空树；
否则:
(1) 在D中存在唯一的称为根的数据元素root,
(2) 当n&amp;amp;amp;gt;1时，其余结点可分为m (m&amp;amp;amp;gt;0)个互不相交的有限集T1, T2, …, Tm,其中Ti本身是一棵符合本定义的树，称为根root的子树。
例如：A是根；其余结点分成三个互不相交的子集，T1={B,E,F,K,L}； T2={C,G}；T3={D,H,I,J,M}；T1...]]></description><category></category></item><item><title><![CDATA[LeetCode[239] Sliding Window Maximum]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83515082</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83515082</guid><author>ifwinds</author><pubDate>Mon, 29 Oct 2018 23:16:57 +0800</pubDate><description><![CDATA[Description
Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the slid...]]></description><category></category></item><item><title><![CDATA[数据结构与算法-队列]]></title><link>https://blog.youkuaiyun.com/ifwinds/article/details/83443120</link><guid>https://blog.youkuaiyun.com/ifwinds/article/details/83443120</guid><author>ifwinds</author><pubDate>Sat, 27 Oct 2018 08:05:37 +0800</pubDate><description><![CDATA[

定义
队列是ListInsert发生表尾、ListDelete发生在表头的线性表，主要操作：入队、出队。


术语
表头-队头，表尾-队尾，插入-入队，删除-出队


特点


先入先出（FIFO）


插入的位置是length+1，删除的位置的是1，一般读取第1个数据元素


循环队列
顺序队列的假溢出问题

队列上溢出

真上溢
队列真正满时再入队。
假上溢
rear已指向队尾，但队列前端...]]></description><category></category></item></channel></rss>