- 博客(28)
- 资源 (4)
- 收藏
- 关注
原创 Cocoa开发——PIPE通讯框架
进程通讯方式有很多种,OSX系统的进程通讯方式更是多种多样,笔者暂时只写过XPC和有名管道通讯的框架,特此记录一下自己的心得。首先基于Pipe有名管道的进程通讯,我们将管道创建,打开,读取,写入等操作封装到CPipeWrapper的类中,方便对管道的一系列操作。class CPipeWrapper{public: CPipeWrapper(); ~CPi
2015-11-11 01:02:42
1088
1
原创 如何以Root方式运行Xcode
粗略算一下,在第一次接触OSX的时候,我接触Windows已经有14年,刚开始用OSX和Xcode各种不习惯,但是用Xcode写了一星期的代码,我却有一种想把Windows和VS扔了的感觉(真的用着很舒服!)。最近写Cocoa,需要对磁盘等设备文件进行操作,当然首先我想到的是Windows中的CreateFile这个API,在查询一些资料以后发现,OSX是基于BSD SYSTEM后代,
2015-07-17 23:53:42
2900
原创 浅谈线程同步方法性能比较
简要将Win32编程中的四种同步方式的性能作比较,分别有CriticalSection,Semaphore,Mutex,Event。
2015-06-27 00:29:48
866
原创 浅谈指针的偏移
记得当初学习指针的时候,总是把指针和地址混为一谈,总以为说到指针就是指某个地址而已,后来加强对各类指针的认识以后,才认识到指针不止是简单的地址。指针是一种类型,通过类型可以声明一个变量并保存一个内存地址,不同类型的指针对保存的地址会有不同的解释,编译器根据指针的类型(对应的偏移量)解引用出相应的数据。首先在32位程序设计里,指针大小为4bytes,满足2^32 寻址范围。到底偏
2015-06-17 19:02:44
4588
原创 浅析Scanf源码
记得当初从C语言学习开始就使用scanf,关于scanf的用法也略知一二,对使用scanf出现的问题并未进行深刻探究,故笔者打算对scanf实现进行探究。如何找到scanf源码关于VC中的CRT代码在 VS目录下的\VC\crt\src中,我们就先把scanf.c扒出来。int __cdecl scanf ( const char *format,
2015-06-16 19:54:07
13853
1
原创 float的内存布局
我们在代码中常常用到float与double,相比于int等类型,很多人并不知道float与double的存储方式。我对float存储方式做个总结
2015-06-16 17:59:41
832
原创 浅谈大小端存储
最近学习SOCKET,将大小端存储做一个总结:小端(Big-Endian)模式: 内存的低地址存数据的低位,内存的高地址存数据的高位。大端(Little-Endian)模式:内存的低位存数据的高位,内存的高地址存数据的低位。首先我们定义一个unsigned int i = 0x12345678;我们看看内存中的存储即:高内存地址保存高位0x12,依次向低内
2015-06-16 15:10:37
678
原创 __cdecl 与 _stdcall 的栈平衡
各类关于VC的书中都多少写到:1、_stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈。2、__cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。注意:对于可变参数的成员函数,始终使用__cdecl的转换方式。__
2015-06-11 13:52:08
1841
1
原创 MFC六大关键技术之仿真学习笔记(八)
前一节写到,在类关系中我们已经建立了一种消息映射的机制,消息具体是如何在类中传递的,是一个值得我们去研究的问题,待我一一道来。*Command Routing(命令传递)实现消息的纵向流动,我们并不希望消息只呈单线发展,我们更渴望得到的是走访映射表的功能。
2015-06-07 14:16:30
675
原创 MFC六大关键技术之仿真学习笔记(七)
从学习Windows的消息机制学习到MFC的消息映射,这是我最喜欢的一节。在Win32编程中,你回去定义各种消息,在WndProc中通过switch ..case..进行消息的分类处理。带着这种思维走进MFC,你会发现MFC采用一种消息映射表模式来简化消息处理。虽说书上理解起来很简单,关于消息如何在MFC框架中流动,其中原理是什么,这才是我们应该学会的,而不是仅仅学会如何使用。
2015-06-06 23:16:36
815
原创 MFC六大关键技术之仿真学习笔记(六)
下面到了MFC的Persistence(永久保存)机制。无非就是我们想要把对象永久保存下来,方法当然是写入文件中咯,MFC有一套Serialize机制。当然MFC仍提供了2个实现的Macro : DECLARE_SERIAL / IMPLEMENT_SERIAL。
2015-06-06 23:09:43
490
原创 MFC六大关键技术之仿真学习笔记(五)
前面所有的基础,你可以说你觉得云里雾里的,所谓的"类别型录"网到底可以干什么,我们为什么需要花费这么多功夫去构建呢,在这一节我会慢慢道来。 我们希望在程序运行过程中动态生成某种"类别型录"中的对象,如 CWnd 我们可能会有这样的思路:CObject *pClass = CRuntimeClass::CreateObject("CWnd"); 或者 CRuntime
2015-06-06 20:37:57
694
原创 MFC六大关键技术之仿真学习笔记(四)
*IsKindOf(运行时类型识别) 因为有了前面的“类型识别”网,我们可以很方便进行“同宗”路线的追踪,当然我们也可以"对类型识别"网进行遍历,得到所有类型。
2015-06-06 18:08:11
867
原创 C++函数可变参数实现原理探究——以实现printf为例
当我们构建函数时,如果我们希望得到的是不定的参数,那我们应该怎么办呢?下面几个关键的macro上场:#define _ADDRESSOF(v) (&reinterpret_cast(v))typedef char* va_list;#define _INTSIZEOF(n) ((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) -1))#defi
2015-06-06 00:14:26
621
原创 C语言优先级之计算总结
今天在网上博客上发现一个很好的优先级记忆方法,链接:http://blog.youkuaiyun.com/skywalker_leo/article/details/6237222此贴用来积累关于优先级的计算:(1) int x = 7,y =3; 1 ? ++x,++y:--x,--y; std::cout解:根据优先级,实际代码执行是这样的:(1? ++x , +
2015-05-29 06:23:12
717
原创 MFC六大关键技术之仿真学习笔记(三)
如果你感觉前面两节一帆风顺的话,或许从第三节开始,你会感觉理解有一点点困难,或许读完整节,你只能MFC说有这么一个东西,但是并不明白这样设计的好处或如何去使用,别急,让我们慢慢来学习它。
2015-05-28 21:46:52
654
原创 MFC六大关键技术之仿真学习笔记(二)
上一节简单学习了关于MFC中简单的层次结构,而MFC程序的初始化过程究竟是怎么样的呢,与普通Win32初始化的联系又在哪呢? Win32程序通过RegisterClass,CreateWindow,ShowWindow,UpdateWindow实现对程序的初始化,下面我们来看对MFC初始化的仿真。
2015-05-28 16:14:00
861
原创 MFC六大关键技术之仿真学习笔记(一)
相信大多数MFC初学者都有一种这种感觉,MFC的框架如此复杂,宏定义虚函数让你不知所措,和传统的Win32SDK编程相比,MFC确实让你足够头疼,粗略看看你发现找到Winmain和WndProc都不是一件容易的事。《深入浅出MFC》第三章将MFC的关键技术仿真出来,让你领略Application framework的内部机制,当然,这并不是一件容易的事情,从粗读到理解运用,这是一个付出心血的过程。
2015-05-28 11:07:15
1351
原创 浅谈C++类大小以及内存布局
写代码不自然的都会用到有关Class的内容,现在我来浅谈一下关于Class大小以及内存布局的一些问题。 (1)空类class CEmpty{};//size = 1注
2015-05-23 20:51:27
699
原创 C++实现远程桌面集群软件
由于在学校需要管理很多主机的需要,自己动手写了个3389桌面集群的软件。软件很简单,分别用2种方式实现:(1)快速登入模式: 微软的MsRdpClient ActiveX控件实现(2)远程桌面模式:生成.rdp文件实现
2015-05-21 12:47:36
7336
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人