![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
查缺补漏
文章平均质量分 88
在阅读大数据相关组件源码时,发现的部分知识漏洞,用于亡羊补牢,包括但不限与 大数据,Java ,Scala 等
zhaoweiwei369
专注大数据方向
展开
-
【Flink】Flink 底层RPC框架分析
1. 前言对于Flink中各个组件(JobMaster、TaskManager、Dispatcher等),其底层RPC框架基于Akka实现,本文着重分析Flink中的Rpc框架实现机制及梳理其通信流程。2. Akka介绍由于Flink底层Rpc是基于Akka实现,我们先了解下Akka的基本使用。Akka是一个开发并发、容错和可伸缩应用的框架。它是Actor Model的一个实现,和Erlang的并发模型很像。在Actor模型中,所有的实体被认为是独立的actors。actors和其他转载 2022-03-18 19:48:55 · 752 阅读 · 1 评论 -
什么是JAVA NIO
NIO(Non-Blocking I/O,java中,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,是解决高并发、I/O处理问题的有效方式。一、传统的BIOBIO(Blocking I/O)即同步阻塞I/O,在NIO出现之前主要使用BIO及新建线程的方式来解决并发请求,但这样很容易因线程瓶颈而造成限制。之所已使用多线程,因为accept()、read()、write()三个函数都是同步阻塞的,当一个连接存在的时候,系统是阻塞转载 2021-12-29 11:24:04 · 631 阅读 · 0 评论 -
Java NIO 的前生今世 之四 NIO Selector 详解
SelectorSelector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一个线程中使用了多个 Channel, 因此也会造成了每个 Channel 传输效率的降低.使用 Selector 的图解如下:为了使用 Selector, 我们首先需要将 Channel 注册到 Selector 中, 随后调用 Selector 的 select()方法, 这个方法会阻塞, 直到注转载 2021-12-29 09:10:38 · 171 阅读 · 0 评论 -
Java NIO 底层原理
目录写在前面 1.1. Java IO读写原理 1.1.1. 内核缓冲与进程缓冲区 1.1.2. java IO读写的底层流程 1.2. 四种主要的IO模型 1.3. 同步阻塞IO(Blocking IO) 1.4. 同步非阻塞NIO(None Blocking IO) 1.5. IO多路复用模型(I/O multiplexing) 1.6. 异步IO模型(asynchronous IO) 此文,从底层入手,给各位小伙伴,起底一下,java的四大io模型。需要面试的,或者没有弄转载 2021-12-22 15:48:55 · 126 阅读 · 0 评论 -
JUC基础知识
JUC基础部分知识转载 2021-12-22 09:49:50 · 614 阅读 · 0 评论 -
设计模式之命令模式
命令模式的定义:将请求封装成一个对象,从而让用户使用不同的请求把客户端参数化,以及支持可撤销和恢复的功能。命令也是类,将命令作为一个类来保存,当要使用的时候可以直接拿来使用,比如脚本语言写出的脚本,只需要一个命令就能执行得到我们想要的需要操作很长时间才能得到的结果。这是一个非常有意思的模式,将操作的步骤保存下来。是一种非常重要的开发理念,在需要保存历史纪录并恢复的场合是非常有用的。从定义上来看着实令人一脸懵逼,在这里描述一下博主个人的理解:请求:客户端要求系统执行的操作,在java的世界里面就是转载 2021-12-16 15:28:57 · 90 阅读 · 0 评论 -
组件hdfs 进程nameNode 内存元数据空间directory 写入元数据一段代码赏析(重试机制)
通过客户端client向namenode写入元数据时发现了一段很有意思的重试机制特记录以待日后学习查阅:代码如下:boolean shouldRetry = true;int retryCount = CREATE_RETRY_COUNT; --10//TODO 重试的代码结构while (shouldRetry) { shouldRetry = false; try { stat = dfsClient.namenode.create(src, m原创 2021-12-10 10:29:53 · 1403 阅读 · 0 评论 -
hdfs中一处装饰者模式代码
阅读hdfs源码时发现了很多地方用到了装饰者模式 特记录分析以便日后复习之用源码部分EditLogFileInputStream.javareader = new FSEditLogOp.Reader(dataIn, tracker, logVersion);这句源码来自 standbyNameNode 通过HTTP读取日志写入自己元数据中部分我们来点开这段代码的实现类进行学习1.public abstract class FSEditLogOp{}这个类为被装饰者类,其下有原创 2021-12-09 11:22:07 · 94 阅读 · 0 评论 -
设计模式之建造者模式(Builder pattern)
前言在软件工程领域,设计模式是一套通用的可复用的解决方案,用来解决在软件设计过程中产生的通用问题。它不是一个可以直接转换成源代码的设计,只是一套在软件系统设计过程中程序员应该遵循的最佳实践准则。定义将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示使用场景当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。例如我们现在有如下一个类计算机类Computer,其中cpu与ram是必填参数,而其他3个是可选参数常规方式不再距离我们.转载 2021-12-08 16:50:22 · 143 阅读 · 0 评论 -
hdfs中一处构造者模式的应用
关于构造者的基础知识另一篇文章中有记录秒懂设计模式之建造者模式(Builder pattern) - 知乎在阅读Hdfs源码中发现构造者模式,特记录下来,以便日后回顾留存。源码位置/** * Add create directory record to edit log */public void logMkDir(String path, INode newNode) { PermissionStatus permissions = newNode.getPermission.原创 2021-12-08 12:00:08 · 97 阅读 · 0 评论 -
设计模式之装饰者模式
设计模式--装饰模式转载 2021-12-05 18:00:51 · 360 阅读 · 0 评论 -
final浅谈
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正。 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3736238.html一.final关转载 2021-12-02 15:50:28 · 70 阅读 · 0 评论 -
==与equals源码角度分析
分析前基础了一)JVM把内存划分成两种:一种是栈内存,一种是堆内存。 ①在函数中定义的一些基本类型的变量和对象的引用变量(变量名)都在函数的栈内存中分配。 ②当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用 ③堆内存用来存放由new创建的对象(包括由基本类型包装起来的类:Integer、String、Double,实际上每个基本类型都有他的包装类)和数组二)Obj...转载 2021-12-02 15:26:43 · 80 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volati转载 2021-11-30 14:25:13 · 85 阅读 · 0 评论 -
RPC框架相关知识
RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有:应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。目前流行的开源 RPC转载 2021-11-22 21:41:38 · 193 阅读 · 0 评论