c/c++的不定参数
c/c++可以通过va_arg等宏实现不定参数。一个例子如下(c++):
void ar_cnt(int cnt,...);
int main(int argc, char* argv[])
{
ar_cnt(4,1,2,3,4);
return 0;
}
void ar_cnt(int cnt,...)
{
int arg_cnt = cnt;
va_list arg_ptr;
va_start(arg_ptr, cnt);
for(int i=0; i < cnt;i++)
{
int value=va_arg(arg_ptr,int);
printf("posation %d=%d\...
java/c++变量作用域的一点小区别
偶然遇到一个问题,java里面这么写是有问题的
int x = 1;
{
int x = 2;
}
作为一个写了多年C++的人,不能忍啊。java子域里的变量看样子不会覆盖父域。但是这样是没问题的,可见子域的生命周期还是局限于子域里面。
{
int x = 2;
}
int x = 1;
C++里面这样是没问题的
int x = 1 ;
{
int x = 2;
}
相对于脚本语言,这种限制似乎就宽多了。这样都可以。
for i in range(1,10):
pass
print i
Ich war noch niemals in New York
</embed>
我从来没有去过纽约
从没有到过夏威夷
从未穿过牛仔衣淋着旧金山的雨
我从来没有去过纽约
我要感受那远方的空气
我想要挣脱过去释放我自己
命名空间和友元冲突
今天遇到一个问题,需要跨namespace定义友元,这种情况比较常见的是测试类需要访问源码类,gtest据说有个FRIEND_TEST宏,以前用过好像有问题。这里我们直接用友元:
namespace oceanbase
{
namespace election
{
class ObElectionServer : public ObSingleServer
{
friend class ObElectionTester;
...
}
}
}
namespace oceanbase
{
namespace tests
{
namespace election
{
c...
两阶段提交协议的异常处理
两阶段提交的协议大家都比较熟悉了,解释一下每个阶段的异常处理。首先,我们需要持久化协议过程中的状态,这样如果server宕机,那么恢复的时候还能通过日志知道宕机前处于那个阶段。同时,所有对数据的修改都会先写write ahead log,保证宕机重启的之后数据也不会丢失。写日志的顺序假定为:写write ahead log-修改缓冲区-写commit/abort log。
在这个前提下,我们根据如下的时序图来讨论异常情况和处理方法。
过程a没有成功,即协调者没有收到部分参与者的回应。超时后,协调者发送abort消息给参与者取消事务。参与者存在两种情况:
- 过程1失败,网络问题导致参与者没有收到vote request消息或者此时参与者宕机。参与者重启恢复后无需...
495 post articles, 62 pages.