- 博客(26)
- 资源 (4)
- 收藏
- 关注
原创 jpeg组包
#ifndef _JPEGPARSER_H_#define _JPEGPARSER_H_#include "RTSPStruct.h"//static FILE *nfile = NULL;#define VIEOD_FRAME_JPEG_LEN 1024*1024
2011-09-22 17:27:47 1190
原创 quicksort
void quick_sort(int InArray[], int top, int end, int indexkey){ int itop = top; int iend = end; int iindexkey = indexkey; int temp = 0
2011-08-23 11:49:19 433
原创 OpenRtsp源码剖析之hashtable解析
OpenRtsp源码剖析:hashtable 这是主要保存数据value和key的结构体: class TableEntry { public: TableEntry* fNext;
2011-08-17 18:23:13 1544
原创 算法练习
1. C语言题,输入一个正整数,要求判断这个数是否是对称数(比如121,123321,1456541)。要求不能调用字符串库函数。 #include #include bool isSymmetryN(unsigned int symnum) //注意,当
2011-08-15 22:18:18 1014 4
原创 1+2+3...+n
要求:题目:求1+2+…+n,不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。 一下就是转载别人的解法: 1.#include using namespace std;templat
2011-08-12 17:05:21 1218
原创 广播,多播
广播,顾名思义是把数据广播出去,又分为网内广播,网外广播。 如果在局域网内进行广播,把广播地址,也就是网络物理层的目的地址全部填写成1就行了,这样的话,当路由器,收到数据包的时候,ip协议会根据目的地址确定这是一个广播数据包,就不会转发到其它网络上,而是直接发送到
2011-08-11 18:29:27 453
原创 网络地址,tcp/udp的区别
今天复习了一下比较基础的网络知识,本来以前对网络这块就比较迷离。 网络地址,众所周知就是用来标识计算机所在位置,并不是标识那一台计算机的名字,而是表明这台计算机和网络之间的关系,所以当这台计算机换了个地方以后,也要相应的改ip地址。 网络地址占3
2011-08-10 18:45:12 709
原创 volatile的使用
volatile的意思是易变的,用来修饰变量和const是相反的。注意:它们不能同时修饰一个变量。 作用: 使用volatile修饰的变量,编译器不会进行优化,因为有时为了追求速度和性能,编译器会临时存储变量到寄器,因为cpu从寄存器取变量的值比直接
2011-08-09 18:45:46 631 2
原创 linux链接
看了深入理解计算机系统《链接》这一张,写出来,虽然其中有很多还不是很懂,但根据自己的理解写出了一点心得,如果各位大虾不幸看到,希望指点一二。 linux的目标文件格式(ELF),就是要生成的目标文件,大体过程如下: 以c编译器为例,例如
2011-08-02 18:41:14 350
原创 windows 完成端口
在windows网络编程中,有一种完成端口iocp机制,用于处理客户端的连接,避免每当客户端进行连接就创建一个线程,这样会导致服务器成千上万个线程,而完成端口很好的解决了这个问题。 自己的理解是:完成端口就是一个IO完成队列,在把服务socket与这个完成端口绑定,
2011-07-12 18:15:21 735
原创 进程与线程
<br /> 进程由内存和资源构成,进程本身不能够执行,只是存放内存和资源的地方。<br /> 资源:包括句柄,线程,核心对象,USER资源,GDI资源。<br /> <br /> 线程主要分为三部分:code(read only):执行部分。Data:包括全局变量和静态变量。Stack:存放堆栈和局部变量。 <br /> 线程之间的切换(context_switch):当线程执行太久———>发生中断———>把线程所有寄存器的内容拷贝到堆栈中———>再拷贝到congtext。<br
2011-05-10 18:17:00 387
原创 学习c/c++技术小结
<br /> 伪指令#pragma pack(n) 这个指令用于告诉编译器,程序里面的结构体按到n个字节对齐。<br /> #pragma pack()取消自定义的字节对齐。<br /> struct stA =>将按到结构体变量中,占最大字节来算,int占4个字节,所{ 以sizeof(stA) = 8; int a; 注意:如果#pragma pack(n),n超过了结构体中,最大的 char b;
2011-02-24 18:25:00 389
原创 学习com后技术小结
com的定义是:组件对象模型,主要作用用于分布式环境,可以跨语言,跨平台。 要介绍com,就先必须了解接口,为什么可以被其它语言调用,例如java,vb,就是通过接口定义语言idl来实现的,通过midl,将接 口定义翻译成其它语言,然后其它语言就能调用com了。每个组件都有名字,当多个组件启动,为了避免不同组件之间的名字冲突,就用IID来定义组件的接口名,CLSID来定义类名。在接口定义文件idl中,import "unknown.idl",可以引进其它接口文件,被MIDL翻译后,如果是c/c++
2011-02-21 18:53:00 507
原创 nginx在cygwin情况下hello,world
<br /> <br /> 最近看了一些nginx运行hello,world的资料,然后自己总结了一下。<br />这里只介绍使用cygwin的情况。<br /> 在windows平台上装好cygwin以后,运行cygwin,如果想进windows下的C,D,E,F目录,则必须cd /cygdrive,进入以后用ls命令就可以看见C,D,E,F盘了,然后下好nginx源码。<br /> 准备工作做好以后,就可以开始自己的hello,world模块了,首先建一个目录,用来存放自己
2011-02-17 17:41:00 2772
原创 windows 线程同步机制
<br /><br />线程同步用来对资源的一种控制使用,避免产生死锁。<br />一. critical section<br /> 只能在进程之内使用, 不属于内核变量,当对资源进行critical section以后,只有获得所有权的线程,才能对资源的访问,访问过后,
2011-02-17 09:23:00 543
原创 nginx之array分析
<br /><br />nginx 数组结构体:<br />struct ngx_array_s {<br /> void *elts; 内容<br /> ngx_uint_t nelts; 已经使用了多少个字符串<br /> size_t size; 每个字符串所占的大小 <br /> ngx_uint_t nalloc; 预分配的多少个字符串,如果和nelts相等,则满了,然后根据情况确定是否需要重新分配内存<br />
2011-02-12 16:54:00 670
原创 路由器小结
<br /> 两台计算机是如何通信的了?以前一直都没怎么明白,现在总算有了一点头绪了,虽然内部原理有些地方还是还没有搞清楚,比如采用的路由算法什么的。以下就是分析:<br /> 当把数据打好成ip包以后,通过ip协议发送到路由器,路由器查看目的ip地址,如果是本地网络,就直接把ip包发送到本地网络接口,然后再发送到目的地址,如果目的地址不属于本地网络,则发送到其它路由器接口,这里路由器干些什么?路由器维护一个路由表。<br /> 路由表:<br /> 目的地址
2010-12-10 13:28:00 469 1
原创 com技术小结
<br /> com:组件对象模型,客户端通过com api获得com对象,来调用com的方法。<br /> com对象:通过com api函数CoCreateInstance()产生com对象,这个函数需要指定两个128位的id,一个是dll/exe文件的id,一个是com的类id,在生成com的时候,系统注册表会记录这两个id,并把他们各自对应的dll/exe文件,类名记录下来,当调用这个api函数的时候,会在注册表中找到对应的dll/exe,类名,进行加载。如果不在同一台机子上,在客户端和
2010-12-09 15:02:00 334
原创 c++对象模型之虚继承
class A{ int a;};class B:virtual public A{ int b;};B b; -> 内存[ int a ] [ int b ] [ void *pt] 指向 int a如果没有virtual,内存如下:[ int a ][ int b ]class C:virtual public A{ int c;};class D:public B,pu
2010-12-02 18:36:00 326
原创 linux Makefile
<br /> Makefile 用于在linux平台下,编译文件的工具。<br /> 当用户执行make命令,会自动在当前目录下找到Makefile文件,并执行。<br /> 用于将所有的目标文件obj,打包成lib文件,或者linux下的*.a 文件。<br /> target:one.o two.o<br /> 如果任何one.o,two.o文件比target文件新的话,下面的命令会自动执行。<br /> 只允许单行注释以#开头<br /> 未完待续
2010-12-02 14:17:00 342
原创 堆排序
我想说的不是内存中的堆空间,这里的堆只是一种组织方式,采用的是用完全二叉树的形式来表示一维数组,就是说如果是一个大顶堆的话,根部的数是最大的,从根部开始,一层一层对应数组,例如数组int a[6]={6,5,4,3,2,1},a[0]是根部,a[1] 是左子节点,a[2]是右子节点,。。。。。。 如果要对一个一维数组进行堆排序的话,首先要把这个一维数组初始化为一个大顶
2010-05-04 21:35:00 396
原创 C,C++中读取文件
c++读取文件:CreateFile();创建/打开文件文件,返回一个HANDLE指向打开的对象,头文件:Windows.hReadFile();根据传入的HANDLE,开始读文件,一次读入一个buf,需要指定读入的字节个数,其中包括换行符,回车符,如果成功返回一个非零的bool值include Windows.h.WriteFile();写一个buf,指定写入的字节数,如需换行,需要写入回车符,
2010-03-27 16:00:00 3104
转载 二维数组名作为实参或者形参
可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以可以指 定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的: void Func(int array[
2009-12-13 20:26:00 903
原创 sizeof 和strlen
sizeof是计算所占的内存空间,也就是多少字节,是语言内置的运算符,在编译时就能确定,速度快,性能比strlen好。 strlen(const char *p),计算的是个数,并且字符串的尾部必须以‘/0结束,但是个数却不包括’/0‘,是函数库,必须要调用函数,性能不是很好,速度不快,而且是在运行才能确定。
2009-10-31 22:53:00 566 3
原创 getline的用法
getline在c++中的头文件#include 作用:输入流中获得一行文本 用法:1:getline(输入流,string)获得一行字符串并保存到string中,当用户按enter键即遇到默认结束符’/n结束。 2:cin.getline(指向保存对象的指针,个数,结束符),当遇到结束符的时候停止读取,读的个
2009-08-29 15:30:00 941
原创 getchar()和EOF总结
http://blog.chinaunix.net/u2/77929/showart_1949842.html字符串输入:gets() char name[20]; printf("Hi,Whats your name?/n"); gets(name); printf("Nice name %s",name);它使用一个地址把字符串赋予name。 char n
2009-08-10 22:34:00 599
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人