缓存数据库Redis
摘要:1、主流应用架构。 1)、客户端向后端发送请求的时候,会先去缓存层查询,查询看看是否有符合的数据。 2)、如果有的话,直接返回。 3)、如果在缓存层没有查询到,才回去存储层去查询。 4)、去存储层查询叫做穿透查询,就是穿透缓存去存储层进行查询。 5)、从存储层查询出的数据回写到缓存层,方便下次查询的
阅读全文
posted @
2020-03-31 10:31
别先生
阅读(800)
推荐(0) 编辑
数据库之Mysql的常见面试问题
摘要:1、为什么要使用索引? 答:如果进行全表扫描,将整个数据表的数据全部或者分批次加载到内存当中,存储的最小单位是块或者页,它们是由多行数据来组成的,将这些块都加载进来,逐个块去轮询,找到我们要的目标并返回,这种方式非常的慢,但是如果数据量小的话,这种方式也非常快的。如果数据量过大,就要避免全表扫描的情
阅读全文
posted @
2020-03-28 19:33
别先生
阅读(1549)
推荐(0) 编辑
数据结构之红黑树
摘要:1、什么是红黑树? 红黑树和红色和黑色这两种颜色有关,事实上,在红黑树中,对每一个节点都附着一个颜色,或者是红色或者是黑色。红黑树首先是一棵二分搜索树,这一点和AVL树是一样的,红黑树也是一种平衡二叉树,红黑树在二分搜索树中添加了一些其它的性质,来保证红黑树不会退化成链表,来保证自己在某种情况下是一
阅读全文
posted @
2020-03-24 11:23
别先生
阅读(726)
推荐(0) 编辑
数据结构之线段树
摘要:1、什么是线段树(也称为区间树)Segment Tree。为什么使用线段树,线段树解决了什么问题,对于有一类问题,我们关心的是线段(或者区间)。 比如,最经典的线段树问题,区间染色问题。另一类经典问题就是区间查询。这两种经典问题,可以使用数组来实现,如果使用数组来进行更新和查询操作的话,时间复杂度是
阅读全文
posted @
2020-03-19 20:22
别先生
阅读(259)
推荐(0) 编辑
力扣LeetCode,区域和检索 - 数组可修改
摘要:1、给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。 示例: 1 Given nums = [1, 3, 5] 2 3 sumRange
阅读全文
posted @
2020-03-19 20:19
别先生
阅读(375)
推荐(0) 编辑
力扣LeetCode,区域和检索 - 数组不可变
摘要:1、给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 示例: 1 给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange() 2 3 sumRange(0, 2) -> 1 4 sumRange(2
阅读全文
posted @
2020-03-19 18:37
别先生
阅读(302)
推荐(0) 编辑
力扣LeetCode,前 K 个高频元素
摘要:1、优先队列的经典问题,在1000000个元素中选出前100名元素,题型模式如在N个元素中选出前M个元素。 在这里面的关键就是M远远小于N的,如果M是1,是很简单的,只需要遍历一遍,此时时间复杂度是O(n)级别的,但是此时要选出前M个元素,如果M不等于1的话,就有点麻烦了,此时也可以将100万个元素
阅读全文
posted @
2020-03-18 11:40
别先生
阅读(528)
推荐(0) 编辑
数据结构之优先队列
摘要:1、优先队列的底层实现可以使用最大堆进行实现,由于优先队列本身就是一个队列,所以可以复用队列的接口。 2、首先,将定义好的Queue接口,创建好,可以让优先队列实现该接口之后,实现这些接口的方法。 1 package com.queue; 2 3 /** 4 * 5 */ 6 public inte
阅读全文
posted @
2020-03-18 10:01
别先生
阅读(488)
推荐(0) 编辑
数据结构之堆
摘要:树结构的不同形态,堆、线段树、字段树、并查集,四种不同的树形数据结构。 1、优先队列,本身就是一种队列。普通队列,先进先出,后进后出。优先队列,出队顺序和入队顺序无关,和优先级有关,优先级高者先得,优先级高的先出队。 类别 入队 出队(拿出最大元素) 普通线性结构(数组、链表等) O(1),直接将新
阅读全文
posted @
2020-03-18 09:39
别先生
阅读(325)
推荐(0) 编辑
力扣LeetCode,两个数组的交集 II
摘要:1、给定两个数组,编写一个函数来计算它们的交集。 示例 1: 1 输入: nums1 = [1,2,2,1], nums2 = [2,2] 2 输出: [2,2] 示例 2: 1 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 2 输出: [4,9] 说明: 输出结
阅读全文
posted @
2020-03-15 12:32
别先生
阅读(304)
推荐(0) 编辑
力扣LeetCode,两个数组的交集
摘要:1、给定两个数组,编写一个函数来计算它们的交集。 示例 1: 1 输入: nums1 = [1,2,2,1], nums2 = [2,2] 2 输出: [2] 示例 2: 1 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 2 输出: [9,4] 说明: 输出结果中
阅读全文
posted @
2020-03-15 11:39
别先生
阅读(532)
推荐(0) 编辑
数据结构之映射Map
摘要:1、映射Map,存储键值数据对的数据结构(key,value),可以根据键key快速寻找到值Value,可以使用链表或者二分搜索树实现的。 首先定义一个接口,可以使用链表或者二分搜索树进行实现。 1 package com.map; 2 3 /** 4 * @ProjectName: dataCon
阅读全文
posted @
2020-03-15 10:50
别先生
阅读(728)
推荐(0) 编辑
力扣LeetCode,唯一摩尔斯密码词
摘要:1、国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。 为了方便,所有26个英文字母对应摩尔斯密码表如下: 1 [".-","-...","-.-.","-.."
阅读全文
posted @
2020-03-15 10:29
别先生
阅读(415)
推荐(0) 编辑
数据结构之集合Set
摘要:1、高层的数据结构,集合Set和映射Map,什么是高层的数据结构呢,比如说是栈和队列,这种数据结构更像是先定义好了使用接口,有了这些使用接口,包括数据结构本身所维持的一些性质,可以很方便的放入到一些应用中,但是底层实现可以多种多样的,比如栈和队列,底层实现既可以是动态数据,也可以是链表。 集合就是承
阅读全文
posted @
2020-03-14 17:23
别先生
阅读(1193)
推荐(0) 编辑
数据结构之树-第二篇
摘要:数据结构之树-第一篇 1、此时,将元素30从队首拿出来,进行访问,之后将30的左孩子29、右孩子42入队,那么此时队首元素就是13了。 此时,将将元素13从队首拿出来,进行访问,之后将13的左孩子、右孩子入队,由于13是叶子节点没有左右孩子,所以没有元素入队了。 此时,看队首元素是22,将元素22从
阅读全文
posted @
2020-03-13 16:14
别先生
阅读(221)
推荐(0) 编辑
数据结构之树-第一篇
摘要:1、二分搜索树,数据存储的方式是一种树结构。而线性数据结构,把所有的数据排成一排的。为什么需要树结构呢,因为树结构本身是一种天然的组织结构,使用树结构非常高效。将数据使用树结构存储后,效率是出奇的高效。 二分搜索树(Binary Search Tree)具有一定的局限性,所以引入了平衡二叉树,平衡二
阅读全文
posted @
2020-03-12 16:09
别先生
阅读(439)
推荐(0) 编辑
数据结构之链表与递归
摘要:1、提起链表,有一块非常重要的内容,就是递归,这是因为链表本身具有天然的递归性,同时,链表也是一种结构非常简单的数据结构,使得链表是一种非常好的来学习和研究递归这种逻辑机制的数据结构。 2、使用一个简单的案例,数组求和,使用递归算法进行计算。案例,如下所示: 1 package com.array;
阅读全文
posted @
2020-03-09 15:49
别先生
阅读(2395)
推荐(1) 编辑
力扣LeetCode,移除链表元素
摘要:1、删除链表中等于给定值val的所有节点。 1 示例: 2 3 输入: 1->2->6->3->4->5->6, val = 6 4 输出: 1->2->3->4->5 首先,结合给定的条件,此类ListNode就是一个实现了一个节点,节点包含存储元素的val变量和指向下一个节点的Node类型的ne
阅读全文
posted @
2020-03-07 22:30
别先生
阅读(446)
推荐(0) 编辑
数据结构之链表,使用链表实现栈以及使用链表实现队列
摘要:1、结合之前实现的链表这个数据结构,如果只对链表的头部进行增加和删除,时间复杂度是O(1)的,只对链表的头部进行查询的话,时间复杂度是O(1)的。那么,满足这样的数据结构是什么呢,就是栈,栈这种数据结构是后入先出的,或者先进后出的,只对栈的一端,就是栈顶进行操作,无论是添加元素、删除元素、查询元素,
阅读全文
posted @
2020-03-07 17:25
别先生
阅读(1045)
推荐(0) 编辑
数据结构之链表
摘要:1、线性数据结构,动态数组、栈、队列,底层依托静态数组,靠resize解决固定容量问题。 2、为什么链表很重要? 1)、最基础的动态数据结构,链表。真正得动态数据结构,最简单的一种动态数据结构。更为复杂的有二分搜索树、平衡二叉树、红黑树等等。 2)、链表设计到一个,更深入的理解引用(或者在C++中称
阅读全文
posted @
2020-03-07 11:21
别先生
阅读(1109)
推荐(0) 编辑
Mysql如何查字段的长度,Mysql中length()、char_length()的区别
摘要:1、今天发生了一件有意思的事情,传输的数据大于标准定的字段长度了,我把字段长度调大了,把数据传输过来了。谁知道,人家的数据不符合标准,要删除了重新搞,那么你如何将超长的数据删除呢,或者将超长的数据查询出来。 答:剧透一下,其实使用char_length()查询出来的,就可以把这些删除掉,然后将调大的
阅读全文
posted @
2020-03-01 13:53
别先生
阅读(70887)
推荐(5) 编辑