一个经典的JAVA APPLET程序(二)

简单Java Applet程序的编写 Java Applet 程序与其他java程序相比的不同点在于 1.在书写方面 (1)需要在.java文件中的加入import java.awt.Graphics,显示输出时需要用到Graphics类的对象;import java.applet.Applet,Applet 类是所有Java Applet的父类 (2)除了.java文件外,还必须编写一个html文件,Java Applet 程 阅读详情

接着上面的部分,下面是APPLET主程序部分:

public class MyClock extends Applet implements Runnable
{
    static final int BACKGROUND=0;              //背景图片的序号,供数组使用
    static final int LOGO=1;                    //LOGO图片的序号,供数组使用
    static final String JAVEX="bear";          //表盘上显示的文字
    static final double MINSEC=0.104719755;     //分针和秒针在表盘上的刻度(60个)间的弧度
    static final double HOUR=0.523598776;       //时针在表盘上的刻度(24个)间的弧度

    Thread clockThread = null; //使用多线程机制,用另一个线程不断显示图片

    //提供的默认参数,如果HTML文件里面没有给参数就使用
    int width = 100;
    int height = 100;
    Color bgColor = new Color(0,0,0);
    Color faceColor = new Color(0,0,0);
    Color sweepColor = new Color(255,0,0);
    Color minuteColor = new Color (192,192,192);
    Color hourColor = new Color (255,255,255);
    Color textColor = new Color (255,255,255);
    Color caseColor = new Color (0,0,0);
    Color trimColor = new Color (192,192,192);
    String logoString=null;

    Image images[] = new Image[2]; //背景和LOGO的图片

    boolean isPainted=false; //如果第一次载入时绘制背景及表盘,其他时候重绘则只绘制指针

    //时钟圆心的位置
    int x1,y1;

    //最上面那个三角形的刻度图形的坐标
    int xPoints[]=new int[3], yPoints[]=new int[3];

    //保存当前时间,转换成(double)(hours + minutes/60)
    Hms cur_time;

    //秒针、分针、时针
    SweepHand sweep;
    HmHand  minuteHand,
            hourHand;

    //用于绘制的时、分、秒
    double lastHour;
    int lastMinute,lastSecond;

    //显示日期和表盘上的字母的字体
    Font font;

    //图片显示使用了缓冲机制,offScrImage和offScrGC存放缓冲区内图片的信息
    Image offScrImage;
    Graphics offScrGC;

    //用于测试背景图片和LOGO图片
    MediaTracker tracker;


    int minDimension;   // 如果背景区域不是正方形的话,保证时钟在中间显示
    int originX;        // 时钟图形所在正方形区域的左上角X坐标
    int originY;        // 时钟图形所在正方形区域的左上角Y坐标

    double tzDifference=0;  //时区间的差,向西为负数,向东为正数

    boolean localOnly=false; //是否只使用本地时间,如果为FALSE则可以根据传入的时区显示该时区时间


    //保存参数的类型说明
    public String[][] getParameterInfo()
    {
        String[][] info = {
            {"width",       "int",      "APPLET的长度,以象素为单位"},
            {"height",      "int",      "APPLET的宽度,以象素为单位"},
            {"bgColor",     "string",   "背景颜色,e.g FF0000"},
            {"faceColor",   "string",   "表盘颜色"},
            {"sweepColor",  "string",   "秒针颜色"},
            {"minuteColor", "string",   "分针颜色"},
            {"hourColor",   "string",   "时针颜色"},
            {"textColor",   "string",   "文本颜色"},
            {"caseColor",   "string",   "框内颜色"},
            {"trimColor",   "string",   "空白区颜色"},
            {"bgImageURL",  "string",   "背景图片地址"},
            {"logoString",  "string",   "LOGO字符"},
            {"logoImageURL","string",   "LOGO图片地址"},
            {"timezone",    "real",     "时区间的差"},
            {"localonly",   "int",      "是否考虑到时区差别"}
        };
        return info;
    }

    //显示信息
    public String getAppletInfo()
    {
        return "版权所有,COPY必究,保护正版,人人有责";
    }

    void showURLerror(Exception e) 
    {
        String errorMsg = "URL错误:"+e;
        showStatus(errorMsg);
        System.err.println(errorMsg);
    }

    //相当于把时钟变成100×100的大小,percent即相对坐标
    private int size(int percent)
    {
        return (int)((double)percent/100.0 * (double)minDimension);
    }

    public void init()
    {
        URL imagesURL[] = new URL[2];
        String szImagesURL[] = new String[2];
        tracker = new MediaTracker(this);
       
        //得到HTML页面提供的参数,并把它转换相应的格式
        String paramString    = getParameter( "WIDTH"  );
        if( paramString != null )
            width = Integer.valueOf(paramString).intValue();

        paramString   = getParameter( "HEIGHT" );
        if( paramString != null )
            height = Integer.valueOf(paramString).intValue();

       paramString   = getParameter( "TIMEZONE" );
        if( paramString != null )
            tzDifference = Double.valueOf(paramString).doubleValue();

       paramString  =   getParameter( "LOCALONLY" );
        if( paramString != null && Integer.valueOf(paramString).intValue() != 0){
                localOnly=true;
                tzDifference=0.;
        }

        paramString    = getParameter( "BGCOLOR");
        if( paramString != null )
            bgColor=parseColorString(paramString);

        paramString    = getParameter( "FACECOLOR");
        if( paramString != null )
            faceColor=parseColorString(paramString);

        paramString    = getParameter( "SWEEPCOLOR");
        if( paramString != null )
            sweepColor=parseColorString(paramString);

        paramString    = getParameter( "MINUTECOLOR");
        if( paramString != null )
            minuteColor=parseColorString(paramString);

        paramString    = getParameter( "HOURCOLOR");
        if( paramString != null )
            hourColor=parseColorString(paramString);

        paramString    = getParameter( "TEXTCOLOR");
        if( paramString != null )
            textColor=parseColorString(paramString);

        paramString    = getParameter( "CASECOLOR");
        if( paramString != null )
            caseColor=parseColorString(paramString);

        paramString    = getParameter( "TRIMCOLOR");
        if( paramString != null )
            trimColor=parseColorString(paramString);

        logoString  = getParameter( "LOGOSTRING");
        if( logoString == null )
            logoString=JAVEX;
        else if(logoString.length() > 8)
            logoString= logoString.substring(0,8); //限制8个字母,否则显示不下!

        //szImagesURL数组根据HTML传入参数存放图片的文件名
        szImagesURL[BACKGROUND]  = getParameter("BGIMAGEURL");
        szImagesURL[LOGO] = getParameter("LOGOIMAGEURL");

        //测试图片
        for(int i=0; i<2; i++){
            if(szImagesURL[i] != null){
             //根据CodeBase参数与Image文件名得到image的路径,测试是否存在,如果不存在就不用图片
                try{
                    imagesURL[i]=new URL(getCodeBase(),szImagesURL[i]); 
                } catch (MalformedURLException e)
                    {
                        showURLerror(e);
                        imagesURL[i]=null;
                        images[i]=null;
                    }
                if(imagesURL[i] != null){
                    showStatus("加载图片: " + imagesURL[i].toString());
                    images[i]=getImage(imagesURL[i]);
                    if(images[i] != null)
                        tracker.addImage(images[i],i);
                    showStatus("");
                }
                try{
                    tracker.waitForAll(i);
                }catch (InterruptedException e){}
            }
            else images[i]=null;
        }

        //得到相应时区的时间
        cur_time=(localOnly)? new Hms() : new Hms(tzDifference);
        lastHour=-1.0;
        lastMinute=-1;
        lastSecond=-1;

        x1=width/2;
        y1=height/2;

        //换算出圆形时钟在背景里的左上角坐标
        minDimension= Math.min(width, height);
        originX=(width-minDimension)/2;
        originY=(height-minDimension)/2;

        //计算出上面三角形的三个点的坐标
        xPoints[1]=x1-size(3); xPoints[2]=x1+size(3); xPoints[0]=x1;
        yPoints[1]=y1-size(38);yPoints[2]=y1-size(38); yPoints[0]=y1-size(27);

        //计算出秒针、分针、时针图形的各个点坐标
        sweep=new SweepHand(x1,y1,size(40),3);
        minuteHand=new HmHand(x1,y1,size(40),size(6),6);
        hourHand=new HmHand(x1,y1,size(25),size(8),6);

        //构造字体
        font=new Font("TXT",Font.BOLD,size(10));

        //构造缓冲区内图形
        offScrImage = createImage(width,height);
        offScrGC = offScrImage.getGraphics();

        System.out.println(getAppletInfo());
    }

    public void start() //开始启动显示线程
    {
        if(clockThread == null){
            clockThread = new Thread(this);
        }
        clockThread.start();       
    }

    public void stop() //停止显示
    {
        clockThread = null;
    }

    private void drawHands(Graphics g)
    {

        double angle;
        int i,j;
        int x,y;

        angle=MINSEC * lastSecond; //根据lastSecond算出秒针相对于12点刻度的角度
        sweep.draw(faceColor, angle, g);//画出秒针

        //如果时与分改变则重绘时针分针
        if(cur_time.getMinutes() != lastMinute){
            minuteHand.draw(faceColor,MINSEC*lastMinute,g);
            if(cur_time.get_hours() != lastHour)
                hourHand.draw(faceColor,HOUR*lastHour,g);
        }

        g.setColor(textColor);
        g.fillRect(originX+size(12),y1-size(2),size(10),size(4)); //绘制左侧横条
        g.fillRect(x1-size(2),originY + minDimension-size(22),size(4),size(10)); //绘制下面的横条
        g.fillPolygon( xPoints, yPoints, 3); //绘制顶部的三角形
        for(i=1;i<12;i+=3) //在表盘的2、3、5、6、8、9、11时针刻度区绘制圆
            for(j=i;j<i+2;j++){
                x=(int)(x1+Math.sin(HOUR*j)*size(35));
                y=(int)(y1-Math.cos(HOUR*j)*size(35));
                g.fillOval(x-size(3),y-size(3),size(6),size(6));
            }

        //设置字体
        g.setFont(font);
        FontMetrics fm=g.getFontMetrics();

        //画顶部的LOGO字符串
        g.drawString(logoString,x1-fm.stringWidth(logoString)/2,y1-size(12));

        //得到日期
        String day=Integer.toString(cur_time.getDate(),10);

        //将日期绘制在表盘右侧
        g.drawString(   day,
                        originX + minDimension-size(14)-fm.stringWidth(day),
                        y1+size(5));

        //外面画上框子
        g.drawRect( originX + minDimension-size(14)-fm.stringWidth(day)-size(2),
                    y1-size(5)-size(2),
                    fm.stringWidth(day)+size(4),
                    size(10)+size(4));

        if(images[LOGO] != null){ //如果LOGO图片存在,在底部画出来
            x = originX + (minDimension-images[LOGO].getWidth(this))/2;
            y = y1 + (minDimension/2 - size(22) - images[LOGO].getHeight(this))/2;
            if(x > 0 && y > 0)
                offScrGC.drawImage(images[LOGO], x, y, this);
        }

        lastHour=cur_time.get_hours();
        hourHand.draw(hourColor,HOUR*lastHour,g); //画时针

        lastMinute=cur_time.getMinutes();
        minuteHand.draw(minuteColor,MINSEC*lastMinute,g); //画分针

        g.setColor(minuteColor); //绘制分针尾部的圆形
        g.fillOval(x1-size(4),y1-size(4),size(8),size(8));
        g.setColor(sweepColor); //绘制秒针尾部的圆形
        g.fillOval(x1-size(3),y1-size(3),size(6),size(6));

        lastSecond=cur_time.getSeconds(); //得到新的秒数,重画
        angle=MINSEC*lastSecond;
        sweep.draw(sweepColor, angle,g);

        g.setColor(trimColor);
        g.fillOval(x1-size(1),y1-size(1),size(2),size(2)); //秒针尾部圆心部分应该是螺丝,挖空处理^_^
    }

    private Color parseColorString(String colorString) //参数传入为字符串形(规定为16进制6位字符串)
    {
        if(colorString.length()==6){
            int R = Integer.valueOf(colorString.substring(0,2),16).intValue(); //前两位为R值
            int G = Integer.valueOf(colorString.substring(2,4),16).intValue(); //中间为G值
            int B = Integer.valueOf(colorString.substring(4,6),16).intValue(); //最后为B值
            return new Color(R,G,B); //得到COLOR
        }
        else return Color.lightGray; //字符串不符合规范,默认为灰色
    }

    public void run()
    {
        repaint(); //每次启动时首先重绘一次
        //每隔500ms获得现在时间并重绘一次
        while(null != clockThread){
            cur_time= (localOnly)? new Hms() :new Hms(tzDifference);
            repaint();

            try{
                Thread.sleep(500);
            } catch (InterruptedException e) {}
        }
    }

    public void paint(Graphics g) //首先绘制缓冲区内图片,再显示出来
    {
        int i,x0,y0,x2,y2;

        //如果没有提供背景图片,则用bgColor绘制背景
        if(images[BACKGROUND] == null){
            offScrGC.setColor(bgColor);
            offScrGC.fillRect(0,0,width,height);
        }
        else //否则直接使用背景图片
            offScrGC.drawImage(images[BACKGROUND], 0, 0, this);

        //绘制外框到表盘间的部分
        offScrGC.setColor(caseColor); 

        //将园形的范围适量缩减(不充满整个区域),防止有些地方被截取
        offScrGC.fillOval(  originX+1,
                            originY+1,
                            minDimension-2,
                            minDimension-2);

        //绘制表盘
        offScrGC.setColor(faceColor);
        offScrGC.fillOval(  originX + size(5),
                            originY + size(5),
                            minDimension - size(10),
                            minDimension - size(10));

        //绘制外框线
        offScrGC.setColor(trimColor);
        offScrGC.drawOval(  originX+1,
                            originY+1,
                            minDimension-2,
                            minDimension-2);

        //绘制内框线
        offScrGC.drawOval(  originX + size(5),
                            originY + size(5),
                            minDimension - size(10),
                            minDimension - size(10));

        offScrGC.setColor(textColor);

        //画刻度,一共有60个刻度,x0、y0为刻度起始的位置,x1、y1圆心位置,x2、y2为刻度终止位置(x0<x2,y0<y2)
        for(i=0;i<60;i++){
            if(i==0 || (i>=5 && i%5 == 0)){ //每5格绘制一条长线(相对圆心)
                x0=(int)(x1+size(40)*Math.sin(MINSEC*i));
                y0=(int)(y1+size(40)*Math.cos(MINSEC*i));
            }
            else{ //其他部分绘制短线
                x0=(int)(x1+size(42)*Math.sin(MINSEC*i));
                y0=(int)(y1+size(42)*Math.cos(MINSEC*i));
            }
            x2=(int)(x1+size(44)*Math.sin(MINSEC*i));
            y2=(int)(y1+size(44)*Math.cos(MINSEC*i));
            offScrGC.drawLine(x0,y0,x2,y2);
        }

        drawHands(offScrGC); //绘制指针
        g.drawImage(offScrImage,0,0,this); //把生成的缓冲区图形绘制到页面上

        isPainted=true; //使下次UPDATE时不绘制表盘
    }

    public synchronized void update(Graphics g)
    {
        if(!isPainted)  //绘制表盘
            paint(g);
        else{    //已经绘制了表盘,只用绘制指针,首先在缓冲区内绘制,然后显示出来
            drawHands(offScrGC);
            g.drawImage(offScrImage,0,0,this);
        }
    }
}

一个测试用的HTML的例子:

<HTML>
<TITLE>我的时钟程序</TITLE>
<BODY>
<h2>显示东8区的时间</h2>
<p>
<applet code="MyClock.class" width="300" height="300">
  <param name="BGCOLOR" value="FFFFFF">
  <param name="FACECOLOR" value="FFFFFF">
  <param name="SWEEPCOLOR" value="FF0000">
  <param name="MINUTECOLOR" value="008080">
  <param name="HOURCOLOR" value="000080">
  <param name="TEXTCOLOR" value="000000">
  <param name="CASECOLOR" value="000080">
  <param name="TRIMCOLOR" value="C0C0C0">
  <param name="LOGOIMAGEURL" value="java.gif">
  <param name="TIMEZONE" value="8">
</p>
</BODY>
</HTML>

Java学习day086 部署Java程序(三)(applet:一个简单的applet、applet HTML标记属性、使用参数向applet传递信息) 使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。 day086 部署Java程序(三)(applet:一个简单的applet、applet HTML标记属性、使用参数向applet传递信息) ... 阅读详情

相关推荐

多智能体强化学习之值函数分解:VDN、QMIX、QTRAN系列优缺点分析(转载)

关于多智能体强化学习中VDN,QMIX,QTRAN三个算法再值分解方向的研究成果。三个算法呈递进关系

qq_33328642的博客 5859

自认为是博客网页特效代码大全

http://ttq168.bokee.com/3869192.html 

dychenyi的专栏 749

CloudFlare CDN优化延迟

这两天在倒腾一个小网站,因为刚注册的域名还没来得及备案,所以就解析到了国外的服务器临时撸代码。为了防止不必要的麻烦,所以在前端套了CloudFlare,但是延迟就比较感人了,通常在150+左右还时不时的抽风,所以就找了点资料来优化一下这个延迟问题。然后再新增一些CloudFlare的亚太地区节点ip的A解析,有耐心的可以分为电信线路和联通线路,我比较懒,所以只分了境内和默认。众所周知CloudFlare是智齿cname解析的,那么我们今天就要用到这个办法了,这里要注意一下,默认的解析是不能动的。

Zuozi - 网络从业者长见识就来Zuozi.NET 1085

JAVA Applet小应用程序入门

1.Applet 如何运行 不同于 java应用程序,运行applet需要在对应html文件通过&lt;applet&gt;指定applet程序名,即可在浏览器中运行. 2.Applet如何编写 我的工具是 eclipse。新建一个类 该类必须是public且继承Applet。文件名与类名一样 3.Applet类中方法的执行顺序与生命周期 先执行构造方法 再执行init()进行一些数...

八步赶蝉 3万+

技术面试官视角:复盘北航/中科院/哈工大保研机试与面试,他们到底在考察什么?(附真题回忆与评分侧重点)

本文从技术面试官视角解析北航、中科院、哈工大等顶尖院校保研机试与面试的考核逻辑,揭示编程语言限制、题目难度设计等隐藏考察维度,并提供真题回忆与评分侧重点。帮助考生理解面试官的真实意图,掌握应对策略,提升通过率。

weixin_42549496的博客 518

Ubuntu下Charm-Crypto安装

经过一下午的努力终于是把Charm-Crypto给安上了,经过查询资料,大致有三种方案(两坑一可行)。 适用于我的电脑的是Ubuntu 18.04版本。 第一种方案是根据连接https://pypi.org/project/charm-crypto/的教程进行安装,但是该方案的优势在于下载快速,缺陷在于Ubuntu系统仅仅更新到13+版本。 第二种就是网络博客上的介绍,内容与第一种较类似,但是有16+,18+成功的例子,缺点就是bug太多,我大部分时间都耗在了这上边,而且还没有成功。 第三中是github上

Mr.Yi的博客 2284

实验 6 常用系统类的使用

一、实验目的 了解 Java 常用的系统类,包括 Java Applet、字符串类、输入输出流类、数学函数类、日期类、随机数类以及向量类等的基本使用方法。理解 Java 系统类的构成。 二、实验要求 1. 进一步了解 Applet 类。 2. 掌握不同类型的输入输出流类,标准数据流、文件流、数据输入输出流、对象流等。 3. 掌握数学函数类的使用方法。 4. 掌握日期类的使用方法...

liubaoshan的博客 637

[苹果开发者账号]03 申请APPID、苹果开发者账号 常见问题整理

目录:问题持续更新问题一:提示:抱歉,您暂时不能注册问题二:Apple Developer Support提示:联系我们以继续流程 问题一:提示:抱歉,您暂时不能注册 申请苹果开发者账号,应该先注册AppleID,由于很多都是申请的公司使用的苹果开发者账号。一般操作申请动作的人,可能是新手操作,也可能图方便,有些信息会随便填写。 有些人会把姓名填写为,公司的产品、简称、缩写等等。这是不对的。 还有出生日期也会随便乱填。生日如果填写的不对,会被苹果限制使用一些功能的(苹果给的提示不是太明确)。 当生日填写的

专注于技术开发、项目管理 1万+

Java Applet 基础

Java Applet 基础 Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。 如下所示是独立的 Java 应用程序和 applet 程序之间重要的不同: Java 中 Applet 类继承了 java.applet.Applet 类。 App

奋斗的日子最甜美,在科技的海洋里,永无止境。 1039

机器学习入门指南:Jupyter Notebook实战

对于机器学习工程师而言,他们更擅长的是算法、模型、数据探索的工作,而对于工程化的能力则并不是其擅长的工作。Jupyter Notebook生成PMML文件1​​​​​​​。Jupyter Notebook生成PMML文件2​​​​​​​。PySpark Notebook建模 -折线图​​​​​​​。TensorFlowNotebook建模​​​​​​​。R Notebook建模 - 散点图​​​​​​​。PySpark Notebook建模​​​​​​​。R Notebook获取训练数据集​​​​​​​。

datacreating的博客 1975

从OSGB到3DTiles:倾斜摄影数据高效转换实战指南

本文提供了将倾斜摄影OSGB数据高效转换为Web友好的3DTiles格式的完整实战指南。详细介绍了使用开源工具进行转换的步骤,包括环境搭建、核心命令、参数调优及在Cesium中加载与问题排查,旨在帮助GIS开发者和三维应用工程师打通数据到Web展示的最后一公里,实现大规模三维模型的流畅网络发布。

u0v1w2x3的博客 570

【Java】Applet放一张图片并播放音频

【Java】Applet放一张图片并播放音频目的代码小记 目的 Applet放一张图片并播放音频 代码 import java.awt.*; import java.applet.*; public class photo extends Applet { Image img; AudioClip audio; public void init() { img=this.getImage(this.getCodeBase(), "s4.jpg"); audio=this.getAudio

Dershy_的博客 3103

Vue3 - [最强] 超详细 Element Plus 组件库主题颜色进行 “统一全局“ 替换,将默认的蓝色主题色更换为其他自定义颜色,覆盖原来的主题色改为自己的颜色(完美解决主题色不生效、没反应)

elementplus修改主题色,vue3+element-plus主题色更换,vue3vite如何修改扩展elementplus主题色样式,全局设置elementplus主题色,有什么办法可以直接全局修改主题色,对elementplus默认蓝色不满意怎么替换更改其他颜色,elementplus覆盖默认主题色,elementplus主题色官方文档,vue3中修改elementplus主题色,elementplus修改主题色不生效怎么办,elementplus如何修改主题颜色,eleme

🏆 前端领域优质创作者 1万+

java applet 教程,一个经典的JAVA APPLET程序(二)-JSP教程,Java技巧及代码

接着上面的部分,下面是applet主程序部分:public class myclock extends applet implements runnable{static final int background=0; //背景图片的序号,供数组使用static final int logo=1; //logo图片的序号,供数组使用s...

weixin_39622643的博客 259

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java Applet网页小程序应用示例

1、创建一个 Applet 应用程序 myApplet.java 文件。 (1)程序功能:建立一个 Applet 小程序,使其可以进行简单的加法运算。该程序要包含类、接口、属性、方法、事件等面向对象的基本元素。 (2)程序源代码如下: import java.awt.*; import java.awt.event.*; import java.applet.Applet; public clas...

ellen_mei_hua 8061

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

一个简单的Applet程序

Java  Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。

鸟人如风,不舍昼夜. 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java applet 教程_教你构建第一个Java Applet程序

介绍Note: 在你开始本教程之前,你必须下载downloaded 并安装installed Java SE Development Kit。Java applets像Java应用程序一样,它们的建立都是遵循相同的三个步骤—编写,编译及运行。不同 的是,它们是在一部分网页上运行,而不是在你的桌面上运行。本文的主要目的是创建一个简单的Java applet. 为了达到这一点要遵循以下三个基本步骤:1...

weixin_33092503的博客 3801

IDEA运行Java Applet程序

Java Applet程序 目录结构 Test.java import javax.swing.*; import java.awt.*; public class Test extends JApplet { public void init() { Container contentPane = getContentPane(); Icon i...

HUMM 1万+

编写一个 Applet 程序,输出自己的姓名

编写一个 Applet 程序,输出自己的姓名 (因为是很古老的东西,我们不需要借助工具就可以实现) 第一步 我们先新建一个文件夹 在文件夹里再建两个文本文档, 一个为HelloWored.java,一个为HelloWorld.html。 第二步 我们在文件夹里的文本文档打代码 HelloWored.java里的代码为 import java.applet.Applet; import java.a...

Ajiac_的博客 2324

java时钟代码_一个经典的JAVA APPLET时钟程序(一)

转眼间一年又要过了,自己又老了一岁,郁闷啊。趁着还有几分钟才新年,赶快再发几篇文章,给过去的一年添点东西。该程序是从网上发现的,是一个简单的时钟显示程序。代码特色:时钟代码提供了各种接口,可以在html文件中设置,变化出多姿多彩的时钟模型,参数说明见代码内info数组时钟的绘制采用双缓冲图形处理机制,即先在缓冲区内绘制图形,再把图形显示到网页上可以有效的防止闪烁。另外时钟的不断绘制是通过一个线程不...

weixin_32823993的博客 1002

java applet 一个简单的例子(applet+html)

java applet是一个类,其层次结构如下图:  类 JApplet  java.lang.Object    java.awt.Component        java.awt.Container            java.awt.Panel                java.applet.Applet                    javax.swing

caomiao2006的专栏 2万+

java applet开发_Java Applet程序开发步骤

Java最初奉献给世人的就是Java Applet,随即它吸引了全世界的目光,Java Applet运行于浏览器上,可以生成生动美丽的页面,进行友好的人机交互,同时还能处理图像、声音、动画等多媒体数据。Java Applet在Java的成长过程中起到不可估量的作用,到今天Java Applet依然是Java程序设计最吸引的人之一。在本期专题中我将向读者介绍Java Applet编程的一些技巧。Ja...

weixin_28757113的博客 2050

Java: Applet 和应用程序【转载】

1. APPLET:运行在支持Java的Web浏览器内的JAVA小程序。????? ?浏览器将对Web页进行初始化和启动applet程序;当我们不需要显示该Web页时,浏览器将启动相应的方法终止applet程序的运行。1.1由下面四个方法来控制APPLET的运行:(1)init() ?打开带有applet的文档时,调用init()方法初始化applet(2)start() ?打开带有applet的

Louis的专栏 2201

第一个java applet小程序

趁着今天还有点精力,将刚刚学会的APPLET写出来。感觉用记事本编辑程序太吃力,不过现在是处于学习阶段,先把基本的东西掌握了吧。JAVA APPLET就是用JAVA语言编写的一些小应用程序,它们可以直接嵌入到网页中或者其他特定容器中,并产生特殊的效果。JAVA APPLET程序不是将main方法作为入口。 第一个APPLET程序:打开记事本,输入:import java

ivension的专栏 1426
上一篇: 一个经典的JAVA APPLET时钟程序(一)
下一篇: 一个经典的ADO.NET入门例子
firerainbow
博客等级 码龄23年 0粉丝 12原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值