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防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
随机推荐
- c#版 K线控件(Stock)
K线起源于日本米市交易,它的基本用途就是为了寻找"买卖点".股市及期货市场中的K线图的画法包含四个数据,即开盘价.最高价.最低价.收盘价,所有的k线都是围绕这四个数据展开,反映大势 ...
- 使用setTimeout实现setInterval
setInterval = () =>{ console.log(1) //使用递归 setTimeout(setInterval,1000); }; setInterval()
- [20160711][VS2012配置OpenCV2.4.9]
相关说明 OpenCV是一套开源机器视觉库,用于简化机器视觉算法的开发与调试. 移植环境 操作系统:Win7 64位 移植软件:Visual Studio 2012 代码下载: https://sou ...
- Python数据类型一:数字与运算符
数字 一.数值类型 python中支持的数值类型有以下几种: 1.整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点.Python3 整型是没有限制大小的,可以当作 Long 类型使 ...
- ajax_表单提交+tp5ajax
======================================================= 判断squery导入的是否正确? $(function(){ alert('1'); } ...
- [知了堂学习笔记]_eclipse引入svn插件,并将项目同步到svn
1. eclipse中不存在SVN问题的解决 1.1发现Team->Share project 下没有svn. 1.2下载安装svn插件. 选择help->Eclipse Marketpl ...
- docker结合jenkins、gitlab实现.netcore的持续集成实践
本文的目标是实现下图基于ASP NET Core的实践 运行环境 Cent OS 7 vs code .net core cmder 运行docker,设置docker镜像加速器,不然国内下载imag ...
- JavaScript小结
语法小结 /** * Created by M.C on 2017/5/26. */ /*弹框*/ //var message = "Hello world"; //alert(m ...
- Linux指令--文件和目录属性
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- git clone代码时候出现的报错
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Andale Mono"; color: #28fe14; backgr ...