自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (3)
  • 收藏
  • 关注

原创 套接口基本操作

阻塞TCP套接口读操作:从内核发送缓冲区中读到数据就返回,有可能是单个字节。如果什么数据也没有,则阻塞在那里等待数据,除非对方关闭连接。阻塞TCP套接口写操作:写操作会将数据从应用缓冲区拷贝到内核缓冲区,如果内核缓冲区满了,则阻塞。写操作返回了并不代表对方已经收到数据了,仅仅是表示数据拷贝进了内核缓冲区,可能还没有发送。非阻塞TCP套接口读操作:没有数据可读,立刻返回。非阻塞TCP套接

2012-12-09 20:15:48 709

原创 what is a link-local address?

Link local address allow machines to automatically have an Ip address on a network if they haven't been manually congfigured or automatically configured by a special server on the network(DHCP).Befo

2012-02-26 19:53:56 1082

转载 XSD 数据类型

字符串数据类型(String Data Type)字符串数据类型可包含字符、换行、回车以及制表符。下面是一个关于某个 scheme 中字符串声明的例子:xs:element name="customer" type="xs:string"/>文档中的元素看上去应该类似这样:John Smith或者类似这样: John Smith 注释:如果您使用字符串数据类

2011-11-23 17:10:40 8746

原创 简单调试打印函数

#include #include #include #include #include "debug_message.h"void debug_message(const char *ptr, ...){#ifdef DEBUG_OPEN

2011-09-15 10:57:39 747

转载 LINUX下ARM的汇编语法

第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。一. Linux汇编行结构任何汇编行都是如下结构:[:] [} @ co

2011-06-30 00:53:00 798

原创 编译原理

预处理-pre-processor:将原先的.c文件里的宏定义展开,包含的头文件包含进来,即处理#。处理完后还是文本文件。编译-compiler:将.c的代码变成.s的汇编语言,还是文本文件。汇编-assembler:将汇编代码变成二进制文件,即可重定位目标文件链接-Linker:将各个目标文件链接在一起,形成一个可执行文件。 最后编译出来的代码运行的内存地址是确定的,因为对于

2011-06-29 23:16:00 555

转载 安防产品基本概念

<br /><br />CCTV的含义2008-07-29 14:17<br />1) CCTV的含义是什么?——(难度:中等)<br />答: CCTV 是英文Closed Circuit Television的缩写,意思是闭路电视监控系统<br />2) 什么是镜头的焦距?——(难度:中等)<br />答: 从光学原理来讲焦距就是从焦点到透镜中心的距离。即焦距长度。如"f=8-24mm,",就是指镜头的焦距长度为8-24mm<br />3) 焦距长短与成像大小 视角大小有什么关系?——(难度:容易)<b

2011-05-12 14:13:00 3000

转载 传统模拟摄像机发展之路:向左走,向右走?

<br />当今,百万高清网络摄像机的发展如火如荼,大有星星之火迅速燎原之势。而反观传统的标清模拟摄像机产品,虽然依旧盘踞着摄像机的大部分市场,但是发展态势总让人感觉传统模拟摄像机已经日薄西山,后劲乏力。那么传统模拟摄像机是如何被历史所遗弃的呢?传统模拟摄像机真的是走进了死胡同,被高清网络摄像机逼到了墙角而无路可走了吗?兵临城下,传统模拟摄像机生产企业又该如何应对,实现华丽的转身?十字路口,该向左走、向右走?还是直行走中间?笔者将从技术角度与大家共同探讨这些问题。<br />文/北京汉邦高科数字技术有限公司

2011-05-12 12:25:00 2333

转载 C/S结构与B/S结构的特点分析

<br />为了区别于传统的C/S模式,才特意将其称为B/S模式。认识到这些结构的特征,对于系统的选型而言是很关键的。<br /><br />  1、系统的性能<br /><br />  在系统的性能方面,B/S占有优势的是其异地浏览和信息采集的灵活性。任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端。<br /><br />  不过,采用B/S结构,客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作由服务器承担,这使得服务器的负担很重。采用C/S结构时,客户端和服务

2011-05-10 11:18:00 1540

转载 几种开源的TCP/IP协议栈分析【转】

<br /><br />1、BSD TCP/IP协议栈<br />     BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是因为BSD栈在BSD许可协 议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多 TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。<br />2、uC/IP<br />    uC/IP是由Guy Lancaster编写

2011-05-06 10:50:00 1011

转载 局域网设置共享

<br />在局域网内的每一台机子做以下一些设置: <br />1、启用Guest(来宾)帐户:控制面板--用户帐户或者在管理工具--计算机管理--本地用户和组--右键Guest属性--去掉帐户已停用 前的勾。 <br />2、允许Guest(来宾)帐号从网络上访问:开始--控制面板--管理工具--安全设置--本地安全策略--用户权利指派 中的“拒绝从网络从网络访问这台计算机”看看有没有guest,有guest 就删除 <br />3、防火墙:控制面板--防火墙--例外--选择:文件和打印机共享。(系统默认

2011-04-20 11:13:00 562

转载 inux中socketaddr_in的结构解析

<br />struct sockaddr,该类型是用来保存socket信息的: <br />struct sockaddr <br />{ <br />unsigned short sa_family; /* 地址族, AF_xxx */ <br />char sa_data[14]; /* 14 字节的协议地址 */ <br />}; <br />sa_family一般为AF_INET;<br />sa_data则包含该socket的IP地址和端口号。<br />另外还有一种结构类型: <br />st

2011-04-19 10:32:00 2083

原创 ARP欺骗

<br /> 用sniffer发送ARP包<br /> <br />如果以太网目的地址是FFFFFF,以太网源地址是自己的网卡MAC地址,发送端IP地址是网关地址,目的以太网地址是FFFFFF,目的IP地址为全0<br />则会造成整个局域网无法上网。<br /> <br />将相应的目的以太网地址和目的IP地址改为某台主机,则会造成某台主机无法上网。<br /> 

2011-04-13 10:04:00 669

原创 mtrace监测程序内存泄露

<br /> Finding Memory Leaks Using mtrace<br />When testing code on small samples, small problems such as memory leaks are often undetectable. However, once the program is run on a larger scale, existing memory leaks become larger problems; they often will

2011-03-25 09:51:00 2596

原创 防止僵尸进程的方法:

<br />1.每次执行fork()前利用waitpid查看是否有子进程需要处理<br />2.调用signal(SIGCHLD,fun)注册信号处理函数,在函数里调用waitpid()<br />void fun(int)<br />{<br /> waitpid();<br />}<br />3.利用 sigaction 结构体<br />struct sigaction act,oldset;//设置信号性质的结构体<br />sigemptyset(&act.sa_mask);//清空屏蔽位<br

2011-03-24 17:39:00 676

转载 安装pthread库的帮助文档

<br />sudo apt-get install glibc-doc<br />sudo apt-get install manpages-posix-dev

2011-03-22 10:48:00 1573 1

转载 为apt-get设置http代理

<br />可以通过三种方法为apt-get设置http代理 <br />方法一 <br />这是一种临时的手段,如果您仅仅是暂时需要通过http代理使用apt-get,您可以使用这种方式。 <br />在使用apt-get之前,在终端中输入以下命令(根据您的实际情况替换yourproxyaddress和proxyport)。 <br />export http_proxy=http://yourproxyaddress:proxyport方法二 <br />这种方法要用到/etc/apt/文件夹下的apt

2011-03-22 09:57:00 3425 1

转载 RTSP协议与HTTP协议

<br />一。RTSP协议简介<br /><br />流媒体技术是一系列的网络协议的集合,包括:<br /><br />  1. 实时传输协议RTP(Real-time Transport protocol)<br /><br />  2. 实时传输控制协议RTCP(Real-time Transport Control protocol)<br /><br />  3. 实时流协议RTSP(Real Time Streaming protocol)<br /><br />  4. 资源预留协议RSVP(

2011-03-14 11:10:00 788

原创 构造库函数

<br /><br />构造静态库<br />         构造静态库要使用 AR 工具<br />构造方法:gcc –c addvec.c multvec.c   //生成addvec.o和multvec.o 目标文件<br />                     ar rcs libvector.a addvec.o  multvec.o //生成libvector.a 静态库<br />使用静态库:可能包含类似 libvector.h 这样的头文件,里面包含了使用函数的声明<br /> 

2011-03-14 10:22:00 505

转载 DDNS

<br />简介DDNS(Dynamic Domain Name Server)是动态域名服务的缩写!DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。就是说DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流了。  动态域名服务的对象是指IP是动态的,是变动的。普通的DNS都是基于静态IP的,

2011-03-10 10:03:00 572

原创 分辨率

<br />SQCIF=12*96 <br />QCIF=176*144 <br />CIF=352*288 <br />QVGA=320*240 <br />VGA=640*480 <br />SVGA=800*600 <br />XGA=1024*768 <br />XVGA=1280*960 <br />UXGA=1600*1200<br />720P = 1280×720<br />1080P = 1920×1080

2011-03-08 14:54:00 615

转载 安防摄像机滤光片的作用

滤光片,正确名称叫”光学低通滤波器” (OLPF)! 啊!不就是片破玻璃片嘛! 且听我道来:<br /><br />滤光片的功用:滤除红外线:    彩色CCD也可感应红外线,就是因为会感应红外线,会导致D.S.P无法算出正确颜色,,因此须加一片滤光片,把光线中红外线部份隔开,所以只有彩色CCD需要装滤光片,黑白就不用了<br /><br />修整进光:   因为CCD上是一颗颗的感光体(CELL)构成,最好光线是直射进来,但为了怕干扰到邻近感光体,就需要对光线加以修整,因此那片滤光片不是玻璃,而是石英片,

2011-03-08 10:52:00 8818 1

原创 LDD3块设备代码分析

<br />整个块设备抽象的数据结构<br /><br />struct sbull_dev {<br />        int size;                       /* Device size in sectors */<br />        u8 *data;                       /* The data array */<br />        short users;                    /* How many users */<b

2011-02-28 16:59:00 775

原创 linux中断底半部机制

<br />tasklet机制:基于softirq,所以处于原子上下文。<br />workqueue机制:处于进程上下文中。

2011-02-22 14:47:00 1207

转载 linux用户管理

<br />在linux中系统中,它并不认识帐号名称。它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中。我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passwd文件中是否有这个帐号,如果没有则跳出,如果有的话,他会读取该帐号的user ID和group ID同时该帐号的根目录和shell也读了出来。然后在去核对密码表,在/etc/shadow中找出我们刚刚输入的帐号和userID,核对我们输入密码是否正确。一切正确我们可以登录到当前用户shell。那么,

2011-01-26 18:35:00 511

转载 linux线程浅析

<br />原文:http://hi.baidu.com/_kouu<br /><br />关于linux线程<br /><br /> <br />在许多经典的操作系统教科书中, 总是把进程定义为程序的执行实例, 它并不执行什么, 只是维护应用程序所需的各种资源. 而线程则是真正的执行实体. <br />为了让进程完成一定的工作, 进程必须至少包含一个线程. 如图1.<br /><br />进程所维护的是程序所包含的资源(静态资源), 如: 地址空间, 打开的文件句柄集, 文件系统状态, 信号处理handl

2011-01-26 18:27:00 796 1

原创 linux内核的用户管理

在linux 2-6-14的内核版本中task_struct{/* process credentials */uid_t uid,euid,suid,fsuid;gid_t gid,egid,sgid,fsgid;}所以驱动程序中可以调用 current->uid确定当前进程属于的组。但是在 3-6-36 中task_struct 没有以上项目,只有loginuid,如何确定 进程属于的用户组??

2011-01-26 17:59:00 1024 1

转载 异步通知

要弄明白这个问题,我们得从最基本的原理开始。我们知道,驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。<br />好,那下一个问题就来了,这个过程如何实现呢?简单,两方面的工作。<br />一 驱动方面:<br />1. 在设备抽象的数据结构中增加一个struct fasync_struct的指针<br />2. 实

2011-01-24 17:01:00 511

原创 内核循环队列实现fifo

<br /><br />定义相关结构体<br /> 20 LIST_HEAD(task_queue_head);<br /> 21 struct task_queue{<br /> 22         struct task_struct *sleep_task;<br /> 23         int count;<br /> 24         struct list_head list;<br /> 25 };<br /> <br />  添加fifo节点<br /><br /> struct

2011-01-20 16:12:00 936

转载 linux 2.6内核 编译模块Makefile

<br />源文件只要一个,编译模块:<br />obj-m := mytest.o<br />KDIR := /lib/modules/$(shell uname -r)/build<br />PWD := $(shell pwd)<br />default:<br />       $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules<br /><br />就可以了,模块的名称是mytest,最后编译出来是mytest.ko,剩下的系统搞定。当然这里有一些隐含规则了

2011-01-18 18:37:00 592

原创 wait queue 笔记

1.正在运行的task从run queue上下来后,被放到wait queue上,从而进入睡眠。typedef struct __wait_queue wait_queue_t;typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key);int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *k

2011-01-17 13:36:00 945

原创 return ERESTARTSYS 作用

ERESTARTSYS is a part of the api between the driver and the signal-handling code in the kernel. It does not reach user-space (provided of course that it's used appropriately in the drivers :) When a driver needs to wait, and get awoken by a signal (as oppo

2011-01-16 14:24:00 2799 1

转载 Linux进程的睡眠和唤醒

<br />1 Linux进程的睡眠和唤醒<br />在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。<br />当然,一个进程也可以主动释放CPU的控制权。函数schedule()是一个调度函数,它可以被一个进程主动调用,从而调度其它进程占用CPU。一旦这个主动放弃CPU的进程被重新调度占用

2011-01-15 16:50:00 824

原创 ubuntu 编译内核

第一步 安装必要的工具首先要安装必要的包。 包有: libncurses5-dev ( menuconfig 需要的)和 essential sudo apt-get install build-essential kernel-package(内核打包deb的可以不用装手动安装) sudo apt-get install makesudo apt-get install gcc另外,查看系统是否有这样的两个命令 mkinitramfs mkisofs这两个工具在编译内核时用来生成 *.img 文件的。如果

2010-12-29 13:56:00 576

原创 container_of宏使用分析

<br /><br />#include <stdio.h><br />#include <stdlib.h><br />#include <stddef.h><br />typedef struct student{<br /> int x;<br /> double y;<br /> char z;<br />}mystudent;<br />//返回结构体的起始地址<br />#define container_of(ptr, type, member) ({ /<br />const typeof(

2010-12-08 15:46:00 667

转载 工行U盾检测不到,Giesecke & Devrient StarKey无法安装 解决办法

<br />工行U盾正确安装驱动后,插上u盾,就显示“Giesecke & Devrient StarKey”无法安装问题,支付时也检测不到U盾,说实话,工行在U盾方面处理的也实在弱智,很不好用。下面是本人找到的一个解决办法,希望对还在备受困扰的朋友有用。请到另外一台机器安装U盾驱动,不要插U盾,安装成功后,再插上U盾。查看 开始–所有程序–工行个人网上银行证书工具软件–捷德(或其他)–智能卡管理 如果其中有一个显示 “工作”状态,说明安装好了。请将 C:/WINDOWS/Temp下产生的StarKey10

2010-11-18 17:58:00 7244 1

转载 宏定义求结构体内变量偏移

<br />#define structoff(s, a)   (&((struct s*)0)->a)      /**< 使用方法:structoff(结构名, 元素名) */<br />#define structoff_var(v, a)   ((char*)&v.a - (char*)&v)       /**< 使用方法:structoff_var(结构变量名,元素名) */<br />#define structoff_ptr(p, a)   ((char*)&(p)->a - (char*)

2010-11-15 21:33:00 622

转载 如何看路由表

<br />Active Routes:<br />Network Destination        Netmask          Gateway      Interface  Metric<br />          0.0.0.0          0.0.0.0      192.168.1.2   192.168.1.101   10<br />        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1   1<

2010-11-14 19:40:00 1572

转载 变长参数宏 不定参数宏

变长参数宏类似printf的参数,后面参数个数可以不确定.这样可以写出比较复杂的宏,主要用于调试语句。 对于变长参数宏的支持,不同编译器有不同支持。VC++ 7.0 (VS.net)前不支持把宏的变长参数.只支持变长参数的函数设计.换句话说宏中不能出现…。在 GNU C 中gcc 支持的形式比较灵活,宏体即可以是函数,也可以是语句块.变长参数宏一大应用就是调试输出宏.在需要调试时打开调试宏,发行时只要简单关闭调试宏,则完全从程序中移走。 gcc的变长宏的用法 变长宏在宏名中

2010-11-13 21:46:00 7741

原创 80386寄存器(转)

 80386处理器是Intel公司80×86发展史上的里程碑,它不但兼容先前的8086/8088,80186,80286处理器,而且也为后来的486,Pentium(586),Pentium Pro(686)的发展打下了坚实的基础,对于我们程序员来讲更重要的是:我们关心80386在指令上到底有哪些扩展呢?80386有哪些寻址方式呢?毫无疑问,它不但兼容了8086的所有指令,而且还对它们进行增强.    呵呵,我知道有很多人问我CPU已经发展到PentiumIIII,没有必要学习80386的汇编。其实不然,8

2010-11-12 14:07:00 788

Linux网络编程+宋敬彬+孙海滨+源代码

书的原代码,配合书看或者运行下都挺好.经典,推荐推荐

2011-08-16

C++笔试题汇总,总结的很好

C++各种常见笔试题,总结的很好,这些常见的题目都会,笔试应该没问题了。

2010-10-28

基于ARM的GPRS无线数传温室测控系统

这是从优秀硕博论文数据库上下载的论文,基于2410平台

2009-09-02

空空如也

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

TA关注的人

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