2018/1/8 学习汇总,kettle简单介绍,集合遍历方式的选择及原理,防止表单重复提交的后台解决方案
昨天因为当前这个二次开发项目的接近尾声,要求我们将生产环境数据库里的数据迁移到现在新的数据库来,但老数据库里是sqlserver而新数据库则是ORACLE,不仅仅面对着数据库数据类型结构不一致的问题,还因为在二次开发的过程中新添了很多字段与表关联.而因为其它工程师都比较忙的原因,写一个通用的数据迁移工具类的重任就交到了我头上.一开始的思路是利用XML加数据落地(比如先使用一个excle暂存)的方式,实现生产环境数据库字段到开发环境数据库表字段的手动映射.后来感觉工作量巨大而且用起来估计也很麻烦,于是便百度(原谅我没FQ,所以用不了谷歌)寻求解决方案,结果真找到了一个,还是可视化的那种.kettle,能自定义sql加自定义字段映射实现数据库的输出和输入并且自动根据数据库类型来转换数据格式,还可以添加定时任务.完全解决了我们现在的需求.非常强大而且好用,强推!
关于集合遍历,不知道大家最喜欢用的是哪一种?其实想一想也知道是foreach了,但各个集合类型使用foreach的时候有什么区别呢?
ArrayList集合,最常用的单列集合,没有之一,但是遍历大量数据的时候,你会发现你使用for(i=0;i<list.size();i++)会比foreach快上%65的速度,那么这是为什么呢?这个只要你点进ArrayList的源码我们就可以发现,ArrayList实现了RandomAccess接口,这个接口和Cloneable,Serializable接口一样,只是起到一个声明没有任何实质性的实现的作用.它的作用是声明ArrayList是一个随机存取集合,所谓随机存取并不是说像Set那样不记录存取顺序的,而是指各个元素之间没有任何关联关系.而相对的有序存取集合则是LinkedList,每个元素之间都有关联关系.ArrayList使用foreach很慢的原因也在这里,foreach底层是使用了iterator迭代器,这个迭代器的原理就是在遍历之前先建立每个元素的关系,而ArrayList本身元素之间没有任何关联,你这样强行建立,要在每个元素中创建一个上一个元素和下一个元素的位置节点,能不慢吗???但是如果foreach用在本身就已经有关联关系的集合上,也就是LinkedList,那就很快了,所以在大数据遍历且不能明确传进来的集合类型的时候,为了提高效率最好使用instanceof方法来判断一下类型哦.如下:
if(list instanceof RandomAccess){//判断集合是否是RandomAccess的实现类
for(int i = 0;i<list.size();i++){
//遍历操作
}else{
for(int i : list){
//遍历操作
}
}
}
最后的最后,在防止表单上面,除了可以靠直接在设计层面上做一些设计外,,我们后台也最好能验证一下,提供一个最稳妥的解决方案,首先创建一个能保证ID唯一性的服务,之后先建立一个小表,小表里只存一个字段,就是ID,并以其为主键,存入成功就代表ID是唯一的,继续存大表,存入不成功就代表ID不唯一,直接失败.
2018/1/8 学习汇总,kettle简单介绍,集合遍历方式的选择及原理,防止表单重复提交的后台解决方案的更多相关文章
- 一脸懵逼学习Struts数据校验以及数据回显,模型驱动,防止表单重复提交的应用。
1:Struts2表单数据校验: (1)前台校验,也称之为客户端校验,主要是通过Javascript编程的方式进行数据的验证. (2)后台校验,也称之为服务器校验,这里指的是使用Struts2通过xm ...
- spring boot 学习(七)小工具篇:表单重复提交
注解 + 拦截器:解决表单重复提交 前言 学习 Spring Boot 中,我想将我在项目中添加几个我在 SpringMVC 框架中常用的工具类(主要都是涉及到 Spring AOP 部分知识).比如 ...
- PHP简单利用token防止表单重复提交
<?php /* * PHP简单利用token防止表单重复提交 * 此处理方法纯粹是为了给初学者参考 */ session_start(); function set_token() { $_S ...
- [原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- PHP简单利用token防止表单重复提交(转)
<?php/* * PHP简单利用token防止表单重复提交 */function set_token() { $_SESSION['token'] = md5(microtime(true)) ...
- (转)JavaWeb学习总结(十三)——使用Session防止表单重复提交
如何防止表单重复提交 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复 ...
- java struts2入门学习--防止表单重复提交.OGNL语言学习
一.知识点回顾 防止表单重复提交核心思想: 客户端和服务器端和写一个token,比较两个token的值相同,则非重复提交;不同,则是重复提交. 1.getSession三种方式比较: request. ...
- [原创]java WEB学习笔记34:Session 案例 之 解决表单重复提交
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- java web学习总结(十三) -------------------使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
随机推荐
- Spider_Man_2 の requests模块
一:自我介绍
- Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)
一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法 ...
- javascript数据类型之Array类型
Array类型 除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了.而且,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.虽然ECMAScript数组与 ...
- JavaScript八张思维导图—编程风格
JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...
- maven项目 在eclipse,InteliJ IDEA中的一些问题
转载请注明出处,谢谢! 不论我们用什么ide来编辑我们的代码,最终的产品都会脱离ide来运行:正如燕飞离了巢,正如你离开了家,不期然就会运转出现问题. - 单强 2018年1月26日11:53 大家是 ...
- {style}/index_article.htm {style}表示什么意思啊
LS有点安全意识好不好.... 在你的后台系统设置有个"模板默认风格:________ cfg_df_style " 默认是default也就是 {style}=模板路径+模板默 ...
- 一个简单的div弹出层的小例子
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 服务器大量的fin_wait1 状态长时间存在原因分析-1
上文描述了在出现大量fin-wait-1出现的原因,占用的内存等,这里讲一下如何处理这种情况. 首先,fin发送之后,有可能会丢弃,那么发送多少次这样的fin包呢?fin包的重传,也会采用退避方式,在 ...
- 智能机器人chatbot论文集合
机器不学习 jqbxx.com-专注机器学习,深度学习,自然语言处理,大数据,个性化推荐,搜索算法,知识图谱 今年开始接触chatbot,跟着各种专栏学习了一段时间,也读了一些论文,在这里汇总一下.感 ...
- Eclipse设置代码自动提示
Eclipse只需几步简单的设置就可以像idea那样代码自动提示了,喜欢的小伙伴可以赶紧动手设置,提升效率. 第一步:打开Eclipse --> Window --> Preference ...