2022年3月归档(20220227-20220403)
文章平均质量分 82
第四周20220321-20220327
第三周20220314-20220320
第二周20220307- 20220313
第一周_20220227-20220306
菜菜的大数据开发之路
Java技术栈 AND 大数据开发,学习笔记, 拒绝水文
展开
-
Java面试重点_8. PriorityQueue 使用方式及源码分析
一, 概述PriorityQueue 并没有直接实现 Queue接口,而是通过继承 AbstractQueue 类来实现 Queue 接口的一些方法,在 Java 定义中,PriorityQueue 是一个基于优先级的无界优先队列。通俗的说,添加到 PriorityQueue 队列里面的元素都经过了排序处理,默认按照自然顺序,也可以通过 Comparator 接口进行自定义排序。PriorityQueue 是采用树形结构来描述元素的存储,具体说是通过完全二叉树实现一个小顶堆,在物理存储方面,P原创 2022-03-31 17:17:16 · 1107 阅读 · 0 评论 -
Java面试重点_7. Queue, Deque, 及ArrayDeque 源码分析和对比
一, QueueQueue是一种很常见的数据结构类型,在Java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现。还有的适用于多线程的环境。java中具有Queue功能的类主要有如下几个:AbstractQueue, ArrayBlockingQueue, ConcurrentLinkedQueue, LinkedBlockingQueue, DelayQueue, LinkedList, Prio原创 2022-03-30 21:30:31 · 1288 阅读 · 2 评论 -
Java面试重点_6. ArrayList 源码分析及其扩容机制总结
一, 集合整体架构图1.集合常用的三种遍历方式Iterator, 迭代器, 所有单例集合(Collections)的超级父类, 对各种单列集合当我们想要遍历集合时,Java为我们提供了多种选择,通常有以下三种写法:写法1: for循环for(int i = 0, len = strings.size(); i < len; i++){ System.out.println(strings.get(i));}写法2: foreach循环(增强for循环)for(S原创 2022-03-29 20:16:18 · 1476 阅读 · 4 评论 -
tag数组-刷题预备知识-7. 差分数组 + lt.370-区间加法 + lt.1109-航班预计统计 + lt.1094-拼车 1.8
入门级栗子: lt. 370-区间加法[案例需求][思路分析]多次对部分区间进行加加减减的, 比较适合使用差分数组; 前缀和数组的话, 主要是用于 快速的求出某一段区间的累加和本题就是对一个数组序列中的部分区间进行加或减的操作, 正好能用差分数组使用差分数组的第一步当然是构建差分数组, 新建一个差分数组 diff[], 遍历原有数组nums[], 把num[i] - nums[i - 1]的值赋值给 diff[i]2.1 注意, i从1开始遍历构建差分数组后, 我们提供一个公用的方法.原创 2022-03-29 16:35:20 · 1247 阅读 · 0 评论 -
tag数组-刷题预备知识-6. 数组的前缀和(preSum), lt.303 + lt.304 1.2
前缀和前缀和一般用来用作区间求和, 它的每个值都是从**左边最初始位置的数(如下标0)**到它本身的和前缀和的主要使用场景: 原始数组不会被修改的情况下, 频繁查询某个区间的累加和, 原始数组不改变是相对于差分法来讲的.一维数组的前缀和其实可以把它理解为数学上的数列的前n项和(对于一个一维数组的前缀和)。我们定义对于一个数组a的前缀和数组s,s[i] = a[1]+a[2]+…+a[i].比如数组[1,3,5,7]的前缀和为[1,4,6,8], 借助前缀数组, 我们可以求出某一段区间原创 2022-03-28 12:25:49 · 1115 阅读 · 0 评论 -
MySQl 面试重点_2.常见的索引面试题总结
文章目录一, 索引定义 (排序 + 定位)二, 索引的优缺点三, 索引的底层数据结构3.1 哈希表3.2 B树 & B+树3.2.1 B树的特点3.2.2 B+树的特点3.2.1 B+树和哈希的区别3.2.2 B+树和B树的区别3.2.3 B+树和红黑树的区别四, 索引类型4.1 MySQL索引都有哪些分类?4.2 按数据结构分类(B+树, Hash索引, 全文索引)4.3 按物理存储分类(聚簇索引, 非聚簇索引/辅助/二级索引))1. 聚簇索引2. 非聚簇索引五, 主键为什么建议选择自增主键六,原创 2022-03-26 17:51:38 · 2479 阅读 · 3 评论 -
1.<tag-链表>-lt.203-移除链表元素 2
lt.203-移除链表元素[案例需求][思路分析]对于链表的删除, 我们首先要注意的是, 链表中结点的删除必须要知道被删除结点的前一个结点的位置, 这是链表中结点删除的最大的必要条件! 所以我们在遍历链表时, 使用的跳出循环遍历的条件通常是temp.next == targetNode的val还有一点就是为了使得链表的第一个结点(首元结点)跟其他节点的删除操作保持一致, 我们通常会new一个 dummyNode, 并使得dummyNode.next = head; (dummyNode就充当原创 2022-03-26 00:31:44 · 940 阅读 · 0 评论 -
什么是聚集索引,非聚集索引,索引覆盖,回表,索引下推
转载 2022-03-25 23:36:16 · 152 阅读 · 2 评论 -
tag排序-刷题预备知识-1.《快排, 堆排, 归并》最常见写法和优化,Java实现 2
文章目录一, 快排1.0 快排基本写法-挖坑法1.1 快排基本写法-左右双指针(left, right)1.2, 快排的时空复杂度分析A, 快排优化一, 随机基准值快排B, 快排优化三, 三数取中1.3, 快排为什么越趋近于有序就越慢1.4 非递归快排1.5 链表快排二, 堆排序三, 归并排序3.1 迭代法的归并排序(学有余力再来补充)3.2 归并排序单链表本文主要是对力扣中最常遇到的三大排序和各种考察角度进行了一个大致总结, 主要是因为笔者发现网上大多数帖子的有些排序都不是最优的写法, 在力扣中都需要原创 2022-03-24 10:17:45 · 762 阅读 · 0 评论 -
15.<tag-数组和二分, 双指针>-lt.367-有效的完全平方数 + lt.27-移除元素 + lt.977-有序数组的平方 1.1
lt.27-移除元素[案例需求][思路分析][代码实现]lt.977-有序数组的平方[案例需求][思路分析][代码实现]lt.209-长度最小的子数组[案例需求][思路分析][代码实现]原创 2022-03-23 08:55:13 · 143 阅读 · 2 评论 -
tag二叉树-刷题预备知识-1. 深入浅出深度优先遍历(DFS)和广度优先遍历(BFS) + lt. 102. 二叉树的层序遍历 1
零, BFS, DFS 基本知识扫盲Java实现图的深度优先遍历(DFS)和广度优先遍历(BFS)一, BFS和DFS的比较DFS(深度优先搜索)和 BFS(广度优先搜索)就像孪生兄弟,提到一个总是想起另一个。然而在实际使用中,我们用 DFS 的时候远远多于 BFS。那么,是不是 BFS 就没有什么用呢?如果我们使用 DFS/BFS 只是为了遍历一棵树、一张图上的所有结点的话,那么 DFS 和 BFS 的能力没什么差别,我们当然更倾向于更方便写、空间复杂度更低的 DFS 遍历。不过,某些使用场景是转载 2022-03-21 13:45:11 · 688 阅读 · 0 评论 -
MySQl 面试重点_1. 一条SQL语句的具体执行过程
文章目录一, MySQL基础架构分析1.1 MySQL基本架构组件概览1.2 Server层基本组件介绍二, 结合🌰说一说查询,更新的过程2.1 查询语句的执行过程2.2 更新语句的执行流程三, 凝练总结一, MySQL基础架构分析1.1 MySQL基本架构组件概览组件大致功能连接器身份验证和权限相关(登录时)查询缓存执行查询语句时, 会先查询缓存(MySQL 8.0移除)分析器没有命中缓存, 经过分析器(词法分析, 语义分析)优化器生成SQL语句的最优执原创 2022-03-16 20:22:29 · 1817 阅读 · 2 评论 -
Java面试重点_5. Java BIO, NIO, AIO 简明总结
文章目录一, 何为同步和异步, 阻塞和非阻塞 ?1.1 同步和异步1.2 阻塞和非阻塞1.3 同步阻塞, 同步非阻塞, 异步阻塞, 异步非阻塞的情况二, BIO, NIO, AIO2.1 Java中的IO原理2.2 `BIO, NIO, AIO, 面向面试总结`一, 何为同步和异步, 阻塞和非阻塞 ?1.1 同步和异步同步和异步概念以调用者的行为方式作区分;当程序产生一个调用后, 如果调用者主动等待该调用的结果, 则称之为同步;当程序产生一个调用后, 如果调用者不以主动的方式等待结果, 而是原创 2022-03-12 14:52:49 · 901 阅读 · 1 评论 -
五-中, Spark 算子 吐血总结(转化+行动算子共三十七个)
文章目录五-中, Spark 算子吐血总结5.1.4.3 RDD 转换算子(Transformation)1. Value类型1.1 `map`1.2 `mapPartitions`1.3 `mapPartitionsWithIndex`1.4 `flatMap`1.5 `glom`1.6 `groupBy`1.7 `filter`1.8 `sample`1.9 `distinct`1.10 `coalesce`1.11 `repartition`1.12 `sortBy`2. 双Value类型2.13 `原创 2022-03-09 19:37:38 · 2150 阅读 · 0 评论 -
五-上, Spark RDD 概述,五大属性,执行原理
五, Spark 核心编程5.0 一个简单的分布式计算程序先通过一个简单🌰了解一下什么是分布式计算在了解了分布式计算大概是个什么情况后, 我们来学习SparkSpark计算框架为了能够进行高并发和高吞吐的数据处理, 封装了三大数据结构, 用于处理不同的应用场景,分别是:- RDD: 弹性分布式数据集 - 累加器: 分布式共享只写变量 - 广播变量: 分布式共享只读变量 数据结构: 计算机存储和组织数据的方式5.1 RDD (数据和逻辑, 最小的计算单元)RDD: 代表着原创 2022-03-05 21:51:51 · 2265 阅读 · 1 评论 -
Mysql 窗口函数
一, MySQl 8.0 窗口函数窗口函数适用场景: 对分组统计结果中的每一条记录进行计算的场景下, 使用窗口函数更好;可以跟Hive的对比着看: 点我, 特么的花了一晚上整理, 没想到跟Hive 的基本一致, 还不因为好久没复习博客了, 淦注意: mysql 因为没有array数据结构, 无法像Hive一样 行列进行转换;1.1 窗口函数分类MySQL从8.0版本开始支持窗口函数。窗口函数的作用类似于在查询中对数据进行分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数是原创 2022-03-04 23:43:00 · 38998 阅读 · 14 评论 -
1. <tag-队列和栈(典型题)>-lt.622-循环队列 + lt.155-最小栈 + lt.232/剑指.09-栈模拟队列 + lt.225-队列模拟栈 1 dbc
lt.622-循环队列[案例需求][思路分析]详细分析查看文章: 点我[代码实现]class MyCircularQueue { int rear = 0; int front = 0; int maxSize = 0;; int[] arr = {}; public MyCircularQueue(int k) { //初始化队列长度 this.maxSize = k + 1; //maxSize比k大1, 要留出一原创 2022-03-03 14:33:53 · 373 阅读 · 0 评论 -
tag队列和栈-刷题预备知识-1. 必备知识点和常规题 2.5
一, 队列队列: 先进先出, 尾部插入, 头部取出; 新元素始终保持在队尾.二, 栈栈: 先进后出(后进先出), 栈顶放入或取出元素; 最后一个元素首先受到处理;适合场景: 当你想首先处理最后一个元素时,栈将是最合适的数据结构三, 数组模拟实现栈, 普通队列, 循环队列我们将集中总结一下, 三者之间在初值, 判空, 判满, 取出元素, 放入元素, 有效元素个数(循环队列)上的差异;详细文章请查看Java实现栈以及栈的一些应用Java 数组模拟实现普通队列,循环队列原创 2022-03-03 11:25:08 · 859 阅读 · 0 评论 -
数据研发典型面试题_1. Java必须要熟练的知识点
数据研发, 跟Java后端开发关系千丝万缕, 尤其是Java部分(Java+JVM+JUC), 基本上就是完全重叠;1. Java语言的特点; JDK与JRE的关系2. 字节大小3. Java的8种数据类型, 以及存在的类型转换关系4.Java常见的关键字,4.1 static, super, this各自的作用简述4.2 final, finally, finalize的区别4.3 break和cotinue的区别5. 方法的重载和重写6. Java中方法的参数传递机制7. Jav.原创 2022-03-02 22:35:16 · 590 阅读 · 0 评论 -
四, Spark运行架构
四, Spark 运行架构4.1 整体架构Spark框架的核心是一个计算引擎, 整体来说, 它采用了主-从master-slave的结构下图是Spark执行时的基本结构,Driver表示master: 负责管理整个集群中的作业任务调度Executor是slave: 负责实际执行任务Spark Apllication的运行架构由两部分组成: Driver program(SparkContext)和Excutor, Spark Application一般都是在集群中运行, 比如Sp原创 2022-03-02 19:43:56 · 1583 阅读 · 1 评论 -
Spark初探: 一步步用Scala写一个简易分布式计算程序
在学习Spark, 深入分布式计算之前, 我们有必要先体会一下分布式计算的特性和简单原理;那么我们基于Java去理解, 实现分布式的前提是什么呢? 当然是各个主机之间的通信, 即Socket网络通信, 由于Scala引入了大量的Java类库, 自然的也就类似于Java实现Socket通信了;第一步, Scala实现服务器端 Excutor.scalapackage simpledistributeddemoimport java.io.{InputStream, ObjectInput, .原创 2022-02-28 23:26:09 · 1704 阅读 · 1 评论 -
三, Spark 四种运行环境配置总结
三, Spark 运行环境Spark 的运行模式有 Local(也称单节点模式),Standalone(集群模式),Spark on Yarn(运行在Yarn上),Mesos以及K8s, Windows模式等常用模式3.1 Local模式Local模式被定义为不需要其他任何节点资源, 在本地执行Spark代码的环境,也叫单机模式, 一般用于教学,调试, 演示等等,配置文件设置方法: conf.setMaster[local[K]]1. 解压相关的依赖文件将 spark-3.0.0-原创 2022-02-27 10:50:18 · 3105 阅读 · 3 评论 -
一二, Spark概述和快速入门
一, Spark概述1.1 什么是SparkSpark是一种基于内存的快速,通用,可扩展的大数据分析计算引擎;1.2 Spark && HadoopSParkHadoop1.Scala开发, 快速通用,扩展的大数据分析引擎1. Java开发, 在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架2. Spark Core 提供了Spark最基础,核心的内容2. HDFS基于GFS理论, 分布式存储数据3. SpaekSQL 是Spar原创 2022-02-27 10:06:29 · 1016 阅读 · 0 评论