摘要:
数据库索引及其优化 索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进 阅读全文
摘要:
关系数据库设计理论 函数依赖 记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。 如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。 对于 A->B,如果能找到 A 的真子集 A',使得 A'- 阅读全文
摘要:
根据给出的先序遍历和中序遍历,画出二叉树。 先序遍历:DBACEGF 中序遍历:ABCDEFG 首先我们来看一下三种遍历方式: 1)先序遍历二叉树 (1)访问根节点 (2)先序遍历跟的左子树 (3)先序遍历根的右子树 2)中序遍历二叉树 (1)中序遍历根的左子树 (2)访问根节点 (3)中序遍历根的 阅读全文
摘要:
ThreadLocal ThreadLocal,直译为"线程本地"或"本地线程",如果你真的这么认为,那就错了!其实,它就是一个容器,用于存放线程的局部变量,我认为应该叫做 ThreadLocalVariable(线程局部变量)才对,真不理解为什么当初 Sun 公司的工程师这样命名。 早在 JDK 阅读全文
摘要:
Proxy,也就是"代理"了。意思就是,你不用去做,别人代替你去处理。比如说:赚钱方面,我就是我老婆的 Proxy;带小孩方面,我老婆就是我的 Proxy;家务事方面,没有 Proxy。 它在程序开发中起到了非常重要的作用,比如传说中的 AOP(面向切面编程),就是针对代理的一种应用。此外,在设计模 阅读全文
摘要:
Redis 一、概述 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片 阅读全文
摘要:
Java中的HashMap低层实现原理 JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现 阅读全文
摘要:
Java中的synchronized以及读写锁 什么是同步? 在一个多线程的环境中,多个线程同时访问相同的资源的情况是存在的。例如,两个线程试图写入同一个文本文件。它们之间没有任何的同步,当两个或多个线程对同一文件具有写访问权时,写入该文件的数据可能会损坏。同理,在JVM中,每个线程在各自的栈上存储 阅读全文
摘要:
AOP AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之。翻译过来就是"面向方面编程",可我更倾向于翻译为"面向切面编程"。它听起有些的神秘,为什么呢?当你看完这篇文章的时候,就会知道,我们 阅读全文
摘要:
PageRank算法 1. PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左側排名或佩奇排名。 是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该算法也成为其他搜索引擎和 阅读全文
摘要:
KMP算法 暴力匹配算法 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有: 如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下 阅读全文
摘要:
区间树 注意:区间树和线段树不一样哦,线段树是一种特殊的区间树。 区间树: 区间树是在红黑树基础上进行扩展得到的支持以区间为元素的动态集合的操作,其中每个节点的关键值是区间的左端点。通过建立这种特定的结构,可是使区间的元素的查找和插入都可以在O(lgn)的时间内完成。相比于基础的红黑树数据结构,增加 阅读全文
摘要:
最大流 网络流的英文名是network flows,但是具体它是什么呢? 在这里我们可以把它看作很多现实中存在的东西,当然也是一些网络流能解决的东西,比方说水管流量,电力分配,运输货物时的物流问题,匹配问题等。 网络是一个各条边都有权值和方向的图。 给定一个有向图G=(V,E), 把图中的边看作管道 阅读全文
摘要:
单源最短路径 在最短路径问题中,我们给定一个带权重的有向图和权重函数, 该权重函数将每条边映射到实数值的权重上。图中一条路径的权重是构成该路径的所有边的权重之和: 定义从结点u到结点v的最短路径权重如下: 从结点u到结点v的最短路径则定义为任何一条权重为的从u到v的路径p。 最短路径的几个变体 单源 阅读全文
摘要:
散列表 散列表是普通数组概念的推广。由于普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置。如果存储空间允许,我们可以提供一个数组,为每个可能的关键字保留一个位置,以利用直接寻址技术的优势。 直接寻址表 当关键字的全域U比较小时,直接寻址是一种简单而有效的技术。假设某应用要用到一个动态 阅读全文