- 博客(36)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 C中调用C++函数 C++中调用C函数
注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反。集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译、调用协议等。一,C和C++编译函数的符号区别使用extern “C” 主要是因为C编译器编译函数时不带参数的类型信息,只包含函数的符号名字。如 int foo( float x ) C编译
2016-06-16 16:30:12
552
转载 C++ local static对象和non-local static对象在初始化时机上的差异
C++中的static对象是指存储区不属于stack和heap、”寿命”从被构造出来直至程序结束为止的对象。这些对象包括全局对象,定义于namespace作用域的对象,在class、function以及file作用域中被声明为static的对象。其中,函数内的static对象称为local static 对象,而其它static对象称为non-local static对象。这两者在何时被初始化(构造
2016-05-17 10:51:21
1595
原创 大端字节序,小端字节序,以及负数的存储
个人申明:只是自己日记,可能有错,有错还希望发现的朋友指出来。------------------------------------------------------负数的二进制表示-----------------------------------------------------------------------------------------------------
2015-10-24 19:16:22
2217
转载 GDB调试精粹及使用实例
一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改
2015-07-21 11:33:33
389
转载 shell判断和比较
1 shell 的$! ,$?, $$,$@$n $1 the first parameter,$2 the second...$# The number of command-line parameters.$0 The name of current program.$? La
2015-07-01 16:12:16
484
原创 C#学习笔记2:C#中修饰类相关的关键字
修饰符用于限定类型以及类型成员的申明,C#中的修饰符按功能可分为四部分:属性修饰符,存取修饰符,类修饰符和成员修饰符。 属性修饰符:[Serializable]:按值将对象封送到远程服务器。在按值封送对象时,就会创建一个该对象的副本,并将其序列化传送到服务器。 任何对该对象的方法调用都是在服务器上进行的。 [STAThread]:是Single-Threaded Apartment单线
2015-05-08 09:23:31
1856
原创 C#学习笔记1:C#数据类型以及变量何时申请内存
C#中变量申请内存是在变量首次赋值的时候申请内存,并不是声明的时候申请。所以如下代码会报错。int a ;if (true){ a = 2;}Console.WriteLine("{0}", a);改为如下代码则可以正常输出 2 。int a = 3;if (true){ a = 2;}Console.WriteLine("{0}", a);
2015-05-07 17:27:40
709
转载 windows远程桌面访问Linux系统 (XRDP+VNC )
1.安装XRDP使用rdp协议访问远程Linux桌面一般情况下,如果需要登陆远程Linux系统,我们会使用ssh/telnet来完成,如果需要登陆到远程Linux系统的桌面环境,我们可能会使用VNC。VNC是大部分Linux发行版默认的基于RFB协议的远程桌面程序,但对于普通用户来说,VNC的用户体验并不好,比较慢,还需要安装客户端。Windows的远程桌面基于RDP协议,
2015-05-06 10:54:22
4467
转载 select iocp等常见模型的区别特点
首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiplexing (select and poll)signal driven I/O (SIGIO)asynchronous I/O (the POSIX aio_functions)blocking I/O 这个不用多解
2015-03-24 20:24:10
3583
1
转载 dll注入步骤
【转自】http://pnig0s1992.blog.51cto.com/393390/804484/总结一下基本的注入过程,分注入和卸载注入Dll:1,OpenProcess获得要注入进程的句柄2,VirtualAllocEx在远程进程中开辟出一段内存,长度为strlen(dllname)+1;3,WriteProcessMemory将Dll的名字写入第二
2015-02-12 23:15:00
690
转载 UML类图几种关系的总结
转自:http://blog.csdn.net/tianhai110/article/details/6339565在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛
2015-01-20 12:42:25
390
转载 多线程中sleep与WaitForSingleObject的区别?
sleep不延迟时线程不会交出所有权,而WaitForSingleObject会,因此WaitForSingleObject比较彻底,效率更高。哪位大虾有相关资料,发来研究研究。大虾们多多讨论什么东西最好就是自己试一试,不要凭想像,我都是用sleep释放CPU占用,没遇到过什么问题。waitforsingleobject在vc调用线程上用过感觉内部实现应该和Sleep差不多,还是用
2015-01-13 10:04:54
3889
转载 7种VC延时方式
方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。这种定时方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低
2015-01-12 10:19:05
588
转载 windows平台时间函数性能比较QueryPerformanceCounter,GetTickCount,ftime,time,GetLocalTime,GetSystemTimeAsFileTim
http://gmd20.blog.163.com/blog/static/168439232012113111759514/ 执行 10000000 次, 耗时 2258,369 微秒 QueryPerformanceCounter执行 10000000 次, 耗时 26,347 微秒 GetTickCount执行 10000000 次, 耗
2015-01-07 14:55:33
1692
转载 socket编程之select
Select在Socket编程中还是比较重要的,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。 Select的函数格式(Unix系统下的伯克利socket编程,和windows下的略有区别,体现两个方面:一是select函数的第一个参数,在windows下可以忽略,但在linux下必须设为最大文件描述符加1;二是结构fd_set在两个系统里定义不一样):int
2014-08-13 17:10:51
433
转载 C语言内存分配及堆栈问题总结 .
1.C语言程序编译的内存分配,堆与栈的区别 C语言程序编译的内存分配:1.栈区(stack) --编译器自动分配释放,主要存放函数的参数值,局部变量值等;2.堆区(heap) --由程序员分配释放;3.全局区或静态区 --存放全局变量和静态变量;程序结束时由系统释放,分为全局初始化区和全局未初始化区;4.字符常量区 --常量字符串放与此,程序
2014-08-08 11:18:36
780
原创 线程同步互斥方式以及区别
线程同步互斥有临界区、互斥区、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被
2014-07-22 22:51:15
1094
转载 设计模式 command模式 (c++)
Command模式将所有的请求封装到一个对象Command中,并且将请求的接受者存放到具体的CONCRETE类中;Invoker储存相应的动作对象,并且通过触发对象的excute向Receiver提交一个请求;Command-一个声明执行操作的接口;ConcreteCommand-对象对应一个动作;Invoker-要求对象完成该动作;Receiver-任何类都可以作为一个接受者
2014-07-19 10:51:42
544
原创 C++ 信号量 多线程同步互斥
信号量(Semaphores) 信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程 最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。在用CreateSemaphore()创建信号量 时即要同时指出允许的最大资源计数和当前可用资源计数。一般是将当前可用资源
2014-07-17 16:25:21
10479
原创 C++ 事件对象 多线程同步互斥
#include #include #define THREADCOUNT 4 HANDLE ghWriteEvent; HANDLE ghThreads[THREADCOUNT];DWORD WINAPI ThreadProc(LPVOID);void CreateEventsAndThreads(void) { int i; DWORD dwThread
2014-07-17 14:54:34
1013
原创 C++ 临界区 多线程同步互斥
临界区(Critical Section) 保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线 程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操 作共享资源的目的。 临界区包含两个操作原语: EnterCritic
2014-07-17 11:29:19
14620
原创 SetEvent与PulseEvent区别
系统核心对象中的Event事件对象,在进程、线程间同步的时候是比较常用,发现它有两个出发函数,一个是SetEvent,还有一个PulseEvent,两者的区别是:SetEvent为设置事件对象为有信号状态;而PulseEvent也是将指定的事件设为有信号状态,不同的是如果是一个人工重设事件,正在等候事件的、被挂起的所有线程都会进入活动状态,函数随后将事件设回,并返回;如果是一个自动重设事件,则
2014-07-16 17:06:35
2487
转载 浮点数的二进制表示方法
原文地址:http://blog.163.com/yql_bl/blog/static/847851692008112013117685/因为要参加软考了(当然也只有考试有这种魅力),我得了概浮点数转化为二进制表示这个最难的知识点(个人认为最难)。俺结合大量的从网上收集而来的资料现整理如下,希望对此知识点感兴趣的pfan有所帮助。 基础知识:十进制转十六进制;十六进
2014-07-11 09:56:29
1228
转载 C++ 开源库,很完整介绍【转】
【转】http://blog.csdn.net/lixingshi/article/details/22714783向C++初学者推荐的几个开源库标签: STL boost SDL wxWidgets 开源库 推荐 2009-07-04 22:47前阵子写了《C++ 的“武”和“功”》。谈到C++语言知识,属于“功”,而那些强大的C++库,属于“武”,属于十八
2014-04-01 10:14:27
942
转载 用C语言检测文本编码的方法
转:http://blog.csdn.net/turingo/article/details/8136644我们经常会想知道某些文本文件的编码,可是编码检测却并不是一件简单的事情,它需要对文本进行采样,统计分析后再进行字符集的匹配,不过值得庆幸的是有uchardet(https://code.google.com/p/uchardet/)这样的开源库可以帮忙这项艰巨的任务。uc
2014-03-24 23:07:24
1459
转载 windows消息处理过程
一、 引言二、Windows消息机制的概念1、DOS与Windows驱动机制的区别2、消息3、消息的来源4、Windows的消息系统的组成5、消息的响应三、Windows消息机制要点1. 窗口过程2 消息类型3消息队列(Message Queues)4 队列消息和非队列消息5 Windows消息函数
2013-12-26 17:12:42
1693
转载 WireShark过滤语法
WireShark过滤语法 1.过 滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP2.过滤端 口例子:tcp.port eq 80 // 不管端口是来源
2013-08-01 15:47:58
995
原创 TCP/IP 学习笔记-ICMP控制报文
【注】:个人学习笔记,内容非常省略,仅供自己学习参考。1 . ICMP报文简介ICMP经常认为是IP层的组成部分。它传递差错报文以及其他一些需要注意的信息。ICMP报文通常被IP层或更高层(TCP / UDP)使用。ICMP封装在IP数据包内 2 . ICMP报文格式ICMP报文格式如下图所示,所有ICMP报文前 4 bytes格式一样,后面各有不同(根据 类
2013-07-31 17:23:40
759
1
转载 内存对齐详解
一、为什么会有C++内存对齐以下内容节选自《Intel Architecture 32 Manual》。为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。一个字或双字操作数跨越了4字节边界,或者一个四字操作数跨越了8字节边界,被认为是未对齐的,从而需要两次总线周
2013-07-16 11:36:06
516
转载 http 协议
【转】http://www.jb51.net/article/28096.htm 1. 基础概念篇1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作
2013-07-12 16:21:37
521
转载 vs2010搭建 winpcap工程
一、下载WinPcap安装包和开发包1.首先是winpcap的安装包,下载地址:http://www.winpcap.org/install/default.htm下载完成后,直接打开安装,一路默认,OK搞定。2.接着下载开发包,下载地址:http://www.winpcap.org/devel.htm下载完毕后解压压缩包到dev文件夹内,在文件内可以找到这两个文件
2013-07-11 11:24:04
3117
转载 QQ2012 Beta3->QQ2013 Beta1聊天协议剖析
【转】: QQ2012 Beta3->QQ2013 Beta1聊天协议剖析⦁ 背景QQ,一个通信工具,号称拥有N亿,现在注册QQ已经是10位数了,如果QQ注册的号码是不断递增的话,那么QQ应该已经被注册了至少10亿次。在中国,只要你是经常上网的网民,手中必须得有一个QQ号,当然你也可以没有,但你的朋友、同学、亲戚、同事全都有,大家都通过QQ进行沟通,你不用,要沟通多不方便啊。作为一个
2013-07-04 16:24:25
1152
转载 VC内存泄露检查工具:VisualLeakDetector
[转]:http://www.xdowns.com/article/170/Article_3060.html初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会
2013-05-27 16:36:41
677
转载 C/C++中动态链接库的创建和调用
【转】http://developer.51cto.com/art/201105/262715.htm DLL 有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。下面为你介绍C/C++中动态链接库的创建和调用。动态连接库的创建步骤:一、创建Non-MFC DLL动态链接库1、打开File —> Ne
2013-05-23 14:50:02
850
原创 R6010 abort() has been called 错误
错误 但很奇怪 。 看代码。STATE FindEx(const char* pszPat)const{ STATE state = 0; unsigned int i = 0; while ( i { STATE temp = m_AC[state].m_NextState.at(i); char * str = (char*) m_AC[temp].m_
2013-04-26 11:56:27
1739
转载 KMP字符串模式匹配详解
刚看到位兄弟也贴了份KMP算法说明,但本人觉得说的不是很详细,当初我在看这个算法的时候也看的头晕昏昏的,我贴的这份也是网上找的。且听详细分解:KMP字符串模式匹配详解来自CSDN A_B_C_ABC 网友KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。
2013-04-12 15:18:44
379
windows 重叠IO 命名管道程序疑问?
2015-07-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人