工作总结 – remote control

RemoteControl项目总结
本文总结了一个名为RemoteControl项目的开发过程,涉及文档开发、数据库设计、前后端开发等内容。使用的技术栈包括MySQL、Spring、Hibernate、JSF/RichFaces等。特别提到了在使用Hibernate时遇到的lazy initialization问题及其解决方案。
工作总结 – remote control

工作周期:2008/04/05 – 2008/05/30

工作流程:文档开发,数据库开发,后台程序开发,前台页面设计,前台页面开发

编程工具:mysql,Spring, Hibernate, JSF/Rich Faces

经验与教训:

文档开发阶段:由于对UML图的不熟悉,在绘制Use case diagram, Activity diagram, Component diagram, Deployment diagram 时均出现了一定问题,用了大概2周时间才完成, 以后需要加强这方面的研究。

数据库开发:DB schema 由Manager设计,只负责录入数据库。在和hibernate结合中,pk的生成方式为native,所以需要在mysql中将pk设为auto increment。此外还需要注意index的设 置,需要考虑到效率问题,对于非重复性字段,需将index设为unique index。

后台程序开发:
1. 使用hibernate时,遇到了经典的lazy initialization 问题。解决方案:没有使用open session in view方法,而是使用Spring在service层进行transaction的管理,当在service方法中需要使用到lazy load的属性时,使用Hibernate.initialization() load出来。在对DAO层测试时,扩展TestCase, 使用BaseCase工具类。

2. JSF与Spring的结合,由于J2EE5已经包含JSF1.2,所以不需要引入额外的包,否则会引起冲突。如果使用JSF1.1,一般需要添加jsf-spring工具包。


a. web.xml:用于获得WebApplicationContext
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

b.Faces-config.xml:
<application>
<variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver
</variable-resolver>
</application>

c. 在managed-bean中注入

3. 因为系统的服务器端使用分层的结构,所以程序之间的通信需要用到RPC方法。Spring目前支持的RPC包括RMI,Burlap/Hessian,Http Invoker和SOAP。方案选择为SOAP,基于XML的网际传输,使用第三方工具Xfire支持。因为用了JAVA5泛型的特性,所以使用起来很方便,不需额外编写aegis文件。在传输object时,对于想lazy load的属性,使用annotation @IgnorProperty声明即可。不过在传输Collection时,这种方法似乎有问题,会抛出session close异常。

配置方法:在WEB-INF下加入XFireServlet-servlet.xml文件,配置SimpleUrlHandlerMapping,并将需要远程访问的服务用XFireExporter声明。在web.xml中配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:org/codehaus/xfire/spring/xfire.xml
classpath:applicationContext.xml
</param-value>
</context-param>

<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
在客户端的ApplicationContext.xml中用XFireClientFactoryBean接收服务。注意XFire需要的jar包比较多,配置的时候要小心。

4. 客户端在发送heartbeat时使用了Spring提供的ApplicationEvent,ApplicationEventPublisher和ApplicationListner,然后再web.xml中配置listener。

5. 在发布Web App时运行一个自定义的初始化方法,只需要继承HttpServlet,在init方法中定义具体过程,然后再web.xml中加入servlet即可。

6. 还有一些零散的经验,包括异常处理机制的定义,log系统使用动态生成表,对java.util.Date, java.util.Calendar与mysql中datetime类型的结合使用等。

前台页面设计:没什么经验,效果一般。
前台页面开发:基本未参与,使用JSF + Rich Faces开发,目前看来有一定局限性。
内容概要:本文介绍了一种基于蒙特卡洛模拟和拉格朗日优化方法的电动汽车充电站有序充电调度策略,重点针对分时电价机制下的分散式优化问题。通过Matlab代码实现,构建了考虑用户充电需求、电网负荷平衡及电价波动的数学模【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)型,采用拉格朗日乘子法处理约束条件,结合蒙特卡洛方法模拟大量电动汽车的随机充电行为,实现对充电功率和时间的优化分配,旨在降低用户充电成本、平抑电网峰谷差并提升充电站运营效率。该方法体现了智能优化算法在电力系统调度中的实际应用价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源汽车、智能电网相关领域的工程技术人员。; 使用场景及目标:①研究电动汽车有序充电调度策略的设计与仿真;②学习蒙特卡洛模拟与拉格朗日优化在能源系统中的联合应用;③掌握基于分时电价的需求响应优化建模方法;④为微电网、充电站运营管理提供技术支持和决策参考。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及优化求解过程,可尝试调整参数设置以观察不同场景下的调度效果,进一步拓展至多目标优化或多类型负荷协调调度的研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值