自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

转载 Java与C++在面向对象基本概念上的区分

http://hi.baidu.com/zmtxzmtx/blog/item/4e106c80e946d6a90df4d247.htmlJava与C++在面象对象基本概念上的区分Frontfree一、引言    众所周知,C++和Java是当今两种主流的面向对象语言,对于两种语言的优劣比较,每个人都有自己不同的看法,比较一致的看法是C++是编译型高级语言

2011-10-29 21:55:24 4082

原创 因式分解 C++实现

void devideFactor(const int N) {vector vec;int curVal = N;int factor = 2;int outerCycle = 0;int innerCycle = 0;for (int factor =

2011-10-14 08:30:59 6011

原创 用归并排序求逆序对

不多解释,常规算法,直接上代码,只是为了以后想起来时做参考~#include #include using namespace std;//记录逆序对的个数int times = 0;//子函数,用于完成核心功能:即将两个有序数组进行合并void

2011-10-10 22:10:51 695

原创 堆排序

筛选:前提是:一个小堆(或称为完全二叉树),除根节点以外,它的左右子树都已经是一个堆,现在要做的是:通过对根节点的调整,使得整个二叉树称为一个堆,而这一过程,我们称之为:筛选!建堆:从一个无序序列建成一个堆的过程,其实质就是一个不断筛选的过程。具体来说:要能执行筛

2011-09-27 08:17:45 460

原创 多线程的几点认识

1:在单核的CPU上,多线程的设计为什么也能够提高程序的整体性能?原因就是:阻塞!如IO阻塞,这种情况超出了当前运行程序所用控制的范围,所以,如果是单线程,则整个程序都将停下来,而多线程情况下,其它线程还能够继续执行。事实上,如果没有任务会阻塞,那么在单处理器上使用并

2011-09-18 15:46:47 702

原创 对于interrupt,interrupted 和 isInterrupted的一些理解

为什么interrupt,isInterrupted是实例方法,而interrupted是类方法?原因:interrupt的语义 是:中断一个线程。线程可以在其内部调用this.interrupt()来中断自己,但是如果自己遇到阻塞或睡眠了,怎么办呢?所以,就需要从另外一个外部线程上将其中断,即在Thread1上调用Thread2.interrupt() 来中断thread2,。同时,

2011-09-17 17:04:45 5228 2

原创 取代Java中的Thread.stop : 一个安全终止线程的通用模板

java线程中stop的弊端就不说了,学过多线程的应该都知道。下面给出的一个安全终止线程的模板,虽然不算尽善尽美,但也应该能用。如有任何疑问或建议,欢迎提出和讨论。package concurrent;/** * 继承本类的线程类需要可根据实际需要,覆盖t

2011-09-17 07:23:27 3630

原创 Java中的多线程:sleep, wait, join 与 interrupt()的关系

当线程执行sleep,wait,join的操作时,首先会检查当前线程的中断标志位(INT)是否为中断状态,如果是,则抛出InterruptedException,否则的话,就顺利进入各自想要的状态:睡觉,等待,阻塞调用线程而 interrupt() 函数的作用就是将INT的状

2011-09-15 20:15:27 2013

原创 简单回调机制的Java实现

原理图:代码//首先是接口部分:package mechanism;public interface ICallBack { public abstract void doSomething();}package mechanism;public

2011-09-15 07:24:15 838

原创 回调机制深入剖析

问题的提出什么是回调机制?采用回调机制有什么好处?不同的语言,如C,C++,Java等都有哪些措施来支持这种回调机制?要回答上述问题,我们需要先回答这样一个问题:为什么需要函数调用?又为什么需要函数?! 是的,如果你够厉害,你都不需要函数,所以也就不需要函数调用,也就更不需要回调函数这个东西了!从头到尾,也许,一个Main函数就可以搞定所有的事情。。。简单的函数调用从原理上

2011-09-12 07:15:26 2037 1

原创 面向对象的回调机制 (C++实现)

#include using namespace std;class Strategy//基类接口{public:virtual void action() = 0;};class PlanA : public Strategy//具体类1

2011-09-11 21:37:49 1984 2

原创 利用C语言中的回调函数实现策略模式

#include using namespace std;void planA(char ch) //回调函数1{cout }void planB(char ch)//回调函数2{cout }typedef void (*pla

2011-09-11 21:16:25 1903

转载 程序设计中的几个原则

程序设计中的几个原则(注:使用设计模式其实就是对以下准则的贯彻和落实)一、OCP法则:开闭法则(Open-Closed Principle)一个软件系统应当对扩展开放,对修改关闭优点:原则的描述就是其优点所在,1)通过扩展已有软件系统,可以提供新的行为,以满足对软

2011-09-09 15:10:50 935

转载 软件设计中窄接口的概念

软件设计中的“窄接口”设计,即主张接口定义应体现需求的正交性特点,即同一个接口应该仅全部或部分地体现一类正交需求,软件实现则通过同时实现多个接口来体现实际需求的多角度特性。相反地,即所谓“宽接口”设计,总是努力将来自不同角度,彼此关系不大的需求定义到同一个接口中,仅仅因为这些

2011-09-09 08:31:46 2179

转载 类的不变式(部分转载片段)

原文地址:  http://blog.sina.com.cn/s/blog_4bc03a14010008pg.html实现类的不变式的做法是为类定义一个名为is_valid的方法。然后该类的每一个公有方法都把它放到断言里进行调用,进入方法和退出时都调用,前置条件之

2011-09-08 21:30:43 1919

原创 builder模式

设计模式的实质是面向接口的编程;而面向接口可以使得接口的调用者独立于接口的具体实现细节。因为实现细节可以有多种多样,通过接口的使用,我们就可以把这些实现的变换封装起来,成为一个可替换的模块。在builder模式下,有以下几类角色:Director, AbstractB

2011-09-06 08:54:08 472

原创 GOF学习笔记之:遇到的问题(1)

1:p7说:“几乎所有模式都使用继承机制” 是啥意思?答:这句话是针对C++说的,因为C++中没有接口类的概念,如何是Java,有interface,就应该说成:“几乎所有模式都使用“接口”机制”!,当然,这是有语言本身所决定的,如果,从不严格的角度上来说,“接口也可以看成是

2011-09-04 09:32:43 481

原创 C++之萃取技术 笔记

#include using namespace std;//tagclass _xFalse{};class _xTrue{};templatestruct traits{typedef _xFalse hasDefaultC

2011-09-02 07:14:14 990

原创 auto_ptr_ref 原理解析

auto_ptr ptr1(auto_ptr(new int(1))); 搞懂了上面这句话的执行流程,也就明白了auto_ptr_ref的原理:执行流程如下:1:调用explicit auto_ptr(_Ty *_Ptr = 0),完成一个auto_ptr

2011-08-24 15:40:41 736

原创 C++中内存管理的实践(理论与分析)

C++中指针的使用在为语言提供极大的灵活性的同时,也使得内存管理变得极其复杂。如何利用好指针,并在工程实践中组织好高效的内存管理策略,是一个C++项目按时交付、并取得成功的关键。本文将从理论和实践上分析,如何通过良好的类的设计策略,来实践一个可在工程中使用的有效的内存管理方案

2011-08-23 13:59:46 786

原创 C/C++内存管理(随笔)

1:内存管理,从广义上来看,其实可以说是资源管理。而“资源”包括:内存,IO资源(文件句柄,设备句柄),GDI,(多线程环境下的)各种临界区资源。要想实现有效的资源管理,有效的资源回收机制,就必须确保一个前提条件:每个资源都有他们的所有者。即有相应的指针、引用或句柄来指向

2011-08-22 15:29:32 1373

转载 桥接模式与其它几种相近的设计模式之间的区别与比较

完整版地址: http://chjavach.iteye.com/blog/756233桥接模式和策略模式    这两个模式有很大的相似之处。    如果把桥接模式的抽象部分简化来看,如果暂时不去扩展Abstraction,也就是去掉RefinedAbstra

2011-08-08 16:39:09 7747 1

原创 从程序到进程:谈谈可执行文件是如何与进程相对应并最终被CPU执行的。

背景知识1:虚拟内存空间从实模式到保护模式,从实际物理地址的访问到虚拟地址空间的访问。这一转变也导致了可执行文件的载入内存方式的转变,即:从简单的一次性装入(基本是就是一个拷贝、粘贴的过程),演变成由操作系统负责调度和装入内存。而演变后的载入过程更多的是一种概念和逻辑,这

2011-07-31 16:08:47 1796

原创 编译器对语言特性的支持

类型 : 不同的类型通过对应不同的内存大小和地址偏移量指针: 用不同的寻址方式:直接寻址和间接寻址static,extern: 不同限定的变量放在不同的存储区域, 这里是 将变量放在静态存储区auto: 放在 堆栈上,并通过不同的地址偏移量来访问,register

2011-07-30 12:48:48 828

原创 C语言对结构化程序设计的支持

软件设计从架构上来说,以下几点是其基本的指导原则:1:低耦合、高内聚2:开闭原则,即对扩展开放,对修改关闭3:功能的模块化、正交化。。。所有这些原则的根本目的是:提高软件的可复用性、可扩展性。各种高级编程语言,为了实现这一目的,都在自身语言中提供了相应的支持。如 类class,接

2011-07-26 20:20:31 9535 5

原创 C/C++中变量的可见性与生命期区别的本质原因

可见性与生命期可见性又可称为:作用域,它是“栈”这种存储方式的表现形式。不管是全局的可见性(全局作用域)、还是局部可见性(局部作用域),从一个对象(或称为变量、实例)的入栈(开始可见)到其出栈(变成不可见),是该对象的整个的作用域。可见性与生命期是两个分立的概念,但似乎又存在这某

2011-07-26 07:01:25 3760 2

原创 关于断言与错误处理,以及测试用例的设计

错误处理:净化从外部接口输入的参数,它是用来处理预期会发生的情况;断言: 处理绝不应该发生的情况,用于子程序,系统内部的程序,用于调试开发中如果在子程序接口入口处发生了断言,则说明:调用了该子程序的外部程序存在错误,而不是子程序本身有错误!如果在程序内部执行中发生了断言,则说明:

2011-07-14 19:37:47 2361

原创 C++中的输入输出流

sssssssssssss

2011-07-02 19:22:32 967 1

原创 C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别

字符数组的长度计算:必须以终止符’/0作为边界,但对字符数组赋值时,有两种方式:1: 定义时用字符初始化 (1)char chs[7] = {a, c, 0, z, 3,d}; // 长度为6 上式等价于: (2)char chs[7] = {a, c, 0, z, 3,d, /0}; // 长度为6 也等价于: (3

2011-06-09 09:19:00 61311 4

原创 关键字static在C和C++中的区别

首先,C++是C的超集,所以static在C中的用法 对于C++来说是全盘接受的,而两者的不同也就是C++中多出来的特性,而这些多出来的特性与C++面向对象的特性有关,或更具体的说,就是static在“类”中的意义和作用。1:C语言中的StaticC中static 的影响其实不在

2011-01-22 10:34:00 1471

原创 "The requested resource (... processLogin.action) is not available"的问题所在及解决办法

<br />在JSP中,运用了Struts2.1框架,当Form表单提交时,常常会出现"The requested resource (***.action) is not available”的异常。如果其它配置选项都没问题的话,其实错误的提示已经说得很明白了,就是提交的**.action不能被Struts所找到,而不能找到了原因只有两个:<br />1:配置文件不对(这是需要首先排除的错误,不多说了)<br />2:(这是重点!!)人为的使用了jsp:forward的跳转方法,从而跳过了Struts的拦

2011-01-03 09:28:00 3686

原创 关于进程的4GB虚拟地址空间概念的理解

<br />     每个进程有4GB的虚拟内存空间,这是一个概念上的东西,并不是实际上的分配。<br />当程序启动并加载到内存中时,这里的“内存”指的是虚拟内存,它由两部分组成:硬盘上的页交换文件和实际的物理内存。<br />     从运行的程序自身来看,程序中包含的代码和数据可以存放在0~4GB的进程空间中的任何一个地址上,而这个地址的值将由操作系统进行换算,并映射到实际的物理地址值上(包括硬盘上,或物理内存)中;其中,对于需要运行的程序的指令和数据将传入物理内存,而对于暂时不用的指令和数据,操作系

2010-11-26 15:28:00 2818

原创 已知一个一维数组:BYTE imageArray[width * height], 怎样在VC++2008的MFC中,用GDI+,创建一个Bitmap对象,与该数组建立关联?

<br />因为一维数组里面放的的width*height 的8bit灰度图像数据,我想把它与一个Bitmap 对象相关联,这样的话,就可以用GDI+中的Graphics 等对象和函数 来方便将imageArray中的数据在窗口中显示出来,(我知道用opencv等第三方库也可以做,但我想使用GDI+来做)!    <br />哪位大侠能帮帮忙,告诉我怎么实现这一功能吗?  急急急! <br /><br />注:可以将其封装在函数void creatBitmapFormArray(Bitmap bitmap,

2010-09-16 16:50:00 853

原创 对于内存分配的理解

<br />在实际运行的时候,OS会为每一个可执行文件(或程序)分配一块内存空间(注意:这里的内存空间是4GB的虚拟地址空间,并最终由OS定向到实际的物理内存,而实际内存的大小是根据进程的PCB中的信息得到的),用于容纳程序所对应的进程。而这块内存由五个部分组成:栈、堆、常量存储区(符号区)、自由存储区、静态(全局)区<br />而在程序的运行过程中,对这(4GB大小的虚拟内存)五块存储区的管理,是由程序的进程自己来管理的。<br />Q1: 那么,进程是怎么知道应该为这些内存分配多大的内存空间呢?<br

2010-08-21 10:24:00 858

转载 关于C++中常量的理解

<br />1:在内存中的实际形式<br />字符常量实际上是一个整型数,<br />而字符串常量实质上的类型是:const char 类型的数组(属于C风格的字符串)<br /> <br />2:定义的方式<br /> 旧式的定义方法:宏定义,#define (符号常量名)(常量)<br /> 推荐的定义方式:Const<br />两者的区别:<br />Define:除了字符串常量以外,其它的字面值常量都不占用内存空间<br />一、常量:(不可以定义结构型常量)<br /> <br />   常量包括

2010-08-21 10:18:00 5139

VC类库资料大全.rar,包含了比较全的MFC的相关文档

包含了比较全的MFC的相关文档,对于刚接触MFC编程的新手应该会有所帮助。

2010-03-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除