1、判断是否为空
function isEmpty(s)
{
return ((s == undefined || s == null ||s == '' || s.replace(/(^\s*)|(\s*$)/g, "")=='') ? true : false);
} 2、判断数组中是否有相等元素
function checkEqual(arr){
for(i=0;i<arr.length;i++){
for(j=i+1;j<arr.length;j++){
if(arr[i].value==arr[j].value){
return true;
}
}
}
return false;
} 3、对HTML标签注册click事件,并获取该元素的父标签,及子标签
Event.on(Dom.getElementsByClassName('check','a'),'click',function(evt){
Event.preventDefault(evt);
var target = Event.getTarget(evt);
var td = Dom.getAncestorByTagName(target,'tr');
ar title = td.getElementsByTagName("input")[0].value;}); 4、对button注册click事件,并提交表单
Event.on("j_add","click",function(evt){
**********
document.form1.event_submit_do_add.value="submit";
document.form1.submit();
}
}); 5、在父元素下创建子元素,动态添加页面元素
var tab =document.getElementById("guanlian");
var newRow = tab.insertRow(0);//添加了一行
var newTd1 = newRow.insertCell(0);
newTd1.innerHTML="关联词名"; 6、借助YUI进行Ajax异步交互
var callback ={
success:function(o) {
var result = o.responseText;
document.getElementById('chk_thesaurus').innerHTML=result;
},
failure: function(o) {
alert("验证请求,链接服务器失败!");
}
}
;
var sUrl = '请求的页面地址及参数';
YAHOO.util.Connect.asyncRequest('GET',sUrl,callback); 7、div样式的两种写法(.divforcheck{ width:500px; height:300px; background-color:#f00; color:#fff; }
<div style="border: 1px dotted black;background-color:#FFFFFF;width:500px ">)
8、confirm的用法
if(confirm("您修改了关联词,请确定在提交前进行了验证")){
document.form1.event_submit_do_add.value="submit";
document.form1.submit();
}
9、webX下AJAX服务器端编码:
1、在反馈ajax请求的页面(Vm页面)中填写符合HTML标准的反馈InnerHTML
2、通过 rundata.getResponse().getWriter().print("var ajaxRequestData_bizType = "+JSONObject.fromObject(tree).toString());
context.put("result", net.sf.json.JSONArray.fromObject(tree).toString());(打成JSON串)
上周五开始一项开发工作,将树形的数据结构放到关系型数据库,并提供页面进行数据的维护,遇到的问题:1、需求不清晰;2、表结构不清晰;3;前端开发技术非常不熟悉;
结果就是开发缓慢,系统交互效果差,做出来的页面自己都不满意,开发慢导致上线压力大,心里压力也大,很严重的加班。。。。。。。
总结下用到的页面技术:1、CSS+DIV样式定义的两种写法(.divforcheck{ width:500px; height:300px; background-color:#f00; color:#fff; }
<div style="border: 1px dotted black;background-color:#FFFFFF;width:500px ">)
2、JS:动态的添加页面元素var tab =document.getElementById("guanlian");
var newRow = tab.insertRow(0);//添加了一行
var newTd1 = newRow.insertCell(0);
var newTdName = newRow.insertCell(1); ;
判断为空function isEmpty(s) { return ((s == undefined || s == null || s == "") ? true : false); }
弹出选择框:if(confirm("您修改了关联词,请确定在提交前进行了验证")){
document.form1.event_submit_do_add.value="submit";
document.form1.submit();}
Ajax交互:
var callback ={
success:function(o) {
var result = o.responseText;
document.getElementById('chk_thesaurus').style.display="";
document.getElementById('chk_thesaurus').innerHTML=result;
document.getElementById('chk_thesaurus').display = "block";
},
failure: function(o) {
alert("验证请求,链接服务器失败!");
}
}
;
var sUrl = 'ajax/checkThesaurus.htm?relName='+encodeURIComponent(encodeURIComponent(title));
YAHOO.util.Connect.asyncRequest('GET',sUrl,callback); 服务器段java代码两种写法:1、在反馈ajax请求的页面中填写符合HTML标准的反馈InnerHTML
2、通过
rundata.getResponse().getWriter().print("var ajaxRequestData_bizType = "+JSONObject.fromObject(tree).toString());
context.put("result", net.sf.json.JSONArray.fromObject(tree).toString());(打成JSON串)
3、表单提交处理(JS提交表单)document.form1.event_submit_do_add_treeWordProperty.value="submit";
document.form1.submit();
java代码的Exception控制、异常处理
之前正则一直不支持嵌套循环的验证即类似于html的格式较验,昨天晚上无聊就考虑了一下这个的可实现方式:通过维护特征“符号”队列来实现
如在有特定格式的文件中(标签成对出现的情况下)顺序读入待验证标签放入队列中,较验对应的下一个输入如果为与该标签对应的标签那么将该标签从队列中弹出,如果不对应则将下一个标签也放入队列中,进行下一次的验证直到该文件结束时如果队列恰好为空那么证明文件较验通过
记录点常识:
1、
为实现全表扫描,Oracle读取表中所有的行,并检查每一行是否满足语句的WHERE限制条件一个多块读操作可以使一次I/O能读取多块数据块 (db_block_multiblock_read_count参数设定),而不是只读取一个数据块,这极大的减 少了I/O总次数,提高了系统的吞吐量,所以利用多块读的方法可以十分高效地实现全表扫描,而且只有在全表扫描的情况下才能使用多块读操作。在这种访问模 式下,每个数据块只被读一次。
2、先通过index查找到数据对应的rowid值(对于非唯一索引可能返回多个rowid值),然后根据rowid直接从表中得到具体的数据,这 种查找方式称为索引扫描或索引查找(index lookup)。一个rowid唯一的表示一行数据,该行对应的数据块是通过一次i/o得到的,在此情况下该次i/o只会读取一个数据库块。
在索引中,除了存储每个索引的值外,索引还存储具有此值的行对应的ROWID值。
索引扫描可以由2步组成:
(1) 扫描索引得到对应的rowid值。
(2) 通过找到的rowid从表中读出具体的数据。
每步都是单独的一次I/O,但是对于索引,由于经常使用,绝大多数都已经CACHE到内存中,所以第1步的 I/O经常是逻辑I/O,即数据可以从内存中得到。但是对于第2步来说,如果表比较大,则其数据不可能全在内存中,所以其I/O很有可能是物理I/O,这 是一个机械操作,相对逻辑I/O来说,是极其费时间的。所以如果多大表进行索引扫描,取出的数据如果大于总量的5% —— 10%,使用索引扫描会效率下降很多
然后对于特殊的业务场景要先做数据的筛选,然后再做查询 关于查询筛选出来的结果集能不能走到索引这个问题需要再测试一下
通过vmware或者virtualBox安装虚拟机后,希望能够不用在程序窗口切来切去,所以通过ssh连接到虚拟机就好了,有的人按步骤安下来就很好用,但是我这边遇到了问题,首先上虚拟机设置网络连接这里需要设置成桥接(bridged adapter)原因如是:虚拟机接网络连接方式一般分为四种NAT、bridged adapter(桥接)、网络、host-only adapter;其中桥接的时候主机和虚拟机是可以互相访问的,其它方式都有限制,然后就是防火墙的设置了 可以通过chkconfig --list 查看每个服务的启动,自己设定就好;最后就是连接了,当然还有其它的一些小设置可以通过google。。。
虚拟机网络连接的详细介绍如下网址:
http://pengranxiang.iteye.com/blog/715829
天网dataX节点可“灵活配置点”:应用库《——》hdfs上的时候是可以进行较灵活的配置(字段顺序调整、字段数目不一致)即此处是一个非常灵活的连接点,具体使用方式咨询(数据平台)或者查看预发节点209050
天网节点父子依赖关系显示不全:是由于在子节点上线前父节点不存在造成的,这个可以由数据平台那边的童鞋的发布信息截图中获得,parentNode为空的话即说明缺少依赖关系,如果已经上线的话就通过重新编辑下子节点,保存然后发布最新的依赖关系即可
预发运行ok,但是天网始终跑不通且无明确错误信息时需要查当前job_id的详细错误即可(这时候比较大的可能是dataX程序的location位置不正确)
Hivesql问题
在开发机运行时容易出现error in load data to ‘hdfs地址’,通用的解决办法是到预发上删除掉这个表,同时也删除本机上的表,再重建一下
剩下的就是hivesql对标准Sql的支持问题了,这个主要是经验,没有通用教程;hivesql排序、查询、插入都和标准sql略有不同的
遇到过几次表单提交前做验证的需求,在这里整理一下:
web开发前端的话表单验证非常常见,当存在<input type='submit' name=""></> 的时候不论你把事件注册到click还是注册到form的submit上在拦截提交请求后无法中断form的提交;可以用<input type='button' name=''></> 来替换<input type='submit' name=""></> 在JS验证后用document.form.submit()完成提交
完整代码如下(调用的yahooYUI):
<form name="templateForm" method="POST">
<input type="hidden" name="event_submit_do_add" value=""/>
<input type="hidden" name="event_submit_do_update" value=""/>
------------------------
#if("$templateId"=="0")
<input type="button" name="J_Add" id="J_Add" class="J_Submit" value="保存" style="margin:0 10px;padding:0 5px;"/>
#else
<input type="button" name="J_Update" id="J_Update" class="J_Submit" value="修改" style="margin:0 10px;padding:0 5px;"/>
#end
</form>
<script language='text/javascript'>
var Y = YAHOO.util, D = Y.Dom, E = Y.Event;
E.on("J_Add","click",function(evt){
if(“验证条件")
{
alter("提示内容");
return;
}
document.templateForm.event_submit_do_add.value="submit";
document.templateForm.submit();
});
E.on("J_Update","click",function(evt){
if(“验证条件")
{
alter("提示内容");
return;
}
document.templateForm.event_submit_do_update.value="submit";
document.templateForm.submit();
});
</script>