- 博客(84)
- 资源 (41)
- 收藏
- 关注
转载 设计模式介绍
一、什么是软件设计模式?设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。 二、设计模式和框架可复用面向对象软件系统现在一般划分为两大类:应用程序工具箱和框
2013-06-27 22:41:58 943
转载 适配器模式
适配器模式,即把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作。例如:笔记本的电源适配器、二脚转三脚的电源插座等等。 适配器分成两种形式,分别是类的适配器模式和对象的适配器模式,它们的结构图如下图所示: 实现源码:(由于个人Rational Rose用的不熟,可能代码与上图有点差异) 类的适配器模式:
2013-06-27 22:37:55 678
转载 Builder模式
Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。Builder模式的应用场景 - 对象的创建:Builder模式是为对象的创建而设计的模式 - 创建的是一个复合对象:被创建的对
2013-06-27 22:11:51 731
转载 享元模式
GoF对享元模式的描述是:运用共享技术有效地支持大量细粒度的对象。Flyweight模式是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用。也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是
2013-06-27 21:57:36 645
转载 设计模式之Facade
定义: GOF《设计模式》一书对Facade模式是这样描述的: 为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。使用场景: 1、为一个复杂子系统提供一个简单接口时,由于子系统往往因为不断演化而变得越来越复杂,但这种变化不应该影响到客户的调用,此时使用 Facade 模式对外提供一个
2013-06-27 21:56:04 982
转载 设计模式_迭代模式
为什么要使用迭代模式?相较于数组这样简单的数据容器,有时候我们会需要遍历,操作一些更复杂的数据容器,像ArrayList,HashMap等。那么在遍历或操作这些数据容器时,可能会遇到这样的情况: 一.迭代方式没有改变,但是数据容器变了。 二.数据容器没有改变,但是迭代逻辑变了。 问题是,我们不希望改变客户端代码,那么就只有将可能变化的内容抽象化,让客户端去操作抽象接口
2013-06-27 21:54:11 791
转载 java接口回调
在java组件编程时(如Android编程)时会十分频繁的使用到接口回调,以前我都没有发现,只是照着书上写的做。最常见的就是View.setonClickListener(new View.onClickListener())这样的语句了。因为最近看得代码也渐渐多起来了,所以很自然的就发现这个问题了,然后还好现在Android中的sdk源码都是可以直接查看的,现在我明白了。 感觉接口回调也
2013-06-27 21:35:45 5093 1
转载 设计模式之责任链模式
刚学习了责任链模式,感觉还是蛮不错的,随手记录了下学习的内容。 责任链模式:责任链模式用于弱化请求发生者和请求处理者之间的关系。当多个对象都可以对请求进行处理,但不同的对象能处理的请求类型不同时,可以通过指向另一个对象的引用把这些对象连成一条责任链。当 Client 发出一个请求时,并不知道具体由哪个对象进行处理,它看到的只是一条责任链,将请求直接交给责任链,请求会在责任链中传递,直到找到
2013-06-27 21:21:39 781
转载 工厂方法模式
之前有一篇简单工厂模式的介绍:http://liyf155.iteye.com/blog/1180975,里面介绍了简单工厂模式。简单工厂模式的缺点是很明显的,对“开-闭”原则的支持不够,即扩展性不好,如果有新的产品加入到系统中,那么就要去修改工厂类,并且将必要的逻辑加入到工厂类中,工厂方法模式的引进,既保留了简单工厂模式的有点,又克服了它的缺点。 首先,在工厂方法模式中,核心的工
2013-06-27 21:15:15 870
转载 JAVA设计模式之观察者模式2
ObserverManager接口:Java代码 package com.zg.service; public interface ObserverManager { public abstract void addObserver(Observer observer); public abstract void removeObs
2013-06-27 21:09:48 1237
转载 java几种常用设计模式简单示例
1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生。具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。 (2) 在其内部产生该类的实例化对象,并将其封装成private static类型。 (3) 定义一个静态方法
2013-06-27 21:04:16 91120 11
转载 java设计模式--策略模式
当我们掌握了Java的语法,当我们了解了面向对象的封装、继承、多态等特性,当我们可以用Swing、Servlet、JSP技术构建桌面以及Web应用,不意味着我们可以写出面向对象的程序,不意味着我们可以很好的实现代码复用,弹性维护,不意味着我们可以实现在维护、扩展基础上的代码复用。一把刀,可以使你制敌于无形而于江湖扬名,也可以只是一把利刃而使你切菜平静。Java,就是这把刀,它的威力取决于你使用的方
2013-06-27 20:57:38 3662
转载 Java 设计模式——观察者模式
一、概述 Java的设计模式很多,观察者模式被称为是模式中的皇后,而且Java jdk也对它做了实现,可见该设计模式的重要位置。在图形化设计的软件中,为了实现视图和事件处理的分离,大多都采用了Observer模式,比如 Java的Swing,Flex的ActionScript等。在现实的应用系统中也有好多应用,比如像当当网、京东商城一类的电子商务网站,如果你对某 件商品比较关注,可以放到收
2013-06-27 16:52:06 827
转载 Java开发中的23种设计模式
学习设计模式有两个意义:一、学习设计模式最重要的是了解模式的应用场景。编程遇到特定场景的话,要有意识联想到设计模式,哪怕细节忘了也没关系,翻翻书就找到了。二、提高设计的思想。学习设计模式的时候,要体会模式精妙之处,当想明白大师思想和自己的差距的时候,差距就缩短了一点儿。有的模式平淡无奇,应用却广泛。有的模式设计精巧,应用场景却不易遇到。无论如何,要么掌握工具,要么学到思想,都是收获。
2013-06-27 11:38:13 728
转载 java设计模式示例
创建模式1.工厂方法模式(Factory Method) 将程序中创建对象的操作,单独出来处理,创建一个产品的工厂接口,把实际的工作转移到具体的子类。大大提高了系统扩展的柔性,接口的抽象化处理给相互依赖的对象创建提供了最好的抽象模式。public class TestFactoryMethod {public static void main(String[] args) {
2013-06-27 11:35:00 887
转载 Spring整合JMS——基于ActiveMQ实现
Spring整合JMS——基于ActiveMQ实现(一) 1.1 JMS简介 JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的
2013-06-25 11:00:12 42777 22
转载 Java与C++混合编程
现在的程序员,不再像以前一样,掌握一种编程语言就可以混得有模有样了,这里为大家讲的,就是C++与Java混合编程.现实的情况是,真实的项目中,通常是涉及多种编程语言,举几个简单的例子,一个软件为了快速开发,可能是使用Delphi或VB作为界面开发首选语言,底层的指令或核心算法,会使用C/C++处理,涉及数据处理的时候,为了安全和快速开发,会使用Javascript或Python等脚本语言实现数
2013-06-25 10:59:37 1511
转载 java c++混合编程
具体参照: http://www.cnblogs.com/icejoywoo/archive/2012/02/22/2363709.html http://www.cnblogs.com/icejoywoo/archive/2012/02/24/2367116.html
2013-06-25 10:58:56 938
转载 JAVA 与C++ 混合编程 Java中调用C/C++生成的DLL
一、 生成C的头文件 1. 编辑Main.java public class Main { public native static int getStrNum(byte str[], int strLen); } 2. 生成头文件 按win + r打开“运行”窗口,输入“cmd”,打开DOS控制台窗口。进入上面Main.java所在的目录中
2013-06-25 10:47:08 989
转载 java开发webservice的几种方式
webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录。1.Axis2Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟。这里主要介绍Axis+eclipse开发webservice,当然不用eclipse也可以开发和发布webservice,只是用eclipse会比较方便。
2013-06-25 10:30:49 52979 2
转载 static,inline,volatile的作用
1、static (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg() { prin
2013-06-25 08:07:16 680
转载 C++ : __attribute__关键字扩展
GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化。GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化。描述函数属性的几个重要的关键字:void noreturnfun() __attribute__((noreturn));//函数不会返回。void centon(
2013-06-24 22:49:30 10075 3
转载 在main函数之前调用函数,以及对设计的作用
#include #include static void before(void) __attribute__ ((constructor));static void after(void) __attribute__ ((destructor));static void middle(void);static void before(){
2013-06-24 22:33:44 821
转载 main函数之前执行代码
main函数之前执行代码 有的时候,需要会遇到这样的一个情况,“想要在main或者WinMain函数执行前初始化我们的系统框架,和在之后释放我们的系统框架”, 如果这样,我们该怎么做呢?笔者今天放假,来公司继续解决昨天剩余的问题,然后调试exit函数的时候,会发现它会调用static void __cdecl doexit (int code, int quick,int retcalle
2013-06-24 22:14:19 2253
转载 汇编指令大全(有注释)
一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI
2013-06-24 16:51:58 744
转载 C++中调用汇编的方法
1 引言 Visual C++ 是当今最流行的软件开发工具之一,它可以实现可视化编程和支持面向对象的编程技术。人们在开发的过程中将两种语言进行混合编程,这种方法使两种语言相互调用,进行参数传递,共享数据结构和数据信息,充分发挥了各种语言的特点和优势,大大提高了应用软件的效率。因此,正确掌握Visual C++与汇编语言的接口技术对软件开发是十分必要的。 2 Visual C++调
2013-06-24 16:28:10 1706
转载 C/C++函数调用约定
关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调用方式,在 DLL 导出函数中,为了跟 Windows API 保持一致,建议使用 __stdcall 方式。调用约定跟堆栈清除密切相关。如果写一个汇编函数,给 C/C++ 调用,在 __cde
2013-06-24 16:21:49 534
转载 C++中的重载、覆盖、隐藏机制
先讨论一下重载(Overload)的含义,在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载, 重载不关心函数的返回值类型。这里,“重载”是“重复”、“重叠”的意思。例如在同一可访问区内有:① double calculate(double);② double calculate(double
2013-06-24 08:52:14 1019
转载 #include<iostream>和#include<iostream.h>的区别
区别在于:如果用了,则一定要引入命名空间,即"using namespace std;如果用了,则不能引入命名空间,否则会引起编译错误,提示找不到命名空间.例程如下: //情况一:使用和命名空间 #include using namespace std; int main() { cout need to use nam
2013-06-24 08:38:17 1256
转载 static_cast、dynamic_cast reinterpret_cast和const_cast用法
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。stat
2013-06-24 08:34:41 497
转载 java享元模式
GOF:运用共享技术有效地支持大量细粒度的对象。 解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说(这里引用GOF书中的例子)一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享
2013-06-23 20:32:11 915
转载 Tomcat优化配置
1.内存设置(VM参数调优)(1).Windows环境下,是tomcat解压版(执行startup.bat启动tomcat) ,解决办法:修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms512m -Xmx512m-XX:PermSize=128M -XX:MaxNewSize=256m-XX:MaxP
2013-06-23 19:24:09 580
转载 Tomcat性能调优
Tomcat性能调优一、操作系统调优对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快。。【适用场景】 任何项目。二、Java虚拟机调优应该选择SUN的JVM,在满足项目需要的前提下,尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会
2013-06-23 19:23:27 529
转载 android之调用webservice 实现图片上传
最近boss要求做android客户端的图片上传和下载,就是调用服务器的webservice接口,实现从android上传图片到服务器,然后从服务器下载图片到android客户端。需求下来了,开始动脑筋了呗。通常,我们调用webservice,就是服务器和客户端(浏览器,android手机端等)之间的通信,其通信一般是传 xml或json格式的字符串。对,就只能是字符串。我
2013-06-23 19:10:17 1173
转载 Linux系统调用
目录:1. Linux系统调用原理2. 系统调用的实现3. Linux系统调用分类及列表4.系统调用、用户编程接口(API)、系统命令和内核函数的关系5. Linux系统调用实例6. Linux自定义系统调用1.系统调用原理系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的
2013-06-22 21:38:24 643
转载 讲解如何在C/C++中调用Java的方法
Java跨平台的特性使Java越来越受开发人员的欢迎,但也往往会听到不少的抱怨:用Java开发的图形用户窗口界面每次在启动的时候都会跳出一个控制台窗口,这个控制台窗口让本来非常棒的界面失色不少。怎么能够让通过Java开发的GUI程序不弹出Java的控制台窗口呢?其实现在很多流行的开发环境例如JBuilder、Eclipse都是使用纯Java开发的集成环境。这些集成环境启动的时候并不会打开一
2013-06-22 16:13:06 908
转载 开源的源代码编辑控件Scintilla的使用
1.简介Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/。Scintilla 是最优秀的编辑控件之一,实现了语法高亮,代码折叠,书签,自动完成等等诸多功能,速度快,源代码也比较好理解,易于扩展,易于增加对新语言的支持。 比较著名的 scite , Notepad++,Notepad2 都是基于 Scintilla 开发的
2013-06-18 20:38:46 1376
转载 VC环境下基于MFC框架的OpenGL的编程环境的配置
VC环境下基于MFC框架的OpenGL的编程环境的配置 学习OpenGL时,一般都是在控制台环境下的窗口,这里简单介绍一下基于MFC框架的OpenGL的编程环境的配置,希望对你有所帮助。在开始之前,首先确保你的VC已经包含了相应的OpenGL库文件,否则,将无法进行编译。若没有的话,可以从这里下载:http://butterflydog.download.csdn.net/然后解压
2013-06-18 20:38:19 943
转载 剖析MFC的文档视图结构
这是我学习MFC过程中搜集的一些资料的整合。 本文结构: (一) 了解文档 / 视结构 (二) 了解与文档 / 视结构有关的各种类之间的关系 (三) 了解了解 CWinApp::OnFileNew 、 CWinApp::OnFileOpen 和 Window/New 的程序流程。 (四) 几种情况的讨论 (一)了解文档 / 视结构 MFC 应用程序
2013-06-18 20:37:32 732
staruml使用守则
2012-08-15
Android程序自动更新实现Demo
2014-09-26
c# 链接oracle数据库(不安装客户端)
2013-07-01
boost asio中转服务器(TCP)
2013-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人