自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(30)
  • 收藏
  • 关注

原创 crash dump的捕捉原理

现在有很多软件崩溃的时候,就会自动启动另外一个exe程序来捕捉崩溃软件的dump信息。原理其实非常的简单, 如图所示:    问题:1. 为什么不把捕捉dump的功能放在同一个进程里呢?而是另外再起一个进程?我觉得可能原因是:既然这个进程已经崩溃了,那么如果还在这个进程里执行代码(譬如弹出一个告诉用户程序崩溃的窗口)可能会出问题。放到另外一个进程里去做事情更安全一些。

2010-04-16 11:41:00 1439

原创 硬盘丢失问题的解决办法

 我用的是Windows XP系统,刚才正在Vmware的Linux虚拟机系统里写着程序呢。突然间,机器僵死,Windows任务栏的右下角提示硬盘"延缓失败"。赶紧重启系统,花了好几分钟才进入系统,这时候发现第二块硬盘挂载的"F:"盘不见了。 内网提交IT故障,指望着IT同事赶紧帮忙解决。几分钟过去了,人还没来。于是干脆自己跑过去直接找IT同事了,没人理:(, 算了,还是自己动手解决吧。

2010-04-15 11:42:00 708

原创 BorlandTogether使用指南

 . 在官网下载Together2008SP1WW_TR.exe,下载前会要求填份表格,随便填吧,填完就可以下载了,要填的表单项还真多. 安装Together. google下载破解包com.borland.sanctuary.client.core_6.0.0.rar,将解压后的两个jar文件覆盖C:/Borland/Together/dropins/together/eclipse/plu

2010-04-14 20:01:00 3159

原创 vc调用堆栈的bug?

查看vc的调用堆栈中的外层调用函数,在vc的源代码编辑框中,绿色箭头所指的代码的行号总是位于真正被调用代码的后面一行(偏差1, call stack offset 1, offset one, behind, for search engine && curious guy like me only).因为csdn不能上传图片,很难表述清楚。 想了一下,一开始认为是vc的bug, 从编译器

2010-02-21 15:12:00 1083

原创 Firefox上IETab插件造成的一个问题

这两天给阿里旺旺的一个客户解决firefox无法登陆公司某个网站的问题。firefox浏览器会去执行一个html文件,文件体是一个form,在load的时候就会自动用post方式提交表单信息,但是firefox执行失败。无奈之下,让客户协助安装了wireshark抓包软件,从客户机器上抓取了http包进行分析,发现firefox执行表单的时候居然是get方式。怀疑是firefox上的插件影响,于是

2010-01-27 09:53:00 2175

原创 log4cpp回滚文件机制

回滚文件配置:log4j.appender.RootFileAppender=org.apache.log4j.RollingFileAppenderlog4j.appender.RootFileAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.RootFileAppender.layout.ConversionPatte

2010-01-18 11:55:00 2908 1

原创 虚函数默认参数的问题记录

 刚看了看项目里的问题,对虚函数默认参数的问题有点儿遗忘,翻了翻资料: #include "stdafx.h"class Base{public: virtual void foo(int i = 3) = 0;};class Derived: public Base{public: virtual void foo(int i = 5) {

2009-08-03 14:56:00 446

原创 如何打印C++堆栈?文章推荐

看了项目里面的一段代码,是以前老大写的,在DEBUG下打印调用堆栈。 基本思想是通过ebp来回溯堆栈,获得上一层函数的调用行地址,然后通过dbghelp的相关函数,读取对应的行号和符号信息。 google了一下,也谈Release版本排错 这篇文章讲解地更仔细,本想亲手实践一番,突然觉别人总结地非常好,另外原理自己也明白了,剩下的实现工作也突然觉得没什么兴致了。

2009-07-10 14:17:00 2197

原创 函数模板为什么没有偏特化?问题解答

推荐Herb Sutter的文章:Why Not Specialize Function Templates?  通过该文,明白了:1. 没有函数偏特化,仅仅是因为C++标准语言说不行(you cant partially specialize them -- pretty much just because the language says you cant),另外我觉得有了函

2009-07-09 09:51:00 7062 2

原创 bug分享 - 收不到WM_NCLBUTTONUP消息

重载windows的ncarea来自绘窗口标题栏是条死路(在Vista系统上,如果主题带有毛玻璃效果,那么无论你的窗口标题栏如何自绘,都会把系统的标题栏覆盖在自绘的标题栏上),因此自绘标题栏的唯一办法就是在客户区模拟非客户区,"伪造"实现标题栏的功能。我的这篇文章有些误人。这篇文章的目的只是为了讲述以前曾经遇到的一个问题。NCLBUTTONUP表示non-client left butto

2009-06-03 21:47:00 4966 5

原创 Use Y method to solve Problem X

在远程一台机器上的vmware上安装了Fedora Linux虚拟机, 并且安装了个Apache,将远程机的6666端口映射到了虚拟机上的80端口,这样其他机器就可以通过远程机的ip地址加上6666端口就可以访问虚拟机上的80端口也就是Apache HTTP Server的端口了。 发现映射SSH(22端口)的端口,其他机器可以通过远程机的22端口SSH上虚拟机;但是其他机器通过6666端

2009-06-03 10:30:00 487

原创 使用perl的Mail::SendEasy模块来发送邮件

准备为现在的项目弄一个自动编译系统,初步采取用脚本语言自己写,比较好控制。这次不准备用python写,想用用perl,今天下午看了一下午的perl的语法和使用,下面是我的自动编译系统里的发送邮件代码(自动编译系统还没完全实现好):1. 从163邮箱的id为yourid@163.com发送邮件到dest@foo.com   1 #! /usr/bin/perl -w  2  3 us

2009-05-26 18:26:00 864

原创 让外网访问vmware虚拟机

最近在做一个项目,在vmware虚拟机上运行了apache,外网需要通过http请求虚拟机。因此将host机(本机)的某个端口映射成虚拟机上的80端口,这样外网只要向本机进行请求便可。虚拟机的网络设置成NAT方式:Edit ->Virtual Network Settings...->NAT->Edit->Port Forwading...->8888映射成虚拟机ip机器上的80端口

2009-05-25 18:59:00 4395 1

原创 操作系统杂想

操作系统最重要的是和硬件交互的部分。硬件可以不停演变,但是OS和硬件的交互可以抽象出来,譬如磁盘的文件系统,不管换成什么样的磁盘,文件系统可以抽象出来;再比如I/O(输入输出系统),不管是什么样的输入输出设备(键盘, 触摸屏,crt显示器,液晶显示器),I/O功能也都可以抽象出来。理解了OS的每个部分的抽象,也就能真正理解了一个OS是如何实现的,不管以后硬件演变成什么样子,在OS层做好软件的抽象,

2009-05-22 14:27:00 359

原创 简单对项目中的类做单元测试

 Test comes first!Visual Studio上的项目中一般有几种类型的工程,静态库(.lib), 动态库(.dll)以及我们的主工程(.exe), 每个工程里都分布着许多类,现在在写代码时要对这些类做一些单元测试, 我使用的Unit Test框架还是google test。挑战:如果一个类部署在dll中,则对应的该类单元测试显然也放在这个dll中比较好,但是要运行单元

2009-05-22 10:03:00 768

原创 参观机房

     昨天下午和几位同事一起去参观了公司委托在中国电信的机房。终于明白了什么是刀片式服务器, 所谓的IDC(International Data Center),也见到了传说中的几百万的像堵墙巨震撼的IBM小型机,还见到了服务器集群所用的硬件负载均衡器。看来做互联网公司,不下巨本是严重不靠谱的,当然如果只是刚开始创业,估计有那么两小片刀片式服务器(加起来和一个普通硬盘尺寸差不多大小)也就KO了

2009-05-22 09:47:00 1104

原创 lstrcpyn和strncpy

刚才写程序,偷了个懒,使用了lstrcpyn来进行unicode的字符拷贝,结果发现少拷贝了一个字符,看了下MSDN:TCHAR chBuffer[512];lstrcpyn(chBuffer, "abcdefghijklmnop", 4);chBuffer的结果为abc, 也就是指定了长度4,拷贝3个字符,同时加一个/0字符。而strncpy(unicode版本为_tcsnc

2009-05-21 12:28:00 5109

原创 将Window窗口程序改成Windows 控制台程序

刚刚在为项目搭建单元测试框架, google test必须要求在控制台下显示,因此将项目的窗口程序改成了控制台程序。 #pragma comment(linker, "/subsystem:console")同时将WinMain修改成main。 常见错误:1. #pragma comment(linker, "/ENTRY:main")     编译时提示存在.CR

2009-05-21 11:12:00 2764

原创 gcc内联汇编的一个注意点儿

《Linux内核情景分析》举了一个内联汇编的例子:static __inline__ void atomic_add(int i, atomic_t *v){ __asm__ __volatile__( LOCK "addl %1, %0" :"=m"(v->counter) :"ir

2009-05-05 10:10:00 769

原创 罗马数字攻略

罗马数字(roman numerals)也是和阿拉伯数字一样的计数系统,由于阿拉伯数字实在方便强悍,罗马数字便中道败落,使用的人越来越少了。目前钟表的时间刻度,书的章节数上还经常出现老兄的踪影(也许是习惯,也许是美感?我倾向于第二种,用字母来表示数字本身就有一种美感在里面)。 今天练习了一下,以下是攻略:1.  罗马数字使用字母来表示数,一共只要I(1), V(5), X(10), L

2009-05-04 14:11:00 1965 1

原创 唯一靠谱的编译内核指南

准备正儿八经地hack一下Linux的kernel(平时都是小打小闹一些入门教材), 因此准备给Vmware虚拟机上的ubuntu的kernel替换成最新的2.6.29.1版本。 学习到的知识:1. linux两阶段boot加载知识(如果写过简单的boot loader,这点儿是非常容易明白的)2. grub(在开机加载内核的时候,按esc可以动态选择需要加载的内核,或者按e编辑当

2009-04-23 15:20:00 407

原创 只要是个程序 就有不成的时候

刚在论坛上发了个帖子: grep的-i选项表示忽略大小写,问题如下: /usr/include/asm-generic/errno.h里有EWOULDBLOCK的定义 但是我在asm-generic目录下,grep -i wouldblock *搜索出来的却是没有任何结果, grep WOULDBLOCK * 则能搜索出结果 热心网友就回复了我,他的机器上ok的,怀疑是我的

2009-04-16 11:09:00 283

原创 tee命令的一个妙用

自学linux至今,一路磕磕绊绊,遇到无数问题,有了互联网再加上linux自身十分强大的功能,这些问题也都顺利自行解决了。今天就遇到一个问题,继续感叹在linux下开发的便捷性。 问题描述:> gdb(gdb) help all键入gdb, 然后在gdb内键入help all,这样就打印出来了所有的gdb的命令帮助说明,我想将这些命令的帮助说明存到一个文件中,然后用less或g

2009-04-14 12:15:00 2803

原创 我的项目Makefile文件模板

今天看到"那谁的技术博客"的我的项目Makefile文件模板。平时在linux上小打小闹, 上上周,恰好自己准备做个linux的C++项目(我的第一个linux项目), ,因此自己也整理出来了一套Makefile模板,一共花了三天时间才全部写完, 一直想抽空整理一下, 今天恰好看到“那谁”的分享, 我这里也分享一下。 项目分模块,不同模块的代码放在不同的文件夹下,main.cpp(包含ma

2009-04-08 13:18:00 1742

原创 解析数值二进制位的python工具

在hack kernel的时候,遇到了GDT,GDT descriptor一共有64位,不同的位代表不同的含义。譬如它的值是0x00cf9a000000ffff,那么具体每位代表什么呢? 因此写了个python工具,来解析一个数值每位的含义。文本格式如下: gdtFmt = [         ("0:15,48:51", "limit", "the whole limit")

2009-04-08 10:52:00 1580 1

原创 推荐一个shell命令 - a

以下讨论bash: 经常遇到这种情况, 先输入一个命令,终端出来很多信息,接着输入另外一个命令,又出来很多信息,实在很难分清到底哪些是第二个命令的结果。 下面这张图是svn help co和svn help ci两条命令显示出来的结果,找出第二条命令的输出结果十分头疼。 有一个办法就是先清屏(clear),然后再输入命令,这样整个屏幕的信息就是当前命令的结果。 

2009-03-27 17:08:00 2700 1

原创 SCSI和IDE硬盘

linux虚拟机硬盘空间吃紧,赶紧添加一块新硬盘,自动挂载。看了vmware提供的硬盘类型,有SCSI和IDE,查了一下区别,记住下面两条: 1. SCSI贵,性能好,CPU占用率低,服务器用的比较多2. IDE性价比好,适合PC机 SCSI是Small Computer System Interface(小型计算机系统接口)的缩写 高级技术附件规格(Advanced

2009-03-26 09:50:00 451

原创 几次处理客户问题小感

今天是3.15, 最近处理阿里旺旺的一些客户问题有了些感受,一直想记录一下,难得今天有写东西的兴致,就落笔谈谈处理阿里旺旺消费者问题的一些经验吧。 我们的旺旺已经有了崩溃处理系统,当阿里旺旺客户端崩溃时,可以将现场的崩溃信息发送到服务器用来事后定位问题,但还是会有一些功能性的非崩溃的问题会出现。这个时候,客户一般通过会先找到客服,然后客服再找工程师来解决问题。确定现场旺旺是什么版本的?

2009-03-15 17:42:00 788

原创 运用敏捷实践解析bt种子文件

  出于某种"卑劣"念头,我产生了自己动手做个bt下载工具的想法。同事洪俞也十分有兴趣,于是我们组成pair,利用下班后的时间开始重新发明轮子。  简单看了看bt的相关资料,第一步要做的肯定是解析bt种子文件-torrent文件。格式譬如见这里(http://www.blogjava.net/huyi2006/articles/241632.html?opt=admin)。包含了字符串,数字,

2009-03-15 17:02:00 2513

原创 浅谈log4cpp接口字符串参数类型的设计

log4cpp是个开源项目的C++日志库,该库的license是LGPL, 我们的项目里使用了它。它的接口字符串参数类型全是std::string,只支持窄字符字符串。以前的同事更改了log4pp库的部分源码,使接口字符串参数可以处理std::wstring(宽字符字符串),我们的项目里使用到的字符串恰好都是std::wstring类型的。 出于对开源价值的认同,我认为:? log4cpp和log

2009-03-15 15:26:00 1839

空空如也

空空如也

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

TA关注的人

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