精华内容
下载资源
问答
  • 摘要:介绍京东物流园远程预付费系统,采用智能预付费多用户计量箱ADF300进行远程分合控制,达到预付费使用功能。系统采用现场就地组网的方式,组网后通过现场总线通讯并远传至后台,通过Acrel-3200型远程预付费电能...

    安科瑞 蒋超萍

    江苏安科瑞电器制造有限公司 江苏江阴

    摘要:介绍京东物流园远程预付费系统,采用智能预付费多用户计量箱ADF300进行远程分合控制,达到预付费使用功能。系统采用现场就地组网的方式,组网后通过现场总线通讯并远传至后台,通过Acrel-3200型远程预付费电能管理系统实现配电回路用电的收费和能效管理。

    关键词:预付费电能表;Acrel-3200型;ADF300

    0 概述

    京东西北电子商务基地大楼共7层,各层强电井内已安装我司ADF300多用户计量箱。

    本项目为京东西北电子商务基地大楼提供解决方案。本项目共有ADF300多用户预付费计量箱7台,针对本栋7层大楼的办公用电实现用电的智能化管理,通过安科瑞终端预付费电能计量表计ADF300来集中计量每个办公用户的用电量,以保证先收费后用电。

    1 系统结构描述

    本监控系统主要实现京东西北电子商务基地大楼项目远程预付费电能管理系统,对配电箱的末端用户配电系统进行收费管理;监控现场7台ADF300多用户预付费计量箱,485总线手拉手连接到后台,实现总线上仪表与监控主机的数据连通,完成收费管理的系统功能。

    本监控系统采用分层分布式结构,即站控层,通讯层与间隔层;如图(1)所示:

    在这里插入图片描述
    图(1)网络拓扑图

    间隔设备层主要为:预付费多功能电表。这些装置分别对应相应的一次设备安装在电气柜内,这些装置均采用RS485通讯接口,通过现场MODBUS总线组网通讯,实现数据现场采集。

    网络通讯层主要为:串口服务器,其主要功能为把分散在现场采集装置集中采集并传至站控层,完成现场层和站控层之间的数据交互。

    站控管理层:设有高性能塔式服务器、显示器、UPS电源、打印机等设备。监控系统安装在服务器上,集中采集显示现场设备运行状况,以人机交互的形式显示给用户。

    以上网络仪表均采用RS485接口和MODBUS-RTU通讯协议,RS485采用屏蔽线传输,一般都采用二根连线,接线简单方便;通讯接口是半双工通信即通信的双方都可以接收、发送数据但是在同一时刻只能发送或接收数据,数据传输速率为10Mbps。

    RS485接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰能力增强,总线上允许连接多达30个设备,传输距离为1.2km。

    2 远程预付费电能管理系统主要功能

    整个系统软件设计分为三个大块,分别是集中抄表服务系统,远程预付费电能管理系统,以及用户查询系统。

    集中抄表服务程序常年运行,不间断定时对所有表进行远程抄表;远程预付费系统包含所有开户、售电、遥控及报表功能。主要特点如下:

    a. 快速配置,即装即用:将电表和通讯管理机配置导入系统就可以使用;

    b. 远程集中抄表:免去人工抄表,电表状态实时性可准确到3分钟以内;

    c. 支持单独计价、多费率、阶梯电价:可对每块电表单独设置电价、费率和阶梯电价;

    d. 远程售电:财务集中管理,电量实时下发,并比对充值次数防止zuo弊;

    e. 数据安全:网络数据传输采用金融级的3DES加密算法,防止数据zuo弊窃电;

    f. 远程控制:可对任意一块电表执行远程拉闸或保电等一系列远程控制操作,方便管理;

    g. 能耗分析及查询:用户和管理员都可查询预付费表或各类接入的计量仪表每天的用能状况;

    传统的IC卡预付费售电管理系统实现了先交费后用电的管理模式,但由于抄收电表数据依赖于购电卡,用户用电数据滞后于发生时间,不仅需要人工抄表,也无法有效进行用电管理、监控和实时控制。

    利用远程预付费电能管理系统,无需IC卡,可以实现计算机远程集中抄表、实时监控、远程充值和远程控制,物管部门即可完成整个抄表、收费、控制和核查工作,实现高度信息化和自动化,大大提高用电营销管理效率和水平,节约人力物力的同时,也提高了经济效益,同时还具有防信息泄露防窃电的安全功能。

    3 案例分析

    京东物流园远程预付费系统,楼层分配电箱采用安科瑞公司多用户预付费计量箱ADF300,该仪表主要测量电度值、剩余电量、剩余金额等电参量。

    现场实现了以下功能:

    1.集中抄表服务系统

    集中抄表服务程序包含三大模块,除了常年运行的定时对所有仪表进行集中远程抄表以外,还集成了报警短信发送服务,能将电费金额预警和欠费预警自动生成手机短信自发送给对应的用户,该功能需要与硬件短xin猫配合使用。

    系统默认半小时对所有表进行一次远程集中抄表,时间间隔支持个性化配置。

    2.远程预付费电能管理系统

    本系统分为五大模块,分别是操作员登陆模块、系统配置模块、用户(商铺)管理模块、售电管理模块、报表中心模块,系统大致运行和操作流程如下:
    在这里插入图片描述
    本系统所有的报表及记录查询,都支持excel格式导出的功能。

    a) 登陆管理:管理操作员账户及权限分配,查看系统日志等功能;

    b) 系统设置:对建筑、仪表及默认参数进行配置;

    c) 用户管理:对商铺用户执行开户、销户、远程分合闸、抄表导出及记录查询等操作;

    d) 售电管理:对已开户的表进行远程售电、退电、冲正及记录查询等操作;

    e) 报表中心:提供售电财务报表、用能报表、报警报表等查询。

    系统针对商铺开户不仅支持一户一表,也支持一户挂多表的需要;同时支持和解决了项目改造后新老表切换时,老表金额转入的问题;支持峰谷电价,支持一表一电价;可对单表设置功率过载的阈值,也支持设置单表金额报警的两级阈值。
    在这里插入图片描述
    批量远程操作场景中,系统提供了多项功能,针对开户、报警1、报警2、欠费、未开户、失联状态都有不同的颜色显示;并且支持远程对仪表进行遥控,遥控的命令类型如下:

    1.电价下发;2.设置下发(下发报警金额阈值和过载功率阈值);3.保电(强制仪表合闸);4.恢复预付费(欠费自动跳闸的模式);5.拉闸(强制断电);6.抄表导出(导出当前所有表状态为EXCEL)
    在这里插入图片描述
    系统还将电能计量仪表接入系统,进行远程集中抄表后,提供了辅助的能耗查询报表,为能耗分析、用能比对和安全用电提供强有力的依据。该功能用于替代部分能耗分析和管理系统的功能

    在这里插入图片描述
    系统还提供了多个报表以供查询,分别是日/月/年财务销售统计报表、失联表/通讯管理机查询报表、能耗查询报表、实时报警/历史报警查询报表,支持导出。以下是财务报表和预付费表日用能查询报表:
    在这里插入图片描述
    4 结束语

    随着社会生产的进步,在商业办公楼用电量不断增长、对供电质量要求不断提高的同时,也存在大量拖欠电费的情况,加重了商业办公楼的经营风险。为了使商业办公楼提高电费收缴率,规避恶意欠费造成的经济损失,我公司特提供远程预付费解决方案,系统不但可以预收电费,实现“先交钱、后用电”,又可针对用户有选择性的进行限电。现场通过远程预付费的系统,实现了先交费后用电,可以避免京东西北电子商务基地大楼物业电费垫资问题,从而缓解了物业运营的资金压力,防止了私接偷电的问题。

    参照标准:

    ISO/IEC11801 《国际综合布线标准》

    GB/50198 《监控系统工程技术规范》

    GB50054-2011 《低压配电设计规范》

    IEC 61587 《电子设备机械结构系列》

    DL/T448-2000 《电能计量装置技术管理规程》

    DL/T 698.1-2009 《第1部分:总则》

    DL/T 698.2-2010 《第2部分:主站技术规范》

    DL/T 698.31-2010 《第3.1部分:电能信息采集终端技术规范-通用要求》

    DL/T/814-2002 《配电自动化系统功能规范》

    DL/T5137-2001 《电测量及电能计量装置设计技术规程》

    GB2887 《计算站场地技术条件》

    GB/T18460.3 《IC卡预付费售电系统 第3部分: 预付费电度表》

    展开全文
  • 该教程是毕业设计作品的完整成品,主要基完成于ASP.NET三层架构咖啡厅预约就餐管理系统的设计与实现 本套课程为实战过程录像,包含整个系统的分析、设计全过程和配套源码,课程共80课时,包括咖啡厅管理系统课程...
  • 主要功能1、小程序管理2、小程序在线设置与打包下载3、应用市场4、PC端网站5、后台管理系统6、小程序多用户管理系统7、充值购买与插件试用8、短信验证码注册与商家短信提醒9、支付系统10、模板消息11、教程管理...
  • iBilliken是一个强大的运营管理平台,实时计费提供基于InterAct业务中间件Lilac的接口,与PBX的FICB(强插强拆)卡板、InterAct IVR2000配合实现预付费客户一分钟拆线警示和话费用尽拆线功能,还提供多种业务统计...
  • 文章管理系统:对文章详细内容、所属栏目、访问量、评论、分享操作、底部菜单、关联文章等进行管理。 预约报名:报名设预约报名期,在期限内预约用户进行报名。预约报名期内,用户通过填写和提交个人信息的方式...
  • 用户短信管理——可向指定用户或某一类型用户群发短信,可批量删除指定用户、指定内容、指定时间段、已读或未读 ------------------- 网站公告管理——发布网站最新公告,首页滚动字幕显示 用户站点类别——支持...
  • 活动现场管理系统 v1.0 是一套活动现场电子网络管理系统,可在线进行 web 应用,无需客户端,可联网操作、可单机操作、可在投影大屏上适时显示,包含了一般活动出席人员签到、竞赛活动选手评分、电子摇号、选举唱票...
  • 智慧公寓(写字楼)综合管理系统,以物联网为基础,给出了能源网络预付费及智能家居解决方案,在切实改变传统管理模式的同量,有效提升了智慧化入住体验,提高了行业竞争力。 功能特点: 1.改变传的人工抄表后付费...
  • 分析了OCS在线计费系统处理用户资源申请的原理与模型,提出了解决预付费情况下用户同时使用同一个帐户进行资源申请时的资源分配方案。该方案通过机器学习改变资源分配的限定额,再定期地针对每个帐户进行计算...
  • 后来又增加了用户信用控制功能,负责实时计算预付费用户现金余额,对欠费用户实施即时停机。随着电信企业的不断发展,BOSS也在逐渐完善并增强功能,逐渐包括了资源管理系统、客户服务系统、以及与银行等外界的接口,...
  • 无线自动抄表系统 Wireless Automatic Meter Reading system 全自动、网络化抄表收费系统,完全...企业级的管理系统,远程网络化缴费及用户管理;具有统计查询、业务报表生成、单证打印等功能,为管理提供更方便;
  • 商城默认中的用户积分和存款兑换比率一直是一比二,很多用户不知如何修改,本次更新中增加了用户积分和存款兑换比率设置,在后台可以方便的设置兑换比率,方便用户进行修改设置。 二六、帮助中心栏目无限量...
  • 3、会员等级管理,一站搞定零售、批发、代销; 4、可集成网站分销功能模块,缔造庞大的代理业务链,代理客户一键铺货; 5、代码严谨,防SQL注入;前后台用户分开管理,密码不可逆加密; 6、简单易操作、只需几...
  • ssh框架的线程问题

    千次阅读 2014-03-10 09:59:44
    在网络版的预付费售电管理系统和农排售电管理系统在现场长期运行的过程中,出现了以下几个问题: 1、购电记录重复(相同购电次数有条购电记录存库,购电金额等数据有可能完全一样,也可能都不一样,但共同点是...

    在网络版的预付费售电管理系统和农排售电管理系统在现场长期运行的过程中,出现了以下几个问题:

    1、购电记录重复(相同购电次数有多条购电记录存库,购电金额等数据有可能完全一样,也可能都不一样,但共同点是入库时间很接近);2、同一块儿电表被分配给了多张电卡或者同一个电卡开户给了多个用户。 
    在分析、解决现场问题的过程中逐渐发现:问题的出现是因为我们忽略了多线程并发编程中对共享资源的同步问题。 
    什么时候必须同步?什么叫同步?如何同步? 
    要跨线程维护正确的可见性,只要在几个线程之间共享非 final 变量,就必须使用 synchronized(或 volatile)以确保一个线程可以看见另一个线程做的更改。 
    为了在线程之间进行可靠的通信,也为了互斥访问,同步是必须的。这归因于java语言规范的内存模型,它规定了:一个线程所做的变化何时以及如何变成对其它线程可见。 
    因为多线程将异步行为引进程序,所以在需要同步时,必须有一种方法强制进行。例如:如果2个线程想要通信并且要共享一个复杂的数据结构,如链表,此时需要确保它们互不冲突,也就是必须阻止B线程在A线程读数据的过程中向链表里面写数据(A获得了锁,B必须等A释放了该锁)。 
    为了达到这个目的,java在一个旧的的进程同步模型——监控器(Monitor)的基础上实现了一个巧妙的方案:监控器是一个控制机制,可以认为是一个很小的、只能容纳一个线程的盒子,一旦一个线程进入监控器,其它的线程必须等待,直到那个线程退出监控为止。通过这种方式,一个监控器可以保证共享资源在同一时刻只可被一个线程使用。这种方式称之为同步。(一旦一个线程进入一个实例的任何同步方法,别的线程将不能进入该同一实例的其它同步方法,但是该实例的非同步方法仍然能够被调用)。 
    下面以解决“购电记录重复”问题为实例阐述我们在SSH框架中的线程同步解决方案。 
    针对“购电记录重复”问题,我们在设计之前就想到过这个问题,而且也采取了预防措施:在购电时从界面上传入一个读卡读到的“购电次数”,在存库时与数据库中存储的“购电次数”进行比较,只有在界面传入的购电次数小于库中存储的“购电次数”时才允许存库。但这个问题依然在出现。原来我们以上的预防措施仅仅适用于不并发执行任务的场合,对于BS结构中天生的多线程编程模式基本不起作用,仅仅是使这个现象出现的概率变小了、更不容易发现问题了,但并没有完全解决问题。同一个用户在两个客户端执行购电业务或者是同一个客户端重复提交多次存库操作,此时就出现了多个线程对数据库资源IC卡档案中的“购电次数”的共享现象。在第一个线程还未完全提交更改后的IC卡“购电次数”之前,第二个线程如果也执行存库操作,走到“验证购电次数是否合法”这一步,此时取到的IC卡“购电次数”还是更改前的购电次数,因此验证结果合法,最终导致的结果是同一个购电次数入库两条购电记录。如果是更多的线程执行类似的操作,会有更多的重复购电记录。 
    解决方法找到了,我们需要对共享资源--数据库中存储的IC卡状态、IC卡“购电次数”执行同步处理:在第一个线程未将修改后的IC卡“购电次数”成功提交之前,不允许其他线程读取IC卡“购电次数”以执行“验证点次数是否合法”操作。其他线程需要等待,直到第一个线程成功提交事务,并且释放对象锁。接下来就是在代码中具体解决该问题了。 
    首先想到的是:在Dao层(ArSalemgrDaoImpl)锁定IC卡对象,例: 
    public boolean saveDailysale (final DailysaleForm dailysaleForm) { 
    YcArIccustomer ycArIccard = findArIccard(dailysaleForm.getCardid()); 
    synchronized (ycArIccard) { 
    。。。。。。 
    if((ycArIccard.getMtrbuytimes())>(dailysaleForm.getBuytimes())){//如果库里的购电次数与界面传入的购电次数不一致,则不再向下执行 
    return false;} 
    。。。。。。 
    session.save(ycArIccard); 
    } 
    } 
    测试结果:问题未解决。经过断点调试,打印出几次线程取到的购电次数观察,发现该同步措施不起作用,该代码段执行完成之后,并未提交结果入库,后面的线程读到的购电次数依然是修改前的购电次数。我们在整个函数saveDailysale之前加同步限制测试的结果也是如此。 
    问题出在什么地方呢?在SSH框架中,有spring通过作用于service函数进行事务控制,只有整个service函数执行完成,才会执行存库提交操作。 
    因此,方案二:我们在service层(ArSalemgrServiceImpl)中对购电时的存库函数执行同步操作,例: 
    public synchronized boolean saveDailysale(DailysaleForm dailysaleForm){ 
    return arYcSalemgrDao.saveDailysale(dailysaleForm); 
    } 
    经过断点调试、观察,在第一个线程执行完saveDailysale函数后,成功地提交了修改后的结果,在数据库中已经看到了修改后的数据。但执行下一个线程的时候,取到的IC卡购电次数依然是修改前的购电次数,因此“购电记录重复”的问题还没有解决。 
    在Dao层(ArSalemgrDaoImpl)的函数saveDailysale中增加以下的代码段: 
    session.flush(); 
    session.clear(); 
    问题彻底解决,原来是session缓存的问题导致了后面线程取到的IC卡“购电次数”跟数据库中的结果不一致,只需刷新一下缓存,问题解决了。 
    以上列举的是现场较多出现的问题,我们的系统中估计还有一些这样类似的因缺少对共享资源同步控制造成的问题,只是问题出现的概率小或者是还没有出现过。以前在编码的时候缺乏经验,我从没有意识到并发同步问题,现在也只是刚开始了解,目前能够想到和说到的只有这些,这只是我的个人理解,有些说法未必正确、有些考虑可能还有不够全面的地方,请大家多提提意见,当是互相交流、互相提高吧。 

    展开全文
  • 华为融合计费系统帮助Mobile-8实现了端到端的全网融合计费和融合管理。运营商对全网客户有统一的视图,全网客户可享受一样的业务、特性...在Mobile-8占大比例的预付费用户可以享受到较以往更的服务、资费套餐和优惠。
  • 系统具有多级帐户管理功能,这一点特别适合集团用户进行信息化部署或开设行业数字杂志门户。以某省电力集团公司为例,只需在省级系统建立一套数字杂志系统,就能划分出《企业简报》、《企业文化内刊》、《光荣榜》等...
  • 产品不可读的目录,可以上传到服务器上的,所以只有授权和付费用户可以下载它。定制产品您可以设定任何类型的产品不只是网页寄存。唯一的顺序启动/暂停/重新启动/终止电子邮件发送的任何产品。系统可以执行任何...
  • 7. 将系统设定中的‘开机显示通知栏图标’改为‘开机启动’和‘显示图标’两个独立选项,增加定制的灵活性。 [新增] 1. 选定一个记录后,只需轻摇手机即可复制用户名或密码到剪贴板,再粘贴到其他程序中使用。 2. ...
  • 多用户智能电表,预付费电能管理系统 1 项目概述 大唐天城项目是由大唐地产广西信地投资有限公司打造的南宁西乡塘区最大规模综合体,位于南宁市西乡塘区明秀路及北湖路交汇处,地处南宁轨道交通5号线地铁站出口,是...

    摘要:介绍大唐天城能源计量费控云平台的结构及功能,采用多用户智能电表和智能水表,采集各用户实时用电量及用水量,实现能源的远程抄表查询及能源费控管理。
    关键词:大唐天城;能源计量费控系统;多用户智能电表,预付费电能管理系统

    1 项目概述
    大唐天城项目是由大唐地产广西信地投资有限公司打造的南宁西乡塘区最大规模综合体,位于南宁市西乡塘区明秀路及北湖路交汇处,地处南宁轨道交通5号线地铁站出口,是不可多得的商业宝地。自2019年9月盛大开业,已成为汇集时尚消费、休闲娱乐的一站式购物中心,是周边非常有影响力的大型商业综合体。为提升商管服务质量,优化资金结构,简化能源费用缴纳流程,拟建设能源计量费控系统一套,配合汉光电气各类预付费智能仪表,实现能源的远程抄表查询及能源费控管理,本项目建设范围涵盖物业所管辖的商场、公寓及办公楼等。
    在这里插入图片描述
    2 系统方案
    HK-BEMS-CLOUD能源计量费控云平台无缝集成商管物业、集团总部、校园公寓等分布式汉光DDSY9866/DTSY9866、PD866EZ系列智能预付费电表和智能水表,根据实际情况进行就地组网,在各单体楼弱电间位置放置一台采集器,现场智能采集电表、水表通过手拉手方式接入采集器。
    方案产品 系统配置
    智能电表 商场店铺:PD866EZ多用户预付费电表,D□ZY9866导轨式智能费控电表;
    写字楼、公寓:PD866EZ多用户预付费智能电表。
    采集通讯和用户终端 串口采集服务器HKNC,下行4路RS485通讯,业主或租户移动端APP(小程序)查询和缴费,商管物业PC端监控管理。
    商业计量费控 HK-BEMS-Cloud实现电、水等能耗计量费控充值、远程用能通断管理。支持用能信息查询、欠费报警提醒、充值到账提示等。

    3 平台架构
    HK-BEMS-CLOUD计量费控系统由远程抄表、费控管理、云端管理等三大模块组成,系统云平台架构,用户可节约主站服务器和监控中心环境配置成本。
    在这里插入图片描述
    远程抄表费控是指根据用户预先缴纳费用,由系统定时测算用户剩余电费情况,与设置的报警金额、停电金额等基准值进行比较,将预警、跳闸及合闸复电等控制命令通过网络远程下发给智能电表,由智能仪表执行控制命令。
    在这里插入图片描述
    4 平台功能
    ◎ 费控管理功能
    包括开户、充值/撤销、销户、数据查询、透支用电、恶性负载识别等,费控管理可绑定物业费收缴,用户欠费自动报警或拉闸。
    在这里插入图片描述
    ◎ 远程抄表管理
    括电表建档、实时/定时抄表、远程充值、拉闸/合闸、数据查询分析等多种组网通讯下的数据云端存储和统一管理功能,支持日、月、年用电查询,柱状图、饼图、趋势图等用能展示分析。
    在这里插入图片描述
    ◎ 云端管理
    包括云平台架构、云数据处理、移动端“掌电宝”APP/小程序、微信公众号、第三方支付联接等查询充值交互服务。
    在这里插入图片描述
    ◎ 移动端“掌电宝”APP/小程序
    具有用能信息查询、用电安全管理、欠费报警提醒、充值到账提示等功能,实现无人值守的水电等物业缴费及远程查询服务。
    在这里插入图片描述
    5 结束语
    随着商业办公和公寓商铺对用电量和供电质量的要求的不断提高,物管目前存在不少拖欠电费-水费-物业费的情况,极大加重了商管的经营风险。为提高商管电费收缴率、规避恶意欠费造成的损失,汉光电气提供全套能源计量费控解决方案,用于AA项目,系统实现“先交钱、后用电”,又可针对不同用户业态进行限电。应用远程预付费系统,还避免物业用能垫资问题,并可防止恶意窃电和警示危险用电。

    参考资料:
    1、《能源计量费控&建筑能效管理解决方案》,广州汉光,TZON.1版
    作者简介:戴金花,女,本科,广州汉光电气股份有限公司,专职于建筑楼宇能源计量与管理系统的研究,E-mail:1041951564@qq.com 微信:15052183915

    展开全文
  • 7. 将系统设定中的‘开机显示通知栏图标’改为‘开机启动’和‘显示图标’两个独立选项,增加定制的灵活性。 [新增] 1. 选定一个记录后,只需轻摇手机即可复制用户名或密码到剪贴板,再粘贴到其他程序中使用。 2. ...
  • 系统由软件、网络、用电管理器、控电机柜等组成,不用电表一般采用TCP/IP协议或485总线方式通讯,用于学校宿舍。 主要优点:不用电表,可以利用现有的宽带网络 主要缺点:买电用电都由软件中控制,当用户质疑用电...
  • 在网络版的预付费售电管理系统和农排售电管理系统在现场长期运行的过程中,出现了以下几个问题:1、购电记录重复(相同购电次数有条购电记录存库,购电金额等数据有可能完全一样,也可能都不一样,但共同点是入库...
    在网络版的预付费售电管理系统和农排售电管理系统在现场长期运行的过程中,出现了以下几个问题:1、购电记录重复(相同购电次数有多条购电记录存库,购电金额等数据有可能完全一样,也可能都不一样,但共同点是入库时间很接近);2、同一块儿电表被分配给了多张电卡或者同一个电卡开户给了多个用户。
    在分析、解决现场问题的过程中逐渐发现:问题的出现是因为我们忽略了多线程并发编程中对共享资源的同步问题。
    什么时候必须同步?什么叫同步?如何同步?
    要跨线程维护正确的可见性,只要在几个线程之间共享非 final 变量,就必须使用 synchronized(或 volatile)以确保一个线程可以看见另一个线程做的更改。
    为了在线程之间进行可靠的通信,也为了互斥访问,同步是必须的。这归因于java语言规范的内存模型,它规定了:一个线程所做的变化何时以及如何变成对其它线程可见。
    因为多线程将异步行为引进程序,所以在需要同步时,必须有一种方法强制进行。例如:如果2个线程想要通信并且要共享一个复杂的数据结构,如链表,此时需要确保它们互不冲突,也就是必须阻止B线程在A线程读数据的过程中向链表里面写数据(A获得了锁,B必须等A释放了该锁)。
    为了达到这个目的,java在一个旧的的进程同步模型——监控器(Monitor)的基础上实现了一个巧妙的方案:监控器是一个控制机制,可以认为是一个很小的、只能容纳一个线程的盒子,一旦一个线程进入监控器,其它的线程必须等待,直到那个线程退出监控为止。通过这种方式,一个监控器可以保证共享资源在同一时刻只可被一个线程使用。这种方式称之为同步。(一旦一个线程进入一个实例的任何同步方法,别的线程将不能进入该同一实例的其它同步方法,但是该实例的非同步方法仍然能够被调用)。
    下面以解决“购电记录重复”问题为实例阐述我们在SSH框架中的线程同步解决方案。
    针对“购电记录重复”问题,我们在设计之前就想到过这个问题,而且也采取了预防措施:在购电时从界面上传入一个读卡读到的“购电次数”,在存库时与数据库中存储的“购电次数”进行比较,只有在界面传入的购电次数小于库中存储的“购电次数”时才允许存库。但这个问题依然在出现。原来我们以上的预防措施仅仅适用于不并发执行任务的场合,对于BS结构中天生的多线程编程模式基本不起作用,仅仅是使这个现象出现的概率变小了、更不容易发现问题了,但并没有完全解决问题。同一个用户在两个客户端执行购电业务或者是同一个客户端重复提交多次存库操作,此时就出现了多个线程对数据库资源IC卡档案中的“购电次数”的共享现象。在第一个线程还未完全提交更改后的IC卡“购电次数”之前,第二个线程如果也执行存库操作,走到“验证购电次数是否合法”这一步,此时取到的IC卡“购电次数”还是更改前的购电次数,因此验证结果合法,最终导致的结果是同一个购电次数入库两条购电记录。如果是更多的线程执行类似的操作,会有更多的重复购电记录。
    解决方法找到了,我们需要对共享资源--数据库中存储的IC卡状态、IC卡“购电次数”执行同步处理:在第一个线程未将修改后的IC卡“购电次数”成功提交之前,不允许其他线程读取IC卡“购电次数”以执行“验证点次数是否合法”操作。其他线程需要等待,直到第一个线程成功提交事务,并且释放对象锁。接下来就是在代码中具体解决该问题了。
    首先想到的是:在Dao层(ArSalemgrDaoImpl)锁定IC卡对象,例:
    public boolean saveDailysale (final DailysaleForm dailysaleForm) {
    YcArIccustomer ycArIccard = findArIccard(dailysaleForm.getCardid());
    synchronized (ycArIccard) {
    。。。。。。
    if((ycArIccard.getMtrbuytimes())>(dailysaleForm.getBuytimes())){//如果库里的购电次数与界面传入的购电次数不一致,则不再向下执行
    return false;}
    。。。。。。
    session.save(ycArIccard);
    }

    }
    测试结果:问题未解决。经过断点调试,打印出几次线程取到的购电次数观察,发现该同步措施不起作用,该代码段执行完成之后,并未提交结果入库,后面的线程读到的购电次数依然是修改前的购电次数。我们在整个函数saveDailysale之前加同步限制测试的结果也是如此。
    问题出在什么地方呢?在SSH框架中,有spring通过作用于service函数进行事务控制,只有整个service函数执行完成,才会执行存库提交操作。
    因此,方案二:我们在service层(ArSalemgrServiceImpl)中对购电时的存库函数执行同步操作,例:
    public synchronized boolean saveDailysale(DailysaleForm dailysaleForm){
    return arYcSalemgrDao.saveDailysale(dailysaleForm);
    }
    经过断点调试、观察,在第一个线程执行完saveDailysale函数后,成功地提交了修改后的结果,在数据库中已经看到了修改后的数据。但执行下一个线程的时候,取到的IC卡购电次数依然是修改前的购电次数,因此“购电记录重复”的问题还没有解决。
    在Dao层(ArSalemgrDaoImpl)的函数saveDailysale中增加以下的代码段:
    session.flush();
    session.clear();
    问题彻底解决,原来是session缓存的问题导致了后面线程取到的IC卡“购电次数”跟数据库中的结果不一致,只需刷新一下缓存,问题解决了。
    以上列举的是现场较多出现的问题,我们的系统中估计还有一些这样类似的因缺少对共享资源同步控制造成的问题,只是问题出现的概率小或者是还没有出现过。以前在编码的时候缺乏经验,我从没有意识到并发同步问题,现在也只是刚开始了解,目前能够想到和说到的只有这些,这只是我的个人理解,有些说法未必正确、有些考虑可能还有不够全面的地方,请大家多提提意见,当是互相交流、互相提高吧。
    展开全文
  • 网趣商城ASP源码

    2013-02-17 17:11:35
    商城默认中的用户积分和存款兑换比率一直是一比二,很多用户不知如何修改,本次更新中增加了用户积分和存款兑换比率设置,在后台可以方便的设置兑换比率,方便用户进行修改设置。 二六、帮助中心栏目无限量...
  • 技术架构 数据库服务器主从分离 √ 支持台数据库服务器主从分离、读写分离的模式,方便扩展(需额外付费) 伪静态Rewrite √ 伪静态可以缓解服务器的负担.可以提高关键词排名. 图片云存储 √ 支持阿里云高性能的...
  • 您可以浏览设备的内部结构,如果您是高级用户并且已扎根设备,则可以更改系统数据-备份文件,删除不需要的应用程序等。 如果您是标准用户,则可以选择从视图中隐藏内部存储器,并确保不要与系统混淆。 您可以...
  • 94. 综合预付费业务的主要功能和实现方式? 71 95. 预付费漫游怎样实现机制如何? 72 96. 移动智能网和固网智能网的主要区别? 72 97. 主要的3G智能网协议有那些? 72 98. 3G智能网相比2G智能网而言,新增了什么业务...
  • 网通交换培训教材

    2012-07-10 10:56:19
    2.5 预付费 338 2.5.1 业务简介 338 2.5.2 功能特性 338 2.5.3 一次拨号流程 341 2.5.4 二次拨号 342 2.6 充值业务 343 2.6.1 业务描述: 343 2.6.2 功能介绍 343 2.6.3 业务流程 344 2.7 大众呼叫(MAS)业务 345 ...
  • PHP开发实战宝典

    热门讨论 2011-12-02 07:34:49
    15.11.1 面向对象的用户登录身份验证 306 15.11.2 面向对象的数据分页显示 308 15.12 本章小结 310 15.13 实战练习 310 第16章 PHP加密技术 311 视频讲解:8分钟 16.1 加密技术简介 312 16.1.1 MD5算法 312 16.1.2 ...
  • 我们业务的基础是最好的网络智能包装用例无与伦比的深度和广度的公司,帮助我们的客户了解,优化,自动化和管理用户体验质量(QoE)。我们的目标是提供最佳的与供应商无关的粒度,准确性和自动化客户网络中数据的...
  • realplayer

    2010-08-18 10:57:02
    e) 按照美国法律要求此“软件”包含一系列复制管理系统。 您不得以任何方式规避或尝试规避此系统。 3. 软件副本和增强版。 如果您以电子方式接收到此“软件”的第一份副本,并接收到物理媒体副本(例如,CD、磁盘等...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

多用户预付费管理系统