自定义博客皮肤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

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

原创 Docker Dockerfile详解

在前面的一篇文章中,我们介绍了如何构建镜像,其中使用Dockerfile文件是最为常用的一种方式,在本篇文章中我们将详细介绍Dockerfile构建镜像的过程以及其命令参数等等。首先我们来看看Dockerfile构建镜像的过程:从基础镜像运行一个容器执行一条指令对容器做出修改执行类似docker commit的操作,提交一个新的镜像层再基于刚提交的镜像运行一个容器执行Dockerfi...

2019-07-07 22:46:10 1949 2

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

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

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

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

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

2019-05-24 00:29:49 3159

原创 Hive调优总结

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

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

原创 浅谈分布式事务的解决方案

一、分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。画外音:提起分布式系统,我们不得不想...

2019-04-21 00:21:52 526

原创 深入理解Kafka数据高并发写入、可靠性以及EOS语义

Kafka作为一个优秀的高性能消息队列,广泛用于各种大数据高并发场景下,常常听一些技术大牛讲起kafka滔滔不绝,赞不绝口,但是它是如何保证数据的高并发写入,可靠性以及流数据处理中常见的EOS语义的呢?本篇文章让我们来一起深入探究其内部原理。一、 高并发写入作为一个消息队列,我们首先需要考虑消息如何传递,如何存储。在高并发场景下,我们常常会想到如何提高系统的吞吐量,Kafka在生产者写入消...

2019-03-17 00:59:16 1345

原创 ClickHouse创建mysql数据库引擎报错【Code: 501】

使用clickhouse的数据库引擎mysql创建一个库用来同步mysql中的数据,命令如下:CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306','click_test','root','123456');结果报如下错误:CREATE DATABASE mysql_dbENGINE = MySQL('localhost:3306', 'click_test', 'root', '123456')Received exception

2020-09-21 16:09:24 2721

原创 ElasticSearch使用Java API进行索引文档的操作

ElasticSearch版本:7.6.2首先构建maven项目,导入依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

2020-07-03 00:03:09 681

原创 美团,滴滴,蘑菇街Java大数据面经分享

大概在三月份开始面了几家互联网公司,主要方向是java后端和大数据开发,最近整理学习资料,所以分享一下美团,滴滴,蘑菇街等公司的面经。美团一面聊你最熟悉的项目和技术。项目中为什么要使用spark。spark怎么划分stage,宽窄依赖,聊源码spark提交一个作业的执行流程(单机模式)spark driver节点,worker以及master节点遇到故障如何解决。spark ...

2020-07-02 23:52:44 832 4

原创 以太坊智能合约编译,部署以及打包调用【Mac系统】

本文主要讲解如何进行智能合约的编译,部署以及打包,首先,读者需要会编写智能合约,了解solidity语言以及以太币。我这里环境是Mac系统,linux系统命令也是类似。1.安装geth客户端以及操作brew tap ethereum/ethereumbrew install ethereum默认安装目录:/usr/local/Cellar/ethereum/版本在安装成功之后进入...

2020-05-07 22:26:31 1666

原创 truffle init问题解决

首先Truffle是针对基于以太坊的Solidity语言的一套开发框架。在Mac OS执行truffle init报错:Starting unbox...=================✔ Preparing to download box✖ DownloadingUnbox failed!✖ DownloadingUnbox failed!RequestError: Err...

2020-04-30 20:09:39 3479 10

原创 SpringCloud Hystrix断路器实战

SpringCloud Hystrix实现断路器,线程隔离等一系列服务保护功能,它是基于Netflix开源框架Hystrix实现的,该框架的目标是用于通过控制远程系统,服务和第三方节点,从而对延迟和故障提供更强大的容错能力。它具备服务降低,熔断,线程和信号隔离,请求缓存,请求合并以及服务监控等强大功能。该篇文章主要介绍主要快速使用Hystrix断路器。首先我们来看一下系统架构:其中:H...

2020-03-29 16:27:55 258 1

原创 Luasql mysql安装错误解决

首先需要安装LuaRocks:wget http://luarocks.org/releases/luarocks-2.2.1.tar.gztar zxpf luarocks-2.2.1.tar.gzcd luarocks-2.2.1./configure; sudo make bootstrapsudo luarocks install luasocket接着安装luasql-my...

2020-03-07 21:03:56 2631

原创 【JVM实战】GC回收器详解

在Java虚拟机中,GC回收器不仅仅只有一种,在哪一块内存区域以及场景使用什么垃圾回收器,对于我们编写的程序的性能都有着至关重要的影响,因为,如果我们熟悉每一个GC回收器的运行机制就可以给我们的程序的性能带来很大的提升,本篇文章中,我们来探究一下每一种GC回收器的结构原理。首先,在JVM中,总共有以下几种GC回收器:新生代串行回收器老年代串行回收器新生代ParNew回收器新生代Para...

2019-08-11 12:58:02 1100 1

原创 Flink启动报错could not be determined automatically

今天发布Flink应用,报如下错误:The return type of function 'main(RyeCollectorLauncher.java:77)' could not be determined automatically, due to type erasure. You can give type information hints by using the returns...

2019-07-29 20:02:02 10919 2

原创 【JVM实战】如何防止OOM内存溢出?

Java开发者们最为头疼的问题就是线上常常会抛出OOM异常,有人说,这肯定是内存不够用了啊,扩大内存容量不就可以了嘛,但是内存是需要代价的,不能无限的扩展,虽然JVM为我们管理内存,保证了内存的合理回收,但是如果我们对它的底层了解的够透彻,编写出更加健壮的程序,就可以降低成本,充分利用资源,减少线上故障带来的损失。在学习如何防止OOM之前,我们首先要知道什么情况下会发生OOM?1.堆溢出堆是...

2019-07-27 19:06:13 1585

原创 Flink Kafka connector详解

在Flink中提供了特殊的Connectors从kafka中读写数据,它基于Kafka Consumer API以及Producer API封装了自己的一套API来连接kafka,即可读取kafka中的数据流,也可以对接数据流到kafka中,基于kafka的partition机制,实现了并行化数据切片。下面让我们来看看它的主要API以及使用。Flink kafka consumer使用kafk...

2019-07-20 22:29:17 4554

原创 Hive权威指南学习笔记

原文链接:Hive权威指南学习笔记

2019-07-20 14:33:20 299

原创 Docker镜像创建,拉取以及推送

本篇文章主要讲述如何创建镜像,拉取镜像以及推送镜像到自己的仓库中。创建镜像创建镜像有两种方式:docker commit 构建容器docker build 使用Dockerfile文件来构建docker commit方式来构建容器命令格式如下:例如使用下面命令就可以构建一个镜像:#构建一个镜像docker commit -a 'ljcan' -m 'nginx' commi...

2019-07-07 13:00:34 878

原创 实现LRU Cache(java版)

LRU算法,也叫最近最少使用算法,我们可以使用该算法来实现cache机制,简单地说就是缓存一定量的数据,当超过设定阀值的时候就把一些过期的数据删除掉,本篇文章我们来看看如何实现LRU Cache,下面我们使用两种方式来实现。基于LinkedHashMap在java的集合类中有LinkedHashMap类,当参数accessOrder为true的时候,就会按照访问顺序排序,最后访问的放在最前面,...

2019-07-07 09:57:36 2719

原创 Linux系统常用压测工具和性能分析工具

本篇文章介绍几款linux系统性能压测以及分析工具,在实际开发环境中,我们会经常使用到它们对我们的系统进行性能分析。当我们需要判断linux系统的性能时,常常会观察几个常用的指标:平均负载、CPU使用率,IO负载等等。那么当我们需要查看系统平均负载的时候可以使用uptime命令来查看,它代表系统1分钟内、5分钟内、15分钟内的平均负载:[root@izuf64g0bbe3dug64wpdck...

2019-06-29 14:53:03 4764

原创 Spark源码剖析之数据通信模块解析

Spark是一个分布式计算框架,当 我们提交一个任务,会划分为多个子任务分发到集群的各个节点进行计算,这里思考一个问题,Spark是如何进行消息的传递,如何将任务分发到各个节点,并且如何将计算结果汇总起来的呢?实际上,Spark内部使用Akka进行消息的传递,心跳报告等,使用Netty提供RPC服务进行数据的上传与下载功能。这点与Flink类似。块管理器BlockManager是Spark存储...

2019-06-17 10:24:43 367 1

原创 Spark源码解读之Shuffle计算引擎剖析

Shuffle是Spark计算引擎的关键所在,是必须经历的一个阶段,在前面的文章中,我们剖析了Shuffle的原理以及Map阶段结果的输出与Reduce阶段结果如何读取。该篇文章是对前面两篇文章【Spark源码解读之Shuffle原理剖析与源码分析】【Spark存储机制源码剖析】细节的深入探究。了解Shuffle原理的读者都知道,整个Shuffle过程被划分为map和reduce阶段,在S...

2019-06-16 20:08:21 465

原创 Flink Savepoint简单介绍

一、什么是savepoint?savepoint是通过checkpoint机制为streaming job创建的一致性快照,比如数据源offset,状态等。需要我们手动去触发,因此,需要和checkpoint进行区分。checkpoint主要用于自动故障恢复,由Flink自动创建、拥有和发布,不需要用户去交互,当作业呗cancel的时候,checkpoint会被删除,除非设置了External...

2019-06-10 17:00:02 3046

原创 浅谈Kafka选举机制

Kafka是一个高性能,高容错,多副本,可复制的分布式消息系统。在整个系统中,涉及到多处选举机制,被不少人搞混,这里总结一下,本篇文章大概会从三个方面来讲解。控制器(Broker)选主分区多副本选主消费者选主控制器(Broker)选举所谓控制器就是一个Borker,在一个kafka集群中,有多个broker节点,但是它们之间需要选举出一个leader,其他的broker充当follo...

2019-06-09 00:10:46 20919 4

原创 Spark容错机制剖析

在一个分布式系统中,非常重要的一点就是容错性,Spark也不例外,当它机器发生故障的时候,可以很轻松的应对。本篇容错机制的剖析主要针对Standalone模式进行分析。阅读本篇文章之前,你可以查看之前的【Spark源码解读之Master剖析】以及【Spark源码解读之Worker剖析】的文章,该篇是基于之前文章的补充。在一个Spark集群中,有各种角色,Executor、Worker、Mast...

2019-06-06 09:43:34 793

原创 Spark Streaming Window核心源码剖析

在Spark Streaming中,提供了窗口计算,可以转换滑动窗口内的数据。每次窗口都在DStream中滑动,窗口内的RDD将被合并生成窗口内的DStream的RDD。如下图所示为滑动窗口的操作:从上图可以看见,window操作需要指定两个参数:窗口长度(window length):窗口的周期长度。滑动间隔(sliding interval):窗口转换的间隔。在Spark Str...

2019-06-05 12:40:15 473

原创 Spark SQL源码剖析之SqlParser解析

在使用Spark的过程中,由于Scala语法复杂,而且更多的人越来越倾向使用SQL,将复杂的问题简单化处理,避免编写大量复杂的逻辑代码,所以我们想是不是可以开发一款类似Hive的工具,将其思想也应用在Spark之上,建立SQL来处理一些离线计算场景,由于Spark SQL应用而生。在本篇文章中,我们准备深入源码了解Spark SQL的内核组件以及其工作原理。熟悉Spark的读者都知道,当我们调用...

2019-06-04 00:18:01 3031

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

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

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

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

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

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

原创 Flink Window介绍

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

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

原创 Flink Runtime详解

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

2019-05-26 18:53:34 1921

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

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

2019-05-23 16:09:41 334

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

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

2019-05-21 23:35:07 1316

原创 Flink DataSet迭代运算

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

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

原创 Flink DataSet Transformations【翻译】

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

2019-05-17 23:29:15 608

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

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

2019-05-17 16:15:33 251

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

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

2019-05-14 16:46:57 281

原创 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 12877

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

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

2019-05-12 17:11:20 428

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关注的人

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