自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

转载 C++ Singleton (单例) 模式最优实现

我非常赞成合理的使用 设计模式 能让代码更容易理解和维护, 不过我自己除了简单的 单例 (Singleton) 模式 外, 其它都很少用 :-)可耻的是, 直到前段时间拜读了 C++ In Theory: The Singleton Pattern, Part I, 我才发现自己的 单例 (Singleton) 模式 写法还有改进空间.文章作者 J. Nakamura 以

2013-08-14 16:59:07 371

转载 GDB调试core文件样例(如何定位Segment fault)

core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、trace信息输出。该种类

2013-06-03 15:44:16 472

转载 IP和TCP包头校验和的计算方法

校验和的算法:将数据以字为单位累加到一个双字中,如果数据长度为奇数,最后一个字节要先变成字,然后在加到原来的双字中,最后得到的结果是一个双字,最后将这个双字的高16位和低16位反复相加,直到高16位为0,从而就获得一个16位的值,再将这个16位的值取反就得到校验和的值了。在接收端接收到IP数据包后,要对IP头进行检查看是否有误,所用的算法与上面一致,不同的是最终的结果要为0。

2013-05-29 10:11:40 797 1

转载 Linux C面试题(内存管理)

找错题  试题1:void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );}  试题2:void test2(){ char string[10], str1[10]; int i; for

2013-05-28 16:35:26 429

转载 用GDB调试程序

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

2013-05-17 21:33:14 438

原创 排序

根据排序工程中借助的主要操作,我们将内排序分为:插入排序,交换排序,选择排序,归并排序。插入排序有:直接插入排序(增量永远为1的一个分组)和希尔排序(按增量递减分组后进行直接插入排序,increment=incremet/3+1)交换排序有:冒泡排序和快速排序。选择排序有:简单选择排序和堆排序。归并排序。这7种排序算法的各种指标进行对比:排序方法

2013-04-24 20:50:43 506 1

原创 接口操作——ioctl

ioctl 函数 本函数影响由fd 参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0 :成功    -1 :出错 第三个参数总是一个指针,但指针的类型依赖于request 参数。我们可以把和网络相关的请求划分为6 类:套接字操作文件操作接口操作

2013-04-03 11:19:51 514

转载 linux进程间通信(IPC)

linux下进程间通信的几种主要手段简介:管道(Pipe)及有名管道(FIFO):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函

2013-03-27 22:30:00 762

原创 守护进程

一、常用的守护进程简单介绍:Keventd:为在内核中运行计划执行的函数提供进程上下文。kapmd:高级电源管理。kswapd:页面调出。(将脏页面以低速写到磁盘上从而使这些页面在需要时仍可回收使用)bdflush:将脏缓冲区从缓存池中冲洗到磁盘上。kupdated:每个一定时间间隔,这个守护进程将脏页面冲洗到磁盘上。portmap:端口映射提供将RPC程序号映射为

2013-03-21 17:46:31 493

转载 socket编程函数和步骤

TCP编程的服务器端一般步骤是1、 创建一个socket,用函数socket();2、 设置socket属性,用函数setsockopt(); * 可选3、 绑定IP地址、端口等信息到socket上,用函数bind();4、 开启监听,用函数listen();5、 接收客户端上来的连接,用函数accept();6、 收发数据,用函数send()和re

2013-03-20 17:46:54 4044

原创 名字与地址(端口)转换——gethostbyname/gethostbyaddr(getservbyname/getservbyport)

函数原型:#include struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名,例如"www.google.com","wpc"等等。传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。struct hostent {     char  *h_name;     c

2013-03-19 16:37:39 850

原创 I/O复用——select

I/O复用典型使用在下列网络应用场合:1.当客户处理多个描述符(通常是交互式输入和网络套接字)时,必须使用I/O复用。2.如果一个TCP服务器既要处理监听套接字,又要处理已连接套接字,一般就要使用I/O复用。3.如果一个服务器既要处理TCP,又要处理UDP,一般就要使用I/O复用。4.如果一个服务器要处理多个服务或者多个协议,一般就要使用I/O复用。函数原型:#in

2013-03-18 23:11:39 402

原创 获取和设置套接字选项——getsockopt/setsockopt

函数原型:#include int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

2013-03-17 16:16:17 1872

转载 makefile

概述 ——       什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefil

2013-03-15 11:48:53 427

原创 去掉输入参数的tcping

/* tcping does a nonblocking connect to test if a port is reachable. * Its exit codes are: *     -1 an error occured *     0  port is open *     1  port is closed *     2  user timeout *

2013-03-14 22:03:20 884

原创 文件控制--fcntl()

在介绍文件控制函数之前,先看看linux系统是如何管理进程中打开的文件。1.每个进程在进程表项中都有一个记录项,记录项中包含有一张打开文件描述符表,可将其视为一个矢量,每个描述符占用一项。与每个文件描述符相关联的是:(a)文件描述符标志(close_on_exec).(b)指向一个文件表项的指针。2.内核为所有打开文件维持一张文件表,每个文件表项包含:(a)文件状态标志(读、写

2013-03-14 17:00:25 556

转载 简明 Vim 练级攻略

我建议下面这四个步骤:存活感觉良好觉得更好,更强,更快使用VIM的超能力当你走完这篇文章,你会成为一个vim的 superstar。在开始学习以前,我需要给你一些警告:学习vim在开始时是痛苦的。需要时间需要不断地练习,就像你学习一个乐器一样。不要期望你能在3天内把vim练得比别的编辑器更有效率。事实上,你需要2周时间的苦练,而不是3天。第一级 –

2013-03-13 10:18:59 409

原创 简单的DNS请求报文实现

DNS数据包包括DNS协议头+DNS正文段。协议头为固定的12字节,结构如下:typedef struct{   u16 id;  u16 flags;  u16 nques;  u16 nanswer;  u16 nauth;  u16 naddi;}dns_header;查询ip的正文包括域名值和请求类型标识字段。结构如下:

2013-03-12 12:39:15 2730

原创 linux下NAT内网连通IPv6的实现

网络拓扑图如下:·        eth0为网关WAN口,接入广域网。·        eth1为网关LAN口,接入局域网。主要配置:1. linux服务器接口的ipv6地址配置# sysctl net.ipv6.conf.all.forwarding=1     //打开ipv6转发功能;#ip addr add 2001:250:1006:5066:

2013-03-12 12:13:37 3821

原创 简单的web服务器实现

#include #include #include #include #include #include #include #include #include #define MAXLINE 2048 #define PORT 12345 #define WebRoot "/home/xrf/www" /* 字符串s1 是否以字符串 s2结

2013-03-12 11:04:42 547

Linux命令大全(修改版)

linux系统中用到的所有命令.包括文件传输,文件管理,系统设置,磁盘管理,文档编辑等。

2011-08-31

空空如也

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

TA关注的人

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