关闭

闲杂小记(七)

标签: 数据库js测试校验java
117人阅读 评论(0) 收藏 举报
分类:

数据库迁移方案:


方案一:

init:

比如某一天0:00-23:59把老数据迁移至新表(假设需要一天),但是有一个问题:比如在0:00已经迁移到新表的数据,在12:00的时候老表数据update了,则新表中的数据是还未更新的。

job:定时任务,每隔一段时间进行一次老表到新表数据迁移

解决方案:

insert:比较老数据的update_time和中间表的create_time比较,如果没有中间表,则插入,如果有,则update

update:同上

delete:老表数据删除,同事去新表也把数据删除

打标签:

server处理:批处理

user触发:属于打散处理,减小数据库压力和并发压力

方案二:

init:选择一小段时间停止服务器运行,将老表数据全部迁移到新表

实时:(需要修改老接口)

增:老表新增的同时对新表进行新增

删:老表删除的同时对新表数据进行删除

改:老表修改的同时对新表数据进行删除


EasyUI分析和覆盖:

config: {

    action: {
        edit: 'checkRefuse.do',
        remove: 'checkPass.do'
    },
    //自定义事件
    event: {

        edit: function (callback) {
            var record = Utils.getCheckedRows();
            if (Utils.checkSelectOne(record)) {
                $.messager.confirm('确认', '确认此操作?', function (r) {
                    if (r) {
                        jeecg.progress();
                        var arr = [], idKey = 'id'; //主键名称
                        $.each(record, function (i, record) {
                            arr.push('id=' + record[idKey]);
                        });
                        var data = arr.join("&");
                        jeecg.deleteForm('checkRefuse.do', data, function (result) {
                            jeecg.closeProgress();
                            // this.event.refresh;
                            refresh();
                            //回调函数
                            if (jQuery.isFunction(callback)) {
                                callback(result);
                            }
                        });
                    }
                });
            }
        },
    },
    dataGrid: {

toolbar: [{id: 'btnadd', text: '新建群', btnType: 'add'},
    {id: 'btnedit', text: '更新群', btnType: 'edit'},
    {id: 'btnedit', text: '解散群', btnType: 'remove'},
    {
        //自定义按钮,并自定义处理方法
        id: 'btnedit', text: '发送消息', btnType: 'edit'
        , handler: 'send'
    }]
//获取窗口
var SendWin = {send: $("#send-win")}
//定义全局变量
var ids ;
//初始化窗口,给窗口添加按钮
var initSendWin = function () {
    if (SendWin.send && SendWin.send[0]) {
        //判断页面是否设置buttons,如果没有设置默认按钮
        var btns = SendWin.send.attr("buttons");
        if (!btns) {
            //设置 保存,关闭按钮
            SendWin.send.dialog({
                buttons: [
                    {
                        text: '发送',
                        handler: save
                    }, {
                        text: '取消',
                        handler: close
                    }
                ]
            });
        }
        //Win.edit.find("#btn-submit").click(Events.save); //保存事件
        //Win.edit.find("#btn-close").click(Events.close);//关闭窗口
    }
}
//自定义方法
var send = function (callback) {
    //获取选择行
    var records = Utils.getCheckedRows();
    if (Utils.checkSelect(records)) {
        var arr = [], idKey = 'groupId'; //主键名称
        $.each(records, function (i, record) {
            arr.push(record[idKey]);
        });
        ids=arr;
        //调用方法初始化窗口
        initSendWin();
        //打开窗口
        $("#send-win").dialog('open');
        Form.send.resetForm();
        //刷新
        refresh();
        //回调函数
        if (jQuery.isFunction(callback)) {
            callback();
        }

    }


};
var Utils = {
    //获取选择行
    getCheckedRows: function () {
        return $('#data-list').datagrid('getChecked');
    },
    //校验是否有选择行
    checkSelect: function (rows) {//检查grid是否有勾选的行, 有返回 true,没有返回true
        var records = rows;
        if (records && records.length > 0) {
            return true;
        }
        jeecg.alert('警告', '未选中记录.', 'warning');
        return false;

    },
    //校验是否选择单行
    checkSelectOne: function (rows) {//检查grid是否只勾选了一行,是返回 true,否返回true
        var records = rows;
        if (!Utils.checkSelect(records)) {
            return false;
        }
        if (records.length == 1) {
            return true;
        }
        jeecg.alert('警告', '只能选择一行记录.', 'warning');
        return false;
    }
}

var Form = {
    search: $("#searchForm"),
    add: $("#addForm"),
    edit: $("#editForm"),
    send: $("#sendForm")
}
var refresh = function (callback) {
    var param = Form.search.serializeObject();
    $('#data-list').datagrid('reload', param);
    //回调函数
    if (jQuery.isFunction(callback)) {
        callback();
    }
};

var save=function (callback) {


    var message = document.getElementById('message').value;
    var data= "ids="+ids+"&input="+message;
    //ajax请求
    $.ajax({
        type: "POST",
        url: "send.do",
        data:data,
        success: function(msg){
        }
    });
    //关闭窗口
    SendWin.send.dialog('close');
    if (jQuery.isFunction(callback)) {
        callback(data);
    }

};

//关闭按钮事件
var close=function (callback) {
    $.messager.confirm('确认', '你确认关闭窗口?', function (r) {
        if (r) {
            SendWin.send.dialog('close');
            //回调函数
            if (jQuery.isFunction(callback)) {
                callback(data);
            }

        }
    });
};
检验原则:

一切接收到的数据都是不可信的:

就像坐地铁:进站时需要安检,出站时则不需要

DB查询到的结果,HTTPCLIENT传入的数据,页面传入的数据都需要做校验,前三者都是不可控的;自己程序内部定义的方法传入的参数按理来说也需要校验,但是如果自己控制的好的话时可以不用校验的,这部分是可控的


测试原则:

普通值:正常测试数据,测试程序基本功能

边界值:临界值,测试程序边界

容错值:错误值,测试程序容错性,对错误数据处理


0
0
查看评论

闲杂小记(八)

平日小记
  • pysasuke
  • pysasuke
  • 2016-09-19 22:41
  • 101

闲杂小记(四)

平日小记
  • pysasuke
  • pysasuke
  • 2016-08-06 22:24
  • 108

闲杂小记(二)

平日闲记
  • pysasuke
  • pysasuke
  • 2016-07-23 23:14
  • 128

闲杂小记(三)

平日小记
  • pysasuke
  • pysasuke
  • 2016-07-31 15:58
  • 134

闲杂小记(一)

平日闲记
  • pysasuke
  • pysasuke
  • 2016-07-17 21:35
  • 168

闲杂小记(五)

平日小记
  • pysasuke
  • pysasuke
  • 2016-08-14 20:30
  • 114

闲杂

1.alexa Alexa Internet公司是亚马逊公司的一家子公司,总部位于加利福尼亚州旧金山。在1999年,被亚马逊公司以约价值两亿五千万美元的股票买下。
  • wangjianno2
  • wangjianno2
  • 2014-07-26 00:58
  • 315

CEF学习小记(一)-搭建运行环境

首先要感谢HEY! Code上的这篇文章,通过这篇及随后的三篇文章可以很迅速的搭建最基本的CEF示例。在此我就不赘述了。 当然,这种搭建方法很是粗糙,当然CEF新手很容易上手。以后的项目会才这篇文章的框架下进行增补与修改。
  • yitucom123
  • yitucom123
  • 2016-10-27 18:32
  • 471

前端面试小记

太久没有面试过了,第一次难免有点紧张,今天遇到的面试问题,大多数都遇到过,却因为没有充分准备,而没有答好,以后一定好好准备才行。 下面记录一下今天的面试问题,加深印象: 介绍一下JS的数据类型? 简单类型:String、Number、Boolean、Null、Undefined...
  • fengyinchao
  • fengyinchao
  • 2017-03-14 20:05
  • 401

shell小记:eval

shell在执行命令的时候,有一些符号需要shell能够直接能够看到的,例如管道 |,重定向 (>, >, #! /bin/bash pipe="|" ls /home/ $pipe grep "out" 按照我们的想法, ls /home...
  • u012336923
  • u012336923
  • 2015-12-18 15:50
  • 346
    个人资料
    • 访问:6079次
    • 积分:303
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类