李sir_Blog

博客园 首页 联系 订阅 管理
上一页 1 ··· 33 34 35 36 37 38 39 40 41 ··· 71 下一页

2011年3月28日

摘要: 软件总存在这样或者那样的bug。虽然测试员已经在很努力的寻找问题,程序员也在汗流浃背的除虫,但是总会有一些情况被遗漏或者不可预测,比如用户的硬件环境、网络状况、操作系统差异等等,不一而足。而导致的结果则是弹出下面这样一个让用户摸不着头脑又恼火的提示,然后崩溃掉,令程序员尴尬不已。而在一些成熟的软件产品中,程序崩溃时我们看到的却是另外一番画面,比如QQ:又比如迅雷:你也想让你的程序拥有友好的崩溃界面,降低用户生气的能量,并且收集一些必要的信息进行调试,来完善你的程序吗?如果你是MFC程序猿,请继续围观,其他猿类请自行无视,并寻找适合你的猿粪。其实MFC框架已经为我们考虑到这个问题,只是默认生成的 阅读全文
posted @ 2011-03-28 17:16 李sir 阅读(3789) 评论(0) 推荐(0)

摘要: 参考:http://blog.csdn.net/ArCoolGG/archive/2007/04/05/1553027.aspx首先,写一个 异常处理函数。std::ostream& operator << ( std::ostream& os, const EXCEPTION_RECORD& red ){ //return os << " Thread ID:" << GetCurrentThreadId()<< " ExceptionCode: " << red.Ex 阅读全文
posted @ 2011-03-28 17:09 李sir 阅读(1750) 评论(0) 推荐(0)

摘要: ACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难。ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。最近分析ASIO的源代码,让我无不惊呀于它设计。在ACE中开发中的内存管理一直让人头痛,ASIO的出现,让我看到新的曙光,成为我新的好伙伴。简单地与ACE做个比较。1.层次架构:ACE底层是C风格的OS适配层,上一层基于C++的wrap类,再上一层是一些框架(Accpetor, Connector,Reactor等),最上一层是框架上服务。ASIO与之类似,底层是OS的适配层,上一 阅读全文
posted @ 2011-03-28 15:56 李sir 阅读(1154) 评论(0) 推荐(0)

2011年3月22日

摘要: 1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDontLinger = FALSE;setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLing 阅读全文
posted @ 2011-03-22 10:18 李sir 阅读(825) 评论(0) 推荐(0)

2011年3月21日

摘要: 打开D:\oracle\product\10.2.0\db_1\network\admin下的sqlnet.ora修改SQLNET.AUTHENTICATION _SERVICES=(NONE) 阅读全文
posted @ 2011-03-21 16:33 李sir 阅读(636) 评论(0) 推荐(0)

摘要: void main() { LARGE_INTEGER lv; // 获取每秒多少CPU Performance Tick QueryPerformanceFrequency( &lv ); // 转换为每个Tick多少秒 double secondsPerTick = 1.0 / lv.QuadPart; for ( size_t i = 0; i < 100; ++i ) { // 获取CPU运行到现在的Tick数 QueryPerformanceCounter( &lv ); // 计算CPU运行到现在的时间 // 比GetTickCount和timeGetTime 阅读全文
posted @ 2011-03-21 11:06 李sir 阅读(667) 评论(0) 推荐(0)

摘要: 精确的时间计时,有时候是非常必要的。比如播放多媒体时视频与音频的时间同步,还有在测试代码的性能时,也需要使用到非常精确的时间计时。还有测试硬件的性能时,也需要精确的时间计时。这时就需要使用QueryPerformanceCounter来查询定时器的计数值,如果硬件里有定时器,它就会启动这个定时器,并且不断获取定时器的值,这样的定时器精度,就跟硬件时钟的晶振一样精确的。QueryPerformanceCounter 查询性能计数器 The QueryPerformanceCounter function retrieves the current value of the high-resolu 阅读全文
posted @ 2011-03-21 11:05 李sir 阅读(1690) 评论(0) 推荐(0)

摘要: 1.boost::any boost::any是一种通用的数据类型,可以将各种类型包装后统一放入容器内最重要的它是类型安全的。有点象COM里面的variant.使用方法:any::type() 返回包装的类型any_cast可用于any到其他类型的转化 #include < boost / any.hpp > void test_any() {typedefstd::vector < boost::any > many;manya;a.push_back( 2 );a.push_back( string ( " test " )); for (uns 阅读全文
posted @ 2011-03-21 10:57 李sir 阅读(10453) 评论(1) 推荐(1)

摘要: Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计。有关log4cxx的更多信息可以从Apache Loggin Service的网站http://logging.apache.org获得。当前的最新版本为0.10.0,本文内容及示例代码都是基于此版本。可以从官方网站(http://logging.apache.org/log4cxx/index.html)获取源代码,下载版本为apache-log4cxx-0.10.0,下载完成后解压缩到合适目录 阅读全文
posted @ 2011-03-21 10:46 李sir 阅读(4671) 评论(0) 推荐(0)

2011年3月14日

摘要: 程序集(Assembly)是.NET程序的最小组成单位。每个程序集都有自己的名称、版本等信息。程序集通常表现为一个文件(.exe或.dll文件),这样的程序集被称为单文件程序集,这种程序集是最常见的。程序集也可以由多个文件组成,每个文件都是一个模块文件或者是一个资源文件,这样的程序集被称为多文件程序集。下面来了解一下如何生成单文件程序集和多文件程序集。1. 单文件程序集的生成这是最常见的程序集,使用 Visual Studio 只能生成单文件程序集。使用 csc.exe 能够很轻松地生成单文件程序集:csc.exe /target:library /resource:Hello.jpg Hel 阅读全文
posted @ 2011-03-14 10:04 李sir 阅读(1676) 评论(2) 推荐(0)

上一页 1 ··· 33 34 35 36 37 38 39 40 41 ··· 71 下一页