- 浏览: 14177 次
- 性别:
- 来自: 珠海
最新评论
文章列表
做完整个任务,如同做了一个长长的噩梦。
周二,kelvin 同我讲 automation upload program 需要我们project team handle。我就知道麻烦事来历。但是由于我对http协议比较了解,我猜想所有broswer 做得到的事情都是可以用java 重复实现的 ...
新系统对外接口是 excel upload
而且要求每次import 时间不能超过15分钟
在个人电脑上面 测试结果
如果2个upload 工作同时进行,每一份excel 大概 500 个entity ,可以成功upload
难点:
要求excel 格式同 临时表的结构 相同
如果一个模块达到19个表,每个表多于20个column , export 同 制作 excel template 工作已经很大
解决方案: excel export 使用java poi mandate 2 日
难点:excel 版本 在2007 或者以上,要求data 全部使用datatab ...
构造 临时数据仓库,用于提取数据
设想在这个阶段完成大部分的商业逻辑转换工作,使用 pentaho 工具, 帮助转换数据到临时表
环境设置:
1.临时表尽可能与新数据库表结构相同,但是当中会加几个帮助做逻辑的column 类似flag
优点: 集中转换工作,方便开发和维护
困难:构造临时表工作量大而且繁琐。
解决方案:花2个钟头 利用 sqldevelpoer :desc table output format 直接解析 生成 create table 语句
2. 转换 id,旧数据id全部使用 number(20,0) 递增作为 主键, 搬到新系统将会 ...
data migration -1 总览
- 博客分类:
- 工作笔记
data migration 已经开始做了一个月
第一阶段:
构造 临时数据仓库,用于提取数据
第二阶段
导出临时数据
第三阶段
导入数据到新系统
每一个模块需要做三个阶段,
最理想的时间分配是
大部分时间发在提取数据上面
其他环境设置和流程控制 尽可能压缩时间
难点: 首次用新流程,方法做
js闭包里面没有值传递
- 博客分类:
- 工作笔记
在js闭包里面没有值传递
var a= function(){
var rlt= [];
for(var changing = 0; changing < 10; changing++){
rlt[changing] = function(){ var amIchange = changing; return amIchange;
}
} return rlt;
}();
for(var i = 0; i < a.length; i++){
console.debug(a());
}
假如可以值传递 那么应该打印出 1,2,3,4. ...
1. set $F{BLOB} InputStream
2. set field as java.awt.Image
3. edit expression as javax.imageio.ImageIO.read($F{BLOB})
搞定
IE 不能支持自动换行 和 显示多个空白
- 博客分类:
- 工作笔记
直接替换显示内容: value = StringUtils.ReplaceAll(value, "\\s\\s", " ");
注意 是 替换2个空白!!
除去这个笨重的方法,可以使用css方法(尚未验证)
http://www.wuxiwangzhanjianshe.cn/gg.asp?id=7449
public void process(){
//使用set 可以避免收集到重复的warning message
//使用linkedHashSet 可以使得收集的warning message 再遍历时候可以按照添加顺序显示
Set<String> errorMsgs = new LinkedHashSet<String>();
boolean isDataLegal = validate(objects,messageSet);
...
//把收集的消息变成一条语句返回前台
StringBuilder sb = new ...
1.清晰性和简洁性最为重要
2,代码应该被重用 而不是拷贝
3,模块之间的依赖性尽可能地降到最小、
4.错误应该尽早地检测出来,最好是在编译时刻
1. 关于变量的命名
写代码时候 经常使用简写做变量的命名
1.希望大家尽量用全称,这样避免一些不必要的误会。
2.假如名字实在太长的话,那么选择声母作为简写,例如:
message -> /ˈmesidʒ/ -> msg
agreement -> /əˈɡri:mənt ...
关于sql oop 方法小例子
- 博客分类:
- 工作笔记
Create Or Replace Type Cpm_Task As Object (
Start_Date Date,
Duration_Days Number(9,0),
Member Function Get_end_date Return Date,
member procedure set_Startdate(in_start_Date Date)
);
/
create or replace type body Cpm_Task
as
member function Get_end_date return ...
javascript program specification
1. if script depend on one html code directly(eg: document.getElementById('xxx')), please directly write this function under this page or a new script file if too large code
2. treat every individuate service as an object especially complex function.
eg:
Ext.nam ...
Integer i =null;
boolean bl =false;
System.out.println(i = null);
System.out.println(bl = true);
打印出来
null
true
那么可以写这样的语句
boolean b = false;
/*do some thing*/
if(b = true){
/*do some thing*/
}
不过都觉得好无意义。
但是知道为神马一连串赋值是可行的。
boolean a = b = c = e = false;
因为右结合运算 e = false, 该式子返回所赋值 false. 所以 c ...
《thinking in java》中提到程序员分两种:类创建者 和 客户端程序员
private 可以保护那些类创建者不想让 客户端程序员访问的变量,以免破坏类的正常逻辑。
我觉得这个观点很有意思,让我联想到
即使是public 方法亦有被客户端程序员间接破坏的情况。这里的间接破坏就是客户端程序员自己新起类,继承(extends)第三方类,重写其方法。比如 CustomizeHashMap extends HashMap,
重写 add 方法。 你可以会在使用 CustomizeHashMap 的addAll 方法中出现问题。这是因为 在 父类HashMap中 addAll 使用了 add ...
warning message 的收集
- 博客分类:
- 工作笔记
1.使用treeSet收集可以 避免重复message 和 实现message 排序。
2.使用String.format可以让 message template 更加清晰
3.中断程序时,应该抛出自定义exception以区分其他unexpected exception