自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Eric的博客

Enjoy Programming

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

原创 [linux] 创建daemon进程

方法一: 使用传统的fork()函数。示例代码如下: static void daemon_init ( const char *workdir, mode_t mask ) { int i, j; /* * change working directory, this step is optional */ chdir( "/tmp" );

2007-06-04 14:47:00 4206

原创 [C#] 如何通过TcpClient取得remote ip和port

在我们用TcpListener.AcceptTcpClient()接收连接之后,我们迫切需要有一个方法可以得到对方的ip和port。这样,我们才可以查看是谁从哪里连到了我们的server上。切入点在于TcpClient有一个protected的成员Client,这是一个System.Net.Sockets.Socket类型的对象。而我们知道System.Net.Sockets.Socket对象是可

2007-06-01 15:23:00 15781 5

原创 [linux] SIGPIPE信号处理

在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。调用以下代码,即可安全的屏蔽SIGPIPE:    struct sigaction sa;    sa.sa_handler = SIG_IGN;   

2007-05-22 16:39:00 8108 2

原创 [linux] x server can not start under VMWare

前些天redhat发布了最新的advanced platform,或者俗称rhel5或者as5。我下载了一份然后安装到了我的虚拟机上,VMWare的版本是5.5.2 build29772。安装没问题,但是用startx启动x window的时候,有以下错误: X Window System Version 6.8.1 Release Date: 17 September 2004 X Protoc

2007-04-03 16:38:00 6148 1

原创 哈希算法(Hash Algorithm)初探

不约而同的,几乎所有的流行的hash map都采用了DJB hash function,俗称“Times33”算法。Perl、Berkeley DB 、Apache、MFC、STL 等等。times33的算法也很简单,就是不断的乘33。nHash = nHash*33 + *key++;我没找到什么理论可以说明这种算法的合理性,据说只是通过测试和实践发现这个算法是比较好的。如果有哪位能够提供这方面

2007-03-12 11:39:00 39254 10

原创 [Linux] device eth0 does not seem to be present, delaying initialization

在AS4上也许会报device bnx2 does not seem to be present, delaying initialization。造成这个问题的原因好像有不同的情况,不同的情况有不同的解决办法。如果是使用modprobe、insmod之类的命令之后出现这个问题,可以试试depmod命令。 depmod可以自动修复一些kernel module的依赖关系。如果是安装第二块网卡的时候

2007-02-09 12:46:00 12230 3

原创 [Linux] 如何让linux加载当前目录的动态库

linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。windows加载动态库的时候,缺省是首先加载本地目录下的动态库,然后再搜索windows/system和windows/system32目录。windows的动态库搜索顺序,虽然有可能会造成潜在的混乱,但是对于

2006-09-21 00:37:00 23671 2

原创 [C++] Undefined reference to vtable

链接器linker需要将虚函数表vtable 放入某个object file,但是linker无法找到正确的object文件。这个错误常见于刚刚创建一系列有继承关系的class的时候,这个时候很容易忘了给base class的virtual function加上函数实现。解决办法:给基类的virtual函数加上本来就应该有的function body。

2006-09-20 10:27:00 8786

原创 windows和linux下多线程的一些区别

我认为linux的多线程不如windows。理由如下:一、功能WaitForSingleObject在linux下可以用pthread_cond_wait来替代实现,但是pthread_cond_wait不能用来等待thread handle。要等待thread handle可以用pthread_join,但是没有超时。linux下没有WaitForMultipleObjects,也没有替代的实现

2006-09-04 11:31:00 12410 13

原创 用gdb调试子进程

缺省gdb是调试主进程的,可是现在采用daemon模式工作的程序那么多,主进程通常很快就结束了,子进程才是真正干活的。怎么跟踪调试子进程呢?在gdb里面执行:set follow-fork-mode child 则gdb就可以调试子进程了。感谢互联网,感谢google。

2006-09-01 16:55:00 14233 4

原创 编程其实就是一个不断做出选择的过程

条条大路通罗马,要达到某个目的,往往会有很多实现方法。从大了说,有系统如何架构,是采用windows还是linux,是采用C++还是C#抑或Java,是让系统OO一些还是OP一些。 往小了说,是具体某个地方用RB-TREE还是HASH-MAP,某个地方应该采用何种排序方法,某个模块是多照顾扩展性还是够用就好。持续的做出正确的选择,才能保证产出高质量的系统。

2006-08-25 13:10:00 2388 1

原创 [linux] 将socket设置为非阻塞(non-blocking)

有一个非常有迷惑性的做法是:u_long has = 1;ioctl(m_sock, FIONBIO , &has);这个函数会非常无耻的返回你success,但是它实际上很可能什么也没做。正确的做法应该是使用fcntl:int flags = fcntl(m_sock, F_GETFL, 0);fcntl(m_sock, F_SETFL, flags|O_NONBLOCK);这真是一个隐蔽的问题

2006-07-24 19:06:00 37584 12

原创 gdb使用初步

首先,你的程序在经由gcc/g++编译的时候,要带上-g选项。比如:g++ test.cpp -g -o test然后,执行:gdb test进入gdb界面之后,输入start并回车,则调试开始。(如果被调试的程序需要参数,则在start后面带参数)以下是常用命令:help:     display help. you can use help data, help running fo

2006-07-04 21:09:00 4644 3

原创 makefile编写入门

这篇文章真的只是入门,只介绍最简单的makefile编写方法。还是用我们上篇文章的例子:my_class.h和my_class.cpp包含了自己编写的类my_class,在test.cpp当中包含了main函数并且调用了my_class。则makefile可以如下写:test : test.cpp my_class.o    g++ -o test test.cpp my_class.omy_cl

2006-07-03 10:03:00 6597

原创 1分钟学会GCC

GCC是个功能很强大的家伙,精通的掌握它也许需要几个月的时间。但是如果你只是想学会如何使用gcc的基础功能,那么就只要1分钟。编写my_class.cpp和my_class.h包含你自己创建的一个类。写一个test.cpp,里面包含main函数并且调用my_class。1、 g++ -c my_class.cpp2、 g++ -o test test.cpp my_class.o实际上对于C++程

2006-07-03 09:52:00 2440 4

原创 SubVersion初级教程

Dont tell me WHY, Just tell me HOW.1、找个rpm或者bin或者tar之类的安装包,把SubVesion安装好。装好之后client、server、admin都在你机器上了。2、首先在你中意的目录,比如根目录”/“下,执行:svnadmin create svnroot3、进入新创建的svnroot目录,再进入"conf"子目录。4、编辑passwd,加上一行”

2006-06-20 17:21:00 3285 1

原创 从windows到linux之旅

因为工作的关系,最近的工作重心从windows迁移到了linux。linux的发行版,我们选择了RedHat。开发语言我们选择了C++。我们每人有两台机器,分别安装windows和linux,我们选择了vnc和ssh来协同工作。代码管理我们采用了SubVersion。编程我们主要用vi+gcc+gdb。kdevelop作为候选。目前项目进展顺利。以后我会逐步描述各个模块的使用情况。

2006-06-01 00:02:00 2099 3

原创 [C#] 程序运行良好,但是用vs2003调试的时候总是报错

程序运行良好,但是用vs2003调试的时候总是弹出一个NullReferenceException,而且这个exception的stack trace是null。不论你怎么修改代码,这个问题都是时隐时现。如果你的程序中涉及到了InteropServices或者Diagnostics的话,这个问题特别容易出现。这是vs2003的一个bug。不过我们可以弥补:在Project -> Propertie

2006-04-06 16:11:00 2474 1

原创 [C#] NetworkStream.Write()存在严重bug

NetworkStream.Write()方法实际上是不可用的,因为它无法保证数据的连续性。先给大家看一段代码://cln is an instance of TcpClientNetworkStream st = cln.GetStream();st.Write(tosend, 0, tosend.Length);这属于NetworkStream.Write()的标准调用方法。可是在catch到

2006-03-31 16:00:00 10523 7

原创 [C#] ListView不够好

编辑修改SubItem。这个应该属于最经常使用的功能了。DataGrid+DataTable使用不便,如果ListView能自带SubItem Edit那将会非常方便而且实用。网上当然也有一些控件支持这个功能,不过那些代码需要自己去鉴别好坏,太麻烦。

2006-03-24 10:57:00 2871 3

原创 [Linux] 美观易用的Ubuntu

前几天试用了一下Ubuntu,很吸引人。为什么这么说?首先,界面相当漂亮,而且速度相当快。我认为,Ubuntu的界面,比WinXP和RedHat都要好。第二,Ubuntu允许你安全免费的得到更新,并且承诺永久免费。WinXP就不用说了,我们只能看着天价的正版来用盗版;RedHat则不提供免费更新,以至于安装好之后只能使用FireFox 1.0之类的过时软件。第三,体积小巧。只要一张普通光盘就装下了

2006-03-17 13:45:00 2398 3

原创 [C#] 接收和发送UDP数据

除了点对点,通常UDP数据的传递方式有两种,一种是BroadCast,一种是MultiCast。中文一般把它们翻译作广播和组播。前者是简单的在局域网里面广播;后者是借助路由器将数据发送到包括英特网在内的任何多个地址。在C#里面,处理UDP通讯最简单的方法就是使用UdpClient。具体使用方法我也不赘述了,在msdn上就有。需要注意的问题有:1、UDP通讯在发送的时候可以绑定任何本地端口,但是在接

2006-02-10 11:17:00 9553 1

原创 [dotNET] 如何卸载Visual Studio 2005 Beta

在尝试安装正式版Visual Studio 2005之前,我看到微软用粗体字提示说那些测试版“must be removed in the correct order”。诚惶诚恐。赶紧按图索骥去卸载它。 http://msdn.microsoft.com/vstudio/express/support/uninstall/#Tool 是卸载说明。如果懒得看的话,直接从 http://go.micr

2005-12-30 10:30:00 3043

原创 [C#] 无法用“可视化编辑器”编译组件了怎么办?

当你双击一个项目中的一个文件的时候,如果是Form或者UserControl之类的文件,按理说应该是出现“可视化编辑器”让你进行可视化编辑的。但是有时候VS 7.0会出现一些问题,导致双击这些文件的时候,出现的不是“可视化编辑器”而是“代码编辑器”。对于习惯了可视化编程的我们来说,这简直是无法容忍的事情,这必须得到纠正。然而我们右键查看文件的属性,却什么有用信息也看不到。怎么才能让那个该死的“可视

2005-12-27 14:58:00 2594

原创 [C#] 再议Exception

实际上在系统正常运行的时候,应该是没有异常的。所有正常运行中被发现的异常,都应该被if else之类的判断分支所替代。因此,最终只要在表现层try catch就可以了。在表现层try catch的时候,记录下exception中的stack frames就可以了。要是有了stack frames都还分析不出问题,那就表明系统设计有问题。我的以上观点可以从微软的示范代码中得到验证。我们公司的开发流程

2005-12-09 17:28:00 2410 3

原创 [C++] unsigned是麻烦制造者

没有什么比signed和unsigned的区别更无味了。unsinged数据类型似乎没有存在的必要。一、unsigned可以提供更大的正数范围   反对:对于小数据来说,signed的范围就足够了;对于大数据来说,signed和unsigned所提供的范围其实几乎没什么区别。Int8,Int16, Int32, Int64,这样的变化才是有实际意义的范围延伸。如果int32不够

2005-12-07 00:36:00 14661 15

原创 软件开发方式的思考

软件开发方法有两类:一类是笨重规范的,另一类是轻便随意的。或者有人要说规范的未必笨重,轻便的未必随意。无所谓吧,反正都是那么回事。凡事走极端了都不太好,IBM所提倡的迭代式开发,好像是个不错的主意。一个系统肯定是需要规划的,但是同时系统肯定又是变化的。因此:1、系统设计是需要的,但最初的结构设计主要是为了开展工作,以便得到可用的功能模块。2、系统的结构不妨在合适的时候进行一些调整,反正系统模块都已

2005-11-28 14:21:00 1954

原创 [C++] 编译时的warning

我倾向于通过代码手段消除所有编译的warning。最终的产品代码编译的时候应该是没有warning的。warning其实可以分为两种:一种是可以忽略的,一种是不可以忽略的。比如:int被看作bool的warning往往是不能忽略的,而MyClass*被转换成int的warning都是可忽略的。#pragma warning(disable: xxxx)可以显式的忽略那些确定不会造成恶劣影响的war

2005-11-28 13:41:00 3592 1

原创 vector和动画片的关系

白天,我声明了一个拥有十个元素的vector,只有第一个元素调用了构造函数,后面九个都是内存拷贝。晚上,我下载了一部长度为十集的动画片,我只看了第一集的片头,后面九集我都跳过了片头。vector和动画片真是很象啊,不知道有没有血缘关系:)

2005-11-10 22:43:00 2714 10

原创 [C++] STL里面的map

STL里面的map并不是哈希表,这对于习惯了MFC里面CMap的人可能有点不习惯。STL里面的map仅仅是棵红黑树。除非你对程序的效率毫不关心,否则你就应该使用stlex里面的hash_map代替stl里面的map。因为他们做着非常类似的工作,而且他们的调用方法几乎一样。hash_map需要对key取hash值,我想这应该不会是问题。我们在实际应用中,通常只会用数值、指针或者字符串作为key,这些

2005-11-09 10:16:00 5971 4

转载 [转贴]短信黑幕:某大型门户网站离职人员自曝惊人黑幕

 [转贴]短信黑幕:某大型门户网站离职人员自曝惊人黑幕去年,我已在星星发表了一个关于免费发短信的各类软件的黑幕所在。而事实上SMS(即短信)的黑幕远不止于此,今天,我终于有空坐下来,把其中的一些让你感觉平常却实际触目惊心的事情告诉你们,让你们知道SMS为什么是抢钱的最佳方式!数据:2004年互联网全国总收入中,74%来源于网站嫁接了短信业务。手机短信如何让这些商家如此疯狂的敛财?不就一些手机文本短

2005-10-24 23:58:00 3329 1

原创 [C++] 何时使用vector

vector是STL里面的标准模板,简单的说就是一个变长数组。在使用vector的时候,有时能带来编程上的方便,但是如果使用不当,则会带来一些麻烦或者隐藏一些错误。任何系统都不会允许数据无限增加。任何数据要么有一个明确的最大数量,要么有一个隐性的的最大数量。如果需要存放的元素有一个不太大的最大值数量,那么大多数时候使用数组会更加简洁。因为vector使用起来注意事项太多,即使是熟练的人也很容易出现

2005-10-18 11:03:00 5457 6

原创 当数据达到200亿条的时候,很多事情都不一样了

最近在设计一个系统,有差不多两百亿条数据需要处理。在这样海量的数据面前,我们遇到了很多有趣的问题。存储、查询、性能,这些熟悉的话题都有了新的涵义。要是有哪位仁兄也有这方面的经历,我想我们会有很多东西可以分享。email: wsq003 at sina dot com

2005-10-09 11:37:00 2603 2

原创 [C#] 居然没有__FILE__和__LINE__

C#居然没有__FILE__和__LINE__,而且没有有效的替代方法。这着实让我吃惊。有人说StackFrame可以获得filename and line,不要信他们。StackFrame里面的文件名和代码行号都只有在debug版本下才有。release版本下面,StackFrame里面是不会有file info的。我想你总不会发行一个debug版本的程序出去吧?更糟糕的是:在C# 2.0里面,

2005-09-02 17:29:00 3478 2

原创 [Linux] Play MP3

1. Download from http://havardk.xmms.org/dist/xmms-1.2.7-rh8-rh9-rpm/2. Install it3. logout4. login5. run xmms6. have funStep 3 and Step 4 is normally ignored by many articles in internet, but its

2005-03-24 17:05:00 2444 4

原创 [Linux] undefined reference to `pthread_create'

I tried to use pthread_create in RedHat Linux AS4, both in Eclipse+CDT and KDevelop.KDevelop:When you build aproject by KDevelop, youd better add a -pthread to the link optionif your project in

2005-03-16 10:12:00 7138

原创 [Linux]C++编程工具

1、编辑器       vi:最基本的编辑器,功能比较弱,但是比较容易使用。不需要XWindows。       emacs:没有XWindow的前提下,功能比较强大的一个编辑器,比较难用。       gedit:XWindow下比较好的一个编辑器。2、编译器       gcc / g++:不用我介绍了吧?3、调试工具       gdb:最基本的调试工具,不需要XWindow   

2005-03-10 17:04:00 4038 2

原创 如何在Windows上运行Linux

本文将描述如何在Windows上运行Linux。这样做,最大的好处当然是方便,不用重启机器,就可以同时使用两种操作系统;第二,在Linux安装东西的时候,你可以切换出来到Windows下看网页;第三,非常安全,你不用担心装Linux的时候操作错误,导致你的Windows不能运行,要是由于操作错误导致Windows不能启动,麻烦就大了。我的操作系统是Win2000Server,硬件是P4 CPU,5

2005-02-21 14:51:00 17772 2

原创 Blog改名字了

话说这个blog原来是叫“Erics VC Hut”,因为当初我的想法是就VC相关的东西做一些交流,现在看来,有点名不副实了。因为我个人的工作重心,已经很大程度上离开了VC,移动到了dotNET和Linux那边。现在以及可以预料的将来,这个blog都不大会专注于VC了。为了名副其实,我想我还是尽早把blog的名字改了为好。改成什么好呢?第一个想法是“Erics Programming Hu

2005-02-16 14:10:00 2698 1

原创 [转载] The best anti-FUD article in Chinese

 http://www.pimientolinux.com/peru2ms/villanueva_to_ms.html 致先生: 首先,我感謝您在三月二十五日表明微軟公司對1609號:政府機關自由軟體法案(以下簡稱本法案)的立場書,該法案意在為秘魯在今日全球科枝競賽中尋找一個適當定位。在該法案的精神下:即接受一個開放及清浙的環境下進行意見交流乃是解決問題的最佳手段的前題下,我想借這一次機會去回應您

2005-02-02 09:37:00 1776

空空如也

空空如也

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

TA关注的人

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