c++学习晋级
etetet029
xxxxx
展开
-
log4cpp 学习过程(一) 概述
学习目的:通过学习开源框架,仔细研读源代码来提高C++的水平,并在最后通过Windows 和 Linux平台编译和test来增加对两个平台的熟悉; 从http://log4cpp.sourceforge.net/下载到log4cpp-1.0.tar和log4cpp-docs-1.0.tar,其实就是0.3.5版本;下文引自:http://www.ibm.com/developerwor原创 2009-11-29 10:43:00 · 3313 阅读 · 0 评论 -
VS 2005 VS2008 VS2010 设置断点,在调试时产生断点错位怎么解决
问题如下: 1.错误代码报错行数错位 2.debug动态跟踪错位 3.Release跟踪错位 4.断点设置自动被跳转可能的原因有三种:第一:代码和dll或者exe不一致;第二:数组等越界导致内存乱了; 第三:0D0A 改为了0D少了0A或者中文注释打乱了VS对0D0A的定位 方法一:最方便的方法是静态编译看看是不是第三个原因,首先VS原创 2012-06-14 23:48:06 · 10341 阅读 · 3 评论 -
代码质量之三-----关键的代码需要单元测试和自己review及交叉review
细节后续再补......,呵呵原创 2012-05-10 22:03:19 · 1079 阅读 · 0 评论 -
代码质量之二----善用代码静态分析工具
可以程序自动地识别出代码的不好之处;各种语言都有成型的工具;原创 2012-05-10 22:02:08 · 494 阅读 · 0 评论 -
代码质量之一-----代码是债务
代码是债务,代码越多,维护的代价越大,1,最好的函数名称表述它是做什么的,而不需要表述它为什么或者怎么做的;2,代码行数最好是15行,其次30行,最多不要超过60行;3,代码要简洁明了;原创 2012-05-10 22:00:43 · 1014 阅读 · 0 评论 -
程序性能优化之二-----ulimit
如果并发数是10,那么不需要考虑性能优化;如果并发数是100,则需要查看内存是否小于256M;如果并发数200,则需要修改linux系统的ulimit文件描述符的默认值1024;如果并发数256,则需要看看是不是32位系统,它的FILE里面类型是unsigned char 即最大值只有256,64位系统里面则是int;如果并发数大于500,则需要查看tomcat或者mysql是否支原创 2012-05-10 21:54:53 · 1587 阅读 · 0 评论 -
内存泄漏检测工具
windows下面有vld即visual leak detector;linux下面有valgrind; memleakcheck tools:windows:vld 即Visual Leak Detector,使用方式,直接main程序包含.h,链接.lib即可,注意需要debug版本编译,1.0版本免安装linux:valgrindvalgrind --leak原创 2012-05-09 21:03:11 · 832 阅读 · 0 评论 -
程序性能优化之一----profiler
profiler的主要作用为:可以查找性能瓶颈,主要可以统计函数调用次数,调用时间; windows的team 版本才有这个功能; Goolgleperformance tools是google公司开发的一套用于C++Profile的工具集。其中包括:一个优化的内存管理算法—tcmalloc性能优于malloc。 一个用于CPU profile的工具,用于检测程序的性能热点转载 2012-05-09 20:47:14 · 3303 阅读 · 0 评论 -
使用SWIG和Python对C/C++进行单元测试
关键字: swig python c/c++官网为www.swig.org可以自动把c/c++封装成python,php,java,.net,perl,tcl等等 最近一直在用C/C++做开发,虽然C/C++都有自己的单元测试框架(CUnit,CPPUnit,知道还有其它框架的兄弟告诉我一声,我去看看),但是总觉得写起来麻烦(人懒没办法),转载 2012-05-07 21:44:35 · 2571 阅读 · 0 评论 -
string 和 const char* 的性能比较
经过网上调研和网友测试: 如果不涉及到查找,尽量用string,参数传递可以用string引用;涉及到查找子串时还是用const char*效率高;原创 2012-05-05 09:09:40 · 1068 阅读 · 0 评论 -
c++ linux 如何把 char* 里面的中文 insert进入mysql(相应的字段为varchar类型)
首先, show variables like 'char%';来检查字符集:+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+------------原创 2011-11-13 14:25:18 · 1635 阅读 · 0 评论 -
在C++动态库中释放调用动态库程序中生成的指针new和delete 或 malloc和free
一般情况下:谁申请,谁释放。在C++动态库中释放调用动态库程序中生成的指针:方法一:可以在“程序”中增加一个callback函数,让dll调用方法二:用GlobalAlloc分配内存,用GlobalFree来释放就可以了.方法三:用内存池linux没有类似的问题原创 2011-11-26 11:56:26 · 1299 阅读 · 0 评论 -
c++ classic books
一篇文章中列出:《高质量程序设计指南——C++/C语言》《程序员修炼之道》《编程高手箴言》《软件随想录》《编程珠玑》《高效程序员的45个习惯》《代码之美》《架构之美》《代码大全》《代码质量》《重构——改善既存代码的设计》《posix多线程程序设计》《深入理解计算机系统》《设计模式》《Head First设计模式》《代码整洁之道》原创 2011-10-20 10:47:50 · 1058 阅读 · 2 评论 -
log4cpp 学习过程(四) ---- log4cpp在VS2003上的编译
log4cpp工程是静态链接库,log4cppDLL是动态链接库;log4cpp只有MS vc6的工程文件。但使用vs2003将dsp转换成vcproj之后编译的过程中会出现错误, 问题一:报错error PRJ0019: 工具从"正在执行自定义生成步骤",详细可以查看其BuildLog.htm。解决办法,将转换后的vcproj打开,需要手工修改,原来的倒数几行的如下内容,使用了错原创 2009-12-06 08:22:00 · 3035 阅读 · 0 评论 -
log4cpp 学习过程(二) ----整体架构
用VS2003打开整个源码工程,仔细读代码,方式为结合文档来读;首先打开log4cpp-docs-1.0/api/index.html在File List 标签下浏览整个头文件信息,然后浏览整个头文件的依赖关系一:经过梳理:第一层为Export.hh是整个工程都要包含的头文件,仔细阅读,发现就是一个跨平台的导出方式的宏定义;这样在程序中只需要用LOG4CPP_EXPORT这原创 2009-11-29 10:53:00 · 1975 阅读 · 0 评论 -
测试磁盘写入性能的纳秒级耗时
#include <stdio.h>#include "string.h"#include <string>#include <vector>#include <iostream>#include <sstream>#include <time.h>#include <unistd.h>#incl...原创 2019-07-06 13:59:28 · 3557 阅读 · 0 评论