<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[FastText的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/FastText</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; FastText]]></copyright><item><title><![CDATA[TypeScript 可索引类型详细介绍]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/125927576</link><guid>https://blog.youkuaiyun.com/FastText/article/details/125927576</guid><author>FastText</author><pubDate>Fri, 22 Jul 2022 10:42:43 +0800</pubDate><description><![CDATA[TypeScript中的可索引类型类似于其他编程语言中的字典（key-value形式），例如 `user[10]`或`user["Tom"]`，应该从字典的角度去学习，这样更合理。与使用接口描述函数差不多，我们也可以用接口来定义可索引类型。...]]></description><category></category></item><item><title><![CDATA[TypeScript 接口继承]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/125651057</link><guid>https://blog.youkuaiyun.com/FastText/article/details/125651057</guid><author>FastText</author><pubDate>Thu, 07 Jul 2022 06:53:56 +0800</pubDate><description><![CDATA[和类一样，接口也可以通过关键字 extents 相互继承。接口继承，分为：单继承和多继承，即继承多个接口。另外，接口也可以继承类，它会继承类的成员，但不包括具体的实现，只会把类的成员作为一种声明。本文主要总结一下TypeScript 接口继承，方便大家进行系统化的学习。...]]></description><category></category></item><item><title><![CDATA[TypeScript let与var的区别]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/125582018</link><guid>https://blog.youkuaiyun.com/FastText/article/details/125582018</guid><author>FastText</author><pubDate>Sun, 03 Jul 2022 10:48:41 +0800</pubDate><description><![CDATA[TypeScript let与var的区别]]></description><category></category></item><item><title><![CDATA[TypeScript 枚举(enum)]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/125308564</link><guid>https://blog.youkuaiyun.com/FastText/article/details/125308564</guid><author>FastText</author><pubDate>Thu, 16 Jun 2022 07:06:57 +0800</pubDate><description><![CDATA[TypeScript变量作用域：变量的作用域是指变量有效性的范围，就是用户自定义的变量可以使用的代码范围，它与变量定义的位置密切相关。]]></description><category></category></item><item><title><![CDATA[SQL数据分析：从基础破冰到面试题解]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/123359161</link><guid>https://blog.youkuaiyun.com/FastText/article/details/123359161</guid><author>FastText</author><pubDate>Tue, 08 Mar 2022 17:46:52 +0800</pubDate><description><![CDATA[推荐一本好书：SQL数据分析：从基础破冰到面试题解]]></description><category></category></item><item><title><![CDATA[Raft算法系列教程4：日志不一致的解决]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/111998686</link><guid>https://blog.youkuaiyun.com/FastText/article/details/111998686</guid><author>FastText</author><pubDate>Wed, 30 Dec 2020 21:34:13 +0800</pubDate><description><![CDATA[网络不可能一直处于正常情况，因为Leader或者某个Follower有可能会崩溃，从而导致日志不能一直保持一致。因此存在以下三种情况:
（1）Follower缺失当前Leader上存在的日志条目。
（2）Follower存在当前Leader不存在的日志条目。(比如旧的Leader仅仅将AppendEntries RPC消息发送到一部分Follower就崩溃掉，然后新当选Leader的服务器恰好是没有收到该AppendEntries RPC消息的服务器)
（3）Follower即缺失当前Leader上存在的日]]></description><category></category></item><item><title><![CDATA[Raft算法系列教程3：日志复制]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/111823683</link><guid>https://blog.youkuaiyun.com/FastText/article/details/111823683</guid><author>FastText</author><pubDate>Sun, 27 Dec 2020 18:04:27 +0800</pubDate><description><![CDATA[1、日志复制的过程
Leader选出后，就开始接收客户端的请求。Leader把请求作为日志条目（Log entries）加入到它的日志中，然后并行的向其他服务器发起 AppendEntries RPC 复制日志条目。当这条日志被复制到大多数服务器上，Leader将这条日志应用到它的状态机并向客户端返回执行结果。
客户端的每一个请求都包含被复制状态机执行的指令。Leader把这个指令作为一条新的日志条目添加到日志中，然后并行发起 RPC 给其他的服务器，让它们复制这条信息。假如这条日志被安全的复制，Leade]]></description><category></category></item><item><title><![CDATA[Raft算法系列教程2：状态机复制 (State Machine Replication)]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/111599476</link><guid>https://blog.youkuaiyun.com/FastText/article/details/111599476</guid><author>FastText</author><pubDate>Wed, 23 Dec 2020 21:21:35 +0800</pubDate><description><![CDATA[分区容错如何保证？
在分布式系统设计中，需要遵循CAP理论，如果我们要让一个服务具有容错能力，那么最常用最直接的办法就是让一个服务的多个副本同时运行在不同的节点上。但是，当一个服务的多个副本都在运行的时候，我们如何保证它们的状态都是同步的呢，或者说，如果让客户端看起来无论请求发送到哪一个服务副本，最后都能得到相同的结果？实现这种同步方法就是所谓的状态机复制（State Machine Replication）。
状态机复制的理论基础是：如果集群里的每一个节点上都运行着相同的确定性状态机S，并且所有的状态机刚]]></description><category></category></item><item><title><![CDATA[Raft算法系列教程1：Leader选举]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/111411488</link><guid>https://blog.youkuaiyun.com/FastText/article/details/111411488</guid><author>FastText</author><pubDate>Sat, 19 Dec 2020 22:32:57 +0800</pubDate><description><![CDATA[Raft将分布式一致性分解为多个子问题：Leader选举（Leader election）、日志复制（Log replication）、安全性（Safety）、日志压缩（Log compaction）等。本系列内容将逐个子问题进行介绍，欢迎大家关注和收藏，本系列不断有更新，请记得回头查阅！

1、服务器的三种角色
Raft算法中服务器主要分为三种角色：Leader、Follower、Candidate，并且三种角色相互独立，也就是服务器在同一时间内只可能扮演其中一种角色。
Leader：用于对所有用户的请.]]></description><category></category></item><item><title><![CDATA[MyBatis @Select注解介绍：基本用法与动态SQL拼写]]></title><link>https://blog.youkuaiyun.com/FastText/article/details/108173845</link><guid>https://blog.youkuaiyun.com/FastText/article/details/108173845</guid><author>FastText</author><pubDate>Sat, 22 Aug 2020 20:30:16 +0800</pubDate><description><![CDATA[这里写自定义目录标题
@Select注解的目的是为了取代xml中的select标签，只作用于方法上面。下面看一下@Select注解的源码介绍：
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Select
{
    String[] value();
}

从上述可以看到两点信息：
（1）@Select注解只能修饰方法
（2）@Select注解的值是字符数组。
所以，@Select注解的用法]]></description><category></category></item></channel></rss>