- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 ifstream 文件流读取格式数据出现的问题
在文件中均为数字的时候,需要将这些数字按整型读取,可以直接利用文件流进行读取,但是一旦文件中存在非数字字符的时候,比如出现字符串就会出现异常。因此我们需要处理这种情况。下面这段程序可以处理这个问题。其实问题的关键就是在in.ignore()函数。该函数的原型为:istream& ignore (streamsize n = 1, int delim = EOF);第一个
2016-01-21 15:03:27
4211
转载 Linux epoll模型
转载自:http://www.cnblogs.com/venow/archive/2012/11/30/2790031.html定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开
2015-01-29 16:31:41
524
转载 清除error.log、access.log并限制Apache日志文件大小的方法
清除error.log、access.log并限制Apache日志文件大小的方法Apache下的access.log和error.log文件从安装服务器到现在没有动过,今天突然discuz 的MYSQL数据库连接错误,提示2003 错误,检查发现原来是error.log、access.log爆满,文件达到30个G,奶奶的,立马搜索,得把这两个小子干掉。下面是在网上搜索到的方法,立马见效
2014-07-14 15:41:16
988
转载 C/C++中的联合体union及CPU大小端判定
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。首先看一段代码:union myun { struct { int x; int y; int z; }u; int k; }a; int main
2014-06-30 10:04:56
811
转载 庖丁解牛-----winpcap源码彻底解密(一)
转载自: 最近忙一个项目,需要使用winpcap抓取网络数据包,调用winpcap提供的api进行抓包后,发现丢包情况比较严重,而且cpu占用率比较大。所以下定决心,对winpcap源码进行分析,因为对驱动和对Ndis网络驱动比较熟悉,所以分析源码还不是很费劲,其实winpcap底层的npf不过是一个Ndis协议驱动,所以它能做的工作就是捕获数据包,而不能做防火墙等使用,要做防火墙,一般
2014-06-22 20:24:27
1370
转载 linux内核线程的创建与销毁
linux将创建内核线程的工作交给了一个专门的内核线程kthreadd来完成,该线程会检查全局链表kthread_create_list,如果为NULL,就会调schedule()放弃cpu进入睡眠状态,否则就取下该链表中的一项创建对应的线程。本文就从khtreadd内核线程的创建开始来展示一下内核线程的创建过程。1 kthreadd linux2.6.30,创建内核线程是通过ke
2014-04-11 09:20:52
1989
转载 fork, vfork, clone,pthread_create,kernel_thread
fork, vfork, clone,pthread_create,kernel_thread fork,vfork,clone,都是系统调用,以前还以为是前面两个是clone的封装,实际上前三个都是系统调用,pthread_create是对clone的封装,kernel_thread用于创建内核线程fork 在内核中调用do_fork(SIGCHLD, reg
2014-03-09 11:00:05
1099
1
转载 对进程地址空间的一点认识
对进程地址空间的一点认识在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。一 早期的内存分配机制在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小。那当
2014-03-08 11:02:50
591
原创 VS2010下找不到wdf.h的解决办法
以前wdm驱动可以很好的使用,但是在wdf模型上老是提示找不到wdf.h,经过查找资料,终于把问题解决。首先头文件必须包含#include.然后再项目属性->配置属性下的NMake下:intellisense中的包含搜索路径中包含下面一句话:$(WDKPATH)\inc\wdf\kmdf\1.9\;最后在sources文件中添加一句话:KMDF_VERSION = 1.最终,显示正确。
2014-02-23 20:14:35
3408
转载 IoSkipCurrentIrpStackLocation .
当驱动被分层以后,他们被注册到一个chain中,IRP会在这个chain中传递,从最上面,到最下面,再回到最上面 为适应这种体制,IRP的结构的大小是不固定的,大体结构如下: -------------------- | IRP header | -------------------- |IO_STACK_LOCATION |--------------------
2014-02-23 14:56:07
1061
转载 设备栈
栈结构栈顶栈底挂接 device移除 device1. 栈结构设备栈(Device Stack)结构与内存中的栈类似,但是 device stack 中的 entry 由 device object 中的 AttachedDevice 值的连接。如下图所示:并且由每个 device 的 DeviceExtension.AttachedTo 值指向下一层的 device。从而形成
2014-02-22 20:58:17
1082
转载 结构体对齐详解
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。例如,下面的结构各成员空间分配情况:struct test
2014-02-18 15:36:06
653
转载 ubuntu下安装mysql
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cycnet.blog.51cto.com/117809/812625 现在的软件越来越好安装,尤其是在ubuntu下安装软件,更是没有技巧,只需要在联网的情况下使用apt-get inatll 即可。在决定安装mysql之前,要先确定系统是否已经安装mysql。
2014-01-06 20:23:28
573
转载 gprof 使用和介绍
一、gprof介绍 gprof是GNU profiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。二、Gprof功能: 打印出程序运行中各个函
2013-10-28 22:34:31
1798
转载 Linux下程序的Profile工具
我们在写程序,特别是嵌入式程序的时候,通常需要对程序的性能进行分析,以便程序能够更快更好地运行,达到实时(real-time)的目的。如果程序很大,分析起来就很困难。如果有个工具能够自动进行程序的性能分析,那就最好了。这里介绍一种Linux下程序的Profiling工具---GNU gprof。GNU gprof能够打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗
2013-10-25 20:17:08
1442
转载 线程的分离状态
其实在写上一篇日志的时候,由于我把创建线程的返回值的判断条件写错了,程序每次运行的时候都是显示创建线程失败,我就百度了一下,有人说是桟资源不足引起的,要调用一个pthread_attr_setdetachstate()函数,当时不明白为什么,其原理是什么,于是又搜了一下,下文是其原理简述:在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结
2013-10-24 18:57:34
616
转载 c++中由于delete造成的悬垂指针
今天在调试程序时,出现了一点BUG,原来是悬垂指针...... 今天在使用c++的引用,对引用作为函数返回值不是很理解,于是做了一个小测试: 这个程序本没有问题,引用作为返回值(注意不能返回局部变量),a是动态分配的内存,可以返回的。 linux 下的运行结果如下:4 然后我想借助delete,让返回的值非法
2013-10-10 18:57:32
917
转载 dup and dup2的剖析
dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。请注意区
2013-10-10 18:54:18
716
转载 Socket I/O 模型 学习
我们为什么要使用Socket I/O模型呢?还得从Socket的阻塞和非阻塞说起。在网上看过一篇讲解I/O模型的文章,它举过一个例子觉得挺好,那就是收信的例子。比如:老周在等待他女儿从美国寄过来的信件,老周住三楼,信箱在一楼。有以下几种情况:第一:老周一直守在信箱旁边,直到收到信件为止。这样太费精力。这就好比是阻塞套接字。第二:老周到信箱那里看一下,发现还没有来,就马上回家了。这就
2013-08-25 21:37:35
764
转载 VS2010下配置winpacp
之前作业用的是JPCAP,这次作业老师要求使用C/C++,便要重新了解一下winpcap,在往上搜集了个比较详细的配置策略。新建一个项目,GetDevs.cpp。用来测试。测试代码最后有给出。View->Property ManagerDebug|Win32 -> Mircrosoft.Cpp.Win32.user(右键)->Properties注:此处设置为全局的!设置环境目
2013-08-22 20:19:57
790
转载 SOCKET API和TCP STATE的对应关系__三次握手(listen,accept,connect)__四次挥手close及TCP延迟确认(调用一次setsockopt函数,设置TCP_QUI
在我们学习网络基础时,传输层的协议有TCP和UDP;在Linux网络编程中,我们使用socket API,实现网络通信。那么: socket API 和 TCP 协议中各个状态是如何对应的呢?我们可以通过下图来看: 在socket系统调用中,如何完成三次握手和四次挥手: SOCK_DGRAM,即UDP中的c
2013-08-12 15:32:28
1074
转载 广播,组播和多播的区别
单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?.1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数
2013-08-11 10:02:45
1088
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人