后缀树

后缀树,就是把一串字符的所有后缀保存并且压缩的字典树。相对于字典树来说,后缀树并不是针对大量字符串的,而是针对一个或几个字符串来解决问题。比如字符串的回文子串,两个字符串的最长公共子串等等,后面应用会说。 一、建立后缀树 比如单词banana,它的所有后缀显示到下面的。1代表从第一个字符为...

2018-03-28 15:59:16

阅读数:141

评论数:0

字典树-Trie树

一、概念 字典树,又称为单词查找树,Tire数,是一种树形结构,它是一种哈希树的变种。利用字符串的公共前缀来减少查询时间,最大限度的减少无谓的字符串比较。 1.1 基本性质 根节点不包含字符,除根节点外的每一个子节点都包含一个字符 从根节点到某一节点。路径上经过的字符连接起来,就是...

2018-03-28 14:17:24

阅读数:100

评论数:0

快排和堆排序

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

2018-03-27 23:31:32

阅读数:109

评论数:0

简单排序算法

插入排序、希尔排序、选择排序、归并排序。 插入排序等时间复杂度为O(N^2),任何通用的排序算法的时间复杂度都是O(N Log N)。 一、插入排序 import java.util.Arrays; public class App { public static voi...

2018-03-27 19:40:54

阅读数:80

评论数:0

海量数据处理

1、 海量日志数据,提取出访问次数最多的IP 2^10 = 1024 = 1k 千 2^20 = 1M 百万 2^30 = 1G 十亿 2^32 = 4G 传统方法:分治 + Hash (1)一行一行处理日志,提取出IP,并对IP进行H...

2018-03-27 14:23:01

阅读数:88

评论数:0

MapReduce原理

MapReduce是一个分布式并行计算引擎,基于它写出来的应用程序能够运行在由上千个机器组成的大型集群上,并以一种可靠、容错、并行的方式处理TB级别的数据集。 - 一、编程模型 这里我们以 WordCount 为实例: 有一批文件,规模为 TB 级或者 PB 级,如何统计这些文件...

2018-03-27 01:10:10

阅读数:78

评论数:0

HDFS架构与原理

HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,可以运行于廉价的商用服务器上。 一、HDFS优缺点 1.1 优点 1、高容错性 数据自动保存多个副本。它通过增加副本的形式,提高容错性。 某一...

2018-03-26 23:36:02

阅读数:95

评论数:0

Redis 存储一条用户信息

一、方式1 如果用普通的key/value结构来存储,主要有以下2种存储方式: 第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储, ​ 如:set u001 “李三,18,20010101” ​ 这种方式的缺点...

2018-03-26 18:28:33

阅读数:745

评论数:0

秒杀/抢红包/可扩展下单架构

下列解决方案可以满足: 秒杀 抢红包(需要增加一个红包预先拆分的逻辑) 等高并发场景。 一、削峰与异步化 对于秒杀系统瞬时会有大量用户涌入,所以在抢购一开始会有很高的瞬间峰值。高峰值流量是压垮系统很重要的原因,所以如何把瞬间的高流量变成一段时间平稳的流量也是设计秒杀系统很重要的...

2018-03-26 01:10:15

阅读数:140

评论数:0

数据库索引总结

一、数据结构及算法基础 索引是一种数据结构,主要功能是提高数据库的查询效率。 目前最常用的索引数据结构就是B+树,我们先从介绍它开始。 1.1 B+树 B+树是一种多叉、平衡的排序查找树状结构,多用于外部查找。(平衡二叉树、红黑树多用于数据集不大的内部查找。)其节点分为三类:根节点、内...

2018-03-25 20:06:17

阅读数:121

评论数:0

CGLib动态代理的底层原理

JDK实现动态代理需要实现类通过接口定义业务方法。 CGLib采用了非常底层的字节码技术,其原理是通过目标类的字节码为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。 底层使用字节码处理框架ASM,来转换字节码并生成新的类。 更详细一点说,代理类将目标类作为...

2018-03-25 12:41:48

阅读数:1283

评论数:0

TCP与UDP的区别

TCP UDP 可靠性 可靠 连接性 面向连接 报文 面向字节流 效率 传输率低 双工性 全双工 流量控制 有(滑动窗口) 拥塞控制 有(慢开始、拥塞避免、快重传、快恢复) 首部开销 2...

2018-03-25 00:41:26

阅读数:61

评论数:0

Spring事务的用法与原理

1. 事务ACID Atomicity原子性:一个事务要么全部执行,要么不执行; Consistency一致性:事务的运行并不改变数据库中数据的一致性,例如检查约束、非空约束、主键约束、外键约束; Isolation隔离性:两个以上的事务不会出现交错执行的状态; Durability持久性...

2018-03-25 00:06:08

阅读数:496

评论数:0

Java与Spring注解的原理

注解(Annotation)提供了一种安全的类似注释的机制,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻方便的使用这些数据,用来将任何的信息或者元数据与程序元素(类、方法、成员变量等)进行关联。 Annotation其实是一种接口,通过Java的反射机制相关的API来访...

2018-03-24 21:37:37

阅读数:75

评论数:0

遍历中修改HashMap的Key

一、不可变对象 1.1 什么是不可变对象 immutable Objects就是那些一旦被创建,它们的状态就不能被改变的Objects,每次对他们的改变都是产生了新的immutable的对象,而mutable Objects就是那些创建后,状态可以被改变的Objects。 不可变的优势:...

2018-03-24 11:38:23

阅读数:2509

评论数:0

带权重的随机Java实现

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

2018-03-24 01:15:08

阅读数:533

评论数:0

用URL请求页面流程

一、打开浏览器,地址栏输入blog.csdn.net。 二、开始进行域名解析 DNS 查找过程 浏览器缓存 —— 浏览器会缓存 DNS 记录一段时间,但是操作系统并没有告诉浏览器储存 DNS 记录的时间。于是,不同浏览器会储存各自的一个固定时间( 2 分钟到 30 分钟不等)。...

2018-03-23 23:17:45

阅读数:81

评论数:0

下单系统水平可扩展框架

截图自《亿级流量网站架构核心技术》,作为笔记:

2018-03-20 01:19:41

阅读数:91

评论数:0

容灾备份

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

2018-03-20 01:08:41

阅读数:132

评论数:0

支付宝的高可用与容灾架构演进

持续可用和快速容灾切换的能力,是技术人员追求的极致目标。在架构设计中,容灾设计强调的是系统对外界环境影响具备快速响应能力,节点级别的快速恢复能力,保障系统的持续可用。 去年12月18日,全球架构师峰会上,阿里巴巴高级系统工程师曾欢(善衡)结合互联网金融业务及系统特性,分享了在支付宝系统架构演进中...

2018-03-19 23:15:32

阅读数:69

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭