自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不清不慎的博客

java大数据开发工程师、数据挖掘、人工智能、区块链兴趣爱好者。 Github地址:https://github.com/ljcan

  • 博客(19)
  • 资源 (15)
  • 问答 (2)
  • 收藏
  • 关注

原创 分布式一致性协议:Raft算法详解

在分布式系统中,有很多复杂的理论,从CAP理论到BASE理论,我们不断的在可用性以及一致性之间做出抉择,每一部分都相当复杂,就分布式一致性而言,又有许多协议,从2PC到3PC再到paxos算法,到ZAB协议,再到Raft算法。本篇文章主要介绍Raft算法的实现过程,最近有空看了下国外的论文,这里做个简单的总结,本人水平有限,如有问题,欢迎批评指正。在介绍Raft算法之前,你肯定听说过Paxo...

2019-05-24 21:37:40 13950 2

原创 如何设计一个多级缓存系统?

在一个高并发的分布式系统中,缓存系统是必不可少的一部分,大多数情况下,我们需要设计一个多级缓存系统到生产中使用,那么如何设计呢?这也是笔者在前一段时间的面试中,被问到的一个问题,虽然当时这道题过了,但是面试结束之后对自己的回答不是很满意,所以,再反复思考之后决定分享下自己的设计思路。欢迎留言批评指正。首先我们需要明白,什么是一个多级缓存系统,它有什么用。所谓多级缓存系统,就是指在一个系统 的...

2019-05-24 00:29:49 3209

原创 Hive调优总结

熟悉Hive的开发者都知道,Hive会将操作语句转换为MapReduce作业,对于开发者是透明的,我们并不需要理解其原理就可以专注手头的工作,但是在实际开发当中数据量巨大,我们需要采取一些优化措施来提高MR作业的效率。1.执行计划与关系型数据库一样,我们可以使用EXPLAIN命令来分析HQL语句的执行流程,这也是分析一条SQL语句的瓶颈与性能不可缺少的一个步骤。对于Hive的有些HQL语...

2019-05-05 18:40:59 15213 2

原创 Flink State状态以及Checkpoint机制(二)

在上篇文章中介绍了如何Flink的State状态,本篇文章接着上篇文章继续介绍Flink的Checkpoint机制。启动checkpoint机制它可以为每一个job备份了一份快照,当job遇到故障重启或者失败的时候,我们就不必从每个job的源头去重新计算,而是从最近的一个完整的checkpoint开始恢复,避免了重复计算,节省了资源,并且保证了Exactly Once 语义。具体的使用方法以及实现...

2019-05-30 16:15:17 2032 3

原创 Flink State状态以及Checkpoint机制(一)

一、State状态在Flink中,它使用了State状态机制以及Checkpoint策略提供了强大的容错机制,不过我们需要注意区分它们,State状态是指一个Flink Job中的task中的每一个operator的状态,而Checkpoint是指在某个特定的时刻下,对整个job一个全局的快照,当我们遇到故障或者重启的时候可以从备份中进行恢复。在Flink中,State中主要分为Operato...

2019-05-29 11:04:56 11306 1

原创 Flink Window介绍

一、Window的分类什么是window?Flink是一个流处理计算框架,它底层基于流处理引擎,实现了批处理与流处理,在流处理中,为了处理无限的数据集,使用window将无限的数据流切分多个有限的数据块进行计算。我们按照具体的业务需求将window划分为KeyedWindow以及Non-KeyedWindow,如果是KeyedWindow那么它会有多个并行度来计算窗口中的数据,对于Keyed...

2019-05-27 11:10:46 1922 2

原创 Flink Runtime详解

Flink运行时架构Flink集群的架构,也是典型的主从架构模型,启动Flink,它会启动JobManager以及TaskManager进程,这里以standalone模式来讲解其运行时的架构以及一些细节,集群模式后面的文章汇介绍到。JobManager是master主节点,它主要负责资源的分配、任务的调度以及集群的管理。TaskManager是从节点,如果单独运行在一台机器上则可以称作一个s...

2019-05-26 18:53:34 1991

原创 【JVM实战】类的加载机制

所谓虚拟机类的加载机制,就是把一个描述类的class文件加载到内存当中,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。一个类从被加载到虚拟机内存开始,到卸载出内存为止,它的主要生命周期有:加载、连接、初始化。而连接过程又被分为验证、准备、解析这几个过程。所以整个生命周期过程如下:加载、验证。准备、解析、初始化、使用和卸载这7个 过程。下面我们讨论它的主要过...

2019-05-23 16:09:41 349

原创 Flink数据类型、序列化与累加器Accumulator

本篇文章简单介绍一下Flink中的数据类型与累加器以及计数器的使用。一、数据类型在Flink的DataSet以及DataStream中对可使用的元素添加了一些约束条件,目的是为了能够有效的分析这些类型的执行策略以及选择不同的序列化方式。以下列举7种Flink种常用的数据类型:Java/Scala TupleJava POJO和Scala case class基本类型(Intege...

2019-05-21 23:35:07 1374

原创 Flink DataSet迭代运算

对于迭代运算,通常应用于一些数学计算,机器学习算法以及图计算等领域,在Flink中,对于批处理作业,也提供了相应的迭代运算,主要分为下面两大类:Bulk IterateDelta Iterate什么是迭代运算?所谓迭代运算,就是给定一个初值,用所给的算法公式计算初值得到一个中间结果,然后将中间结果作为输入参数进行反复计算,在满足一定条件的时候得到计算结果。Bulk Iterate这...

2019-05-18 14:43:53 2806 2

原创 Flink DataSet Transformations【翻译】

在前面的文章中介绍了一下DataStream的一些Operator的操作,这篇文章主要讲述DataSet的一些Transformations操作。它主要有以下操作:下面会逐一进行讲解MapMap操作为DataSet提供了一个用户自定义的map函数,它实现了一对一的映射,并且该函数只能返回一个元素(这里可以实现MapFunction接口或者RichMapFunction来定义用户自己的逻辑)...

2019-05-17 23:29:15 625

原创 【JVM实战】再谈GC算法

JVM GC算法,对于了解JVM的程序员,应该都不会陌生,在这篇文章中,整理一下常见的GC算法分享给大家。GC算法复制算法标记清除算法(Mark-Sweep)标记压缩算法(Mark-Compact)分代算法(Genarational Collection)分区算法(Region 主要在G1垃圾收集器中使用)复制算法其核心思想是:将内存划分为两块,每次只使用其中的一块,在垃圾回收...

2019-05-17 16:15:33 270

原创 【JVM实战】JVM常用参数

在虚拟机运行过程中,如果可以跟踪系统的运行状态,那么对于问题的故障排查会有一定帮助,本篇文章主要总结一些常用的参数,这样就可以在系统能够运行时监控垃圾回收,便于分析。主要参数如下:-XX:+PrintGC 打印GC日志-XX:+PrintGCDetails 打印详细的GC日志-XX:+PrintHeapAtGC 打印堆内存GC前后的信息-XX:+PrintGC...

2019-05-14 16:46:57 314

原创 Flink Operator之CoGroup、Join以及Connect

在Flink中由很多Operator,大致分为两类,DataStream和DataSet,即流处理数据和批处理数据,这an文章主要讲解CoGroup、Join和Connect的使用,之所以将它们放在一起是因为它们比较相似,但也有所不同,在DataStream和DataSet中都存在这三个Operator,下面我们将分别讲述。一、CoGroup该操作是将两个数据流/集合按照key进行group,...

2019-05-13 16:55:39 13160

原创 【基础巩固篇】Java中String揭秘

String对象是我们日常使用的对象类型,字符串对象或者其等价对象(如char数组),在内存中总是占据了最大的空间块,因此如何高效地处理字符串,是提高系统整体性能的关键。在此之前,String作为一个对象类型,我们必须清楚Java对象的创建以为对象的内存结构。1.对象的创建以及内存结构创建一个对象通常需要使用new关键字,当虚拟机遇到一条new指令的时候,首先会检查这个指令的参数是在常量池中...

2019-05-12 17:11:20 439

原创 【基础巩固篇】Java 8中对CAS的优化

Java的并发包下存在着许多并发工具,CAS也是其中的一员,对于CAS(CompareAndSet)我们并不陌生,它基于乐观锁的机制,当前值等于期望值时设置成功,但是它也会导致一系列问题,当大量线程同时去访问时,就会导致空旋转,CPU资源消耗过多,而且执行效率也不高。同时它也会产生ABA问题,不过在java中可以使用基于时间版本号的AtomicStampedReference来解决。(本文默认读...

2019-05-10 23:23:32 1130

原创 【基础巩固篇】Java中的Buffer缓冲区探究

一、什么是缓冲区,与缓存的区别?首先简单的说下什么是缓存,缓冲的目的的是用来缓解应用程序上下层之间的性能差异,从而提高系统的性能。缓存是为了提高数据的访问性能,存放经常访问的数据以便于提高系统的性能。简单来说,而这都是为了提高系统的性能。但是它们之间存在着本质的差别:对于缓存它也可以消除上下层之间的速度不匹配的情况,最常见的在我们的计算机中,最早的计算机CPU直接和磁盘进行交互,但是磁盘...

2019-05-10 17:13:05 920

原创 Flink DataStream之Asynchronous I/O原理解析

文章大纲:Async IO的概述以及使用Async IO的原理一、Async IO概述1.什么是Async IO对于IO,我们都清楚有同步IO和异步IO,那么在Flink中,什么是Async IO,它是怎么样应用的呢?在有些流式应用的场合中,我们都会去与外部系统进行交互,比如连接数据库等。当我们需要向外部系统发送一个请求a的时候,我们需要等待它返回结果,这是同步的模式。考虑到吞吐...

2019-05-04 14:50:48 3066 3

原创 Flink DataStream之Time介绍

文章目录:Time的三种类型Event Time的timestamp和watermark预定义Timestamp Extractors / Watermark Emitters一、Time的三种类型Fink提供了三种Time的类型:Event TimeIngest TimeProcess Time1.Event TimeEvent Time是事件生成的时间,在进入...

2019-05-03 18:44:17 770

linux telnet完整rpm安装包

telnet安装包的全部组件: telnet-0.17-47.el6.x86_64 telnet-server-0.17-47.el6.x86_64 xinetd-2.3.14-39.el6_4.x86_64

2018-04-15

phpStudy开发工具

phpstudy是一款方便简洁的支持集成了PHP开发环境以及mysql等开发环境的工具。

2017-11-04

hibernate4框架学习笔记

学习hibernate框架所做的学习笔记,hibernate框架一款重量型的ORM型框架,十分的强大。

2017-11-04

Struts2学习笔记

学习struts2框架整理的学习笔记,虽然struts2框架已经日落西山,被spring框架盖住了风头,不可否认,当初它也是一个很厉害的框架,非常流行,是一个高级java程序员所必须掌握的框架技术。

2017-11-04

javaweb笔记整理

学习javaweb整理的笔记,里面包括jsp,xml,servlet,jdbc,mysql等知识点,总结全面。

2017-11-04

spring框架学习笔记

这是学习spring时整理的学习笔记,里面都是spring框架的一些基础知识和核心技术。

2017-11-04

DOS命令全集

整理的DOS命令全集,学习dos命令可以轻松操作Windows操作系统。

2017-11-04

springmvc_spring_mybatis框架整合文档

整合springmvc_spring_mybatis框架后整理的学习笔记以及整合方法。

2017-11-04

spring4_struts2_mybatis3.4框架整合文档

这是在整合spring4,struts2,mybatis3.4框架之后所做的整理文档。

2017-11-04

spring4_struts2_hibernate4整合的整理文件

本文档是在整合struts2,spring4,hiernate4后所做的笔记以及怎么整合技巧

2017-11-04

qrcode核心jar包

java利用第三方qrcode jar包来生成二维码和解析二维码。

2017-11-04

javamail1_4_7

利用javamail实现简单邮件的发送接收所需要借助的jar包。

2017-11-04

mybatis-spring-1.3.1

mybatis3.4整合spring4所必须的jar包,解压放入web-inf/lib目录下即可

2017-11-04

struts2-spring-plugin-2.3.4.jar

spring4整合struts2所需要的jar包,缺少这个jar包则会报错

2017-11-04

java二生成维码-zxing完整jar包

java借助第三方jar包zxing.jar生成二维码和解析二维码。

2017-11-04

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

TA关注的人

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