自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (4)
  • 收藏
  • 关注

原创 常用命令

gcc预编译:gcc -E hello.c -o hello.i编译:gcc -S hello.i -o hello.s gcc -S hello.c -o hello.s汇编:gcc -c hello.s -o hello.o

2015-04-05 16:29:04 535

转载 linux设备驱动模型一字符设备open系统调用流程

从前面 的例子可以看到,我们在操作一个调和时都 是通过open系统调用先去打开这个设备,不管是设备还是文件,我们要访问它都要称通过open函数来先打开, 这样才能调用其它的函数如read、write来操作它,即通知内核新建一个代表该文件的结构,并且返回该文件的描述符(一个整数),该描述符在进程内唯一。在linux系统进程中,分为内核空间和用户空间,当一个任务(进程)执行系统调用而陷入内核代

2013-07-15 00:00:10 1290

转载 回调函数

一、回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回

2011-11-22 21:49:56 569

转载 函数指针和指针函数

 问题:(1) float(**def)[10]   def是什么?(2) double*(*gh)[10]   gh是什么?(3) double(*f[10])()   f是什么?(4) int*((*b)[10])    b是什么?回答: (1) def是一个指针, 指向的对象也是一个指针, 指向的指针最终指向的是10个float构成的数组. (2) gh是指针, 指向

2011-06-11 17:53:00 1607

原创 分解质因数

<br />public class DecomposePrimeFactor { public final static int NUM = 154; public static void main(String[] args){ DecomposePrimeFactor.decomposePrimeFactor(NUM); } public static void decomposePrimeFactor(int num){ int temp = num;

2011-04-20 21:53:00 734

原创 java之路

<br /><br />如何学习java(一)<br />在开始之前有必要再讨论一下J2ME,J2SE,J2EE这些概念。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2SE,Java 2 Platform,Standard Edition,我们通常所说的JDK(Java Development Kit)包含在此,是J2EE的基础。J2EE,Java 2 Platform,Enterprise Edition,就是所

2011-04-14 20:45:00 689

原创 Eclipse搭建Spring开发环境

<br />传送门<br />http://www.leyond.info/set-up-spring-dev-environment-using-eclipse/

2011-03-29 11:44:00 1537

原创 Thinking in Java笔记11

<br />(第12章)<br /> <br />package com.ch12;import java.util.*;class Int implements Cloneable{ private int i; public Int(int ii) { i = ii; } public void increment() { i++; } public String toString() { return Integer.toString(i);

2011-03-12 21:21:00 578

原创 Thinking in Java笔记10

<br />(第11章笔记)<br /> <br />/* * 为理解RTTI 在Java 里如何工作,首先必须了解类型信息在运行期是如何表示的。这时要用到一个名为"Class 对象"的 * 特殊形式的对象,其中包含了与类有关的信息(有时也把它叫作“元类”)。事实上,我们要用Class 对象创建属于某个 * 类的全部"常规"或"普通"对象。对于作为程序一部分的每个类,它们都有一个 Class对象。换言之,每次写一个新类时, * 同时也会创建一个Class对象(更恰当地说,是保存在一个完全同名

2011-03-10 19:55:00 567

原创 Thinking in Java笔记9

<br />(第10章笔记)<br />package com;import java.io.*;import java.util.Arrays;class DirFilter implements FilenameFilter{ String afn; //需要查找的文件名的关键字 DirFilter(String afn) {this.afn = afn;} public boolean accept(File dir, String name){ String f

2011-03-09 16:39:00 640

原创 用if、Exception还是assert?——看JavaEye论坛帖子:《面试题:用Exception异常还是if判断》的感想

今天在JavaEye上看到一个很火的帖子,题目是(面试):用Exception(异常)还是if判断http://www.javaeye.com/topic/745640。内容大概是: 当参数不合法的时候,究竟是if else 判断后返回一个值还是直接来个Exception ? 如果是 if else 的话,有什么好处? 如果是 exception 的话,又有什么好处? 或者是根据不同情况来定?   实际中应该使用if else或Exception的都有,因而下面的回复也是各抒己见,很多人都有一定

2011-02-28 21:04:00 1818

原创 Thinking in Java笔记8

<br />(第9章笔记)<br /> <br />//捕获错误最理想的是在编译期间,然而有些问题必须在运行期间解决//异常,if—else or 断言 ?//异常:程序执行时的一些非正常的情况,如果有不正确的数据、逻辑等会抛出异常。是程序员写给其他程序员的,比方说我写了//一个方法,如果其他人使用我这个方法的时候有可能不按我想的路子使用,可能会引起我的方法产生不正常的处理,这时候我要//使用异常,而且可以决定产生异常了是由我这个方法本身进行处理(catch语句中处理)还是交给调用者进行处理

2011-02-28 20:27:00 784

原创 Thinking in Java笔记7

<br />(第8章笔记)<br />//集合可以用来容纳对象,但不能容纳基本数据类型,但可以容纳Integer,Double等package com;import java.util.*;class Weeble{ void display(){ System.out.println("Weeble"); }}class Cat{ private int catNumber; Cat(int i){ catNumber = i; } void

2011-02-25 20:37:00 651

原创 windows操作系统各版本介绍

α(alpha):内部测试版,一般不向外部发布,会有很多bug β(beta):同样作为测试版,在alpha之后,向外发布,测试人员为广大用户 γ(gamma):在gamma版之后经过一些修改,成为正式发布的候选版本时叫做gamma,现在叫做RC(Release Candidate)。 RC(Release Candidate):发布候选版本,和beta版最大的差别在于beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错。 OEM(Original Equip

2011-02-13 13:27:00 1888

转载 Windows 系统下Tomcat 5.5安装及配置

一.Tomcat 5.5下载 下载地址如下: For Windows 免安装:http://apache.etoak.com/tomcat/tomcat-5/v5.5.31/bin/apache-tomcat-5.5.31.zip 安装:http://apache.etoak.com/tomcat/tomcat-5/v5.5.31/bin/apache-tomcat-5.5.31.exe For Linux http://apache.etoak.com/tomcat/tomcat-5/v5.5

2011-01-30 22:21:00 5531

转载 Windows 系统下JDK 1.6安装及配置

一.JDK1.6下载 目前JDK最新版本为JDK1.6,下载地址如下: For Windows http://111.208.57.13/download/3348493/3529514/1/exe/193/216/1292470316737_984/jdk-6u23-windows-i586.exe For Linux http://cds-esd.sun.com/ESD6/JSCDL/jdk/6u23-b05/jdk-6u23-linux-i586-rpm.bin?AuthParam=1296

2011-01-30 22:15:00 7097

转载 循序渐进学习使用WINPCAP(九)

收集统计网络流量 这一章将展示WinPcap的另一项高级功能:收集网络流量的统计信息。WinPcap的统计引擎在内核层级上对到来的数据进行分类。如果你想了解更多的细节请,可以查看NPF驱动指南。 为了利用这个功能来监视网络,程序必须打开一个适配器并用pcap_setmode()将其设置为统计模式。注意pcap_setmode()要用MODE_STAT来将网卡设置为统计模式。 在统计模式下,编写一个程序来监测TCP流量只是几行代码的事情。下面的例子说明了如何来实现该功能。   在设置为统计模式之前,

2011-01-29 20:56:00 1830 1

转载 循序渐进学习使用WINPCAP(八)

发送数据报 尽管WinPcap从名字上来看就表明它的主要目的是捕获数据报,但是它还为原始网络提供了一些其他有用的功能。其中之一就是用户可以找到并使用一系列完整的函数来发送数据报。 需要指出的是原来的libpcap库并不提供任何发送数据报的功能,这里所有的功能都是WinPcap的扩展功能,所以并不能够在Unix下工作。 l 用pcap_sendpacket()来发送一个单独的数据报 下面的代码片段是一个最简单的发送数据报的方法。打开一个适配器后就可以调用pcap_sendpacket()来发送一条手工

2011-01-29 20:50:00 4142

转载 循序渐进学习使用WINPCAP(七)

处理脱机的转储文件 在这一章,我们将要学习如何处理数据包,继而将它转储到文件中。WinPcap提供了丰富的函数来将流经网络的数据包保存到一个转储文件并且读取转储文件的内容。这一章将讲述如何使用这些函数。我们也将看到如何使用WinPcap的内核转储功能来得到高性能的转储(注意:目前,由于新内核缓存的一些问题,这个功能暂时被关闭)。 转储文件的格式很简单,是libpcap的一种。它包含了所捕捉的数据报的二进制内容,这种格式也是很多网络工具的标准,如WinDump,Ethereal和Snort。 -----

2011-01-29 20:39:00 4312

转载 循序渐进学习使用WINPCAP(六)

解析数据包 现在经过上几节的学习能够进行数据报的捕获和过滤了,我们想用一个简单的"real world"程序将我们所学的知识应用于实际。 这一节里我们将利用以前的代码建立一个更实用的程序。该程序的主要目的是显示所捕获的数据报的协议头是如何解析和解释的。这个程序名叫UDPdump,它将在屏幕上显示出我们网络上UDP数据的信息。 在此我们选择解析UDP是因为它比TCP简单更加的直观明了,容易理解。下面让我们来看看源代码。   首先我们设置UDP过滤器为“ip and udp”,用这种方法我们确保pac

2011-01-29 20:34:00 2119

转载 循序渐进学习使用WINPCAP(五)

数据流的过滤 WinPcap或libpcap最强大的特点之一就是数据流的过滤引擎。它提供一种高效的方法来捕获网络数据流的部分数据而且常常和WinPcap的捕获机制相集成。过滤数据的函数是pcap_compile() 和 pcap_setfilter()。 pcap_compile()来编译一个过滤设备,它通过一个高层的boolean表达式产生一系列的能够被过滤引擎所解释的低层的字节编码。boolean表示语法能够在开发包中找到。 pcap_setfilter() 用来联系一个在内核驱动上过滤的过滤器。

2011-01-29 20:29:00 3314

转载 循序渐进学习使用WINPCAP(四)

不用callback捕获数据报 这节的例子很像先前的一章(获得网卡的高级信息),但是这一节中使用的是pcap_next_ex()而非pcap_loop()。 pcap_loop()函数的基于回调包捕获机制是一流的,在某些情况下是不错的选择。但是在一些情况下处理回调并不特别好:这会使程序变的复杂并且在象多线程或C++类这些情况下它看起来到象一块绊脚石。 在这些情况下,pcap_next_ex()允许直接调用来接收包。使用pcap_next_ex()可以仅仅在程序员需要接受的时候接受包。 它的参数和回调

2011-01-29 20:23:00 2122

转载 循序渐进学习使用WINPCAP(三)

打开网卡捕获数据包 现在我门已经知道了如何去获得网卡的信息现在就让我们开始真正的工作:打开网卡并捕获数据流。在这一节,我们将写一个打印流经网络的每个数据包信息的程序。打开网卡的功能是通过pcap_open()来实现的。该函数有三个参数snaplen,flags,to_ms,下面依次解释: snaplen用于指定所要捕获包的特定部分,在一些系统上(象xBSD and Win32)驱动可以通过配置只捕获数据包的开始一部分而不是全部,这样就减少了拷贝数据的数量从而提高了包捕获的效率。在这个例子中,我们用高过可

2011-01-29 19:32:00 1757

转载 循序渐进学习使用WINPCAP(二)

获得已安装网络驱动器的高级信息 在第一章中演示了如何获得已存在适配器的基本信息(名字和描述)。事实上,WinPcap同样也提供其他的高级信息,特别是 pcap_findalldevs_ex()这个函数返回的每个 pcap_if结构体都同样包含一个pcap_addr结构的列表,它包含: 一个地址列表 一个掩码列表(每一项与地址列表的条目相对应) 一个广播地址列表(每一项与地址列表的条目相对应) 一个目的地址列表(每一项与地址列表的条目相对应) 另外,pcap_findalldevs_ex()也能够

2011-01-29 15:34:00 2074 1

转载 循序渐进学习使用WinPcap(一)

转载自安全焦点(翻译者yiedu),本文部分有修改。 一些需要知道的细节描述(前言):       这一部分展示了如何使用WinPcap-API的不同的功能,它作为一个使用指南被划分为一系列的课时来带领读者循序渐进的体会Pcap的程序设计的魅力:从简单的基本功能(如获取网卡的列表,数据包的捕获等)到统计和收集网络流量等高级功能。       这些例子是用C语言写的,所以在学习之前首先要有一定的C语言的基础,当然Pcap作为一个网络底层的驱动,要想学好它也必须具备一定的网络方面的知识。 最后说一下本机

2011-01-29 15:25:00 3128 2

原创 基于WinPcap的开发中Vs2010的配置

首先在View中选择Property Manager然后展开工程,再展开Debug|Win32 ,接着右击 Mircrosoft.Cpp.Win32.user选择Properties(此处设置全局有效)之后分三步:1.      设置环境目录在VC++ Directiories中 Include Directories和Library Directories中添加路径。假如将wpdpack放到c盘。则:Include Directories:c:/wpdpack/Include;Library Dire

2010-12-27 23:17:00 6914

原创 win7下开启和使用telnet的方法

<br /> <br /> <br />首先,出于安全考虑,win7已经禁用了telnet这一功能,毕竟telnet是明文传输的,安全性很差。<br /> <br />知道了这一点就不奇怪为什么在win7下不能使用telnet了,下面就详细介绍下如何重新开启telnet服务:<br /> <br />1、如果你直接到控制面板的管理工具里德服务项里去找telnet的话,那是徒劳无功的,因为默认根本就没有这一服务。当然,你可以通过如下方式搞定。“控制面板”-->“程序”-->“打开或关闭windows功能”,在

2010-12-24 20:41:00 1140

原创 Thinking in Java笔记6

<br />(第7章笔记)<br /> <br /> package com;public class Test6_1 { //定义2个内部类 class Contents{ private int i = 11; public int value() {return i;} Contents() {System.out.println("Content()");} } class Destination{ private String label; Des

2010-12-03 22:02:00 702

原创 Thinking in Java笔记5

<br />(第6章笔记)<br /> <br />package com;//句柄要得到初始化,可在下面地方进行://1.定义句柄时//2.在构建器中(对类的成员进行初始化)//3.紧靠在实际使用之前,这样可以节省开销//函数的初始化顺序在第四章有了个初步的认识,那么如果类有继承,初始化的顺序有如何呢?(举例Java编程思想6.9.1节)//1.第一件事情是装载程序到外面找到那个类,将其载入,如果还有继承,则继续向上载入,直到根基础类// 到根基础类后,执行static初始化

2010-11-26 23:10:00 399

原创 Thinking in Java笔记4

(第5章笔记)package com; //package 语句必须作为文件的第一个非注释语句出现//编译器强迫package名的第一部分是类创建者的因特网域名//按这一约定行事,package的名称就肯定不会重复//Java 解释器的工作程序如下://1.找到环境变量CLASSPATH//2.CLASSPATH 包含了一个或多个目录,它们作为一种特殊的"根"使用,从这里展开对.class 文件的搜索//3.将每个点号(句点)替换成一个斜杠,从而生成从CLASSPATH 根开始的一个

2010-11-25 23:56:00 553

原创 Thinking in Java笔记3

(第4章笔记)package com;public class Test3 { private int data; private String str; Test3(){ f(5); //寻找与之匹配信息丢失最少的类型——long } Test3(int i){ data = i; } Test3(String s){ str = s; } Test3(int i, String s){ this(i); //为this赋予一个自变量列

2010-11-25 00:48:00 552

原创 Thinking in Java笔记2

(第3章笔记)package com;class Value{ int i; }public class Test2 { public static void main(String[] args) { Integer n1 = new Integer(2); n1++; System.out.println("n1 = " + n1); Integer n2 = new Integer(1); System.out.println("1.n1 = " +

2010-11-24 15:28:00 601

原创 Thinking in Java笔记1

(第1、2章笔记)package com;import java.math.BigInteger;/** The first example program.* Lists system information on current machine.* @author Haibo Zhang* @author zhbzhb292@sina.com* @version 1.0*/public class Test { /** Sole entry point to clas

2010-11-22 00:08:00 720

原创 如何用C语言获取当前系统时间?

#include #include void main (){time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( "/007The current date/time is: %s", asctime (timeinfo) ); exit(0);} 程序解释:#include // 必须的时间函数头文件time

2010-11-21 22:18:00 6010 1

原创 如何在一个进程中生成两个子进程?

#include #include #include #include int main(void) { pid_t pid1; pid_t pid2; pid1=fork(); /*这里定义第一个子进程*/ pid2=fork(); /*这里定义第二个子进程*/ if(pid1

2010-11-18 00:05:00 11669 2

原创 waitpid()与wait()

waitpid()与wait()功能类似,都是用户主进程等待子进程结束或中断。可用于进程之间的同步。1.wait()表头文件#include#include定义函数 pid_t wait (int * status);函数说明  wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数status 可以设成

2010-11-17 23:43:00 19515

转载 海明校验码原理(详解)

 海明校验1.海明校验的基本思想     将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。实质上,海明校验是一种多重校验。2.海明校验的特点     它不仅具有检测错误的能力,同时还具有给出错误所在准确位置的能力。 一.校验位的位数 校验位的位数与有效信息的长度有关设:N--为校验码的位数 K--是有效信息位 r--校验位(分成r组作奇偶校验,能产生r位检错信息)海明码应满足 N=K+r≤2r-1 若r=3 则N=K+r≤7 所以

2010-11-14 18:24:00 13177

ZJU_数据库原理大程——图书管理系统

浙江大学数据库原理大程:图书管理系统,资源包含: 源代码,详细设计文档,报告

2011-04-06

C#精髓(刘基程译)

本书简明扼要地讲解了C#编程语言的核心知识。 本书适合于正在学习C#的C或C 程序员,也适合于C#初学者阅读。

2011-02-25

空空如也

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

TA关注的人

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