自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一刀的后院

博客整理中

  • 博客(115)
  • 资源 (4)
  • 收藏
  • 关注

原创 将在mdb里执行的结果保存到文件中

例如将在mdb里执行的结果保存到1.txt中方法1):使用mdb的日志功能($>命令):>$>1.txt>::nm方法2):使用!命令:>::nm!cat>1.txt

2012-03-24 09:10:15 944

原创 Solaris下使用MDB查看全局变量的值

假设要查看全局变量m_FmSvcMsgQueue的值1) 得到m_FmSvcMsgQueue mangle后的值:nm libfm.so|c++filt|grep m_FmSvcMsgQueue[8323]  |   5003644|      32|OBJT |GLOB |0    |19     |m_FmSvcMsgQueuenm libfm.so|grep 8323

2012-03-24 09:08:45 2050

原创 Solaris Performance and Tools 笔记(未完待续)

分析方法1.  Monitoring. Using a system to record statistics over time. This data may reveallong term patterns that may be missed when using the regular stat tools.Monitoring may involve using SunMC, SNM

2012-03-24 09:06:14 1610

原创 DTrace简介

基本语法probe/ optional predicates /{ optional action statements;}其中:1)       probe:探针,即所要探查的对象。2)       optional predicates :DTrace脚本没有if语句,使用/ optional predicates /来替代。3)       optio

2012-03-24 09:04:07 3343

原创 Linux下C++国际化

有关国际化应用程序国际化的实质是提供一种机制,使其能根据环境变量或配置文件,来指导程序的行为。当对新的“国家”进行支持时,不用修改代码,只修改资源文件就可以实现。例如,“把LANG设为C,再用vi打开带中文的文件,中文显示乱码”。就是因为vi根据LANG做了某些操作。在Linux下,和国际化相关的locale环境变量有三类:LC_ALL,LC_*(如LC_CTYPE等),LANG。

2012-03-24 08:52:19 2508

原创 有关CentOS6的man报错

1)对于找不到的命令,man会报错:[jing@CentOS locale]$ man abcCannot open the message catalog "man" for locale "zh_CN.UTF-8"(NLSPATH="/usr/share/locale/%l/LC_MESSAGES/%N")No manual entry for abc[jing@C

2011-11-19 18:44:55 4360

原创 Solaris10 GCC bus error 一例

Solaris10 GCC bus error 一例环境:Solaris10 SPARCGCC 4.4.2背景:原先代码使用CC编译的,是32位程序。有-O2优化。现在迁移到GCC下,并改为64位程序。调试阶段未加-O2优化。问题:程序运行某些用例,在最后退出时,会报bus error。随机性很大。堆栈是某些全局的string(或map)

2011-11-02 15:46:04 1760

原创 [Errno 6] No such device or address: '/dev/tty'

调用流程:CruiseControl-->Ant Project-->Python Pexpect-->ssh发现有的时候会报[Errno 6] No such device or address: '/dev/tty'。至今没找到原因,不研究了,准备用Ant Sshexec代替。

2011-01-14 13:13:00 7074

原创 我们经常喜欢说的

1)你要是很快搞定问题,领导就会认为这个问题没难度,领导根本不懂技术。2)程序在客户那出问题再说吧,否则显示不出我的价值。3)为什么那个家伙比我差,挣得还比我多,不就早来几年嘛。T.B.C

2010-12-31 11:36:00 823 1

原创 什么跨数据库,都是浮云

跨数据库,浮云

2010-11-23 12:56:00 642

原创 Solaris10修改进程名称

对于多进程的程序,由于会针对同一可执行文件起多个进程,这样用ps –ef会看到多个同名的进程在运行。存在辨别到底是哪个进程的问题,所要要针对每一个进程取一个唯一的名字。

2010-10-28 19:28:00 940

原创 关于在32位系统下使用VMware安装64位系统的问题

最开始是在XP(32位)下安装的Solaris10(32位)和SUSE11(64位),当时的CPU是闪龙2500+,VMware的版本是7.0.0-203739后来换了WIN7(32位),VMware重装了,但是Solaris10和SUSE11的硬盘文件没换,仍然可以用。后来把CPU换成“速龙64 3400+”了,重装完WIN7和VMware后,之前的Solaris10和SUSE11的硬盘文件没法用了,告诉我CPU不支持64位,试过很多次都不行。奇怪的是Solaris10明明是32位的,也不

2010-10-16 11:38:00 2242

原创 SlickEdit + Cygwin,SlickEdit的build窗口显示乱码的问题

Windows下,编辑器使用SlickEdit2010,编译器使用Cygwin的GCC。当编译出错的时候,SlickEdit的build窗口会出现乱码。在Cygwin中直接make,会发现报错的输出中存在全角的单引号,查看Cygwin的环境变量LANG,发现LANG=C.UTF-8。正是因为SlickEdit不认全角的单引号,才导致build窗口显示乱码。解决办法:由于Cygwin里面还要显示中文文件,所以不能修改Windows的环境变量。于是建立一个vs.bat文件,内容如下:set LA

2010-08-30 21:01:00 2209 1

原创 一种定位内存泄露的方法(Linux)

目的:本文是《一种定位内存泄露的方法(Solaris)》对应的Linux版本,调试器使用gdb。主要介绍实例部分。其他请见《一种定位内存泄露的方法(Solaris)》。实例:模拟new失败的程序:#include class ABC{public:        virtual ~ABC(){}        int i;        int j;};

2010-05-16 18:35:00 9417 1

原创 一种定位内存泄露的方法(Solaris)

问题:客户测试的镜像环境出现一个3.8G的core文件,查看堆栈发现是new失败了导致进程abort。因为是32位应用程序,应该是所有的heap空间都被用光了,导致new失败。推测有几种可能:1) 内存泄露导致内存耗尽。2) 有些静态对象处理的不合理,导致一直在增大。3) 有死循环,导致一直在做类似list::insert这样的操作,最终耗尽内存。定位思路:如果是第二种

2010-05-15 12:04:00 3019 5

原创 使用MDB查看变量的值(2)

使用MDB查看变量的值(2)[email protected] 本节描述使用MDB查看core文件中STL变量的知识 一、目的在《使用MDB查看变量的值(1)》中,我们 探讨了查看变量值的一般方法,但是对于复杂的对象,一点一点的查看内存太麻烦,MDB提供一种机制,可以自己实现插件来解析内存中的变量。 二、原理在《Solaris 模块调试器指南(819–7055–10)》

2010-01-17 16:33:00 2949 3

原创 SVN+Apache

1、安装Subversion2、安装TSVN(不是必须的)3、安装Apache4、在Subversion的目录下搜索mod_dav_svn.so、mod_authz_svn.so这2个文件(一般在Subversion/bin下),将其复制到Apache的modules目录下5、在Subversion的目录下搜索libdb*.dll、intl3_svn.dll这2个文件(一般在Sub

2009-11-08 18:56:00 1206

原创 关于VC的rebase工具

进程默认加载的基址是0x00400000,DLL默认加载的基址是0x10000000 当一个进程加载多个DLL时,只能有一个DLL被加载到默认基址上,而其他的DLL必须通过“重定向”才能正确使用。“重定向”会降低程序的性能,使用rebase工具可以自动计算并改变DLL的加载基址,提高DLL的性能。使用方法:rebase -b 0x1000000 -v *.dll

2009-11-08 18:45:00 1357

原创 关于.命令

 .命令与export命令一样,都是使变量传递到子程序中,只不过.命令跟的是文件名,export命令跟的是变量名。使用方法:. ./.profileexport PATH=$PATH:/opt另:source命令等同于.命令

2009-11-08 18:43:00 727

原创 使用宏生成C++简单工厂

Fruit.h#pragma once#include class Fruit{public: virtual ~Fruit(){} virtual void print() = 0;}; Apple.h#pragma once#pragma once#include "Fruit.h"#include class App

2009-10-21 23:14:00 721

原创 《硝烟中的scrum和xp》读书笔记

1)  让产品backlog停留在业务层次上,不要出现技术描述。因为技术描述不一定准。2)  产品backlog中强调如何演示(How to demo),sprint计划中定出演示的时间地点。这里的演示是否可以理解为验收用例?3)  先完成优先级高的故事4)  指定story优先级时,开发团队应该参与进来,而不是凭SE一句话搞定。5)  Scrum注重的是管理和组织实践,而XP

2009-10-20 23:33:00 678

原创 一个类如何使用另一个类的private、protected方法

 一个类A使用另一个类B的private/protected函数f(),常见的方法有几种:1)  复制B的f()的内容到A中。最常见的也是代码复用最低的方法。2)  令B为A的成员变量(或在A的某函数中生成B),然后调用B的f()。这时要提升f()的访问权限为public,访问权限有时却是改不了的。如果B为A的成员变量,则A变为有状态的类,在一些情况下是不行的(如A为多线程

2009-10-16 23:26:00 7153

原创 使用MDB查看变量的值(1)

 使用MDB查看变量的值(1)[email protected] 本节描述使用MDB查看core文件中变量的基本知识基本概念:    一般程序发生coredump,80%的可能是由于参数的值不对造成的(其他可能是堆栈溢出、多线程等问题造成的)。对于可以复现的问题,一般拿到函数堆栈,通过走读代码基本上就可以定位。对于无法复现的问题,大部分情况需要通过查看变量的值来定位。(注:网上很多

2009-10-06 18:32:00 2953 2

原创 如何维护别人的代码

《How to Transfer Knowledge in an Agile Project》(http://www.infoq.com/news/2009/08/agile-knowledge-transfer),这篇文章介绍了怎样在敏捷项目中传递知识。我觉得其对维护别人的代码有点帮助。 传递知识有三种方法:1)使用文档2)反向工程3)询问顾问(以前开发这个项目的人) 

2009-08-20 13:36:00 1537

原创 观察者模式与Boost.Signals

1)  观察者模式定义略,各种设计模式的书上都有定义。 2)  观察者模式一般实现观察者模式一般实现,都是“被观察者”保存一个“观察者”的列表,循环这个列表来通知“观察者”。代码,其中使用了boost的智能指针shared_ptr:#include #include #include "boost/shared_ptr.hpp"using namespace std

2009-08-17 23:28:00 2561 1

原创 对象只在堆上创建

使D只能在堆上创建:class B{public: virtual ~B() = 0 { }};class D : public B{private: virtual ~D() { }};int main(){ B* pb = new D; delete pb; return 0;}

2009-08-08 20:14:00 746 2

原创 C++反射的一种实现方式

Reflector.h:#pragma once#include class Reflector{public: virtual ~Reflector(); virtual const char* getClassName() = 0; static std::list m_lstRef;}; Reflector.cpp:#inclu

2009-07-27 21:55:00 978 6

原创 《设计模式解析》学习笔记

 正在看设计模式解析,希望这本书能对我有帮助 花了2周看完了,以下是学习笔记: 第1章 面向对象泛型1、  面向对象考虑问题的三个视角:概念、规约、实现。概念:抽象类(接口),泛指某种类型。规约:类的成员函数,及其参数表。实现:成员函数的实现。2、  封装一般意味着各种隐藏。例如,抽象类隐藏子类的具体类型。3、  功能分解一般是结构化程序员使用的方法,那我们

2009-07-10 13:00:00 631

原创 Head First设计模式看完了,不知道该写点么

从另一个角度熟悉了几个模式

2009-06-27 21:21:00 678

原创 无题

今天和同事闲聊时,有句话触动了我。说的是现在产品太大了,涉及面太多,所以改个结构的字段也要打申请、等审批,没个三、五天搞不下来。我说,原来看IBM的笑话,说IBM的一个箱子从二楼搬到三楼需要打申请、等审批,两周才能搬个箱子,我没公司啥时候那样了就牛了。同事说,为什么非要走IBM的老路呢。IBM前几年差点死了,后来被救活了,如果我们公司到了那天,肯定死掉,救不活。想想也是,虽然公司现

2009-06-02 21:34:00 576 1

原创 程序员应该掌握的3种知识

1、业务知识这个不多说了。其实有时候很烦那些变来变去的业务逻辑,但是在某个行业混,不了解业务是很难写出好用的软件的。 2、底层知识包括对语言的掌握,对调试技术的掌握,对操作系统的了解(线程,进程等知识),对数据库的掌握,对类库的使用等。1)作为C++程序员,要想写出的程序效率高,且不容易出错,对语言细节的掌握是必要的。2)不管是Windows下还是UNIX下的调试技术都需要掌握。特

2009-01-14 22:31:00 6567 9

原创 我看过的和想看的C++书籍

(红色部分为拥有的书。好想有个书架呀。) 一、纯C++: 1、《C++ Primer 第三版》精读过很多遍,现在感觉全书拿一个例子来讲的这种模式不是很爽。 2、《C++ Primer 第四版》看过一遍,且有关模板的章节看的很粗。感觉比第三版通俗易懂了,也可能是去掉了一些晦涩的、不常用的部分的原因。 3、《Effective C++ 第二版》只看过电子版,

2008-08-07 23:04:00 1343

原创 使用模板将可能的运行时错误变为编译时错误

 #include iostream>using namespace std;//当CD不使用模板参数时填充此类class CNull...{public:    static CNull* instance()    ...{        return &m_oCNull;    }private:    static CNull m_oCNull;};CNull CNull::m_o

2008-05-17 12:16:00 948

原创 计算机的字节序问题

 1)IBM、Motorola等芯片采用大字节序(big-endian),多字节数据的第一个字节(数字地址最低的)存储的是最高位的值,例(32位机器):int i = 0x12345687;假设&i = 0x0012FF3C,则:0x0012FF3C 120x0012FF3D 340x0012FF3E 560x0012FF3F 782)DEC、Inter等芯片采用小字节序(little

2008-03-22 13:32:00 1125

原创 如何使用多态性数组

1)错误的使用多态性数组详细请见《More Effective C++》条款3,此处只贴出示例代码:#include #include using namespace std;class B{public:    virtual void print() const    {        cout     };};class D : public B{public:    vir

2007-10-24 22:42:00 1162

原创 C++临时对象的生命周期

有关临时对象的生命周期有三种情况:1)一般情况:临时性对象的被摧毁,应该是对完整表达式(full-expression)求值过程中的最后一个步骤。该完整表达式造成临时对象的产生。例:#include using namespace std;class A{public:    A(int i): m_i(i)    {        cout     }    ~A()   

2007-09-02 10:05:00 4189

原创 虚函数和访问限定符

#include using namespace std;class B{public:    virtual void f()    {        cout     }};class D : public B{private:    virtual void f()    {        cout     }};int main(){    B *pb = new D;   

2007-09-02 09:22:00 1083

原创 C++考试复习,总结的几个问题

1、通过子类对象的指针删除子类对象时,无论父类的析构函数是不是虚的,都会调用父类的析构函数。但是通过父类对象的指针(指向子类对象)删除对象时,如果父类的析构函数不是虚的,那么就不会调用子类的析构函数。所以为了保证正确性,要将会派生的类的析构函数声明为虚的。 2、成员函数加上const修饰和不加const,实际声明了两个不同的函数。3、子类的友元类可以通过子类对象去访问父类的保护成员。4

2007-09-02 09:01:00 1249

转载 Oracle是如何工作的

一个名叫Sid的男人,狂热地爱好拍摄、保存和整理照片。Sid的妻子名叫Debbie,他们有三个儿子Logan、Archie和Chuck。他有一所很大的房子,同住的有男管家Simon和女仆Pam。我将介绍他的家庭、他的房子和他的爱好:拍摄、收集和炫耀他的照片。 现在,Sid快乐地生活着—家庭、朋友和假期。他不时地拍照。事实上,他总是随身带着相机。他不想错过任何东西。每一个早餐、午餐和晚宴,都会被拍下

2007-08-31 22:57:00 1008

原创 Solaris10下,使用SunStudio11编译ACE

系统:Solaris10(x86),安装在VMware(6.0)下编译器:SunStudio11带的CC,版本为Sun C++ 5.8 2005/10/13ACE:5.51、下载,解压ACE:去网站上下载ACE,然后解压。我所放的目录是/opt/ACE_wrappers2、创建环境变量:以root用户为例,编辑/.profile,加入如下内容:PATH=$PATH:/o

2007-08-24 19:47:00 2268

Expert.Oracle.Database.Architecture.Expert.Oracle.Database.Architecture.Oracle Database 9i, 10g, and 11g Programming Techniques and Solutions.2nd.Edition

Oracle 9i 10g 11g 编程艺术,第二版,英文版

2010-09-13

MDB插件,可以打印core文件中stl对象的值

MDB插件,可以打印core文件中stl对象的值。包括list、vector、map、set。 使用方法: 1)解压 2)make 详细请参考: http://blog.csdn.net/lw1a2/archive/2010/01/17/5203645.aspx

2010-01-17

Mockpp使用方法简介

自己制作的Mockpp介绍文档。 Mockpp是一个开源的C++打桩工具,一般被用在C++的单元测试中。 目前Mockpp没有中文的使用文档,本文用来抛砖引玉。

2009-03-01

ACE5.6参考手册

使用doxygen生成的ACE5.6的参考手册

2008-04-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除