用java描述下面三个故事,要求有极高的重用性,可扩展性。请指教!

阿里面试真题解析:JVM+SpringBoot+微服务+算法+数据库,金九银十搏一把! 没有废话,没有故事,直接上题 阿里巴巴Java虚拟机面试题 介绍下 Java 内存区域 Java 对象的创建过程 对象的访问定位有几种 String、StringBuilder、StringBuffer 有什么不同? 什么是双亲委派模型 说说你对类加载器的理解 类加载的过程 运行时数据区中哪些区域是线程共享的?哪些是独享的? Java中的数组是存储在堆上还是栈上的? Java中的对象创建有多少种方式? 如何获取堆和栈的dump文件? Java虚拟机全面解析文档: ... 阅读详情

  此topic放在http://topic.youkuaiyun.com/u/20090915/12/a4424d66-0331-42b2-b08a-c08af684640a.html 

  由于代码太长,所以转到blog来。

 

  近段时间做java的教学工作,想用java描述下面三个故事,要求有极高的重用性,可扩展性。能让学生体会面向对象的封装,继承,多态等特点。最好用上设计模式,加强可扩展性;便于引导学生进一步学习。


唐僧四人坐飞机去旅游,途中飞机失事,可是降落伞只有三把.
于是,唐僧说了,大家来答题,答不出来的跳下去.
唐僧:悟空,天上有几个太阳呀?
悟空:一个.
唐僧:好,给你一把.
唐僧:沙僧,天上有几个月亮啊?
沙僧:一个.
唐僧:好,也给你一把.
一旁的八戒好开心,这么简单的问题.
唐僧:八戒, 天上有几颗星星啊?
....
八戒跳了下去.

没过多久,他们四人又坐飞机去旅游了.途中又失事,降落伞还是只有三把.
他们又继续回答问题.
唐僧:悟空,中华人民共和国什么时候成立呀?
悟空:1949年.
唐僧:好.给你一把.
唐僧:沙僧,解放战争,死了多少人啊?
沙僧:250万人.
唐僧:好,也给你一把.
唐僧:八戒,那250万人的名字是什么呀?
......八戒又只好跳了下去.

第三次,他们四人又坐飞机去旅游了,途中又出事故了.
这时候,八戒说到:师傅,你不用问了,我自己跳.
然后就纵身一跳.
唐僧合手:阿弥陀佛,这次降落伞有四把

 

工厂方法模式






命令模式:


观察者这模式:



合并之后:

ITudiAction  起到 Observer 的作用
IShifuAction  起到 Subject 的作用
命令模式会在main函数中体现。

 

代码如下:

 //Main.java
public class Main
{
 public static void SceneOne()
 {
  IAnimalFactory animalFactory1 = new StoneMonkeyFactory();
     Animal wukong = animalFactory1.CreateAnimal("wukong");//孙悟空
     IAnimalFactory animalFactory2 = new StoneMonkeyFactory();
     Animal bajie = animalFactory2.CreateAnimal("bajie");//猪八戒
     IPersonFactory personFactory1 = new ShifuMonkFactory();
     Person tangseng = personFactory1.CreatePerson("tangseng");//唐僧
     IPersonFactory personFactory2 = new TudiMonkFactory();
     Person shaseng = personFactory2.CreatePerson("shaseng");//沙僧
     
     ((ShifuMonk)tangseng).Attach((ITudiAction)wukong);
     ((ShifuMonk)tangseng).Attach((ITudiAction)shaseng);
     ((ShifuMonk)tangseng).Attach((ITudiAction)bajie);
     
     Command askcommand1 = new AskCommand((ITudiAction)wukong);
     Command askcommand2 = new AskCommand((ITudiAction)shaseng);
     Command askcommand3 = new AskCommand((ITudiAction)bajie);
     
     ((ShifuMonk)tangseng).SetOrder(askcommand1,"天上有几个太阳呀?");
     String answer = ((ShifuMonk)tangseng).PleaseReply();
     ((ShifuMonk)tangseng).Judge(answer,0);

     
     ((ShifuMonk)tangseng).SetOrder(askcommand2,"天上有几个月亮啊?");
     String answer2 = ((ShifuMonk)tangseng).PleaseReply();
     ((ShifuMonk)tangseng).Judge(answer2,1);
     
     ((ShifuMonk)tangseng).SetOrder(askcommand3,"天上有几颗星星啊?");
     String answer3 = ((ShifuMonk)tangseng).PleaseReply();
     ((ShifuMonk)tangseng).Judge(answer3,2);
 }
 public static void SceneTwo()
 {
  IAnimalFactory animalFactory1 = new StoneMonkeyFactory();
     Animal wukong = animalFactory1.CreateAnimal("wukong");//孙悟空
     IAnimalFactory animalFactory2 = new StoneMonkeyFactory();
     Animal bajie = animalFactory2.CreateAnimal("bajie");//猪八戒
     IPersonFactory personFactory1 = new ShifuMonkFactory();
     Person tangseng = personFactory1.CreatePerson("tangseng");//唐僧
     IPersonFactory personFactory2 = new TudiMonkFactory();
     Person shaseng = personFactory2.CreatePerson("shaseng");//沙僧
     
     ((ShifuMonk)tangseng).Attach((ITudiAction)wukong);
     ((ShifuMonk)tangseng).Attach((ITudiAction)shaseng);
     ((ShifuMonk)tangseng).Attach((ITudiAction)bajie);
     
     Command askcommand1 = new AskCommand((ITudiAction)wukong);
     Command askcommand2 = new AskCommand((ITudiAction)shaseng);
     Command askcommand3 = new AskCommand((ITudiAction)bajie);
     
     ((ShifuMonk)tangseng).SetOrder(askcommand1,"中华人民共和国什么时候成立呀?");
     String answer = ((ShifuMonk)tangseng).PleaseReply();
     ((ShifuMonk)tangseng).Judge(answer,0);

     
     ((ShifuMonk)tangseng).SetOrder(askcommand2,"解放战争,死了多少人啊?");
     String answer2 = ((ShifuMonk)tangseng).PleaseReply();
     ((ShifuMonk)tangseng).Judge(answer2,1);
     
     ((ShifuMonk)tangseng).SetOrder(askcommand3,"那250万人的名字是什么呀?");
     String answer3 = ((ShifuMonk)tangseng).PleaseReply();
     ((ShifuMonk)tangseng).Judge(answer3,2);
 }
 public static void SceneThree()
 {
  IAnimalFactory animalFactory1 = new StoneMonkeyFactory();
     Animal wukong = animalFactory1.CreateAnimal("wukong");//孙悟空
     IAnimalFactory animalFactory2 = new StoneMonkeyFactory();
     Animal bajie = animalFactory2.CreateAnimal("bajie");//猪八戒
     IPersonFactory personFactory1 = new ShifuMonkFactory();
     Person tangseng = personFactory1.CreatePerson("tangseng");//唐僧
     IPersonFactory personFactory2 = new TudiMonkFactory();
     Person shaseng = personFactory2.CreatePerson("shaseng");//沙僧
     
     ((ShifuMonk)tangseng).Attach((ITudiAction)wukong);
     ((ShifuMonk)tangseng).Attach((ITudiAction)shaseng);
     ((ShifuMonk)tangseng).Attach((ITudiAction)bajie);
     
     System.out.println("bajie 跳下去了!结果有四把降落伞!");
 }
    public static void main(String[] args)
    {
     Main.SceneOne();
     System.out.println("----------------");
     Main.SceneTwo();
     System.out.println("----------------");
     Main.SceneThree();
    }
}


//Animal.java
public abstract class Animal
{
 protected String name = "";
  Animal(String name)
 {
   this.name = name;
 }
 Animal()
 {
   this.name = "无名";
 }
 public String DisplayName()
 {
   return  name;
 }
}

//Monkey.java
public abstract class Monkey extends Animal
{
 Monkey()
 {
   super();  
 }
  Monkey(String name)
 {
   super(name);  
 }
}

//StoneMonkey.java
public class StoneMonkey extends Monkey implements ITudiAction
{
 StoneMonkey()
 {
   super();
 }
 StoneMonkey(String name)
 {
   super(name);
 }
 public void Jump()
 {
 }
 public String ReplyQuestion(String q)
 {
  StoneMonkeyKnowlegeDataBase smkdb = new StoneMonkeyKnowlegeDataBase();
  return smkdb.t.get(q);
 }
}
class StoneMonkeyKnowlegeDataBase
{
 MyHashtable<String,String> t=new MyHashtable<String,String>();
 StoneMonkeyKnowlegeDataBase()
 {
  t.put("天上有几个太阳呀?", "一个");
  t.put("中华人民共和国什么时候成立呀?", "1949年");
 }
}


//Pig.java
public abstract class Pig extends Animal
{
 Pig()
 {
   super();
 }
  Pig(String name)
 {
   super(name);
 }
}

//PigMan.java
public class PigMan extends Pig implements ITudiAction
{
 PigMan()
 {
   super();
 }
 PigMan(String name)
 {
   super(name);
 }

 public void Jump()
 {
 }
 public String ReplyQuestion(String question)
 {
  return null;
 }
}
class PigManKnowlegeDataBase
{
 PigManKnowlegeDataBase()
 {
  MyHashtable<String,String> t=new MyHashtable<String,String>();
  t.put("天上有几颗星星啊?", "不知道");
  t.put("那250万人的名字是什么呀?", "不知道");
 }
}

 

//Person.java
public abstract class Person
{
 protected String name = "";
 Person(String name)
 {
   this.name = name;
 }
 Person()
 {
   this.name = "无名";
 }
 public String DisplayName()
 {
   return  name;
 }
}

//Monk.java 和尚类
public class Monk extends Person  //和尚
{
  Monk()
  {
   super();
  }
   Monk(String name)
  {
    super(name);
  }
}


//ShifuMonk.java
import java.util.ArrayList;
import java.util.List;

public class ShifuMonk extends Monk implements IShifuAction
{
  private List<ITudiAction> observers = new ArrayList<ITudiAction>();
  private String action;
     String question;
     private Command command;
    
     public void SetOrder(Command command,String question)
     {
         this.command = command;
         this.question = question;
     }
    
     public String PleaseReply()
     {
      return command.ReplyQuestion(question);
     }
    
  ShifuMonk()
  {
   super();
  }
  ShifuMonk(String name)
  {
    super(name);
  }
 public void Attach(ITudiAction observer)
 {
  observers.add(observer);
 }
 public void Detach(ITudiAction observer)
 {
  observers.remove(observers);
 }

 public String getShifuState()
 {
  return action;
 }
 public void setShifuState(String subjectState)
 {
  action = subjectState;
 }
 
 public void Judge(String a,int i) //裁判问题回答是否正确
 {
  ShifuMonkKnowlegeDataBase smkdb = new ShifuMonkKnowlegeDataBase();
  if (smkdb.t.get(this.question).equals(a))
  {
   System.out.println(((ITudiAction)observers.get(i)).DisplayName()+" 给你一把 降落伞!");
  }
  else
  {
   OrderJump(i);
  }
 }

 public void OrderJump(int i)
 {
  System.out.println(((ITudiAction)observers.get(i)).DisplayName()+" 跳下去");
 }
}
class ShifuMonkKnowlegeDataBase
{
 MyHashtable<String,String> t=new MyHashtable<String,String>();
 ShifuMonkKnowlegeDataBase()
 {
  t.put("天上有几个太阳呀?", "一个");
  t.put("中华人民共和国什么时候成立呀?", "1949年");
  
  t.put("天上有几个月亮啊?", "一个");
  t.put("解放战争,死了多少人啊?", "250万人");
  
  t.put("天上有几颗星星啊?", "???");
  t.put("那250万人的名字是什么呀?", "???");
 }
}


//TudiMonk.java  徒弟和尚
public class TudiMonk extends Monk implements ITudiAction
{
 TudiMonk()
 {
  super();
 }
    TudiMonk(String name)
 {
   super(name);
 }
 public void Jump()
 {
 }
 public String ReplyQuestion(String q)
 {
  TudiMonkKnowlegeDataBase tmkdb = new TudiMonkKnowlegeDataBase();
  return tmkdb.t.get(q);
 }
}
class TudiMonkKnowlegeDataBase
{
 MyHashtable<String,String> t=new MyHashtable<String,String>();
 TudiMonkKnowlegeDataBase()
 {
  t.put("天上有几个月亮啊?", "一个");
  t.put("解放战争,死了多少人啊?", "250万人");
 }
}

//TudiMonkFactory.java
public class TudiMonkFactory implements IPersonFactory
{
 public Person CreatePerson(String name)
 {
  return new TudiMonk(name);
 }
}


//StoneMonkeyFactory.java
public class StoneMonkeyFactory implements IAnimalFactory
{
 public Animal CreateAnimal(String name)
 {
  return new StoneMonkey(name);
 }
}

//ShifuMonkFactory.java
public class ShifuMonkFactory implements IPersonFactory
{
 public Person CreatePerson(String name)
 {
  return new ShifuMonk(name);
 }
}

//PigManFactory.java
public class PigManFactory implements IAnimalFactory
{
 public Animal CreateAnimal(String name)
 {
  return new PigMan(name);
 }
}

//IPersonFactory.java
public interface IPersonFactory
{
   Person CreatePerson(String name);
}

//IAnimalFactory.java
public interface IAnimalFactory
{
 Animal CreateAnimal(String name);
}


//Command.java
public abstract class Command
{
 protected ITudiAction tudi;
 public Command(ITudiAction tudi)
 {
  this.tudi = tudi;
 }
 abstract public String ReplyQuestion(String q);
 abstract public void Jump();
}

//AskCommand.java
public class AskCommand extends Command
{
    String question;
 AskCommand(ITudiAction tudi)
 {
    super(tudi);
 }
 public String ReplyQuestion(String question)
 {
  return tudi.ReplyQuestion(question);
 }

 public void Jump()
 {
 }
}


//JumpCommand.java
public class JumpCommand extends Command
{
 JumpCommand(ITudiAction tudi)
 {
    super(tudi);
 }
 public void Jump()
 {
 }
 @Override
 public String ReplyQuestion(String q)
 {
  return null;
 }
}

//MyHashtable.java
import java.util.Hashtable;
public class MyHashtable <K,V>
{
 public Hashtable<K,V> h=new Hashtable<K,V>();
 public void put(K k, V v)
 {
   h.put(k,v);
 }
 public V get(K k)
 {
   return h.get(k);
 }
}

//ITudiAction.java
public interface ITudiAction //相当于观察者模式的Observer
{
 //相当于观察者模式的Update,表示要作出反应,如“回答”,“跳下去”
 String ReplyQuestion(String q);
    void Jump();
    public String DisplayName();
}

//IShifuAction.java
public interface IShifuAction //相当于观察者模式的Subject
{
 void Attach(ITudiAction observer);// 增加观察者
 void Detach(ITudiAction observer);// 减少观察者
   
    public String getShifuState();
    public void setShifuState(String subjectState);
    //设置命令
    void SetOrder(Command c, String q);//出问题
    void OrderJump(int i);//命令第i个人跳下去
  //通知回答
    public String PleaseReply();
  //裁夺正误
    void Judge(String a,int i);
}

 

运行结果:

wukong 给你一把 降落伞!
shaseng 给你一把 降落伞!
bajie 跳下去
----------------
wukong 给你一把 降落伞!
shaseng 给你一把 降落伞!
bajie 跳下去
----------------
bajie 跳下去了!结果有四把降落伞!

 

Java 帝国:从基础基石到云端巅峰的征服之路 Java 帝国:从基础基石到云端巅峰的征服之路》是对 Java 语言成长历程的礼赞,也是对每一个 Java 开发者在这一过程中不断奋斗、突破自我的肯定。从第一次写下“Hello, World!”的初心,到今天在云计算和人工智能时代的王者地位,Java 的“帝国”征途,不仅是技术的积累,更是每一位开发者对技术深耕、对知识无限追求的心路历程。作为一名 Java 开发者,你所经历的不仅仅是语言层面的学习,更是在技术世界中逐步蜕变为一个真正的“征服者”。 阅读详情

相关推荐

软件架构设计核心:4+1视图模型与五大经典风格解析

软件架构是构建复杂系统的蓝图,其核心在于通过一套结构化的设计原则来组织系统组件、规范交互方式并管理复杂性。从原理上看,架构设计旨在实现关注点分离,确保系统的可维护性、可扩展性与可靠性。其技术价值体现在为团队提供统一的沟通语言和设计约束,从而高效应对需求变化与技术演进。在应用场景上,无论是传统的企业应用、高并发Web服务,还是新兴的物联网与机器人系统,都需要选择合适的架构风格作为基础。本文聚焦于经典的4+1视图模型,它从逻辑、进程、开发、物理及场景五个维度完整描述架构,并结合管道-过滤器、调用-返回等五大传统

weixin_30940783的博客 398

Java的变量(通过故事来学习)

然而,你又告诉他,虽然这个变量的值可以改变,但它有一定的限制。这时,你的朋友问了一句:“那么,如果你卖出一些糖果,桶里的数量会减少,这会对变量的值产生影响吗?”你解释说,当糖果被卖出去后,你会根据卖出的数量减少桶里的糖果数量,这意味着变量的值会被更新。一天,你的朋友来看你,他想要买一些糖果尝尝。这个变量的值可以随时改变,也可以在不同的时间拥有不同的值。通过这个故事,你的朋友理解了变量的概念,也明白了变量的值可以改变且有一定的限制。在Java中,变量也是一样,它们可以随时改变值,但会受到类型和范围的限制。

pcaidong_2的专栏 161

java100个经典例子

java100个经典例子,学习java的必备, 达内老师推荐的

看故事学技术,15年开发大神把枯燥的Java知识讲得妙趣横生

编程技术不过是另一门手艺,和铁匠,木工等这些手艺有些异曲同工的地方,基础 (数据结构,算法,操作系统,系统结构,计算机网络)、实践 、思考 (逻辑思维,研究能力,软件工程,编程思想),“知识“总是变化得很快,手艺的铸就非一日之功。最初走上这条道路可能只是听说坐办公室薪水还不错的懵懂,但想在这条路上和人生去碰撞出一些火花,还是要当作一门手艺,去雕琢。共勉!...

mt77666的博客 284

Python 高级语法:闭包

闭包(Closure)是函数式编程中的一个重要概念。在Python中,闭包可以简单理解为:一种特殊的函数。外函数:嵌套函数中最外层的函数称之为外函数。内函数:嵌套函数中最内层的函数称之为内函数;内函数引用了外函数的临时变量;外函数的返回使用了临时变量的内函数。

moment159的博客 2354

workbench谐响应

定义材料 打开Engineering Data定义材料,在分析时不同部分选择不同材料 建模 打开Geometry建模,我举的例子很简单就一根光秃秃的轴 因为要加轴承,在轴上创建imprint face 因为要用point mass代替轴上原来的盘,在轴上盘的位置新建一个Plane,用Slice方法将轴从XYPlane3分成两段 施加边界条件以及谐响应分析 打开Model 1.在两段轴的交界面处,创建Point Mass,输入质量与转动惯量,位置在轴线上 2.mass point promote to.

my blogs include programming, math, physics.回首过去,放眼未来。 leslielee.blog.youkuaiyun.com 5886

6月的十大Java故事

1. 这篇有关新Angular版本的文章是上个月点击量最高的文章; 看到它为什么保持自己的位置也就不足为奇了。 Angular 4是最近发布的,因此每个人都热衷于学习此更新的内容。 他们还解释了我们都必须对我们的旧收藏进行一些新的调整。 在这里,Karsten Sitterberg和Thomas Kruse展示了所有创新,给出了迁移技巧,并猜测Angular 5的外观。 2. 存档中的...

259

嵌入式AI实战:基于RK3588部署YOLOv11并集成OpenCV实现实时推理(全流程详解)

本文详细介绍了在RK3588芯片上部署YOLOv11目标检测模型的全流程,包括环境搭建、模型转换和实时推理实现。主要内容为:1)通过YOLOv11官方工具将PyTorch模型转为ONNX格式;2)使用RKNN Toolkit2将ONNX模型转换为适配RK3588的RKNN格式;3)在RK3588上结合OpenCV实现实时视频推理功能。教程提供了完整的代码示例和详细步骤说明,帮助开发者快速在边缘设备上部署目标检测模型,实现AI视觉应用的落地。

LXY_LOVE36的博客 213

Java 生产者&消费者 —— { }

package com.vince; /** * Created by vince on 2017/6/5. * 两个线程协同工作,先生产,再消费 * 面试题 : * sleep 与 wait的区别? * sleep:让线程进入休眠状态,让出CPU的时间片,不释放对象监视器的所有权(对象锁) * wait:让线程进入等待状态,让出CPU的时间片,并释放对象监视器的所有权,等待其它线程通过notify方法来唤醒 */ public class ProducterCustomerDemo {

橙系圆的博客 190

AUTOSAR 导入DBC ISOLAR工程配置

ISOLAR工程配置-dbc导入

汽车电子电气 2408

[Python人工智能] 三十六.基于Transformer的商品评论情感分析 (2)keras构建多头自注意力(Transformer)模型

本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章利用Keras构建深度学习模型并实现了情感分析。这篇文章将介绍Transformer基础知识,并通过Keras构建多头自注意力(Transformer)模型,实现IMDB电影影评数据情感分析。基础性文章,希望对您有所帮助!...

杨秀璋的专栏 4909

用java描述三个故事,要求有极高的重用性,可扩展性。

[url]http://topic.youkuaiyun.com/u/20090915/12/A4424D66-0331-42B2-B08A-C08AF684640A.html[/url] [size=medium] 近段时间做java的教学工作,想用java描述下面三个故事,要求有极高的重用性,可扩展性。能让学生体会面向对象的封装,继承,多态等特点。最好用上设计模式,加强可扩展性;便于引导学生进一步...

志诚自制-2011,时间管理、效率为王 378

基于ESM3微调的抗菌肽生成器:技术方案与实现

基于ESM3微调的抗菌肽生成器:技术方案与实现 摘要 本文提出了一种基于ESM3蛋白质语言模型的抗菌肽生成框架,采用两阶段训练策略:先在151万肽序列上预训练,再在1.3万抗菌肽数据上微调。模型能够生成具有合理长度分布、低重复率且高新颖性的抗菌肽序列。文章详细介绍了数据预处理流程、模型架构设计、训练策略及评估方法,为抗菌肽的理性设计提供了有效的计算工具。实验结果表明,该方法生成的抗菌肽序列在保持生物活性的同时具有较高的结构多样性。 关键词:抗菌肽设计;蛋白质语言模型;ESM3;深度学习;序列生成

huanghm88的专栏 176

java软件工程师的故事hi_Java软件工程师

当今社会可以说Java应用可以说是无处不在。小至桌面办公应用和Java小应用程序,大至网络数据库等应用,PC嵌入式移动平台Applet架构庞大的J2EE企业级解决方案,处处都有Java的身影,就连美国大型太空项目当中,也使用了Java来开发控制系统和相关软件。如此广泛的应用成就的java工程师的辉煌,使得Java工程师在软件工程师领域里独占鳌头!但是很多人却没有办法成功的进入到Java软件工程师...

weixin_39957951的博客 192

刷机维修进阶教程-----oppo机型 一加 7pro 修复基带 更改参数 实例详细步骤解析

通过课程基本可以了解 1-----oppo机型与一加7机型更改参数的具体步骤解析 2------了解oppo机型开启diag端口的具体步骤 3-----了解一加7这些机型改参数常识 。可以借鉴参考用于其他机型 4-----了解手机基带分区与基带辅助分区的作用 5-----机型参数能读取到 但不能写这种情况如何操作

小马哥的专栏 1478

Jetson AGX Orin和Drive AGX Orin相机的关联分析和编程指南

通过适当的相机接口和连接,以及使用适当的软件开发环境,开发人员可以在这些平台上实现相机功能。Jetson AGX Orin和Drive AGX Orin是NVIDIA推出的两款强大的计算平台,用于自动驾驶和人工智能应用。Jetson AGX Orin和Drive AGX Orin平台提供了强大的计算能力,使开发人员能够实现复杂的相机功能和算法。以上只是一些示例,Jetson AGX Orin和Drive AGX Orin平台提供了丰富的开发资源和工具,可用于实现各种复杂的相机应用。显示图像在一个窗口中。

CyberLynxO的博客 1122

夜光带你走进 Java 成神之路(九)擅长的领域

夜光序言: 昨天的自己已经无法适应今天的故事只有改变才是唯一不变的。 正文: 以道御术 / 以术识道 package 工厂设计模式; import java.io.BufferedReader; impo...

夜光的博客 205

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

转型AI ,80后华为Java工程师的故事

写在前面:JAVA 是世界上最好用的语言;生活中唯一不变的就是改变;由内向外的是新生,由外向内的是打破。一:西安与华为我叫秦风(笔名)。从学生时代接触 Java 写第一行 “hello world” 至今已有十多年了,2011年正式加入华为西安研究院先后负责接入网、做自动化测试工具、分布式调度系统等项目。这里要吹嘘一下:能进入华为的人都是牛人,这样说是有依据的,当时我们接手的这个系统主要是用于分布...

weixin_33892359的博客 297

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

探秘 JAVA 诞生之路,引领编程人生的宏伟著作

Java 是一门面向对象的编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大和简单易用两个特征。Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

流华追梦的专栏 2053

深度学习工具包 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")

Java成长小故事

“学习本就枯燥,希望我们能找到一点过程中的美好。” Hello大家好,我是小研,一个自学Java的搬运工,小萌新第一篇文章想跟大家分享下Java的背景,那一串串数字符号背后是大牛前辈们用心堆砌出来的故事,希望你能在阅读后感受到更多属于Java的魅力。 在1995年之前SUN公司(太阳微电子公司:该公司目前被Oracle收购了)为了占领智能电子消费产品市场,派 James Gosling领导团队开发了一个Oak(橡树)语言 ...

Java_powerup的博客 548

java-故事

java-故事 这里要知道java是1995诞生的 java创始人是詹姆斯·高斯林 java8和11是长期支持的版本 大部分公司用的是这个

m0_59605707的博客 170

三个趣味故事,教你秒懂Java多线程

朝思暮巷 2017-04-11 19:35 Java多线程是考量一个Java中级研发工程师的重要指标之一,小编通过几个典型的场景,以故事的形式,将Java多线程中的要点呈现给各位看客。Java多线程主要涉及到的编程技术有以下五点: (一)对同一个变量进行操作 (二)对同一个对象进行操作 (三)回调方法使用 (四)线程同步,死锁问题 (五)线程通信 故事一:电影院门口

u011277123的博客 1886

让你感动的几个小故事

    看到这几个小故事,让我很感动,拿来给大家分享   http://user.qzone.qq.com/356662780/blog/5   让你感动的几个小故事

Java_Home 536

【Java二十周年】我与Java的故事

本人非211大学软件工程屌丝一枚,目前大三在读,准备考研。       大一的时候专业与计算机毫不相干,但那时已经决定转行到IT。       大一的时候开始学编程,一开始接触的是VB,没错,而且还是VB6.0,很老很老的版本。那个时候Java对我来说只是遥远的一个名词,只知道它很流行,但怎么应用,什么样子,完全不知道。       VB课程结束后,开始自学C++。一开始的时候学的很茫然,一

薛晓伟 1542

java名字的由来

名字来源 Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关:如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans(对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。[2] 语言起源 Java平台和语言最开始只是SUN公司在1990年12月开始研究的一个内部项目。SUN公司的一个叫做帕特里克·诺

红土豆jie 1万+

java 第六次课--图形用户界面概述

Java图形用户界面概述一、Java语言平台无关性组件的实现图形用户界面是当今流行的操作系统界面。Java语言为了适应发展趋势,也具有开发图形化的用户界面的功能。Java语言自身的特点要求其图形用户界面具有平台无关性。早期的Java版本JDK1.0和JDK1.1采用 的是AWT组件。特点是简单、易于理解。AWT组件中采用了一种称为对等体(peer)的机制,每个组件都有一个对应的对等体,是用

flyuniverse_shell的专栏 4808
上一篇: Windows Server 2003第二次课--基本概念
下一篇: java 第六次课--图形用户界面概述
flyuniverse_shell
博客等级 码龄18年 119粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值