<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Dustin_CDS的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Dustin_CDS</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Dustin_CDS]]></copyright><item><title><![CDATA[后缀树]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79729085</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79729085</guid><author>Dustin_CDS</author><pubDate>Wed, 28 Mar 2018 15:59:16 +0800</pubDate><description><![CDATA[后缀树，就是把一串字符的所有后缀保存并且压缩的字典树。相对于字典树来说，后缀树并不是针对大量字符串的，而是针对一个或几个字符串来解决问题。比如字符串的回文子串，两个字符串的最长公共子串等等，后面应用会说。



一、建立后缀树

比如单词banana，它的所有后缀显示到下面的。1代表从第一个字符为起点，终点不用说都是字符串的末尾。  


以上面的后缀，我们建立一颗后缀树。如下图，为了方便看到后缀...]]></description><category></category></item><item><title><![CDATA[字典树-Trie树]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79726946</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79726946</guid><author>Dustin_CDS</author><pubDate>Wed, 28 Mar 2018 14:17:24 +0800</pubDate><description><![CDATA[一、概念

字典树，又称为单词查找树，Tire数，是一种树形结构，它是一种哈希树的变种。利用字符串的公共前缀来减少查询时间，最大限度的减少无谓的字符串比较。





1.1 基本性质


根节点不包含字符，除根节点外的每一个子节点都包含一个字符
从根节点到某一节点。路径上经过的字符连接起来，就是该节点对应的字符串
每个节点的所有子节点包含的字符都不相同






1.2 特性

1）根节点不包...]]></description><category></category></item><item><title><![CDATA[快排和堆排序]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79721261</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79721261</guid><author>Dustin_CDS</author><pubDate>Tue, 27 Mar 2018 23:31:32 +0800</pubDate><description><![CDATA[一、堆排序



5.1 堆的定义




用数组保存效率高，第 i 个节点保存在下标为 i 的位置，也就是 arry[0]空着。
第 i 个元素的左节点在 2 * i，右节点在 2 * i + 1。
一个节点的父节点在 i / 2 位置。
以一个size变量记录堆的大小。






5.2 堆的基本操作



5.2.1 提取最大元素



return array[1]





5.2.2...]]></description><category></category></item><item><title><![CDATA[简单排序算法]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79718063</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79718063</guid><author>Dustin_CDS</author><pubDate>Tue, 27 Mar 2018 19:40:54 +0800</pubDate><description><![CDATA[插入排序、希尔排序、选择排序、归并排序。

插入排序等时间复杂度为O(N^2)，任何通用的排序算法的时间复杂度都是O(N Log N)。



一、插入排序



import java.util.Arrays;

public class App {

    public static void main(String[] args) {
        int[] testArray = {...]]></description><category></category></item><item><title><![CDATA[海量数据处理]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79712609</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79712609</guid><author>Dustin_CDS</author><pubDate>Tue, 27 Mar 2018 14:23:01 +0800</pubDate><description><![CDATA[1、 海量日志数据，提取出访问次数最多的IP


  2^10 = 1024 = 1k   千
  
  2^20 = 1M   百万
  
  2^30 = 1G    十亿
  
  2^32 = 4G




传统方法：分治 + Hash

（1）一行一行处理日志，提取出IP，并对IP进行Hash取1024的模，也就是将 2^32 = 4G 个IP 分散到 1024 个小文件中，每个文件中包...]]></description><category></category></item><item><title><![CDATA[MapReduce原理]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79706721</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79706721</guid><author>Dustin_CDS</author><pubDate>Tue, 27 Mar 2018 01:10:10 +0800</pubDate><description><![CDATA[MapReduce是一个分布式并行计算引擎，基于它写出来的应用程序能够运行在由上千个机器组成的大型集群上，并以一种可靠、容错、并行的方式处理TB级别的数据集。

-



一、编程模型

这里我们以 WordCount 为实例：


  有一批文件，规模为 TB 级或者 PB 级，如何统计这些文件中所有单词出现的次数。


-

很理所应当的一个想法是，先统计每个文件中单词的频次，再合并累加不同文...]]></description><category></category></item><item><title><![CDATA[HDFS架构与原理]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79706298</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79706298</guid><author>Dustin_CDS</author><pubDate>Mon, 26 Mar 2018 23:36:02 +0800</pubDate><description><![CDATA[HDFS（Hadoop Distributed File System）是Hadoop项目的核心子项目，是分布式计算中数据存储管理的基础，可以运行于廉价的商用服务器上。



一、HDFS优缺点



1.1 优点

1、高容错性


数据自动保存多个副本。它通过增加副本的形式，提高容错性。
某一个副本丢失以后，它可以自动恢复，这是由 HDFS 内部机制实现的，我们不必关心。


2、适合批处理
...]]></description><category></category></item><item><title><![CDATA[Redis 存储一条用户信息]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79701975</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79701975</guid><author>Dustin_CDS</author><pubDate>Mon, 26 Mar 2018 18:28:33 +0800</pubDate><description><![CDATA[一、方式1

如果用普通的key/value结构来存储，主要有以下2种存储方式： 

第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储，  

​           如：set u001 “李三,18,20010101”  

​           这种方式的缺点是，增加了序列化/反序列化的开销，并且在需要修改其中一项信息时，需要把整个对象取回，并且修改操作需要对...]]></description><category></category></item><item><title><![CDATA[秒杀/抢红包/可扩展下单架构]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79692771</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79692771</guid><author>Dustin_CDS</author><pubDate>Mon, 26 Mar 2018 01:10:15 +0800</pubDate><description><![CDATA[下列解决方案可以满足：


秒杀
抢红包（需要增加一个红包预先拆分的逻辑）


等高并发场景。





一、削峰与异步化

对于秒杀系统瞬时会有大量用户涌入，所以在抢购一开始会有很高的瞬间峰值。高峰值流量是压垮系统很重要的原因，所以如何把瞬间的高流量变成一段时间平稳的流量也是设计秒杀系统很重要的思路。

利用Kafka消息队列缓存用户请求，后端的秒杀服务再按照自己的速率从消息队列拉取请求处理。
...]]></description><category></category></item><item><title><![CDATA[数据库索引总结]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79689959</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79689959</guid><author>Dustin_CDS</author><pubDate>Sun, 25 Mar 2018 20:06:17 +0800</pubDate><description><![CDATA[一、数据结构及算法基础

索引是一种数据结构，主要功能是提高数据库的查询效率。

目前最常用的索引数据结构就是B+树，我们先从介绍它开始。



1.1 B+树

B+树是一种多叉、平衡的排序查找树状结构，多用于外部查找。（平衡二叉树、红黑树多用于数据集不大的内部查找。）其节点分为三类：根节点、内部节点和叶子节点。

定义：


  （1）每个节点最多存放 m - 1 个数值；
  
  （2）每...]]></description><category></category></item><item><title><![CDATA[CGLib动态代理的底层原理]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79685620</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79685620</guid><author>Dustin_CDS</author><pubDate>Sun, 25 Mar 2018 12:41:48 +0800</pubDate><description><![CDATA[
JDK实现动态代理需要实现类通过接口定义业务方法。
CGLib采用了非常底层的字节码技术，其原理是通过目标类的字节码为一个类创建子类，并在子类中采用方法拦截的技术拦截所有父类方法的调用，顺势织入横切逻辑。
底层使用字节码处理框架ASM，来转换字节码并生成新的类。
更详细一点说，代理类将目标类作为自己的父类并为其中的每个非final委托方法创建两个方法： 
一个是与目标方法签名相同的方法，它在方法...]]></description><category></category></item><item><title><![CDATA[TCP与UDP的区别]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79683267</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79683267</guid><author>Dustin_CDS</author><pubDate>Sun, 25 Mar 2018 00:41:26 +0800</pubDate><description><![CDATA[


  TCP
  UDP



  可靠性
  可靠


  连接性
  面向连接


  报文
  面向字节流


  效率
  传输率低


  双工性
  全双工


  流量控制
  有(滑动窗口)


  拥塞控制
  有（慢开始、拥塞避免、快重传、快恢复）


  首部开销
  20字节






1 可靠性

TCP提供可靠的服务。也就是说，通过TCP连接传送的数据，无差错，不...]]></description><category></category></item><item><title><![CDATA[Spring事务的用法与原理]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79683141</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79683141</guid><author>Dustin_CDS</author><pubDate>Sun, 25 Mar 2018 00:06:08 +0800</pubDate><description><![CDATA[1. 事务ACID

Atomicity原子性：一个事务要么全部执行,要么不执行；

Consistency一致性：事务的运行并不改变数据库中数据的一致性，例如检查约束、非空约束、主键约束、外键约束；

Isolation隔离性：两个以上的事务不会出现交错执行的状态；

Durability持久性：事务执行成功以后,该事务对数据库所作的更改便是持久的保存在数据库之中，不会无缘无故的回滚；




...]]></description><category></category></item><item><title><![CDATA[Java与Spring注解的原理]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79681956</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79681956</guid><author>Dustin_CDS</author><pubDate>Sat, 24 Mar 2018 21:37:37 +0800</pubDate><description><![CDATA[注解（Annotation）提供了一种安全的类似注释的机制，为我们在代码中添加信息提供了一种形式化的方法，使我们可以在稍后某个时刻方便的使用这些数据，用来将任何的信息或者元数据与程序元素（类、方法、成员变量等）进行关联。

Annotation其实是一种接口，通过Java的反射机制相关的API来访问Annotation信息。相关框架或工具中的类根据这些信息来决定如何使用该程序元素或改变它们的行为。...]]></description><category></category></item><item><title><![CDATA[遍历中修改HashMap的Key]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79676286</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79676286</guid><author>Dustin_CDS</author><pubDate>Sat, 24 Mar 2018 11:38:23 +0800</pubDate><description><![CDATA[一、不可变对象



1.1 什么是不可变对象

immutable Objects就是那些一旦被创建，它们的状态就不能被改变的Objects，每次对他们的改变都是产生了新的immutable的对象，而mutable Objects就是那些创建后，状态可以被改变的Objects。

不可变的优势：

（1）提高效率。如果你知道一个对象是不可变的，那么需要拷贝这个对象的内容时，就不用复制它的本身而只...]]></description><category></category></item><item><title><![CDATA[带权重的随机Java实现]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79674292</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79674292</guid><author>Dustin_CDS</author><pubDate>Sat, 24 Mar 2018 01:15:08 +0800</pubDate><description><![CDATA[题目

淘宝里如果按照1-5星的店面，从五家店里一共推送出10个同一类产品，都是随机推送，但是最后大量的随机测试后，要保证五颗星的店家推送的商品数量大概是一颗星店家推送的商品数量的五倍，且不能破坏其他概率输出。





分析

这就是一个带权重的随机题。


  1星店铺的权重是1，2星店铺的权重是2，……，5星店铺的权重是5。


使用java.util.Random.nextInt(int ...]]></description><category></category></item><item><title><![CDATA[用URL请求页面流程]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79673841</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79673841</guid><author>Dustin_CDS</author><pubDate>Fri, 23 Mar 2018 23:17:45 +0800</pubDate><description><![CDATA[一、打开浏览器，地址栏输入blog.youkuaiyun.com。





二、开始进行域名解析



DNS 查找过程


浏览器缓存 —— 浏览器会缓存 DNS 记录一段时间，但是操作系统并没有告诉浏览器储存 DNS 记录的时间。于是，不同浏览器会储存各自的一个固定时间（ 2 分钟到 30 分钟不等）。
系统缓存 – 如果在浏览器缓存里没有找到需要的记录，浏览器会做一个系统调用（ Windows 里是 ...]]></description><category></category></item><item><title><![CDATA[下单系统水平可扩展框架]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79620005</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79620005</guid><author>Dustin_CDS</author><pubDate>Tue, 20 Mar 2018 01:19:41 +0800</pubDate><description><![CDATA[截图自《亿级流量网站架构核心技术》，作为笔记：

 
 
]]></description><category></category></item><item><title><![CDATA[容灾备份]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79619970</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79619970</guid><author>Dustin_CDS</author><pubDate>Tue, 20 Mar 2018 01:08:41 +0800</pubDate><description><![CDATA[1. 什么是双活数据中心

首先我们要知道双活就是Active-Active，故名思义就是两边都是活动在线提供服务的，是相对于传统的主备模式Active-Standby模式的。一个真正的双活方案是应该涵盖基础设施、中间件、应用程序各个层次的。

双数据中心同时对外提供业务生产服务的双活模式，两个数据中心是对等的、不分主从、并可同时部署业务，可极大的提高资源的利用率和系统的工作效率、性能，让客户从容...]]></description><category></category></item><item><title><![CDATA[支付宝的高可用与容灾架构演进]]></title><link>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79619361</link><guid>https://blog.youkuaiyun.com/Dustin_CDS/article/details/79619361</guid><author>Dustin_CDS</author><pubDate>Mon, 19 Mar 2018 23:15:32 +0800</pubDate><description><![CDATA[持续可用和快速容灾切换的能力，是技术人员追求的极致目标。在架构设计中，容灾设计强调的是系统对外界环境影响具备快速响应能力，节点级别的快速恢复能力，保障系统的持续可用。

去年12月18日，全球架构师峰会上，阿里巴巴高级系统工程师曾欢（善衡）结合互联网金融业务及系统特性，分享了在支付宝系统架构演进中，每个阶段的高可用和容灾能力建设的解决思路。

在架构设计中，作为系统高可用性技术的重要组成部分，容灾...]]></description><category></category></item></channel></rss>