摘要: 在对MongoDB使用的过程中,总结了几种常用的备份、恢复、同步的方式。 1、冷拷贝 这种方式对数据同步的完整性保持的最好,同时也非常方便,但是会影响服务器的使用。 首先关闭源数据库服务,之后使用远程复制命令将数据文件全量拷贝到目标服务器的数据目录下,再启动目标服务器。 如果不关闭源数据库,将会导致 阅读全文
posted @ 2017-03-12 22:52 ruizhang3 阅读(13902) 评论(1) 推荐(0) 编辑
摘要: 关键字 defer ⽤用于注册延迟调⽤用。这些调⽤用直到 ret 前才被执⾏行,通常⽤用于释放资源或错误处理。func test() error { f, err := os.Create("test.txt") if err != nil { return err } defer f.Close( 阅读全文
posted @ 2017-03-06 09:26 ruizhang3 阅读(1136) 评论(1) 推荐(0) 编辑
摘要: 没有结构化异常,使⽤用 panic 抛出错误,recover 捕获错误。func test() { defer func() { if err := recover(); err != nil { println(err.(string)) // 将 interface{} 转型为具体类型。 } } 阅读全文
posted @ 2017-02-27 09:43 ruizhang3 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 在对程序进行压力测试时发现,程序有概率会在boost::asio::detail::epoll_reactor::start_op上面奔溃 尤其是在并发数较高的情况下。 查看boost中epoll_reactor.ipp中的源码,对奔溃处的逻辑进行分析后发现其基本逻辑如下: 对于每个socket链接 阅读全文
posted @ 2017-02-20 09:52 ruizhang3 阅读(1993) 评论(0) 推荐(1) 编辑
摘要: 在进行代码评审时,得知资源处理程序运行时间很长,遂考虑对其进行性能分析 资源处理程序分为,读取处理、排序、输出三部分,在300万数量级的输入时,大约需要50分钟。对三部分分别计时,先使用10万输入数据进行测试,运行总时间为75秒,其中读取处理耗时65秒。 接下来计划对读取处理过程中的每一行代码进行时 阅读全文
posted @ 2017-02-12 21:13 ruizhang3 阅读(578) 评论(0) 推荐(0) 编辑