想写一个爬虫去爬一些图片,发现python3的request封装的比较。遂决定要装一个python3。
mac下的神器就是brew,分分种完成各种软件包的安装。执行完之后报错了。
brew install python3
结果如下,从最后几行的输出判断是由于权限不足导致的。
==> Downloading https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/python3/3.4.3 --enable-ipv6 --dataro...
gcov 是 GNU 的代码覆盖率检查工具。它利用编译时的 -fprofile-arcs -ftest-coverage 和链接时的 -lgcov 选项参数生成 .gcno 文件进而通过这些文件统计覆盖率。不过高版本的 mac 使用 clang 编译器,不支持 -lgcov 选项生成 .gcno 文件。为了解决这个问题,我们可以使用-coverage参数来生成 .gcno 文件。例如:
我的g++ --version信息如下
Apple LLVM version 7.3.0 (clang-703.0.29)
Target: x86_64-apple-darwin15.4.0
Thread model: posix
使用-lgcov会报错
ld: library not found for -lgcov
可以使用-coverage选项替换-lgcov
...
对象创建的时候会调用构造函数来初始化对象,对象销毁的时候会调用析构函数。
普通的自动变量(local非static)包含构造函数和析构函数。
当进入变量作用域的时候构造函数被调用,当离开变量作用域的时候析构函数被调用。
当在tuxedo的环境中调用 tpreturn() 或者 tpforward() 函数时,编译器进行了一个non-local的goto (using longjmp(3)),导致自动变量的析构函数没有被调用。
为了避免这个问题,我们应该在服务体中调用直接调用 tpreturn() 或 tpforward() (而不是在服务体调用的函数中调用这两个函数)。
ps:
1.服务体中不能包含...
epoll是目前进行服务器端编程的普遍选择,好处很多,这里不再赘述,本文主要描述如何在c语言中使用epoll的完整样例程序。
首先介绍用到的数据结构和三个api说明,然后通过编写一个打印所有输入到socket的字符输出到终端的服务器端的程序来完成整个例子。
epoll_event是用来对要监控的socket描述, 它包括epoll_data_t和要监控的事件类型的(一个__uint32_t类型的events)。epoll_data_t里的fd是用来存储要监控的文件描述符。
events 结构体中第一个参数支持的事件类型
– EPOLLIN,读事件
– EPOLLOUT,写事件
– EPOLLPRI,带外数据,与sele...
用 eclipse cdt 运行 gtest 在 console 的输出结果有有 shell 终端的颜色代码输出
Running main() from gmock_main.cc
[0;32m[==========] [mRunning 4 tests from 1 test case.
[0;32m[----------] [mGlobal test environment set-up.
[0;32m[----------] [m4 tests from PrimeFactors
[0;32m[ RUN ] [mPrimeFactors.1factor
[0;32m[ OK ] [mPrimeFactors.1factor (0 ms)
[0;32m[ RUN ] [mPrimeFactors.2factor
[0;32m[ OK ] [mPrimeFactors.2factor (0 ms)
[0;32m[ RUN ] [mPrimeFactors...
现在先抛出问题,假设有一个主数据中心在北京M,然后有成都A,上海B两个地方数据中心,现在的问题是,假设成都上海各自的数据中心有记录变更,需要先同步到主数据中心,主数据中心更新完成之后,在把最新的数据分发到上海,成都的地方数据中心A,地方数据中心更新数据,保持和主数据中心一致性(数据库结构完全一致)。数据更新的消息是通过一台中心的MQ进行转发。
先把问题简单化处理,假设A增加一条记录Message_A,发送到M,B增加一条记录 MESSAGE_B发送到M,都是通过MQ服务器进行转发,那么M系统接收到条消息,增加两条数据,那么M...
同步/异步
首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.
举个例子,比如我去银行办理业务,可以自己去排队办理,也可以叫人代办,等他帮忙处理完了直接给我结果,对于要办理这个银行业务的人而言,自己去办理是同步方式,而别人代办完毕则是异步方式.区别在于,同步的方式下,操作者主动完成了这件事情.异步方式下,调用指令发出之后,操作马上就返回了,操作者并不能马上就知道结果了,而是等待所调用的异步过程(在这个例子中是帮忙代办的人)处理完毕之后,通过通知手段(在代码中通常是回调函数)来告诉操作者结果.
在上图的异步IO...
对于 c++ 来说写单元测试和 mock 框架不是一件容易的事情。还好, Google 为我们搭建了一个出色的单元测试和 mock 框架。网上的例子很多都过多强调概念,本文用一个简单的例子让大家对于什么是 gtest 和 gmock 让大家有一个直观的了解,让大家很快上手,就像写 hello word 一样容易。
gtest&gmock 的 1.6 版本的使用 make 编译,新版的已经已经迁移到 github 上使用 cmake 编译,安装过程很多,这里不在重复,如果大家有需要再单独写。
1.下载安装 Google Test and Google Mock
2. 编译生成静态库gtest_main.a gmock_main.a (包含main...
看过博主很多篇文章,而且还经常忘了网址,很多观点深有感触,只是自己少了那份文字描述能力,转载过来共勉。
人的一生,当然有很多的时间去自己摸索和探究,做出自己的选择;其他人的教诲,很多时候并不会干涉选择,反而会让人少走弯路,更快捷抵达自己的目标。下面,我列了自己印象深刻的教诲(或者说“建议”),既是对各位的感谢,也希望通过分享让更多人受益。
技术是你的安身立命之本
这是大学时候中文系的王老师对我说的。当时我基本不怎么上计算机的专业课,晚自习看原版教材,白天在图书馆泡着,外加去中文系听课。对从小只接受...
多态是C++的重要特性,通过基类指针来访问派生类的函数。
虚函数就是为了实现这功能而定义的函数,虚函数可以在定义时实现也可以不实现,定义了虚函数的类可以实例化。
纯虚函数更多的是表示接口的含义,纯虚函数定义时不能实现,需要在派生的子类中实现且必须实现,含有纯虚函数的类不能实例化。
虚析构函数与虚函要成对出现,以便在通过基类指针释放派生对象时,调用派生类的析构函数。
class VirtualFun
{
public:
VirtualFun(){std::cout<<"create VirtualFun"<<std::endl;};
v...