我们使用Windows都知道,整个Windows和微软提供的应用软件的稳定性和崩溃后的体验是逐步提升的。在大牛的作品《软件调试》 中有描述。

在Windows下,软件出错,常见的报告手段:

1、事件日志:这里记录了很多关键的错误信息

2、崩溃报告:可以自动提交错误的信息,或者手动提交,以不断的改进软件和方便排错

3、专用的日志工具:如Netmon,sysinternal等

 

那我们的软件在崩溃后如何处理呢?主要目的:

1、方便我们的排错

2、提供更好的使用体验

最近在设计一个应用系统时对这个问题进行处理。

这方面有比较多的参考:

首先在stackoverflow上可以看到,c++ release  program crashes report 

http://stackoverflow.com/questions/112831/how-to-get-a-stack-trace-when-c-program-crashes-using-msvc8-2005

以上有比较多的框架和工具

Windows应用程序处理的一个框架和详细参考资料 

Integrating Crash Reporting into Your Application - A Beginners Tutorial

http://www.codeproject.com/Articles/308634/Integrating-Crash-Reporting-into-Your-Application

http://code.google.com/p/crashrpt/  

http://www.codeproject.com/Articles/1934/Post-Mortem-Debugging-Your-Application-with-Minidu 

Google breakPad

Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,他支持Windows,Linux和Mac和Solaris。由于他本身跨平台,所以很大的减少我们在平台移植时的工作,毕竟崩溃转储,每个平台下都不同,使用起来很难统一,而Google breakpad就帮我们做到了这一点,不管是哪个平台下的崩溃,都能够进行统一的分析。现在很多工程都在使用他:最著名的几个如Chrome,Firefox,Picasa和Google Earth。另外他的License是BSD的,也就是说,我们即便是在商业软件中使用,也是合法的 

 http://code.google.com/p/google-breakpad/ 

http://bigasp.com/archives/450 

 

 调试Release发布版程序的Crash错误

 http://www.cppblog.com/Walker/articles/146153.html

http://blog.sina.com.cn/s/blog_48f93b530100fsln.html 

 

对于托管程序也有 Good crash reporting library in c#

http://stackoverflow.com/questions/49224/good-crash-reporting-library-in-c-sharp 

  

顺便看到了这个比较有意思的内容,35个你也许不知道的Google开源项目 http://www.enet.com.cn/article/2009/1228/A20091228592251.shtml 

 

由于我的应用 需要处理跨平台问题,因此使用了Google breakPad

顺便把整理的资料放在了skydriver上,   

https://skydrive.live.com/#cid=56B433AD3D1871E3&id=56B433AD3D1871E3%21427

https://skydrive.live.com/view.aspx?cid=56B433AD3D1871E3&resid=56B433AD3D1871E3%21433 

 

 

posted @ 2012-05-18 08:48 2012 阅读(1358) 评论(0) 编辑

Oracle数据库压力测试工具SwingBench

http://www.dominicgiles.com/downloads.html

Hammerora is an open source load test tool for the Oracle, Microsoft SQL Server,
MySQL and PostgreSQL Databases and Web Applications

http://hammerora.sourceforge.net/

ammerora is an open source load test tool for the Oracle, Microsoft SQL Server,
MySQL and PostgreSQL Databases and Web Applications

http://blog.sina.com.cn/s/blog_4dd475390102e8wb.html

super-smack

http://softtest.chinaitlab.com/qtjs/802678.html

Jmeter

http://jmeter.apache.org/usermanual/build-db-test-plan.html

Orastress! for Oracle

http://www.linxcel.co.uk/software_orastress.html

http://www.jayphilips.com/2010/01/07/50-open-source-performance-testing-tools/

50+ Open Source Performance Testing Tools

http://www.opensourcetesting.org/

http://www.agiledata.org/essays/databaseTesting.html

数据库性能测试测试工具 Quest Spotlight

http://www.eygle.com/index-special.htm

  • 使用ORION测试HP StorageWorks MSA1000存储 December 25, 2007
    在当前存储配置下,IO最大吞吐量可以达到138M/s,iops稳定状态达到2800左右,而Latency在Load Level 30左右的时候达到10ms。
  • Linux单磁盘IO速度概要 July 14, 2007
    昨天测试一个朋友的系统,Dell的新服务器,型号未知,5x300G Disk Raid5的配置,结果简单的测试下来,IO速度仅仅能达到8M/s左右。
  • 使用orastress!进行数据库压力测试 October 18, 2004
    Orastress!的作者是Geoff Ingram,也就是我们前面介绍的orabm的作者,他曾经为Oracle工作数年,是High Performance Oracle" (ISBN: 0471224367)一书的作者.
  • 使用orabm进行CPU压力测试... October 18, 2004
    orabm是一个开源的系统CPU性能测试工具...
  • 使用Bonnie进行系统IO性能测试 October 18, 2004
    Bonnie是一款极小的测试系统IO性能的工具,源代码公开..
  • 使用Bonnie++进行系统IO性能测试 October 18, 2004
    由于Bonnie存在一些众所周知的问题,比如>2G的文件支持. Russell Coker 开发了一套新的代码,用以支持>2G的文件等,得到Tim Bray (tbray@textuality.com)的许可之后,Russell把他的软件命名为bonnie++,在网上发布,并开始流行起来.
  • 如何安装和使用orabm October 18, 2004
    简要介绍orabm的安装...
  • 如何实施Benchmark测试-你需要怎样的测试 October 18, 2004
    我们以存储测试为例,你不仅需要为服务器、HBA、光纤交换机、RAID承担开销,而且还需要承担诸如文件系统、卷管理器等大量软件费用.
  • 如何实施Benchmark标准测试-问题的提出及Tpc-C标准 October 18, 2004
    在大系统设计过程中,经验显示是不足够的,你必须拿出足够的证据来说明你的架构,你的系统必须在理论上能够满足用户的需求. 到这里我们已经看到,一个最重要的内容被引入了,那就是:用户需求.
posted @ 2012-05-10 11:34 2012 阅读(58) 评论(1) 编辑

搜索关键词

C++ 网络库 Network Library TCP Server

网络库总结

开源C/C++网络库比较

http://blog.csdn.net/langeldep/article/details/6976120

在开源的C/C++网络库中,常用的就那么几个,在业界知名度最高的,应该是ACE了,不过是个重量级的大家伙,轻量级的有libevent, libev,还有 Boost的ASIO。

ACEhttp://www.cs.wustl.edu/~schmidt/ACE.html

ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候,要根据情况,看你从那一层来进行使用。支持跨平台。

ASIOhttp://think-async.com/

Boost的ASIO是一个异步IO库,封装了对Socket的常用操作,简化了基于socket程序的开发。支持跨平台。

libevent

libevent是一个C语言写的网络库,官方主要支持的是类linux 操作系统,最新的版本添加了对windows的IOCP的支持。由于IOCP是异步IO,与linux下的POLL模型,EPOLL模型,还有freebsd的KQUEUE等这些同步模型在用法上完全不一致,所以使用方法也不一样,就好比ACE中的Reactor和Proactor模式一样,使用起来需要转变思路。如果对性能没有特别的要求,那么使用libevent中的select模型来实现跨平台的操作, select模型可以横跨windows, linux, unix,solaris等系统。

libev

libev是一个C语言写的,只支持linux系统的库,我以前研究的时候只封装了EPOLL模型,不知道现在的新版有没有改进。使用方法类似libevent,但是非常简洁,代码量是最少的一个库,也就几千行代码。显然这样的代码跨平台肯定是无法支持的了,如果你只需要在linux下面运行,那用这个库也是可以的。

Muduohttp://code.google.com/p/muduo/

http://blog.csdn.net/solstice/article/category/779646

http://code.google.com/p/muduo/

POCOhttp://pocoproject.org/

http://blog.csdn.net/zhangxinrun/article/details/5914100

POCO的优点:
1) 比boost更好的线程库,特别是一个活动的方法的实现,并且还可设置线程的优先级。
2) 比 boost:asio更全面的网络库。但是boost:asio也是一个非常好的网络库。
3) 包含了一些Boost所不包含的功能,像XML,数据库接口等。
4) 跟Boost相比,集成度更高,是更加统一的一个库。
5) Poco的c++代码更清洁,现代和易理解。对不是模板编程专家的人来说,POCO的代码比大多数Boost库容易理解得多
6) 可以在许多平台上使用
POCO的缺点:
1) 文档有限。但这一定程度上是因为代码的容易理解。
2) 跟Boost相比用户社群小得多。
3) 有多少能集成进C++标准是个问题。而Boost在这方面不是个问题。
许多POCO的用户把POCO和Boost一起并用。
Boost是高质量的库,但它不是个框架。
Boost:asio处理高并发的效率还可以。单连接吞吐稍微弱点。 如果选用,最好封装好,别让boost代码吞噬你的代码,那样最后不可收拾。呵呵。
asio在windows下效率是最好的。基本接近自己在iocp上开发的效率。在linux下,他默认选用epoll, 但中间为了做了层stream cache, 效率稍有损失。而且他的epoll规则用的不太合理,可以自己修改他的代码,达到自己的需求。
在freebsd下,他默认是select的,要自己修改他的代码条件编译,才可以支持kqueue

http://www.cppblog.com/richbirdandy/archive/2010/09/10/123994.html

比较

http://stackoverflow.com/questions/992069/ace-vs-boost-vs-poco

http://stackoverflow.com/questions/474840/boost-vs-ace-c-cross-platform-performance-comparison

Boost.Asio和ACE之间关于Socket编程的比较

http://blog.csdn.net/summerhust/article/details/6595321

信息交换协议

基于 Google protobuf 的 webgame 网络协议设计

http://www.slideshare.net/laiyonghao/google-protobuf-webgame

http://zzk.cnblogs.com/s?w=blog%3ASolstice%20protobuf%20

软件系统开发中的数据交换协议

http://www.infoq.com/cn/news/2011/05/sl-data-exchange-protocol

参考资料

http://webservices.ctocio.com.cn/354/12203854.shtml

http://blog.csdn.net/yuyin86/article/details/6562611

服务器设计和开发的体会

http://www.kuqin.com/system-analysis/20080614/9506.html

http://www.cplusplus.com/

http://www.oschina.net/project/tag/145/networklib?lang=0&os=0&sort=view

posted @ 2012-05-03 12:40 2012 阅读(413) 评论(0) 编辑

首先Java下根据JDBC规范连接数据库,有几种形式,参考 

http://djdnmq.iteye.com/blog/356468 oracle 驱动oci thin 区别

 

Oracle客户端准备

10201_client_linux32.zip

安装完成后,需要确保在终端中可以正确的执行sqlplus命令

Oracle环境变量

如果Tomcat是服务,需要把Oracle的安装环境变量写到TOMCAT中,类似如下

Tomcat加入/home/**/apache-tomcat-6.0.35/bin/catalina.sh开头,当前的用户加入:.bash_profile的末尾,具体的内容如下: 

export ORACLE_HOME=/home/ ** /oracle/product/10.2.0/client_1

export ORACLE_BASE=/home/ ** /oracle/product/10.2.0

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME:$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib:${LD_LIBRARY_PATH}

 

建立到目标数据库的TNS连接

类似在/home/**/oracle/product/10.2.0/client_1/bin执行./netmgr

建立到目标数据库的TNS名字,此时就可以使用JDBC的OCI形式访问Oracle数据库了

 

Web容器访问Oracle出现如下错误的一些参考资料 

no ocijdbc10 in java.library.path

 https://forums.oracle.com/forums/thread.jspa?threadID=290097

 https://forums.oracle.com/forums/thread.jspa?threadID=615281

- JDBC Thin Driver 
100% Java client-side JDBC driver for use in client applications, middle-tier servers and applets.

- JDBC OCI Driver 
Client-side JDBC driver for use on a machine where OCI is installed.

- JDBC Thin Server-side Driver 
JDBC driver for use in Java program in the database to access remote Oracle databases.

- JDBC Server-side Internal Driver Server-side JDBC driver for use by Java Stored procedures. This driver used to be called the "JDBC Kprb Driver". 

 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc101040-094982.html

 https://forums.oracle.com/forums/thread.jspa?threadID=290097 

 

posted @ 2012-05-01 15:38 2012 阅读(70) 评论(0) 编辑
posted @ 2012-04-24 09:19 2012 阅读(63) 评论(0) 编辑
摘要: Visual Studio Team Explorer Everywhere 2010主要包含两大组件,参考图: ●Team Explorer Everywhere:它是Eclipse的Plug-in组件,让Eclipse能够使用TFS的版本管控、工作项目(Work Item)、Team Build、以及报表等功能,它提供类似Team Explorer、Pending Changes等窗口,操作起来与原来的Visual Studio十分接近。 ●Cross-Platform Command-Line:在Unix-based系统,很多情况是没有X-window,意思是没有图形化用户界面...阅读全文
posted @ 2012-04-12 08:29 2012 阅读(103) 评论(0) 编辑
摘要: 我们在开发时需要直接连接发布的数据库有时比较麻烦,而自己安装很麻烦特别是在Linux环境下,各种Linux环境的依赖包有时都需要自己去找。如下的一些虚拟机是oralce官网已经安装好的Linux环境,直接下载使用即可,这样我们开发或测试等时候可以单机把一些相关的情况都搞定了。Pre-Built Developer VMs (for Oracle VM VirtualBox)Learning your way around a new software stack is challenging enough without having to spend multiple cycles on t阅读全文
posted @ 2012-04-09 18:07 2012 阅读(205) 评论(0) 编辑
摘要: Linux基础版之软件安装 Redhat5版本软件包使用yum管理,因此如果需要增加软件时需要使用联网;如果想从光盘安装,采用如下步骤: 1、 挂载光盘 建立光盘目录mkdir /home/demo/rhel5 挂载光盘镜像文件mount -o loop rhel-server-5.4-i386-dvd.iso/home/demo/rhel5 或使用光盘挂载mount /dev/cdrom/home/demo/rhel5 2、 Yum设置 Ø cd /etc/yum.repos.d Ø 增加一个local.repo的文件,内容如下: [Server] name=Red Ha阅读全文
posted @ 2012-04-08 15:41 2012 阅读(132) 评论(0) 编辑
摘要: 正在读的书 12 ESSENTIAL SKILLS FOR SOFTWARE ARCHITECTS DAVE HENDRICKSEN ISBN 978-0-321-71729-0 This book assumes that you already have the requisite technical skills to become an architect; as such, it does not focus on these types of skills. Instead, this book focuses on 12 essential soft skills tha...阅读全文
posted @ 2012-04-03 10:44 2012 阅读(77) 评论(0) 编辑
摘要: Sharepoint 2010定制网站模板时,由于操作时可能有一些不需要的功能历史信息,导出时会包含进wsp文件,如果部署到新的站点上,由于没有依赖会出错,此时我们可以通过手工简单的修改一下即可模版制作这个参考MSDN或使用Sharepoint Designer设计和导出即可模版定制1、在SPD中把网站保存为模版,注意以 如下形式 命名 如 http://***/demo/_layouts/savetmpl.aspx 文件名: demo 模板名称: 演示 模板说明: 演示站点模版 包含内容根据需要勾选 [这样命名修改和压缩时不用修改了] 2、在站点集根网站,解决方案中下载demo.w...阅读全文
posted @ 2012-04-01 08:25 2012 阅读(1106) 评论(0) 编辑