- 博客(54)
- 收藏
- 关注
原创 Mysql 事务的四要素
java虚拟机主要分为以下几个区:1)方法区:a.有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载b.方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。c.该区域是被线程共享的。d.方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池具有动态性,也就是说常量并不一定是编译时确定,运行时生成的常量也会存在这个常量池中。2)虚拟机栈:a.虚拟机栈也就是我们平常
2021-06-26 19:13:37 284
原创 精准一次性消费
定义**精准一次性消费:**消费且仅消费一次数据,保证数据不丢不重;**最少一次消费:**主要是保证数据不丢,可能会产生数据的重复;**最多一次消费:**主要是保证数据不会重复,但有可能丢失数据问题如何产生**丢失数据:**在Kafka消费数据时我们的数据还没有处理完就提交了offect,如果此时我们宕机了在重新消费时就会产生数据丢失;**重复数据:**在Kafka消费数据时我们的数据处理过后此时宕机了因为我们还没有提交offect这时我们重新进行消费的话就会产生我们数据的重复如何解决方案一
2021-06-14 16:00:55 229 1
原创 Hive Impala联系与区别
Impala 与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。Impala与Hive在Hadoop中的关系如上图所示。Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询,Impala给数据分析人员提供了快速实验、验证想法的大数据分析工具。可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数.
2021-06-13 20:34:13 250 1
原创 Hql-连续登录N天
连续登录 假设我们的字段有 id 和 登录日期 dt我们以连续登录3天为例select id,diffdtfrom( select id, sortdt - dt as diffdt from (select id, dt, rownumber() over(partition by id order by dt) as sortdt f
2021-06-07 21:27:36 185
原创 数据结构与算法-2的幂
描述:给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。思路:如果我们的数是2的整数其二进制为1后面n个0 所以我们可以将n和其n-1进行于操作 如果最后的结果为0 则为true 否则为false代码:class Solution { public boolean isPowerOfTwo(int n) { return n>0 &am
2021-05-30 22:43:45 113 1
原创 数据结构与算法-戳气球
描述:有n个气球,编号为0到n-1,每个气球上都标有一个数字,这些数字存在数组nums中。现在要求戳破所有气球,戳破第i个气球可以获得其旁边两位数跟自己的乘积,如果为边界则超出的部分为1;代码:候就把他从list中给删除。来看下代码 public int maxCoins(int[] nums) { List<Integer> list = new LinkedList<>(); //先把nums数组中的元素放到list中 for (int n
2021-05-24 21:35:23 101
原创 Hadoop 怎么分片
HDFS 存储系统中,引入了文件系统的分块概念(block),块是存储的最小单位,HDFS定义其大小为 64MB。与单磁盘文件系统相似,存储在 HDFS 上的文件均存储为多个块,不同的是,如果某文件大小没有到达 64MB,该文件也不会占据整个块空间。在分布式的 HDFS集群上,Hadoop 系统 保证一个块存储在一个 datanode 上。HDFS 的 namenode 只存储整个文件系统的元数据镜像,这个镜像由配置 dfs.name.dir 指定,datanode 则存有文件的 metainfo 和具
2021-05-20 22:36:36 614
原创 HQL-留存率计算
留存率既:留存率=登录用户数/新增用户总数 * 100%登录用户数:在统计的时间登陆过的用户新增用户总数:新创建的用户(第一次登录的用户)思路:因为我们现实生产中求的不只是次日留存,还有7日留存或30日留存1.首先我们统计出每个用户最早登录时间2.统计出每日新增人数3.在统计出每日活跃用户4.将两个查询结果进行join形成新表 id atime(每日登录) btime(最早登录)5.通过TIMESTAMPDIFF(DAY,atime,btime)函数,求出两个日期之间相差的天数SELE
2021-05-15 22:24:13 400
原创 数据结构与算法-二叉搜索树的第k大节点
二叉搜索树的第k大节点因为二叉搜索树的分布是左子树小于根节点 右子树大于根节点,根据这个原理我们对我们的二叉搜索树进行中序遍历,遍历过后的结果就是我们的按照升序排好序的数组,因为我们题目中要求的是返回第K大的节点,所以我们可以逆序遍历,先遍历我们的右节点在根节点,最后左节点。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tr
2021-05-13 22:15:35 103
原创 HBase数据模型
HBase逻辑架构HBase物理存储1. NameSpace命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。HBase两个⾃带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是⽤户默认使用的命名空间。一个表可以⾃由选择是否有命名空间,如果创建表的时候加上了命名空间后,这个表名字以:作为区分!2. Table类似于关系型数据库的表概念。不同的是,HBase定义表时只需要声明列族即可,数据属性,比如超时时间(TTL)
2021-05-11 22:40:11 178
原创 数据结构与算法-找到缺失的整数
一个长度为n的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围1~n之内。在范围1~n内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。思路:根据题目可知因为是递增的我们可以求其1~n的和在依次减去数组中数据;public int missingNumber(int[] nums) { int n = nums[nums.length-1]; int result = n *(n + 1 ) /2; for(int i=0;i<n
2021-05-09 20:59:32 152
原创 数据结构与算法-找到环的入口
package linkedlist;public class LinkedList { public static Node isCycle(Node head){ Node p1 = head; Node p2 = head; while (p2 != null && p2.next != null){ p1 = p1.next; p2 = p2.next.next; if (p1 == p2){ Node index1 = p2;
2021-05-05 21:32:38 132
原创 数据结构与算法-合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode head = new ListNode(0); ListNode temp = head; while(l1
2021-05-03 23:08:51 137
原创 数据结构与算法-判断是否有环
package linkedlist;public class LinkedList { public static boolean isCycle(Node head){ Node p1 = head; Node p2 = head; while (p2 != null && p2.next != null){ p1 = p1.next; p2 = p2.next.next; if (p1 == p2){ return true; }
2021-05-01 22:06:27 138
原创 数据结构与算法-输出链表倒数第n个元素
输入一个int类型数值n返回链表的倒数第n个元素值public static HeroNode serch(HeroList head,int n){ //首先判断传入的n是否合法既n的值是否小于list的长度 int size = head.size; HeroList temp = head; if (size < n){ return null; } //合法后判断我们的需要遍历的次数为(size - n) for(int i=0;i<size-n;i+
2021-04-30 22:31:14 280 1
原创 Power BI中将度量作为维度进行建模的优缺点
使用“度量维度”方法构建事实表有一些优点,例如:你可以在报告中使用切片器来选择显示在视觉对象中的度量;你可以轻松添加新度量,而不必在事实表中添加新列;你可以使用行级安全性来控制用户可以访问哪些度量;但尽管如此,任何时候只要偏离常规维度建模,都可能会在以后遇到问题,这个方法也不例外。怎么会这么说呢,接下来就让我们一起看看将度量作为维度进行建模的一些缺点。格式设置压缩计算复杂度计算性能...
2021-04-28 22:06:01 328
原创 Spark Shuffle两种ShuffleManager
在Spark的源码中,负责shuffle过程的执行、计算和处理的组件主要就是ShuffleManager,也即shuffle管理器。而随着Spark的版本的发展,ShuffleManager也在不断迭代,变得越来越先进。在Spark 1.2以前,默认的shuffle计算引擎是HashShuffleManager。该ShuffleManager而HashShuffleManager有着一个非常严重的弊端,就是会产生大量的中间磁盘文件,进而由大量的磁盘IO操作影响了性能。因此在Spark 1.2以后的版本中
2021-04-27 21:41:16 371
原创 如何在不使用递归的情况下遍历一颗二叉树
面试的时候,往往面试官会强制你写出非递归的版本,网上关于非递归版本的介绍也有很多,这里我分享一个自己认为是比较好记的版本。显然,我们需要用一个stack来模拟递归时的函数调用。对于三种遍历,我们都使用push当前节点->push左子树->pop左子树->push右子树->pop右子树的方式。但是cout时机会有所不同。对于前序遍历来说,每次访问到一个节点就cout;对于中序遍历来说,每次将右子节点进栈时,把当前节点cout;对于后序遍历来说,每次pop的时候cout。使用工
2021-04-25 09:52:20 320
原创 关于Hash算法和Hash冲突
关于Hash算法和Hash冲突Hash算法:就是根据设定的Hash函数H(key)和处理冲突方法,将一组关键字映射到一个有限的地址区间上的算法。所以Hash算法也被称为散列算法、杂凑算法。Hash表:通过Hash算法后得到的有限地址区间上的集合。数据存放的位置和key之前存在一定的关系(H(key)=stored_value_hash(数据存放位置)),可以实现快速查询。与之相对的,如果数据存放位置和key之间不存在任何关联关系的集合,称之为非Hash表。Hash冲突:由于用于计算的数据是无限的H(k
2021-04-24 15:25:59 292
原创 RDD、DataFrame、DataSet
一、三者的共性1)RDD、DataFrame、DataSet全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利; 2)三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action如foreach时,三者才会开始遍历运算; 3)三者有许多共同的函数,如filter,排序等;4)在对DataFrame和Dataset进行操作许多操作都需要这个包:import spark.implicits._(在创建好SparkSession对象后尽量直接导入)5)三者都会
2021-04-22 20:24:43 199
原创 数据结构与算法-反转链表
代码实现public TreeNode invertTree(TreeNode root) { if (root == null) { return null; } TreeNode right = invertTree(root.right); TreeNode left = invertTree(root.left); root.left = right; root.right = left; return root;}.
2021-04-21 21:34:21 51
原创 小文件的产生和解决
一、小文件是如何产生的1.现在的实时场景下基于每小时的每天的和每周的计算越来越多但是产生的数据大小可能不会超过10M。2.可能数据集本身就含有大量小文件,并未通过任何处理就拷贝到我们的HDFS当中时会产生。3.当我们的每个reduce都会产生一个文件,或者我们产生数据倾斜时,某个reduce数据过大,则其它的数据会很小。二、小文件产生的影响1.NameNode:会损耗NameNode的使用寿命,因为没产生一个小文件就会产生一份元数据并存储到NameNode内存中,元数据信息包括:文件名、文件
2021-04-20 21:42:08 881
原创 为什么说Spark比Hadoop快
当被问到为什么Spark比Hadoop快时候,得到的答案往往是:Spark是基于内存的计算,而Hadoop是基于磁盘的计算;Spark是一种内存计算技术。事实上,不光Spark是内存计算,Hadoop其实也是内存计算。Spark和Hadoop的根本差异是多个任务之间的数据通信问题:Spark多个任务之间数据通信是基于内存,而Hadoop是基于磁盘。1、Spark vs MapReduce ≠ 内存 vs 磁盘其实Spark和MapReduce的计算都发生在内存中,区别在于:MapReduce通常需要将
2021-04-19 13:58:16 778
原创 Kafka重复消费 漏消费 有序性
1.消费者自动提交偏移量2.消费者手动提交偏移量当我们的消费者Poll数据到Consumer当要更新offset时挂掉了此时我们的offect并没有被修改成功当Consumer好了时在重新读取的offect还是3所以会造成数据的重复消费那些情景会造成消息漏消费?先提交offset,后消费,有可能造成数据的重复如何保证有序性因为Kafka只能保证分区内有序当我们有多个分区但是想保证我们数据的有序性时我们可以使用一个生产者一个消费者一个分区,或者我们可以指定想要有序的数据到同一个分区生产者发送
2021-04-18 16:24:34 414
原创 Kafka如何保证数据有序
两种方案:方案一,kafka topic 只设置一个partition分区方案二,producer将消息发送到指定partition分区解析:方案一:kafka默认保证同一个partition分区内的消息是有序的,则可以设置topic只使用一个分区,这样消息就是全局有序,缺点是只能被consumer group里的一个消费者消费,降低了性能,不适用高并发的情况方案二:既然kafka默认保证同一个partition分区内的消息是有序的,则producer可以在发送消息时可以指定需要保证顺序的几条消息
2021-04-15 20:47:57 2612
原创 OLTP和OLAP的区别和受众
Mysql关系模型:关系模型主要应用与OLTP系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。Hive 维度模型:维度模型主要应用于OLAP系统中,因为关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。所以HIVE把相关各种表整理成两种:事实表和维度表两种。所有维度表围绕着事实表进行解释。对比属性 OLTP OLAP读特性 每次查询只返回少量记录 对大量记录进行汇总写特性 随机、低延时写入用户的输入 批量导入
2021-04-13 21:43:10 114
原创 Spark
RDD与DataFream使用场景:1)RDDa 你希望可以对你的数据集进行最基本的转换、处理和控制;b 你的数据是非结构化的,比如流媒体或者字符流;c 你想通过函数式编程而不是特定领域内的表达来处理你的数据;d 你不希望像进行列式处理一样定义一个模式,通过名字或字段来处理或访问数据属性;e 你并不在意通过 DataFrame 和 Dataset 进行结构化和半结构化数据处理所能获得的一些优化和性能上的好处;2)DataFream当读取的数据是结构化或半结构化的数据优先使用DataFre
2021-04-12 22:14:18 51
原创 数据结构与算法-二叉树的三种遍历方式
package tree;public class BinaryTreeDemo { public static void main(String[] args) { //创建二叉树 BinaryTree binaryTree = new BinaryTree(); HeroNode songjiang = new HeroNode(1, "songjiang"); HeroNode wuyong = new HeroNode(2, "wuyong"); HeroNode luji
2021-04-11 14:34:21 109
原创 数据结构与算法-排序(归并排序)
归并排序先将元素进行拆分,将两组数分别进行比较插入一个临时数组中,最后在合并输出,总合并步骤为数组元素的个数-1package sort;import java.util.Arrays;public class MergeSort { public static void merge(int []nums ,int left ,int right ,int []temp){ if (left < right){ int mid = (left + right)/2; /
2021-04-10 21:35:57 65
原创 数据仓库的特点
1. 面向主题面向主题特性是数据仓库和操作型数据库的根本区别。操作型数据库是为了支撑各种业务而建立,而分析型数据库则是为了对从各种繁杂业务中抽象出来的分析主题(如用户、成本、商品等)进行分析而建立;2. 集成性集成性是指数据仓库会将不同源数据库中的数据汇总到一起;3. 企业范围数据仓库内的数据是面向公司全局的。比如某个主题域为成本,则全公司和成本有关的信息都会被汇集进来;4. 历史性较之操作型数据库,数据仓库的时间跨度通常比较长。前者通常保存几个月,后者可能几年甚至几十年;5. 时变性时变
2021-04-10 10:54:23 480
原创 数据结构与算法-动态规划(最长回文子串)
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"class Solution { public String longestPalindrome(String s) { String result = ""; boolean table[][] = new boolean[
2021-04-08 21:27:08 102 1
原创 数据仓库分层原理
ODS 原始数据层对数据不做任何变化,用来备份数据对数据进行压缩(100G-10G)对数据进行分区存储,放置后续的全表扫描DWD 数据明细层对ODS层数据进行清洗(脏数据),对数据脱敏,维度退化DWS 服务数据层对DWD层的数据为基础,累计汇总DWT 数据主题层对DWS层的数据进行累计统计ADS 数据应用层为各种统计报表提供数据为什么要分层1)复杂问题简单化2)隔离原始数据3)减少重复开发...
2021-04-07 23:15:31 219
原创 数据结构与算法-排序(快排)
快排快排:选择一个数使其该数左边为都是小于它的,使其该数右边为都是小于它的。这时我们可能并没有排好序还需在进行左递归和右递归;代码package sort;public class QuickSort { public static void quickSort(int []nums,int left,int right){ int l = left; //左下标 int r = right; //右下标 int pivot = nums[(l+r)/2]; //中间值 int
2021-04-06 22:13:02 72 2
原创 数据结构与算法-排序(希尔)
希尔排序int []nums = new int[]{0,6,9,4,7,3,5,2,1,8};希尔排序:是将数据分别按照数组长度的一半来进行分组,将每组的元素进行比较,将其组内排好序。代码package sort;import java.util.Arrays;public class ShellSort { public static void shellSort(int []nums) { int temp = 0; for (int gmp = nums.length/
2021-04-05 22:11:37 59
原创 Kafka-Exactly Once语义
Exactly Once语义 将服务器的ACK级别设置为-1,可以保证Producer到Server之间不会丢失数据,即At Least Once语义。相对的,将服务器ACK级别设置为0,可以保证生产者每条消息只会被发送一次,即At Most Once语义。 At Least Once可以保证数据不丢失,但是不能保证数据不重复;相对的,At Least Once可以保证数据不重复,但是不能保证数据不丢失。但是,对于一些非常重要的信息,比如说交易数据,下游数
2021-04-04 22:03:29 100
原创 数据结构与算法-排序(插入排序)
插入排序(时间复杂度O(N²))插入排序:将每个元素依次插入到一个已经有序的序列中代码package sort;import java.util.Arrays;public class InstertionSort { //每次向已经有序的数组内插入元素 public static void insertionSort(int []nums,int n,int x){ int i; for (i = n-1; i >=0 ; i--) { if (x<nums[
2021-04-04 21:29:14 61
原创 数据结构与算法-排序(简单选择排序)
简单选择排序(时间复杂度O(N²))代码package sort;import java.util.Arrays;public class SelectSort { public static void selectSort(int []nums){ for (int i = 0; i < nums.length - 1; i++) { int min = nums[i]; int minIndex = i; for (int j = i+1; j < n
2021-04-04 20:30:29 151
原创 数据结构与算法-二分查找
旋转数组的最小数字代码 public int minArray(int[] nums) { int i = 0, j = nums.length - 1; while (i < j) { int m = (i + j) / 2; if (nums[m] > nums[j]) i = m + 1; else if (nums[m] < nums[j]) j = m;
2021-04-03 22:05:51 67
原创 数据结构与算法-排序算法(冒泡)
冒泡排序代码package sort;public class BubbleSort { public static void buutSort(Integer[] nums){ int k = nums.length; for(int i=0;i<nums.length;i++){ for(int j = i+1;j<k;j++){ if(nums[j-1]>nums[j]){ int tmp= 0; tmp = nums[j-1];
2021-04-03 21:49:49 55
原创 数据结构与算法-8皇后问题(回溯)
8皇后问题代码package recursion;public class Queue8 { //定义一个max表示共有多少皇后 static int max = 8; static int count = 0; //定义数组array,保存皇后放置位置的结果,比如arr = {0,4,7,5,2,6,1,3} static int [] array = new int[max]; public static void main(String[] args) { check(0);
2021-04-03 19:43:50 124
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人