随笔分类 - c++
C++相关
摘要:考虑到boost的工业级强度,因此就直接用了,代码的官方示例地址:https://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/examples/cpp11_examples.html 用起来还是挺方便的,代码量少,稳定性高,速度快。 后来实际过
阅读全文
摘要:网上有各种gtest的入门教学,这里就不一一重复了。本文的目的是讲解如何将gtest应用于工程应用中。利用测试驱动开发这样的理论,来先写测试代码,当自动化测试跑通以后,主工程的代码也就编写完了。 这里假设你已经在linux上成功编译gtest,并且将静态文件放置于某地。 头文件置于:~/build-
阅读全文
摘要:转自:http://blog.csdn.net/wuyuxing24/article/details/48758927 一, 背景 先说下我要实现的功能,server端一直在linux平台下面跑,当客户端有请求过来的时候server端接受到请求,拿到客户端的数据,根据拿到的数据做出相应的处理,得到处理的结果直接把结果数据发送给客户端。这样一个连接的请求结束,我的不是长连接的情况,不会...
阅读全文
摘要:转自:http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html声明:本文内容主要译自Nauman Leghari的Using log4net,亦加入了个人的一点心得(节3.1.4)。 请在这里下载示例代码1 简介1.1 Log4net的优点:几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。经验表明,日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:它可以提供应用程序运行时的精确环境,可供开
阅读全文
摘要:#include "stdafx.h" #include class AB{ public: void do_test() { //LOG_DEBUG("abc"); //LOG4CPLUS_DEBUG(_Logger(), __if_exists(this){'[' << this << ']' <<} L'[' ...
阅读全文
摘要:由于工作需要,终于要开始使用大名鼎鼎的ubuntu了,从网上下了个ubuntu-12.04.3-desktop-amd64,通过vmware安装,过程相当顺利,只是装完后重启动,发现回到了命令行模式。好奇怪,明明装的是desktop版的,到网上一查才知道,原来wmware默认采用了easy安装了,默认不能出图形界面,得采用手动安装,怎么操作,参考这个网址,图文并茂,很详实:http://blog.sina.com.cn/s/blog_7f65a99101016h3c.html手动安装完以后出现这样的界面,感觉很华丽: 点击现在重启按钮,终于可以看到开机的欢迎界面了:
阅读全文
摘要:原文地址:http://cnjun939.blog.163.com/blog/static/78144538201251474311135/由于最近需研究virtualbox,看好看到上面的网址有,只不过不全是自己要的,且网页太花,看起来痛苦,先将之拷过来,然后修改之。VBoxManage是VirtualBox的命令行接口。利用他,你可以在主机操作系统的命令行中完全地控制VirtualBox。VBoxManage支持GUI可访问的全部功能,而且更多。VBoxManage展示了虚拟化引擎的全部特征,包括GUI无法访问的。列一下,你需要使用命令行:使用主GUI之外的用户接口(例如,VBoxSDL或
阅读全文
摘要:接前面虚表的内存分布,今天重点看多重继承的虚表内存分布,简单的说,继承几个类便有几个虚表,如下代码class Drive : public Base1, public Base2, public Base3 {public: virtual void fd() { cout #include using namespace std;class Base1 { virtual void f() { cout << "Base1::f" << endl; } virtual void g() { cout << "Base1::g&
阅读全文
摘要:这个问题一直似是而非的,昨天闲着无事,便细看一下,发现还是挺容易的。总结起来可以分为以下几块:1、空类的内存分布2、带变量的类的内存分布3、带虚函数的类的内存分布4、带虚函数的子类的内存分布5、关于虚析构的描述6、关于纯虚函数为何必须在子类中实现的问题。未完成部分:1、关于虚基类的结构分布。1、空类的内存分布比较简单,一般用一个字节表示,据说是为了标识类而作的特别的安排。如下代码:class A{}则sizeof(A) 为1.2、如果类中包含变量,则类的大小为变量的大小。3、类中一旦带有虚函数,则类的大小增加4个字节,前4个字节(针对32位机器)为虚表的入口地址,此地址指向一个数组,用来存放虚
阅读全文
摘要:地址:http://vckbase.com/index.php/wv/1072.html,很多年前就看过一次,当时就觉得写的很细致,多年之后,偶然的机会又看到了,记下来些点滴.
阅读全文
摘要:这儿http://code.google.com/p/nginxsrp/wiki/NginxCodeReview,针对nginx的一些细节进行了讲解,看了受益良多.看到ngx_queue的时候,发现其实是一个简单的双向链表,居然看来看去理不清这个链表是怎么运作的,只好画图,然后发现,原来这个双向列表的prev实际表示的是next,这样一来理解起来就容易多了.以下的代码为转载:下面是一个queue操作的例子#include<stdio.h>#include"ngx_config.h"#include"ngx_conf_file.h"#inclu
阅读全文
摘要:nginx在windows上采用IOCP的通讯机制,此通讯机制是windows专有的,之前对IOCP有所涉猎,一直未深入研究,刚好借这个机会,弄清IOCP的使用方法.
阅读全文
摘要:其实应该叫做静态加载各模块,因为此加载的过程实际上是在编译的时候完成的,而非运行时根据配置文件动态加载.假设这样的场景,程序有很多模块,每种模块的配置写在各自的代码中(可能为.cpp,也可能为.h),在调用处只是将其简单申明,然后加载进来,若某一天不需要此模块,只需简单的在调用处屏蔽代码即可.此代码从nginx代码中抽取,为了简单修改了部分代码,以免引入过多的概念. 1 // ngx_module_load_test.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx
阅读全文
摘要:网上有很多关于内存的学习,此学习的目的是为了能将内存用法化为自己的东西灵活用在别处.总体思路是化整为零.参考其它的文章地址:http://blog.csdn.net/v_july_v/article/details/7040425先依此画张图:内存池的结构比较简单,有几点需特别说明:1)内存池在使用之前需创建,如 pool = ngx_create_pool(1024, NULL);2)在使用内存池的时候均通过p = ngx_palloc(pool, 512);分配内存.3)第一个内存块与后续的内存块的大小有些微的差异,以1024大小的内存池为例,第一个内存块的数据区大小为1024-sizeo
阅读全文
摘要:今天开发代码的时候发现前人的代码很多的重复,看的极累,因此考虑优化合并,结果发现需要动用到函数参数方能使得逻辑上看起来简单清晰。想到了boost的应用,可以比较简单的实现函数参数的功能。以下为简单的实现代码:// testfunction_param.cpp : Defines the entry point for the console application.// 一个简单的函数参数的应用,即将类函数作为一个入参,由别的函数通过此入参调用此函数。// boost方法比较简单的解决了这个问题。#include "stdafx.h"#include <iostrea
阅读全文
摘要:由于项目进入尾声,需要进行性能测试,没有专业的性能测试工程师,只好自己动手,研究一下loadrunner.发现loadrunner对web测试介绍比较多,牵涉到winsocket测试的资料极少,不过到处找一找,研究一下,也是可行的.先说一下我们的协议,采用tcp协议,与客户端采用自定义二进制流的方式进行通信.遵从普通的自定义协议的方式,即协议结构采用包头+包体的形式,包头为固定大小的长度,并在包头中加入包体总长度的字段.好了,下面可以用loadrunner进行协议测试了.首先想法在PC上实现一个简单的协议生成软件,我采用python进行编制,将协议跑一遍,然后用loadrunner进行录制.由
阅读全文
摘要:前面已经说完了怎样使用log4cxx进行日志记录,今天发现问题稍有点复杂。原因是系统中用到的一个dll已经使用了log4cxx。我们在开发的过程中也想使用log4cxx,但不想与DLL中的日志写到同一个文件中,问题就来了,怎样区别打印到不同的文件中呢,DLL中采用的为应该为getRootLogger的方式。这个网址中的文章很好,解决方案主要参考此文:http://www.open-open.com/doc/view/4bf2bd4f517c4044b1f7d4e2d22eccaflog4cxx主要是由三部分组成:loggers, appenders和layouts.这三个主要组成部分,协同协作
阅读全文
摘要:log4cxx是业界通用的日志系统,建议我们在写程序的时候可以直接拿来使用,关于工程包及相关的lib及dll文件,网上有很多说明,略过。以下只讲怎样使用。一、建测试工程:testlog4cxx,直接选控制台应用程序, 在配置属性页中,选C/C++,常规,在附加包含目录中加入“./”;选链接器,常规,在附加库目录中加入"./",点选中常规下面的输入,在附加依赖项中加入“log4cxx/log4cxx.lib”二、在测试工程目录下加入log4cxx文件包三、加入include头文件:#include <log4cxx/logger.h>#include <lo
阅读全文