同一个applet类在不同浏览器的同步

Java Applet音频处理实战:AU文件测试套件 本文还有配套的精品资源,点击获取 简介:Java Applet利用Java Sound API处理多媒体资源,如音频和视频,对理解其多媒体功能和开发有帮助。本资源包含用于测试Java Applet音频功能的AU音频文件,详细讲解了音频处理的关键知识点,包括Java Sound API、AudioSystem类、AudioInputStream、Au文件格式、读取Au文件、播... 阅读详情
 
如果想要两个窗口内同步显示两支证券,那就得让两个浏览器之间能够通信,或者应该说两个applet之间能够通信,java.applet包的AppletContext类提供了getApplet和getApplets方法以获得其它applet的引用,使用这两个方法,Applet能够寻找到其他的Applet并调用它们的方法。不过这是以满足如下安全条件为前提的:
  
  所有Applet位于同一服务器的同一目录。
  所有Applet运行在同一页面且位于同一浏览器窗口内。
  或许为Applet加上这些安全限制都有着很充分的理由,但第二个条件给我们实现带有Applet到Applet通信功能的多Applet界面带来了限制。所有由于这些Applet位于不同的页面,AppletContext中的Java API无法帮助你完全实现我们的目标。
       要实现跨页面Applet到Applet通信首先要满足第一个条件,即如果两个Applet具有相同的codebase,那么即使它们运行在不同的浏览器窗口中,它们也将共享同一个运行时环境。所谓的codebase,我们可以粗略地把它看成Applet所在的服务器目录。
共享运行时环境使得类的静态域和结构能够被所有的Applet实例访问,因此,我们可以用这些静态域和结构在不同的Applet之间传递信息。   
   我们不仅可以把简单数据类型――比如整数、字符、字符串存储到这些静态域,而且还可以存储Applet实例本身的引用,这样,其他的Applet就可以通过访问这些静态域得到该Applet实例的引用。
假设有两个Applet(AppletA.class和AppletB.class)位于不同的帧,但它们具有相同的codebase。
  现在我们要从AppletA里面访问AppletB的公用方法。首先我们要在AppletB里面把它自己的引用保存到一个静态公用域,如:
public class AppletB
{
    public static AppletB selfRef = null;
    public void init()
{
      // 保存当前实例的引用
      selfRef = this;
    }
    ...
  }
现在AppletA可以访问AppletB的实例:
public class AppletA
{
    AppletB theOtherApplet = null;
    public void callAppletB()
{
         // 获得静态域的值,这个静态域保存了AppletB实例的引用
      theOtherApplet = AppletB.selfRef;
         // 接下来就可以调用AppletB实例 的方法,例如:
      theOtherApplet.repaint();
    }
    ...
}
这样就实现了两个Applet的通信。由于不同的Applet共享运行时环境,因此即使这些Applet位于不同的页面,这种方法也同样有效。
不过应当注意的是,上面的代码不能处理这种情况:在AppletB没有启动之前就在AppletA里面调用callAppletB方法。如果发生这种情况,则selfRef的值将是null,Applet之间的通信不能正常进行。
  当然,我们还可以设计出更加通用的方法。我们可以创建一个类,这个类的用途就是在自己的静态数据结构中保存其他Applet的引用。下面是一个参考实现AppletList。想要让其他Applet访问自己的公用方法的Applet实例首先要在AppletList中注册。按照AppletContext.getApplet(string name)方法的处理模式,每个注册的Applet都和一个字符串相关联。以后当其他Applet需要引用某个Applet实例时,这个字符串就可以作为键(即Applet的标识)使用。
下面是Applet在AppletList中注册的典型过程:
public class AppletA
{
    public void start()
{
      AppletList.register("Stock-trade-applet", this);
      ...
    }
  }
其他Applet访问已注册Applet的过程如下:
public class AppletB
{
    public void run()
{
      AppletA tradeApplet =
(AppletA) AppletList.getApplet("Stock-trade-applet");
      ...
    }
  }
当Applet结束运行时它必须从ApplietList取消注册:   
public void stop()
{
  AppletList.remove("Stock-trade-applet");
  ...
  }
AppletList类的完整代码如下:
import java.util.*;
import java.applet.Applet;
 
public class AppletList
{
  private static Hashtable applets = new Hashtable();
  
  public static void register(String name, Applet applet)
{
     applets.put(name,applet);
  }
  
  public static void remove(String name)
 {
     applets.remove(name);
  }
  
  public static Applet getApplet(String name)
 {
     return (Applet) applets.get(name);
  }
  
  public static Enumeration getApplets()
 {
     return applets.elements();
  }
  
  public static int size()
{
     return applets.size();
  }
  }
上述的办法是对两个不同的applet类来通信,而我们的目标是让同一个applet类在不同浏览器的同步,即在一支证券在一个浏览器中单步或自动回放,另一支证券要在另一个浏览器窗口中同步单步或自动回放,也就是无论点击任何一个浏览器中的单步或自动按钮,其余的浏览器也要同步回放。
因此,我们也不需要取其它applet的引用了,只要在单步或自动控制逻辑中加入调用从AppletList中取applet全集的函数getApplets,并遍历这些applet,并循环调用单步或自动的控制逻辑就可以了,因为我们并不知道AppletList的HashTable中哪个是第一个打开的窗口,哪个是第二个打开的窗口,那就干脆不管它是第几个,只要HashTable中有几个,那我们就调用这几个applet的控制逻辑。
下面是取applet的全集及循环执行的代码:
Enumeration appletList = AppletList.getApplets();
while(appletList.hasMoreElements())
{
    OrderApplet tradeApplet = (OrderApplet)appletList.nextElement();
    …… // 控制逻辑
}
但一定不能忘了,要在applet的stop方法中加入取消注册的语句,否则如果已经打开三个窗口,中途又关掉一个窗口,AppletList的HashTable中仍有三个applet的引用,与实际数量不符。
 
如前所述,参与通信的Applet必须具有相同的codebase。此外,如果你运行的是两个不同的浏览器副本且Applet分别运行于这两个浏览器中,由于这些Applet可能没有共享运行时环境(这和浏览器版本、设置有关),因此它们可能不能进行通信。然而,如果你是从同一个浏览器创建出新的浏览器窗口,那么这个问题是不存在的。
 
OpenClaw记忆插件升级实战:从memory-lancedb-pro安装到AgentSkill封装 向量数据库作为现代AI应用的核心基础设施,通过将非结构化数据转换为高维向量并利用相似度检索实现语义理解。其原理基于嵌入模型生成向量表示,结合近似最近邻搜索算法实现高效查询。这项技术为智能体系统提供了长期记忆和上下文感知能力,显著提升了对话连贯性与任务执行效率。在AI智能体开发领域,向量数据库常用于知识库构建、对话历史管理和个性化推荐等场景。本文聚焦OpenClaw框架中memory-lancedb-pro插件的部署实践,针对**插件加载顺序**和**Apache Arrow依赖**两大常见痛点,通过封装成可 阅读详情

相关推荐

UFS Write Booster技术解析:原理、配置与故障排查实战

在存储技术领域,缓存机制是提升I/O性能的核心手段之一,其原理是通过高速存储介质暂存数据,减少对低速主存储的直接访问,从而降低延迟、提升吞吐。Write Booster正是这一原理在UFS(通用闪存存储)规范中的具体实现,它通过引入独立的易失性高速缓存区(Write Booster Buffer),将主机写入命令快速响应与后台数据持久化分离,技术价值在于显著改善随机写入性能,消除由垃圾回收等后台操作引发的写入卡顿。该技术广泛应用于智能手机应用安装、相机连拍、固件升级(OTA)等对写入流畅性要求高的场景。本文

weixin_42561143的博客 356

在多种浏览器中嵌入Applet

1基本信息 摘要:一个开发好的Java Applet,是通过标准的标签(Tag)嵌入到HTML页面中的。浏览器在解析到支持的嵌入Applet的标签时,会启动Java Plug-in来渲染标签中的Java Applet。 由于历史原因,在页面中嵌入Applet产生了几种相互不兼容的方式,不同的浏览器、乃至同一个浏览器的不同版本,支持的标签都不完全相同。本文关注的是 不同浏览器Applet嵌入的差异性,首先介绍几种把Applet嵌入到页面中的标签,再介绍几个能够支持多种浏览器的嵌入方式。 作者:丁向武 .

没做过产品的后端不是个好前端 5869

robomimic实验复现全流程指南:从数据集下载到训练视频生成

本文提供了RoboMimic实验复现的完整实战指南,重点解析了从数据集下载、配置文件定制到模型训练与评估的全流程。以tool_hang任务为例,详细说明了环境准备、数据获取、训练监控及视频生成等关键步骤,并针对常见问题给出了排查方案,帮助研究者高效完成机器人模仿学习实验的闭环验证。

2w3e4r5t6y的博客 1032

第六讲 Java的线程和Java Applet

课前索引【课前思考】  1. 什么是线程?它和进程有什么区别?适用方向是什么?  2. Java的线程是如何实现的?  3. Java的线程是如何调度的?  4. Java中的多线程有什么特点?同步和互斥的原理是如何实现的?  5. 什么是Java Applet,它和Application的区别是什么?  6. 如何创建Java Applet?  7. Applet的生命周期及主要方法是什么?

心蓝 6396

无限维李代数局部与2-局部1/2-导子:从概念到Witt代数实例解析

在抽象代数与数学物理中,李代数是描述对称性的基本结构,而导子则是刻画其微分性质的核心算子。从经典的导子概念出发,通过引入“局部”与“分数阶”两个关键推广,形成了局部导子、2-局部导子以及1/2-导子等重要研究方向。这些推广不仅深化了对无限维李代数(如Witt代数、Virasoro代数)复杂结构的理解,其研究方法和结论也为共形场论、可积系统等物理理论提供了数学基础。本文聚焦于无限维李代数上局部与2-局部1/2-导子的系统研究,通过拆解核心概念、剖析典型代数结构,并以Witt代数为实例,详细演示了从全局1/2-

weixin_34072296的博客 392

Allegro中调整差分对等长的步骤介绍

【代码】Allegro中调整差分对等长的步骤介绍。

qq_30882617的博客 3833

【Java复习】第六讲 Java的线程和Java Applet

课前索引 【课前思考】  1. 什么是线程?它和进程有什么区别?适用方向是什么?  2. Java的线程是如何实现的?  3. Java的线程是如何调度的?  4. Java中的多线程有什么特点?同步和互斥的原理是如何实现的?  5. 什么是Java Applet,它和Application的区别是什么?  6. 如何创建Java Applet?  7. Applet的生命周期及主要方法是什么?...

浮夸 317

【理解机器学习算法】之Clustering算法(Agglomerative Clustering)

是一种层次聚类算法,通过逐步合并或“聚集”它们来构建嵌套聚类。这种方法采用自底向上的方式构建聚类层次:它从将每个数据点作为单个聚类开始,然后迭代合并最接近的聚类对,直到所有数据点合并为一个聚类,或直到达到指定的聚类数量。优点:- 聚合聚类在距离和连接准则的选择上具有多样性,使其适用于各种数据集。- 它产生了一个层次结构,这对于不同规模的聚类数据结构是有信息量的。-缺点:- 对于大数据集来说,它可能计算成本高,因为它需要在每次迭代中计算和更新所有聚类对之间的距离。

Hyman Qiu 2688

java applet 技术_速读原著-Java核心技术(Java applet 与 Internet)

1.3 Java applet 与 Internet这里的想法很简单: 用户从 Internet 下载 Java 字节码, 并在自己的机器上运行。在网页中运行的 Java 程序称为 applet。要使用 applet, 需要启用 Java 的 Web 浏览器执行字节码。不需要安装任何软件。任何时候只要访问包含 applet 的网页都会得到程序的最新版本。最重要的是,要感谢虚拟机的安全性,它让我们不...

weixin_30000283的博客 247

基于matlab的阈值分割的车牌定位识别系统

车牌自动识别模块是现代社会智能交通系统(ITS)的重要组成部分,是图像处理和模式识别技术研究的热点,具有非常广泛的应用。车牌识别主要包括以下三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。本案例通过对采集的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 969

解锁VS2022!手把手教你本地部署Deepseek

在 VS2022 中本地部署 Deepseek,我们首先需要确保硬件资源的充足,如高性能的 GPU、大容量内存和高速存储等,这是模型稳定运行的基石。如果生成的摘要能够准确概括原文的核心内容,就表明 Deepseek 模型在文本分析方面的功能正常,部署稳定可靠。这对于开发者来说,能够大大提高开发效率,当遇到一些常见的功能实现时,可以借助 Deepseek 模型快速生成基础代码框架,减少手动编写的工作量。在大语言模型的蓬勃发展的当下,Deepseek 凭借其卓越的性能和创新的技术,已然成为该领域的佼佼者。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1万+

Applet编程——Applet与Servlet通信

在今天的多层结构的web应用程序的设计中,我们可以同时使用Java applet和Servlet。Applet为建立功能强大的动态界面提供了便利的机制,Servlet为web服务器或者其他应用服务器处理请求提供了高效率的手段。Sun公司的应用程序模型描述了在Java 2平台下开发企业级的Java应用的最好的规范。一种被推荐的规范是:在前端使用Applet、HTML和JSP,在...

weixin_34115824的博客 121

HDR 成像技术学习(三)—— LOFIC

LOFIC(Lateral Overflow Integration Capacitor,横向溢出集合电容)介绍,从像素结构到工作时序。

沧海一升的博客 9729

常用回顾3------Java的线程和Java Applet

课前索引 【课前思考】   1. 什么是线程?它和进程有什么区别?适用方向是什么?   2. Java的线程是如何实现的?   3. Java的线程是如何调度的?   4. Java中的多线程有什么特点?同步和互斥的原理是如何实现的?   5. 什么是Java Applet,它和Application的区别是什么?   6. 如何创建Java Applet?   7. Applet

单向街的夏天 697

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

认识Applet和Ajax

一、Applet 1.Applet的定义:Applet是采用Java编程语言编写的小应用程序,该程序可以包含在HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同。 Java写出来的程序可分为两类,分别是JavaApplet与一般的Application,而Application这一类就与一般的程序如C++的作用是比较类似的,是一个独立可执行的应用程序,像H...

aifeimiao1189的博客 226

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Applet间的通讯(2)--Tricks of the Java Programming Gurus

Tricks     of the      Java Programming Gurusby Glenn L. Vanderburg. et al.1.Applet间的通讯(2)相互查找    使用静态变量进行通讯并不意味着applet就可以同时被初始化。不同的实例还是先后启动的,我们并不能保证它们的启动次序。然而,有一点我们可以确定:在第一个ColorRelay applet实

chenyuan_tongji的专栏 812

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

applet和Ajax

1.Applet的定义:Applet是采用Java编程语言编写的小应用程序,该程序可以包含在HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同。 Java写出来的程序可分为两类,分别是JavaApplet与一般的Application,而Application这一类就与一般的程序如C++的作用是比较类似的,是一个独立可执行的应用程序,像HotJava是一个浏览器,...

dihuixiang8783的博客 113

atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o

atitit.applet浏览器插件控件的环境,开发,提示总结o9o 1.建立applet:: 1 2.Applet码 1 3.Applet(awt)跟japplet(swing)的差别.. 1 4.Html码 1 5.Applet部署:::class跟个jar到个weebroot 2 5.1.导入在的jar,也放得个weeb...

aofan9566的博客 90

第六讲 Java的线程和Java Applet

var blogID=getBlogID(); var UserName = ""; var href= ""; checkAccess(0); writeTop(getUserName(), 0); 6.1 线程简介 线程与进程相似,是一段完成某个特定功能的代码,是程序中单个顺序的

Jenhy的专栏 951

JDBC基础-从应用程序创建applet

假设Coffee Break的老板想在Web页上的applet中显示当前的咖啡价格。让applet直接从数据库提取价格,他就可以确信显示的是最新价格。为此需要创建两个代码文件,一个保存applet代码,一个保存HTML代码。applet代码包含一般程序都有的JDBC代码以及运行applet和显示数据库查询结果的附加代码。本例中applet代码保存在OutputApplet.java文件中。为在HT

盗也有道>>>> 1113

【JAVA教程】第六讲 Java的线程和Java Applet

6.1 线程简介   随着计算机的飞速发展,个人计算机上的操作系统也纷纷采用多任务和分时设计,将早期只有大型计算机才具有的系统特性带到了个人计算机系统中。一般可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。Java程序通过流控制来执行程序流,程序中

1082

Applet和Ajax

一、Applet 1.Applet的定义:Applet是采用Java编程语言编写的小应用程序,该程序可以包含在HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同。 Java写出来的程序可分为两类,分别是JavaApplet与一般的Application,而Application这一类就与一般的程序如C++的作用是比较类似的,是一个独立可执行的应用程序,像HotJav...

weixin_30711917的博客 160

JBuilder 2005开发Applet游戏全接触2

主体程序  1、字母下落线程  游戏界面中每一个下落的字母对应一个字母下落线程DropCharThread的实例,这个线程负责将一个随机的字母在指定的画布栏中从上至下落下。在TypeTrainApplet内部定义这个线程类,之所以要将其作为成员内部类来定义,是因为这样可以减少类和类之间的通信,降低调用接口的复杂度。DropCharThread需要访问到TypeTrainApplet的众多成员,作为

masse的专栏 1777
上一篇: 字符转义技术
下一篇: Sybase数据库连接数过多问题
潭溪Debby
博客等级 码龄21年 32粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值