CMS垃圾收集器
CMS回收流程
CMS(Concurrent Mark Sweep)收集器是一种以获取 最短回收停顿时间为目标的收集器。
采用的是"标记-清除算法",整个过程分为4步
CMS回收流程
CMS(Concurrent Mark Sweep)收集器是一种以获取 最短回收停顿时间为目标的收集器。
采用的是"标记-清除算法",整个过程分为4步
Java及JVM简介
TIOBE语言热度排行榜:https://www.tiobe.com/tiobe-index/世界上没有最好的编程语言,如果有,我相信一定是JAVA。
Java发展的重大事件
1995年5月23日,Java语言诞生
1996年1月,第一个JDK-JDK1.0诞生
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
1996年9月,约8.3万个网页应用了JAVA技术来制作
1997年2月18日,JDK1.1发布
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录 1997年9月,JavaDeveloperConnection社区成员超过十万 1998年2月,JDK1.1被下载超过2,000,000次
1998年12月8日,JAVA2企业平台J2EE发布
1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)
2000年5月8日,JDK1.3发布
2000年5月29日,JDK1.4发布
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机
2001年9月24日,J2EE1.3发布
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升
2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0
一个Java对象在内存中包括3个部分:对象头、实例数据和对齐填充
小端存储 :便于数据之间的类型转换,例如:long类型转换为int类型时,高地址部分的数据可以直接截掉。
大端存储 :便于数据类型的符号判断,因为最低地址位数据即为符号位,可以直接判断数据的正负号。
演员突然爆火,用户关注瞬间增加
流量聚合-BufferTrigger
类似于kafka的客户端缓冲区,就是个缓冲区,把多次的请求整合成一个请求处理。
针对大V,几千万粉丝的,如何分库分表
单独的库表,搞一张表,保存对应的关系(在哪个库里)
针对某个帖子,进行计数统计的数据库设计
比如,一个帖子的readCount, replyCount, 点赞数等
● 帖子id,用户id,各种count一行
如果要增加新的统计维度,那就增加一列。数据量特别大的时候,可以根据userId进行分库分表
● id,postId, type(read, reply, 点赞), value (数量)
模糊计数和精准计数
DB+cache或者Cache+DB的方式,定期进行数据对齐(这时候如果数据量很大很大,这数据对齐的成本也就太高了,不如直接用消息队列)
kafka为什么那么快
客户端缓冲区(默认32M),写时复制,顺序写文件
kafka架构图
kafka的reblance机制
rebalance就是说如果消费组里的消费者数量有变化或消费的分区数有变化,kafka会重新分配消费者消费分区的关系。比如consumer group中某个消费者挂了,此时会自动把分配给他的分区交给其他的消费者,如果他又重启了,那么又会把一些分区重新交还给他。
注意:rebalance只针对subscribe这种不指定分区消费的情况,如果通过assign这种消费方式指定了分区,kafka不会进行rebanlance。