自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

追寻自己

懂得思考,才会知道进步!

  • 博客(38)
  • 资源 (3)
  • 收藏
  • 关注

原创 linux下gdb调试器使用学习-03

目录目录进程调试命令进程调试命令attach process-id/detach[附加/分离进程]attach process-id: 在GDB状态下,开始调试一个正在运行的进程,其进程ID为process-iddetach: 停止调试当前正在调试有进程,与attach配对试用kill基本功能:杀掉当前GDB正在调试的应用程序所对应的子进程如果想不退出GDB而对当前正在调试的应用程序重新

2016-03-13 13:17:24 527

原创 linux下gdb调试器使用学习-02

目录目录断点breakpoint监视点watchpoint和捕捉点catchpoint断点(breakpoint)、监视点(watchpoint)和捕捉点(catchpoint)虽然说这三类point的功能是不一样的,但它们的用法却极为相似。 因此,本文将以断breakpoint为例,进行详细的介绍,关于watchpoint和catchpoint的介绍就相对比较粗略,如果能够理解breakpo

2016-03-13 13:08:53 381

原创 linux下gdb调试器使用学习-01

目录目录gdb入门-启动与帮助命令查看gdb入门-启动与帮助命令查看gdb单独启动,查看gdb的相关选项 直接通过shell命令窗口执行如下命令 进入gdb调试界面【纯文本界面】 2. gdb帮助说明 进入gdb后执行命令【help】即可看到gdb的相关命令,gdb是通过对命令行进行分类(class)来罗列 通过上面的图示,可以看到gdb把所有的帮助命令分为如下几类 -

2016-03-12 21:37:31 464

转载 DOS命令

目录第一章 批处理基础第一节 常用批处理内部命令简介1、REM 和 ::2、ECHO 和 @3、PAUSE4、ERRORLEVEL5、TITLE6、COLOR7、mode 配置系统设备8、GOTO 和 :9、FIND10、START11、assoc 和 ftype12、pushd 和 popd13、CALL14、shift15、I

2015-09-27 15:41:11 714

转载 A Complete ActiveX Web Control Tutorial

A Complete ActiveX Web Control TutorialIntroductionActiveX is a Microsoft technology developed in the mid 90’s, that allows for the creation of applet-like applications that can be d

2015-09-27 15:40:05 847

转载 c语言编程的时间函数详解

asctime(将时间和日期以字符串格式表示); ===>传入UTC(struct tm)tmp,返回char*。ctime(将时间和日期以字符串格式表示); ===>传入(time_t)arg,返回char*。gettimeofday(取得目前的时间); ===>传入(time_t)arg,返回tv,tz结构体传入时间,时区信息。gmtime(取得目前时间和日期); ===>传入(t

2015-07-26 11:18:24 6925

转载 perl特殊符号

@       数组                           $x{}   x名字前面是美元符号($),后面是花括号({}),则其为 hash 元素%       要引用整个 hash,使用百分号(“ )作为前缀。前面几页中使用的 hash 的名字为%family_name。$!      系统产生的一些可读的信息,也可能是出错的信息$_     子函数参数变量自己本身

2015-07-26 11:16:42 854

原创 linux网络编程之udp的connect趣谈

对于linux网络编程,UDP协议不是面向连接的协议,直接把数据报发送到链路层,至于能不能到达目的IP和端口,它不关注;大部分时候再编写代码时候只需要在sendto函数中指定你要发送的端口和IP地址就可以了,不用绑定IP和端口。不过你是否考虑过,UDP到底是否可以进行connect,如果对UDP进行connect函数的调用,会发生什么现象呢?        在进行socket网络编程代码编写时

2015-07-17 22:51:19 4526 1

转载 tcp协议的那些事

无论是PC客户端开发还是移动开发,或是Web开发, 网络编程都是很重要的一块, 深入理解TCP/IP和HTTP协议是一个优秀程序员的必备技能。看到酷壳老大正好写了篇相关文章, 正好拿来学习, 转自http://coolshell.cn/articles/11564.htmlTCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛

2015-07-08 23:09:24 764

转载 linux下信号处理机制

本文属于网络转载,没有标注原文出处,若作者看到后,发现有什么不妥当,请留言给我,我会直觉删除,谢谢!linux信号机制远远比想象的复杂,本文力争用最短的篇幅,对该机制做了深入细致的分析。一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作

2015-07-08 00:05:06 513

转载 程序集清单(Assembly Manifest)的应用

最近在工作中碰到一个软件版本发布的问题:在本地开发了一个服务端程序,在自己的计算机上能毫无问题地运行,但是当发布出去在一个纯净的win7环境下运行无法正常加载动态库,报加载库的错误为“14001”,于是在网上查找相关资料,发现相关解决问题的方式,做一下总结。 原来这一切都是Windows 的Assembly Manifest(程序清单文件)有关。这个文件的作用就是为了解决以前windows上的

2015-06-29 21:01:47 3071

转载 linux网络编程常见异常

socket错误码: EINTR: 4系统调用的阻塞操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。例如:系统调用read阻塞,因为信号导致阻塞的函数调用被中断只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted syst

2015-06-24 10:45:54 1120

转载 Boost Serialization 库

点击打开链接序列化主题主要解决如下问题:1、对象持久化2、网络通信中对象传递在网上看到针对boost的序列化比较详细的一个实例文档,转载如下使用了 Boost Serialization 的 Hello World在执行更重要的任务之前,我们先来验证一下概念。在以下的 清单 1 中,您会看到一个字符串,它的值被转储到一个归档文件中。在以下的 清单 2

2015-06-24 10:28:12 625

转载 Building ActiveX servers in Qt

A Windows-only static library for turning a Qt binary into a COM server.The QAxServer module is part of the ActiveQt framework. It consists of three classes:QAxFactory defines a factory

2015-03-13 22:43:36 1666

原创 通过编码来判断实际网络端口是否可用

在网络编程过程中,可能需要随机的去分配网络的业务端口来满足具体的网络通信业务(RTP收发流),那么需要程序代码随机的去分配可用的端口,为了满足该种业务需求,实现如下基础的业务代码:头文件描述基础的业务接口#ifndef NETPORTMGR_HPP_#define NETPORTMGR_HPP_#define _WIN32_WINNT 0x0501 #include #

2015-03-04 20:12:44 558

原创 C++对象生命周期管理--通过引用计数指针对象来封装管理对象生命周期

在实际的软件开发过程中,对象的生命周期管理一直是软件开发过程中的一个重点和难点,在C++标准库中也逐渐的出现了一系列的智能指针(标准库/boost库中都涉及到),但是这种智能指针的设计,只是对Object进行封装,接管了相关的生命周期,但是有时候在具体的业务需求中,需要对象自己管理自己的生命周期,那么在对象中需要封装相关的引用计数,当引用计数为0时,需要删除对象本身,为了满足该业务需求,设计该基础

2015-03-04 20:04:53 1339

原创 基础工具-单件模式

作为C++设计模式中的单件模式归属于创建型模式之一,在软件设计过程中“出场“的机会还是很多,以下源码作为自己学习开源库代码时针对单件 模式做的一个总结,方便后期设计过程中的参考和学习。#ifndef SINGLETON_HPP_#define SINGLETON_HPP_#include namespace ts{ /** *@breif *@no

2015-03-04 19:56:10 553

原创 window平台下驱动程序安装/软件分发inf文件学习

INF文件是通过win平台的驱动安装(软件分发)的系统入口调用,解析文件进行驱动(软件)安装与发布文件具体格式:[section] (节名)entry=value[,value] (项)说明: INF文件是一个文本文件,由许多按层次结构排列的节组成,他们以方括号中的节名称开始,如[Version]、[Manufacturer]等,后面是所含有的各个项,如

2015-03-04 19:48:20 2341

原创 ZThread多线程库学习笔记整理三

对于该库的学习和文档资料的整理,我个人把握的主线是以程序实践作为基础,在程序实践的基础上对相关的实现代码进行学习,明确整个库的基本架构层次,学习库的架构设计和库中涉及到的设计思想,以此来提高自己程序结构设计的能力和在代码实现时的设计模式的运用技能。为了方便对库进行跟踪与调试,我决定在自己部署的ZThread的解决方案中建立两个工程,一个是库生成的工程,一个是test工程,主要是为了测试ZThr

2012-10-21 16:30:17 813

原创 ZThread多线程库学习笔记整理二

通过第一阶段的工程部署,多线程管理库ZThread.lib和ZThread.dll已经生成,不过为了更好的使用该库和弄懂该库的实现机制,我们可能需要生成该库的帮助文档,在Linux下,大家可以参考相关的Makefile文件,利用make工具即可很好的生成该doc目录下的html格式的帮助文档,但是需要部署工具doxygen,因为整个文档的注释都是以该工具的语法格式生成的。doxygen工具的下

2012-10-21 15:52:52 818

原创 双缓冲区实现

#include #include #include using namespace boost::interprocess;const int size = 5;struct Data_buff{    Data_buff()        :putSemaphore(2), getSemaphore(0), getMutex(1)    {

2012-06-29 16:54:25 3296

原创 IPC学习,利用互斥体和条件变量实现读者和写者问题

#include class rwMutex{private:    boost::mutex lockMutex;                         // 同步控制互斥变量,控制对标志量得访问    boost::condition_variable_any condWriter;       // 写者条件变量    boost::condition_va

2012-06-26 17:42:53 680

原创 CppUnit部分核心代码之SynchronizedObject(同步对象,支持多线程)

SynchronizedObject (同步对象,支持多线程)说明:使得CppUnit测试框架支持多线程,在实现的过程中主要使用了RIIA的思想,如果单个的测试类需要支持多线程,就需要派生自该类,设置相关的同步机制。预定义宏:在实现的过程中,支持了类得嵌套定义,互斥体和临界区的抽象定义,保证了多线程的访问,其中临界区使用了RIIA的思想。类设计详解:类名:class C

2012-06-24 10:40:48 487

原创 CppUnit部分核心代码之Exception

Exception (异常对象)说明:CppUnit测试框架中的基础异常类,继承于标准C++的exception,主要是捕获当assertion失败时候的异常,在CppUnit框架中异常分为三种:异常、失败、错误(为未知的异常)。出现异常后,包含相关的定位信息(SourceLine)和相关的详细信息(Message),方便进行查找和分析。 预定义宏:类设计详解:类名:c

2012-06-24 10:38:35 457

原创 CppUnit部分核心代码分析之AdditionalMessage

AdditionalMessage (异常信息对象,只包含详细信息)说明:属于Message类得子类,不对简短信息进行构造,只构造详细信息,类似于一个特例,把Message的包含两个参数的构造函数转化为了只需要一个参数(详细信息)的构造过程,对某些情况下适用。预定义宏:类设计详解:类名:class CPPUNIT_API AdditionalMessage: public

2012-06-24 10:37:42 337

原创 CppUnit部分核心代码分析之Message

Message(异常信息对象)说明:对于异常(Exception)产生时候的一些信息说明。预定义宏:类设计详解:类名:classCPPUNIT_API Message类图:成员变量:private:  std::string m_shortDescription;  //简短信息描述  typedef CppUnitDequeDeta

2012-06-24 10:35:59 359

原创 CppUnit部分核心代码分析之SourceLine

一:SourceLine(异常定位点对象)说明:异常定位,实质是对测试点出现异常的地方进行位置定位。在实现的过程中,主要利用了宏定义__FILE__ 和__LINE__来进行定位 。预定义宏:#define    CPPUNIT_SOURCELINE() CPPUNIT_NS::SourceLine(__FILE__, __LINE__ )定义一个的“异常定位点”临时对象,

2012-06-24 10:33:23 497

原创 CppUnit中测试框架的核心组件类图结构

(1)测试用例的基本类图结构整个测试用例的基本组合模式采用了“设计模式”中的经典模式-Composite(组合)的结构性模式,使得用户在基于接口的编程过程中具有很大的透明性。明确如下几个概念:测试用例:是指单个的测试用例,比如测试1==2等。测试环境:是指单个的测试用例在进行测试之前需要准备数据,测试之后需要清理数据,实质是对环境的一个抽象。测试集合:是指具有关联关

2012-06-24 10:29:11 730

原创 CppUnit测试框架中的异常判断宏

TestAssert (名字空间中Assert函数集合)说明:在CppUnit的名字空间中的全局的判定(Assert)函数,提供了多样的判断方法。预定义宏:(1)  CPPUNIT_ASSERT(condition)测试目的:判断condition是否为true,如果是false则抛出异常在进行单元测试的时候用到的最多的测试宏,判断条件condition是true还是f

2012-06-24 10:27:21 1198

原创 CppUnit测试框架使用笔记一

对新框架的学习,一种比较自然的方法就是直接使用,看到运行结果,跟踪运行过程,了解框架的运行流程。就像学习各种编程语言一样,每本书上来都是“Hello world“,那么我的学习过程也是以直接使用框架开始。1、编译CppUnit框架,获得相关的导出库文件和运行时库文件2、设置相关的vs工程3、建立自己的测试框架和测试用例4、运行测试用例5、分析用例的执行过程,获得感性上的认识

2012-03-11 17:12:01 2733

原创 CppUnit初识

概述:        软件测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如JUn

2012-03-11 16:28:11 474

翻译 不同系统下的文件命名规则(部分参考网上资料)

在MS下的一般文件命名习惯Naming Conventions(命名习惯)The following fundamental rules enable applications to create and process valid names for files and directories, regardless of the file system:(在MS中的不同

2012-02-01 22:16:52 990

原创 shared_ptr使用注意事项

罗列出在使用智能指针的时候可能会犯的一些错误:条款1:不要把一个原生指针给多个shared_ptr管理int* ptr = new int;shared_ptr p1(ptr);shared_ptr p2(ptr); 在出作用域的时候,ptr的资源会被释放两次,把握的原则是:出了第一个shared_ptr用原生指针定义外,其后的所有操作都要以智能指针作为对象,在库中提供的几

2011-12-10 17:41:44 1267

原创 smart_ptr之shared_ptr(二)

前面已经介绍了shared_ptr的基本使用,这篇文件主要介绍它的定制器和删除器的部分功能。在一定程度上,删除器使用的概率会大很多。在shared_ptr中有一个构造函数是这样的: template shared_ptr(Y * p, D d): px(p), pn(p, d)    {        boost::detail::sp_enable_shared_from_t

2011-12-10 16:47:07 633

翻译 自定义数据类型中安全的bool转换操作

一:背景需求在自定义数据类型的时候,需要在boolean上下文中判断该数据类型是否有意义(这个是否由意义不是我们所谓的是否为空等,而是根据这个数据类型具体的实现来体现)。例如:boost库中的shared_ptr指针,就可以直接在boolean上下文中判断该对象保存的资源指针是否有效,如果无效,在其中就会返回"false",如果有效就会返回"true".可能看过boost库源代码的朋友都知道,

2011-12-06 22:07:45 2211

原创 smart_ptr之shared_ptr

一、介绍引用计数指针       几乎所有稍微复杂点的程序都需要某种形式的引用计数智能指针。这些智能指针让我们不再需要为了控制被两个或多个对象共享的对象的生存期而编写复杂的逻辑。当引用计数降为零,没有对象再需要这个共享的对象,这个对象就自动被销毁了。引用计数智能指针可以分为插入式(intrusive)和非插入式(non-intrusive)两类。前者要求它所管理的类提供明确的函数或数据成员用于

2011-12-04 17:35:07 867

原创 smart_ptr学习之scoped_ptr

类如其名:scoped_ptr,仅仅只在自己的作用域内才可以使用,出了自己的作用域就自动进行析构。不同于auto_ptr,不支持所有权的转移,同时把自己的拷贝构造函数、赋值操作符等相关的成员函数设定为私有函数,更进一步的“巩固”了“一切尽在我掌握中”的自信。因为不支持这些操作,所以对于所有权是完全不会转移,这是与auto_ptr最大的不同点。同时,因为scoped_ptr在实现上仅仅是

2011-11-27 22:21:55 809

原创 内存管理之智能指针一:stl中的auto_ptr智能指针

一、智能指针作为一种内存管理技术主要为了解决什么问题?(属于个人理解)1、一般在应用软件的开发过程中,应用程序的代码执行基本上都是通过以下几个步骤来完成:(1)获取资源(内存、文件句柄、数据库连接等);(2)执行功能代码;(3)释放资源;可能资源的获取相对而言是一个比较容易处理的过程,以内存为例,通过new操作符即可进行内存资源的获得,但是在应用实现的过程中,可能程序员不能保证

2011-11-20 17:58:45 720

空空如也

空空如也

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

TA关注的人

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