自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 最近连续三周活跃用户数

连续三周活跃用户:在当前日期之前三周的周活表中,此用户都存在周活表特点按照mid_id进行了去重因此如果用户,在连续三周的周活中出现,那么就会有3条对应的记录周活表:dws_dv_detail_wkmonday_date每周1的记录date_sub(nex_day(‘2020-02-18’,‘om’),21)21天之前周所在周的周一date_sub(next_day(‘2020-02-18’,‘mo’),1)当前所在周的周末思路:求当前日期,之前三周的数据。根据mid分组,分组后统计组内记录

2021-03-20 20:43:50 814 2

原创 最近七天内连续三天活跃用户数

日活表:dws_uv_detail_day思路:类似于错位相减连续:假如有A列,以x递增,以a开头假如有B列,以y递增,以b开头A B 连续两列差值a b b-aa+x b+y b-a+y-xa+2x b+2y b-a+2(y-x)假如A,B列都是连续的,有规律的递增,那么每两列之间的差值,也是以y-x递增假如x=y,此时每两列之间的差值,以0递增,差值一样1、取当前日志之前7天的数据2、按照用户mid_id分组,按

2021-03-20 20:02:34 1239

原创 namenode同步机制

sn向nn请求是否需要同步元数据信息如果需要同步,则nn会滚动当前正在写的edits.inprogressingsn把所有的edits文件和fsimage文件下载到sn(只有第一次同步会下载nn的fsimage文件,后面同步只需要下载edits文件即可)在sn把edits文件和fsimage文件加载到内存合并成新fsimage文件,重命名为fsimage.checkpoint文件把fsimage.checkpoint文件上传到nn上,并重命名为fsimage,整个元数据同步完成https://b.

2021-03-17 21:54:22 330

原创 NameNode的HA是如何实现的?

在ZKFC的进程内部,运行着3个对象服务:HealthMonitor:监控NameNode是否不可用或是进入了一个不健康的状态。ActiveStandbyElector:控制和监控ZK上的节点的状态。ZKFailoverController:协调HealMonitor和ActiveStandbyElector对象,处理它们发来的event变化事件,完成自动切换的过程。ZKFCZKFC即ZKFailoverController,作为独立进程存在,负责控制NameNode的主备切换,ZKFC会监测N.

2021-03-17 21:31:31 236

原创 ConcurrentHashMap为什么是线程安全的?

JDK1.7 CpncurrentHashMap简介: ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁(ReentrantLock),在ConcurrentHashMap里面扮演锁的角色;HashEntry则用于存储键值对数据。 一个ConcurentHashMap里面包含一个Sefment数组。Segment的结构和HashMap类似,是一种数组和链表结构。一个Segment里面包含一个HashEntry

2021-02-08 18:27:02 1721

原创 HashMap为什么是线程不安全的?

HashMap的线程不安全主要体现在下面两个方面:1.在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况。2.在JDK1.8中,在并发执行put操作时会发生数据覆盖的情况。JDK1.7之前HashMap之所以在并发下的扩容造成死循环,是因为,多个线程并发进行时,因为一个线程嫌弃完成了扩容,将原Map的链表重新散列到自己的表中,并且链表变成了倒叙,后一个线程再扩容时,有进行自己的散列,再次将倒叙的链表变为正序链表。于是就形成了环形链表,当get表中不存在的元素时,造成死循环(JDK1.7

2021-01-30 19:02:38 177 3

原创 nameNode和dataNode启动都干了哪些事?

nameNodenameNode启动时,首先将镜像文件(fsimage)载入存,并执行edits中的各项操作,一旦在内存中成功建立文件系统元数据镜像,则创建一个新的fsimage文件和一个空的edits(编辑日志),此时nameNode开始监听dataNode请求,到那时此刻,nameNode运行在安全模式,即nameNode的文件系统对于客户端来说是只读的。dataNodedataNode启动时,每个dataNode对本地磁盘进行扫描,将本dataNode上保存的block信息汇报给nameNode

2021-01-25 13:13:34 266

原创 HashMap的底层原理

HashMap的底层原理hashing(哈希法)的概念 散列法(Hashing)是一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。 由于通过更短的哈希值比用原始值进行数据库搜索更快,这种方法一般用来在数据库中建立索引并进行搜索,同时还用在各种解密算法中。HashMap数据结构特点数组的特点:有索引查询效率高,插入删除需要移动数据效率低链表的特点:查询效率低,插入删除效率高 红黑树:平衡二叉树,查询效率高JDK1.8之前 (数组+链表)

2021-01-22 13:50:23 94

原创 spring boot多线程@Autowired注入失效解决方案

spring boot多线程@Autowired注入失效解决方案在多线程处理问题时,无法通过@Autowired注入bean,报空指针异常,在线程中为了线程安全,是防注入的,如果要用到这个类,只能从bean工厂里拿个实例。那我们只有手动获取,解决方案如下:本类是获取bean的工具类,也是交给spring管理,通过程序的上下文获取,在需要注入bean的类中,使用构造方法调用对应获取bean的...

2019-04-10 10:24:11 2639

空空如也

空空如也

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

TA关注的人

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