存档

‘技术’ 分类的存档

mac下面brew的权限问题

2016年5月2日 没有评论

想写一个爬虫去爬一些图片,发现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...

分类: 技术 标签:

mac下c++单元测试覆盖率工具gcov

2016年5月1日 没有评论

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 ...

分类: 技术 标签:

Tuxedo中string导致内存泄漏

2016年4月30日 没有评论

对象创建的时候会调用构造函数来初始化对象,对象销毁的时候会调用析构函数。 普通的自动变量(local非static)包含构造函数和析构函数。 当进入变量作用域的时候构造函数被调用,当离开变量作用域的时候析构函数被调用。 当在tuxedo的环境中调用 tpreturn() 或者 tpforward() 函数时,编译器进行了一个non-local的goto (using longjmp(3)),导致自动变量的析构函数没有被调用。 为了避免这个问题,我们应该在服务体中调用直接调用 tpreturn() 或 tpforward() (而不是在服务体调用的函数中调用这两个函数)。 ps: 1.服务体中不能包含...

分类: 技术 标签:

epoll入门实例

2016年4月10日 没有评论

epoll是目前进行服务器端编程的普遍选择,好处很多,这里不再赘述,本文主要描述如何在c语言中使用epoll的完整样例程序。 首先介绍用到的数据结构和三个api说明,然后通过编写一个打印所有输入到socket的字符输出到终端的服务器端的程序来完成整个例子。 epoll_event是用来对要监控的socket描述, 它包括epoll_data_t和要监控的事件类型的(一个__uint32_t类型的events)。epoll_data_t里的fd是用来存储要监控的文件描述符。 events 结构体中第一个参数支持的事件类型 – EPOLLIN,读事件 – EPOLLOUT,写事件 – EPOLLPRI,带外数据,与sele...

分类: 技术 标签:

[0;32m eclipse显示颜色

2016年4月7日 没有评论

用 eclipse cdt 运行 gtest 在 console 的输出结果有有 shell 终端的颜色代码输出 Running main() from gmock_main.cc [==========] Running 4 tests from 1 test case. [----------] Global test environment set-up. [----------] 4 tests from PrimeFactors [ RUN ] PrimeFactors.1factor [ OK ] PrimeFactors.1factor (0 ms) [ RUN ] PrimeFactors.2factor [ OK ] PrimeFactors.2factor (0 ms) [ RUN ] PrimeFactors...

分类: 技术 标签:

分布式系统的数据一致性和处理顺序问题

2016年2月18日 4 条评论

现在先抛出问题,假设有一个主数据中心在北京M,然后有成都A,上海B两个地方数据中心,现在的问题是,假设成都上海各自的数据中心有记录变更,需要先同步到主数据中心,主数据中心更新完成之后,在把最新的数据分发到上海,成都的地方数据中心A,地方数据中心更新数据,保持和主数据中心一致性(数据库结构完全一致)。数据更新的消息是通过一台中心的MQ进行转发。 先把问题简单化处理,假设A增加一条记录Message_A,发送到M,B增加一条记录 MESSAGE_B发送到M,都是通过MQ服务器进行转发,那么M系统接收到条消息,增加两条数据,那么M...

分类: 技术 标签:

区分同步 异步 阻塞 非阻塞

2016年1月18日 没有评论

同步/异步 首先来解释同步和异步的概念,这两个概念与消息的通知机制有关. 举个例子,比如我去银行办理业务,可以自己去排队办理,也可以叫人代办,等他帮忙处理完了直接给我结果,对于要办理这个银行业务的人而言,自己去办理是同步方式,而别人代办完毕则是异步方式.区别在于,同步的方式下,操作者主动完成了这件事情.异步方式下,调用指令发出之后,操作马上就返回了,操作者并不能马上就知道结果了,而是等待所调用的异步过程(在这个例子中是帮忙代办的人)处理完毕之后,通过通知手段(在代码中通常是回调函数)来告诉操作者结果. 在上图的异步IO...

分类: 技术 标签:

gtest和gmock入门实例

2016年1月10日 没有评论

对于 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...

分类: 技术 标签: ,

那些我印象深刻的建议和教诲

2015年12月26日 没有评论

看过博主很多篇文章,而且还经常忘了网址,很多观点深有感触,只是自己少了那份文字描述能力,转载过来共勉。 人的一生,当然有很多的时间去自己摸索和探究,做出自己的选择;其他人的教诲,很多时候并不会干涉选择,反而会让人少走弯路,更快捷抵达自己的目标。下面,我列了自己印象深刻的教诲(或者说“建议”),既是对各位的感谢,也希望通过分享让更多人受益。 技术是你的安身立命之本 这是大学时候中文系的王老师对我说的。当时我基本不怎么上计算机的专业课,晚自习看原版教材,白天在图书馆泡着,外加去中文系听课。对从小只接受...

分类: 技术 标签:

c++虚函数和纯虚函数的区别

2015年12月13日 没有评论

多态是C++的重要特性,通过基类指针来访问派生类的函数。 虚函数就是为了实现这功能而定义的函数,虚函数可以在定义时实现也可以不实现,定义了虚函数的类可以实例化。 纯虚函数更多的是表示接口的含义,纯虚函数定义时不能实现,需要在派生的子类中实现且必须实现,含有纯虚函数的类不能实例化。 虚析构函数与虚函要成对出现,以便在通过基类指针释放派生对象时,调用派生类的析构函数。 class VirtualFun { public: VirtualFun(){std::cout<<"create VirtualFun"<<std::endl;}; v...

分类: 技术 标签: