什么是优先队列?我们在常见的线性结构中,已经知道什么是普通队列了,普通队列就是一种“先进先出,后进后出”的数据结构,即普通队列的出队顺序和入队顺序是一样的,但我们的优先队列,它的出队顺序和入队顺序无关,它的出队顺序是和优先级相关的,当然这个优先级我们可以自己定义。为什么使用优先队列?举一个生活中的例子,就是医院里需要做手术的病人,医院不会根据哪个病人先来就先
......
221
0
0
2024-04-18
什么是红黑树红黑树依然是一棵二分搜索树,《算法导论》中的红黑树定义如下:每个节点或者是红色的,或者是黑色的根节点是黑色的每一个叶子节点(最后的空节点)是黑色的如果一个节点是红色的,那么他的孩子节点都是黑色的从任意一个节点到叶子节点,经过的黑色节点是一样的在学习红黑树之前,我们有必要先学习一下什么是2-3树,学习2-3树不仅对于理解红黑树有帮助,对于理解B类树
......
212
0
0
2024-04-18
什么是平衡二叉树?为什么叫AVL树? 因为AVL树是由 G.M.Adelson-Velsky 和 E.M.Landis 这两位俄罗斯科学家在1962年的论文中首次提出,是最早的自平衡二分搜索树结构。 由于AVL树是自平衡二分搜索树,所以本质上还是二分搜素树,也就是二分搜索树的性质AVL树都满足,由于二分搜索树在添加有序元素时,会退化成链表,造成时间复杂度为O
......
216
0
0
2024-04-18
什么是Trie?Trie是一个多叉树,Trie专门为处理字符串而设计的。使用我们之前实现的二分搜索树来查询字典中的单词,查询的时间复杂度为O(logn),如果有100万(220)个单词,则logn大约等于20,但是使用Trie这种数据结构,查询每个条目的时间复杂度,和一共有多少个条目无关!时间复杂度为O(w),w为被查询单词的长度!大多数单词的长度小于10。
......
232
0
0
2024-04-17
为什么要使用线段树?最经典的线段树问题:区间染色 有一面墙 ,长度为n,每次选择一段儿墙进行染色,m次操作后,我们可以看见多少种颜色?例如上图,我们第一次将[1,8]的位置染成蓝色,然后再将[5,9]的位置染成黄色,然后将[6,15]的位置染成红色,最后把[12,15]的颜色染成绿色,我们通过这几次操作可以发现,图中被重复染色的位置是会被覆盖的,比如[12,
......
288
0
0
2024-04-17
集合 SetSet是一种新的数据结构,类似于数组,但是不能添加重复的元素,基于Set集合的这个特性,我们可以使用Set集合进行客户统计和词汇统计等,集合中常用的方法如下:public interface Set<E> {
void add(E e); //添加元素e,不能添加重复元素
boolean contains(E
......
268
0
0
2024-04-17
前言本篇博客主要是记录手写这些这数据结构的底层实现,加深对线性结构的理解,实现自己的一个小型数据结构库,也会进行简单的时间复杂度分析,对不同的实现进行比较和优化,即侧重于代码实现。由于数据结构是实践性比较强的一个科目,希望大家在看这篇博客时,自己也去写一下代码,看一下运行结果是不是自己想要的,我也会贴出我的运行结果来进行分析。数组数组介绍数组是在内存中存储相
......
250
0
0
2024-04-17
Java8 中Stream API介绍Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后
......
233
0
0
2024-04-17
前言之前说了使用JdbcTemplate、MyBatis、Spring Data JPA三种连接数据库的方式。对于一些不常变更,或者是数据库数据太多,需要优化请求速度的,我们可以使用二级缓存解决。二级缓存分两种本地缓存 比如 Ehcache远程缓存 比如 Redis我们可以根据实际情况选择对应的缓存。Ehcache在使用 Spring Data JPA 进行
......
257
0
0
2024-04-10
Code基础工程启动类@SpringBootApplication
public class LifeCycleApplication {
/**
* 除了手工add , 在 META-INF下面 的 spring.factories 里增加
* org.springframework.context.Applica
......
250
0
0
2024-04-03
基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写 - 读内存中的公共状态来隐式进行通信。在消息传递的并发模型
......
259
0
0
2024-04-02
JMM引入从堆栈说起JVM内部使用的Java内存模型在线程栈和堆之间划分内存。此图从逻辑角度说明了Java内存模型:# 堆栈里面放了什么?线程堆栈还包含正在执行的每个方法的所有局部变量(调用堆栈上的所有方法)。线程只能访问它自己的线程堆栈。由线程创建的局部变量对于创建它的线程以外的所有其他线程是不可见的。即使两个线程正在执行完全相同的代码,两个线程仍将在每个
......
276
0
0
2024-04-02
多语言编译为字节码在JVM运行计算机是不能直接运行java代码的,必须要先运行java虚拟机,再由java虚拟机运行编译后的java代码。这个编译后的java代码,就是本文要介绍的java字节码。为什么jvm不能直接运行java代码呢,这是因为在cpu层面看来计算机中所有的操作都是一个个指令的运行汇集而成的,java是高级语言,只有人类才能理解其逻辑,计算机
......
279
0
0
2024-04-02
嗨,亲爱的童鞋们!欢迎来到这篇关于SpringMVC的博客,让我们一起探索这个舞动Web的框架,感受它带来的激情和便利。在这个世界里,我们将学到SpringMVC的概述、开发步骤以及如何快速入门,一切都是如此的令人兴奋。踏上舞台:SpringMVC概述在我们深入了解SpringMVC之前,让我们先简单了解一下它是什么。SpringMVC是Spring框架的一
......
278
0
0
2024-04-02
欢迎来到数据库的奇妙世界,在这里,我们将一同揭开Spring框架中JdbcTemplate的神秘面纱。JdbcTemplate是Spring提供的一个简化数据库操作的工具,它为我们提供了一种轻松驾驭数据库的魔法。本篇博客将详细解释JdbcTemplate的基本使用,适合刚刚接触Spring的童鞋们,让你轻松驾驭数据库的魔法世界。JdbcTemplate的魅力
......
268
0
0
2024-04-02