自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (2)
  • 收藏
  • 关注

原创 Full gc频繁如何解决,遇到OOM问题如何排查

Full GC触发Full gc的表现形式CPU满载告警API响应时间过长内存反复波动fullgc告警常用的排查命令jps: 查看本机java进程jstack: 打印线程的栈信息,制作线程dump文件jmap:打印内存映射信息,制作堆dump文件jstat:性能监控工具jhat:内存分析工具,用于解析堆dump文件并以适合人阅读的方式展示出来jconsole: 简易的jvm可视化工具Full gc发生的原因System.gc() 方法调用老年代空间不足,新生代对象转入以及

2022-05-03 21:41:35 3055

原创 系统设计题

系统设计题回答步骤Step1 问清楚系统的功能性需求和非功能性需求功能性需求:用户是谁,会如何使用该系统系统的作用是什么,有哪些功能,可以拆分成哪些服务?系统的输入和输出是什么?非功能性需求:QPS大概是多少?每秒处理多少请求?会处理多少数据?读写比率大概是多少?Step2 系统进行抽象设计通过所有组件来描绘一个高层级设计–系统设计架构图比如说大概有哪几个部分画出主要的组件和连接证明想法Step3 每一个核心的组件进行分析具体如何实现,包括技术选型与算法逻辑,使用

2022-05-03 14:27:34 465

原创 clickhouse-其他常见类型表引擎

其他常见类型的表引擎clickhouse表引擎还有:外部存储系列的表引擎,能够直接读取其他系统的数据,clickhouse只负责元数据管理,类似外挂表的形式内存系列的表引擎,能够充当数据发挥的临时存储载体或消息通道日志文件系列,简单易用接口系列表引擎,能够串联已有的数据表,起到粘合作用外部存储类型外部存储表引擎直接从其他的存储系统读取数据,例如直接读取hdfs文件或者mysql数据库的表。这些表引擎只负责元数据管理和数据查询,而不负责数据写入。HDFShdfs表引擎可以直接与它对接,读

2022-05-02 16:18:26 668

原创 clickhouse---MergeTree系列表引擎

MergeTreeMergeTree作为家族最基础的表引擎,提供了数据分区、一级索引和二级索引等功能。对于基础原理,在上一篇文章中已经介绍过了。本节进一步介绍MergeTree家族独有的另外两项能力----数据TTL与存储侧罗TTLMergeTree中可以设置整个列字段或者整张表的TTL.如果到达ttl会将对应列/表删除。ttl的运行原理:如果一张MergeTree表设置了TTL表达式,那么在写入数据时,会以数据分区为单位,在每个分区目录内生成一个名为ttl.txt文件,里面存储ttl相关信息。co

2022-05-02 15:29:23 629

原创 clickhouse-MergeTree原理解析

MergeTree的创建方式与存储结构MergeTree在写入一批数据时候,数据总会以数据片段的形式写入磁盘,切数据片段不可修改。为了避免片段过多,clickhouse会通过后台线程定期合并这些片段MergeTree的创建方式CRETAE TABLE ID NOT EXISTS DB_NAME.TABLE_NAME( name1 [type] [DEFAULT|METERIALIZED|ALIAS expr]) ENGINE = MergeTree()[PARTITION BY expr

2022-05-02 12:00:35 558

原创 Clickhouse---数据字典

数据字典是Clickhouse提供的一种非常简单、实用的存储媒介,以键值和属性映射的形式定义数据。字典中的数据会主动或被动加载到内存,并支持动态更新。由于字典数据常驻内存的特性,所以非常适合保存常量或经常使用的维度表数据,避免不必要的JOIN查询。分为内置和扩展两种。内置字典Yandex.Metrica 只提供了字典的定义机制和取数函数外部扩展字典外部扩展字典是以插件的形式注册到Clickhouse中的,由用户自行定义数据模式及数据来源。目前扩展字典支持7种类型的内存布局和4类数据来源。通过配置来

2022-05-02 10:10:41 853

原创 Clickhouse数据定义

Clickhouse的数据类型clickhouse作为分析型数据库,clickhouse提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。基础类型基础类型只有数值、字符串和时间3中类型数值类型Int:Int8,Int16,Int32和Int64Uint:Uint8,Uint16,Uint32,Uint64Float:Float32 (有效精度7位),Float64(有效精度16),clickhouse的浮点数支持正无穷、负无穷以及非数字的表达方式Decimal Decimal

2022-05-02 09:38:58 1388

原创 Clickhouse的架构设计&clickhouse快的原因

Clickhouse架构设计Column与FieldColumn和Field是Clickhouse数据最基础的映射单元。作为一款百分之百的列式存储数据库,clickhouse按列式存储数据,内存中的一列数据由一个Column对象表示。column对象分为接口和实现两个部分,在Icolumn接口对象中,定义了对数据进行各种关系运算的方法,例如插入数据的insertRangeFrom和insertFrom,用于分页的cut,以及用于过滤的filter等。而这些方法的具体实现对象则是根据数据类型不同,由相应的

2022-05-01 19:31:16 354

原创 Clickhouse架构概述(一)---clickhouse的核心特性

1.完备的DBMS功能clickhouse拥有完备的管理功能,具有DBMS的基本功能,如下所示:DDL 可以动态的创建、修改或删除数据库、表和视图,无需重启服务DML 数据操作语言:可以动态查询、插入、修改或删除数据权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性数据备份与恢复:提供了数据备份导出与导入恢复机制,满足生产环境的要求分布式管理:提供集群模式,能够自动管理多个数据库节点2.列式存储与数据压缩clickhouse就是一款使用列式存储的数据库,数据按列进行组

2022-05-01 14:45:51 1058

原创 Clickhouse的Join

Clickhouse单机join实现clickhouse单机join操作默认采用hash join算法,可选用merge join。其中merge join算法数据会溢出到磁盘,性能相比前者差。本文主要介绍hashjoin实现的join操作。从right table读取该全量表数据,在内存中构建hashmap,从left table分批读取数据,根据join key到hash map中进行查找,如果命中,则该数据作为join输出。从实现可以看出,如果right table数据量超过单机可用内存限制时候

2022-04-28 11:19:03 3292

原创 美团面试真

1.Spring AOP 底层原理aop底层是采用动态代理机制实现的:接口+实现类如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK proxy创建代理对象没有实现接口的对象,会使用Cglib生成一个被代理对象的子类作为代理就是由代理创建出一个和impl实现类平级的一个对象,但是这个对象不是一个真正的对象,只是一个代理对象,但它可以实现和impl相同的功能,这个就是aop的横向机制原理,这样就不需修改源代码2.HashMap的底层数据结构是怎样的?JDK1.8之前JD

2022-04-28 09:51:36 130

原创 Hbase数据结构与算法

Hbase数据结构与算法Hbase的一个列族本质上是一棵LSM树(Log Structured Merge Tree)。LSM树分为内存和磁盘部分。内存部分是一个维护有序数据集合的数据结构。hbase选择了跳表。磁盘部分是由一个个独立文件组成,每一个文件都是一个数据块。对于数据存储在磁盘上的系统来说,磁盘寻道以及数据读取都是非常耗时的操作。因此,为了避免不必要的IO耗时。因此在次盘中存储一些额外的二进制数据,这些数据用来判断制定的key是否有可能存储在这个数据块中,这个数据结构称为布隆过滤器跳表跳表插

2022-04-26 10:18:54 319

原创 Hbase原理与实践-1

Hbase数据模型从逻辑视图来看,Hbase的数据是用表形式进行组织的,而且和关系型数据库中的表一样,由列和行构成,从物理视图来看,hbase中的数据是一个Map,由键值(k,v)组成,不过与普通Map不同,Hbase是一个稀疏的、分布式、多维排序的Map.Hbase的逻辑视图table: 表,一个表包含多行数据row:行,一行数据包含一个唯一标识rowkey、多个column以及对应的值。在Hbase中,一张表中所有row都按照rowkey的字典由小到大排序。column:列,与关系型数据库中

2022-04-26 09:36:03 373

原创 Spring 原理

Spring基本概念Spring 特点sring是一个全面的、企业应用一站式解决,贯穿表现层、业务层、持久层,能够与其他框架无缝衔接整合。轻量 :从大小与开销两方面而言Spring都是轻量级的,完整的spring框架可以在一个大小只有1M多的JAR文件里面发布,并且spring所需的处理开销也是微不足道的控制反转:spring通过一种被称作控制反转的IOC的技术促进低耦合,当应用了IOC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找。面向切片 spring支持面

2022-04-24 17:49:24 592

原创 JAVA 基础

JAVA 异常分类及处理基本知识概念如果某个方法不能按照正常的途径完成任务时,就可以通过另一种路径退出方法。在这种情况下会抛出了一个封装错误信息的对象。此时,这个方法立刻退出同时不返回任何值。另外调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。异常分类Throwable 是java语音中所有错误或异常的超类。下一层分为Error和ExceptionError: 是指java运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果出现了这样的错误,除了告知用

2022-04-24 12:01:10 402

原创 Java 集合

Java 集合接口继承关系和实现集合类存在于java.util包中,主要有3种:set、list、mapCollection:Collection是集合List、Set、Queue的最基本接口Iterator: 迭代器,通过迭代器遍历集合中的数据Map:是映射表的基础接口ListJava的List是非常常用的数据类型,List是有序的Collection。java List一共3个实现类:分别是ArrayList、Vector、LinkedListArrayListArrayList是最常

2022-04-23 11:00:33 145

原创 JVM概述

JVMJVM是可运行的java代码假想计算机,包括一套字节指令集、一组寄存器、一个栈、一个垃圾回收器、堆和一个存储方法域。JVM是运行在操作系统之上的,没有与硬件直接的交互JVM 主要分成3个部分,包括:java代码执行:编译为.class->装载class->执行class内存管理:内存空间/内存分配/内存回收/内存状况分析线程资源同步和交互机制:线程资源同步/线程交互机制/线程状态及分析方法线程程序执行过程中的一个线程实体。JVM允许一个应用并发执行多个线程。Hotspot

2022-04-23 09:23:44 466

原创 解决matplotlib mac上中文乱码问题

解决matplotlib mac上中文乱码问题https://www.freesion.com/article/70711031097/注意:删除缓冲目录很重要matplotlib.get_cachedir()这个是获取缓冲目录

2021-10-31 12:23:57 80

原创 SPARK-Spark Core(3) RDD 常见算子

RDD常见的算子算子分类与概述Transformation算子Map类算子聚合类算子Join类算子其他算子Action算子算子分类与概述RDD算子操作分为2类:Transformation:用来对RDD进行转化,这个操作延迟执行(或者说是lazy),结果返回一个新的RDDAction: 用来触发RDD操作,得到相关的计算结果或者将结果保存在外部系统。返回结果是一个int、double、集合Transformation算子Map类算子map(func) :对数据集中每个元素都是用func,

2021-04-06 12:04:08 280 2

原创 SPARK-Spark core(2)

Spark Core IIRDD 编程RDD含义与特点三级目录RDD 编程RDD含义与特点RDD: 是一个抽象类,代表一个不可变的、可分区的、里面的元素可并行计算的集合。是spark的核心概念,是一个容错的、可以并行执行的分布式数据集RDD包含5个特征:1)一个分区的列表2)一个计算函数compute,对每个分区进行计算3)对其他RDD的依赖(宽依赖、窄依赖)列表4)对key-valueRDDs来说,存在一个分区器5)对每一个分区有一个优先位置的列表(可选的)RDD的特点:1)分区

2021-03-25 11:33:07 92

原创 git 失败重提

校验规则失败以后git 重提找到自己提的版本 git log --oneline恢复到之前版本 git reset --soft 7a6dfec重提

2021-03-25 10:37:02 149

原创 SPARK---Spark Core(1)

Spark CoreSpark概述spark与MR比较spark系统架构spar安装部署Spark概述spark是一个快速、通用的计算引擎spark特点:速度快,使用简单、通用、兼容好spark与MR比较Map ReduceSpark数据存储结构:磁盘HDFS文件系统的split使用内存构建分布式数据集RDD对数据进行运算和cache编程范式:Map+Reduce,仅有两个操作,表达能力欠缺提供了丰富的操作,使数据处理逻辑大大简化计算中间结果落到磁盘,IO

2021-03-23 15:12:21 1630 8

原创 Kafka总结(1) ---kafka概述

Kafka概述Kafka介绍Kafka优势Kafka应用场景基本架构kafka客户端常见命令kafka服务端参数配置Kafka介绍kafka是一个分布式、分区的、多副本的、多生产者的、多订阅者的,基于zookeeper协调的分布式日志系统是一种发布订阅模式。Kafka优势高吞吐量:单机每秒处理几十上百的消息。即使存储了许多TB的消息,它也能保持稳定的性能。高性能:单节点支持上千个客户端,并保证0停机和0数据丢失持久化数据存储:将消息持久化磁盘。通过将数据持久化到硬盘以及副本防止数据丢失

2021-03-22 10:30:26 131 3

原创 Flink Timer定时器机制与具体实现

Flink TimerTimer简介Timer使用举例Timer的特点Timers的原理分析Timer简介Timer定时器是Flink Streaming API提供的用于感知并利用处理时间/事件事件变化的机制最显示了timer的方式就是KeyedProcessFunction.在其processElement()方法中注册Timer,然后覆盖其onTimer方法作为Timer触发时间的回调逻辑,根据时间特征的不同:处理时间–调用context.timerService().registerPro

2021-03-16 16:46:40 2540 6

原创 Flink state应用--实现topN

利用Flink state实现topN获取数据源,自定义下沉器本处暂时不赘述,主要是对核心topN的代码进行解析获取数据流并转化成对象DataStream<UserAction> dataStream = dataStreamSource.map(value-> JSONObject.parseObject(value,UserAction.class));将乱序数据抽取出来,设置watermarkDataStream<UserAction> timedDa

2021-03-16 15:14:34 315

原创 Flink 的state管理(1) -Flink SQL的状态清理

Flink 的状态管理Flink SQL实现状态清理Flink SQL实现状态清理背景:分组处理产生的结果会作为中间状态存储下来,随着分组key的不断增加,状态自然也就会不断膨胀。但是这些状态数据基本都具有时效性,不必永久保留。例如:topN语法进行去重,重复的数据一般都位于特定的区间内(例如1小时或者1天),过了这段时间之后,对应的状态就不需要了。随着时间的增长以及key的增加,面临超出存储的风险越来越大。在一些continuous queries的情况下,不得不去限制state的大小。是否去限制s

2021-03-16 11:32:02 3647

原创 Flink 的state管理(2) -Flink State的TTL

Flink state 的 TTL概述:flink进行实时计算中,会遇到一些状态不断累积,导致状态越来越大的情况。例如:作业中定义了超长的时间窗口,或者在动态表上应用了无限范围的Group By语句,以及执行了没有时间窗口限制的双流join等操作。对于这些情况,经常导致堆内存出现OOM,或者堆外内存RocksDB用量持续增长超出容器配额的上线,造成作业频繁的崩溃。从Flink 1.6版本开始引入State TTL机制,该特性可以允许作业中定义的keyed状态进行超时自动处理,对于TableAPI和SQL

2021-03-16 11:31:12 975 2

原创 2021-03-10Flinkspark 大数据 面试总结

总结Flink SQL如何实现状态清0Flink State的TTLFlink的Timer机制Flink 反压导致checkpoint不成功Flink写入HBase如果网络断了如何保证数据全部写入Kafka消息积压如何处理spark处理不过来如何处理Flink的底层是什么Flink SQL如何实现状态清0Flink State的TTLFlink的Timer机制Flink 反压导致checkpoint不成功Flink写入HBase如果网络断了如何保证数据全部写入Kafka消息积压如何处理spar

2021-03-14 10:58:00 680

原创 Redis总结(7)---Redis的锁

Redis的锁Watch实现乐观锁set 分布式锁RedissionWatch实现乐观锁乐观锁给予CAS(Compare and Swap) 思想(比较并替换),是不具有互斥性,不会产生锁等待而消耗资源,但是需要反复的重试,但是因为重试的机制,能比较快的响应。因此我们可以利用redis来实现乐观锁实现思路:1.利用redis的watch功能,监控key的状态2.获取redisKey的值3.创建redis事物4.給key的值+15.执行事物,如果key的值被修改过则回滚,key值不会变原理:

2021-03-13 22:59:38 1332

原创 Redis总结(6)---Redis 缓存问题

Redis的缓存问题缓存穿透缓存雪崩缓存击穿数据不一致数据并发竞争Hot keyBig Key缓存穿透在高并发情况下,查询key不存在的数据,会穿过缓存查询数据库,导致数据库压力过大而宕机解决方法:使用布隆过滤器,在缓存前加一个布隆过滤器,在查询的时候先去布隆过滤器查询key是否存在,如果不存在就直接返回,存在再查询缓存和DB。缓存雪崩当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统带来很大的压力。突然间大量的key失效或者redis重启,大量访问数据库,

2021-03-13 22:35:36 1331 14

原创 Redis总结(5)---redis的高可用方案

Redis的高可用方案主从复制二级目录三级目录哨兵模式二级目录三级目录集群与分区二级目录三级目录主从复制二级目录三级目录哨兵模式二级目录三级目录集群与分区二级目录三级目录

2021-03-10 09:11:03 138

原创 Redis总结(4)--redis高级特性

Redis高级特性发布与订阅redis事务redis的ACID事务概述事务命令Watch执行redis慢查询日志二级目录三级目录redis监视器二级目录三级目录发布与订阅redis提供了发布订阅功能,可以用于消息的传输redis的发布订阅功能机制包括3个部分,publisher,subscriber和channel常用命令:subscribe ch1 ch2publish channel messageunsubscribe ch1psubscribe 模式匹配 +模式punsubscr

2021-03-09 23:12:15 147

原创 Redis知识总结(3)-redis的持久化

Redis持久化·Redis持久化概述RDB触发快照的方式RDB执行原理RDB优缺点优点缺点AOFAOF配置AOF原理AOF保存模式AOF重写、触发方式、混合持久化RDB与AOF对比RDB与AOF应用Redis持久化概述redis的持久化是为了快速恢复数据而不是为了存储数据redis的持久化不保证数据的完整性RDBRDS(redis database) ,是redis默认的存储方式,RDB方式是通过快照完成的触发快照的方式符合自定义配置的快照规则,漏斗设计,提高性能save "" #不使

2021-03-09 15:40:22 172

原创 Redis总结 2--Redis数据结构与过期机制

Redis数据结构与过期机制Redis数据结构5种常见数据类型字符串String集合 set有序集合 sorted set列表Hash哈希3种不常见数据类型bitmap位图类型geo地理位置类型stream数据流类型Redis过期机制缓存过期和淘汰策略三级目录Redis数据结构redis是一个C语言开发的高性能的内存型键值对NoSql数据库5种常见数据类型字符串String能表示字符串、整数、浮点数常见操作set key valueget keygetset key valuesetn

2021-03-08 23:20:26 1580 2

原创 Redis知识总结(1)缓存原理&设计

缓存原理&设计缓存概述缓存的读写模式缓存概述缓存:CPU上一种高速存储器,它先于内存与CPU交换数据,速度很快使用场景: DB缓存,减轻DB服务器压力 提高系统响应 session分离 分布式锁 乐观锁缓存的优势 提升用户体验 减轻服务器压力 提升系统性能缓存的代价 额外的硬件支出 高并发缓存失效 缓存与数据库数据同步 缓存并发竞争缓存的读写模式旁路缓存(Cache Aside Pattern)读的时候先读缓存,缓存没有的话,就读数

2021-03-08 18:16:55 1620 10

原创 面试总结(2)

HashMap的实现HashMap底层由数组+链表构成,JDK 1.8之后,当链表长度超过8之后转成红黑树Integer缓冲区Integer的缓冲区范围是[-128,127],形成缓冲区的原因是区间内的数字是最常用的,多次使用相同的底层对象有利于内存的优化Double有没有缓冲区为什么没有缓冲区是包在一个对象内基本元素数据的数组,由capacity,limit,mark,position四个属性DoubleBuffer继承与Bufferspring MVC 中 DispatcherSevle.

2021-03-05 17:15:20 112 7

原创 Flink入门(8)-Flink作业提交流程

Flink作业提交流程概述概述1.在Flink Client中,通过反射启动jar中的main函数,生成FlinkStreamGraph和JobGraph,将JobGraph提交给Flink集群2.Flink集群收到JobGraph(JobManager收到)后,将JobGraph翻译成ExecutionGraph,然后开始调度,启动成功之后开始消费数据。pipelineExecutor有多种实现,session模式下:AbstractSessionClusterExecutorper-jo

2021-03-05 11:20:23 603 1

原创 Flink入门(7)--Table API和Flink SQL

Table API & SQL概述代码入门依赖编码流程概述Table API 和 SQL是批流统一的上层处理API,无论是批输入还是流输入,在这两套API中,制定的查询都具有相同的语义,得到相同的结果代码入门依赖flink-table-api-java-bridge:桥接器,主要负责tableAPI 和 DataStream/DataSet API 的连接支持flink-table-planner-blink: 计划器,table API的最主要部分,提供了运行时环境和生成程序执行计

2021-03-05 10:36:18 231 1

原创 Flink入门(6)--Flink CEP

Flink CEPFlink CEP的 概述与分类Pattern APIPattern分类模式序列模式的检测匹配事件的提取超时事件的提取Flink CEP原理 非确定有限自动机Flink CEP的 概述与分类Flink CEP的 概述CEP 即Complex Event Processing即复杂事件处理,Flink CEP是在Flink种实现复杂事件处理的库。处理事件的规则被叫做Pattern,Flink CEP提供了Pattern API,用于对输入数据进行复杂事件的规则定义,用来提取符合规则的

2021-03-05 10:18:04 1295 6

原创 面试总结体会

1 当面试官问你工作经验的时候,一般来说会根据你的回答然后问相关的内容。所以说要对面试官进行引导。比如说在面试中如果想突出自己的大数据技能,可以说在工作中用到了一些大数据的技术2 不断的突破自己的内心,平时不常沟通的话要多去面试,从自我介绍,回答问题中总结经验,看看如何自己才能答的更好...

2021-03-04 15:36:18 81 1

Java核心类库.png

java核心类库的知识点,包括字符串,网络编程,IO流,异常处理等等。比如StringBuilder,StringBuffer,BufferedOutputSream,BufferedInputStream等

2020-08-07

Java核心类库.png

java核心类库的知识点,包括字符串,网络编程,IO流,异常处理等等。比如StringBuilder,StringBuffer,BufferedOutputSream,BufferedInputStream等

2020-08-07

空空如也

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

TA关注的人

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