自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (34)
  • 收藏
  • 关注

原创 内核驱动单独编译(如mdraid)而不依赖编译内核

在学习使用内核中的驱动模块时,可能需要修改一些源代码,跟踪调试等,这就需要重新编译该模块,一种方式是直接重新编译内核,但是这样耗时较多,而且每次修改的时候都需要这样做就太麻烦了。所以这里介绍另一中方式,不用重新编译内核,只用修改该驱动模块的Makefile,使得该驱动模块能够不依赖编译内核而单独编译,下面以软raid模块为例来进行说明。    首先需要确保当前内核版本与系统中的linux-he

2014-01-13 19:10:29 4104

原创 ubuntu编译内核

1.先下载需要编译的内核版本的源代码并解压(以linux-3.2.39为例);2.进入内核源码目录,把系统中原来的config配置拷贝到源码目录下,这样做是为了重新编译内核时仍然能够把原有系统中的驱动等编译进去;#~/linux-3.2.39# cp /boot/config-3.2.39 .config3.然后使用make menuconfig再选择需要编译的选项;#~/linu

2014-01-13 18:51:57 865

原创 出现connection9060:0: detected conn error信息时的问题定位分析

在使用iscsi设备时(open-iscsi+iscsitarget),在kern.log内核日志中发现了大量的conn error信息:Jan 13 10:20:47 localhost kernel: [11724968.627194] connection9060:0: detected conn error (1020)Jan 13 10:20:50 localhost kerne

2014-01-13 18:42:57 5629

原创 文档利器reStructuredText

关于为啥要用reStructuredText,这个不用多说,方便,简洁。单从Python和Django的官网文档就是用reStructuredText来编写的,就可以看出这是一把利器。reStructuredText(简写rst)能够转换的格式很多,包括html、xml、pdf及Latex等。一开始在windows下使用rst来编写,采用vim编辑器,可以装一个rst的插件vst.vim,

2013-06-04 20:27:29 6487

原创 Eclipse+Maven+Mybatis使用

在eclipse上使用maven,需要先安装插件m2e。安装好后,就可以新建一个maven工程,建好之后如下:为了解决依赖问题,需要在pom.xml中加入mybatis和mysql的依赖。这样在Maven Dependencies下面就可以看到依赖包。下面开始mybatis的使用,参考《Mybatis3用户指南中文版》。首先在src/

2013-06-02 15:43:53 2166

原创 服务端 write时,收到RST响应(对端socket中断),导致服务器进程关闭

客户端申请下载文件,在下载过程中时,客户端终止程序(ctrl+c),服务器接着发送数据,根据TCP协议的规定,会收到一个RST的响应,服务端再往这个socket写数据时,系统会发出一个SIGPIPE信号给进程,通知进程这个连接已经断开,根据信号的默认处理规则SIGPIPE信号的默认执行动作是终止、退出,所以服务器会退出,因此会出现服务器在未提示错误的情况下进程就退出了。为了不让服务器退出,可以把S

2012-09-07 12:39:47 2173

原创 linux获取目录下文件大小的问题

代码如下:void list_dir(char *path){DIR *dir;struct dirent *entry;struct stat stat_buf;if ((dir = opendir(path)) == NULL){printf("cannot open dir:%s\n", path);return;}while ((entry =

2012-09-02 17:16:56 2522

原创 基于原始套接字(raw socket)的网络抓包工具

基于raw socket的网络抓包工具1. 原始套接字(raw socket)简介原始套接字可以接收本机网卡上的数据帧或者数据包,利用raw socket可以编写基于IP协议的程序。一般的TCP/UDP类型的套接字只能够访问传输层以及传输层以上的数据,而原始套接字却可以访问传输层一下的数据,所以使用raw socket既可以实现应用层的数据操作,也可以实现链路层的数据操作。1.1 基本

2012-08-30 11:47:32 12978

原创 C/C++数组的大小最大能有多大?

直接定义一个数组,如a[SIZE];这个是分配的静态空间,在栈上(局部变量)或全局静态区(全局变量)上分配的,一般栈的内存是1M到2M,所以静态分配的空间不能太大,比如如果定义a[1024*1024];运行时就会报”段错误“,遇到要申请大的空间时,就需要动态申请。

2012-08-10 10:00:34 8637 1

原创 基于libcap的网络包分析问题集锦续(http post方式上传文件)

8. 批量上传时,是有多个post包还是只用一个post?答:如果批量上传是以多个表单的方式,如下这种方式批量上传,通过firefox的Httpfox抓包可以看到只有一次POST,每一个文件所处不同的表单,信息在包中用boundary分隔,如问题2中所述。如果是按以下方式上传,就是一个文件打开框里可以选多个文件。这样上传方式,监听到每一个文件对应一个POST,那每一

2012-08-09 16:28:34 1485

原创 基于libcap的网络包分析问题集锦(http post方式上传文件)

1. 关于http post方式中boudaryContent-type一行中有boundary关键字,=号后面就是boundary的值,如boundary=---------------------------16541483331115---------------------------16541483331115是分隔符,分隔多个文件、表单项。其 中16541483331115

2012-08-06 16:06:38 1925 1

原创 libcap使用小结

1. 安装下载http://www.tcpdump.org/#old-releases ,我下的libpcap-1.0.0.tar.gz#tar -zxvf libpcap-1.0.0.tar.gz#cd libpcap-1.0.0#./configure#make;make install安装到默认的目录/usr/lib/和/usr/include/2. 使用使用

2012-08-03 17:07:21 5329

原创 tcpdump使用小结

Tcpdump的常用选项-a 尝试将网络和广播地址转换成名称。-c数据包数目> 收到指定的数据包数目後,就停止进行倾倒操作。-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。-e 在每列倾倒资料上显示连接层级的文件头。-

2012-08-03 17:06:24 3431

原创 基于IPC的echo server

Linux下使用共享内存和信号量来实现一个echo server。对共享内存的操作使用信号量来控制,类似于生产者和消费者的问题。下面附上server端和client端的代码。Server.c#include #include #include #include #include #include #include #include #include #i

2012-08-03 17:05:13 852

原创 c语言mysql编程杂记

1. MakefileINCLUDE=/usr/include/mysql/LIBS=/usr/lib/mysqlall:         gcc -I$(INCLUDE) -L$(LIBS) -lmysqlclient xxx.c -o xxxclean:         rm -f xxx2. mysql的头文件和库文件配置如果mysql是默认安装的,在Make

2012-07-27 12:27:42 1380

原创 C mysql编译链接问题

首先在源代码里面包含头文件mysql.h#include "/usr/include/mysql/mysql.h"  这样可以不用在编译选项中加-I/usr/include/mysql/直接#include "mysql.h",然后在编译选项中加入-I/usr/include/mysql/编译选项:#gcc  -I/usr/include/mysql/ -L/usr/lib/mys

2012-07-20 10:05:03 958

原创 cgi开发遇到的问题续

1. fopen打开文件的问题Fopen以写方式打开文件时,如果只是文件名(默认当前目录),则可以打开成功;如果指定一个相对路径,如/usr/local/apache/cgi-bin/upload/filename,则打开失败。出现这个问题的原因是因为权限不够(cgi程序运行时,是apache的用户,权限有限),虽然给cgi-bin更改了权限(chmod o+w /usr/local/apac

2012-07-13 14:11:02 2236

原创 cgi开发遇到的问题

使用xxx代码在linux上编译运行,访问xxx.html时,上传文件出现错误500 Server Internal Error,查看apache错误日志error.log看到错误:Premature end of script headers网上搜索这个错误,发现一般是文件权限问题,于是配置httpd.conf的文件权限确保allow在deny前,allow from all

2012-07-12 09:13:54 862

原创 c语言开发cgi学习笔记

初学cgi,实现一个简单的网页,能够完成上传、下载、删除、浏览目录的功能。工欲善其事必先利其器,首先要了解一下http协议,HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。写cgi程序往往需要分析网络包,为此介绍一利器:httpwatch,这个是ie的一个插件,只需要选择相应的

2012-07-12 09:12:13 1217

原创 apache在SUSE linux下的源码安装配置(httpd-2.2.22)

1. 下载httpd:http://labs.renren.com/apache-mirror/httpd/,下载了httpd-2.4.2.tar.gz2. 安装apache#tar zxvf httpd-2.4.2.tar.gz#cd httpd-2.4.2#./configure --prefix=/usr/local/apache --enable-modules=most

2012-07-09 19:34:58 5209

原创 windows远程桌面连接fedora14

xp或者win7要远程桌面连接fedora14,只需要在fedora14里安装xrdp就可以了。通过yum安装:yum install xrdp然后开启服务 /etc/init.d/xrdp start即可远程连接然后将该服务加入开机启动项就可以了。

2011-12-19 21:26:44 1284

原创 堆与栈存储效率的一点理解

http://wenku.baidu.com/view/e180b4df5022aaea998f0f36.html这篇文章上关于堆和栈的区别加以阐述,其中提到的堆与栈的存储效率的地方,通过自己查看汇编代码,把自己的理解汇总如下,算是对以上这篇文章的补充:还是引用这个经典的例子:#include void main() { char a = 1; char c[] = "

2011-11-01 15:45:48 1056

转载 SSH Telnet 终端退出后保持程序继续运行

http://blog.zhangjianfeng.com/article/718 你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的

2011-10-11 16:42:46 1443

原创 双向LRU链表

LRU是最近最少使用算法。一般内存管理的时候采用LRU算法可以提高性能。将cache缓存块位置用LRU双向链表链接起来,将新加入的块直接放到链表的头,当一个块被命中后,把该块调整到链表的头,这样经过多次操作之后,最近被命中过的块就会向链表头部移动,而没有被命中

2011-07-04 10:21:32 2905 1

原创 mmap映射空间与内存和磁盘的IO性能对比

mmap:功能描述:mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。 基于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到更新,首次对映射区的第一个页索引时会更

2011-06-29 20:36:00 7810 1

原创 page_cache和buffer_cache的直观理解

在这篇博客上http://blog.csdn.net/cheungjustin/archive/2010/08/31/5853399.aspx看到关于page cache,buffer cache的解释。         针对博客里面一开始提出的问题:一个程序,需要读入文件,它第一次执行时间和第二次执行时间一样吗?将文件改名后呢,umount文件系统后再mount上呢?      这篇

2011-06-29 20:32:00 1106

原创 linux内核bug调试指南(一)

<br />1.      do_sync_write/do_sync_read读写错误,返回值ret=-22;<br />通过查对应内核源代码中errno-bash.h,可以知道-22表示Invalid argument<br />函数调用的形式如下:<br />#define WRITE_STRIPE_SIZE (128*1024)<br />loff_t pos;<br />mm_segment_t oldfs;<br />int offset;<br />offset = 17000;<br />p

2011-05-30 20:32:00 1724

原创 kvm测试环境搭建(包括kvm网络桥接配置)

<br />kvm测试环境搭建<br />1.      操作系统:ubuntu 9.10 64bit <br />2.       Kernel module:<br />下载kvm-kmod-2.6.32.16然后编译;<br />sudo insmod /root/kvm-kmod-2.6.32.16/x86/kvm.ko<br />sudo insmod /root/kvm-kmod-2.6.32.16/x86/kvm-intel.ko<br />3.      Kvm依赖文件包:<br />gcc

2011-05-13 10:40:00 4697

原创 数组分割问题(另一种说法是交换两个数组元素使两个数组和的差最小)

<br />一、数组分割问题:(原帖见http://www.cppblog.com/baby-fly/archive/2009/09/24/92392.html)<br />题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。<br />假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:<br />S(k, 1) = {A[i] | 1<= i <=

2011-05-13 09:23:00 4284 1

原创 获取linux下scsi号的脚本

<br />在linux下可以通过cat /proc/scsi/scsi获取有关scsi的信息,如下:<br />Attached devices:<br />Host: scsi0 Channel: 00 Id: 00 Lun: 00<br />  Vendor: ATA      Model: ST3160023AS      Rev: 3.18<br />  Type:   Direct-Access                    ANSI  SCSI revision: 05<br />Ho

2011-05-12 19:46:00 1675

原创 tpc-c测试环境搭建

<br />搭建TPC-C环境<br />一、    准备<br />操作系统 :Linux, 内核版本2.6<br />需要软件:tpccuva-1.2.3, postgresql-8.1.15, gnuplot-4.2.5。<br />tccuva是实现标准TPC-C。<br />Postgresql是最稳定的开源sql数据库。<br />gunplot是一个数学软件,可以根据数据画出相应的函数图形。<br /> <br />二、    安装<br />1.   创建用户<br />useraddnew

2011-05-12 19:37:00 3870 1

原创 linux下iscsi连接脚本

<br />客户端通过iscsi连接服务器首先要保证客户端上安装了iscsi-initiator-utils,可以根据客户端的内核版本找对应的iscsi-initiator版本,安装好之后通过以下脚本(iscsi)操作如下命令:./iscsi start xxx.xxx.xxx.xxx(服务器ip)就可以连接服务器了。<br />#!/bin/bash<br />ipAddr=$2<br />DRIVERDIR=/lib/modules/$(uname -r)/kernel/drivers/scsi<br

2011-05-12 19:32:00 1377

原创 trace测试环境搭建

<br /><br />Trace测试环境搭建:<br />用trace测的时候需要装blktrace和libaio;这两个包在47和48上都有,拷贝到需要安装的机器上,然后进入相应目录make;make install 即可。<br />在49上有测试的trace,//192.168.0.49/data/spc下面有几个trace。拷贝到相应机器上之后进入如<br />[root@test4 ~]# cd /data/spc/f1/<br />[root@test4 f1]# ls<br />btrepl

2011-05-11 14:46:00 1493

原创 sysbench测试环境搭建

1.      安装mysql方法一:默认安装(这里使用的是这种方法)<br />1.安装<br />Fedora 8中安装Mysql 5数据库其实很简单,Linux安装的比在Windows下还好使!<br />yum install mysql-server<br />yum install mysql<br />mysql_install_db<br />好了,比以前的版本轻松许多。<br />另外mysql server的日志文件为/var/log/mysqld.log<br /> <br />一個是

2011-05-11 14:39:00 1321

转载 解惑-Linux内核空间

<br />解惑-Linux内核空间<br />解惑-Linux内核空间(一)<br />有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核编译后地址空间在什么范围内?要对外设进行访问,I/O的地址空间又是什么样的?<br />先回答第一个问题。Linux最常见的可执行文件格式为elf(Executable and Linkable Format)。在elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段”,对每个程序都是这样。至于程序执行时在物理内存

2011-02-20 10:01:00 1344

原创 vmware串口调试

在调试内核态程序时,发现内核里面的打印信息在默认的情况下只能在控制台输出,由于控制台能看到得信息有限,这就导致不能看到很多有用的调试信息。经过试验,可以有两种办法解决这个问题。1.使用串口调试。把调试信息通过串口输出,然后再用别的自己觉得好用程序读出打印信息。具体步骤如下  (1)在vmare中增加一个串口。在虚拟机的.vmx文件中加入以下信息          serial0.present = "TRUE"          serial0.autodetect = "TRUE"          se

2011-02-20 09:57:00 1406

转载 转:vs2005无法调试,没有生成pdb文件的解决办法

 其实问题在于,在空项目中不生成调试文件pdb,所以无法调试。要让项目生成pdb文件,需要更改:项目属性,configuration properties->linker->Generate Debug Info 从 no 改为 yes(项目属性:属性->连接器->调试->生成连接信息 改为"是")但这样还是不够的,还需要更改:项目属性,configuration proper

2009-07-20 20:34:00 6124

转载 转:IPv6下网络编程步骤(linux)

大家都知道,随着互联网上主机数量的增多,现有的32位IP地址已经不够用了,所以推出了下一代IP地址IPv6,写网络程序的要稍微改变一下现有的网络程序适应IPv6网络是相当容易的事。对于我们来说就是IP地址变化了,所以程序里在用到IP地址的地方做相应的改变就可以了。记住:主要是改变程序里设置IP地址和端口等部分的代码。服务器端源代码如下: #include #include #inc

2009-07-20 20:21:00 974

转载 转:BT协议分析

一 BT系统的组成结构  1 普通的Web服务器:   例如Apache或IIS服务器2 一个静态的种子文件:   即.Torrent文件,采用Bencoding编码3  Tracker服务器:        追踪下载同一文件的用户4 终端用户的Web浏览器:用于下载种子文件5  BT客户端:            例如BitCommet,BitSpirit 二 种子文

2009-07-16 08:15:00 1211

转载 转 eMule源代码解析(五)

转 eMule源代码解析(五)emule中的Kademlia代码总体描述当emule中开始使用Kademlia网络后,便不再会有中心服务器失效这样的问题了,因为在这个网络中,没有中心服务器,或者说,所有的用户都是服务器,所有的用户也是客户端,从而完完全全得实现了P2P。接下来讲针对emule中的Kademlia网络进行分析,会有一节进行原理方面的分析。另外的几节将会根据

2009-07-12 12:06:00 1351

gdb调试资料大全(各种调试命令)

gdb调试资料大全,要想熟悉linux就要会gdb调试,这是liunx下很强大的调试工具

2009-07-30

linux专家之路_linux内核源代码

linux专家之路_linux内核源代码.rar 包括所以内核模块的源代码

2009-07-30

Linux设备驱动编程第三版

Linux设备驱动编程第三版,里面详细的介绍了有关linux下驱动编程的步骤及注意事项

2009-07-30

Linux程序设计(Beginning.Linux.Programming)第4版

Linux程序设计(Beginning.Linux.Programming)第4版 ,适合linux初学者,入门很容易,是一部比较全的介绍linux程序设计的书

2009-07-30

linux图形化编程GTK经典文档

linux图形化编程GTK经典文档gtkdoc1·9·tar.zip linux下使用man可以查看

2009-07-30

linux网络编程(pdg)

linux网络编程基础教程,pdg格式的,建议用超星阅览器阅读

2009-07-30

windows网络编程源码

windows网络编程源码 包括各章节例子程序代码

2009-07-28

windows网络编程(第二版)

windows网络编程(第二版)chm格式的

2009-07-28

获取MAC地址和ipv6地址

获取本机网卡信息,包括MAC地址和ipv6地址

2009-07-28

enhanced-ctorrent移植到windows下的编译连接错误及解决办法

VC2005中被声明为否决的编译警告的解决办法;VC.NET报告WinSock.h和WinSock2.h之间冲突的问题及解决;vs2005下的dirent.h;VS2005怎么不能单步执行;无法解析的外部符号

2009-07-23

《实例解析IPv6环境下的网络编程》配套代码

《实例解析IPv6环境下的网络编程》配套代码,包含一个可以执行的完整ipv6的通信程序

2009-07-23

redhat挂载ntfs所需文件包

redhat不能自动挂载ntfs,为了能够自动挂载ntfs盘,需要安装两个软件

2009-07-15

windows下socket完全进阶

windows下socket完全进阶,ppt格式

2009-07-15

电驴windows下服务器软件

windows下的架设电驴服务器的小软件

2009-07-15

windows下bt下载工具及源代码

ctorrent,qtorrent,bittorrent,Halite

2009-07-15

IPv6协议理解与剖析(张晓彤)

ipv6winsok,ipv6configs,IPv6_Obj,IPv6-IPv4

2009-07-15

数据库课设 汽车租赁

VB数据库课设 汽车租赁 O(∩_∩)O哈哈~ 好东西 大家支持哈

2009-09-06

mfc多线程编程的两个例子

mfc多线程编程的两个例子mfc多线程编程的两个例子mfc多线程编程的两个例子mfc多线程编程的两个例子

2009-08-11

mfc中CTreeCtrl使用的一个例子

mfc中CTreeCtrl使用的一个例子mfc中CTreeCtrl使用的一个例子mfc中CTreeCtrl使用的一个例子mfc中CTreeCtrl使用的一个例子

2009-08-11

ListControl控件的使用方法实例

ListControl控件的使用方法实例ListControl控件的使用方法实例ListControl控件的使用方法实例ListControl控件的使用方法实例

2009-08-11

mfc在对话框中加入属性页五种方案源码

mfc在对话框中加入属性页五种方案源码 mfc在对话框中加入属性页五种方案源码 mfc在对话框中加入属性页五种方案源码 mfc在对话框中加入属性页五种方案源码

2009-08-11

6中方法实现mfc属性页对话框

6中方法实现mfc属性页对话框6中方法实现mfc属性页对话框6中方法实现mfc属性页对话框6中方法实现mfc属性页对话框

2009-08-10

《Visual C++.NET技术内幕》(英文)第六版源代码

《Visual C++.NET技术内幕》(英文)第六版源代码 配合原书使用,效果会更好

2009-08-06

《Visual C++.NET技术内幕》(英文)第六版

《Visual C++.NET技术内幕》(英文)第六版 经典的《VisualC++技术内幕》最新版(第6版)一定不要错过,这本书在销量排行榜上一直居高不下,颇受很多.net业界好评,是一本学习.NET技术的权威书籍。

2009-08-06

VC++技术内幕第四版源码

VC++技术内幕第四版的原代码,配合原书使用-technical fourth edition of the original code, with the use of the original book

2009-08-06

高质量C编程(说了很多细节方面)

高质量C编程(说了很多细节方面).pdf 对于c程序的不少规范都有

2009-08-02

gtk2.0简易教程

linux 下 gtk2.0简易教程,学习gtk的好帮手

2009-08-02

linux内核(kernel)图解

linux内核图解,比较清晰的描述了内核模块的各个框图,对于学习linux kernerl的人来说,这是一个好东西

2009-07-29

Linux 下的C编程

Linux 下的C编程 iso格式的,对于学习linux下的编程很有帮助

2009-07-29

深入浅出mfc简体版源码

深入浅出mfc简体版书中的所有源代码,对于学习mfc很有帮助。包括各种窗体,控件,组建以及事件响应等。建议用vc++6.0,当然用vs2005或者vs2008都可以!

2009-07-29

深入浅出mfc简体版

深入浅出mfc简体版,因为上传大小有限,所以把书中的源码另外上传,资源名称为”深入浅出mfc源码“

2009-07-29

获得本机ipv6地址

直接把这个头文件包含进去,然后在程序中调用getipv6addr()即可获得本机global ipv6 address

2009-07-28

空空如也

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

TA关注的人

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