JavaApplet (转)

http://baike.baidu.com/view/533192.htm

Applet可以翻译为小应用程序,Java Applet就是用Java语言编写的这样的一些小应用程序,它们可以直接嵌入到网页中,并能够产生特殊的效果。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。
当用户访问这样的网页时, Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络l浏览器。由于Applet是在用户的计算机上执行的,因此它的执行速度不受网络带宽或者Modem存取速度的限制。用户可以更好地欣赏网页上Applet产生的多媒体效果。
在Java Applet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 Applet还提供了名为抽象窗口工具箱(Abstract Window Toolkit, AWT)的窗口环境开发工具。 AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。目前,在网络上有非常多的Applet范例来生动地展现这些功能,读者可以去调阅相应的网页以观看它们的效果。 <BR>Applet的工作原理.
含有Applet的网页的HTML文件代码中部带有<applet> 和</applet>这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。

编辑本段例子

带有一个Applet的主页
<html>
<title> An Example Homepage </title>
<h1> Welcome to my homepage! </h1>
This is an example homepage, you can see an applet in it。
<p> <br>
<applet code=“Example.class” width = 300 height=300>
<param name = img value=”example.gif”>
</applet>
</html>
上面这个例子就是一个简单主页的HTML文件代码。代码第五行中的<p>,是为了确保Applet出现在新的一行,若没有它, Applet将会紧接着上一行的最后一个单词出现。代码第六、七两行是关于Applet的一些参数。其中第六行是必需的Applet参数,定义了编译后的包含Applet字节码的文件名,后缀通常为“.class”;和以象素为单位的Applet的初始宽度与高度。第七行则是附加的Applet参数,它由一个分离的标记来指定其后的名称和值,在这里是img的值为“example.gif’,它代表了一个图形文件名。
Applet的下载与图形文件一样需要一定的时间,若干秒后它才能在屏幕上显示出来。等待的时间则取决于Applet的大小和用户的网络连接的速度。一旦下载以后,它便和本地计算机上的程序以相同的速度运行了。
Applet在用户的计算机上执行时,还可以下载其它的资源,如声音文件、图像文件或更多的Java代码,有些Applet还允许用户进行交互式操作。但这需要重复的链接与下载,因此速度很慢,这是一个亟待解决的问题,可以想到的一个好办法是采用类似高速缓存的技术,将每次下载的文件都临时保存在用户的硬盘上,虽然第一次使用时花的时间比较多,但当再次使用时,只需直接从硬盘上读取文件而无需再与Internet连接,便可以大大提高性能了。
import java.awt.*;
import java.applet.*;
public class HelloApplet extends Applet{
public void paint(Graphics g){
g.drawString(“Helloworld!”,50,25);
}
}
<!–程序文件名称为HelloApplet.html–>
<HTML>
<HEAD>
<TITLE>  HTML Test Page
</TITLE>
</HEAD>
<BODY>
HelloApplet will appear below in a Java enbaled broswer.<BR>
<APPLET
CODEBASE=”.”
CODE = “HelloApplet.class”
NAME = “TestApplet”
WIDTH = 400
HEIGHT = 300
HSPACE = 0
VSPACE = 0
ALIGN = middle
>
</APPLET> 
</BODY>
</HTML>

//

Posted in 软件测试 | Leave a comment

转 java 进程与线程的区别

以下内容摘自

http://www.cnblogs.com/200911/archive/2012/07/16/2594143.html

进程与线程

理解进程与线程:

1.DOS有一个明显的特点,就是一旦病毒入侵,系统就会死机,因为传统的DOS系统是单进程处理方式,所以只有一个程序运行,其它程序无法运行。

而windows系统中,即使出现病毒,系统照样可以使用,因为windows系统是采用多进程处理方式,在同一个时间段上会有多个程序在运行。

2.对于word来说每次启动一个word实际上都是在操作系统上分配一个进程。而线程实际上是在进程的基础上进一步划分,从word来看可以把拼写检查当做一个线程进行处理。当然会同时存在多个线程。

3.如果一个进程没有了,线程一定会消失;但线程消失了,进程未必会消失。而且线程都是在进程的基础上并发同时运行。

4.下面来看进程与线程的概念:

进程是程序的动态执行过程,它经历了从代码加载,执行,到执行完毕的一个完整过程。这个过程也是进程本身从产生、发展,到最终消亡的一个过程。

多线程是实现并发机制的一个有效手段。进程和线程一样都是实现并发的基本单位。

理解多线程:如果现在同时有多个任务,则所有的系统的资源是共享的,被所有线程所公用,但是程序处理需要CPU,传统单核CPU来说同一个时间段会有多个程序执行,但是在同一个时间点上只能存在一个程序运行,也就是说所有的程序都要抢占CPU资源。但是当CPU已经发展到多核的状态了,在一个电脑上可能会存在多个CPU,这个时候就可以非常清楚的发现多线程操作间是如何进行并发的执行的。

5.java实现多线程:

两种方式:(1)继承Thread

      (2)实现Runnable接口

先调用start方法,在执行run方法。这是为什么呢?打开Thread的类定义,在jdk的src.zip中全部是java的源程序代码,直到找到java.lang.Thread类的定义:

  public synchronized void start(){

      if(threadStatus != 0)

    throw new IllegalThreadStateException();

  start0();

  if(stopBeforeStart){

    stop0(throwableFromStop);

  }

  }

 private native void start();

 start()方法可能抛出异常。

stopBeforeStart是一个boolean型变量,native关键字表示由java调用本机操作系统函数的一个关键字。在java中,运行java程序调用本机的操作系统的函数已完成特定的功能。

证明:如果现在要想实现多线程的话,则肯定需要操作系统的支持,因为多线程操作系中牵涉到一个抢占CPU的情况,要等待CPU进行调度,这一点肯定需要操作系统的底层支持,所以使用了native调用本机的系统函数。而且在各个操作系统中实现底层代码肯定是不同的,所以使用native关键字也可以让JVM自动调整不同的JVM实现。

threadStatus也表示一种状态,如果线程已经启动了在调用start方法的时候就有可能产生异常。

继承Thread实现多线程:

  class myThread extends Thread{

    private String name;

    public myThread(String name){//通过构造方法配置name属性

      this.name = name;

    }

    public void run(){//重写run方法

      for(int i = 0;i<10; i++){

        System.out.println(name +”运行,i=”+i);

      }

    }

  }

   public class ThreadDemo{

    public static void main(String []args){

      myThread mt1 = new MyThread(“线程A”);//实例化对象

      mt1.start();//调用线程主体

      mt1.start();//异常

    }

  }

 Runnable接口:在java中可以通过实现Runnable接口的方式实现多线程,Runnable接口中只定义了一个抽象的方法。public void run();

在Runnable中并没有start()方法,那么怎样才能使用start()方法呢?在Thread类中有构造方方法public Thread(Runnable target ){}利用此构造方法启动多线程。

 class MyThread implements Runnable{

  private String name;

  public MyThread(String name){

    this.name = name; 

  }

  public void run(){

    for(int i = 0;i<10;i++){

      System.out.Println(name+”运行,i = “+i);

    }

  }

 }

public class myThreadDemo{

  public static void main(String []args){

    MyThread mt1 = new MyThread(“线程A”);//实例化对象

    MyThread mt2= new MyThread(“线程B”);

    Thread t1 = new Thread(mt1);//实例化Thread类对象

    Thread t2 = new Thread(mt2);

    t1.start();//启动多线程和

    t2.start();

  }

}

 Thread类与Runnable接口的联系:

  Thread 定义:

  public class Thread extends Object implements Runnable 发现Thread类也是Runnable接口的子类,使用了代理的机制完成。

Thread类与Runnable接口的区别:

     使用Thread类操作多线程的时候无法达到资源共享的目的,而使用Runnable接口实现的多线程操作可以实现资源共享。

Thead类与Runnable接口的使用结论:

实现Runnable接口比继承Thread类有如下明显的优点:

  (1)适合多个相同程序的代码的线程去处理同一个资源。

  (2)可以避免由于单继承局限所带来的影响。

  (3)增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。  

线程的状态:

  创建状态:准备好了一个多线程对象:Thread t = new Thread();

  就绪状态:调用了start()方法,等待CPU进行调度。

  运行状态:执行run方法

  阻塞状态:暂时停止执行,可能将资源交给其他线程使用。

  终止状态:(死亡状态):线程执行完毕了,不再使用了。

Posted in 软件测试 | Leave a comment

常见linux发行版介绍

常见linux介绍

  目前我们所能接触到的linux主要有Red Hat、Slackware、Debian、SuSE、OpenLinux、TurboLinux、Red Flag、Mandarke、
BluePoint等。
  (1)Red Hat http://www.redhat.com
  以容易安装著称,初学者安装这个版本,遇到挫折的机会几乎是零,如果您对安装Win9x已驾轻就熟的话,Red Hat Linux的安装一定难不倒您。
  Red Hat另一个优点是它的RPM(Red Hat Package Manager);以往在安装软件时,最让使用者伤脑筋的是:软件在解开压缩前先要新建一个目录,然后将软件搬进去解压,解压后,有些部份可能需要搬到另一个目录中去,当要搬移的项目多时,做这些工作就是件苦差事了。而RPM「包裹管理者」就针对这一点,能将所有要安装的路径全部安排好,当使用者解开有「.rpm」扩展名的文件时,会将当初打包该文件时设定好的路径档案先检查一次,然后依照档案里的设定,将各个文件解开,送到它们应该去的地方;不只如此,它还会制作安装记录,当使用者要移除其中任一个rpm文件时,系统会根据安装记录将该文件反安装,这种做法绝对准确,不会像Windows那样会移除不该拿掉的东西。
  Red Hat Linux可以说是相当成功的一个产品,Red Hat公司有「官方版本」(official)供使用者购买,也提供了自由的FTP站供大众直接下载,官方版本与自由下载版本差异在于,官方版本多提供了一些商用软件和印刷精美的说明书。
  (2)Slackware http://www.cdrom.com
  这是个老字号的门派了,前几年玩Linux的人,几乎都用这套系统。它可完全「手工打造」个人需求的特性,让很多目前已是高手级的玩家仍念念不忘,Slackware在国内用得很多,也许用来做服务器,性能会好些。最新版本安装的过程已改善了不少,各位想要「完全掌控」情况的朋友可以一试。
  (3)Debian http://www.debian.org
  您通常会在Debian字眼后看见GNU Linux的字样,该派别目前是大家公认的结构最严谨、组织发展最整齐的,它也有一个包裹管理系统称之为「dpk」(Debian Package),所作的事情和Red Hat的「rpm」异曲同工,使整体文件的管理更加方便。Debian的原始程序代码都是遵循GNU的方式开放的,所以它完全符合开放原代码精神,不像其它的Linux都或多或少的保留了一部份程序代码不开放(Red Hat是直到6.0版才全部开放的)。最新版本有一部份程序设计师,将Debian移植到其它平台上,所以也可以在其它平台上看见其踪影。
  (4)SuSE http://www.suse.com
  这是一套在欧洲相当受欢迎的版本,它和XFree86合作开发x86上 的X Server。SuSE安装时可以选择显示德文或英文,它还有自己的一套设定程序叫做「SaX」,可以让使用者较方便的设定,它的安装套件也采用RPM模式,所以要安装、升级与移除程序都非常方便,目前版本8.0。
  (5)OpenLinux http://www.caldera.com
  这是由Caldera公司推出的版本,并不是很「Open」的一个版本,网上可以下载其Lite版本, 但正式版本是要money的,因为整个套件中有许多商用软件,所以并没有提供网络下载的服务。
  (6)TurboLinux http://www.pacific.com
  由Pacific HiTech公司发展的套件,该套件在日本市场占有一席之地,从安装到使用接口都是日文的,在国内它与清华大学及研究机构合作研发了中文版本,在国内造成了一股Linux潮流,目前已推出7.0的简体版本,8.0的日文版本。
  (7)Red Flag http://www.redflag-linux.com
  这是由中科红旗软件技术有限公司推出的中文版本的linux,该linux在众多的中国linux用户中占有一定的比例。可以从网络上下载其红旗桌面版。目前桌面版的最高版本为3.2。同时红旗针对服务器市场,专门推出了红旗服务器版本,其目前最高版本为3.0。
  (8)Mandarke Linux
  它的吉祥物是一个黑色的魔术帽,它其实参照了Redhat的基础上制成的,它继承了许多Redhat的优点,还加上了许多迎合Linux初学者的功能,如美丽的图形化安装界面。7.0版本开始走向成熟,赢得了不少用户。而且现在自从推出8.0 8.1以及8.2版后,使得Mandarke也获得了较高的用户占有率。刚从Windows中走出来的朋友,可以一试。挺不错的。
  (9)BluePoint Linux
  我觉得是这做得最成功的一款中文Linux发行版,说心里话,蓝点还是挺有创新,挺挖得深的一个Linux厂商。但是其稳定性不是太好,我觉得适于桌面,不适于做务器。不过蓝点不再出新版本了,目前的版本为BluePoint 2.0

Posted in Linux, 操作系统 | Tagged , , | Leave a comment