自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(170)
  • 资源 (1)
  • 收藏
  • 关注

转载 Hadoop/Yarn的日志清理

Hadoop/Yarn的日志清理可以分为两个子话题讨论:Hadoop/Yarn的本地日志(非Yarn Container生成的日志)Yarn的Container生成的日志我们这里讨论的日志清理并不是通过定时的日志删除命令去实现,这一做法显然优雅, 具体的做法下面会分别进行讨论。1. Hadoop/Yarn本地日志的清理Hadoop/Yarn使用log4j进行日志输出,所以对于它们本地日志的清理,最好的方式是通过修改log4j的配置配置文件,以rolling的方式写入日志。Hadoop/Yarn

2021-03-15 10:40:57 2759

转载 [高级]关于分布式事务、两阶段提交协议、三阶提交协议

随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。在分布式一致性一文中主要介绍了分布式系统中存在的一致性问题。本文将简单介绍如何有效的解决分布式的一致性问题,其中包括什么是分布式事务,二阶段提交和三阶段提交。分布式一致性回顾在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置.

2020-09-25 16:08:18 294

转载 SocketChannel---各种注意点

SocketChannel---各种注意点

2020-09-20 20:47:30 398

转载 Java NIO之Selector(选择器)

一 Selector(选择器)介绍Selector一般称 为选择器,当然你也可以翻译为多路复用器。它是Java NIO核心组件中的一个,用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。使用Selector的好处在于:使用更少的线程来就可以来处理通道了, 相比使用多个线程,避免了线程上下文切换带来的开销。二 Selector(选择器)的使用方法介绍1. Selector的创建通过...

2020-09-20 17:18:37 462

转载 Java NIO 之 Channel(通道)

一 Channel(通道)介绍通常来说NIO中的所有IO都是从 Channel(通道) 开始的。 从通道进行数据读取:创建一个缓冲区,然后请求通道读取数据。 从通道进行数据写入:创建一个缓冲区,填充数据,并要求通道写入数据。 数据读取和写入操作图示:Java NIO Channel通道和流非常相似,主要有以下几点区别: 通道可以读也可以写,流一般来说是单向的(只能读或者写,所以之前我们用流进行IO操作的时候需要分别创建一个输入流和一个输出流)。 通道可以异..

2020-09-20 17:12:56 485

转载 Java NIO 之 Buffer(缓冲区)

一 Buffer(缓冲区)介绍Java NIO Buffers用于和NIO Channel交互。 我们从Channel中读取数据到buffers里,从Buffer把数据写入到Channels.Buffer本质上就是一块内存区,可以用来写入数据,并在稍后读取出来。这块内存被NIO Buffer包裹起来,对外提供一系列的读写方便开发的接口。在Java NIO中使用的核心缓冲区如下(覆盖了通过I/O发送的基本数据类型:byte, char、short, int, long, float, double

2020-09-20 16:58:04 266

转载 Java NIO 概览

一 NIO简介Java NIO 是 java 1.4 之后新出的一套IO接口,这里的的新是相对于原有标准的Java IO和Java Networking接口。NIO提供了一种完全不同的操作方式。NIO中的N可以理解为Non-blocking,不单纯是New。它支持面向缓冲的,基于通道的I/O操作方法。 随着JDK 7的推出,NIO系统得到了扩展,为文件系统功能和文件处理提供了增强的支持。 由于NIO文件类支持的这些新的功能,NIO被广泛应用于文件处理。二 NIO的特性/NIO与IO区别

2020-09-20 16:43:08 84

转载 NIO的写操作分析

很多人对NIO的写操作理解的不深,不知道为什么要注册写事件,何时注册写事件,为什么写完之后要取消注册写事件。Selector.isWriteable()方法监控的是内核的写缓冲器是否可写,所以除非内核的写缓冲区满了,否则一旦一个SocketChannel注册了写事件,每次selector都会选中这个SocketChannel,进入到isWriteable()分支中去。实际上服务器端写消息时完全可以不注册写事件,直接调用SocketChannel.write(ByteBuffer),也能把数据写.

2020-09-20 16:07:26 275

转载 零拷贝详解

什么是零拷贝维基上是这么描述零拷贝的:零拷贝描述的是CPU不执行拷贝数据从一个存储区域到另一个存储区域的任务,这通常用于通过网络传输一个文件时以减少CPU周期和内存带宽。零拷贝给我们带来的好处减少甚至完全避免不必要的CPU拷贝,从而让CPU解脱出来去执行其他的任务 减少内存带宽的占用 通常零拷贝技术还能够减少用户空间和操作系统内核空间之间的上下文切换零拷贝的实现零拷贝实际的实现并没有真正的标准,取决于操作系统如何实现这一点。零拷贝完全依赖于操作系统。操作系统支持,就有;不支持,就没有。

2020-09-10 14:34:39 1562

转载 一次因为kafka分区的leader不为优先副本导致的消费堆积问题的原因排查及问题解决方法

一次因为kafka分区的leader不为优先副本导致的消费堆积问题的原因排查及问题解决方法问题描述首先,收到了消息堆积的报警,查看监控发现延迟如下:接下来用kafka客户端脚本工具,查看具体延迟信息:发现延迟发生在2个partition(12,13)上,且消费者为同一台机器10.42.112.228问题排查过程消费端问题?因为延迟partition的消费者在同一台机器,所以开始怀疑是否消费端存在问题?因此,基本断定partition12、13所在的kafka服务端存在问.

2020-08-25 09:43:52 365

转载 kafka面试总结(二)

kafka 面试题1、如何获取 topic 主题的列表bin/kafka-topics.sh --list --zookeeper localhost:21812、生产者和消费者的命令行是什么?bin/kafka-console-producer.sh --broker-list 192.168.43.49:9092 --topic myTopicbin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic myT

2020-08-24 21:54:44 165

原创 Kafka源码环境搭建

1.安装和配置JDK确认JDK版本至少为1.7,最好是1.8及以上。使用java -version命令来查看当前JDK的版本,示例如下:C:\Users\hidden> java -versionjava version "1.8.0_112"Java(TM) SE Runtime Environment (build 1.8.0_112-b15)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)2.下

2020-08-12 16:48:14 504

转载 面试|图解 kafka 的副本复制

对于一个复杂的分布式系统,如果没有丰富的经验和牛逼的架构能力,很难把系统做得简单易维护,我们都知道,一个软件的生命周期中,后期维护占了70%,所以系统的可维护性是极其重要的, kafka 能成为大数据领域的事实标准,很大原因是因为运维起来很方便简单,今天我们来看下 kafka 是怎么来简化运维操作的。kafka 使用多副本来保证消息不丢失,多副本就涉及到kafka的复制机制,在一个超大规模的集群中,时不时地这个点磁盘坏了,那个点cpu负载高了,出现各种各样的问题,多个副本之间的复制,如果想完全自动化容错

2020-08-11 18:20:04 258

转载 Flink的checkpoint配置详解

实例:StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// start a checkpoint every 1000 msenv.enableCheckpointing(1000);// advanced options:// set mode to exactly-once (this is the default)env.getCheckpointConfig()

2020-07-31 16:46:05 6488 2

转载 Flink on YARN(下):常见问题与排查思路

Flink 支持 Standalone 独立部署和 YARN、Kubernetes、Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛。Flink 社区将推出 Flink on YARN 应用解读系列文章,分为上、下两篇。上篇分享了基于 FLIP-6 重构后的资源调度模型介绍Flink on YARN 应用启动全流程,本文将根据社区大群反馈,解答客户端和 Flink Cluster 的常见问题,分享相关问题的排查思路。客户端常见问题与排查思路▼ 应用提交控制...

2020-07-14 10:50:55 764

转载 Flink on YARN(上):一张图轻松掌握基础架构与启动流程

Flink 支持 Standalone 独立部署和 YARN、Kubernetes、Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛。Flink 社区将推出 Flink on YARN 应用解读系列文章,分为上、下两篇。本文基于 FLIP-6 重构后的资源调度模型将介绍 Flink on YARN 应用启动全流程,并进行详细步骤解析。Flink on YARN 应用启动流程图Flink on YARN 集群部署模式涉及 YARN 和 Flink 两大开源框架,应用启动流

2020-07-14 10:35:53 312

转载 万字超强图文讲解 AQS 以及 ReentrantLock 应用

Java SDK 为什么要设计 Lock曾几何时幻想过,如果 Java 并发控制只有 synchronized 多好,只有下面三种使用方式,简单方便publicclassThreeSync{privatestaticfinalObjectobject=newObject();publicsynchronizedvoidnormalSyncMethod(){//临界区}publicstaticsynchronizedvoidstaticS...

2020-06-10 15:43:00 226

转载 Maven 设置阿里镜像

前言Maven 默认的中央仓库速度慢,可以考虑换成阿里的镜像。修改方式主要有两种。1、针对所有项目修改中央仓库Maven 提供了全局配置文件 settings.xml 针对所有项目有效,位置是在安装目录 conf 下。可以将 settings.xml 文件拷贝到当前用户目录 .m2 下,此时只针对当前用户用效。 在 settings.xml 下找到 <mirrors> 节点,并...

2020-04-24 16:13:10 4284

转载 手把手教你使用Git(最全的Git教程)

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上 改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。一:Git是什么? Git是目前世界上最...

2020-04-24 14:44:18 300

转载 MySQL为什么用B+树做索引?

索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全...

2020-04-14 17:11:57 882

原创 使用getopt命令解析shell脚本的命令行选项

本文将要介绍的是getopt命令,它可以同时处理短选项和长选项。首先,getopt命令不是一个标准的unix命令,但它在大多数Linux的发行版中都自带了有,如果没有,也可以从getopt官网上下载安装。在getopt的较老版本中,存在一些bug,不大好用,在后来的版本中解决了这些问题,我们称之为getopt增强版。通过-T选项,我们可以检查当前的getopt是否为增强版,返回值为4,则表...

2020-04-02 15:20:11 277

原创 linux中的--双横杠有什么作用

bash的man page是这么写的:A -- signals the end of options and disables further optionprocessing. Any arguments after the -- are treated as filenames andarguments. An argument of - is equivalent to --....

2020-03-29 16:51:17 2013

转载 while read line 用法详细介绍

循环中的重定向或许你应该在其他脚本中见过下面的这种写法:while read linedo…done < file刚开始看到这种结构时,很难理解< file是如何与循环配合在一起工作的。因为循环内有很多条命令,而我们之前接触的重定向都是为一条命令工作的。这里有一个原则,这个原则掌握好了,这个问题就很简单了:对循环重定向的输入可适用于循环中的所有...

2020-01-20 10:58:28 29715

转载 linux中find与rm实现查找并删除目录或文件

inux 下用find命令查找文件,rm命令删除文件。删除指定目录下指定文件find 要查找的目录名-name .svn |xargs rm -rf删除指定名称的文件或文件夹:find -type d | grep .svn$ | xargs rm -r分析:find -type d | grep .svn$ 通过此命令查找文件夹 过滤正则表达式中的目录| xargs rm ...

2020-01-13 10:05:08 1196

原创 linux centos6搭建ftp服务器

介绍本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置。知识点在linux中使用的FTP是vsftpFTP可以有三种登入方式分别是:匿名登录方式:不需要用户密码 本地用户登入:使用本地用户和密码登入 虚拟用户方式:也是使用用户和密码登入,但是该用户不是linux中创建的用户一、查看是否已经安装ftp显示如下内容证明已经安装ftp,否则没...

2020-01-07 19:06:12 476

转载 IDEA远程debug java项目

远程debug调试:服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道远程服务端的此时的内部状态。步骤1、远程服务器上项目需以debug模式启动,在启动命令中加入参数-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,serve...

2020-01-03 16:40:00 741

转载 深入理解SPI机制

一、什么是SPISPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。我们先通过一个很简单的例子来看下它是怎么用的。1、小栗子首先,我们需要定义一个接口...

2019-11-21 11:18:06 162

转载 JVM之类加载器

虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流(即字节码)”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成字节码(.class 文件)。 类加载器...

2019-11-21 10:18:38 92

转载 类加载的原则

Java类加载器的作用就是在运行时加载类。Java类加载器基于三个机制:委托、可见性和单一性。委托机制是指将加载一个类的请求交给父类加载 器,如果这个父类加载器不能够找到或者加载这个类,那么再加载它。可见性的原理是子类的加载器可以看见所有的父类加载器加载的类,而父类加载器看不到子类 加载器加载的类。单一性原理是指仅加载一个类一次,这是由委托机制确保子类加载器不会再次加载父类加载器加载过的类。正确理...

2019-11-20 16:58:54 478

原创 ScheduledThreadPoolExecutor执行周期性任务异常

1.问题描述在使用ScheduledThreadPoolExecutor的时候,可以用来周期性地执行任务。但是不知道什么原因,发现过一段时间任务不执行了。2.解决思路使用jstack命令先看一下进程的状态:"scheduled-pool-0" #11 prio=5 os_prio=0 tid=0x000000001c370800 nid=0x31bc waiting on co...

2019-10-16 17:19:04 2062

转载 Java8 HashMap之tableSizeFor

Java8对许多内置的容器进行了优化与拓展,其中对HashMap的改变尤其大。之后将进行总结。  最近在看HashMap的源码时,发现了里面好多很不错的算法,相比Java7从性能上提高了许多。其中tableSizeFor就是一个例子。tableSizeFor的功能(不考虑大于最大容量的情况)是返回大于输入参数且最近的2的整数次幂的数。比如10,则返回16。该算法源码如下:static f...

2019-09-19 15:08:52 94

转载 深入理解单例模式:静态内部类单例原理

本文主要介绍java的单例模式,以及详细剖析静态内部类之所以能够实现单例的原理。OK,废话不多说,进入正文。首先我们要先了解下单例的四大原则:构造方法私有。 以静态方法或者枚举返回实例。 确保实例只有一个,尤其是多线程环境。 确保反序列化时不会重新构建对象。看一下静态内部类的单例模式的代码:public class Singleton05 { private Sing...

2019-09-19 09:43:59 319

原创 总结单例模式的几种实现方式及优缺点

几种创建方式总结:1、饿汉式:类初始化的时候,会立即加载该对象,线程天生安全,调用效率高。2、懒汉式:类初始化时,不会初始化该对象,真正需要使用的时候才会去创建该对象,具备懒加载功能。3、双重检测方式(因为JVM本身重排序的原因,可能会出现多次的初始化)4、枚举单例:使用枚举实现单例模式,实现简单、调用效率高,枚举本身就是单例,由JVM从根本上提供保障,避免通过反射和反序列化的漏洞...

2019-09-18 10:41:32 1402

原创 同步binlog并上传到hdfs

#!/bin/bash# #echo "执行节点"`hostname`# 正 时ip=$1portc=4044if [ $# -eq 4 ] ; then portc=$2yearId=${3} dateId=${4} startTime=${4}" 00:00:00" endTime=${4}" 23:59:59"else echo "输入参数有误:<...

2019-09-02 14:02:00 384 1

原创 kafka源码解析-分区副本的分配

主要介绍是未指定机架信息的分配策略,kafka版本是2.0.0,具体实现为kafka.admin.AdminUtils.scala文件中的assignReplicasToBrokersRackUnaware()方法,该方法的内容如下:private def assignReplicasToBrokersRackUnaware(nPartitions: Int,//分区数 ...

2019-08-31 16:01:09 449

转载 分析 java 占用 cpu 过高的原因以及 java ScheduledThreadPoolExecutor bug 介绍

近期发现一个java进程的cpu占用接近100%。开始简单地认为是由于给java分配的内存不足,从而导致频繁GC。于是首先的处理方式就是直接给该java程序分配更多的内存,然而进程启动没几分钟,cpu占用再次接近100%,看来问题没这么简单。一. 分析 java 占用 cpu 过高的原因1. 通过top命令直接查到该java进程的进程ID,可以看到进程ID为26260。...

2019-08-31 11:37:41 1710

转载 原码,反码,补码杂谈

本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等于反码加一。接触过计算机或电子信息相关课程的同学,应该都或多或少看过补码这哥仨。每次都是在课本的最前几页,来上这么一段:什么反码是原码除符号位,按位取反。补码等于反码加一。然后给整得莫名其妙,稀里糊涂地,接着就是翻页,反正后面的内容也跟三码没多大关系。我原来也是看了好几遍都没看...

2019-08-27 09:52:06 128

转载 guava-19.0和google-collections-1.0 的 ImmutableSet 类冲突

guava-19.0 google-collections-1.0 都有 ImmutableSet 类,包路径也一致,前者有 copyOf(Collection)?一、应用报错:二、解决办法configurations.all { exclude module: 'logback-core' exclude module: 'logback-classic'...

2019-08-03 15:05:19 798 2

转载 Java Socket设置timeout几种常用方式总结

原文链接:https://my.oschina.net/shipley/blog/715196摘要: Java的网络编程Socket常常用于各种网络工具,比如数据库的jdbc客户端,redis客户端jedis,各种RPC工具java客户端,这其中存在一些参数来配置timeout,但是之前一直对timeout的理解还不清晰,所以会导致使用这些网络工具的时候有点迷茫。在此做个总结。...

2019-07-14 11:25:57 13981

转载 centos6.5系统python2.6升级到python3.6

1.安装必备的工具wget:yum -y install wgetgcc:yum -y install gcczlib zlib-devel: yum install zlib zlib-devel -yopenssl-devel:yum install openssl-devel -y2.下载python3.6.8wgethttps://www.Python.org...

2019-05-31 14:08:01 587

空空如也

空空如也

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

TA关注的人

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