自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 char *(*(**(*(*(*x[5])(int,float))[][12])(double))(short,long))[][173] ?

[标题] char *(*(**(*(*(*x[5])(int,float))[][12])(double))(short,long))[][173] ?!今天又捧起久违的K&R C拜读了一遍。其实有点东西在6年前就想写,借着今天这个机会,终于把它写出来了。初看一眼标题中的变量定义感觉是不是很抓狂?:)一直以来,C语言中关于指针、数据和函数的复合定义都是一个难点,其实,理解它也是有...

2009-09-15 10:00:58 185

原创 GCC参数-备忘

自:http://www.cppblog.com/SEMAN/archive/2005/11/30/1440.html[介绍]gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器...

2009-09-15 09:25:08 108

原创 bcopy和memcpy、bzero和memset、bcmp和memcmp的差别

bcopy、bzero和bcmp是传统BSD的函数,属于POSIX标准;mem*是C90(以及C99)标准的C函数。区别在于,如果你打算把程序弄到一个符合C90/C99,但是不符合POSIX标准的平台时,后者比较有优势。 NetBSD的代码中有很多地方使用mem*(他们更偏爱mem*,以利于移植),即使内核也是如此,而FreeBSD的内核中则尽量避免使用(希望尽可能避免在内核中出现较多的C...

2009-06-30 19:09:16 177

原创 函数调用规范

当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。 函数调用时,调用者依次把参数压栈,然后调用函数,函数被调用以后,在堆栈中取得数据,并进行计算。函数计算结束以后,或...

2009-06-30 19:00:37 153

原创 memcpy, strncpy, strcpy

收集的一些基本函数实现手法,备忘~~memcpy[code="c"]/*** memcpy - Copy one area of memory to another* @dest: Where to copy to* @src: Where to copy from* @count: The size of the area.** You should no...

2009-06-30 18:53:11 163

原创 TCP非正常断开-检测方法

如果主机崩溃,write是否阻塞取决于内核的tcp缓冲区,但read将一直阻塞,直到超时ETIMEOUT,或由于某些中间路由器的原因返回EHOSTUNREACH/ENETUNREACH。select不能检测到该情况。 如果主机崩溃并重起,客户的write到达主机时主机响应RST,客户的read将返ECONNRESET。 此处的”非正常断开”指TCP连接不是以优雅的方式断开,如网线故障等...

2009-06-30 13:05:23 386

原创 用 GDB 调试程序

用 GDB 调试程序 GDB 概述 ———— GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ 寸有所长,尺有所短 ” 就是这个道理。 一...

2009-06-30 13:01:32 154

原创 epoll demo 备忘

[code="c"]/**文件名:epoll_demo.c编译: gcc epoll_demo.c -pthread程序源码如下(请自行编辑宏定义SERVER_IP为自己的IP):*//*Linux 2.6 x86_64 only*/#include #include #include #include #include ...

2009-06-30 12:59:04 91

原创 struct socket 结构详解

用户使用socket系统调用编写应用程序时,通过一个数字来表示一个socket,所有的操作都在该数字上进行,这个数字称为套接字描述符。在系统调用 的实现函数里,这个数字就会被映射成一个表示socket的结构体,该结构体保存了该socket的所有属性和数据。在内核的协议中实现中,关于表示 socket的结构体,是一个比较复杂的东西,下面一一介绍。 struct socket。 ...

2009-06-20 10:54:27 212

原创 Linux 下的Socket编程

什么是Socket   Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。  Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输是...

2009-06-20 10:49:31 101

原创 去掉^M符号

Dos/windows使用了一种很愚蠢的方案来结束文件的每一行:居然使用了两个符号RETURN/LINEFEED,而Unix like OS就明智的多,使用一个NEWLINE(就是LINEFEED)。因此,如果在Linux下面阅读Dos/Windows文件,每一行会显示一个讨厌的^M,怎么办?在vim里面打:[ESC]:%s/[Ctrl-v][Enter]//g就可以了。解释一...

2009-06-03 17:22:18 168

原创 Patch用法小结

简介    本文的目的是向Linux新手介绍一种无价的资源,Larry Wall的patch程序。patch是用来查找文件之间差异的GNU diff命令的一个接口;diff有很多选项,但是该命令最常用的用途是用来生成一个文件,该文件中列出了内容发生改变的行,显示两个原始文件、修改过的行以及由于内容没有变化而忽略掉的行。patch典型地用于把一个目录下的源代码文件更新到新的版本,从而就避免了...

2009-05-26 18:22:25 874

原创 三十分钟掌握STL

三十分钟掌握STL这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽...

2009-05-20 17:12:19 87

原创 GDB调试精粹及使用实例

GDB调试精粹及使用实例来源:不详 (2006-07-14 11:18:05)一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就...

2009-05-18 15:49:55 72

原创 标准模板库-List讲解

作者: Scott Field标准模板库(STL)介绍0 前言. 1 定义一个list 2 使用list的成员函数push_back和push_front插入一个元素到list中 3 list的成员函数empty() 4 用for循环来处理list中的元素 5 用STL的通用算法for_each来处理list中的元素 6 用STL的通用算法count_if()来...

2009-05-17 16:42:02 244

原创 STL实践指南

作者:Jeff Bogan 原文:http://www.codeproject.com/vcpp/stl/PracticalGuideStl.asp翻译:Winter1 介绍 对于当今所有C++程序员来说,STL(标准模板库的缩写)都是非常不错的技术。但我必须要提醒的是要想习惯使用有一定难度,例如,会有很陡峭的学习曲线,其使用许多名字也不是凭直觉就可以知道其意思(或许是因为所有...

2009-05-17 16:04:56 83

原创 仿STL中的堆算法的一个实现

作者:converse原文链接:http://www.cppblog.com/converse/ RT。 堆的性质之类的不再这里阐述,写这个算法只为了更好的理解STL中的堆算法,如果看不懂STL中的算法也可以来参考这里给出的算法,因为是纯C的看起来会省去很多语言方面的细节。 同时里面还有一个STL中对应算法的测试以比较两者的效果。[code="c++"]/*******...

2009-05-17 15:46:02 90

原创 什么是泛型编程

泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型编程的代表作品STL是一种高效、泛型、可交互操作的 软件组件。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基 本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。S...

2009-05-17 15:37:03 451

boost/lexical_cast.hpp的简单使用方法

1、字符串->数值[code="c++"]#include #include int main(){ using boost::lexical_cast; int a = lexical_cast("123"); double b = lexical_cast("123.12"); std::cout...

2009-05-17 15:23:34 443

原创 boost 1.35.0 Visual Studio 2008编译指南

一。下载boost库2008年3月底发布了1.35.0版本,包括了12个新的库和若干对于新库的修正。请参见http://www.boost.org/users/news/version_1_35_0来获取详细的更新信息。最大的喜讯就是提供了对于Visual Studio 2008编译器的支持(1.34也可以,但是需要手工修改)。下载地址:http://www.boost...

2009-05-15 17:53:05 136

原创 编译boost_1_35_0详述

要说C++库也不少了,虽然跟java比还是少了点。拔高一点来说,c++将来的出路可能就在标准库了,c++圈子里的那些牛人似早就意识到了这一点,也做了不少努力,之前的比如大名鼎鼎的STL,最近的比如boost。据说boost有可能被纳入未来的c++标准之中,因此也就很有必要先了解一番了。 其实开始接触boost是因为项目中需要用到异步通信,很自然就想了解下人家是怎么做的。考虑过java的那个...

2009-05-15 17:49:29 204

原创 ACE与ASIO之间关于Socket编程的比较

ACE与ASIO之间关于Socket编程的比较转自:FREE MY SOULACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难。ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。最近分析ASIO的源代码,让我无不惊呀于它设计。在ACE中开发中的内存管理一直让...

2009-05-15 14:14:42 124

原创 泛型编程

泛型编程Bjarne: 如果你面对的问题既需要某些运行期决议(需要面向对象编程),又具有一些能够从编译期决议中获益的方面(泛型编程的用武之地)的话,那么你就需要将面向对象编程和泛型编程结合起来。例如,面向对象编程的经典例子 — 将一个保存了shape的容器中的所有元素都显示出来就属于这类问题。几十年前我第一次在Simula中看到过这个例子,后来直到遇到了泛型编程,我才看到它的改进实现。考虑...

2009-05-15 14:12:08 354

原创 STL泛型编程和设计新思维

前言  永远记住,编写代码的宗旨在于简单明了,不要使用语言中的冷僻特性,耍小聪明,重要的是编写你理解的代码,理解你编写的代码,这样你可能会做的更好。                      --- Herb Sutter   1998年,国际C++标准正式通过,标准化对C++最重要的贡献是:对“强大的抽象概念”给于更有力的支持,以降低软件的复杂度,C++提供了二种功...

2009-05-15 13:59:51 97

原创 Vim里面显示TAB键

Vim里面显示TAB键1、文件中有 TAB 键的时候,你是看不见的。要把它显示出来:[code="c"]:set list[/code]现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字符在哪里。2、方法1中这样做的一个缺点是在有很多 TAB 的时候看起来很丑。如果你使用一个有颜色的终端,或者使用 GUI 模式,Vim ...

2009-04-30 11:31:55 600

原创 Vim的一些常用命令

Vim的一些常用命令三种状态Command: 任何输入都会作为编辑命令,而不会出现在屏幕上,任何输入都引起立即反映Insert: 任何输入的数据都置于编辑寄存器,按ESC,可跳回command方式Escape: 以“:”或者“/”为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别指令。 离开vi:q! 离开vi,并放弃刚在缓冲区内编辑的内容。:wq 将缓...

2009-04-27 09:02:51 69

原创 boost库的编译命令

boost库编译方法,留个记号,免得忘了。Windows下:[code="c++"]bjam.exe --build-type=minimal --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization --with-system --with-thread ...

2009-04-27 08:42:16 226

空空如也

空空如也

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

TA关注的人

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