自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张伯毅的专栏

知者不惑,仁者不忧,勇者不惧.

  • 博客(535)
  • 资源 (14)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Spark2.3.2源码解析 [目录]

Spark基础知识详解Spark2.1 内存管理详解Spark2.3.2源码分析:1.代码阅读环境准备Spark2.3.2源码解析: 2.启动master节点流程源码分析Spark2.3.2源码解析: 3.启动worker节点启动流程源码分析Spark2.3.2源码解析: 4.1.Yarn cluster 模式 SparkSubmit源码分析(一)Spark2.3.2源码解析: 4.2.Yarn cluster 模式 SparkSubmit源码分析(二)ApplicationMasterSpa

2021-01-12 20:32:47 58

原创 Hadoop3.2.x YARN源码分析目录汇总 [持续更新中....]

Hadoop3.2.x YARN源码分析目录汇总如下:Hadoop3.2.1 【 YARN 】源码分析 : RPC通讯解析Hadoop3.2.1 【 YARN 】源码分析 : ResourceManager 浅析Hadoop3.2.1 【 YARN 】源码分析 : ClientRMService 浅析Hadoop3.2.1 【 YARN 】源码分析 : AdminService 浅析Hadoop3.2.1 【 YARN 】源码分析 : ApplicationMaster 浅析Hadoop3.2

2020-12-28 09:26:38 68

原创 Hadoop3.2.x HDFS源码分析目录汇总 [完结]

Hadoop3.2.0 源码编译 [一]MAC版本: Hadoop3.2.0 源码编译 [ 二 ]Hadoop3.2.0 源码分析: SHELL启动脚本 DEBUG 模式Hadoop3.2.0 源码分析: namenode 启动Hadoop3.2.0 源码分析: datanode 启动Hadoop3.2.0 源码分析: ResourceManager启动Hadoop3.2.0 源码分析: NodeManagerHadoop3.2.0 源码分析: Container 之...

2020-09-27 09:28:38 7996

原创 TO DO LIST

2019年任务名称作者状态开始时间Redis深度历险 核心原理与应用实践钱文品完成2019-01Java 多线程编程核心技术高洪岩完成2019-01Spark大数据商业实战三部曲王家林完成2019-01说透中台王健完成2019-01趣谈网络协议刘超完成2019-04数据结构与算法之美王争完成2019-04...

2020-08-27 10:10:07 10943

原创 [JVM]了断局: [ 目录 ]

[JVM]了断局: 说什么也没用,背就完了[必背][JVM]了断局: “运行时数据区“理论梳理[JVM]了断局: 类文件结构梳理[JVM]了断局: JDK默认配置.[JVM]了断局: G1 入门[JVM]了断局: 类加载机制原图:https://www.processon.com/view/5cff6c05e4b0a65d8095d130未完,待补充................

2020-08-24 21:09:07 9531

原创 Hadoop3.2.1 RPC通讯 一锅端

下面是最近整理的关于Hadoop3.2.1 RPC 的通讯文章汇总,以及我最后画的一张从Client端请求到Server端的流程图.有什么不对的地方,欢迎指正...Hadoop3.2.1 【 HDFS 】源码分析 : RPC实现 [一] proto接口协议Hadoop3.2.1 【 HDFS 】源码分析 : RPC实现 [二] 概述&使用Hadoop3.2.1 【 HDFS 】源码分析 : RPC原理 [三] 概述&原理Hadoop3.2.1 【 HDFS 】源...

2020-06-21 23:08:28 10585

原创 CentOS7.6 万兆网卡性能测试.

Table of Contents一. 物理机&软件:二.网卡信息三. 安装netperf四. 开启多队列功能五. 测试六. 查看结果七.总结最终结果极限 万兆网卡: 网络吞吐量 大约为9409.58Mbit/s ≈1176M/s本文章主要是为了测试万兆网卡的传输速率.一. 物理机&软件:1.两台装有万兆网卡的物理机, ...

2020-04-22 15:51:43 14114

原创 Ranger 2.0 页面权限配置图解

一. 前言为了记录ranger的配置,截图留念…注意: Service Name 不是随便写的,是根据插件的名字改定义的, 注意!!!二. HDFS2.1. 添加服务dfs.nameservices : masterdfs.ha.namenodes.master : nn0,nn1dfs.namenode.rpc-address.master.nn0 : server-host01:8020dfs.namenode.rpc-address.master.nn1 : server-hos

2021-01-11 22:03:50 37

原创 对象存储入门 [ minIo ozone ]

一. 前言OSS(Object Storage Service)俗称对象存储,主要提供图片、文档、音频、视频等二进制文件的海量存储功能。目前除了公有云提供对象存储服务外,一般私有云比较关心一些开源的分布式对象存储解决方案。公有云一般都提供对象存储服务,如阿里云的OSS,华为云的OBS,腾讯云的COS。一些开源的对象存储都会遵循Amazon s3协议。Amazon s3协议定义了操作对象存储的Resestfull风格的API。通过在pom中引用aws-java-sdk-s3可以实现对存储的操作。 

2021-01-07 21:34:12 175

原创 Hadoop3.2.1 【 YARN 】源码分析 : 节点健康状况检测

一. 前言节点健康状况检测是NodeManager自带的健康状况诊断机制, 通过该机制,NodeManager可时刻掌握自己的健康状况, 并及时汇报给ResourceManager。 而ResourceManager则根据每个NodeManager的健康状况适当调整分配的任务数目。 当NodeManager认为自己的健康状况“欠佳”时, 可通知ResourceManager不再为之分配新任务, 待健康状况好转时, 再分配任务。 该机制不仅可帮助及时发现存在问题的NodeManager, 避免不必要的任务分

2021-01-04 03:04:32 130

原创 Hadoop3.2.1 【 YARN 】源码分析 : AsyncDispatcher概述

一. 前言YARN采用了基于事件驱动的并发模型, 该模型能够大大增强并发性, 从而提高系统整体性能。 为了构建该模型, YARN将各种处理逻辑抽象成事件和对应事件调度器, 并将每类事件的处理过程分割成多个步骤, 用有限状态机表示。整个处理过程大致为: 处理请求会作为事件进入系统, 由中央异步调度器(AsyncDispatcher) 负责传递给相应事件调度器(Event Handler) 。 该事件调度器可能将该事件转发给另外一个事件调度器, 也可能交给一个带有有限状态机的事件处理器, 其处理结果也以

2021-01-03 19:02:22 29

原创 Hadoop3.2.1 【 YARN 】源码分析 : NodeManager概述

一. 前言NodeManager是运行在单个节点上的代理, 它需要与应用程序的ApplicationMaster和集群管理者ResourceManager交互: 从ApplicationMaster上接收有关Container的命令并执行之(比如启动、 停止Container) ; 向ResourceManager汇报各个Container运行状态和节点健康状况, 并领取有关Container的命令(比如清理Container) 执行之.NodeManager(NM) 是YARN中单个节点上的代理, 它

2021-01-02 22:14:50 50

原创 Hadoop3.2.1 【 YARN 】源码分析 : RMNode状态机浅析

一. 前言ResourceManager中用来维护一个节点生命周期的数据结构是RMNode。 RMNode记录了节点可能存在的各个状态, 由RMNodeImpl类实现, 各状态之间的转换由事件触发。二.RMNode状态机2.1. RMNode状态机概述RMNode是ResourceManager中用于维护一个节点生命周期的数据结构, 它的实现是RMNodeImpl类, 该类维护了一个节点状态机, 记录了节点可能存在的各个状态以及导致状态间转换的事件。 当某个事件发生时, RMNodeImpl会根据实

2020-12-31 14:13:59 39

原创 Hadoop3.2.1 【 YARN 】源码分析 : RMApp状态机浅析

一. 前言在YARN中, 如果一个对象由若干个状态以及触发这些状态发生转移的事件构成, 它将被抽象成在这里插入代码片一个状态机, 在YARN ResourceManager内部, 共有4类状态机, 分别是RMApp、 RMAppAttempt、 RMContainer和RMNode。其中, 前2类状态机维护了一个应用程序相关的生命周期, 包括Application生命周期、 一次运行尝试的生命周期;RMContainer则维护了分配出去的各个资源的使用状态; RMNode维护了一个NodeManage

2020-12-31 10:34:14 48

原创 Hadoop3.2.1 【 YARN 】源码分析 : StateMachineFactory解析[二]

一. 前言RMNode是ResourceManager中用于维护一个节点生命周期的数据结构, 它的实现是RMNodeImpl类, 该类维护了一个节点状态机, 记录了节点可能存在的各个状态以及导致状态间转换的事件。 当某个事件发生时, RMNodeImpl会根据实际情况进行节点状态转移, 同时触发一个行为。在这里我们拿RMNodeImpl 查看一下构建后状态机的数据存储结构. 具体的状态不做说明, 先看一下RMNodeImpl流程图.二 . StateMachineFactory构建代码在实现类里面有

2020-12-30 20:29:53 53

原创 Hadoop3.2.1 【 YARN 】源码分析 : StateMachineFactory解析[一]

一. 事件处理模型YARN采用了基于事件驱动的并发模型, 该模型能够大大增强并发性, 从而提高系统整体性能。 为了构建该模型, YARN将各种处理逻辑抽象成事件和对应事件调度器, 并将每类事件的处理过程分割成多个步骤, 用有限状态机表示。整个处理过程大致为: 处理请求会作为事件进入系统, 由中央异步调度器(AsyncDispatcher) 负责传递给相应事件调度器(Event Handler) 。 该事件调度器可能将该事件转发给另外一个事件调度器, 也可能交给一个带有有限状态机的事件处理器, 其处理结

2020-12-29 02:50:28 172

原创 我和DolphinScheduler的这一年

Apache DolphinScheduler,为Apache开源项目, 简称”DS”, 中文名 “小海豚调度”(海豚聪明、人性化,又左右脑可互相换班,终生不用睡觉)。希望 DolphinScheduler 就像它的名字一样,成为一个“开箱即用”的灵活易用的调度系统。DolphinScheduler已经一岁了,很荣幸与它一起成长, 2020年就剩几天了,记录一下,就当是对这一年多的成长做了一个梳理(开启碎碎念模式…).一. 相遇2019年10月公司决定开展中台方面的业务,基于大数据体系,要搞一套从.

2020-12-24 10:46:20 251

原创 Hadoop3.2.1状态机图生步骤.

1. 进入项目目录, 执行命令mvn compile -Pvisualize2. 安装指令(mac 版本)brew install graphviz3. 执行转换操作dot -Tpng ResourceManager.gv > ResourceManager.pngdot -Tpng NodeManager.gv > NodeManager.pngdot -Tpng MapReduce.gv> MapReduce.png4. ResourceManager图

2020-12-16 23:20:44 7185

原创 Hadoop3.2.1 【 YARN 】源码分析 : ResourceManager # Application管理

一.前言在YARN中, Application是指应用程序, 它可能启动多个运行实例, 每个运行实例由一个ApplicationMaster与一组该ApplicationMaster启动的任务组成, 它拥有名称、 队列名、优先级等属性, 是一个比较宽泛的概念, 可以是一个MapReduce作业、 一个DAG应用程序, 甚至可以是一个Storm集群实例。YARN中Application管理涉及应用程序的权限管理、启动与关闭、 生命周期管理等…二. ApplicationACLsManagerAppl

2020-12-15 17:15:01 7274

原创 Hadoop3.2.1 【 YARN 】源码分析 : ResourceManager # NodeManager 浅析

一. 前言NodeManager管理部分主要由三个服务构成, 分别是NMLivelinessMonitor、 NodesListManager和ResourceTrackerService, 它们共同管理NodeManager的生存周期 .二. NMLivelinessMonitor该服务周期性遍历集群中所有NodeManager, 如果一个NodeManager在一定时间(可通过参数yarn.nm.liveness-monitor.expiry-interval-ms配置, 默认为10min) 内未

2020-12-14 01:30:30 7394

原创 Hadoop3.2.1 【 YARN 】源码分析 : ApplicationMaster 浅析

一 . 前言ApplictionMaster管理部分主要由三个服务构成, 分别是ApplicationMasterLauncher、AMLivelinessMonitor和ApplicationMasterService, 它们共同管理应用程序的ApplicationMaster的生存周期。二 . 整体流程步骤1 : 用户向YARN ResourceManager提交应用程序, ResourceManager收到提交请求后, 先向资源调度器申请用以启动ApplicationMaster的资源, 待

2020-12-13 20:09:21 207

原创 hadoop3.2.1版本docker编译报错 : [ Unable to locate package ghc ]

一.前言最近在用docker编译3.2.1版本的haodop代码的时候,发现 ghc 这个依赖无法下载.报错信息如下:Step 34/49 : RUN apt-get install -y ghc && apt-get -q update && apt-get -q install -y --no-install-recommends shellcheck && apt-get clean && rm -rf

2020-12-12 23:50:09 99

原创 Hadoop3.2.1 【 YARN 】源码分析 : AdminService 浅析

一. 前言AdminService是一个RPC Server [ 8033端口 ], 但它的服务对象是管理员。 在YARN中, 管理员列表由属性yarn.admin.acl指定(在yarn-site.xml中设置) , 默认情况下, 属性值为“*”, 表示所有用户都是管理员。 从实现角度看,它是一个实现了ResourceManagerAdministrationProtocol协议的服务在ResourceManager中, ClientRMService和AdminService两个服务分别负责处理来自

2020-12-11 17:47:54 82

原创 Hadoop3.2.1 【 YARN 】源码分析 : ClientRMService 浅析

一. 前言在ResourceManager中, ClientRMService和AdminService两个服务分别负责处理来自普通用户和管理员的请求, 需要注意的是, 之所以让这两类请求通过两个不同的通信通道发送给ResourceManager, 是因为要避免普通用户请求过多导致管理员请求被阻塞而迟迟得不到处理。二.ClientRMServiceClientRMService是一个RPC Server, 为来自客户端的各种RPC请求提供服务。它实现了ApplicationClientProtoco

2020-12-11 00:24:59 77

原创 JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]

一. 背景生产环境日志突然膨胀到100G+, 为了定位问题,所以截取了部分报错日志,问题是 堆栈信息呢? 哪里报的NPE在哪???信息如下:[ERROR] 2020-12-09 09:41:50.053 - [taskAppId=TASK-1919-33805-97659]:[156] - wait task quit failed, instance id:33805, task id:97659[ERROR] 2020-12-09 09:41:50.053 - [taskAppId=TAS

2020-12-10 14:12:26 121

原创 Hadoop3.2.1 【 YARN 】源码分析 : ResourceManager 浅析

一.前言在YARN中, ResourceManager负责集群中所有资源的统一管理和分配, 它接收来自各个节点(NodeManager) 的资源汇报信息, 并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationMaster) 。二. ResourceManager通讯❑ ResourceTracker [8031]: NodeManager通过该RPC协议向ResourceManager注册、 汇报节点健康状况和Container运行状态, 并领取ResourceManager

2020-12-09 00:41:54 44

原创 Hadoop3.2.1 【 YARN 】源码分析 : RPC通讯解析

一.前言远程过程调用(Remote Procedure Call, RPC) 是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序, 同时将网络的通信细节隐藏起来,而程序员无需额外地为这个交互作用编程。作为一个分布式系统, Hadoop实现了自己的RPC通信协议, 它是上层多个分布式子系统(MR、 YARN、 HDFS等) 的公用网络通信模块, 保证其轻量级、 高性能。典型的RPC框架, 主要包括以下几个部分。( 1) 通信模块: 主要是请求-应答协议, 包括同步方式和

2020-12-07 03:08:36 233 1

原创 Hadoop3.2.1 【 HDFS 】源码分析 :DatanodeManager解析

一.前言DatanodeManager的主要功能是管理数据节点,包括退役和其他活动。记录了在Namenode上注册的Datanode, 以及这些Datanode在网络中的拓扑结构等信息。二.构造方法 DatanodeManager(final BlockManager blockManager, final Namesystem namesystem,final Configuration conf) throws IOException { this.names...

2020-12-01 09:17:31 306

原创 Hadoop3.2.1 【 HDFS 】源码分析 : DirectoryScanner 实现

一. 前言DirectoryScanner的主要任务是定期扫描磁盘上的数据块, 检查磁盘上的数据块信息是否与FsDatasetImpl中保存的数据块信息一致, 如果不一致则对FsDatasetImpl中的信息进行更新。 注意, DirectoryScanner只会检查内存和磁盘上FINALIZED状态的数据块是否一致二....

2020-11-29 01:04:44 2224

原创 Hadoop3.2.1 【 HDFS 】源码分析 : BlockScanner & VolumeScanner 实现

一. 前言每个Datanode都会初始化一个数据块扫描器周期性地验证Datanode上存储的所有数据块的正确性, 并把发现的损坏数据块报告给Namenode。 BlockScanner类就是Datanode上数据块扫描器的实现。二.BlockScannerBlockScanner中有一个属性scanners 用于存放BlockScanner所要监控的VolumeScanner对象. 然后VolumeScanner会启动线程来监控block状态.addVolumeScanner ,removeVolum

2020-11-25 17:17:52 2304

原创 Hadoop3.2.1 【 HDFS 】源码分析 : 写数据

一. 前言DataTransferProtocol.write()方法给出了写操作的接口定义, 操作码是80, DataXceiver.writeBlock()则真正实现了DataTransferProtocol.writeBlock()方法。HDFS使用数据流管道方式来写数据。 DFSClient通过调用Sender.writeBlock()方法触发一个写数据块请求, 这个请求会传送到数据流管道中的每一个数据节点, 数据流管道中的最后一个数据节点会回复请求确认, 这个确认消息逆向地通过数据流管道送回D

2020-11-25 01:27:44 2331

原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataTransferThrottler[限流] 解析

一.前言Datanode是一个典型的IO密集型应用, 所以Datanode的磁盘I/O和网络I/O往往会成为系统的瓶颈。 数据节点上会有多种不同的任务共同占用网络I/O和磁盘I/O, 例如数据块读操作、 数据块写操作、 数据块复制操作以及数据块扫描操作等。 如果不对这些操作使用磁盘和网络进行一定的速度控制, 那么Datanode的吞吐量、 延迟以及服务的可用性会大大降低.所以Datanode使用节流器类DataTransferThrottler来提供简单的流控机制,DataTransferThrottl

2020-11-23 14:19:35 2214

原创 Hadoop3.2.1 【 HDFS 】源码分析 : 零拷贝数据传输

一. 前言Datanode最重要的功能之一就是读取数据块,如果高效的完成数据的读取是影响效率的关键.二. 操作系统层面读取数据步骤一 : Datanode会首先将数据块从磁盘存储(也可能是SSD、 内存等异构存储) 读入操作系统的内核缓冲区步骤二 : 将数据跨内核推到Datanode进程步骤三 : Datanode会再次跨内核将数据推回内核中的套接字缓冲区步骤四 : 最后将数据写入网卡缓冲区Datanode对数据进行了两次多余的数据拷贝操作(步骤二和步骤三) , Datano

2020-11-23 11:34:34 2232

原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataXceiver: 读取数据块 解析 [二]

一. 前言Receiver.processOp()方法用于处理流式接口的请求, 它首先从数据流中读取序列化后的参数, 对参数反序列化, 然后根据操作码调用DataTransferProtocol中定义的方法, 这些方法都是在DataXceiver中具体实现的。流式接口中最重要的一个部分就是客户端从数据节点上读取数据块, DataTransferProtocol.readBlock()给出了读取操作的接口定义, 操作码是81。 DataXceiver.readBlock()则实现了DataTransfer

2020-11-23 09:43:24 5598 1

原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataXceiver 解析 [一]

一. 前言DataXceiverServer主要用于监听并接收流式请求, 然后创建并启动DataXceiver对象。 DataXceiver是Receiver的子类, DataTransferProtocol真正的响应操作都是在DataXceiver类中实现的。二. run()方法DataXceiver的执行逻辑主要是在run()方法中完成的。 DataXceiver.run()方法首先根据传入的Peer对象获取此层网络的输入/ 输出流, 并对输入/ 输出流进行装饰, 然后调用父类Receiver的i

2020-11-22 00:25:01 3185

原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataXceiverServer 解析

一. 前言DataXceiverServer对象用于在Datanode上监听流式接口的请求, 每当有Client通过Sender类发起流式接口请求时, DataXceiverServer就会监听并接收这个请求, 然后创建一个DataXceiver对象用于响应这个请求并执行对应的操作。二.DataXceiverServer的初始化在DataNode的初始化代码中, 会创建一个DataXceiverServer对象监听所有流式接口请求, Datanode会调用Datanode.initDataXceiv

2020-11-21 16:24:07 3291

原创 Hadoop3.2.1 【 HDFS 】源码分析 Sender和Receiver解析

..........................................一.前言二.调用流程三.Sender类四.Receiver 类一.前言DataTransferProtocol有两个子类——Sender和Receiver。其中Sender类封装了DataTransferProtocol的调用操作, 用于发起流式接口请求;Receiver类封装了DataTransferProtocol的执行操作, 用于响应流式接口请求。二.调用流程DFSClient发起了一个DataTrans

2020-11-20 19:37:46 3242

原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataTransferProtocol解析

DataTransferProtocol是用来描述写入或者读出Datanode上数据的流式接口。■ readBlock(): 从当前Datanode上读取指定的数据块。■ writeBlock(): 将当前Datanode上存储的指定数据块写入数据流管道(pipeLine)中。■ transferBlock(): 将指定数据块复制(transfer) 到另一个Datanode上。 数据块复制操作是在数据流管道中的数据节点出现故障, 需要用新的数据节点替换异常的数据节点时, DFSClient调用这个

2020-11-20 18:49:26 3260

原创 Hadoop3.2.1 【 HDFS 】源码分析 : BlockPoolManager 解析

一. 前言BlockPoolManager类负责管理所有的BPOfferService实例, 对外提供添加、 删除、 启动、 停止、 关闭BPOfferService类的接口。 所有对BPOfferService的操作, 都必须通过BlockPoolManager类提供的方法来执行。DataNode.startDataNode()方法初始化了BlockPoolManager对象, 然后调用BlockPoolManager.refreshNamenodes()方法完成对BlockPoolManager的构

2020-11-20 18:24:11 2205

原创 Hadoop3.2.1 【 HDFS 】源码分析 : BPOfferService 解析

一.前言一个HDFS集群可以配置多个命名空间(Namespace) , 每个Datanode都会存储多个块池的数据块。 所以在Datanode实现中, 定义了BlockPoolManager类来管理Datanode上的所有块池, Datanode的其他模块对块池的操作都必须通过BlockPoolManager执行, 每个Datanode都有一个BlockPoolManager的实例。由于在HDFS Federation部署中, 一个Datanode会保存多个块池的数据块, 所以BlockPoolMana

2020-11-20 13:43:55 2276

Spark权威指南(Spark2)

Spark权威指南(Spark2) 2018年11月出版,目前只出了英文版,中文版还没有出。

2018-12-20

[逻辑思维训练500题II].于雷.扫描版

整理的电子书,有喜欢的可以下载。 ------------------------------------------------------------ 当你的才华还撑不起你的野心时,那你就应该静下心来学习;当你的能力还驾驭不了你的目标时,那就应该沉下心来历练、沉淀和积累!

2014-06-24

《谁说菜鸟不会数据分析》入门篇-简版电子书

整理的电子书,有喜欢的可以下载。 ------------------------------------------------------------ 当你的才华还撑不起你的野心时,那你就应该静下心来学习;当你的能力还驾驭不了你的目标时,那就应该沉下心来历练、沉淀和积累!

2014-06-24

Thinking in UML(2 edition)

在网上下载的,有兴趣的可以看看。 ------------------------------------------------ 当你的才华还撑不起你的野心时,那你就应该静下心来学习;当你的能力还驾驭不了你的目标时,那就应该沉下心来历练、沉淀和积累!

2014-06-24

JavaScript语言精粹

在网上下载的,有兴趣的可以看看。 ------------------------------------------------ 当你的才华还撑不起你的野心时,那你就应该静下心来学习;当你的能力还驾驭不了你的目标时,那就应该沉下心来历练、沉淀和积累!

2014-06-24

jdk-8u251-macosx/linux/windows 多版本下载

多版本JDK jdk-8u251-linux-x64.rpm jdk-8u251-linux-x64.tar.gz jdk-8u251-macosx-x64.dmg jdk-8u251-windows-i586.exe jdk-8u251-windows-x64.exe

2020-06-28

虚拟机上网环境设置.doc

虚拟机上网环境设置.doc

2020-06-12

《编译原理(第二版)》带书签.pdf

编译原理 第二版 带书签, 赵建华 译

2019-06-06

Flink基础教程.pdf

原版。高清,带页签。 作为新一代的开源流处理器,Flink是众多大数据处理框架中一颗冉冉升起的新星。它以同一种技术支持流处理和批处理,并能同时满足高吞吐、低延迟和容错的需求。本书由Flink项目核心成员执笔,系统阐释Flink的适用场景、设计理念、功能、用途和性能优势

2019-05-28

数据结构与算法分析 java语言描述(原书第3版)中文PDF+源码+课后习题源码

数据结构与算法分析 java语言描述(原书第3版)中文PDF+源码+课后习题源码

2019-05-08

深入理解计算机系统(原书第3版)PDF 计算机科学丛书 [美] 兰德尔 E.布莱恩特

前言   本书(简称CS:APP)的主要读者是计算机科学家、计算机工程师,以及那些想通过学习计算机系统的内在运作而能够写出更好程序的人。   我们的目的是解释所有计算机系统的本质概念,并向你展示这些概念是如何实实在在地影响应用程序的正确性、性能和实用性的。其他的系统类书籍都是从构建者的角度来写的,讲述如何实现硬件或系统软件,包括操作系统、编译器和网络接口。而本书是从程序员的角度来写的,讲述应用程序员如何能够利用系统知识来编写出更好的程序。当然,学习一个计算机系统应该做些什么,是学习如何构建一个计算机系统的很好的出发点,所以,对于希望继续学习系统软硬件实现的人来说,本书也是一本很有价值的介绍性读物。大多数系统书籍还倾向于重点关注系统的某一个方面,比如:硬件架构、操作系统、编译器或者网络。本书则以程序员的视角统一覆盖了上述所有方面的内容。   如果你研究和领会了这本书里的概念,你将开始成为极少数的“牛人”,这些“牛人”知道事情是如何运作的,也知道当事情出现故障时如何修复。你写的程序将能够更好地利用操作系统和系统软件提供的功能,对各种操作条件和运行时参数都能正确操作,运行起来更快,并能避免出现使程序容易受到网络攻击的缺陷。同时,你也要做好更深入探究的准备,研究像编译器、计算机体系结构、操作系统、嵌入式系统、网络互联和网络安全这样的高级题目。   读者应具备的背景知识   本书的重点是执行x86-64机器代码的系统。对英特尔及其竞争对手而言,x86-64是他们自1978年起,以8086微处理器为代表,不断进化的最新成果。按照英特尔微处理器产品线的命名规则,这类微处理器俗称为“x86”。随着半导体技术的演进,单芯片上集成了更多的晶体管,这些处理器的计算能力和内存容量有了很大的增长。在这个过程中,它们从处理16位字,发展到引入IA32处理器处理32位字,再到最近的x86-64处理64位字。   我们考虑的是这些机器如何在Linux操作系统上运行C语言程序。Linux是众多继承自最初由贝尔实验室开发的Unix的操作系统中的一种。这类操作系统的其他成员包括Solaris、FreeBSD和MacOS X。近年来,由于Posix和标准Unix规范的标准化努力,这些操作系统保持了高度兼容性。因此,本书内容几乎直接适用于这些“类Unix”操作系统。   文中包含大量已在Linux系统上编译和运行过的程序示例。我们假设你能访问一台这样的机器,并且能够登录,做一些诸如切换目录之类的简单操作。如果你的计算机运行的是Microsoft Windows系统,我们建议你选择安装一个虚拟机环境(例如VirtualBox或者VMWare),以便为一种操作系统(客户OS)编写的程序能在另一种系统(宿主OS)上运行。   我们还假设你对C和C++有一定的了解。如果你以前只有Java经验,那么你需要付出更多的努力来完成这种转换,不过我们也会帮助你。Java和C有相似的语法和控制语句。不过,有一些C语言的特性(特别是指针、显式的动态内存分配和格式化I/O)在Java中都是没有的。所幸的是,C是一个较小的语言,在Brian Kernighan和Dennis Ritchie经典的“K&R”文献中得到了清晰优美的描述\[61\]。无论你的编程背景如何,都应该考虑将K&R作为个人系统藏书的一部分。如果你只有使用解释性语言的经验,如Python、Ruby或Perl,那么在使用本书之前,需要花费一些时间来学习C。   本书的前几章揭示了C语言程序和它们相对应的机器语言程序之间的交互作用。机器语言示例都是用运行在x86-64处理器上的GNU GCC编译器生成的。我们不需要你以前有任何硬件、机器语言或是汇编语言编程的经验。   给C语言初学者  关于C编程语言的建议   为了帮助C语言编程背景薄弱(或全无背景)的读者,我们在书中加入了这样一些专门的注释来突出C中一些特别重要的特性。我们假设你熟悉C++或Java。

2019-03-08

Java虚拟机规范(Java SE 8版) 带书签

Java虚拟机规范(Java SE 8版) (Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译,是深度了解Java虚拟机和

2018-10-26

Hadoop权威指南:大数据的存储与分析(第4版)

Hadoop权威指南:大数据的存储与分析(第4版) 出版社: 清华大学出版社 PDF版本

2018-10-17

HBase应用架构PDF版本

HBase应用架构 [美] 吉恩-马克·斯帕加里(Jean-Marc Spaggiari) 著,陈敏敏 夏锐 陈其生 译

2018-09-21

张伯毅的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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