自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Charison的编程妙妙屋

主要记录一些学习历程,供个人复习使用。

  • 博客(244)
  • 收藏
  • 关注

原创 牛客网判题规则

Main 类中所有的方法和变量全部定义为 static 类型,因为主函数是 static 类型。新定义一个类时(如 ListNode),将其与 Main 类并列,并且不能定义为 public 类型。import java.util.*;class ListNode { int val; ListNode next; public ListNode() { } public ListNode(int val) { this.val = v.

2021-05-28 10:24:29 466

原创 知识点整理:RabbitMQ

文章目录1. RabbitMQ 基本概念2. RabbitMQ 的工作模式3. 如何保证消息不被重复消费?或者说,如何保证消息消费时的幂等性?4. 如何保证高可用?1. RabbitMQ 基本概念Exchange: 消息交换机,它指定消息按什么规则,路由到哪个队列Queue: 消息队列载体,每个消息都会被投入到一个或多个队列Binding: 绑定,它的作用就是把 exchange 和 queue 按照路由规则绑定起来Routing Key: 路由关键字,exchange 根据这个关键字进行消息投

2021-05-19 14:01:56 193

原创 知识点整理:大数据场景

文章目录1. 十个大数据量处理方法总结1.1 Bloom filter1.2 Hashing1. 十个大数据量处理方法总结1.1 Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:1.2 Hashing适用范围:快速查找、删除的基本数据结构,通常需要 key 的总数据量可以放入内存基本原理及要点:hash 函数选择,针对字符串、整数等对象有对应的 hash 方法。碰撞处理,一种是拉链法,一种是开地址法。扩展:d-left hashi

2021-05-18 10:11:09 243

原创 HDFS、Kafka、HBase、Redis 实现 HA 方式的总结

文章目录1. 概述2. HDFS3. Kafka4. HBase5. Redis推荐阅读:redis系列之——高可用(主从、哨兵、集群)1. 概述首先需要明确,什么时候需要实现 HA(高可用)?只有当出现 单点故障问题 的时候,例如:HDFS:客户端请求写文件时,需要请求 NameNode 返回元数据,但 NameNode 只有一个,假如宕机就需要切换到备用的 NameNodeKafka:使用了主从模式,1个 leader 和多个 follower 之间需要同步数据,假如 leader 宕机,

2021-05-17 15:57:34 587

原创 知识点整理:数据仓库

文章目录1. 数据库的三大范式2. 数据仓库建模方法2.1 ER 模型2.2 维度建模3. OLAP 和 OLTP 的区别4. 数据仓库的基本架构5. 数据库和数据仓库有什么区别?6. 数据仓库的分层6.1 ODS 层6.2 DW 层6.3 ADS 层7. 数据仓库为什么要进行分层?1. 数据库的三大范式推荐阅读:数据库设计三大范式第一范式:确保数据库表中的所有字段都是不可分解的原子值第二范式:在第一范式的基础上更进一层,需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(

2021-05-16 15:14:26 242

原创 知识点整理:Zookeeper

文章目录1. Zookeeper 是什么2. Zookeeper 特点3. ZAB协议3.1 ZAB 协议介绍3.2 崩溃恢复3.3 消息广播4. 监听器原理5. 常用命令6. Zookeeper 节点宕机如何处理?7. ZAB 和 Paxos 算法的联系与区别?8. Zookeeper 实现分布式锁1. Zookeeper 是什么Zookeeper 实际上就是 文件系统(树状目录结构) + 通知机制。Zookeeper 是一个基于 观察者模式 设计的分布式框架,它负责存储大家都关心的数据,然后接受

2021-05-14 19:27:47 222 2

原创 知识点整理:Sqoop

文章目录1 Sqoop 简介2 Sqoop 工作流程1 Sqoop 简介Sqoop是一个用于在 Hadoop 和关系数据库之间传输数据的工具将导入或导出命令翻译成 MapReduce 程序来并行操作和容错,在翻译出的 MapReduce 中主要是对 inputformat 和 outputformat 进行定制2 Sqoop 工作流程读取要导入数据的表的结构,生成运行类,默认是 QueryResult,打成 jar 包,然后提交给 Hadoop设置好 job 的各种参数,如 InputFor

2021-05-14 19:13:10 177

原创 知识点整理:Hive

文章目录1 Hive 和传统数据库的区别2 Hive 内部表和外部表的区别3 数据倾斜(重点)3.1 数据倾斜的原因3.2 数据倾斜的典型场景及解决方案1. group by2. count(distinct)3. 大小表 Join4. 大表 Join 大表5. 通用的处理方法1 Hive 和传统数据库的区别数据更新: 由于 Hive 是针对数仓应用设计的,而数仓的内容是读多写少的,所以,HQL 不支持 INSERT INTO 表 Values(), UPDATE, DELETE操作,仅支持查操作,

2021-05-14 19:11:25 1186

原创 知识点整理:Hadoop

文章目录1. HDFS1.1 HDFS 简介1.2 fsimage 和 editlog 定义及合并过程1.3 HDFS 读流程1.4 HDFS 写流程1.5 NameNode 的 HA 实现1.6 在向 HDFS 中写数据时,当写某一个副本时出错怎么处理?2. MapReduce 和 YARN2.1 YARN 介绍2.2 MR1.0 的 Job 提交流程2.3 MR2.0 的 Job 提交流程2.4 MapReduce 的 Shuffle 过程1. HDFS1.1 HDFS 简介HDFS 是分布式文件

2021-05-14 19:08:23 1562 13

原创 牛客题霸 51 - 60

文章目录51. 获取Employees中的first_name,查询按照first_name最后两个字母,按照升序进行排列54. 查找排除最大、最小salary之后的当前(to_date = '9999-01-01' )员工的平均工资avg_salary。55. 使用含有关键字exists查找未分配具体部门的员工的所有信息。51. 获取Employees中的first_name,查询按照first_name最后两个字母,按照升序进行排列思路:使用字符串截取函数 subtring(对象字符串,截取的起始位

2021-05-11 19:06:51 106

原创 牛客题霸 41 - 50

文章目录41. 删除emp_no重复的记录,只保留最小的id对应的记录。42. 将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01。41. 删除emp_no重复的记录,只保留最小的id对应的记录。思路:使用子查询的方法,将emp_no进行分组后找出最小id对应的记录,再使用not in,将非最小id的记录删除。注意两个坑!MySQL的UPDATE或DELETE中子查询不能为同一张表,可将查询结果再次SELECT下面这样写就是错误的:

2021-05-11 18:29:06 58

原创 牛客题霸 31-40

具体题目参考链接:https://www.nowcoder.com/ta/sql文章目录32. 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分33. 创建一个actor表,包含如下列信息34. 请你对于表actor批量插入如下数据(不能有2条insert语句哦!)35. 对于表actor插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作)36. 请你创建一个actor_name表,并且将actor表中的所有first.

2021-05-10 19:56:15 129

原创 牛客题霸 21-30

文章目录数据库表格20. 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序(不包括已经离职的员工)22. 统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum,按照dept_no升序排序,23. 对所有员工薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列24. 获取所有非manager员工薪水情况,给出dept_no、

2021-05-06 19:59:50 163

原创 10. HBase

文章目录10.1 HBase 架构10.2 Hbase数据存储结构10.3 HBase 工作流程1. 读流程2. 写流程3. 数据 Flush 流程10.4 HBase 和 Hive10.5 RowKey 设计10.1 HBase 架构HBase 也是 Master/Slaves 架构,由一个 HMaster 和多个 HRegionServer 构成。从上图中能看出 HBase 是由 Client、ZooKeeper、HMaster、HRegionServer、HDFS 等几个组件组成,组件的相关功

2021-04-21 14:50:41 148

原创 9. Kafka

文章目录9.1 消息中间件MQ9.2 Kafka 是什么9.3 Kafka 架构9.4 为什么一个 Topic 要分成多个 Partition9.1 消息中间件MQ什么是消息中间件:消息中间件关注数据的发送和接收,主要解决的是分布式系统之间的消息传递问题。通过提供 消息传递 和 消息排队 模型,可以在分布式架构下扩展进程间的通信。常见的消息中间件:ActiveMQ,RabbitMQ,RocketMQ,Kafka,Redis消息中间件的术语:Broker:消息服务器,提供核心服务Produc

2021-04-19 15:18:12 117

原创 8. Flume

文章目录8.1 Flume 是什么8.2 Flume 架构,Put事务,Take事务8.1 Flume 是什么Flume用于将多种来源的日志以 流 的方式传输至Hadoop或者其它目的地。Flume特点:可靠性:Flume的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。Flume 使用事务性的方式保证传送 Event 整个过程的可靠性。可恢复性:Events 在通道中执行,由该通道管理从失败中

2021-04-18 15:49:18 110

原创 7. Hive

文章目录7.1 Hive是什么?7.2 Hive 和数据库的区别7.3 Hive 架构7.4 内部表和外部表7.5 排序的区别7.6 窗口函数7.7 Hive 优化7.7.1. Map Join7.7.2. 行列过滤7.7.3. group by 去重7.7.4. 数据倾斜1. 数据倾斜原因2. 调整 Map 数3. 调整 Reduce 数7.7.5 JVM 重用7.1 Hive是什么?简单来说,Hive 就是在 Hadoop 上架了一层 SQL 接口,可以将 SQL 翻译成MapReduce 去 Ha

2021-04-17 15:28:08 147

原创 牛客题霸 11-20

文章目录数据库表格1. 获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,结果第一列给出当前员工的emp_no,第二列给出其manager对应的manager_no2. 获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,结果按照部门升序排列数据库表格1. 获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,结果第一列给出当前员工的emp_no,第二列给出其manager对应的mana

2021-04-16 21:23:02 161

原创 剑指offer 68 - II. 二叉树的最近公共祖先

[剑指offer 68 - II. 二叉树的最近公共祖先](剑指offer 68 - II. 二叉树的最近公共祖先)题目描述解题思路这道题目的思路主要就是判断 p 和 q 的左右位置:若 p,q 中有一个指向 root,则最近公共祖先就是root若 p,q 分别在 root 树的两侧,则最近公共祖先就是root若 p,q 均在 root 树的同一边子树中,则最近公共祖先就是 该子树的最近公共祖先class Solution { //定义:在以root为根节点的树中,找到p,q的最

2021-04-16 19:19:26 57

原创 剑指offer 68 - I. 二叉搜索树的最近公共祖先

剑指offer 68 - I. 二叉搜索树的最近公共祖先题目描述解题思路1. 普通递归class Solution { //定义:在以root为根节点的树中,找到p,q的最近公共祖先 //若p,q均不在root树中,则返回null //若p,q仅有一个在root树中,则返回root //若p,q均在root树中,则返回最近公共祖先 public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p,

2021-04-16 19:08:26 68

原创 剑指offer 67. 把字符串转换成整数

剑指offer 67. 把字符串转换成整数题目描述

2021-04-16 18:39:59 52

原创 6. Zookeeper

文章目录6.1 选举机制6.2 常用命令6.1 选举机制半数机制(Paxos 协议):集群中半数以上机器存活,集群可用。所以 zookeeper 适合装在奇数台机器上。当集群开启的数量在半数以上时,就会将 Leader 选出来,例如,有 id 为1,2,3三台机器,按顺序启动,第一台开启时,zookeeper 的日志会报错,因为启动数量没有达到集群的一半。继续启动机器2,数量多于一半,然后根据 id 的大小选出 Leader,则2号当选。当3号机器启动时, Leader 已经存在,则只能当小弟了。6

2021-04-16 09:59:46 91

原创 5. Hadoop 优化

1)数据输入小文件处理:合并小文件:对小文件进行归档(har)、自定义 inputFormat、将小文件存储成 sequenceFile 文件采用 CombineFileInputFormat 作为输入,解决输入端的大量小文件场景对于大量小文件 Job,可以开启 JVM 重用,推荐阅读:Hadoop的JVM重用2)Map 阶段增大环形缓冲区大小。由 100M 扩大到 200M增大环形缓冲区溢写的比例。由 80% 扩大到 90%减少对溢写文件的 merge 次数不影响实际业务的前提下,采

2021-04-16 09:33:32 73

原创 4. Yarn

文章目录4.1 调度器定义、区别4.2 Yarn 的 job 提交流程4.1 调度器定义、区别1)Hadoop 调度器主要分为三类:FIFO、Capacity Scheduler(容量调度器)和 Fair Scheduler(公平调度器)。Hadoop 2.7.2 默认的资源调度器是 容量调度器。2)区别:① FIFO 调度器:先进先出② 容量调度器:允许多个队列共享一个Hadoop集群,每个队列所分配的集群资源是固定的且可配置的。每个队列内部还可以进一步划分成小队列,小队列之间共享整个队列

2021-04-15 16:19:34 86

原创 剑指offer 66. 构建乘积数组

剑指offer 66. 构建乘积数组题目描述解题思路dp维护两个dp数组,表示左右两侧的乘积。leftProd[i] 表示 a[0…i] 的乘积, rightProd[i] 表示 a[i…a.length-1] 的乘积。class Solution { public int[] constructArr(int[] a) { if (a == null || a.length == 0) return new int[0]; int len = a.le

2021-04-15 10:31:20 50

原创 剑指offer 65. 不用加减乘除做加法

剑指offer 65. 不用加减乘除做加法题目描述解题思路不用加法的加法运算 = 不计算进位的加法 + 只计算进位的加法 = 异或运算 + 与运算后向左进一位。又为了消除上式中的加号,需要用一个while循环来判断,当不再进位时跳出循环。class Solution { public int add(int a, int b) { while (b != 0) { int notCarry = a ^ b; int carr

2021-04-14 16:42:23 50

原创 剑指offer 64. 求1+2+…+n

剑指offer 64. 求1+2+…+n题目描述解题思路短路与class Solution { public int sumNums(int n) { boolean flag = n > 1 && (n += sumNums(n - 1)) > 0; return n; }}

2021-04-14 16:09:42 61

原创 剑指offer 63. 股票的最大利润

剑指offer 63. 股票的最大利润题目描述解题思路动态规划class Solution { public int maxProfit(int[] prices) { if (prices == null || prices.length == 0) return 0; //每次维护prices[0...i-1]的最小价格 int minPrice = Integer.MAX_VALUE, res = 0; for (in

2021-04-14 15:39:38 51

原创 3. Hadoop

文章目录3.1 Hadoop 常用端口号3.2 配置文件以及简单的 Hadoop 集群搭建3.3 HDFS 读流程3.4 HDFS 写流程3.5 MapReduce 过程发生了多少次排序?3.1 Hadoop 常用端口号dfs.namenode.http-address : 50070SecondaryNameNode : 50090dfs.datanode.address : 50010fs.defaultFS : 8020或9000yarn.resourcemanager.webapp.a

2021-04-14 15:14:44 86

原创 牛客题霸 1 - 10

文章目录数据库表格1. 查找所有最晚入职员工的信息2. 查找入职员工时间排名倒数第三的员工的所有信息3. 查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no4. 查找所有已经分配部门的员工的last_name和first_name5. 查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括暂时没有分配具体部门的员工6. 查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序7. 查找薪水涨幅超过15次的员工号emp_

2021-04-13 19:08:00 214

原创 剑指offer 62. 圆圈中最后剩下的数字

剑指offer 62. 圆圈中最后剩下的数字题目描述解题思路参考题解:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/solution/jian-zhi-offer-62-yuan-quan-zhong-zui-ho-dcow/约瑟夫环问题,用动态规划解决。class Solution { public int lastRemaining(int n, int m) {

2021-04-13 14:27:58 83

原创 剑指offer 61. 扑克牌中的顺子

剑指offer 61. 扑克牌中的顺子题目描述解题思路参考题解:https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/solution/mian-shi-ti-61-bu-ke-pai-zhong-de-shun-zi-ji-he-se/class Solution { public boolean isStraight(int[] nums) { HashSet<Integer> s

2021-04-13 13:30:12 44

原创 牛客题霸 4. 查找所有已经分配部门的员工的last_name和first_name

牛客题霸 4. 查找所有已经分配部门的员工的last_name和first_name题目描述解题思路内连接select e.last_name, e.first_name, d.dept_nofrom employees as e join dept_emp as don e.emp_no = d.emp_no左连接以 employees 为主表进行左连接,但要注意未分配的部门的员工不显示(即 dept_no 不为 null )select e.last_name, e.first_

2021-04-12 20:17:45 84

原创 牛客题霸 3. 查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no

牛客题霸 3. 查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no题目描述解题思路思路:以s.emp_no = d.emp_no为联结条件联结两表。为什么要限制 where s.to_date = ‘9999-01-01’ and d.to_date = ‘9999-01-01’ ?因为薪水表是按年发的,而题目要查找的是当前的薪水,所以要过滤掉以前,而 dept_manager 是因为有领导会离职, to_date 时间不一定是 9999-01-01 ,所以要过滤过离职的领导。

2021-04-12 20:05:30 308

原创 牛客题霸 2. 查找入职员工时间排名倒数第三的员工所有信息

牛客题霸 2. 查找入职员工时间排名倒数第三的员工所有信息题目描述解题思路LIMIT m,n : 表示从第m+1条开始,取n条数据;思路:使用子查询,按 hire_date 倒序排列,注意要使用 distinct 去重,然后用 limit 取出第三条数据。select * from employeeswhere hire_date = (select distinct hire_date from employees order by hire_date desc limit 2, 1);

2021-04-12 19:42:13 100

原创 牛客题霸 1. 查找最晚入职员工的所有信息

牛客题霸 1. 查找最晚入职员工的所有信息题目描述解题思路首先用子查询找到最大(最晚)的入职时间,然后找到所有 入职时间等于该最晚入职时间 的员工。select * from employeeswhere hire_date = (select max(hire_date) from employees);...

2021-04-12 19:29:11 84

原创 剑指offer 60. n个骰子的点数

剑指offer 60. n个骰子的点数题目描述解题思路1. 回溯(爆栈)用 map 记录路径:和 -> 该和出现的次数,最后统计map中每种和的出现概率。但思考一下,遍历回溯树最多总共需要6 ^ 11 (1 <= n <= 11),所以会爆栈。class Solution { TreeMap<Integer, Integer> map = new TreeMap<>(); // 映射 :和 -> 出现次数 public d

2021-04-12 16:39:57 53

原创 1. 代码手写

文章目录1.1 快速排序1.2 归并排序1.3 手写 Spark-WordCount1.4 冒泡排序1.7 高效读取大数据文本文件(上亿行数据)1.1 快速排序快速排序:时间复杂度平均o(nlogn),最坏o(n²)空间复杂度平均o(logn),最坏o(n)不稳定public void quickSort(int[] arr, int left, int right) { if (left >= right) return; int temp = arr[left]

2021-04-12 15:26:08 114

原创 剑指offer 59 - II. 队列的最大值

剑指offer 59 - II. 队列的最大值题目描述解题思路单调队列注意,此题有两个注意点!!只要涉及栈和队列,一定要注意边界判空问题。例如,只要涉及 getLast、getFirst 这种取元素,或者 poll 这种移除元素,就一定要判空。只要不是基本数据类型,其他所有的包装器类型比较值大小时,一定要用 equals 。如 Integerclass MaxQueue { Queue<Integer> myQue; LinkedList<Integer

2021-04-08 10:36:50 69

原创 剑指offer 58 - II. 左旋转字符串

剑指offer 58 - II. 左旋转字符串题目描述解题思路切片函数 substringclass Solution { public String reverseLeftWords(String s, int n) { if (s == null || s.length() == 0) return s; return s.substring(n, s.length()) + s.substring(0, n); }}不用切片函数clas

2021-04-08 09:24:24 59

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除