一、引子其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。虽然你几乎用不到这个模式,但是看一看还是能受到一定的启发的。二、定义与结构解释器模式的定义如下:定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。在GOF的书中指出:如果一种特定类型的问题发生的频率足够高,那
系统 2019-08-29 22:23:20 2037
十三、使类和成员的可访问性最小化:信息隐藏是软件程序设计的基本原则之一,面向对象又为这一设计原则提供了有力的支持和保障。这里我们简要列出几项受益于该原则的优势:1.更好的解除各个模块之间的耦合关系:由于模块间的相互调用是基于接口契约的,每个模块只是负责完成自己内部既定的功能目标和单元测试,一旦今后出现性能优化或需求变更时,我们首先需要做的便是定位需要变动的单个模块或一组模块,然后再针对各个模块提出各自的解决方案,分别予以改动和内部测试。这样便大大降低了因代
系统 2019-08-29 22:02:34 2037
Java的集合类就好比一个容器,用来盛放Java类的对象。有些容器内所放的东西是可以操作的,而有些则是不可以的。Java的集合类是由java.util包所提供的,常用的有Map,Set和List,而Set和List实现了Collection接口。1.认识Collection接口Collection接口是Set接口和List接口的父接口,通常情况下不被直接使用,但定义了一些通用方法,通过这些方法可以实现对集合的基本操作。Collection接口的常用方法如下
系统 2019-08-12 09:29:46 2037
转自http://fuliang.iteye.com/blog/175035Matcher类:使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的,以及这些组和组的下标怎么对应的.下面我们看看一个小例子,来说明这个问题引用\w(\d\d)(\w+)这个正则表达式有三个组:整个\w(\d\d)(\w+)是第0组group(0)(\d\d)是第1组gro
系统 2019-08-12 09:29:31 2037
http://www.oracle.com/technology/global/cn/pub/articles/brahms-tuning.html?_template=/ocom/print作者:CarlBrahms自动执行负载生成和性能优化过程为什么可以节省大量的时间和精力。2008年9月发布优化可能是一项非常艰巨而费时的工作,尤其对于需要最佳性能的环境来说更是如此。优化所带来的好处是使环境更稳定、故障更少、总体性能更佳。也许您幸运地拥有内部性能优化人
系统 2019-08-12 09:29:31 2037
本文介绍基于java的即时通信解决方案openfire3.6.4+spark2.5.8的完整的安装说明,并介绍了使用smack的java类库如何与im用户交互的例子,这样使得业务系统的消息可以通过smack编程将消息发送给spark客户端。spark2.5.8除了聊天之外还支持多人视频,语音,文件传输,截图,观看远程桌面,msn互联互通等功能。因本文图片太多,需要看图片的请下载资源或者访问http://code.google.com/p/openjweb/
系统 2019-08-12 01:33:16 2037
下载地址:http://code.google.com/p/freecms/系统配置从FreeCMS1.2开始支持管理系统使用的配置项。从左侧管理菜单点击系统配置进入。从FreeCMS1.3开始支持会员禁用登录名邮件相关配置开源免费javaCMS-FreeCMS1.3-系统配置
系统 2019-08-12 01:32:52 2037
Python入门教程完整版(懂中文就能学会)python网络爬虫第一天python网络爬虫第二天6节课掌握Python爬虫视频6节课机器学习入门Python学习文章参考:Python学习感觉没有效率,如何提升?为什么要学习Python编程语言?哪些人适合学习Python?------------以下为原答案,文中很多错误。大家见谅~emm…感觉好多大神的回答戾气都很重。但是非计算机专业,不是很了解各个语言太正常不过了。大概的给楼主介绍一下这几门语言以及可以
系统 2019-09-27 17:50:04 2036
javamd5的实现收藏importjava.lang.reflect.*;importjava.io.*;/*************************************************md5类实现了RSADataSecurity,Inc.在提交给IETF的RFC1321中的MD5message-digest算法。********************************************
系统 2019-08-29 23:47:03 2036
国际化是使程序具有足够的灵活性、能在世界上任何地区运行的过程。国际化所要求的必然结果是地方化――使一个程序能够运行在特定地区的过程。本文尝试用一个简单的例子来演示Java用户界面本地化。Java语言内核基于Unicode3.0(Java1.4)提供了对不同国家和不同语言文字的内部支持,由于先天的原因,Java对于国际化的支持远远要比C/C++来的优越。在我看来本地化必须满足以下的三个条件:1、程序必须能读、写和操作本地化的文本。2、程序在显示日期和时间、使
系统 2019-08-29 23:24:45 2036
一般说明在TCP/IP协议族中,UDP和TCP同样位于传输层,用户数据报是UDP协议中的概念.UDP协议提供面向事务的简单不可靠信息传送服务,它不提供对IP协议的可靠机制、流控制以及错误恢复功能.UDP协议基本上是IP协议与上层协议的接口,从整个用户数据在各层的包装看,UDP报文格式相当简单:1632bitSourceport源端口Destinationport目标端口Length报文长度(单位是字节,包括首部和用户数据区)Checksum(校验和)Dat
系统 2019-08-29 23:12:32 2036
Java中assert和静态导入的使用最近一直在做测试,发现了一些JDK1.5中的一些新的语法特性,在开发的时候确实省了不少时间,在此做简要的记录:assert的用法assertexpression1;assertexpression1:expression2;如果expression1为true,则不抛出错误,程序正常运行,expression2也不会执行。如果expression1为false,则抛出异常,程序中断跳出,expression2执行。一般
系统 2019-08-29 22:53:31 2036
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。按照《Java虚拟机规范(第2版)》的规定,Java虚拟机所管理的内存将包括以下几个运行时数据区域,来个图更加直观点,如下图所示:解释下各个部分程序计数器:ProgramCounterRegister是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。每个线程都有一个独立的程序计数器,各个线程之间计数器互不影响,独立存储。此内存
系统 2019-08-29 22:50:35 2036
JavaNIO管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。这里是Pipe原理的图示:创建管道通过Pipe.open()方法打开管道。例如:Pipepipe=Pipe.open();向管道写数据要向管道写数据,需要访问sink通道。像这样:Pipe.SinkChannelsinkChannel=pipe.sink();通过调用SinkChannel的write()方法,
系统 2019-08-29 22:04:18 2036
Jofti【Java开源其它开源项目】Jofti可对在缓存层中(支持EHCache,JBossCache和OSCache)的对象或在支持Map接口的存储结构中的对象进行索引与搜索。这个框架还为对象在索引中的增删改提供透明的功能同样也为搜索提供易于使用的查询功能。Yan【Java开源IOC容器】Yan是一个非侵入式的对象反转控制容器(IOC容器)。它通过宣告式的方式把简单的组件组合起来从而构建出任意复杂的组件。这些简单的组件同样也
系统 2019-08-12 09:29:50 2036