摘要:
在C/C++中,定义数组时的长度要求是常量,即只能定义如下数组:1 #define N 1002 int a[N];3 4 or5 6 const int N = 100;7 int a[N];而在很多情况下,我们是无法预知数组的长度的,只有运行时读取相关信息时才知道,对于这种情况如何处理?一般而言,有两种比较通用的办法:1)STL的vector。 vector提供了一套完整的数据结构及方法,在无特殊要求的情况下,我个人认为是一个最好的选择1 std::vector<objType> vecArray;2 for(int i = 0; i < someValue; i++)3 阅读全文
摘要:
菜单是MFC编程中非常重要的一种资源,在MFC中添加菜单有两种方式,一种是以资源的形式静态添加,另一种是动态添加,本文简洁说明第一种形式 ,其步骤如下(从SDK的角度看各种类之间的联系,更容易理解MFC框架):1 创建win32空项目;2 添加一个前述初步教程中所示的源代码文件3 选择菜单insert->resource->menu,添加一个菜单File,并添加一个子菜单New,编辑子菜单New的ID为:IDM_FILENEW4 选择Project --> Add To Project --> Files 将Script1.rc 和resource.h加入项目.代码如下 阅读全文
摘要:
绘制简单的图形几乎是所有的VC教程中的必须内容,这里面涉及到几个概念,设备(device context),画刷(Pen)等。CDC是所有设备的父类,其子类包括CClientDC(仅在客户区绘制), CPaintDC, CWindowDC(可以在客户区和窗口非客户区绘制)等。所有继承于CWnd类的子类均可以构造设备类。#include <afxwin.h>class MFC_Tutorial_Window: public CFrameWnd{ CPoint m_startPoint; CPoint m_endPoint;public: MFC_Tutorial_Window() { 阅读全文
摘要:
学习过很多语言以及环境,对于Java、C++、Qt等都很容易理解,并且能很快上手做项目,唯独对MFC一直浑浑噩噩,不太清楚,参与项目总是独立负责一块,与业务逻辑更相关,用std库的机会多,与GUI、Doc/View打交道的时间少,没有对其进行系统地学习。现在独立完成项目,各方面都要清楚,尤其觉得MFC是自己的一个短板,更觉得有系统一学的必要。一、用MFC创建窗口 MFC的目的是减轻程序员的工作量,让程序员专注于程序的逻辑而非一堆离散的SDK函数,其主要作用是将绝大部分常用的函数包装好,提供一个完整的框架。在MFC中,有两个类最为重要,一个是CWinApp,另一个是CFrameWnd ,前者负. 阅读全文
摘要:
转自:http://blog.csdn.net/pengchua/article/details/2610324一.异常介绍任何的异常都是Throwable类,并且在它之下包含两个字类Error / Exception,而Error仅在当在Java虚拟机中发生动态连接失败或其它的定位失败的时候,Java虚拟机抛出一个Error对象。典型的简易程序不捕捉或抛出Errors对象,你可能永远不会碰到需要实例化Error的应用,那就让我们关心一下Exception。Unchecked Exception.:包括 Error与RuntimeException. 这类异常都是RuntimeExceptio 阅读全文
摘要:
两篇文章,值得推荐:1 Java序列化高级认识 http://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html2 关于 Java 对象序列化您不知道的 5 件事 http://www.ibm.com/developerworks/cn/java/j-5things1/index.html 阅读全文
摘要:
Java序列化是指将Java中的类对象状态以字节的形式保存,需要的时候可以解码获取,通常用于共享数据交互、网络通信等。在Java中,属于对象的状态才应该保存,因此,静态数据成员不能保存;如果不愿意保存某个变量,可以将此变量声明为transient;另外,并不是所有的对象都可以序列化,系统级的类对象如Thread、OutputStream、Socket等类及其子类对象是不可以序列化的。 要序列化某个对象,只需要类实现java.io.Serializable接口。如下例子: 1 package de.vogella.java.serilization; 2 3 import java.io.S.. 阅读全文
摘要:
一直以来,都是用C,C++,C#开发程序,从事的也是编译器相关方面的研究与开发,最近在测试方面有些比较好的想法,想从实验的角度验证想法是否可行。但C系列里面没有相关的benchmark,只有Java有,所以转而学习Java。Java中的语法基本与C++一致,上手很容易,但是有些地方依然不太顺手,故而本文记录本人在开发Java程序过程中遇到的问题,作为笔记。1 参数传递问题。在Java中,参数传递没有C++中默认的传值以及传引用等相关标记,在Java中,内置类型对象参数采用传值方式,而类对象参数这采用引用传递。注意:Java中的String是类,而非内置对象;2 集合使用问题。在C++中,STL 阅读全文
摘要:
捣鼓log4j,要记录一些重要的信息,但是在配置的时候总是出错,错误信息为:log4j:ERROR Could not read configuration file [\log4j.properties].java.io.FileNotFoundException: log4j.properties (系统找不到指定的文件。)用代码 File f = new File("/log4j.properties"); if(f.exists()) { System.out.println("OK"); } else { System.out.println( 阅读全文
摘要:
make工具用以简化编译过程,当编译一个包括成百上千个文件的大型项目时,逐个文件编译繁琐且低效,并且当更新某个文件之后,还需要重新再编译一次。makefile文件正是为解决此类问题而诞生的。现在绝大多数IDE,包括Window下的VS等IDE均使用makefile文件,只不过由系统自动生成,编程人员感觉不到而已。在linux环境下,理解简单的makefile文件,能使用make工具,可以加速开发过程以及编译安装源码文件的痛苦。通常情况下,如果在某个目录下运行:make则自动执行此目录下的makefile文件(或者Makefile文件),如果在此目录下有多个Makefile文件,则运行如下命令可 阅读全文