- 博客(8)
- 收藏
- 关注
原创 Redis 缓存实战——缓存、数据库一致性问题分析与解决方案
引言缓存与数据库一致性的问题自从出现了缓存概念后就一直被提及,它是一个缓存方案的先天缺陷,只要存在缓存,就势必会讨论缓存与数据库一致性的问题。一致性问题还广泛存在于各种分布式存储场景中,如主从一致性等等。本篇博客讨论和整理了缓存、数据库一致性问题的一些思路,在实际的缓存业务场景中,可以对技术实现的起到一定指导作用。一、为什么会出现一致性问题缓存作为应用程序与数据库之间的数据存储池,主要作用就是热数据备份的作用,它的主要目的就是提高热数据的查询效率。因此,在读取缓存方面,普遍的做法是没有疑
2021-05-09 14:27:43 597
原创 Java多线程 —— 线程的生命周期与状态迁移
线程状态迁移是非常重要的多线程基础知识,在调试多线程问题的时候,能够发挥很大的作用。6 种状态不仅要熟记,而且在什么情况下会出现这些状态也要清晰明了。如果条件允许,可以试着通过不同的方法来模拟线程的六种状态的切换,可以加深对线程生命周期的理解。
2021-05-31 23:23:10 500 3
原创 排序算法 —— 堆排序
引言此文基于《经典数据结构——堆的实现》中堆结构,实现一个以堆处理排序的算法。一、算法思想基于堆结构的堆排序的算法思想非常简单,循环获取大根堆中的最大值(0位置的根节点)放到堆的末尾,直到将堆拿空。由于一个现成的大根堆可以实现 O(1) 时间复杂度的最大值返回,因此堆排序的主要时间消耗就是在 heapInsert 或 heapify 这类维护大根堆结构的过程上。二、代码演示首先将数组从0开始,模拟逐个放入的过程,循环 heapInsert 建堆。然后以整个数组为堆,模拟循环取
2021-05-22 11:43:00 412
原创 经典数据结构——堆的实现
一、完全二叉树堆是一种完全二叉树,什么是完全二叉树?简单的说,一棵满二叉树表示的是所有节点全部饱和,最后一层全部占满:而完全二叉树指的是满二叉树的最后一层,所有叶子节点都从左往顺序排满:完全二叉树的特点非常简单,除了最后一层,其他各层节点都是满的,而最后一层,所有要求所有节点从左往右依次排满。它并不关心节点元素的大小,只与这一特定结构有关。二、堆结构前面说到,堆是一种特殊的完全二叉树,除了符合完全二叉树的结构特点,它还有另一个特性,由这个特性,我们又可以将堆分为——大根堆、小
2021-05-15 23:12:35 932
原创 比较器的使用
一、TreeMap 实现排序TreeMap是一个有序结构,TreeSet也是类似。他们可以实现对元素的排序。TreeMap 是针对 key进行排序。如果TreeMap的key 是Integer类型,可以无需指定任何特殊条件,默认即按照升序进行排序,如: public static void main(String[] args) { Object value = new Object(); TreeMap<Integer, Object>
2021-05-15 16:31:51 703
原创 Redis 基础——五大类型与数据结构
引言redis 区分于 memcahced 一个重要的不同就是它具有明确的类型概念,在redis的使用过程中,都离不开这些类型的学习,它不仅是redis能力的基础,同时也是一些重要数据结构和算法思想的体现。本博客总结了五大类型的书面重点,帮助快速梳理和总结redis类型相关的知识点,理论性和记忆性较强。建议在实践之前牢记这些知识。一、Redis简介在开始之前,回顾一下redis的介绍性知识。redis的底层语言是C,它是一种高性能键值对、NoSQL内存数据库。可以用作缓存、数据库、消息中
2021-05-09 11:17:39 308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人