自定义博客皮肤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)
  • 收藏
  • 关注

原创 apue读书笔记之socket

 创建 Socket:#includeintsocket(int domain, int type, int protocol);domain: AF_INET AF_UNIX(AF_LOCAL 在某些系统)规定通信的本质,比如地址的格式type: SOCK_STREAM SOCK_DGRAM SOCK_RAW SOCK_SEQPACKET 规定数据的传输方式protocol: 通常为0,使用默认值。四种 type 区别:感觉听上去很简单,其实还是需要理解的SOCK_DGRAM: 数据报方式。无

2011-05-16 16:19:00 1230

原创 apue读书笔记之大端小端字节序

<br />一个数 i =0x04030201 的最大有效位总是在最左边 04,最小有效位总是在最右边 01.<br /><br />上图中,整数的地址为n,整数存储范围是 n -n+3. <br />存储最高有效位是整数的最低字节的是大端<br />存储最高有效位是整数的最高字节的是小端<br /> <br />一般的网络字节序是大端(TCP/IP).网络字节和本地字节之间的转换函数:<br /> <br />#include <arpa/inet.h> (旧一点的系统包含 netinet/i

2011-05-16 16:15:00 583

原创 thrift 入门

<br />。。。<br />刚刚入门,有空看看源码。<br /> <br />http://wiki.apache.org/thrift/

2011-05-13 15:45:00 528

原创 wxWidgets 界面编辑入门

最近一直在找一个跨平台的GUI库,发现wxWidgets是一个很不错的选择。个人认为的优点有:1. 类似于MFC, 容易上手2. 在不同平台上的展现是Native的,不像QT什么的知识模拟的。3. 界面编译器很好用哈。最常用的界面编辑器推荐 wxFormBuilder (http://wxformbuilder.org/).Youtube上有一个非常好的入门教程,不过要翻墙http://www.youtube.com/watch?v=id8jQCSRIbo&feature=fvwrel先写这么多哈。。

2011-05-13 15:32:00 3200

原创 Python 显示 常用的文件对话框

<br />方法一:<br /> <br />import tkFileDialog<br />tkFileDialog.askdirectory()<br /> <br />等等<br /> <br />方法二:<br /> <br />调用windows自己的对话框,这个麻烦很多,需要用win32com,估计没人会用<br /> <br /> objDialog = win32com.client.Dispatch("SAFRCFileDlg.FileSave")objDialog.FileType

2011-02-18 17:08:00 3603 1

原创 Python 进行Office开发(以Word为例)

<br /> <br />要使用Python控制MS Word,您需要先安装win32com套件,这个套件可以到 http://sourceforge.net/projects/pywin32/ 找到。您需要先importwin32com模块才能进行Word的控制。<br /> <br />from win32com.client import Dispatch, constantsfrom win32com.client.gencache import EnsureDispatch Ens

2011-02-18 17:00:00 32922 1

转载 宏展开小结

<br /><br />在C++中,尽管使用宏是不推荐的,但是很多时候宏也会为我们提供一些方便,且在现有代码中宏也确实大量存在。有人认为宏是错误的根源,因为宏展开后,有可能会出现一些稀奇古怪的代码,那么,本文在这里总结一些查看宏展开后的代码的方法。<br />1、在visual studio 2005中,选择项目属性-〉配置属性-〉C/C++-〉预处理器,在“生成预处理文件”中选择生成预处理文件,“不带行号(/EP /P)”或“带行号(/P)”,那么就会在项目所在文件夹下生成一个与源文件同名的“.i”文件,

2011-01-10 17:10:00 777

原创 printf Width Specification('*'的用法)

<br />今天注意到了printf 里面 ‘*’的用法,查了一下MSDN:<br /> <br />printf Width Specification<br /> <br /><br />The second optional field of the format specification is the width specification. The width argument is a nonnegative decimal integer controlling the minimu

2011-01-05 16:57:00 599

转载 Linux Ctrl+z jobs bg fg &使用及区别

一、& 最经常被用到这个用在一个命令的最后,可以把这个命令放到后台执行二、ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停三、jobs查看当前有多少在后台运行的命令四、fg将后台中的命令调至前台继续运行如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)五、bg将一个在后台暂停的命令,变成继续执行如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通

2011-01-04 18:05:00 3283

转载 你不再需要TinyXML,推荐RapidXML

<br />目前我公司开发的Nexus Engine的底层对象序列化使用了TinyXML来读写XML文件。TinyXML有两个不爽的地方,一是它的接口使用FILE*,另外一个是它对wchar_t不能很好的支持。前阵子看Boost库的更新中多了一个PropertyTree,他在处理XML时用到了另外一个小的库--RapidXML。既然间接的是Boost库的一部分,所以是值得一试的。于是找到其官方网站(http://rapidxml.sourceforge.net/)研究了一番。一看之下,甚

2011-01-04 14:37:00 693

转载 google reader 快捷键大全

<br />●j/k--上一个条目/下一个条目<br />●空格键/上档键+空格键--向下翻一页/向上翻一页=PageDown/PageUp<br />●n/p--向下/向上选择(仅List查看模式)<br />●o--展开条目(仅List查看模式)<br />●回车键--展开条目(仅List查看模式)<br />●s--标记所选择的条目星号(取消标记)<br />●上档键+s--共享所选择的条目 <br /><br />●m--标记为已读或未读<br />●t--给一个条目设置Tag<br />●v--查

2010-12-28 17:02:00 692

转载 如何成为优秀开发人员 系列文章 - by 编程随想

自我总结:1.      基本上算是有兴趣2.      基本上算是自学能力还不错3.      多用订阅(Google阅读器), 多看电子书英文书4.      个人目标还算比较明确5.      多熟悉各种开发辅助工具,熟悉测试6.      学习自动化工具,Python。版权声明 本本系列文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想 和本文原始地址:http://program-think.blogspot.com/2009/01/0.

2010-12-28 16:41:00 3052

转载 linux tty pty pts 概念 区别

<br /><br />基本概念:<br />1> tty(终端设备的统称):<br />tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。<br />终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。<br /><br />2> pty(虚拟终端):<br />但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?

2010-12-27 22:03:00 443

转载 Unix 不回显输入密码

<br />原帖见: http://blog.163.com/xiaolei-li/blog/static/114404451200911172155783/<br /><br /><br /><br />在软件开发中,往往会遇到要求用户输入密码的情况。出于对密码的保密,输入的字符是不会显示到屏幕上的。例如,在登录Linux系统时,输入用户名后,输入的密码是不显示的。这里介绍两种方法来解决这一问题。6.5.1  使用curses库<br />curses库是由柏克莱大学的Bill Joy及Ken Arnol

2010-12-26 16:21:00 1188

转载 字节序问题--大端法小端法

<br />一、字节序定义<br />字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。<br />其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。<br />在所有的介绍字节序的文章中都会提到字节序分为两类:Big-Endian和Little-Endian。引用标准的Big-Endian和Little-Endian的定义如下:<br />a) Little-Endia

2010-12-20 12:59:00 430

转载 大端法、小端法、网络字节序

 关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 2.大端法(Big-Endian)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。举个简单的例子,对于整形0x12345678。它在大端法

2010-12-20 12:57:00 667

转载 VC直接修改IP地址(不需要重起)

<br />原文: http://blog.csdn.net/wangningyu/archive/2009/11/14/4810774.aspx<br /> <br /> <br />设置IP地址只需要更改注册表中关于适配器的相应设置,但更改后需要重新启动系统才能生效,而AddIPAddress函数只能添加IP而不是更改当前的IP,我们在Windows NT/2000界面上操作不需要重新启动就可以生效,那系统到底做了什么额外的工作才使IP设置直接生效呢?笔者通过跟踪explorer.exe中API的调用发

2010-12-18 01:08:00 1411

转载 不带缓存的I/O和标准(带缓存的)I/O

<br />转自: http://hi.baidu.com/ganss/blog/item/3e9736c6389ac7199d163d94.html<br /> <br />先来看看不带缓存的I/O和标准(带缓存的)I/O都有那些<br />不带缓存的I/O:       read,write,open......<br />标准(带缓存的)I/O: fgets,fread,fwrite.....<br />这里使用两个对应的函数进行比较:<br />ssize_t write(int filedes,

2010-12-16 16:22:00 491

转载 标准IO缓冲详解 全缓冲 行缓冲 不缓冲

<br />原文见: http://hi.baidu.com/wuji_sky/blog/item/92333898de61f9016e068ce7.html<br /> <br /><br />标准I/O库提供缓冲的目的是尽可能地减少使用read和write调用的次数。他也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准I/O库最令人迷惑的也是他的缓冲。<br />标准I/O提供了三种类型的缓冲:<br />1、全缓冲。这种情况下,在填满标准I/O缓冲区后才进

2010-12-16 16:21:00 1128

转载 undefined reference to 'pthread_create'问题解决

<br />由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:<br />undefined reference to 'pthread_create'<br />undefined reference to 'pthread_join'<br /><br />问题原因:<br />    pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,

2010-12-03 11:52:00 422

转载 unix解释器原理

<br /> <br />转自: http://www.cnblogs.com/hbt19860104/archive/2008/07/24/1250898.html<br /> <br />引言<br />使用Shell进行工作的人们对Unix/Linux下的Shell编程都很熟悉,在所有的Shell编程的书中都会提到#!/bin/bash,而这里到底包含了些什么?对操作系统而言,这一行字符串意味着什么?你可能会说,不就是会让 /bin/bash程序来解释这个脚本程序吗?当然你是对的,看看我们的标题,这里

2010-12-01 16:58:00 673

转载 unix实际用户ID和有效用户ID解析

今天在看APUE,这两个问题很难理解,GOOGLE一下,有篇文章总结的不错,看了一下才明白透彻了。由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。关于SUID、 SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些资料,决定整理成本文,以供大家参考。限于本人的水平问题,文章中如果有不当之处,请广大网友指正。一、UNIX下关于文件权限的表示方法和解析SUID 是 Set User ID,

2010-12-01 15:37:00 335

转载 atl中常见的模板使用手法

<br /><br />1、传入基类,继承实现<br />在设计com接口时,经常会遇到这样的情况:设计一个基接口,其他多个接口继承该接口。一个典型的例子是IUnknown接口,所有的com接口必须从IUnknown接口继承,而这些接口的实现都是相同的,我们不可能为每一个com接口写一个IUnknown接口的实现。IUnknown接口的实现比较复杂,分布在几个类中(可参考《深入解析atl》)。比较直观的一个例子是IDispatch接口的实现,通常需要实现IDispatch接口的类都从IDispatchImp

2010-12-01 14:54:00 603

转载 APUE源代码编译

转自: http://linux.chinaunix.net/doc/2004-10-05/22.shtml一最近学习Linux编程,收获真的很多。以前都是别人或man告诉你某个命令怎么使用,但现在我才领悟到,是程序的源代码决定了全部。linux编程,首先需要安装gcc与其它编程工具与库文件。最简单的方法是进入图形界面的添加删除程序,选上开发工具就可以了。 1.APUE2源代码下载:http://www.apuebook.com/src.tar.gz2.我保存到了/root下.解压缩:tar -xzvf s

2010-12-01 14:06:00 461

转载 typedef用法

*****以下是参考部分***** 此部分参考自:http://blog.sina.com.cn/u/572f7666010008dm 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; PCHAR pa, pb;

2010-11-29 14:30:00 261

转载 论调用约定

<br />转自: http://blog.vckbase.com/arong/archive/2004/06/09/409.html<br /> <br /><br />在C语言中,假设我们有这样的一个函数:<br /><br />int function(int a,int b)<br /><br />调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要

2010-11-23 16:22:00 276

转载 不定参数应用2

<br /><br />出处不详。。额。。<br /> <br />我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() <br />这个函数,它的定义是这样的: <br />int printf( const char* format, ...); <br />它除了有一个参数format固定以外,后面跟的参数的个数和类型是 <br />可变的,例如我们可以有以下不同的调用方法: <br />printf("%d",i); <br />printf("%s",s); <br />print

2010-11-22 22:45:00 374

转载 不定参数的应用1

<br /> <br />转自:http://blog.csdn.net/arong1234/archive/2008/05/18/2456455.aspx<br /> <br />不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多。除了格式化输出之外,我实在没看到多少应用。主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它。尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题。原理<br />刚学C语言的时候,一般人都会

2010-11-22 22:44:00 377

原创 memcpy memcopy 的实现

先是VC中的实现直接字符:void * __cdecl memcpy (void * dst, const void * src, size_t count){         void * ret = dst;         /*          * copy from lower addresses to higher addresses          */         while (count--) {                 *(char

2010-11-22 21:21:00 1682

转载 用getopt解析命令行参数

用过gcc的都知道gcc有许多参数。例如要将hello.c译成hello.exe并加上调试信息,用gcc hello.c -g -o hello.exe即可。现在分析gcc的参数。对于这个例子,参数可分成三个部分:输入文件(hello.c)、是否包含调试信息(-g)、输出文件 (-o hello.exe)。这三个部分的次序是无关紧要的,例如可以确保,-o后面跟的一定表示输出文件。getopt是C语言标准库中用来处理命令行参数的一个函数,其原型声明在unistd.h文件中:int getopt( int ar

2010-11-19 21:16:00 666

转载 控制台窗口界面编程控制

<br />转自: http://blog.csdn.net/yxnk/archive/2008/05/11/2434685.aspx<br /> <br />摘要: 文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动、光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。<br /><br />  在众多C

2010-11-19 21:14:00 642

转载 Createprocess控制台程序输出重定向

在Windows编程中,并非每一个应用程序都需要一个图形用户界面(GUI),很多情况下,我们可以编写一个控制台应用程序,这样程序更小,加载更快,传输时间也短,同时也丝毫不牺牲程序应有的功能。这种程序特别适合那些在后台运行的程序,比如压缩、杀毒、上传下载等等。如果我们的确需要在GUI执行这些程序,以完成某些比如类似于磁盘格式化的功能,我们可以在GUI程序中创建一个新的进程,调用这些已有的控制台应用程序,帮助完成这些功能。然而令人失望的是,我们每次加载这些控制台应用程序时,图形程序总会在加载的过程中产生一个不受

2010-11-19 21:05:00 2224

转载 ShellExecute与ShellExecuteEx的用法

<br />Q: 如何打开一个应用程序? <br />ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );或 ShellExecute(this->m_hWnd,"open","notepad.exe","c://MyLog.log","",SW_SHOW );正如您所看到的,我并没有传递程序的完整路径。<br /><br />Q: 如何打开一个同系统程序相关连的文档?ShellExecute(this->m_hWnd,"open","c

2010-11-19 21:01:00 623

原创 简易的windows下命令行统计程序运行时间程序

熟悉的Unix的朋友都知道Unix下有一个功能强大的 time 函数。但是在windows下是没有这样的程序的。本文参考了别人的写的这种程序并做了改进。1.       剖析命令行参数需要用gcc的getopt(argc,argv,"hE:p:s") 函数: (PS: 没有GCC 环境的同学可以用IBM写的一个windows下的getopt 程序,附件中会给出来。)int opt = 0;while((opt=getopt(argc,argv,"hE:p:s"))!=-1){ switch (o

2010-11-19 20:48:00 5914 2

转载 编程真难啊

上周,在Sun的Java论坛上出现了一个这样的帖子,这个贴子的链接如下:http://forums.sun.com/thread.jspa?threadID=5404590&start=0&tstart=0LZ的贴子翻译如下:大家好,我是一个Java的新手,我有一个简单的问题:请问我怎么才能反转一个整数的符号啊。比如把-12转成+12。是的,毫无疑问这是个简单的问题,但我弄了一整天我也找不到什么好的方法。非常感谢如果你能告诉我Java有什么方法可以做到这个事,或者告诉我一个正确的方向——比如使用一些数学库或

2010-11-17 14:34:00 440

转载 ubuntu10.04 默认BASH问题

看下面一段shell:read -p "Please input (Y/N): " yn[ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK,continue." && exit 0[ "$yn" == "N" -o "$yn" == "n" ] && echo "oh,interrupt!" && exit 0echo "I don't know what is you choice" && exit 0执行的时候,总是发现提示  [: 10: y: un

2010-11-17 13:47:00 1299

转载 前自增和后自增运算符的重载

很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用。这个问题遭到程序员的报怨,于是C++语言得到了扩展,允许重载 increment 和 decrement操作符的两种形式。然而有一个句法上的问题,重载函数间的区别决定于它们的参数类型上的差异,但是不论是increment或decrement的前缀还是后缀都只有一个参数。为了解决这个语言问题,C++规定后缀形式有一个int类型参数,当函数被调用时,编译器传递一个0做为int参数的值给该函数。increment的前缀形式表示“增加然后取回”,后

2010-11-17 12:54:00 4476

原创 菜鸟宣言

从今天起哈,好好飞哈。过去的就过去了。加油。------------------------------------------------------------每个菜鸟都有鹰的梦想我不怕有千万人阻挡只怕自己投降

2010-11-17 12:48:00 447

空空如也

空空如也

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

TA关注的人

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