首页 > 试题广场 >

【单选】某应用通过双buffer动态加载数据配置文件,流程如

[不定项选择题]
【单选】某应用通过双buffer动态加载数据配置文件,流程如下
function reload(){
    if(检查文件存在){
        if(距离上次配置更新时间 < 阈值){
            log(); 忽略更新
            return;
        }
        if(文件不为空 && 文件内容发生改变){
            ret = new_buffer.loadconfig(); // 分配新buffer内存并加载配置
            if(ret != SUCCESS){
                log();//打印报错日志
            }
        }
        switch(old_buffer, new_buffer) // 切换双buffer
        clear(old_buffer) // 释放旧buffer内存
    }
}
以下可能出现的情况是:
  • 配置文件频繁发生更新,导致cpu负载过高
  • 反复reaload后应用发生内存泄漏
  • 配置文件格式错误,new_buffer加载出错,服务配置失效
  • 由于误操作,配置文件被删除,服务配置失效
明明是单选。还得写多选.....
发表于 2021-08-31 14:49:45 回复(1)
if(ret != SUCCESS){
log();//打印报错日志
}
 在分配新buffer内存并加载配置后,失败情况下未退出,程序继续执行,导致配置文件有误
发表于 2020-09-29 00:27:08 回复(0)
这里ret = new_buffer.loadconfig(); // 分配新buffer内存并加载配置
根据注释ret应该是分配新buffer内存并加载配置是否成功的标志
再根据 if(ret != SUCCESS)就知道ret确实是个标志位,且这句话是用来处理不成功的情况,而它只有log()输出日志,并没有对错误进行处理。
所以C选项完美符合
发表于 2021-11-01 05:52:27 回复(0)
没怎么看出来
发表于 2023-11-11 13:37:40 回复(0)
单选题和多选题总应当标清楚吧。。。
发表于 2023-07-19 19:08:33 回复(0)
***题目  单选标多选
发表于 2023-05-29 16:42:11 回复(0)
大家看看, a 如果配置拉取失败,new buff里面没有正确的内容,会内存泄露的吧? d 误操作导致old buffer 加载了 new 也就是错误的配置,就会出错呀
发表于 2022-07-14 01:14:38 回复(0)
<p>考眼力呀</p>
发表于 2020-10-01 16:40:23 回复(0)

a记载配置占内存不占cpu b已经关闭了closed内存 d对非空文件有判断

发表于 2018-09-23 20:01:45 回复(0)