自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 HDFS读文件的源码(hadoop2.6.0)详解--read函数(4)

接下来我们开始分析最后一个函数。ByteBuffer read(ByteBufferPool bufferPool, int maxLength)代码如下:@Override public ByteBuffer read(ByteBufferPool bufferPool, int maxLength, EnumSet<ReadOption> opts) ...

2018-12-30 00:33:47 225

原创 HDFS读文件的源码(hadoop2.6.0)详解--read函数(3)

接下来我们开始分析第三个函数。public ByteBuffer read(ByteBufferPool bufferPool, int maxLength,EnumSet<ReadOption> opts) 代码如下:@Override public ByteBuffer read(ByteBufferPool bufferPool, int maxLength,...

2018-12-30 00:30:26 350

原创 numberOfTrailingZeros函数和numberOfLeadingZeros函数

numberOfTrailingZeros代码如下:/** * Returns the number of zero bits following the lowest-order ("rightmost") * one-bit in the two's complement binary representation of the specified * ...

2018-12-28 20:56:55 2165

原创 HDFS读文件的源码(hadoop2.6.0)详解--read函数(2)

接下来我们开始分析第二个函数。针对public int read(ByteBuffer buf)函数代码如下:@Override public int read(ByteBuffer buf) throws IOException { if (in instanceof ByteBufferReadable) { return ((ByteBufferRead...

2018-12-27 23:49:08 740

原创 java.util.Comparator<T>接口中如何判断升序降序

根据java源代码,可以知道内部规定:compare方法大于0,就把前一个数和后一个数交换,如果小于等于0就保持原位置,不进行交换。看下面的代码(以下代码引用自https://blog.csdn.net/yaomingyang/article/details/80618663):public static void main(String[] args) { List...

2018-12-27 00:47:00 2555 2

原创 HDFS读文件的源码(hadoop2.6.0)详解--read函数(1)

在读文件的时候会调用FSDataInputStream类中相应read函数,主要有以下四种:(1)、public int read(long position, byte[] buffer, int offset, int length)(2)、public int read(ByteBuffer buf)(3)、public ByteBuffer read(ByteBufferPoo...

2018-12-24 22:27:57 778

原创 HDFS读文件的源码(hadoop2.6.0)详解--概论

hdfs读操作的实现比较复杂,在看了相应的源码后,我将它进行模块划分,这样更利于我们的理解和记忆。说到读操作,其实前面还有一部分就是客户端对象的创建和文件的打开操作,关于客户端对象的创建和open操作,请查看这篇文章我们先来看一下相关的概要图,图1:图1打开文件部分上面我们已经讲过了,有兴趣可以看一下上面推荐的文章,我们主要讲解读数据部分,该部分主要分三个部分,后面我们会针对每一个部分进行...

2018-12-22 23:47:17 304

原创 一些特殊的函数

1、public native Class&lt;?&gt; getComponentType();该函数在Class&lt;T&gt;类中,如果该Class类对象属于数组类型,那么就返回对应的Class对象,如果不是数组类型那么就返回null,示例代码:BitSet []bitset = new BitSet[1];//非基本数据类型的数组类型 System.out.printl...

2018-12-20 15:11:46 1311

转载 java中I/O详解

本内容为转发内容,原文地址,另外还有一篇文章比较不错,文件地址刚开始学Java时候,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己结合API来整理一下,有错的话请指正,也希望大家提出宝贵意见。首先看个图:(如果你也是初学者,我相信你看了真个人都不好了,想想java设计者真是煞费苦心啊!)Java ...

2018-12-20 11:15:33 274

转载 Linux中的文件描述符与打开文件之间的关系

本文章属于转载文章,原文链接1. 概述    在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。...

2018-12-18 20:09:55 88

转载 二进制原码、反码、补码详解以及相关的运算

这篇文章对二进制讲解的非常深刻,在此进行转发,以备后面复习。这里另外推荐另外一篇文章,加强学习进制转换-128的8位补码是:1000 0000B,换算成十进制就是 128。负数的补码,是用“模”计算出来的,即:[X]补 = 256 - |X| = 256- |-128| = 128。不要用“求反加一”来算,那只不过是一个经验公式而已。一.反码的范围反码表示法规定:正数的反码与其原...

2018-12-16 12:25:47 6968

原创 setsid java -server命令解析

#!/bin/bashBASEDIR=`dirname $0`/../libBASEDIR=`(cd "$BASEDIR"; pwd)`FEATURE=com.jdo.bp.sample.real.time.Appsetsid java -server -Xms1024m -Xmx3072m -XX:MaxPermSize=3072m -XX:+UseParallelGC -XX:+U...

2018-12-14 14:44:28 1409 1

原创 ByteBuffer学习笔记

该类继承Buffer类,Buffer类的继承关系图如下:Buffer类继承关系图ByteBuffer类从上面的图可以看出,该类有三个子类,MappedByteBuffer、HeapByteBuffer、DirectByteBuffer,其中HeapByteBuffer和DirectByteBuffer分别用于堆上内存和非堆上内存。DirectByteBuffer不是分配在堆上的,它不被...

2018-12-11 18:28:09 490

原创 左移右移运算需要注意的地方

1、关于右移和左移需要注意的地方:由于类型数值有位数限制,例如java中long型限制8个字节,总共8*8=64位,int型限制4个字节,总共4*8=32位,long和int都有一位是符号位,Java不允许一次性移位左操作数的所有位,对于int型来说也就是右操作数不能大于等于32。右操作数的低5位,5位二进制所代表的最大值为2^5-1,为31,所以取右操作数的低5位,就是只看右操作数的二进制的...

2018-12-09 17:57:47 1449

转载 左移右移运算详解

补充一点:移位为负数那么实际的移位数的计算为:实际移位数 = 类型bit大小 - (一位数绝对值 % 类型bit大小)例如:int a = 1;a &gt;&gt;= -42;a &gt;&gt;= -42;实际相当于a&gt;&gt;=(32 - |-42| % 32)即a&gt;&gt;=(32 - 10)也就是a&gt;&gt;=22也就是说a&gt;&gt;=-42和a...

2018-12-09 11:12:48 5325

转载 Java中的Unsafe类

综述sun.misc.Unsafe至少从2004年Java1.4开始就存在于Java中了。在Java9中,为了提高JVM的可维护性,Unsafe和许多其他的东西一起都被作为内部使用类隐藏起来了。但是究竟是什么取代Unsafe不得而知,个人推测会有不止一样来取代它,那么问题来了,到底为什么要使用Unsafe?做一些Java语言不允许但是又十分有用的事情很多低级语言中可用的技巧在Java中...

2018-12-08 11:29:57 182

转载 linux中零拷贝详细描述

文章属于转载文章这篇文章需要用到页缓存和内存映射的知识,所以建议先看之前的几篇文章。引言传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的...

2018-12-04 20:08:06 261

转载 linux进程空间、页缓存和虚拟文件系统图

本文为转载文章,原文地址linux内核与实现中分别大致介绍了内核子系统的各个模块,并给出了该模块下重要的数据结构。但是,阅读过本书之后(感觉底层确实欠缺)发现只是对各个子系统分别有了一个大致的印象,单凭自己的理解难以将各个系统之间串联起来,尤其是每个内核子系统总是涉及较多的数据结构。趁着即将元旦假期,花点时间将内核中的虚拟文件系统、进程地址空间、页缓存以及内存映射之间的关系建立一个大致的框图。...

2018-12-04 16:57:29 210

转载 内存映射mmap

 本文为转载文章,原文请点击:mmap详细描述文章内存映射是linux中的一个重要机制,它和虚拟内存管理和文件IO都有直接的关系,本篇将详细介绍linux中内存映射的原理。mmap基本概念        在介绍内存映射之前,首先知道现代计算机系统普遍采用虚拟内存的方式管理物理内存。在32位机器上每个进程都有自己的4G虚拟内存空间,其中0-3G属于用户空间,是该进程独有的;3-4G之间的是...

2018-12-04 11:43:59 530

转载 linux中的页缓存和文件IO

一篇比较好的关于页缓存的描述文章一篇比较好的关于页缓存的描述文章虽然仔细看过《linux内核设计与实现》,也参考了很多的博客,并且做了linux进程空间、address_space和文件的关系图(设为图1,参考博客),但是对于页缓存和文件IO之间关系的细节一直不是特别明朗。趁着元旦假期看的博客中思路还算清晰,写下当前对于页缓存的理解及其和文件IO之间的关系。        首先明确的一点是...

2018-12-04 11:42:46 219

空空如也

空空如也

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

TA关注的人

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