符合oo惯例的表现层控制

博客指出目前三层结构存在不统一问题,如OO与E - R的不统一,hibernate在解决此问题上表现出色。还提到webclient与服务器端代码融合困难,表现层与服务器端语义脱节,虽有多种解决办法,但都存在客户端代码缺乏基础设施、交互难等问题,最后提及jsf、MDA等可能的发展方向。
Hibernate的reference的副标题叫做:符合java惯例的O/R持久化,这揭示了目前三层结构的重大问题,就是三层的不统一。到目前为止,仍然难于在web界面上实现C/S模式中"master-detail","lookup"的快捷的用户交互。

目前常见的webapplication的结构,包含webbrowser/applicationserver/database。database占据主流的仍然是经典的E/R模型,这个模型是基于行集的,因此在vb/delphi/powerbuilder的实践中,datasource/tableset都是基于行集的,odbc/jdbcdriver也都是基于行集的。view层的DbGrid也是基于行集的,和Entity模型对应得非常好,开发简易直观,相信这是C/S模式得到迅速推广的重点原因之一。“master-detail”,"lookup"都是C/S模式下极为常见和直观的关联模式。

但本质上,Objectpascal/java都是面向对象的。在此,就出现了一次重大的不统一:OOvsE-R。出现的解决方式就是EJB和O/Rmapping工具。EJB的entitybean是早期的entity封装形式。但是和现在以hibernate为代表的先进工具(对POJO执行持久化)比较起来,在OO与ER的对应上显得笨重而难于使用。在这些工具中,代表OO与E-R融合的最本质的功能则是继承树与表结构的对应关系。hibernate2支持整棵继承树与一个表对应、继承树中每个类与一个表对应两种基本的对应关系,而hibernate3引入的join标记则更可以将二者融合,实现每个类可选与基类在同一个表中持久或者在新表中保存部分持久数据,可以说hibernate3把这个对应的任务完成得非常出色。"master-detail","lookup"则对应hbm.xml这样的映射文件中的"one-many","many-one"关联。

database与java的融合完成之后,下一步,不可避免的就是现有的webclient与服务器端代码之间的融合。从表面上看,webclient大多采用html/javascript完成,而服务器端采用java输出,二者是简单的命令/反馈的模型,这个模型从model1发展到MVC的模型后,编写代码变得清晰,但是开发人员仍然发现,编写webapp仍然不是一件简单的事情。struts/webwork仍然只是非常底层的基础,对编写客户端业务对象没有什么帮助。比如说,在服务器端java程序建模时,大家已经习惯用pojo分析订单/客户/产品,但是在编写webclient时,struts/webwork都只能帮助你完成页面提交/反馈的流程,却不能帮助你分析客户端业务:新建订单时,选择了客户之后,判断此客户是否有足够的预收款,这样一个简单用例在程序员心目中的反映仍然是每个字段的inputtag,每个页面post上来的model,以及如何用action的处理再次渲染下一个页面。

最大的问题,就是作为表现层的webclient端代码与服务器端代码蕴含的语义脱节。具体表现在:
在采用struts/webwork这样的MVC结构的时候,通常不会考虑在客户端进行业务控制,比如由javascipt判断预收款是否足够。因此需要不断的多次页面刷新才能完成整个逻辑。

要解决此问题,通常可以采用把业务逻辑部分转移到客户端,以javascript+xmlhttp或javascript+webservice,javaapplet/application,甚至采用office平台(嵌入代码到excel)完成整个业务逻辑。也有很多问题:

1,若要在客户端实现业务逻辑,可能客户端代码没有对应Pojo这样的基础object设施。javascript缺乏如interface这样的基础结构。excel方案在这点更加难于进行,因为整个开发涉及到的语言太多,造成开发难度加大,项目控制困难。
直接后果就是,难于在客户端代码中定义"master-detail","lookup"等关联。就算在项目规划中在javascript中定义pojo(plainoldjavascriptobject)及其关联,也难于利用hbm.xml这样的现成关联描述。

2,客户端基础设施难于进行界面元素绑定。在处理大量数据时,excel方案在此体现出杰出的优势,客户对内置程序的excel的接受程度非常高,但缺点是这种excel程序难于做到xmlhttp可以轻松做到的动态查询等特性。

3,客户端基础设施难于与服务器端进行交互。xmlhttp以及webservice可选,但是在企业应用中其低下效率可能会带来服务器的压力隐患,降低性能和吞吐量。若excel方案,则同样面临着与服务器数据交互的难题。不管是xmlhttp方案还是application方案,都面临着抛弃struts/webwork重新实现request/responsedispatch的要求。

4,客户端基础设施难于进行单元测试。有junit4js,port了junit3.8.1,但没有成熟的stub/mock工具。excel方案在此几乎不可测试。

5,客户端基础设施难于调试。javascript缺乏类似log4j这样的log工具(log4js
http://www.petrusrex.com/Programmes/jslib.htm ;这样的工具还远没有成熟),也难于进行断点跟踪。excel方案倒是有完整的vba环境。

6,客户端基础设施运行效率低。javascipt/vba都是解释语言,难于实现复杂逻辑,其性能决定只能用它们进行细粒度的界面控制。

7,由于浏览器的分裂,造成语言的不标准,应用程序难以跨平台使用。在IE平台上可以使用behavior和expression这种类AOP的操作,却无法在mozilla中实现。

jsf方案有望成为备选方案,但是按照myfaces目前的情况,要实现更多的表现层控件,才能完成更复杂灵活的控制。

下面一次软件开发方式的突破,向前看,可能出现设计方式的突破,MDA是方向;另一个方向就是向后对具体实现的突破,在类似webapp这样的具体技术(除了webapp,application同样面临类似问题)上,对于是否能够把model的定义直接带入到表现层,JSF和.NET可能会有新一轮竞争
12.[判断题] 一个Figure对象能够包含多个Axes对象,每一个Axes都是一个独立的坐标系,绘图过程中的全部图像都是基于坐标系绘制的。 A对 B错 13.[判断题] Artist层:Artist层处于matplotlib的中间层,负责很大一部分繁重的计算任务。Artist层分为两类,一类是原始表现层Primitive Artist,一类是复合表现层Composite Artist。 A对 B错 14.[多选题] matplotlib 架构从逻辑上分为三层,位于三个不同的层级上。分别是: A Figure(对象) B Backend(后端层) C Artist(表现层) D Scripting(脚本层) 15.[多选题] 在使用matplotlib进行绘图之前,很有必要理解matplotlib图像结构的构成。matplotlib图像的容器层包含: A 画板层(Canvas) B 图例(Legend) C 画布层(Figure) D 绘图区/坐标系(Axes) 16.[单选题] 利用pyplot的()函数可在图像中添加文字注释。 A suptitle() B text() C label() D title() 17.[单选题] 散点图中的点都是独立分布的点状、圆圈或其他形状,是数据在直角坐标系平面上的分布,因此可以得到关于数据分布的情况。散点图表示因变量随自变量变化的大致趋势,可以选择适合的方法对数据进行拟合。使用pyplot中的()方法来绘制散点图 A plot() B barh() C bar() D scatter() 18.[单选题] matplotlib绘图库中没有中文字体,中文会显示方框,需要通过手动设置的方式才能正常显示。matplotlib提供了自定义参数()实现手动配置,全称为runtime configuration Parameters,即运行时配置参数。 A unicode B rcParams C Canvas D Parameters 19.[单选题] 网格线多用于辅助查看具体的数值大小,横纵坐标都可以设置相应的网格线,利用()方法为图像设置网格线。 A line() B ax.grid() C axis() 20.[单选题] ()使用常用统计量绘制,是基于五数概括法(最小值,第一个四分位数(Q3),中位数(Q2),第三个四分位数(Q1),最大值)数据的图形汇总,还需要用到四分位数间距IQR(interquartile range)(四分位数间距IQR= 第三个四分位数 - 第一个四分位数)。 A 饼图 B 箱线图 C 散点图 D 直方图
11-07
内容概要:本文提出了一种基于融合鱼鹰算法和柯西变异的改进麻雀优化算法(OCSSA),用于优化变分模态分解(VMD)的参数,进而结合卷积神经网络(CNN)与双向长短期记忆网络(BiLSTM)构建OCSSA-VMD-CNN-BILSTM模型,实现对轴承故障的高【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)精度诊断。研究采用西储大学公开的轴承故障数据集进行实验验证,通过优化VMD的模态数和惩罚因子,有效提升了信号分解的准确性与稳定性,随后利用CNN提取故障特征,BiLSTM捕捉时间序列的深层依赖关系,最终实现故障类型的智能识别。该方法在提升故障诊断精度与鲁棒性方面表现出优越性能。; 适合人群:具备一定信号处理、机器学习基础,从事机械故障诊断、智能运维、工业大数据分析等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①解决传统VMD参数依赖人工经验选取的问题,实现参数自适应优化;②提升复杂工况下滚动轴承早期故障的识别准确率;③为智能制造与预测性维护提供可靠的技术支持。; 阅读建议:建议读者结合Matlab代码实现过程,深入理解OCSSA优化机制、VMD信号分解流程以及CNN-BiLSTM网络架构的设计逻辑,重点关注参数优化与故障分类的联动关系,并可通过更换数据集进一步验证模型泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值