随笔分类 - C/C++
摘要:内存读写函数实现进程间通信 上一篇博文讲了使用Windows自定义消息实现进程间的通信,而今天这篇博文讲重点讲解使用内存读写函数实现进程间的通信。 使用内存读写函数实现进程间通信,是使用自定义消息和内存读写函数来实现的,通过上一篇博文,我们都知道了,在使用自定义消息通信的时候,有一个局限性的条件------只能传递长整形的数据,而对于字符串数据,那是无可奈何的。所以,使用内存读写函数是完全可以实现的。 两个内存读写函数: WriteProcessMemory()和ReadProcessMemory(); WriteProcessMemory()函数实现在进程的内存...
阅读全文
摘要:Windows使用自定义消息实现进程之间通信 Windows程序与其它类型程序的区别就是使用消息,例如键盘或鼠标消息等,在dos系统下的程序没有定义消息。在windows操作系统中,消息不但可以用于进程内的通信,也可以用于进程间的通信。而我这篇博文将讲使用自定义消息实现进程间的通信。 我们都知道,在windows中消息分为两种,即系统消息和用户自定义消息,系统消息定义从0到0x3ff,可以使用0x400到0x7fff定义自己的消息。windows把0x400定义为WM_USER,如果想定义自己的一个消息,可以在WM_USER上加上一个值。当然了,还有另外一种方法,这里就不讲了,而是...
阅读全文
摘要:文件的内存映射的主要用途有两个方面,第一是用来在多个进程之间共享数据,第二是直接用内存映射文件来访问磁盘上的数据文件,无需要进行文件的I/O操作。进程间共享数据有很多种方法,今天,我主要讲的是内存映射的这种方法。 在内存映射文件是在多个进程之间共享一个数据块的重要方法。通过调用API函数CreateFileMapping()可以像对待一个文件那样对待一个内存区。 内存映射文件的使用可以分为以下三步:(1)用CreateFileMapping()创建一个文件映射内核对象;(2)用MapViewOfFile()将文件数据映射到进程的地址空间;(3)用UnmapViewOfFile()从进程地址空间
阅读全文
摘要:假期闲来无事,便写了个小小的网络聊天室程序。以前一直都是写MFC的有界面的程序,时间长了,便失去了兴趣,感觉有些东西经过MFC的封装,反而失去了意义,让人学不到东西,所以,丢开MFC那层的东西,直接使用socket来实现,要知道直接在黑白屏下实现有界面的那种效果,难度还是有的,喜欢挑战自我,是我的个性。网络程序,有一些I/O模型的,阻塞的,就是你什么也不做的,就是直接开始写的recv和send的,有一个线程阻塞,所以,对对于聊天室来说,这种是不合适的;还有的就是非阻塞了,非阻塞I/O的模型很多了,而select模型,是我这次程序中用到的。select模型见名思意,select模型,就是使用了s
阅读全文
摘要:最近在看STL,看到了auto_ptr,发现这个真的是个好东西,不敢自私,所以写篇博文和大家共享。C++标准程序库提供的auto_ptr是一种智能型的指针(smart pointer)。可以帮助程序员防止一些资源泄漏。我们都知道在C++中用new开辟的空间是在堆上开辟的。同时,我们还知道用new开辟的空间,必须用delete来释放,必须手动释放。其实就这个动态开辟内存空间,然后又手动释放,这个很纠结的事情就带来了很多纠结的问题。现在我打个比方:如果你动态开辟的空间,开辟成功了,然后也写了释放语句。这就是按照套路出发。是的,程序是对的,但是,你有没有想过这样的一个问题。/*
*......
*/
阅读全文
摘要:Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ...
阅读全文
摘要:800x600 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 ...
阅读全文
摘要:Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ...
阅读全文
摘要:Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ...
阅读全文
摘要:Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ...
阅读全文
摘要:Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ...
阅读全文
摘要:快速排序,可以以数组的形式实现,也可以用二叉树的形式实现,而我的这篇博文,正好讲的是用二叉树的形式实现的。这种二叉树,又叫对分查找二叉树,在实际的应用中是不胜枚举的。废话少说,代码贴上,算法比较简单,我也就不过多的浪费口舌。#include <iostream>using namespace std;//定义节点结构struct Node{ //初始化节点值 Node() { left = NULL; right = NULL; } int value; Node* left; Node* right;};void CreateBinary_Search_Tree(Node*&am
阅读全文
摘要:前面讲了那么多的排序,不知道有没有人看,如果有人看,就吱一声,也好让我有信心在写下去了!不管了,还是那句话,写自己的博文,让别人说去吧,现在应该是,写自己的博文,让别人看去吧!看不看,是你的事,写不写是我的事!好了,废话少说,开始今天的征程——直接选择排序! 算法思想:所谓直接选择排序,如下:(1) 在一组对象v[i]~v[n - 1]中选择具有最小关键码的对象(2) 若它不是这组对象中的第一个对象,则将它与这组对象中的第一个对象对调(3) 在这组对象中剔除这个具有最小关键码的对象,在剩下的对象v[i + 1]~v[n - 1]中重复执行第(1)、(2)步,直到剩余对象只有一个为止。说了这么多
阅读全文
摘要:还是排序,上一篇讲的是排序大家庭中的直接插入排序,今天呢,主要讲的是折半插入排序。实现起来,还是蛮简单的,没有太多的拐弯抹角的,不会伤害很多脑细胞的。人家都说了,编程,如何提高自己的编程技术呢?那就是多写代码,如何写呢?就是抛开课本,拿着笔和纸,现在纸上走一遍算法(这个前提是算法思想已经熟透了),然后,在写出来,编译,运行。就是这样。很简单的。其实,在写这些简单的算法的时候,没有太多的技术问题,就是一个如何提高自己的编程水平的问题,一种整体把握的能力。你能一次就把折半插入排序写好,编译,运行通过吗?还好!我做到了(这里牛皮不是吹的!)。算法思想:在顺序表中,v[0], v[1], v[2],.
阅读全文
摘要:这篇博文主要讲的是冒泡排序(Bubble Sort)。千万别小看了冒泡排序,去很多的公司面试,上机题很多都是冒泡排序,为什么冒泡排序会成为面试的宠儿呢?这个嘛?其实我也不知道,天知道那些纠结的面试官是怎么想的!呵呵,不管他了,只要我们掌握了冒泡排序,还怕他们吗?伙计,来吧!开始我们的冒泡排序吧! 算法思想:通俗易懂的说,就是大的数往下沉,小的数往上走,就好比在水中,气泡往上冒一样,一次得名为冒泡排序,不管了,我也不知道是怎么命名了。我想现在也一无证可考了吧。 现在就根据下面我的思路走一遍算法吧!A[0] 56 23……A[1] 23 56……A[2] 89 89……A[3] 12 12……A[
阅读全文
浙公网安备 33010602011771号