| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【软件工程实践】Pig项目12-Data目录源码分析-其他元组2 -> 正文阅读 |
|
[C++知识库]【软件工程实践】Pig项目12-Data目录源码分析-其他元组2 |
2021SC@SDUSC? ?上篇我们讲解了AmendableTuple,本篇继续讲解其他元组 其他元组AppendableSahemaTupleApendableSachemaTuples是一个抽象类,其UML如下 ?继承关系 public abstract class AppendableSchemaTuple<T extends AppendableSchemaTuple<T>> extends SchemaTuple<T> ?继承自SchemaTuple这个也没有接触过,并且该类也没有任何注释,也没有测试函数,由于是抽象类甚至没有构造函数,于是只能大致看一下public的方法 @Override public SchemaTuple<T> set(List<Object> l) throws ExecException { public void set(int fieldNum, Object val) throws ExecException { set函数将 ObjectList里的数据加入到了Tuple中 接下来看看它的父类 SchemaTuple继承关系 public abstract class SchemaTuple<T extends SchemaTuple<T>> extends AbstractTuple implements TypeAwareTuple {? UML 大小很大,只能给出部分了 一些注释 /** ?这个类很有意思,是一个快速代码生成器,推测是Pig Latin实现的组成部分,它的成员方法有很大部分是用于实现代码生成的,说实话已经超出了数据结构分析的范围,而是在探讨系统实现了,并且有部分是抽象方法,例如刚才ApendableSachemaTuple实现的方法 为了进一步理解,我们直接看它的父类TypeAwareTuple,是一个接口,代码如下 public interface TypeAwareTuple extends Tuple { 内容就是set、get了一堆数据类型 BinSedesTuple一些注释 /** 继承关系(终于不是抽象类了) public class BinSedesTuple extends DefaultTuple? 构造函数很简单粗暴,全部super() BinSedesTuple() { 唯一和父类有区别的地方就是下面这个结构了 private static final InterSedes sedes = InterSedesFactory.getInterSedesInstance(); public static Class<? extends TupleRawComparator> getComparatorClass() { ?可以理解为就是普通tuple+interSede 最后给出UML NonWritableTuple一些注释? /** ?* A singleton Tuple type which is not picked up for writing by PigRecordWriter ?* 未被PigRecordWriter选取用于写入的单例元组类型 ?*/ 继承关系??? ?public class NonWritableTuple extends AbstractTuple { 值得一提的是DefaultTuple也继承于AbstractTuple? UML图 构造函数直接是空的!(真 未写入的Tuple)显然这是个处理过程中间用的Tuple,用完就丢的那种 TargetedTuple?一些注释 /** 继承关系 public class TargetedTuple extends AbstractTuple UML ?从描述来看,此Tuple有一个存储运算符的数据结构,即tagetOps,推测是类似计算机计算算术的时候采用的方法,把数字和运算符放进一个栈结构中,然后一个个取出来处理 TimestampedTuple?继承关系 ?public class TimestampedTuple extends DefaultTuple { UML图? 有两个重要的成员timestamp(时间戳)、heartbeat?,由于没有注释不知道具体是做什么用的 ?protected double timestamp = 0;????? // 这个元组的时间戳 构造函数 ?public TimestampedTuple(int numFields) {
Tuple作为Pig中最小的数据结构,其变种并没有很多可讲的内容,因为大部分只是在原有基础上添加了少量的内容,想要理解这些Tuple具体的作用,必须放到实际的应用场景当中,因此本篇讲得都比较浅,因为讲多了没用。 本篇的内容就到这里,下一篇将讲一讲几个数据结构的工厂。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 6:07:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |