摘要: https://blog.csdn.net/GoOnDrift 将博客园的地址搬迁到CSDN 阅读全文
posted @ 2018-10-04 11:50 Cranny 阅读(99) 评论(0) 推荐(0) 编辑
摘要: //: Garbage.java// Demonstration of the garbage collector and finalizationclass Chair { static boolean gcrun = false; static boolean f = false; static int created = 0; static int finalized = 0; int i; Chair() { i = ++created; if (created == 47) System.out.println("Created 47"); } protected 阅读全文
posted @ 2012-07-17 00:12 Cranny 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 摘自wiki pediahttp://zh.wikipedia.org/zh/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC起源早在2004年,Martin Fowler就提出了“哪些方面的控制被反转了?”这个问题。他总结出是依赖对象的获得被反转了。基于这个结论,他为控制反转创造了一个更好的名字:依赖注入。许多非凡的应用(比HelloWorld.java更加优美,更加复杂)都是由两个或是更多的类通过彼此的合作来实现业务逻辑,这使得每个对象都需要,与其合作的对象(也就是它所依赖的对象)的引用。如果这个获取过程要靠自身实现,那么如你所见,这将导致代码高度耦合并且难以测试。 阅读全文
posted @ 2012-05-07 10:53 Cranny 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 契约式编程是编程的一种方法。那么什么是契约式编程呢?我想这个概念是从“合同”演变过来的。 在人类的社会活动中,契约一般是用于两方,一方(供应者)为另一方(客户)完成一些任务。每一方都期待从契约中获得利益,同时也要接受一些义务。通常,一方视为义务的对另一方来说是权利。契约文档要清楚地写明双方的权利与义务。契约合同能保障双方的利益,对客户来说,合同规定了供应者要做的工作;对供应者来说,合同说明了如果约定的条件不满足,供应者没有义务一定要完成规定的任务。 同样的道理也适合于软件。设想一个软件单元E。它要达到它的目的(履行契约), E使用的策略可能会包括一系列的子任务,t1, ... tn。如... 阅读全文
posted @ 2012-05-03 18:33 Cranny 阅读(8314) 评论(1) 推荐(2) 编辑
摘要: 耦合度一、什么是耦合度 耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。耦合按从强到弱的顺序可分为以下几种类型:(1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。类与类之间直接调用或继承关系都是属于这种耦合。(2)公共耦合。两个及两个以上 阅读全文
posted @ 2012-05-02 15:01 Cranny 阅读(718) 评论(0) 推荐(0) 编辑
摘要: 为什么静态内部类不能有静态成员?这个跟编译器的内存处理有关系,静态成员变量需要在一开始就分配内存进行初始化,而一般的类成员只是在类实例化的时候才会为止分配内存初始化,从这方面来说,假如允许非静态类中有静态成员变量,如下面所示:class A{ public class B{ static string var_a; }}那么在程序一开始就需要给A.B.var_a分配内存并初始化,假如这个成立了,那么A.B也应该会有相应的内存,但是由于B只是A的一个非静态成员变量,在类A还没有实例化的时候就以及有了相应的内存(也就是非静态成员变量只有在类的实例中才会有相应的内存位置),这样跟原来的标准有冲突,假 阅读全文
posted @ 2012-04-14 19:17 Cranny 阅读(337) 评论(0) 推荐(0) 编辑
摘要: Windows剪贴板 Windows剪贴板是一种比较简单同时也是开销比较小的IPC(InterProcess Communication,进程间通讯)机制。Windows系统支持剪贴板IPC的基本机制是由系统预留的一块全局共享内存,用来暂存在各进程间进行交换的数据:提供数据的进程创建一个全局内存块,并将要传送的数据移到或复制到该内存块;接受数据的进程(也可以是提供数据的进程本身)获取此内存块的句柄,并完成对该内存块数据的读取。 为使剪贴板的这种IPC机制更加完善和便于使用,需要解决好如下三个问题:提供数据的进程在结束时Windows系统将删除其创建的全局内存块,而接受数据的进程则希望在其退出后 阅读全文
posted @ 2011-05-03 22:35 Cranny 阅读(1046) 评论(0) 推荐(0) 编辑
摘要: 忘记释放已经分配的内存是一种常见的编程错误,当然我指的是在C++编程当中,例如下面的代码里面就存在一个忘记释放内存的编程错误。我个人觉得忘记释放内存的编程错误是不可避免的,毕竟程序员都是人,困了,心情不好了,代码过于复杂啦等等都可能导致忘记加上一句delete XXX语句。#include <tchar.h>#include <windows.h>#include <string>#include <iostream>using namespace std;class CTestClass{public: CTestClass(LPWSTR sz 阅读全文
posted @ 2011-04-26 18:52 Cranny 阅读(775) 评论(1) 推荐(1) 编辑
摘要: 原文:http://www.ccrun.com/article.asp?i=434&d=17iz10显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点。1、显示的图形为什么会闪烁?我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何 阅读全文
posted @ 2011-04-20 20:38 Cranny 阅读(367) 评论(0) 推荐(1) 编辑
摘要: 转:http://blog.vckbase.com/arong/archive/2009/12/30/40598.html1. 原理分析经常有些新C++程序员问:C++的类的成员个数是不是有限制,为什么我加一个变量后程序就死了?或者说:是不是成员变量的顺序很重要,为什么我两个成员变量顺序换一换程序就不行了?凡此种种之怪现象,往往都是内存访问越界所致。何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围。例如,你明明申请的是100字节的空间,但是你由于某种原因写入了120字节,这就是内存访问越界。内存访问越界的后果是:你的写入破坏了本不属于你的空间。下面是 阅读全文
posted @ 2011-04-19 12:05 Cranny 阅读(3165) 评论(0) 推荐(0) 编辑