Flex 如何限制客户端只运行一个application实例

本文介绍如何使用Flex的LocalConnection确保Web应用在同一客户端上仅能运行一个实例,以避免因多个账号登录导致的业务紊乱问题。通过发送和接收LocalConnection信息来判断应用是否已在运行,并给出相应处理。

flexweb应用,就必须处理web应用的一个常见问题,即在同一台电脑上用不同账号登陆web应用,由于火狐了、ie7以上版本等浏览器sessionid是同一个,因此会发生ab用户共享同一session信息进行业务操作,从而导致业务紊乱。

幸运的是,flexlocalconnection可以实现同一application在同一客户机上只可有一个实例在运行。关于localconnection相关信息,大家可以参阅adobe的参考文档。我们只需关注application一个实例的localconnection send信息出来之后,application另外一个实例的localconnection connect可以接收到信息。因此,只要localconnection connect接收到信息,即可表明一定有已存在的application在运行,此时需要做退出application等相关处理。下述为demo

<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"

xmlns:s="library://ns.adobe.com/flex/spark"

xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()">

<s:layout>

<s:BasicLayout/>

</s:layout>

<fx:Script>

<![CDATA[

import mx.controls.Alert;

import mx.events.CloseEvent;

private var conn:LocalConnection;

private function init():void{

sendLocalCon();

}

//if the app is first running

private function sendLocalCon():void{

try{

conn = new LocalConnection();

conn.addEventListener(StatusEvent.STATUS, onLocalConStatus);

conn.send("myConn","localConMethod");

}catch(e:Error){}

}

public function localConMethod():void{}

private function onLocalConStatus(event:StatusEvent):void {

switch (event.level) {

case "status":

Alert.show("该应用已经在运行,请检查!","系统提示",4,null,closeApplication);

break;

case "error":

findApplications();

break;

}

}

private function findApplications():void{

conn = new LocalConnection();

conn.client = this;

try {

conn.connect("myConn");

} catch (error:ArgumentError) {

Alert.show("该应用已经在运行,请检查!","系统提示",4,null,closeApplication);

}

}

// private static const JS_CLOSEHTML:String="function closeWindowns(){" +

// "window.opener=null;"+

// "window.open('','_self');"+

// "window.close();"+

// "}";

private function closeApplication(evt:CloseEvent):void{

// ExternalInterface.call(JS_CLOSEHTML);

//检查到应用二次运行时,程序该做的事情

}

]]>

</fx:Script>

<fx:Declarations>

<!-- 将非可视元素(例如服务、值对象)放在此处 -->

</fx:Declarations>

<s:Panel title="应用只运行一次示例" x="35" y="33" width="168"/>

</s:Application>

MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值