昨天因为当前这个二次开发项目的接近尾声,要求我们将生产环境数据库里的数据迁移到现在新的数据库来,但老数据库里是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简单介绍,集合遍历方式的选择及原理,防止表单重复提交的后台解决方案的更多相关文章

  1. 一脸懵逼学习Struts数据校验以及数据回显,模型驱动,防止表单重复提交的应用。

    1:Struts2表单数据校验: (1)前台校验,也称之为客户端校验,主要是通过Javascript编程的方式进行数据的验证. (2)后台校验,也称之为服务器校验,这里指的是使用Struts2通过xm ...

  2. spring boot 学习(七)小工具篇:表单重复提交

    注解 + 拦截器:解决表单重复提交 前言 学习 Spring Boot 中,我想将我在项目中添加几个我在 SpringMVC 框架中常用的工具类(主要都是涉及到 Spring AOP 部分知识).比如 ...

  3. PHP简单利用token防止表单重复提交

    <?php /* * PHP简单利用token防止表单重复提交 * 此处理方法纯粹是为了给初学者参考 */ session_start(); function set_token() { $_S ...

  4. [原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. PHP简单利用token防止表单重复提交(转)

    <?php/* * PHP简单利用token防止表单重复提交 */function set_token() { $_SESSION['token'] = md5(microtime(true)) ...

  6. (转)JavaWeb学习总结(十三)——使用Session防止表单重复提交

    如何防止表单重复提交 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复 ...

  7. java struts2入门学习--防止表单重复提交.OGNL语言学习

    一.知识点回顾 防止表单重复提交核心思想: 客户端和服务器端和写一个token,比较两个token的值相同,则非重复提交;不同,则是重复提交. 1.getSession三种方式比较: request. ...

  8. [原创]java WEB学习笔记34:Session 案例 之 解决表单重复提交

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. java web学习总结(十三) -------------------使用Session防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

随机推荐

  1. VIM 文件搜索与替换

    文件内搜索与替换 :[range]s/pattern/string/[c,e,g,i] 例如: :%s/oldword/newword/cg //对文本中全部匹配进行替换 :m,ns/oldword/ ...

  2. Spark算子--first、count、reduce、collect、lookup

    转载请标明出处http://www.cnblogs.com/haozhengfei/p/4b8582c8dde1529abb11e4ccc8296171.html first.count.reduce ...

  3. Cookie实现--用户上次访问时间

    用户上次访问时间  

  4. b2b2c

    编辑 B2B2C是一种电子商务类型的网络购物商业模式,B是BUSINESS的简称,C是CUSTOMER的简称,第一个B指的是商品或服务的供应商,第二个B指的是从事电子商务的企业,C则是表示消费者.   ...

  5. HTML 5 <canvas> 标签

    <!DOCTYPE HTML> <html> <body> <canvas id="myCanvas">your browser d ...

  6. 将js进行到底:node学习笔记1

    废话:自高中以来一直对编程充满激情,磨剑五年,如今要毕业了,我不想用我已经擅长的知识敷衍,而想以一个全新的领域去面向我的毕设--是时候学习一下node.js node.js基础 对于JavaScrip ...

  7. DOS基本命令(基本部分)

    一.cls(clear screen的简写) 命令作用:清屏屏幕 详细介绍:屏幕显示的所有字符信息都是存放在一个屏幕缓冲区中,cls命令的作用是清除屏幕上的文字,并将该缓冲区清空. 二.dir(dir ...

  8. [知了堂学习笔记]_css3特效第二篇--行走的线条&&置顶导航栏

    一.行走的线条. 效果图(加载可能会慢一点儿,请稍等...): html代码: <div class="movingLines"> <img src=" ...

  9. salesforce零基础学习(八十一)更改标准字段的label名称(Admin)

    我们在开发中往往需要考虑国际化功能,salesforce 提供了国际化功能,在search部分搜索translate,便可以找到translate部分,从而对需要的进行translate.比如pick ...

  10. 两层嵌套list,选取list中最长的list的长度

    # coding=utf-8 import pandas as pd file_path = "test_aa.xlsx" dt = pd.read_excel(file_path ...