11 2022 档案
摘要:集合面试点汇总 我们会在这里介绍我所涉及到的集合相关的面试点内容,本篇内容持续更新 我们会介绍下述集合的相关面试点: 迭代器 ArrayList LinkedList HashMap 迭代器 这里我们来介绍一下迭代器的面试点 迭代器中断处理机制 迭代器是操作集合的工具,当我们已经创建了一个迭代器之后
阅读全文
摘要:算法面试点汇总 我们会在这里介绍我所涉及到的算法相关的面试点内容,本篇内容持续更新 我们会介绍下述算法的相关面试点: 二分查找 冒泡排序 选择排序 插入排序 快速排序 二分查找 我们在这里介绍二分查找的面试点 二分查找算法 我们首先给出二分查找的基本算法: /*第一套模板*/ public clas
阅读全文
摘要:贪心算法篇——经典题型 本次我们介绍贪心算法篇的经典题型,我们会从下面几个角度来介绍: Huffman树 排序不等式 绝对值不等式 推公式 Huffman树 我们直接给出对应题型: /*题目名称*/ 合并果子 /*题目介绍*/ 在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不
阅读全文
摘要:贪心算法篇——区间问题 本次我们介绍贪心算法篇的区间问题,我们会从下面几个角度来介绍: 区间选点 区间分组 区间覆盖 区间选点 我们首先来介绍第一道题目: /*题目名称*/ 区间选点 /*题目介绍*/ 给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点
阅读全文
摘要:动态规划篇——DP问题 本次我们介绍动态规划篇的DP问题,我们会从下面几个角度来介绍: 区间DP 计数DP 树状DP 记忆化搜索 区间DP 我们通过一个案例来讲解区间DP: /*题目展示*/ 题目名:石子合并 设有 N 堆石子排成一排,其编号为 1,2,3,…,N。 每堆石子有一定的质量,可以用一个
阅读全文
摘要:动态规划篇——线性DP 本次我们介绍动态规划篇的线性DP,我们会从下面几个角度来介绍: 数字三角形 最长上升子序列I 最长上升子序列II 最长公共子序列 最短编辑距离 数字三角形 我们首先介绍一下题目: /*题目概述*/ 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的
阅读全文
摘要:动态规划篇——背包问题 本次我们介绍动态规划篇的背包问题,我们会从下面几个角度来介绍: 背包问题概述 零一背包问题 完全背包问题 多重背包问题 分组背包问题 背包问题概述 背包问题算是很经典的动态规划问题,我们在面试中也经常出现 首先我们给出动态规划的思想: 然后我们简单介绍一下背包问题: /*背包
阅读全文
摘要:搜索与图论篇——图的最短路 本次我们介绍搜索与图论篇中的图的最短路,我们会从下面几个角度来介绍: Dijkstra简介 Dijkstra代码 Dijkstra优化 Floyd简介 Floyd代码 Kruskal简介 Kruskal代码 Dijkstra简介 我们首先来介绍第一种求图的最短路的基本算法
阅读全文
摘要:搜索与图论篇——DFS和BFS 本次我们介绍搜索与图论篇中DFS和BFS,我们会从下面几个角度来介绍: DFS和BFS简介 DFS数字排序 DFS皇后排序 DFS树的重心 BFS走迷宫 BFS八数码 BFS图层次 DFS和BFS简介 首先我们先来介绍一下DFS和BFS: DFS:深度优先遍历算法,我
阅读全文
摘要:数据结构篇——哈希表 本次我们介绍数据结构中的哈希表,我们会从下面几个角度来介绍: 哈希表介绍 例题模拟散列表的两种方法 字符串前缀哈希法 哈希表介绍 首先我们先来简单介绍一下哈希表: 哈希表主要负责将空间较大的离散的数压缩为空间较小的数 例如我们将10^-9~10^9之间的离散数可以压缩到10^5
阅读全文
摘要:JUC学习笔记——并发工具JUC 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的核心内容 我们会分为以下几部分进行介绍: AQS 原理 ReentrantLock 原理 读写锁 Semaphore CountdownLatch CyclicBarrier 线程安全集合类概述 AQ
阅读全文
摘要:数据结构篇——KMP算法 本次我们介绍数据结构中的KMP算法,我们会从下面几个角度来介绍: 问题介绍 暴力求解 知识补充 Next示例 Next代码 匹配示例 匹配代码 完整代码 问题介绍 首先我们先介绍适用于KMP算法的问题: 给定一个字符串S,以及一个模式串P,所有字符串中只包含大小写英文字母以
阅读全文
摘要:JUC学习笔记——并发工具线程池 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的并发工具线程池 我们会分为以下几部分进行介绍: 线程池介绍 自定义线程池 模式之Worker Thread JDK线程池 Tomcat线程池 Fork/Join 线程池介绍 我们在这一小节简单介绍一下
阅读全文
摘要:数据结构篇——栈和队列 本次我们介绍数据结构中的栈和队列,我们会从下面几个角度来介绍: 栈和队列简述 模拟栈 模拟队列 栈和队列简述 首先我们要简单了解一下栈和队列: 栈:数据元素先进后出 队列:数据元素先进先出 我们分别给出展示图: 模拟栈 我们下面给出用数组模拟栈的写法: public clas
阅读全文
摘要:JUC学习笔记——共享模型之不可变 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的不可变内容 我们会分为以下几部分进行介绍: 不可变案例 不可变设计 模式之享元 原理之final 无状态 不可变案例 我们下面通过一个简单的案例来讲解不可变的共享 案例展示 首先我们给出一个简单的不
阅读全文
摘要:JUC学习笔记——共享模型之无锁 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的无锁 我们会分为以下几部分进行介绍: 无锁操作 CAS与Volatile 原子类型 原理篇 Unsafe 并发无锁操作 这一小节我们将讲解如何用无锁操作完成并发操作 问题展现 我们给出一段之前并发展示
阅读全文
摘要:JUC学习笔记——共享模型之内存 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的内存部分 我们会分为以下几部分进行介绍: Java内存模型 可见性 模式之两阶段终止 模式之Balking 原理之指令级并行 有序性 volatile原理 Java内存模型 我们首先来介绍一下Java
阅读全文
摘要:JUC学习笔记——共享模型之管程 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的管程部分 我们会分为以下几部分进行介绍: 共享问题 共享问题解决方案 线程安全分析 Monitor synchronized锁 Wait/notify 模式之保护性暂停 模式之生产者消费者 park
阅读全文
摘要:数据结构篇——链表 本次我们介绍数据结构中的链表,我们会从下面几个角度来介绍: 单链表 双链表 单链表 我们会在这里介绍单链表 单链表简介 我们首先来简单介绍一下单链表: 单链表就是一条长链,我们会延一个固定的顺序来获得或增添值 我们在算法计算中,通常会采用数组来模拟单链表来完成一些操作 单链表的作
阅读全文
摘要:JUC学习笔记——进程与线程 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的进程与线程部分 我们会分为以下几部分进行介绍: 进程与线程 并发与并行 同步与异步 线程详解 进程与线程 在这一小节我们将简单介绍进程与线程 进程 首先我们来简单了解一下程序: 程序由指令和数据组成,我们
阅读全文
摘要:基础算法篇——区间合并 本次我们介绍基础算法中的区间合并,我们会从下面几个角度来介绍: 区间合并 区间合并 我们这次的目的很简单: 快速高效的完成区间合并任务 区间合并的要求: 提供若干个区间,将有接壤的部分变为一个区间,没有接壤的部分不改变 例如[1,2],[2,3],[4,5],[6,7],[6
阅读全文
摘要:基础算法篇——位运算 本次我们介绍基础算法中的位运算,我们会从下面几个角度来介绍: 位运算常用公式 二进制中1的个数 位运算常用公式 其实位运算的使用很常见但大多不难,经常都是套用公式 我们下面分别介绍两个公式: 求第n位数 // 求n的二进制的第k位数(将n向右移动k位,相当于将求解的位数放到个位
阅读全文
摘要:JVM学习笔记——内存模型篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的内存模型部分 我们会分为以下几部分进行介绍: 内存模型 乐观锁与悲观锁 synchronized优化 内存模型 这一小节我们来详细介绍一下内存模型和内存模型的三个特性 内存模型简介 首先我们来简单介绍一下
阅读全文
摘要:基础算法篇——双指针算法 本次我们介绍基础算法中的双指针算法,我们会从下面几个角度来介绍: 双指针简介 双指针基本使用 最长连续不重复字符列 数组元素的目标和 判断子序列 双指针简介 首先我们先来简单介绍一下双指针: 双指针算法就是采用两个变量作为指针放在数组的某个部位来实现复杂度简化 我们来介绍一
阅读全文
摘要:基础算法篇——前缀和与差分 本次我们介绍基础算法中的前缀和与差分,我们会从下面几个角度来介绍前缀和与差分: 前缀和介绍 一维前缀和 二维前缀和 差分介绍 一维差分 二维差分 前缀和介绍 首先我们来简单介绍一下前缀和: 我们首先定义一个长度为n的数组,然后我们希望求这个数组的部分长度的总和 如果正常采
阅读全文
摘要:JVM学习笔记——类加载和字节码技术篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的类加载和字节码技术部分 我们会分为以下几部分进行介绍: 类文件结构 字节码指令 编译期处理 类加载阶段 类加载器 运行期优化 类文件结构 这一小节我们将简单介绍一下类的文件结构部分,简单阅读一下
阅读全文
摘要:基本算法篇——二分查找 本次我们介绍基础算法中的二分查找,我们会从下面几个角度来介绍二分查找: 二分查找简述 二分查找模板 二分查找边界 例题数的范围 二分查找简述 首先我们来简单介绍一下二分查找: 二分查找就是在一个数组中快速得找到我们所需要的值 二分查找通常是在有单调性的数组中进行;有单调性的数
阅读全文
摘要:JVM学习笔记——垃圾回收篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的垃圾回收部分 我们会分为以下几部分进行介绍: 判断垃圾回收对象 垃圾回收算法 分代垃圾回收 垃圾回收器 垃圾回收调优 判断垃圾回收对象 本小节将会介绍如何判断垃圾回收对象 引用计数法 首先我们先来介绍引用
阅读全文
摘要:JVM学习笔记——内存结构篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的内存结构部分 我们会分为以下几部分进行介绍: JVM整体介绍 程序计数器 虚拟机栈 本地方法栈 堆 方法区 直接内存 JVM整体介绍 我们在正式开始学习JVM之前当然需要先简单认识一下JVM了 JVM简述
阅读全文
摘要:基础算法篇——归并排序 本次我们介绍基础算法中的快速排序,我们会从下面几个角度来介绍快速排序: 归并排序思想 归并排序代码 归并排序拓展 归并排序思想 我们首先来介绍归并排序思想(分治思想): 确定分界点 我们首先确定整个数组的分界点 以我们的习惯而言还是以arr[l],arr[r],arr[(r+
阅读全文
摘要:基础算法篇——快速排序 本次我们介绍基础算法中的快速排序,我们会从下面几个角度来介绍快速排序: 快速排序介绍 暴力求解算法 快速排序算法 快速排序代码 快速排序问题 快速查找算法 快速排序介绍 我们首先来简单介绍快速排序问题: 首先我们需要确定一个分界点 这个分界点我们可以任意选择 我们常用的分界点
阅读全文
摘要:瑞吉外卖实战项目全攻略——总结篇 该系列将记录一份完整的实战项目的完成过程,该篇属于总结篇,主要负责总结整个项目技术点和注意点 案例来自B站黑马程序员Java项目实战《瑞吉外卖》,请结合课程资料阅读以下内容 我们将从下面几个方面进行总结: 项目整体介绍 项目准备阶段 后台代码开发 前台代码开发 项目
阅读全文