配置文件是一个软件程序的基础部分,是用户可以改变的程序运行的方法。配置文件一般是在程序启动的时候读取,并初始化程序,当然写的好的配置模块也支持在程序运行时重新加载配置文件,并做相关的变化。
良好的配置模块应该具体以下功能
1:配置文件可以按块配置,这样就允许不同的块里有相关的配置(程序可能依赖很多外部组件,而外部组件一般都要配置ip)
如:
[MONGO]
db=test1
table=test_table
serverip=192.168.1.1
serverport=30000
slave_serverip=192.168.1.1
slave_port=30000
[MYSQL]
db=test1
serverip=192.168.1.1
user=test
password=123456
port=3306
2:读取配置至内存保存
以链表的方式保存块,键,值,并按顺序串联起来:
当需要查到某块,键对应的值时,先遍历至到相应的快,再遍历至键处,下一个节点即为值
Node{
int type;//0为默认值,1为键,2为值,3为块
int block_id;
Node* next;
}
add_value(string str, int block_id,int type);
getvalue(string key,string block);
3:当单机有多个实例时,还有区别公有配置和私有配置
初始化配置链表的时候,把两个配置文件都存入配置链表即可
4:以键值的方式配置,值的类型支持int,string,和list(以表示符号分割,如:names=lily,john)
1):所有键值存入链表的时候都是string,支持int时候只要做下atoi转换即可
2):值类型为list时候,读取值的时候增加个index下标即可:getvalue(string key,string block,int value_index);
5:不重启程序即可重新加载配置文件(此处应判断配置文件是否发生改变)
1):通过stat可以储存文件状态(包括文件修改时间,文件大小等),比对新旧配置文件的stat即可判断配置文件是否发生改变
2):向主进程发送信号量中断主进程,主进程重新加载配置,并完成相关组件连接或状态的重置,参考nginx做法也类似
6:自动忽略空格,空行,注释
1):注释:#号(含)之后的的字符串删除
2):空行:大于2个字符的行才是有效配置行
3):空格:直接替换空格为空
7:处理配置异常
1):没有=号分隔符的配置行无效
2):小于3个字符的配置行无效
3):=号分隔符之后无字符则配置行无效
良好的配置模块应该具体以下功能
1:配置文件可以按块配置,这样就允许不同的块里有相关的配置(程序可能依赖很多外部组件,而外部组件一般都要配置ip)
如:
[MONGO]
db=test1
table=test_table
serverip=192.168.1.1
serverport=30000
slave_serverip=192.168.1.1
slave_port=30000
[MYSQL]
db=test1
serverip=192.168.1.1
user=test
password=123456
port=3306
2:读取配置至内存保存
以链表的方式保存块,键,值,并按顺序串联起来:
当需要查到某块,键对应的值时,先遍历至到相应的快,再遍历至键处,下一个节点即为值
Node{
int type;//0为默认值,1为键,2为值,3为块
int block_id;
Node* next;
}
add_value(string str, int block_id,int type);
getvalue(string key,string block);
3:当单机有多个实例时,还有区别公有配置和私有配置
初始化配置链表的时候,把两个配置文件都存入配置链表即可
4:以键值的方式配置,值的类型支持int,string,和list(以表示符号分割,如:names=lily,john)
1):所有键值存入链表的时候都是string,支持int时候只要做下atoi转换即可
2):值类型为list时候,读取值的时候增加个index下标即可:getvalue(string key,string block,int value_index);
5:不重启程序即可重新加载配置文件(此处应判断配置文件是否发生改变)
1):通过stat可以储存文件状态(包括文件修改时间,文件大小等),比对新旧配置文件的stat即可判断配置文件是否发生改变
2):向主进程发送信号量中断主进程,主进程重新加载配置,并完成相关组件连接或状态的重置,参考nginx做法也类似
6:自动忽略空格,空行,注释
1):注释:#号(含)之后的的字符串删除
2):空行:大于2个字符的行才是有效配置行
3):空格:直接替换空格为空
7:处理配置异常
1):没有=号分隔符的配置行无效
2):小于3个字符的配置行无效
3):=号分隔符之后无字符则配置行无效