自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (2)
  • 收藏
  • 关注

原创 java并发常用工具类

java并发工具类的使用

2022-05-30 18:17:40 396

原创 Java并发编程入门

学好java并发编程,可以将并发抽象成以下三个问题:分发,同步,互斥分发:Java SDK 并发包里的 Executor、Fork/Join、Future 本质上都是一种分工方法同步:一个线程执行完了一个任务,如何通知执行后续任务的线程开工,线程之间相互协作,而解决协作的核心技术就是管程互斥:互斥用于解决线程安全问题,保障同一时间只允许有一个线程访问共享变量,实现互斥的核心技术就是锁线程带来的原子性,可见性,有序性问题可见性问题: (缓存导致)在CPU多核场景

2022-05-10 16:20:10 244

原创 Flink常见问题

1、flink on yarn时,taskmanager总是落到一个nodemanager节点该问题可能针对CDH版本,需要更改yarn-site的配置,将yarn.scheduler.fair.assignmultiple设为false,重启CDH即可

2021-07-22 10:42:44 298

原创 kafka消费者

订阅主题:以正则方式订阅,如果后续有新增的符合正则规则的也会加入消费指定订阅某个topic分区按partition进行消费offset消费者提交的offset,是当前读到的offset+1,代表下一次需要拉取的position的位置提交方式(enable.auto.commit)默认是自动提交,提交周期是有auto.commit.interval.ms控制,默认5秒指定offset进行消费:当创建一个消费者组消费topic时,如果消费组是一个全新的或者当前消费者组在__consumer

2021-07-03 15:46:28 142 1

原创 kafka生产者

kafka的三种发送策略:发送即忘(fire and forget):同步(sync):异步(async):在同一分区,消息的发送是有序的,callback的调用顺序也是有序的kafka.close()方法会等待所有发送请求完成再关闭producerkafkaProducer常见异常分为可重试异常与不可重试异常可重试异常:NetworkException:网络异常LeaderNotAviableException:没有可用的leader,等到leader重新选举完,可恢复异常NotEn

2021-07-03 14:07:23 551

原创 记录一次本地调试Spark需要用Hadoop的问题

如果是第一次使用Spark,运行简单的demo,本地又没有安装Hadoop的配置环境,会报错,报winutils.exe 不存在解决思路如下:1安装Hadoop,从官网下载对应的版本2解压到本地3配置环境变量4、从网上下载winutils的工具,可以从github上下载,我们保存在百度云上的学习软件winutils5、解压,替换掉hadoop的bin目录6、因为window比较傻逼,环境变量不生效,可以重启电脑7、再次执行Spark程序...

2021-04-22 22:13:05 354

原创 流式处理中如何处理数据乱序问题

解决数据乱序的问题的三种窗口机制1、设定固定时间间隔的session窗口: 理论顺序为a,b,c,d每个session窗口是存在间隔的,计算这个间隔合理值,如果为1小时,则窗口实例在1小时之内,窗口d之后的1小时没有观察到更早的数据,则计算这个窗口中的值,劣势在与需要多等待1小时才能得到计算的结果2、设置watermark3、利用触发器实时生成近似结果...

2021-02-26 11:06:00 815

原创 Flink篇-架构设计介绍

从架构的层面分为无界流和有界流:无界流数据:有定义流的开始,但没有定义流的结束。它们会无休止地产生数据。无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的,在任何时候输入都不会完成。处理无界数据通常要求以特定顺序摄取事件,例如事件发生的顺序,以便能够推断结果的完整性。有界流数据:有定义流的开始,也有定义流的结束。有界流可以在摄取所有数据后再进行计算。有界流所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理Flink提交任务流程

2021-02-26 11:04:42 220

原创 Flink篇-水位线的理解

为什么需要引入水位线(watermark)?case 1: 消息到达没有延迟(理想情况)基于处理时间  如图,假设数据源生成3条消息,分别是第13秒,第13秒,第16秒。计算窗口为10秒,每隔5秒滑动一次。这些消息在图4中会落入对应时间窗口。前两个在第13秒生成的消息会落入 [5s - 15s] 的窗口1和 [10s - 20s] 的窗口2。而第16秒生成的消息 会落入 [10s - 20s] 的窗口2和 [15s - 25s] 的窗口3。最终每隔窗口期望得到的结果分别是 (a,2), (a,3)

2021-02-26 11:03:17 1722 4

原创 Flink篇-简介

是一个开源的分布式,高可用,高性能,准确的流处理框主要由Java实现支持流(stream)处理和批(batch)处理flink原生支持迭代计算,内存管理和程序优化优点Flink的架构图Flink的组件DataSource: 数据源Transformations: 算子(处理逻辑)Data Sink:数据沉底(数据保存的位置)流处理与批处理的区别对于一个流处理系统,其节点的数据传输标准模型为:当一条数据被处理完之后,序列化到缓存然后立刻通过网络传输到另一个节点,由另一个节点继

2021-02-26 11:00:56 233

原创 Impala基本使用和介绍

Impala提供对HDFS,HBASE数据的高性能,低延迟的交互式sql查询功能基于HIVE,使用内存计算,具有实时,批处理,多并发特点是处理pb级大数据实时查询分析引擎优点:基于内存运算,不需要把中间结果写入磁盘,省掉大量I/O开销无需转换为MR,直接访问hdfs,hbase的数据进行调度使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。支持各种文件格式,如TEXTFILE?、SEQUENCEFILE 、RCFile、Parq

2021-02-26 10:16:14 1107

原创 Kerberos简介与认证说明

Kerberos的认证过程:principal(安全个体):被认证的个体,有一个名字和口令,每个server都对应一个principal,其格式如下,@前面部分为具体身份,后面的部分称为REALMcomponent1 / component2 @ REALM (ossuser/[email protected])KDC(key distribution center ) : 是一个网络服务,提供ticket 和临时会话密钥。Ticket:一个记录,客户用它来向服务器证明自己的身份

2021-02-26 10:11:40 520

原创 HBASE基本使用

Hmaster负责管理HregionServerHregionServer(分区服务器) 管理regionregion下面是多个Store(列簇)hbase shell (字段多需要加‘’)每个命令的帮助: help ‘command(create)’创建命名空间:create_namespace ‘hzg’查看命令空间:list_namespace建表:create ‘hzg:student’,‘info’ (如果不指定库名,则默认去default,列族info需要指定)多个列族:cre

2021-02-26 10:09:43 271

原创 RowKey设计篇

RowKey的设计需要遵守以下三个原则:1.Rowkey的唯一原则必须在设计上保证其唯一性。由于在HBase中数据存储是Key-Value形式,若HBase中同一表插入相同Rowkey,则原先的数据会被覆盖掉(如果表的version设置为1的话),所以务必保证Rowkey的唯一性Rowkey的排序原则HBase的Rowkey是按照ASCII有序设计的,我们在设计Rowkey时要充分利用这点。比如视频网站上对影片《泰坦尼克号》的弹幕信息,这个弹幕是按照时间倒排序展示视频里,这个时候我们设计的Row

2021-02-26 10:07:10 447

原创 HBase简介

Hbase简介1、面向列的存储2、列是动态增加的,并且为空的列是不存储的,这就大大节约了空间,数据会自动切分3、row key为某一个行的主键,但是因为Hbase不支持条件查询以及Order by等查询组件说明Region是HBase数据存储和管理的基本单位。一个表中可以包含一个或多个Region。每个Region只能被一个RS(RegionServer)提供服务,RS可以同时服务多个Region,来自不同RS上的Region组合成表格的整体逻辑视图。HBase中有两张特殊的Table,-ROO

2021-02-25 10:04:45 118

原创 基于Docker的FDFS的安装

基于docker安装fdfs1、先停止tracker和storagedocker stop trackerdocker stop storage2、移除fdfsdocker rm trackerdocker rm storage3、安装fdfsdocker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh(-d 后台运行,–name 取名 --net=host 使用的网络模式)docker run -d -

2021-02-25 09:59:48 352

原创 Kafka可能出现的问题

1.java的控制台接收不到kafka的消费端数据的原因:(确保集群端的生产者与消费者信息可以互通)保证集群的kafka版本与maven中导的kafka依赖一致。1、如果创建出来的topic的leader为空查看zookeeper下的topic的权限发现其他人对这个topic只读权限2、查看环境变量中是否KAFKA_OPT的属性env3、在通过kafka创建topic时,将KAFKA_OPT这个属性置空export KAFKA_OPTS=""4、再次去创建kafka的topic..

2021-02-25 09:58:29 441

原创 kafka知识点

消息队列优势:解耦和异步调用异步调用的场景:用户注册(异步):注册信息存到数据库,数据库向消息队列插入发送短信请求,MQ负责发送短信秒杀系统(消峰):多个用户参与秒杀的请求全部放到MQ,秒杀系统从MQ中取出前几个请求参与秒杀消息队列的两种模式点对点(一对一):一个生产者只能对应一个消费者,而且消息不具有持久化,一旦消费,消费者就不会在消费已经消费过的数据了一对多(发布/订阅模式):具有持久化,一个生产者可以对应多个消费者kafka 分布式消息系统kafka的基本架构broker相当于

2021-02-25 09:56:53 896

原创 Zookeeper的ACL与Watcher

ACL简介ACL访问控制列表,zk利用ACL控制znode的访问权限,如节点数据读写,节点创建,节点删除,读取节点权限等授权策略IP:利用IP进行权限认证digest:利用用户名密码进行权限认证world:不用任何权限认证super:超级管理员可以对任意节点进行任意操作Zode的权限描述c (create) 创建,r(read) 读取,w(write) 写,d(delete)删,a(acl)Watcher机制zk通过Watcher机制实现了发布/订阅模式watcher工作原理.

2021-02-25 09:51:22 68

原创 Zookeeper客户端操作

进入zookeeper客户端(集群版)./zkCli.sh -server zkIp:2181客户端命令create /demo 999 : /demo为节点名,999为内容create -s /demo/A1 888: 创建永久顺序节点 (节点会带编号)set /demo 888:修改节点内容delete /demo: 删除节点(前提是当前节点下不存在子节点)getAcl /demo: 获取节点权限信息addauth digest hzg:123: 增加用户,账户:hz

2021-02-25 09:50:29 70

原创 CAP定理与BASE定理

CAP定理一致性:consistency 多个主机数据保持一致可用性:availability 系统提供的服务一直处于可用状态分区容错性:partition tolerance 分布式系统遇到任何网络故障时,仍能够对外提供一致性和可用性的服务因此在分布式应用中,网络是不可控的,出现网络分区是不可避免的,因此分区容错性是必须具备的,CAP原理最多只能满足2项,AP或CP (ZK -CP euraka-AP)例:同步数据是个耗时过程,如果要保证强一致性,则需要牺牲可用性,另其他服务不在工作,反之

2021-02-25 09:49:39 83

原创 Zookeeper简介

介绍分布式应用程序协调器,为分布式系统提供一致性服务,一致性由Paxos算法的ZAB协议完成的主要功能:配置维护,域名服务,分布式同步,集群管理等Zk如何保证一致性zk有以下特点:顺序一致性:从同一个客户端发出的多个事务请求,会按发出的顺序依次记录到zk原子性:所有事务请求结果在集群中所有server的应用情况一致,要么都成功,要么都失败单一视图:无论集群连接哪一台server,读取的数据模型中的数据都是一致的可靠性:一旦事务被zk记录,则会被永久记录最终一致性:Paxos算法 (基于消

2021-02-25 09:49:05 83

原创 多线程

线程细分有6种状态 通过Thread.state查看目的:提高程序效率实现方式:(实现接口会比继承好)1、继承Thread类,重写run方法((通过start()启动线程)2、实现runnablej接口,实现run方法 (通过new Threan(接口实现类).start()启动线程)3、使用匿名内部创建线程其中通过start方法启动线程并不是马上启动,而是由CPU进行资源分配后才会启动多线程是异步执行的,并行操作。多线程书写模板:线程 操作 资源如下所示://资源Ticke

2021-02-25 09:46:26 108

原创 Springboot注解

Spring boot的4个核心自动装置: 自动提供配置起步依赖: 告诉它需要什么功能,就能引入需要的库命令行界面: 可选性,无需传统项目的构建Actuator 深入运行的应用程序,一探究竟注解@RestController Controller与ResponseBody的结合@Configuration 声明一个类为配置类@Bean 声明在方法上,将方法的返回值加入Bean容器,代替<bean>标签@value 属性注入@PropertySource 指

2021-02-25 09:45:29 65

原创 架构篇

架构的演变集中式架构优势在于减少节点部署和成本存在的问题:代码耦合,开发维护困难无法针对不同模块进行针对性优化无法水平扩展单点容错率低,并发能力差垂直拆分优点:系统拆分实现了流量分担,解决了并发问题可以针对不同模块进行优化方便水平扩展,负载均衡,容错率提高缺点:系统间相互独立,会有很多重复开发工作,影响开发效率分布式架构:当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于

2021-02-23 09:57:10 98 1

原创 Git

本地提交:第一步在项目下:git init生成第二步配置签名git config user.name “zhangsan”git config user.email “[email protected]”在git目录下config生成上面两字段配置全局的签名git config --global user.name “zhangsan”git config --global user.email “[email protected]”第三步先查看代码提交情况,报红色代表未提交的代码gi

2021-02-23 09:54:40 52

原创 设计模式

设计模式常用的设计模式为:单例工厂代理(调用接口,打印日志)观察(安卓开发常用)策略(高级)模板方法。等等设计模式主要分为三类:创建型:单例,工厂方法,抽象工厂,建造者。。结构性:适配器,装饰器,代理,桥接。。。行为:策略,模板方法,观察。。。原型模式:将一个对象复制给另一个对象浅拷贝:只复制非引用类型的属性,而引用类型的对象还是指向同一个地址深拷贝:原型对象和复制出来的对象,他们的引用类型属性的地址不同单例模式:懒汉式:当你需要的时候,才会被初始化,只有一个使用,但是线程

2021-02-23 09:50:02 42 2

原创 JVM优化

1:jvm的参数三种参数类型:标准参数: 固定参数-help-version-X参数:非标准参数-Xint 会强制JVM执行所有字节码,会降低运行速度,解释模式-Xcomp JVM在第一次使用会把所有的字节码编译为本地代码,从而带来最大程度的优化,(编译模式)-Xmixed:上面两者的结合,也是JVM默认的模型-XX参数(使用最高)格式:-XX:[±] +代表禁用,如:-XX:+DisableExplicitGC 表示禁用GC-XX:newSize (年轻代)-XX:+UserS

2021-02-23 09:46:41 78 1

原创 SQL篇-Mysql分库分表

数据切分方案:垂直切分:多个表拆分到不同的机器上,表里的字段过多,拆分成多张表水平拆分:通过分区拆分,好处是数据迁移方便,坏处是:热点数据分布不均匀水平切分的规则:根据ID取模,余数决定数据切分到哪个表或哪个库按日期:按日期切分按照范围:不同范围到不同的库分库分表的实现技术sharding-jdbc,Mycat,TDDL,Cobar分表的原则单行数据大于100字节,则1000W一张表,否则5000W一张表Sharing-JDBC...

2021-02-23 09:39:32 373

原创 SQL篇-常用SQL语句

SQL语句使用看日志开启情况:show varilables like ‘log_%’;数据文件目录: show variables like ‘%datadir%’;查看当前的字符集:show variables like ‘character_set_server’查看数据字段优化策略:SELECT * FROM tableName PROCEDURE ANALYSE()查看buffer使用情况:show global status like ‘innodb_buffer_pool_pages

2021-02-23 09:38:34 79

原创 SQL篇-SQL原理

MySql的知识图谱SQL的执行计划Mysql存储引擎,以及优缺点Mysql的物理结构:通过文件系统对数据和索引进行存储结构上分为日志文件和数据索引文件数据存储在/var/lib/mysql下,配置文件存在/etc/my.cnf日志文件采用顺序IO存储,数据文件采用随机IO存储Mysql通过预写机制保证了数据的可靠性(Write ahead Log)行级介绍:按锁定范围分为以下3种:记录锁: 锁定索引中的一条记录。 例:where id = 3间隙锁:锁定j记录,记录中

2021-02-23 09:35:53 603

原创 SQL篇-Mysql操作

mysql重启出现的问题问题描述:重启mysql,发现启动不了通过cmd,调用mysqld --console去找到问题出在哪了jdbc操作mysql:1.获取连接public static Connection getConnection() throws ClassNotFoundException, SQLException {Class.forName(“com.mysql.jdbc.Driver”);String useName = “root”;String passwor

2021-02-23 09:31:12 69

原创 SQL篇-Mysql的SQL性能调优

服务器优化:扩大buffer pool 默认为128M 理论上为内存的3/4或者4/5innodb_buffer_pool_size = 750MSQL设计层面的优化1 分页查询的调优(当limit的偏移量越大时,性能越差)优化前:select 字段 from table limit 3000,10优化后:(利用右表查询出来的主键关联上左边,得到其他的字段信息)select 字段 from table as t1 righit join (select 主键 from table ) a

2021-02-23 09:29:51 168

原创 SQL篇-Mysql索引篇

索引的优势:提高查询效率,降低数据库IO,通过对索引列进行排序,可以降低CPU的消耗索引的劣势:增加磁盘存储(mysql要存索引文件),降低更新 表的效率MyISAM和Innodb存储引擎只支持BTREE索引类型索引分类单列索引组合索引全文索引空间索引Innodb下数据和索引是在同一个索引树上的,叶子节点存放的是数据,而MyISAM的B树叶子节点存放的是数据的地址如果使用的是辅助索引,则查询索引树的次数为2,先从辅助索引树查出主键,再从主键索引树查出数据,如果将辅助索引与主键结合形成组合索

2021-02-23 09:28:45 46

原创 SQL篇-Mysql配置文件设置

慢查询日志:slow_query_log=ON慢查询的间隔 (当大于3秒时,这条慢查询语句就会被记录)long_query_time=3日志记录的文件名,如果不设置,默认为主机名-slow.log,否则为file_name-slow.logslow_query_log_file = file_name默认字符集character-set-server=utf8大小写不敏感(1忽略大小写,0严格区分大小写)lower_case_table_names=1二进制日志bin-log=mysq

2021-02-22 10:28:37 71

原创 SQL篇-Mysql数据类型讲解

1.浮点数(Float)与定点数(decimal)浮点数容易造成精度缺少,为了避免误差,尽量不使用浮点数做比较,对精度敏感的场景尽量使用定点数类型2.text与blob类型:进行大量的删除或者更新,会使得数据表中留下很大空洞,也就是索引文件和数据文件大小不会因数据的删除而减少,为了提高性能,建议定期使用optimize table 功能对这类表进行碎片清理...

2021-02-22 10:27:50 43

原创 SQL篇-常用sql

group by下面这条数据专门用来去除重复数据select * from user where id in(select min(id) from user where name = ‘aaa’ and pv = 20 and time = ‘7-15’ group by name,pv,time;)主要:select后面的字段只能跟group by 后面的字段,或者是聚合函数。case when then相当于if-else语句case when sex = ‘1’ THEN '男‘ el

2021-02-22 10:26:56 55

原创 ES篇包含安装,简介,基本命令

Index  类似于mysql数据库中的databaseType  类似于mysql数据库中的table表,es中可以在Index中建立type(table),通过mapping进行映射。Document  由于es存储的数据是文档型的,一条数据对应一篇文档即相当于mysql数据库中的一行数据row,一个文档中可以有多个字段也就是mysql数据库一行可以有多列。Field  es中一个文档中对应的多个列与mysql数据库中每一列对应安装1、下载es压缩包2、解压到/opt下3、修改组权

2021-02-22 10:21:20 126

原创 JVM-运行时数据区

JDK1.7是通过永久代实现的方法区JDK1.8是通过元空间实现的方法区永久代占据的内存空间属性JVM进程空间,大小比较小元空间占据的内存空间不属于JVM进程空间,大小由物理内存控制存储的内容也不相同常量池class常量池 : 存储在class文件中运行时常量池:存储在内存中,一个类一个池字符串常量池:存储在内存中,全局唯一JAVA堆被所有线程共享,在java虚拟机启动时创建,是虚拟机管理的最大一块内存java堆是垃圾回收的主要区域,主要采用分代回收算法存储方式:堆内存空间在物理上.

2021-02-22 10:16:53 40 1

原创 JVM篇-JVM基础知识

程序运行的方式:主要有三种:静态编译执行,动态编译执行,动态解释执行(都是编译成机器码)JVM架构图JVM执行流程:JIT即时编译器的优化:1、公共表达式的消除 (多次表达式计算的结果直接复用)2、方法内联:(多个方法间的相互调用,最终替换成更少的方法,减少栈的开销)3、对象栈上的内存分配4、标量替换5、同步锁消除...

2021-02-22 10:14:57 66

空空如也

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

TA关注的人

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