摘要: Gof 定义保证一个类仅有一个实例,并提供一个该实例的全局访问点。理解单例设计模式,我看到好像网上也有叫他作单件设计模式。其实故名思义,就是只能产生一个对象。在我们的生活中单例设计模式是很常见的,例如地球是唯一的。好像我前不久看的一部连续剧爱情公寓里说一颗宝石--沙漠之星,那个也是唯一的。还有你自己本身也是唯一,地球上没有一个和你完全一样的人。最简单的单例设计模式CODEnamespace ConsoleApplication1{ class Program { static void Main(string[] args) { /... 阅读全文
posted @ 2012-09-20 12:32 春天又来了 阅读(278) 评论(0) 推荐(0) 编辑
摘要: Gof定义为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。UML图理解 外观设计模式又叫门面设计模式,如果你在网上看到门面设计模式,其实都是一样的。感觉外观模式很简单,好像也没什么好讲的。在《大话设计模式》里举了这么一个例子,有一个股民在买股票,面对成千上万种类型的股票不知道怎么选择好,这时如果有一个股票的经理人,他有多年丰富的经验,你把钱给他,他帮你买股票,那么事情就简单多了。这里的那个多年丰富经验的股票经理人就是Facade(门面,外观)。我们通过直接跟股票经理人打交道,而具体要做的事情由股票经理人去处理就行。Cod 阅读全文
posted @ 2012-09-20 09:56 春天又来了 阅读(255) 评论(0) 推荐(0) 编辑
摘要: Java分别为UDP和TCP两种通信协议提供了相应的编程类,这些类存放在java.net包中,与UDP对应的是DatagramSocket,与TCP对应的是ServerSocket(用于服务器端)和Socket(用于客户端); 理解 《Java就业培训》有几段话讲的很好,关于理解网络数据传递的。DatagrameSocket的就好像一个码头,DatagramePacket就好像码头的货物(包),数据传递就好像将一批货物从一个码头运到另一个码头。在运货的过程中需要指定运到哪个码头,即是所谓的IP地址。具体要运到谁手里即是加一个端口。 有一点要注意一下,DatagramePacket有下... 阅读全文
posted @ 2012-09-19 20:22 春天又来了 阅读(313) 评论(0) 推荐(0) 编辑
摘要: Gof定义提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露该对象的内部表示。理解我们实际上经常用到迭代器模式,例如FOREACH语句,就是对迭代器模式的实现,泛型像LIST也是对迭代器模式的实现。关于迭代器模式在实际应用中很广泛,但他已经渐渐的融入到我们的编程语言语法中的其中一部份,所以实际上可能不需要再自己要动手写一个迭代器模式了。但是大概去了解一下内部实现原理,我觉的还是很值得的。示例代码View Code /// <summary>/// 集合结构接口/// </summary>public interface Aggregate{ Iterator C 阅读全文
posted @ 2012-09-17 09:46 春天又来了 阅读(251) 评论(0) 推荐(0) 编辑
摘要: Applet是在游览器执行Java程序的,他类似于插件,例如像ActiveX插件。Applet程序里运行的是各种不同的AWT方法,例如drawString。 简单的了解一下Applet的应用,先来运行一段简单的Applet小程序import java.applet.Applet;import java.awt.Graphics;public class test1 extends Applet { public void paint(Graphics g){ g.drawString("Hello Java", 0, 30); }} 首先一个类... 阅读全文
posted @ 2012-09-13 15:04 春天又来了 阅读(659) 评论(0) 推荐(0) 编辑
摘要: 这一篇说一下生产者与消费者问题,这是操作系统里有比较经典的问题。在操作系统里生产者与消费者问题是解决进程同步问题提出来的一种方法,但在线程里同样适用。我们先来想一下,为什么要提出生产者与消费者问题? 和操作系统一样,JAVA多线程的生产者与消费者问题一样是为解决同步而产生的,可是解决同步上一篇里面用synchronized,做一个标志位已经做到了。还要生产者和消费者问题干什么。synchronized来做到的线程同步解决不了实际上的需求,例如一家物流公司进行运货,他不可能来一件货物,他就马上叫司机把这件货物运到指定的地方。而是将一批批货物,积压到一定的需求,进行分类,然后叫司机去运这些货... 阅读全文
posted @ 2012-09-11 12:37 春天又来了 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 例如上一篇的售票的例子,可能会打印出负数的票,主要的原因是由于线程之间的切换。要避免这个问题,必须在卖票的时候加一个限制,指定此时此刻只有等这个售票点卖完票,其他售票点才能卖票。 看一下出现问题的情况public class test9 { public static void main(String[] args) { TestThread t = new TestThread(); new Thread(t).start(); new Thread(t).start(); new Thread(t).start()... 阅读全文
posted @ 2012-09-10 08:28 春天又来了 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 简单的了解一下JAVA的多线程后,觉的C#好像做的更好,C#通过委托的方式来实现多线程,当然JAVA实现多线程也很方便,但还是觉的C#做的更好。那么什么是多线程?一个进程中又可以包含一个或多个线程,一个线程就是一个程序内部的一条执行线索,如果要一程序中实现多段代码同时交替运行,就需要产生多个线程。 线程的生命周期 新建→运行→中断→死亡 中断有: 1.当前线程切换到另一个线程时发生 2.执行sleep时 3.执行wait方法时,调用wait方法使线程进入等待后,如果想让他开启必须调用notify方法 看一下单线程的情况,发现运行的结果他在线程MAIN里publi... 阅读全文
posted @ 2012-09-08 20:15 春天又来了 阅读(866) 评论(0) 推荐(0) 编辑
摘要: 一.谁在做Garbage Collection?在C++里,释放内存是手动处理的,要用delete运算符来释放分配的内存。这是流行的说法。确切地说,是应用认为不需要某实体时,就需用delete告诉系统,可以回收这块空间了。这个要求,对编码者来说,是件很麻烦、很难做到的事。随便上哪个BBS,在C/C++版块里总是有一大堆关于内存泄漏的话题。Java采用一种不同的,很方便的方法:Garbage Collection。Java垃圾回收机制放在JVM里。JVM完全负责垃圾回收事宜,应用只在需要时申请空间,而在抛弃对象时不必关心空间回收问题。二.对象在啥时被丢弃?在C++里,当对象离开其作用域时,该对象 阅读全文
posted @ 2012-09-06 14:47 春天又来了 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 控制台输入 我不是很清楚为什么,Java的DOS控制台的输入会加一下TRY…CATCH,很多其他编程语言里没有过这样。虽然看到JDK 1.5后有增加了一个新类Scanner将System.in做了一个包装的样子后不需要再TRY…CATCH。但用起来还是感觉还是不太好!来看一下报错的输入,像这段程序是会报错了。报错的原因是:test8.java:6: 未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出。View Code public class test8{ public static void main(String[] args) { int x;... 阅读全文
posted @ 2012-09-06 14:36 春天又来了 阅读(329) 评论(0) 推荐(0) 编辑