自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

芝麻软件工作室的专栏

所有成员均具有十几年软件设计经验

  • 博客(163)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java包的概念

“包”机制是 Java 中特有的,也是 Java 中最基础的知识之一。一些初学 Java 的朋友,通常像学其他语言一样从教材上“copy”一些程序来运行,可是却常常遇到莫名其妙的错误提示,这些问题事实上都是对“包”的原理不理解。本节将就此问题进行深入阐述。什么是 Java 中的包在 Java 程序语言中,为了开发方便,会将多个功能相似的类放到一个组内,而这个组就是“包”,包就像一个目录

2016-05-31 09:00:14 408

原创 Java成员变量和成员方法

成员变量成员变量是指类的一些属性定义,标志类的静态特征,它的基本格式如下:    访问修饰符 修饰符 类型 属性名称=初始值;访问修饰符:可以使用四种不同的访问修饰符中的一种,包括public(公共的)、protected(受保护的),无修饰符和 private(私有的)。public 访问修饰符表示属性可以从任何其它代码调用。private 表示属性只可以由该类中的其它方法来

2016-05-31 08:59:13 795

原创 Java构造方法和析构方法

Java构造方法类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量。在创建对象时,会自动调用类的构造方法。构造方法定义规则:Java 中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void)。另外,构造方法一般都应用 public 类型来说明,这样才能在程序任意的位置创建类的实例--对象。示例:下面是一个 Rectangle 类的构造

2016-05-31 08:57:54 3477

原创 Java assert在什么时候使用

断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:    assert(a > 0); // throws an AssertionError if a 断言可以有两种形式:    assert Expression1 ;assert Expression1

2016-05-31 06:46:06 401

原创 Java sleep()和wait()有什么区别

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

2016-05-31 06:45:15 290

原创 Java error和exception有什么区别

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

2016-05-31 06:42:27 305

原创 Java中abstract class和interface有什么区别

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之

2016-05-31 06:41:51 720

原创 我所知道的Java 线程同步的方法

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。Allnotity

2016-05-31 06:40:55 296

原创 Java静态导入(import static)需谨慎

从Java 5 开始引入了静态导入语法(import static),其目是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序。我们先来看一个不使用静态导入的例子,也就是一般导入:public class MathUtils{    // 计算圆面积    public static double calCircleArea(double r){        return

2016-05-31 06:40:08 2573

原创 养成良好编程习惯,Java UID最好显式声明

我们编写一个实现了Serializable 接口(序列化标志接口)的类, Eclipse 马上就会给一个黄色警告:需要增加一个Serial Version ID。为什么要增加?它是怎么计算出来的?有什么用?本章就来解释该问题。类实现Serializable 接口的目的是为了可持久化,比如网络传输或本地存储,为系统的分布和异构部署提供先决支持条件。若没有序列化,现在我们熟悉的远程调用、对象数

2016-05-31 06:39:04 1934 1

原创 Java 中,要避免为final变量复杂赋值

为final 变量赋值还有一种方式:通过方法赋值,即直接在声明时通过方法返回值赋值。还是以Person 类为例来说明,代码如下:public class Person implements Serializable{    private static final long serialVersionUID = 91282334L;    // 通过方法返回值为final 变量赋值

2016-05-31 06:38:16 409

原创 Java动态编译要慎用

动态编译一直是Java 的梦想,从Java 6 版本它开始支持动态编译了,可以在运行期直接编译.java 文件,执行.class,并且能够获得相关的输入输出,甚至还能监听相关的事件。不过,我们最期望的还是给定一段代码,直接编译,然后运行,也就是空中编译执行(onthe-fly),来看如下代码:public class Client {    public static void m

2016-05-31 06:37:35 1664

原创 Java断言绝对不是鸡肋

在防御式编程中经常会用断言(Assertion)对参数和环境做出判断,避免程序因不当的输入或错误的环境而产生逻辑异常,断言在很多语言中都存在,C、C++、Python 都有不同的断言表示形式。在Java 中的断言使用的是assert 关键字,其基本的用法如下:    assert     assert : 在布尔表达式为假时,抛出AssertionError 错误,并附带了错误信

2016-05-31 06:36:55 504

原创 Java包装类型的大小比较需谨慎

基本类型是可以比较大小的,其所对应的包装类型都实现了Comparable 接口也说明了此问题,那我们来比较一下两个包装类型的大小,代码如下:public class Client {    public static void main(String[] args) {        Integer i = new Integer(100);        Integer j =

2016-05-31 06:36:09 1938 1

原创 使用Java package-info类为包服务

Java 中有一个特殊的类:package-info 类,它是专门为本包服务的,为什么说它特殊呢?主要体现在3 个方面:它不能随便被创建在一般的IDE 中,Eclipse、package-info 等文件是不能随便被创建的,会报“Type name is notvalid”错误,类名无效。在Java 变量定义规范中规定如下字符是允许的:字母、数字、下划线,以及那个不怎么常用的$ 符号,

2016-05-31 06:35:26 560

原创 Java ==和equals()的区别【详细版】

==操作符专门用来比较变量的值是否相等。比较好理解的一点是:int a=10;int b=10;则a==b将是true。但不好理解的地方是:String a=new String("foo");String b=new String("foo");则a==b将返回false。根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是

2016-05-31 06:34:45 266

原创 Java String到底变了没有

答案是:没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。请看下列代码:    String s = "Hello";    s = s + " world!";s所指向的对象是否改变了呢?从本系列第一篇的结论很容易导出这个结论。我们来看看发生了什么事情。在这段代码中,s原先指向一个String对象,内容是"Hello",然后我们

2016-05-31 06:34:01 347

原创 java final关键字到底修饰了什么

final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。引用本身的不变:final StringBuffer a=new StringBuffer("immutable");final StringBuffer b=new StringBuffer("not immutable");a=b;//编

2016-05-31 06:33:23 336

原创 Java 变量到底要如何初始化

本问题讨论变量的初始化,所以先来看一下Java中有哪些种类的变量。类的属性,或者叫值域方法里的局部变量方法的参数对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。int类型变量默认初始值为0float类型变量默认初始值为0.0fdouble类型变量默认初始值为0.0boolean类型变量

2016-05-31 06:32:16 1361

原创 对Java instanceof的进一步理解

instanceof是Java的一个二元操作符,和==,>,它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:    String s = "I AM an Object!";    boolean isObject = s instanceof Object;我们声明了一个String对象引用,指向一个String对象,然后用instanc

2016-05-31 06:31:27 262

原创 J2EE相关技术有哪些

来看看Sun给出的J2EE 相关技术主要分为几大块。1. Web Service技术-  Java API for XML Processing (JAXP)-  Java API for XML Registries (JAXR)-  Java API for XML-based RPC (JAX-RPC)-  SOAP with Attachments API for

2016-05-30 07:18:00 1124

原创 Java中常见异常有哪些

作为一名游戏开发者,程序员,很自然必须熟悉对程序的调试方法。而要调试程序,自然需要对程序中的常见的异常有一定的了解,这些日子很多朋友都提出了很多问题,都是关于游戏中的报错,因此在这里我将一些常见的程序中的异常列举出来给大家参考:1. Java.lang.NullPointerException这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对

2016-05-30 07:13:11 1448

原创 面向对象的特征有哪些方面

1. 抽象抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2. 继承继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,

2016-05-30 07:11:26 238

原创 Java int和Integer有什么区别

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类:boolean  Booleanchar  Characterbyte  Byteshort   ShortintInte  gerlong  Longfloat  Fl

2016-05-30 07:10:03 269

原创 Java HashMap和Hashtable的区别

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成contains

2016-05-30 07:08:53 227

原创 EJB与JAVA BEAN的区别

Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM

2016-05-30 07:07:57 255

原创 Java命令模式(Command模式)

Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用。Command模式实际上不是个很具体,规定很多的模式,正是这个灵活性,让人有些confuse。Command定义不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行

2016-05-30 06:56:10 327

原创 Java访问模式(Visitor者模式)

Visitor定义:作用于某个对象群中各个对象的操作。它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作。在Java中,Visitor模式实际上是分离了collection结构中的元素和对这些元素进行操作的行为。为何使用Visitor模式Java的Collection(包括Vector和Hashtable)是我们最经常使用的技术,可是Collection好象是个

2016-05-30 06:55:28 326

原创 Java观察者模式(Observer模式)

Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解。设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Observer(观察者)模式是比较常用的一个模式,尤其在界面设计中应用广泛,而本教程所关注的是Java在电子商务系统中应用,因此想从电子商务实例中

2016-05-30 06:54:36 405

原创 Java状态模式(State模式)

State的定义:不同的状态,不同的行为;或者说,每个状态有着相应的行为。何时使用状态模式State模式在实际使用中比较多,适合"状态的切换"。因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了。不只是根据状态,也有根据属性。如果某个对象的属性不同,对象的行为就不一样,这点在数据库系统中

2016-05-30 06:53:51 968

原创 Java策略模式(Strategy模式)

Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类。Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现。这里以字符串替代为例,有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出。关于替代其中变量的方法可能有多种方法

2016-05-30 06:52:56 323

原创 Java解释器模式(Interpreter模式)

Interpreter定义:定义语言的文法,并且建立一个解释器来解释该语言中的句子。Interpreter似乎使用面不是很广,它描述了一个语言解释器是如何构成的,在实际应用中,我们可能很少去构造一个语言的文法。我们还是来简单的了解一下。首先要建立一个接口,用来描述共同的操作。    public interface AbstractExpression {   void i

2016-05-30 06:52:06 290

原创 Java中介模式(Mediator模式)

Mediator定义:用一个中介对象来封装一系列关于对象交互行为。为何使用Mediator模式/中介模式各个对象之间的交互操作非常多,每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修改很多其他对象的行为,如果使用Mediator模式,可以使各个对象间的耦合松散,只需关心和 Mediator的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可修改扩展

2016-05-30 06:51:22 337

原创 Java备忘录模式(Memento模式)

Memento定义:memento是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到原先保存的状态。Memento模式相对也比较好理解,我们看下列代码:public class Originator {   private int number;  private File file = null;  public Originator(){} 

2016-05-30 06:50:37 323

原创 Java责任链模式(Chain of Responsibility模式)

Chain of Responsibility定义:Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request。也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。如何使

2016-05-30 06:49:55 280

原创 Java模板模式(Template模式)

Template模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中。其实Java的抽象类本来就是Template模式,因此使用很普遍。而且很容易理解和使用,我们直接以示例开始:public abstract class Benchmark{  /**  * 下面操作是我们希望在子类中完成  */  public abstract void bench

2016-05-30 06:48:52 515

原创 Java迭代模式(Iterator模式)

上了这么多年学,我发现一个问题,好象老师都很喜欢点名,甚至点名都成了某些老师的嗜好,一日不点名,就饭吃不香,觉睡不好似的,我就觉得很奇怪,你的课要是讲的好,同学又怎么会不来听课呢,殊不知:“误人子弟,乃是犯罪!”啊。好了,那么我们现在来看老师这个点名过程是如何实现吧:1、老规矩,我们先定义老师(Teacher)接口类:public interface Teacher {   

2016-05-30 06:41:26 250

原创 Java外观模式(Facade模式)

外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面。Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作:public class DBCompare { Connection conn = null; PreparedStatement prep = null; ResultSet rset = null; try {  

2016-05-30 06:40:12 263

原创 Java代理模式(Proxy模式)

理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣。Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy是代理的意思,我们也许有代理服务器等概念,代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理。设计模式中定义:为其他对象提供一种代理以控制对这个对象的访问。为

2016-05-30 06:39:11 382

原创 Java适配器模式(Adapter模式)

适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份。为何使用适配器模式我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,但是如果我们没有源代码,或者,我们不愿意为了一个应用而修改各自的接口。 怎么办?使用Adapter,在这两种接口之间创建一个混合接口(混血儿)。

2016-05-29 08:07:16 256

WINCE 6.0 TTS 语音合成(朗读)

ejTTS 6.0 特性 支持多种规模的音库,满足各类需求; 支持合成语音的不同采样率、比特率、格式输出; 支持用户定制化需求; 支持多种压缩参数和谱参数引擎; 支持动态音频参数规划; 支持流式文本输入; 支持进度通知; 支持同步回显拼音输出; 全新架构,具有高可靠的稳定性。 2.2. 高品质的语音合成效果 由于采用了新的语音合成算法,ejTTS 在合成效果上已经接近传统大语料库语音合 成算法的效果,与以往的嵌入式语音合成软件相比,合成语音更加自然和流畅。 由于采用了一体化的智能文本分析算法,结合统计和规则等处理手段,ejTTS 的文 本处理前端拥有较强的分词、多音字、韵律环境预测能力,以及自动识别和处理日 期时间、数值金额、电话号码等文本的能力。 针对文本变化范围可事先预知的领域,谱参数引擎可根据用户需求,通过制作定制 音库和优化文本分析的方法,使得合成效果更为准确和自然。 2.3. 极低的资源需求 整体软件架构的设计紧凑高效; 软件开发过程中,在合成算法、数据结构、代码编写等不同层面都进行了深入优化; 资源的结构设计也非常精巧,既降低了资源的尺寸,又提升了资源访问的效率。

2012-06-21

空空如也

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

TA关注的人

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