配置文件只是一个普通的ASCII文本,本质上就是java.util.Properties,以#开头的行代表注释。
补充一下关于java.util.Properties
1. properties文件是一个文本文件
2. properties文件的语法有两种,一种是注释,一种属性配置。 注释:前面加上#号。属性配置:以“键=值”的方式书写一个属性的配置信息。
3. properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“\”表示。
4. properties的属性配置键值前后的空格在解析时候会被忽略。
5. properties文件可以只有键而没有值。也可以仅有键和等号而没有值,但无论如何一个属性配置不能没有键。
Properties类属于集合容器的家族,在使用前应该创建一个Properties的容器,实际上就是创建一个默认不带参数的Properties对象。以后通过别的方式给里面添加“键值对”。
例如在配置文件中的这一行代码:
random.seed 1234567890
random.seed就是一个键,它的值为1234567890。
仿真器在初始化时,在需要初始化随机数产生器时,就会在配置文件中搜索random.seed并读取它的值,用它的值初始化随机数生成器。
protocol.avg example.aggregation.AverageFunction
当初始化节点时,需要给节点装入协议实例,具体去装入哪个类的实例,就必须在配置文件中查找。
例如当节点有一个名字叫avg的协议时,配置文件就查找protocol.avg键的值,就能找到实现了这个协议的类。
配置文件就是由用户设置的参数以及用户自定义的类的路径的集合。
之前提到的仿真实习报告里面有一个具体的实例,是典型的基于信任模型的P2P协议的思想以及运行流程。
其中详细的配置文件如下:
#设置伪随机数生成器的种子
random.seed 1234567890
#设置循环次数为30次
simulation.cycles 30
#在每轮循环后对网络节点进行洗牌的控制组件
control.shf Shuffle
#设置节点个数为5000
network.size 5000
#节点中的Linkable协议设为IdleProtocol
protocol.lnk IdleProtocol
#节点中的第二层协议设为pdSim.TrustManage并设置相关参数
protocol.trust pdSim.TrustManage
protocol.trust.linkable lnk
init.con.badPeerPercentage 0.1
#对节点进行连线以构造拓扑的初始化组件WireKOut及相关参数的设定
init.rnd WireKOut
init.rnd.protocol lnk
init.rnd.k 20
#设置负责填充节点资源向量的pdSim.InitContent为初始化组件
init.con pdSim.InitContent
init.con.protocol trust
#设置初始化组件的调度顺序,先调度init.rnd再调度init.con
include.init rnd con
#设置一个在30轮循环过后观察数据的控制组件
control.obs pdSim.Observer
control.obs.protocol trust
从Linkable协议设为IdleProrocol后面开始就已经阵亡了,看不懂了TvT。
后面貌似有详细的解释,我先放在这里吧。
总是对配置文件有了一点认识。
以上。