摘要: 定义:观察者模式定义了一系列对象之间的一对多关系,当一个对象的状态改变时,它的所有依赖者都会收到通知并自动更新。假设我们这里有个新闻订阅中心,提供了两种新闻类型的订阅,一种是娱乐新闻,一种是科技新闻,每一位用户都可以在这里订阅,只要有新的新闻就会推送给他们的订户,当然你也可以取消订阅。怎么去实现这个功能呢,首先我们考虑订户。我们可以将所有的订户抽象成一个接口例如:public interface Subscriber { public void showNews(String funNews, String scienceNews);}所有的订户都必须实现这个接口,这个接口里只定义了sh... 阅读全文
posted @ 2014-02-06 23:22 xiaoz_ 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 转:http://www.blogjava.net/zhuxing/archive/2008/08/08/220841.htmlJava类加载原理解析1基本信息摘要:每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助。由于关于java类加载的内容较多,所以打算分三篇文章 阅读全文
posted @ 2013-10-01 00:03 xiaoz_ 阅读(1560) 评论(0) 推荐(0) 编辑
摘要: 插入排序: 思路:设有一组关键字{k1,k2,k3,...},排序一开始就认为k1是一个有序序列,让k2插入上述表长为1的有序序列,使之成为表长为2的有序序列,然后让k3插入上述表长为2的有序序列,使之成为表长为3的有序序列,以此类推,最后让kn插入上述表长为n-1的有序序列,得到一个表长为n的有序序列。#include <iostream>using namespace std;void InsertSort(int a[], int size);void main(){ int a[]={2,3,1,8,6,5,9,4,7}; for(int j=0;j<9;j++) . 阅读全文
posted @ 2012-06-03 15:50 xiaoz_ 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 进程是处于运行过程中的程序,具有一定独立功能,它是系统进行资源分配和调度的一个独立单位。继承Thread类创建线程类:1定义Thread类的子类,重写该类的run方法,该run方法的方法体就代表了线程需要完成的任务。2创建Thread类的子类的实例,也就是创建了线程对象。3用线程对象的start方法来启动该线程。例子:public class FirstThread extends Thread{ private int i; //重写run方法,该run方法的方法体就代表了线程需要完成的任务。 public void run() { for(;i<100... 阅读全文
posted @ 2012-06-01 19:27 xiaoz_ 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 问题:如何检查一个单向链表上是否有环?解答:1,将所有的遍历过的节点用某个结构存储起来,然后每遍历一个节点,都在这个结构中查找是否遍历过,如果找到有重复,则说明该链表存在循环;如果直到遍历结束,则说明链表不存在循环。这个结构我们可以使用hash来做,hash中存储的值为节点的内存地址,(java中可以用object.hashcode()做为key放在一个hashtable中. 这样当hashtable中出现重复key的时候说明此链表上有环)这样查找的操作所需时间为O(1),遍历操作需要O(n),hash表的存储空间需要额外的O(n)。所以整个算法的时间复杂度为O(n),空间复杂度为O(n)。2 阅读全文
posted @ 2012-04-27 10:46 xiaoz_ 阅读(627) 评论(0) 推荐(0) 编辑
摘要: operator是C++的一个关键字,它和C++的运算符连用,构成一个运算符函数名,例如operator++(),operator++在这里就是一个函数名。现在我们有一个num类:class num{public: num(){} ~num(){} set,get方法private: int n;};创建num类的一个对象:num i;如果我们在程序中想通过++i来实现对象i的成员n的自加,那么我们就必须要重载前置自加运算符,我们可以简单的定义为如下形式:void operator++(){++n;}关键字operator的前面是它的返回类型,后面的++表示重载的是++... 阅读全文
posted @ 2012-04-22 10:23 xiaoz_ 阅读(556) 评论(0) 推荐(0) 编辑
摘要: AWT中常用的布局管理器有如下几个:FlowLayout, BorderLayout, GridLayout, GridBagLayout, CardLayout,Swing还提供了一个BoxLayout。FlowLayout从左向右排列所有组件,遇到边界就会折回下一行从新开始。它有三个构造器FlowLayout(),FlowLayout(int align)和 FlowLayout(int align, int hgap, int vgap),其中的hgap和vgap代表水平间距和垂直间距,align指的是组件的排列方向(从左向右,从右向左,从中间向两边),我们可以使用FlowLayout的 阅读全文
posted @ 2012-04-19 09:33 xiaoz_ 阅读(7438) 评论(0) 推荐(4) 编辑