假设我们想声明一个STL的vector类型的变量,读入文件里的信息: std::ifstream in("data.txt"); std::vector<int> data(std::istream_iterator<int>(in),std::istream_iterator<int>()); 之后我们引用data的元素时,会发现编译器报错.为什么呢,让我们来分析一下: 在此时的编译器看来,我们实际上声明的是一个函数,它的返回值是vector,参数…
当心C++编译器中最烦人的分析机制 C++是较为底层的面相对象语言,在底层的语法规则分析中,有很多隐藏的分析机制. C++中的普遍规律相符,即尽可能地解释为函数声明. 把形式参数的声明用括号括起来是非法的,但给函数参数加上括号却是合法的,所以通过增加一对括号,我们强迫编译器按我们的方式来工作. 例如: 这样是不正确的,因为形参含有括号 争取做法: 用一个括号包括整个形参是可以的. 但是种做法并不是所有的编译器都能识别的,所以存在可移植性问题,在跨平台是可能会出现问题. 解决方法: 使用临时命名迭…
1.考虑一个包含int的文件,复制到list,如下: ifstream dataFile("ints.bat"); list<int> data(istream_iterator<int>(dataFile),istream_iterator<int>());2.上面的代码不是预期的行为.3.先从最简单开始,声明方法 int f(double d); 等价的写法有 int f (double (d)); int f (double); 也就是说,形参…
原文:http://chuansongme.com/n/797172 背景 据XX部门兄弟反应, 其在将PHP从5.3.8 升级到5.5.13 时, 开始运行正常, 运行一段时间后, 系统负载变高,达到200%以上, 从netstat看到大量连接处在CLOSE_WAIT状态. 最终导致系统不可用, 将PHP 回滚到5.3. 8 后, 一切正常. php-fpm 配置文件除了由版本引起的差异外, 没做任何改变. 猜想 根据TCP关闭连接的流程图: 可以看到, 一个处于连通状态(ESTABLISHE…
思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> using namespace std; // 1.cpp // g++ -S 1.cpp -o 1.s template <typename T> void myswap(T &a, T &b) { T c = 0; c = a; a = b; b = c; cout <&l…
[CAS机制] 指的是CompareAndSwap或CompareAndSet,是一个原子操作,实现此机制的原子类记录着当前值的在内存中存储的偏移地址,将内存中的真实值V与旧的预期值A做比较,如果不一致则说明内存中的值被其他线程修改过了,返回false,否则将新值B存入内存. Java内部是使用本地调用类unsafe实现的. Java原子类底层原理就是采用CAS机制. 可能会出现什么问题 aba问题: 线程1取出A之后被阻塞了,此时线程2把内存中A改为B,一系列操作后又改为A,此时线程1恢复执行…
https://blog.csdn.net/lukeUnique/article/details/79331779 https://mauro-pagano.com/2014/10/27/when-the-going-gets-tough-the-tough-get-going-aka-sqlt-xplore/ When upgrading a database sometime you find that one or more SQLs run slower because of a new…
今天在处理多线程突然想到一个问题,多核处理器会不会导致,单一线程中,由runloop分发的2个函数同时执行呢?进而同时修改同一个变量,产生bug? 我做了以下的测试: - (void)viewDidLoad { [super viewDidLoad]; [self performSelectorOnMainThread:@selector(test1) withObject:nil waitUntilDone:NO]; [self performSelectorOnMainThread:@sel…
1.编译nginx前, ./configure检查提示找不到C编译器 [root@test nginx-]# ./configure checking for OS + Linux -.el7.x86_64 x86_64 checking for C compiler ... not found 2.重装gcc编译器后,还是提示找不到C编译器 [root@test nginx-]# yum -y reinstall gcc gcc-c++ autoconf automake make Loade…
1 ThreadLocal? This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via itsget() or set()) has its own, independently initialized copy of the variable instances are t…