- 浏览: 385245 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
h416373073:
重新加深印象了 谢谢博主
JAVA虚拟机参数说明 -
linsongze2012:
Spring JDBC注解 -
XiaoXiaoYang37790315:
大神,能详细描述一下么?谢了。。。找一天了
HSQLDB 带Connection的Stored Procedure -
liuxiang00435057:
看不明白说什么,现在正在做这个
HSQLDB 带Connection的Stored Procedure -
yqsshr:
不错 谢谢博主 知道xms xmx及permsize和ma ...
JAVA虚拟机参数说明
事先声明,这篇设计也是因为编辑时间较长,被JAVAEYE给拦截了。这个是实现后的设计文档。
背景:
SPA以及相关基础数据导出是产品的一个附加功能组件,能够将系统的SPA以及相关数据导入导出到安装在其它平台上,实现SPA的导入导出。
解决问题:
主要有两个:
1. 数据库中数据的导入导出。
由于SPA的数据导出到新数据库的时候,原来的数据即时存在的话,也要进行删除,因此,就是直接的数据导入导出的问题。
2. 和数据库相关文件的导入导出问题。
由于SPA中有很多表和很多文件相关联,那么一项处理要求就是将SPA相关联的文件备份出来,然后导入到对应系统的相应目录下。由于不需要保留目标平台的数据,因此,这方面的处理就简单了,直接将系统文件备份出来,覆盖到目标目录就可以了。
不牵涉到改变文件名的问题。
总体来讲,要解决的问题和之前的预想相比,要简单了很多。
设计方案:
1. hibernate +dom4jSession + XML + XPATH+ANT来完成数据库的备份。将数据库的数据通过Hibernate的配置文件,转换为XML的实体,存储在XML文件中。
在隐射文件里面,通过配置node节点,定义这个实体对应的xml文件应该是什么样的。我这里的定义很简单。dingy定义类为node="BaseLine"元素,id定义为@Id属性,属性也转换为下级的元素节点。
在xml中,就是
在Hibernate中,将实体转换为实体,比较方便,主要的操作是取得Session的时候,用EntityMode.DOM4J的方式去取得。返回得到Element列表,怎么将Element组装成Document就不用多讲了。
在导入回去的时候,相当好办。
这是将该node更新回数据库,更新方式是覆盖已有的数据,如果存在的话:)
什么叫覆盖已有?就是数据库ID相同的记录,直接覆盖就OK了。
2. 文件的导入导出
将xml文件压缩为一个文件,其它的各类文件分别也压缩为多个文件,然后统一添加到一个大的压缩文件中。导出的步骤相反。分为两步:
a. 需要借助Ant的Zip和Expand API。
b. 在压缩文件中添加Entry,以及解析Entry,需要用到JAVA提供的文件压缩API。
这个名字其实起得不好。compressFile也是压缩之意,这里的意思是将file添加到Zip的一个入口。
相应的,unCompressFile方法是:
后记:该程序是在前人程序的基础上开发的,据说是之前的牛人写的程序。即便这样,要理解别人的程序还是很难的。特别象我这样,想要理解程序的来龙去脉的时候,更显得艰难。我在不停的Refactor中前行,才能摸清楚程序的意思。
只有维护的时候,才想到如果有一份需求和设计文档就好了。这个完全不是设计文档,也不是程序的流程。思之,想之……
背景:
SPA以及相关基础数据导出是产品的一个附加功能组件,能够将系统的SPA以及相关数据导入导出到安装在其它平台上,实现SPA的导入导出。
解决问题:
主要有两个:
1. 数据库中数据的导入导出。
由于SPA的数据导出到新数据库的时候,原来的数据即时存在的话,也要进行删除,因此,就是直接的数据导入导出的问题。
2. 和数据库相关文件的导入导出问题。
由于SPA中有很多表和很多文件相关联,那么一项处理要求就是将SPA相关联的文件备份出来,然后导入到对应系统的相应目录下。由于不需要保留目标平台的数据,因此,这方面的处理就简单了,直接将系统文件备份出来,覆盖到目标目录就可以了。
不牵涉到改变文件名的问题。
总体来讲,要解决的问题和之前的预想相比,要简单了很多。
设计方案:
1. hibernate +dom4jSession + XML + XPATH+ANT来完成数据库的备份。将数据库的数据通过Hibernate的配置文件,转换为XML的实体,存储在XML文件中。
xml 代码
- <class
- name="Baseline"
- table="baseline"
- node = "Baseline"
- >
- <id
- name="Id"
- type="integer"
- column="ID"
- node = "@Id"
- >
- <generator class="org.hibernate.id.IncrementGenerator"/>
- <!---->id>
- <property
- name="UserMetricsId"
- column="USER_METRICS_ID"
- type="integer"
- not-null="false"
- node = "UserMetricsId"
- length="11"
- />
- ……
在xml中,就是
xml 代码
- <BaseLine Id="">
- <UserMetricsId>8<!---->UserMetricsId>
- <!---->BaseLine>
java 代码
- session = sessionFactory.openSession();
- dom4jSession = session.getSession(EntityMode.DOM4J);
- dom4jSession.createQuery(xpath).list();
在导入回去的时候,相当好办。
java 代码
- dom4jSession.replicate(className, node,ReplicationMode.OVERWRITE);
什么叫覆盖已有?就是数据库ID相同的记录,直接覆盖就OK了。
2. 文件的导入导出
将xml文件压缩为一个文件,其它的各类文件分别也压缩为多个文件,然后统一添加到一个大的压缩文件中。导出的步骤相反。分为两步:
a. 需要借助Ant的Zip和Expand API。
java 代码。
- private void zipFiles(File destFile, String dataPath, List includeFiles) {
- Project project = new Project();
- Zip zip = new Zip();
- zip.setProject(project);
- zip.setTaskName("default");
- zip.setDestFile(destFile);
- FileSet fs = new FileSet();
- fs.setDir(new File(dataPath));
- if(includeFiles!=null && includeFiles.size()>0){
- for (Iterator iter = includeFiles.iterator(); iter.hasNext();) {
- String element = (String) iter.next();
- fs.setIncludes(element);
- }
- }
- zip.addFileset(fs);
- zip.setCompress(true);
- zip.setEncoding("GBK");
- zip.execute();
- }
java 代码
- /**
- * 将源文件unzip到目的文件,覆盖安装。
- * @param srcFile
- * @param destFile
- */
- public void unzipFile(File srcFile, File destFile){
- Project project = new Project();
- Expand expand = new Expand();
- expand.setProject(project);
- expand.setSrc(srcFile);
- expand.setEncoding("GBK");
- expand.setOverwrite(true);
- expand.setDest(destFile);
- expand.execute();
- }
b. 在压缩文件中添加Entry,以及解析Entry,需要用到JAVA提供的文件压缩API。
java 代码
-
- public void compressFile(File file,String entryName) throws IOException{
- zos.putNextEntry(new ZipEntry(entryName));
- BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
- int n = 0;
- while (n != -1) {
- n = bis.read();
- if (n != -1) {
- zos.write(n);
- }
- }
- bis.close();
- zos.closeEntry();
- }
相应的,unCompressFile方法是:
java 代码
- public void unCompress(ZipFile zipFile, String entryName, File destFile) throws IOException{
- ZipEntry ze = zipFile.getEntry(entryName);
- if(ze!=null){
- BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(ze));
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
- int n = 0;
- while (n != -1) {
- n = bis.read();
- if (n != -1) {
- bos.write(n);
- }
- }
- bos.close();
- bis.close();
- }
- }
后记:该程序是在前人程序的基础上开发的,据说是之前的牛人写的程序。即便这样,要理解别人的程序还是很难的。特别象我这样,想要理解程序的来龙去脉的时候,更显得艰难。我在不停的Refactor中前行,才能摸清楚程序的意思。
只有维护的时候,才想到如果有一份需求和设计文档就好了。这个完全不是设计文档,也不是程序的流程。思之,想之……
发表评论
-
mysql开发工具套件
2008-05-21 00:35 2323mysql4.0不支持嵌套查询,需要转换到mysql5 ... -
数据基线改版
2008-03-19 22:04 1023由于底层实体工具改动,数据基线生成程序不得不重新改写。以 ... -
.NET SQLITE编程
2007-07-18 22:46 1869OK,今天终于完成了第一部分。 ... -
批处理概念误解
2007-07-05 16:51 1339今天被同事指出了程序中的一个性能问题,主要是关于 ... -
BUG Tracing
2007-05-31 22:09 1947今晚老大让我帮他解决一个BUG,该BUG出来得 ... -
批量删除
2007-05-31 10:55 1300java 代码 public void del ... -
事务是在DAO还是在Service
2007-05-29 16:40 1694今天下午和新来的同事聊起技术研究来了,大家都有一 ... -
Hibernate Sync DAO封装小结
2007-05-24 21:05 5265转一篇我在项目BLOG上写的文章。搞Hibernate Syn ... -
DBUnit实践
2007-05-21 23:12 3988经过下午和晚上的摸索,基本上已经搞定了DBUni ... -
preparedStatment与Statement的区别
2007-04-25 22:00 2763如果一个sql语句很复杂,包含多条SQL语句的话 ... -
hsqldb Cached Table转变
2007-04-21 15:00 2928之前,使用HSQLDB的时候没有考虑客户端内存的 ... -
SQL变化到极致
2007-04-18 23:04 1301sql 代码 select ... -
hsql script文件加密
2007-04-14 19:28 2159现在的应用中并没有对hsqldb的script ... -
磁盘I/O也能够让程序不正确
2007-04-13 19:29 2706HSQLDB数据库执行SHUTDOWN命令,如果 ... -
Hibernate Session中文翻译
2007-04-12 14:28 3151确实是相当好。这几天正忙着维护以前开发的系统基 ... -
HSQLDB Create View
2007-04-05 09:52 1747HSQLDB Create VIEW是创 ... -
hql in depth
2007-04-04 15:43 3477这个问题其实相当简单,但是,我在之前开发当中就 ... -
HSQLDB 带Connection的Stored Procedure
2007-04-02 14:03 2851先抱怨几句: javaeye出问题了,我写了一篇文章,点击提 ... -
数据库单元测试
2007-03-30 19:00 2304Agile在国内已经流行了很长一段时间了,有各个方面的 ...
相关推荐
全自动洗衣机PLC控制与智能交互系统:基于西门子S7-1200和TP700触摸屏程序的Z03实践(使用博途v15.1及IO表),题目二全自动洗衣机PLC控制西门子S7-1200和TP700触摸屏程序Z03,博途v15.1,带IO表 ,Z03全自动洗衣机; PLC控制; 西门子S7-1200; TP700触摸屏程序; 博途v15.1; IO表,全自动洗衣机PLC控制S7-1200与TP700触摸屏程序Z03(博途v15.1,带IO表)
617d773df6bb6cf9ae5ac5e95da7b096.part2
基于S7-200 PLC与组态王技术的分拣系统:大小球颜色、大小及材质的智能识别与控制,No.883 基于S7-200 PLC和组态王大小球颜色大小材质分拣 ,核心关键词:S7-200 PLC; 组态王; 大小球; 颜色; 大小; 材质; 分拣; 识别。,基于S7-200 PLC的组态王分拣系统:大小球颜色材质综合管理
基于距离调控的变频器加减速带参数子程序控制策略,根据距离控制变频器加减速带参数子程序。 可以根据设置的加速距离和减速距离输出变频器的输出频率。 ,核心关键词:距离控制;变频器;加减速带参数;子程序;输出频率。,基于距离控制的变频器加减速参数子程序
基于StyleGAN的草图到服装图像的生成方法.pdf
C#开发高效能3D点云可视化软件,支持CSV表格数据导入与渲染处理,使用C#语言开发的3D点云显示软件,以CSV表格格式读取 ,核心关键词:C#语言开发;3D点云显示软件;CSV表格格式读取;点云数据可视化。,C#开发的3D点云显示软件:CSV格式数据读取与展示
"基于机会约束规划理论的含可再生能源热电联供微网优化研究:考虑源荷不确定性的微网模型及其优化策略的复现与验证",考虑源荷不确定性的热电联考虑源荷不确定性的热电联供微网优化 复现《含可再生能源的热电联供型微网经济运行优化》,采用粒子群算法,采用机会约束规划理论出力源荷不确定性,采用概率方法来表达,目标函数代码完美复刻了文献中的目标函数和约束条件,约束部分采用清晰简明的等式和不等式部分,方便理解,采用罚函数的形式形成最终目标函数值。 本程序包括确定性模型和不确定性模型两部分程序代码,方便对照学习微网优化 ,核心关键词: 热电联供微网优化; 源荷不确定性; 粒子群算法; 机会约束规划理论; 概率方法; 目标函数; 约束条件; 确定性模型; 不确定性模型。,粒子群算法驱动的含源荷不确定性的热电联供微网优化程序
968a658a40c897eb4452d8718cf0f8e6.part2
B超技术:相控阵超声波的逐点与目标级聚焦策略——基于DAS算法与K-wave工具箱的应用研究,B超 算法 相控阵 超声波 逐点聚焦 目标级聚焦 DAS算法 K-wave工具箱 ,B超; 算法; 相控阵; 超声波; 逐点聚焦; 目标级聚焦; DAS算法; K-wave工具箱,"B超成像技术:相控阵超声波算法与DAS、K-wave工具箱的联合应用"
MATLAB仿真:Delta并联机器人的正逆运动学分析与Simulink及Simscape仿真研究,MATLAB仿真 delta并联机器人 simulink simscape仿真 正逆运动学 ,MATLAB仿真; delta并联机器人; Simulink; Simscape仿真; 正逆运动学,MATLAB仿真:Delta并联机器人正逆运动学分析的Simulink与Simscape应用
车辆路径智能优化算法:多维度策略与参数调整的物流配送研究,车辆路径智能算法包括如下: 1.遗传算法车辆路径优化 2.蚁群算法路径优化3.粒子群算法路径优化4.模拟 火算法路径优化 5.节约算法CW路径优化 6.人工鱼群路径优化。 节约算法车辆路径 遗传算法车辆路径,物流配送,带时间窗和载重量约束改进,vrp,cvrp ,vrptw物流配送,路径优化,车辆配送。 遗传算法路径优化,软时间窗,硬时间窗,客户满意度,物流选址,车辆路径,物流配送。 matlab完整代码,可修改坐标,需求和时间窗 和算法等相关参数。 ,核心关键词: 遗传算法车辆路径优化; 蚁群算法路径优化; 粒子群算法路径优化; 模拟退火算法路径优化; 节约算法CW路径优化; 人工鱼群路径优化; 物流配送; 车辆路径优化; 软时间窗; 硬时间窗; 客户满意度; 物流选址; MATLAB完整代码。,智能算法在车辆路径优化中的应用
matlab实现GA-BP时序预测完整程序+数据
基于特征的表面表达模型–体参数化模型转化方法.pdf
基于LSTM算法的换道轨迹预测:LC轨迹特征数据的MATLAB编码实现与解析,可用于LSTM道轨迹预测的LC轨迹特征数据 . MATLAB coding 道历史轨迹特征(i80,US101):横纵向速度,横纵向加速度,轨迹坐标,向左OR向右道标志,时间列,车辆id; ,LSTM; 轨迹特征数据; MATLAB coding; 换道历史轨迹; 横纵向速度; 横纵向加速度; 轨迹坐标; 车辆id; 车辆换道方向(向左OR向右); 时间列,LSTM换道轨迹预测:MATLAB代码与LC轨迹特征数据融合研究
基于OpenSees的梁柱节点建模与十字节点模拟分析:深入探讨JOINT2d与beamColumnJoint单元的应用,基于opensees梁柱节点建模 十字节点模拟 [1]采用JOINT2d节点单元或者element beamColumnJoint单元,采用Pinching4材料模型考虑核心区剪切行为和粘结滑移效应; 也可以使用hysteretic本构0长度单元模拟节点变形,2种代码均有。 [2]价格包括模型建模代码和1对1指导教学; [3]计算Pinching4材料的Membrane-2000小程序 梁端加载滞回代码 参考文献:基于OpenSees的装配式混凝土框架节点数值模拟方法研究-曹徐阳; ,核心关键词: OpenSees建模; 梁柱节点; JOINT2d节点单元; element beamColumnJoint单元; Pinching4材料模型; 核心区剪切行为; 粘结滑移效应; hysteretic本构0长度单元; 节点变形; 模型建模代码; 1对1指导教学; Membrane-2000小程序; 梁端加载滞回代码。,OpenSees梁柱节点建模:十字节点模拟与材料行为分析
中医院问诊系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
LabVIEW与PLC数据通信:深入解析与程序源码实例,labview和PLC数据通信 程序源码 ,Labview; PLC数据通信; 程序源码,LabView与PLC数据通信的程序源码示例
基于三菱PLC与组态王技术的自动化立体车库堆垛书架控制系统研究与应用第1100例实践,No.1100 基于三菱PLC和组态王组态自动化立体车库控制堆垛书架 ,三菱PLC; 组态王组态; 自动化立体车库; 控制; 堆垛书架,基于三菱PLC与组态王控制的立体车库堆垛书架自动化系统
2024薪酬最高的十大专业(2025.01.30)
移相全桥DSP数字控制开关电源开发板:基于TMS320F28034主控的完整设计与资料包,移相全桥DSP数字控制开关电源开发板 主控TMS320F28034,提供原理图,详细功率计算书,设计说明书,bom等资料。 ,移相全桥;DSP数字控制;TMS320F28034主控;原理图;功率计算书;设计说明书;BOM资料;开关电源开发板,高级移相全桥DSP电源开发板,TMS320F28034主控全解析