- 博客(114)
- 资源 (1)
- 收藏
- 关注
原创 Name Mangling in C++
介绍了C++中的Name Mangling的原理和gcc中对应的实现,通过程序代码和nm c++filt等工具来验证这些原理。对于详细了解程序的链接过程有一定的帮助。
2016-04-03 21:09:08
367
原创 进程间通讯总结 (1)
Interprocess Communications:* Using the Clipboard for IPC* Using DDE for IPC* Using Data Copy for IPC
2016-03-22 13:49:57
404
原创 .NET Remoting
.NET远程处理(.NET Remoting)是微软.NETFramework中的一种网络通讯技术,与 XML Web Service 不同的是,它可以使用SOAP以外的协议来通讯,而在服务端和客户端之间所操作的方法近乎相同,客户端可以不必考虑使用的协议,即可访问服务端所开放的对象。这个技术与是由DistributedCOM所发展而来的,与DCOM最大的不同是,DCOM有限制使用TCP
2016-02-23 12:03:38
586
原创 简单总结:计算机网络体系结构
计算机网络体系结构TCP/IP协议(TransmissionControl Protocol/Internet Protocol的简写)是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。OSI(OpenSystem Interconnection)参考模型,是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系
2016-02-22 16:09:01
513
转载 IDisposable, Finalizer, and SuppressFinalize in C# and C++/CLI
IDisposable, Finalizer, and SuppressFinalize in C# and C++/CLI
2016-02-03 16:06:34
280
原创 线程安全的.Net UI
一、为什么要考虑Window UI的线程安全问题?Access to Windows Forms controls is not inherently thread safe. Ifyou have two or more threads manipulating the state of a control, it ispossible to force the control into a
2015-11-27 17:10:50
411
原创 Windows UI 消息循环
Windows 程序是以消息为基础,以事件驱动的 (messagebased, event driven) ,用户的操作如移动鼠标,敲击键盘等动作可看成是事件 Event, 这些事件会产生相应的消息,这些消息为硬件设备产生的消息,会被放在 System queue 中。除此之外, Windows 系统或其它 Windows 程序也有可能传送消息到Application queue 中,当然
2015-11-27 11:22:07
636
Windows消息循环
Windows 程序是以消息为基础,以事件驱动的 (message based, event driven) ,用户的操作如移动鼠标,敲击键盘等动作可看成是事件 Event, 这些事件会产生相应的消息,这些消息为硬件设备产生的消息,会被放在 System queue 中。除此之外, Windows 系统或其它 Windows 程序也有可能传送消息到Application queue 中
2015-11-27 09:59:25
269
原创 C# Delegate (二)
关于c#中的delegate,经过《用好C#Delegate》介绍,应该牢固建立起以下的概念:一个delegate type 的声明在本质上是创建了一个新的subtype instance,该subtype 派生自.NETlibrary framework 的abstractbase classes Delegate 或MulticastDelegate,它们提供一组pub
2015-11-26 17:53:01
309
转载 Scrum is new waterfall
Scrum is the new waterfallScrum while great in theory is in practice a really flawed process of creating software. Scrum is iterative waterfall. Scrum is process hell. Saying this, may get me sh
2015-11-23 14:20:13
438
原创 P/Invoke and Marshaling
IntroductionThe article aims to shed some light on an topic, in managed code, named P/Invoke, which allow managed code to invoke functions residing in unmanaged DLLs. The article contains a useful t
2015-07-29 18:24:48
559
转载 Guide to using Pinning Pointers
IntroductionHaving written an article on interior pointers, I thought the next logical topic for an article from me should be pinning pointers. This article will explain what pinning pointers ar
2015-07-27 15:57:58
372
转载 An overview of interior pointers in C++/CLI
IntroductionOne very confusing facet of the now obsolete Managed Extensions to C++ was its pointer usage syntax, whereT* could be a native pointer, a managed reference or an interior pointer. In
2015-07-27 15:04:04
446
转载 .Net 反射
两个现实中的例子:1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(我不是医生也不是声学专家,不知说得是否准确^_^)。2、地球内部结构:地球的内部结构大体可以分为三层:地壳、地幔和
2014-10-09 10:46:00
570
原创 定制new和delete更改内存管理方案
C++允许手工管理内存。依据使用内存的行为特征,然后修改分配和归还工作,以求获得其所建置的系统的最佳效率(包括时间和空间)。这给了程序员通过定制operator new和operator delete的方式来更改new与delete表达式从而更改内存管理方案的自由。但是享受这种自由的时候必须遵守一定的规范和条款。本文在此基础上补充解释一些特别容易引起误解的问题。
2014-08-04 13:08:05
1225
原创 从变化逻辑的封装谈设计模式
通常来说,对于某个满足了我们大部分需要的类,可以创建一个它的子类,并只改变其中我们不期望的部分(需要变化部分)。只是继承一个类,就可以重用该类的代码,这是一件多美好的事情啊!不过,像大多数美好的事情一样,过度使用往往会变得不美好。根据可替换原则(LSP), public 继承具有概念上的现实意义,它代表的是一种is-a关系。使用继承之前一定要问问是否真的属于is-a的关系,否则继承非常容易被过度使
2014-07-18 13:50:41
1711
转载 阻止对象被Copy
通常如果你不希望class支持某一特定机能,只要不声明对应函数就是了。但这个策略对copy构造函数和copy assignment操作符却不起作用。如果你自己没有声明,编译器就会为你的class声明(编译器版本的)一个copy构造函数、一个copy assignment操作符和一个析构函数。(此外如果你没有声明任何构造函数,编译器也会为你声明一个default构造函数。所有这些函数都是public
2014-07-02 15:29:01
694
转载 C++异常处理机制详解
异常处理是一种允许两个独立开发的程序组件在程序执行期间遇到程序不正常的情况(异常exception)时相互通信的机制。本文总结了19个C++异常处理中的常见问题,基本涵盖了一般C++程序开发所需的关于异常处理部分的细节。
2014-07-01 18:40:34
5002
原创 C#使用Monitor类、Lock、Mutex和Semaphore进行多线程同步
在多线程中,为了使数据保持一致性必须要对数据或是访问数据的函数加锁,在数据库中这是很常见的,但是在程序中由于大部分都是单线程的程序,所以没有加锁的必要,但是在多线程中,为了保持数据的同步,一定要加锁,好在Framework中已经为我们提供了三个加锁的机制,分别是Monitor类、Lock关键字和Mutex类。 其中Lock关键词用法比较简单,Monitor类和Lock的用法差不多。这两个都是锁
2014-06-27 18:03:19
1864
原创 C# Delegate (一)
[转序:这是一篇古老的文章。但毫无疑问,Lippman对delegate的阐述是精辟的。]如果你想拿C# 与其它“C家族”的语言做比较,C#正有个不同寻常的特性,其在C++ 或者Java 里没有真正意义上的对应之物。--------------------------------------------------------------------------------C# 是一个
2014-05-15 11:10:11
752
转载 Semaphore与Mutex
在多线程编程中,经常使用到如Semaphore或Mutex等许多线程间同步用的工具,但是Mutex和Semaphore的区别一直让人困惑在Pintos Project的实践中,逐渐摸索到一些其中的区别。以下的实现来自Pintos Project。一、Semaphore1. 信号量是一个非负整数,具有两种原子操作:a. P操作:也称Down操作。等待信号量变为正数,而后减少信号量;
2014-04-20 15:11:42
4274
原创 内联(inline)函数和宏定义(#define)的区别
首先#define有很大的好处: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成 等一系列的操作,因此,效率很高,这是它在C中被使用的一个主要原因。 2. 这种宏定义在形式上类似于一个函数,但在使用它时,仅仅只是做预处理器符号表中的简单替换,因此它不能进行参数有效性
2014-04-18 15:31:31
2407
inline函数和宏定义的区别
首先#define有很大的好处: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成 等一系列的操作,因此,效率很高,这是它在C中被使用的一个主要原因。 2. 这种宏定义在形式上类似于一个函数,但在使用它时,仅仅只是做预处理器符号表中的简单替换,因此它不能进行参数有
2014-04-18 14:55:19
362
转载 C语言一些编程心得(转帖)
C语言中的指针,数组,类型的识别,参数可变的函数一.指针。它的本质是地址的类型。在许多语言中根本就没有这个概念。但是它却正是C灵活,高效,在面向过程的时代所向披靡的原因所在。因为C的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的机器模型,很好的达到了对机器的映射。不过有些人似乎永远也不能理解指针【注1】。注1:Joel Spolsky就是这样认为的,他认为对指针的
2014-04-18 13:26:02
711
原创 calloc和malloc的区别,兼谈new
都是动态分配内存。Both the malloc() and the calloc() s are used to allocate dynamic memory. Each operates slightly different from the other. malloc() takes a size and returns a pointer to a chunk of memory a
2014-04-18 12:55:46
744
转载 C++、C#中 abstract 与 virtual关键字的区别联系
C++: C++中,由virtual实现多态。除多态外,virtual有两个特殊用法:1、虚基类(Virtual base class) 为解决多重继承时的二义性提出来的。使用方法:class B :virtual public Aclass C :virtual public Aclass D: public B, public
2014-04-16 15:06:13
3216
原创 浅谈C#内存回收与Finalize, Dispose, Close方法(二)
hauj.NET Framework 提供Object.Finalize方法,它允许对象在垃圾回收器回收该对象使用的内存时适当清理其非托管资源。 默认情况下,Finalize 方法不执行任何操作。 如果您要让垃圾回收器在回收对象的内存之前对对象执行清理操作,您必须在类中重写Finalize 方法。若要在 C# 中实现 Finalize 方法,您必须间接使用析构函数语法。也就是C#的 ~Cl
2014-04-16 14:26:30
1987
原创 浅谈C#内存回收与Finalize, Dispose, Close方法(一)
一. net的对象使用一般分为三种情况﹕1.创建对象2.使用对象3.释放对象
2014-04-16 12:52:20
2230
原创 C++四种cast操作符
C 风格(C-style)强制转型如下:(T) expression 或T(expression) //函数风格(Function-style)两种形式之间没有本质上的不同。对于具有转换的简单类型而言C 风格转型工作得很好。然而,这样的转换符也能不分皂白地应用于类(class)和类的指针。ANSI-C++标准定义了四个新的转换符:reinterpret_cast, stati
2014-04-14 10:06:09
758
原创 C++中指针和引用的区别
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是
2014-04-14 09:19:25
680
Revit开发起始篇
2013-02-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人