自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张伯毅的专栏

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

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

原创 Flink 1.12.2 源码浅析 : 目录汇总 [持续更新中....]

Flink 1.12.2 源码浅析 : 环境准备Flink 1.12.2 源码浅析 : 本地DEBUG环境准备Flink 1.12.2 源码浅析 : 相关启动脚本Flink 1.12.2 源码浅析 : yarn-per-job模式解析 [一]Flink 1.12.2 源码浅析 : yarn-per-job模式解析 [二]Flink 1.12.2 源码浅析 : yarn-per-job模式解析 [三]Flink 1.12.2 源码浅析 : yarn-per-job模式解析 [四]Flink 1.

2021-04-16 01:26:54 709 1

原创 Kerberos 安装&使用

.一 .前言二 .搭建Kerberos Server2.1.使用 yum 安装Kerberos Server的套件2.2. 配置 /etc/krb5.conf2.3. 配置 /var/kerberos/krb5kdc/kdc.conf2.4. 配置 /var/kerberos/krb5kdc/kadm5.acl2.5. 初始化Kerberos的数据库2.6. xxx三 .xxxxxx3.1. xxx3.2. xxx3.3. xxx3.4. xxx3.5. xxx3.6. xxx四 .xxxxxx4.1. x

2021-03-27 01:03:42 665 2

原创 Flink 从1.7 到1.12版本升级汇总

-------------------------一 .前言二 .Flink 1.7 版本2.1. Flink中的Scala 2.12支持2.2. 状态变化2.3. Exactly-once语义的S3 StreamingFileSink2.4. Streaming SQL中支持MATCH_RECOGNIZE2.5. Streaming SQL中的 Temporal Tables 和 Temporal Joins2.6. 版本化REST API2.7. Kafka 2.0 Connector2.8.

2021-02-18 19:51:41 2065

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

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

原创 为什么HDFS文件块(block)大小设定为128M解析.

Table of Contents一.前言二. block 大小设置原则:最小化寻址开销,减少网络传输.三、为什么HDFS中块(block)不能设置太大,也不能设置太小?四、 HDFS中块(block)的大小为什么设置为128M?一.前言HDFS中存储数据是以块(block,这只是一个逻辑概念)的形式存储在DataNode,block大小可通过设置HADOOP_HOME/etc/hadoop/hdfs-site.xml中dfs.blocksize实现(设置时先stop集群,修改.

2020-10-11 23:42:31 7723 7

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

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

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

2020-08-24 21:09:07 9754

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

原创 基准测试神器 - JMH [ Java Microbenchmark Harness ]

一. 简介JMH,全称 Java Microbenchmark Harness (微基准测试框架),是专门用于Java代码微基准测试的一套测试工具API,是由 OpenJDK/Oracle官方发布的工具。其精度可以达到毫秒级.可以执行一个函数需要多少时间,或者一个算法有多种不同实现等情况下,选择一个性能最好的那个.Java的基准测试需要注意的几个点:测试前需要预热...

2020-05-06 15:24:42 2934 3

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

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

2020-04-22 15:51:43 16475

原创 蹭1024徽章专用帖

蹭徽章专用贴

2021-10-24 00:49:24 10

原创 K8S 之 Pod定义梳理

一. 前言Pod是Kubernetes中能够创建和部署的最小单元,是Kubernetes集群中的一个应用实例,总是部署在同一个节点Node上。Pod中包含了一个或多个容器,还包括了存储、网络等各个容器共享的资源。Pod支持多种容器环境,Docker则是最流行的容器环境。二. 配置信息Pod的配置信息中有几个重要部分,apiVersion、kind、metadata、spec以及status。其中apiVersion和kind是比较固定的,status是运行时的状态,所以最重要的就是metadat

2021-09-25 01:37:49 41

原创 GIT配置用户名&邮箱

一. 全局配置设置全局用户名 :git config --global user.name “FIRST_NAME LAST_NAME”是指全局邮箱:git config --global user.email “MY_NAME@example.com”二. 私有项目配置设置项目用户名:git config user.name “FIRST_NAME LAST_NAME”设置项目邮箱:git config user.email “MY_NAME@example.com”验

2021-08-21 19:47:34 47

原创 kubernetes 集群状态异常 [ connect: connection refused ]

获取kubectl状态有报错信息: Get “http://127.0.0.1:10251/healthz”: dial tcp 127.0.0.1:10251: connect: connection出现这种情况,是/etc/kubernetes/manifests下的kube-controller-manager.yaml和kube-scheduler.yaml设置的默认端口是0,在文件中注释掉就可以了现象[root@master01 manifests]# kubectl get csW

2021-08-21 19:46:55 178

原创 CentOS7.x 安装make 指令

提示错误:make: command not foundmake是gcc的编译器,一定要安装 1、安装:yum -y install gcc automake autoconf libtool make2、安装g++:yum install gcc gcc-c++

2021-08-20 21:45:57 52

原创 kerberos 长连接验证

一. 前言1.1. 背景使用zookeeper进行服务的主备切换, 由于kerberos的ticket存在时间周期,为避免因为kerberos认证对业务造成不可控影响,故针对kerberos长连接的情况,开始进行验证.1.2. 概念Kerberos ticket 有两种生命周期,ticket timelife (票据生命周期) 和 renewable lifetime (可再生周期)。当 ticket lifetime 结束时,该 ticket 将不再可用。如果 renewable life

2021-07-25 06:29:17 257 2

原创 IDEA Download Sources报错java.lang.RuntimeException: Cannot reconnect.

IDEA 在下载源码的时候报错, 截图如下java.lang.RuntimeException: Cannot reconnect.解决方式:

2021-07-19 21:49:36 154 1

原创 Spark Shuffle机制-源码实现

.一 .前言二 .Shuffle Write框架设计和实现2.1. BypassMergeSortShuffleWriter2.2. UnsafeShuffleWriter2.3. SortShuffleWriter三 . 输出文件验证3.1. 通用验证代码3.1.1 验证代码3.1.2 断点入口 : org.apache.spark.scheduler.ShuffleMapTask # runTask3.2. SortShuffleWriter3.2.1 入口, 获取SortShuffleManager3

2021-07-19 21:49:02 203 6

翻译 Virtualbox 使用 Bridged Adapter(网桥模式)连接网络 (Windows操作系统)

一 . 前言网桥模式,你可以这样理解:它是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。网桥模式下的虚拟机,你把它认为是真实计算机就行了。虚拟机与主机的关系:可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。虚拟机于网络中其他主机的关系:可以相互访问,同样因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各

2021-07-19 21:48:07 102

原创 Zookeeper 开启kerberos配置

一. 前言这两天需要搞一个开启kerberos的zookeeper环境用于测试. 顺手记录一下.二. 安装步骤2.1 前置环境准备JDK : jdk1.8服务器 : CentOS 7.5软件版本: zookeeper : 2.4.8前置环境: kerberos 安装 参考文档2.2 安装zookeeperzookeeper安装我就不细说了, 先贴一个配置文件示例 , 后续的参数配置都是基于这个zoo.cfg配置文件的基础上进行修改.zoo.cfg 配置# The numb

2021-07-19 21:46:43 206 1

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

111

2021-07-04 16:02:48 109

翻译 JVM 内存管理的不足

JVM 内存管理的不足:Java 对象存储密度低 : Java 的对象在内存中存储包含 3 个主要部分:对象头、实例数据、对齐填充部分。例如, 一个只包含 boolean 属性的对象占 16byte:对象头占 8byte,boolean 属性占 1byte, 为了对齐达到 8 的倍数额外占 7byte。而实际上只需要一个 bit(1/8字节)就够了。Full GC 会极大地影响性能 : 尤其是为了处理更大数据而开了很大内存空间的 JVM来说, GC 会达到秒级甚至分钟级。OOM 问题影响稳定性 :

2021-07-04 15:55:23 54

原创 并发编程——原子性,可见性和有序性

1、原子性即一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。原子性就像数据库里面的事务一样,他们是一个团队,同生共死。2、可见性可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。3、有序性即程序执行的顺序按照代码的先后顺序执行。...

2021-07-04 15:53:50 41

翻译 SparkShuffle机制 - ⽀持⾼效聚合和排序的数据结构

.一 .前言二 .AppendOnlyMap的原理三 .ExternalAppendOnlyMap3.1. 如何获知当前AppendOnlyMap的⼤⼩?因为AppendOnlyMap中不断添加和更新record,其⼤⼩是动态变化的,什么时候会超过内存界限是难以确定的。3.2. 如何设计spill的⽂件结构,使得可以⽀持⾼效的全局聚合?3.3. 怎样进⾏全局聚合?四 .PartitionedAppendOnlyMap五 .PartitionedPairBuffer六 . 与Hadoop MapReduce的

2021-07-04 15:52:45 82

翻译 SparkShuffle机制-概念

.一 .前言二 .Shuffle的设计思想2.1. 解决数据分区问题2.2. 解决数据聚合问题2.3. 解决map()端combine问题2.4. 解决sort问题2.5. 解决内存不⾜问题2.6. Spark中Shuffle框架的设计三 .Shuffle Write框架设计和实现3.1. 不需要map()端聚合(combine)和排序3.2. 不需要map()端聚合(combine),但需要排序。3.3. 需要map()端聚合(combine),需要或者不需要按Key进⾏排序四 .Shuffle Rea

2021-07-04 15:52:15 85

翻译 Innodb中的事务隔离级别和锁的关系

一 .前言数据库为了维护事务的性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。二 .概念2.1. 数据库事务的四大特性1、原子性:事务包含的所有数据库操作要么全部成功,要不全部失败回滚2、一致性:一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,

2021-06-27 20:40:44 110

原创 Java 哪些对象才能作为gc root

.一 .前言二 .总结三 .详情3.1. 所有已加载的类(ClassLoaderDataGraph::roots_cld_do)3.2. 所有Java线程当前栈帧的引用和虚拟机内部线程(Threads::possibly_parallel_oops_do)3.3. JVM内部使用的引用(Universe::oops_do和SystemDictionary::oops_do)3.4. JNI handles(JNIHandles::oops_do)3.5. 所有synchronized锁住的对象引用(Obje

2021-06-25 19:58:00 107

原创 HIVE 窗口函数梳理

.一 .前言二 .前期准备2.1. 建表语句2.2. 数据2.3. 加载数据2.4. 验证三 .操作[一]3.1. 先统计第一次登陆的 时间 和 第一次登陆的IP3.2. 在统计最后一次登陆的时间和 第一次登陆的IP3.3. 对前两步的数据进行整理3.4. 去重/统计结果3.4.1 distinct 去重 [数据量少时推荐使用.]3.4.1 group by 去重 [数据量多时推荐使用.]四 .操作[二]4.1. 先将数据排序, 增加序列号rk4.2. 增加列 ,上一次登录的时间4.3. 增加列 ,上一次登

2021-06-17 21:12:48 129 2

原创 Kafka 2.7.x 源码浅析 : kafka2.7.2 编译

一. 前言编译kafka2.7.2版本, 目前最新版本为2.8.x , 但是因为2.8.x去掉了zk,稳定性不确定, 所以暂时以该版本进行研究.二. 环境准备2.1. 下载代码GIT LAB方式: git clone https://github.com/apache/kafka.git -b 2.72.2. 安装环境Scala 2.11.8 +JDK1.8 +需要安装 gradlew [mac : 执行 brew install gradle ]三 .安装3.

2021-06-01 21:42:31 219 2

原创 Kafka 版本演进概览[ 截止2.8.x版本 ]

一. 前言主要梳理kafka版本,为后续开始研究kafka做准备.二. Kafka版本规则在Kafka 1.0.0之前基本遵循4位版本号,比如Kafka 0.8.2.0、Kafka 0.11.0.3等。而从1.0.0开始Kafka就告别了4位版本号,遵循 Major.Minor.Patch 的版本规则,其中Major表示大版本,通常是一些重大改变,因此彼此之间功能可能会不兼容;Minor表示小版本,通常是一些新功能的增加;最后Patch表示修订版,主要为修复一些重点Bug而发布的版本。比如Kafka

2021-06-01 20:16:26 307

原创 mac 环境手动安装 gradle6.3

一. 前言最近要安装gradle编译kafka代码, 但是发现 brew install gradle 无法正常安装, 所以手动安装.二. 操作2.1. xxxgradle地址: https://gradle.org/releases/下载自己需要的版本, 这里我用的是 6.3版本…现在连接 : https://downloads.gradle-dn.com/distributions/gradle-6.3-bin.zip2.2. 配置解压直接将下载的gradle-6.3-bin

2021-06-01 20:13:59 186

翻译 Spark Executor内存图解

.一 .前言二 .拆解2.1. 总体2.2. Executor Memory 划分2.3. 动态占用机制2.4. 任务内存管理(Task Memory Manager)三 . 一个示例3.1. 只用了堆内内存3.2.用了堆内和堆外内存四 .Executor内存参数调优4.1. Executor JVM Used Memory Heuristic4.2. Executor Unified Memory Heuristic4.3. Executor OOM类错误 (错误代码 137、143等)4.4. Exec

2021-05-29 19:28:06 70

原创 Flink 1.12.2 源码浅析 : 网络参数大全

Flink1.12.2 网络通讯的配置参数&默认值 都是在NettyShuffleEnvironmentOptions类里面.内容如下(忽略已过期的参数.) :Network General Options名称描述默认值taskmanager.data.porttaskmanager通讯端口0taskmanager.data.bind-port任务管理器为进行数据交换而侦听的本地网络端口。与taskmanager.data.port 互斥taskm

2021-05-26 19:55:55 177

翻译 Hive调优集锦

.一 .前言1.1. 概念1.2. 架构1.3. 调优概述1.1. 调优须知二 . Hive建表设计层面优化2.1. 利用分区表优化2.2. 利用分桶表优化2.3. 选择合适的文件存储格式2.4. 选择合适的压缩格式三 .HQL语法和运行参数层面优化3.1. 查看Hive执行计划3.2. 列裁剪3.3. 谓词下推3.4. 分区裁剪3.5. 合并小文件3.6. 合理设置MapTask并行度3.7. 合理设置ReduceTask并行度3.8. Join优化3.9. 启用 MapJoin3.10. Join数据

2021-05-26 17:23:36 67

原创 Flink 1.12.2 源码浅析 : Task数据输入

在 Task 中,InputGate 是对输入的封装,InputGate 是和 JobGraph 中 JobEdge 一一对应的。也就是说,InputGate 实际上对应的是该 Task 依赖的上游算子(包含多个并行子任务),每个 InputGate 消费了一个或多个 ResultPartition。InputGate 由 InputChannel 构成,InputChannel 和 ExecutionGraph 中的 ExecutionEdge 一一对应;也就是说, InputChannel 和 Re

2021-05-24 00:34:54 247

原创 Flink 1.12.2 源码浅析 :Task数据输出

.一 .前言二 .几个基本概念2.1. IntermediateDataset2.2. IntermediateResult 和 IntermediateResultpartition2.3. ResultPartition 和 ResultSubpartition2.4. InputGate 和 InputChannel三 .相关Class梳理3.1. ResultPartitionWriter3.2. ResultPartition3.2.1. 属性相关3.2.2. 构造方法3.2.3. 方法相关3.3

2021-05-20 00:03:57 243

原创 Java中布尔类型操作符[ ` &= ` , ` |= ` , 与 ` ^= ` ]

一. 结论今天刷Flink代码的时候, 发现操作符 |= , 这个是什么鬼, 做了这么多年Java瞬间觉得好丢人…总结:跟正常的 && , || 操作差不多,输出的结果都是boolean类型.a操作符b结果true&=truetruetrue&=falsefalsefalse&=truefalsefalse&=falsefalsetrue|=truetrue

2021-05-17 23:46:26 107

原创 Subject.doAs 构建 Kerberos 线程级别认证.

import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.auth.AuthSchemeProvider;import org.apache.http.auth.AuthScope;import org.apache.http.auth.Credentials;import org.apache.http.client.HttpClient;import org....

2021-05-17 20:32:26 169

原创 [JVM]了断局: 堆外内存无法 [ -XX:MaxDirectMemorySize ] 限制

一. 前言今天看到一句话 , 有点懵, 所以验证一下.使用sun.misc.Unsafe的allocateMemory方法分配堆外内存。不受-XX:MaxDirectMemorySize这个JVM参数的限制二. 结论上面的结论有点不完善:如果通过反射的方式拿到Unsafe的实例,然后用Unsafe的allocateMemory方法分配堆外内存. 确实不受-XX:MaxDirectMemorySize这个JVM参数的限制 . 所以限制的内存大小为操作系统的内存.如果使用Java自带的

2021-05-12 21:42:52 430

Spark权威指南(Spark2)

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

2018-12-20

HBase应用架构PDF版本

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

2018-09-21

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

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

2018-10-26

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

JavaScript语言精粹

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

2014-06-24

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

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

2019-05-08

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

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

2019-06-06

深入理解计算机系统(原书第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

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

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

2018-10-17

Flink基础教程.pdf

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

2019-05-28

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

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

2014-06-24

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

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

2014-06-24

Thinking in UML(2 edition)

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

2014-06-24

张伯毅的留言板

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

空空如也

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

TA关注的人 TA的粉丝

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