介绍配置相关的基础类及其继承关系。
 
参考链接:
 
 
1. 类图
 
配置相关基础类的类图如下:
 
其中:
a. 斜体格式的为抽象类;
b. 三角形箭头表示继承关系;
c. 菱形箭头表示组成关系;
d. public/private表示访问限制;
 
由图中可以看出:
a. View/Field为抽象类,不能实例化;
b. Parameter为抽象类,不能实例化;
c. TerminalView/ChainView为私有类,不能在config包外访问;
d. ChainParameters/EmptyParameters/PartialParameters/MapParameters为私有类,不能在config包外访问;
e. Config为公共类,也可以实例化。所以Config类为外部自定义配置主要使用的类。
 
 
2. 配置主要用于查找
 
配置是一组预定义的配置,没有动态的增删改,只有查找与使用。
 
3. Field为待查找对象
 
 
每一项配置是一个Field,包含三个方面:
a. Field对象为查找时使用的key;
b. Field对象中存储一个默认值;
c. 匹配查找key,返回一个配置值:
d. 或者查找不到,返回默认值
 
 
4. View为配置的视图
 
View为配置组的视图,通过View才能看到配置,进而进行查找使用。
 
举个例子:
假设有100条配置,而视图宽度为2条,那么通过视图每次只能看到2条配置。
若要查找完100条配置,则需要不停的向后移动视图,或者使用50个视图。
 
 
5. 从视图中查找
 
 
外部使用的从视图中查找的方法为:final def apply[T](pname: Field[T]): T = apply(pname, this)
如:
意为在当前View对象中找key所对应的配置项。site为配置存储的场所和地点:
 
find为视图内部查找逻辑的实现:
 
它是一个抽象方法,需要在子类中实现:
 
 
6. 链式视图:ChainView
 
ChainView把两个视图组合在一起,先从head视图中查找,而后在tail视图中查找。
 
 
7. 查找链的终点:TerminalView
 
TerminalView为查找的终点,说明不存在pname对应的配置项,直接返回默认值。
 
 

Rocket - config - View的更多相关文章

  1. Rocket - config - Parameters

    https://mp.weixin.qq.com/s/uLEr9gAFaMDIXa8S9xJVTw   介绍配置类Parameters及其伴生对象的实现.   参考链接: https://docs.q ...

  2. Rocket - config - implicit Parameters

    https://mp.weixin.qq.com/s/OH_Z1gdSUpfgM-tjx0OlrA   追溯配置信息的源头.   0. HasRocketCoreParameters   ​​ Has ...

  3. Rocket - config - DefaultConfig

    https://mp.weixin.qq.com/s/zWW00D0fb8h7_TotGD9YoQ   介绍DefaultConfig类的组成.     1. DefaultConfig   Defa ...

  4. Rocket - config - Keys & Params

    https://mp.weixin.qq.com/s/Y42EWrO7IoHRD_yHD4iRLA   介绍配置项.配置值以及他们的使用方式.   参考链接: https://docs.qq.com/ ...

  5. Rocket - config - Configs

    https://mp.weixin.qq.com/s/z2gUYuYQAHQCa_5HZcBszw   介绍各个配置项的组织方式.   参考链接: https://docs.qq.com/sheet/ ...

  6. [k8s]kubectl windows配置(kubernetic) && kubectl config set-context使用Kubernetic

    参考: https://feisky.gitbooks.io/kubernetes/components/kubectl.html https://kubernetes.io/docs/tasks/t ...

  7. osg osgViewer::View::setUpViewInWindow()

    void ViewerBase::frame(double simulationTime) { if (_done) return; // OSG_NOTICE<<std::endl< ...

  8. create view and switch view

    pageView扩展backbone cAbstractApp定义view加载.切换.回退.跳转-webApp/cWebViewApp/hybirdApp为其子类 1.cWebApp扩展了父类的bin ...

  9. 白话kubernetes的十万个为什么(持续更新中...) - kubernetes

    Kubernetes简称? 答:k8s或kube. Kubernetes是什么? 答:由Google开发的一个强大的平台,可以在集群环境中管理容器化应用程序.本质上是一种特殊的数据库,里面存储的是能够 ...

随机推荐

  1. Proteus传感器+气体浓度检测的报警方式控制仿真

    Proteus传感器+气体浓度检测的报警方式控制仿真 目录 Proteus传感器+气体浓度检测的报警方式控制仿真 1 实验意义理解 2 主要实验器件 3 实验参考电路 4 实验中的问题思考 4.1 实 ...

  2. VA01销售订单批导问题解决

    1业务场景 事务代码:VA01创建销售订单,VA02修改销售订单 可以通过BAPI_SALESORDER_CREATEFROMDAT2批量创建 可以通过BAPI_SALESORDER_CHANGE批量 ...

  3. uCOS2014.1.7

    主要关于任务堆栈: 在计算机中一般设置一个专用的地址寄存器用来存放堆栈的栈顶地址,这个寄存器称为堆栈指针(SP). 任务堆栈有两种,一种是地址向下增长的,PC就是采用这样的堆栈: 另一种是地址向上增长 ...

  4. 关于tez-ui的"All DAGs"和"Hive Queries"页面信息为空的问题解决过程

    近段时间发现公司的HDP大数据平台的tez-ui页面不能用了,页面显示为空,导致通过hive提交的sql不能方便地查找到Yarn上对应的applicationId,只能通过beeline的屏幕输出信息 ...

  5. 题解 洛谷P2959 【[USACO09OCT]悠闲漫步The Leisurely Stroll】

    原题:洛谷P2959 不得不说这道题的图有点吓人,但实际上很多都没有用 通过题上说的“三岔路口”(对于每一个节点有三条连接,其中一条连接父节点,另外两条连接子节点)和数据,可以那些乱七八糟的路和牧场看 ...

  6. c#word文档输出

    在工作中有时需要把内容用word文档展示出来 在写代码前要引用word的dll Microsoft.Office.Interop.Word“ sing System; using System.Col ...

  7. hadoop与spark的处理技巧(一)Top N处理技巧

    1.MR的topN处理方案,假设所有输入Key都唯一 2.MR的topN处理方案,假设输入Key不唯一 3.spark的topN处理方案,假设所有输入Key都唯一,不使用top()和takeOrder ...

  8. 我找到了Dubbo源码的BUG,同事纷纷说我有点东西

    点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...

  9. 「雕爷学编程」Arduino动手做(29)——DS1302时钟模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  10. JS数组的常用方法

    arr.join(str) 把arr使用str拼接成字符串 str拼接符 返回:String arr.reverse() 翻转数组 翻转操作的是原数组 返回:Array数组 arr.concat(ar ...