这是程序员cxuan的第三期分享前言谈到并发,我们不得不说AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,内部定义了很多锁相关的方法,我们熟知的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore等都是基于AQS来实现的。我们先看下AQS相关的UML图:思维导图(高清无损AV
分类:
其他好文 时间:
2020-08-10 10:58:33
阅读次数:
66
存储引擎 很多文章都是直接开始介绍有哪些存储引擎,并没有去介绍存储引擎本身。那么究竟什么是存储引擎?不知道大家有没有想过,MySQL是如何存储我们丢进去的数据的? 其实存储引擎也很简单,我认为就是一种存储解决方案,实现了新增数据、更新数据和建立索引等等功能。 有哪些已有的存储引擎可以让我们选择呢? ...
分类:
数据库 时间:
2020-07-28 14:34:39
阅读次数:
85
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是 ...
分类:
其他好文 时间:
2020-07-24 21:40:36
阅读次数:
62
方法一:Map加双向链表 class LRUCache { class Node { public int key, val; Node pre,next; public Node() {} public Node(int k, int v) { key = k; val = v; } } priv ...
分类:
其他好文 时间:
2020-07-23 23:01:59
阅读次数:
105
1、链表是通过“指针”将一组零散的内存块串联起来的数据结构2、链表可以分为单链表、双向链表和单/双向循环链表2.1、删除链表中等于某个值的节点,单链表和双向链表的时间复杂度一样2.2、由于双向列表可以直接找到前驱结点,所以删除指定的节点,双向链表比单向链表高;同时在链表的某个指定结点前面添加一个结点 ...
分类:
编程语言 时间:
2020-07-22 02:11:20
阅读次数:
69
近来有小伙伴问我:刷leetcode真的有用吗,觉得收益很小,越刷越迷茫了... 诚然每个人刷题的目的不一样,233酱还不是为了能水几篇文章... 当然不止。我觉得刷题是一件有意思的事,就像小猫小狗咬自己尾巴,玩弄的不亦乐乎。比喻可能不太恰当,是有种沉迷小游戏的感觉。可是在艰难打野的过程中,我们不要 ...
分类:
编程语言 时间:
2020-07-22 01:58:01
阅读次数:
64
问题 (1)LinkedList只是一个List吗? (2)LinkedList还有其它什么特性吗? (3)LinkedList为啥经常拿出来跟ArrayList比较? (4)我为什么把LinkedList放在最后一章来讲? 简介 LinkedList是一个以双向链表实现的List,它除了作为Lis ...
分类:
其他好文 时间:
2020-07-13 18:05:58
阅读次数:
63
双向链表类: 单链表只有一个方向的链接,只能做一个方向的扫描和逐步操作。 两端插入和删除操作都能高效完成,就必须修改结点的基本设计,加入另一个方向的链接。 结点增加了一个链接域,增加的空间开销与结点数成正比。 p.prev.next = p.next p.next.prev = p.prev 双向链 ...
分类:
编程语言 时间:
2020-07-12 22:33:55
阅读次数:
75
概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用 Array 存储对象方面具有一些弊端,而 Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中 数组在内存存储方面的特点 数组初始化以后,长度就确定了 数组声明的类型, ...
分类:
其他好文 时间:
2020-07-12 18:43:50
阅读次数:
78
题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。 要求不能创建任何新的节点,只能调整树中节点指针的指向。我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。“he ...
分类:
编程语言 时间:
2020-07-11 00:26:16
阅读次数:
74