摘要:我们都知道单链表有一个致命的弱点,查找任一节点都至少 O(n) 的时间复杂度,它需要遍历一遍整个链表,那么有没有办法提升链表的搜索效率? 跳跃表(SkipList)这种数据结构使用空间换时间的策略,通过给链表建立多层索引来加快搜索效率,我们先介绍跳跃表的基本理论,再来看看 redis 中的实现情况。 阅读全文
posted @ 2019-10-12 20:44 Single_Yam 阅读 (132) 评论 (2) 编辑
摘要:字典相对于数组,链表来说,是一种较高层次的数据结构,像我们的汉语字典一样,可以通过拼音或偏旁唯一确定一个汉字,在程序里我们管每一个映射关系叫做一个键值对,很多个键值对放在一起就构成了我们的字典结构。 有很多高级的字典结构实现,例如我们 Java 中的 HashMap 底层实现,根据键的 Hash 值 阅读全文
posted @ 2019-09-22 16:07 Single_Yam 阅读 (181) 评论 (0) 编辑
摘要:Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。可能几乎所有的线上项目都会使用到 Redis,无论你是做缓存、或是用作消息中间件,用起来很简单方便,但可能大多数人并没有去深入底层的看看 Redis 的一些策略实现等等细节。 正好最近也在项目开发中 阅读全文
posted @ 2019-09-15 11:16 Single_Yam 阅读 (209) 评论 (0) 编辑
摘要:前面的几篇文章中,我们大体上介绍了 SQL 中基本的创建、查询语句,甚至也学习了相对复杂的连接查询和子查询,这些基本功相信你也一定掌握的不错,那么本篇则着重介绍几个技巧方面的关键字,能够让你更快更有效率的写出一些 SQL。 起别名 在实际的项目中,有时候我们的表名、字段名过于复杂以致于我们的 SQL 阅读全文
posted @ 2019-03-05 09:14 Single_Yam 阅读 (717) 评论 (3) 编辑
摘要:上一篇文章中,我们介绍了 SQL 中最基本的 DML 语法,包括 insert 的插入数据、update 的更新数据、delete 的删除数据以及基本的查询语法,但大多比较简单不能解决我们日常项目中复杂的需求。 那么,本篇就来看一看较为复杂繁琐的查询语法,例如多表的连接查询、嵌套的子查询以及很多预定 阅读全文
posted @ 2019-02-26 09:24 Single_Yam 阅读 (535) 评论 (2) 编辑
摘要:上篇文章,我们介绍了数据的基本 DDL 语句,你应当具备基本的创建数据库、数据表的 SQL 语句,以及表字段的基本数据类型的熟知。 那么本篇就来总结总结大家日常最频繁接触到的 DDM 语句,也就是基本的增删改查 SQL。 数据的修改 众所周知的是,我们的项目中,有百分之八十的操作都是在查询,而仅有百 阅读全文
posted @ 2019-02-22 09:36 Single_Yam 阅读 (673) 评论 (0) 编辑
摘要:上篇文章,我们基于『数据库』做了一个宏观上的介绍,你应当了解到数据库是在何种背景下,为了解决什么样的问题而诞生的,以及在具体实现下又可以划分哪些中类型。 非关系型数据库的种类很多,我们会在后续的篇章中进行介绍,数据库这块我们还是以目前当下主流的关系型数据库进行学习。 SQL 是什么 我们看看 SQL 阅读全文
posted @ 2019-02-19 09:36 Single_Yam 阅读 (163) 评论 (0) 编辑
摘要:从本篇起,我们就开始对『数据库』相关概念内容的介绍,除了介绍基本的名词概念以及他们的使用情况外,我们还会深入到源码层面去探究一些底层实现,例如索引、视图、触发器等技术在数据库引擎层是如何支持的。 那么第一篇,我们将针对『数据库』做一个最基本的介绍,弄清楚什么是数据库?数据库的类型有哪些?以及使用数据 阅读全文
posted @ 2019-02-15 09:16 Single_Yam 阅读 (560) 评论 (0) 编辑
摘要:以前的文章中,我们介绍了太多的底层原理技术以及新概念,本篇我们轻松点,了解下 Java 并发包下、基于这些底层原理的三个框架工具类。 它们分别是: 信号量 Semaphore 倒计时门栓 CountDownLatch 屏障 CyclicBarrier 所以,既然是工具类,那么必然是离不开特定的场景的 阅读全文
posted @ 2019-02-01 09:27 Single_Yam 阅读 (1330) 评论 (2) 编辑
摘要:从名字上看,『ThreadLocal』可能会给你一种本地线程的概念印象,可能会让你联想到它是一个特殊的线程。 但实际上,『ThreadLocal』却营造了一种「线程本地变量」的概念,也就是说,同一个变量在每个线程的内部,都有一份副本,且相互之间具有不同的取值。 这样的设计具有怎样的应用场景呢?是怎么 阅读全文
posted @ 2019-01-29 09:18 Single_Yam 阅读 (461) 评论 (1) 编辑