上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 解释其中的Length/EtherType字段:当字段值大于等于十进制值 1536 (即十六进制为 0600)时, EtherType 字段表示为 MAC 客户机协议的种类Ethertype(十六进制)协议0x0000 - 0x05DCIEEE 802.3 长度0x0101 – 0x01FF实验0x0600XEROX NS IDP0x0660 0x0661DLOG0x0800网际协议(... 阅读全文
posted @ 2009-06-17 12:06 辛勤耕耘 阅读(899) 评论(0) 推荐(0) 编辑
摘要: 1.结构化异常处理 SEH是由编译器实现的,不同编译器在实现SEH时会有些区别。它是Winodws特有的技术。 SEH和C++异常是两种不同的异常机制。在VC中C++异常是基于SEH实现的。 2.结构化异常处理用法 (1)__try __try后必须接__finally和__except中的一个,且只能有一个。 若__try中有return,break,continue等语句,在执行这些语句前... 阅读全文
posted @ 2009-06-17 10:45 辛勤耕耘 阅读(1297) 评论(0) 推荐(0) 编辑
摘要: 1.概览 .构造DLL (1)仅导出函数 DLL可以导出全局变量和类,但我们不建议这么做,建议导出函数。 (2).lib 每个DLL都有与之相对应的.lib文件,该文件中列出了DLL中导出的函数和变量的符号名 (3)指定要导出的函数名 因为不同编译器的Name mangle规则不同,这就导致DLL不能跨编译器使用。 有以下两种方法可以解决这个问题: 1.在.def文件中指定要导出的函数名... 阅读全文
posted @ 2009-06-17 10:44 辛勤耕耘 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 目的:减少创建与撤销线程以及切换的额外开销, 简单实现分析:首先创建一个信标对象hSemaphore(初始化:可以容纳最多的作业数max,当前资源数为0)。然后创建一定数量的工作线程(WorkThread),比如10个线程,这些线程都在循环中WaitForSingleObject(hSemaphore)。由于一开始信标的当前资源数是0,所以信标是unsigned,那么所有线程都处于等待状态。另创... 阅读全文
posted @ 2009-06-17 10:43 辛勤耕耘 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 1.概览 (1)什么时内存映射文件 内存映射文件是由一个文件到一块内存的映射,使进程虚拟地址空间的某个区域与磁盘上某个文件的部分或全部内容的建立映射。建立映射后,通过该区域可以直接对被映射的磁盘文件进行访问.而不必执行文件I/O操作也无需对文件内容进行缓冲处理。就好像整个被映射的文件都加载到了内存一样,因此内存文件映射非常适合于用来管理大文件。 注:与虚拟内存使用的是Page file不同,内存... 阅读全文
posted @ 2009-06-17 10:42 辛勤耕耘 阅读(750) 评论(2) 推荐(0) 编辑
摘要: Windows内存构架1.进程虚拟地址空间 每个进程都有自已的私有的虚拟地址空间,在32位机器上是4G,在64位机器上是16EB。 进程内的线程只能访问其所属进程所占的内存,其它进程的内存对其而言是不可见的,无法访问到。 2.虚拟地址空间是如何划分的 以32位 x86进程的虚拟地址被分成四个区域(Partition) (1)空指针区域 0x00000000 ~ 0x0000FFFF 专门留出... 阅读全文
posted @ 2009-06-17 10:41 辛勤耕耘 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 1.打开和关闭设备对象 打开设备 CreateFile CreateMailslot CreateNamedPipe CreatePipe 关闭设备CloseHandle CloseSocket 查看设备类型 GetFileType 各个设备的创建函数使用:File CreateFile (pszName is pathname or UNC pathname). Directory Create... 阅读全文
posted @ 2009-06-17 10:40 辛勤耕耘 阅读(1067) 评论(0) 推荐(0) 编辑
摘要: 效率you should try to use nonshared data first and then use volatile reads, volatile writes, interlocked APIs, SRWLocks, critical sections. And if all of these won't work for your situation, then and on... 阅读全文
posted @ 2009-06-17 10:31 辛勤耕耘 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 1.挂起和恢复线程 (1)ResumeThread 被挂起的线程不会被调度,只有线程调用ResumeThread()的次数等于SuspendThread()时,线程才会被调度。(2)SuspendThread 当线程正在堆分配内存时(会给这个堆加上锁),此时如果将线程挂起,其它线程若想在堆上分配内存则会进入无限等待 直到堆的锁被挂起的线程解开。从而导致死锁。 [代码]尽量不要在外面调用 Sus... 阅读全文
posted @ 2009-06-17 10:25 辛勤耕耘 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 多线程编程离不开锁,可加锁会引起性能,甚至是死锁,那到底什么是多线程安全的? 1.局部变量局部使用是安全的 每个thread 都有自己的运行堆栈,而局部变量是生存在堆栈中,大家不干扰。 {int local1; ++local1;} 是安全的 2.在32机器上,4字节整形一次assign是原子的 比如i =10; //thread1i=4; //thread2不会导致i的值处于未知状态,要么是10... 阅读全文
posted @ 2009-06-17 10:23 辛勤耕耘 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 802.1x认证的EAP协议(总体流程) ­参考RFC 3748 ­Supplicant主机服务器----------- ------------- |------------------------------>| 主机向服务器(多播或广播地址)发送EAPOL-Start | 1.EAPOL-Start | | | |<------------------------... 阅读全文
posted @ 2009-06-17 10:17 辛勤耕耘 阅读(2444) 评论(0) 推荐(0) 编辑
摘要: ­ 1. 前言   PPPOE(PPP over Ethernet, RFC2516,值得注意的是此RFC不是Standard而是Information类型的)定义了如何在以太网上传输PPP数据包的方法,目前流行的宽带类型ADSL就是通过PPPoE实现的。 2. 通信过程概述   建立PPPOE通道(ADSL拨号)分两个阶段:发现阶段和PPP会话阶段。   在发现阶段,以太网上的客户机要找... 阅读全文
posted @ 2009-06-16 18:03 辛勤耕耘 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 数据链路层有三个目的:1)为IP模块发送和接收IP数据报。 2)为ARP模块发送ARP请求和接收ARP应答。地址解析协议 3)为RARP发送RARP请 求和接收RARP应答。逆地址解析协议 ­数据链路层的协议:最常用的以太网链路层协议,串行接口链路层协议(SLIP和PPP), 大多数实现都包含的环回(loopback)驱动程序, 还有PPP协议(adsl宽带)。1,以太网和IEEE 802... 阅读全文
posted @ 2009-06-16 17:57 辛勤耕耘 阅读(3063) 评论(0) 推荐(0) 编辑
摘要: 1. string.find等查找的结果要和string::npos比较,而不是和-1比较。(各个平台可能不同) 2. 将string转为char * ,用char * t = (char *)s.c_str() ,而不是 char *t =s.begin() 或者 char *t = &s[0] 或者 char *t =s.data(); 3. vector中的元素被C++标准限定为存储... 阅读全文
posted @ 2009-06-16 17:53 辛勤耕耘 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如: static int i=0; int main(void) { ... while (1) { if (i) dosomething(); //dosomething永可能远也不会被调用 } } /* Interrupt service routine. */ void ISR_2(void)... 阅读全文
posted @ 2009-06-16 17:51 辛勤耕耘 阅读(199) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 下一页