第一篇:Java XML的开发技巧总结
首先出场的是 DOM(JAXP Crimson 解析器)
DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。
另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如 SAX。
Bean文件:
package com.test;
import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
public class MyXMLReader{
public static void main(String arge[]){
long lasting =System.currentTimeMillis();
try{
File f=new File(“data_10k.xml”);
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName(“VALUE”);
for(int i=0;i<nl.getLength();i++){
System.out.print(“车牌号码:” + doc.getElementsByTagName(“NO”).item(i).getFirstChild().getNodeValue());
System.out.println(“ 车主地址:” + doc.getElementsByTagName(“ADDR”).item(i).getFirstChild().getNodeValue());
}
}catch(Exception e){
e.printStackTrace();
}
System.out.println(“运行时间:”+(System.currentTimeMillis()lasting)+ “ 毫秒”);
}
public void characters(char ch[], int start, int length)throws SAXException {
String tag =(String)tags.peek();
if(tag.equals(“NO”)){
System.out.print(“车牌号码:” + new String(ch, start, length));
}
if(tag.equals(“ADDR”)){
System.out.println(“ 地址:” + new String(ch, start, length));
}
}
public void startElement(String uri,String localName,String qName,Attributes attrs){
tags.push(qName);
}
}
10k消耗时间:110 47 109 78
100k消耗时间:344 406 375 422
1000k消耗时间:3234 3281 3688 3312
10000k消耗时间:32578 34313 31797 31890 30328
然后是 JDOM http://www.xiexiebang.com/
JDOM 的目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型,JDOM 一直得到大力推广和促进。正在考虑通过“Java 规范请求 JSR-102”将它最终用作“Java 标准扩展”。从 2000 年初就已经开始了 JDOM 开发。
JDOM 与 DOM 主要有两方面不同。首先,JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API,但是也限制了灵活性。第二,API 大量使用了 Collections 类,简化了那些已经熟悉这些类的 Java 开发者的使用。
JDOM 文档声明其目的是“使用 20%(或更少)的精力解决 80%(或更多)Java/XML 问题”(根据学习曲线假定为 20%)。JDOM 对于大多数 Java/XML 应用程序来说当然是有用的,并且大多数开发者发现 API 比 DOM 容易理解得多。JDOM 还包括对程序行为的相当广泛检查以防止用户做任何在 XML 中无意义的事。然而,它仍需要您充分理解 XML 以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习DOM 或 JDOM 接口都更有意义的工作。
JDOM 自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档(尽管它还可以将以前构造的 DOM 表示作为输入)。它包含一些转换器以将 JDOM 表示输出成 SAX2 事件流、DOM 模型或 XML 文本文档。JDOM 是在 Apache 许可证变体下发布的开放源码。
Bean文件:
package com.test;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
public class MyXMLReader {
public static void main(String arge[]){
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File(“data_10k.xml”));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for(int i=0;i<allChildren.size();i++){
System.out.print(“车牌号码:” +((Element)allChildren.get(i)).getChild(“NO”).getText());
System.out.println(“ 车主地址:” +((Element)allChildren.get(i)).getChild(“ADDR”).getText());
}
} catch(Exception e){
e.printStackTrace();
}
System.out.println(“运行时间:” +(System.currentTimeMillis()lasting)+ “ 毫秒”);
}
}
10k消耗时间:109 78 109 31
100k消耗时间:297 359 172 312
1000k消耗时间:2281 2359 2344 2469
10000k消耗时间:20938 19922 20031 21078
JDOM 和 DOM 在性能测试时表现不佳,在测试 10M 文档时内存溢出。在小文档情况下还值得考虑使用 DOM 和 JDOM。虽然 JDOM 的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM 仍是一个非常好的选择。DOM 实现广泛应用于多种编程语言。它还是许多其它与 XML 相关的标准的基础,因为它正式获得 W3C 推荐(与基于非标准的 Java 模型相对),所以在某些类型的项目中可能也需要它(如在 JavaScript 中使用 DOM)。
SAX表现较好,这要依赖于它特定的解析方式。一个 SAX 检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。
无疑,DOM4J是这场测试的获胜者,目前许多开源项目中大量采用 DOM4J,例如大名鼎鼎的 Hibernate 也用 DOM4J 来读取 XML 配置文件。如果不考虑可移植性,那就采用DOM4J吧!
第二篇:前端开发中一些常用技巧总结
前端开发中一些常用技巧总结
自己前端开发中常用到的一些技巧及问题解决方法,会常更新,希望对前端路上的朋友有帮助.1.文章标题列表中日期居右显示的两种方法,方法A相对方法B省资源,但比方法B要多写两句代码,使用时请视情况而定: 方法A(经典论坛ariesjia提供的思路.感谢~):
@Mr.Think这是文章标题2010-10-10
然后定义p和span的样式: p{position:relative}p span{position:absolute;right:0} 方法B:
2010-10-10@Mr.Think这是文章标题
然后定义span右浮动: p span{float:right}其实这两种方法可以延伸到很多情况下,很实用的一种写法;2.web标准中,同一页面中只能有一个h1标签.很多人知道这个概念,但做到的却很少;3.空白外边距互相叠加的问题:一般通过添加透明边框或者1px的内边距避免.详细解读:http://mrthink.net/css-margin-overlying-way/;4.ie6下max/min-width/height实现,_width: expression(this.width >600 ? “600px” : true);,height同理.5.html/class/id,最好统一以小写书写,这样更严谨(符合xhtml标准);6.不推荐用下面代码兼容IE8:
如果是非短期性页面,尽量避免使用,页面应尽可能保证向后兼容.更多兼容方法请详细阅读: http://mrthink.net/cssandhtml-hack-mainbrower/
7.空div在IE(FF中没有)是有默认高度的,可以用定义:div { witdh:100%;background:#9c0;font-size:0}的方式去掉默认高度;8.在使用table标签时应该尽可能的利用它本身的属性,最大限度的分离结构与样式.详细解读:http://mrthink.net/csshtml-colgroup-col-style/;9.充分利用表单中label标签提升用户体验;这一点对于页面中那些小的选项框,以及对残障人士阅读网站都有好处.细节是用户体验的第一步;10.fieldset, legend标签, 鲜为人知,却很实用的一组标签;它可以很明了的把一组元素框起来,主要用于表单;11.optgroup标签,鲜为人知,它对提升选择表单用户体验很有帮助.作用? 就是可以在有很多选项时,对这些选项分组:
效果演示:
12.表单都要加name值,name值是一个标示,不同于id,据我所发现,若是未定义name值,非IE浏览器下是无法通过document.formid获取到表单元素的.请看如下代码及注释:
第三篇:手机触屏网站开发技巧总结
手机网站开发 http://
手机触屏网站开发技巧总结
侦测iPhone/iPod 开发特定设备的移动网站,首先要做的就是设备侦测了。下面是使用Javascript侦测iPhone/iPod的UA,然后转向到专属的URL。Code: if((navigator.userAgent.match(/iPhone/i))||(navigator.userAgent.match(/iPod/i))){ if(document.cookie.indexOf(“iphone_redirect=false”)==-1){
window.location = “http://
Code:
阻止旋转屏幕时自动调整字体大小
-webkit-text-size-adjust是webkit的私有css: Code: html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {-webkit-text-size-adjust:none;} 侦测设备旋转方向 iPhone可以在横屏状态下浏览网页,有时候你会想知道用户设备的手持状态来增强可用性和功能。下面一段Javascript可以判断出设备向哪个方向旋转,并且替换css: Code: window.onload = function initialLoad(){updateOrientation();}
function updateOrientation(){
var contentType = “show_”;switch(window.orientation){
case 0: contentType += “normal”;break;
case-90: contentType += “right”;break;
case 90: contentType += “left”;
break;
case 180:
手机网站开发 http://
contentType += “flipped”;break;}
document.getElementById(“page_wrapper”).setAttribute(“class”, contentType);}
iPhone才识别的CSS
如果不想设备侦测,可以用CSS媒体查询来专为iPhone/iPod定义样式。Code: @media screen and(max-device-width: 480px){}
CSS3媒体查询 对于CSS3的媒体(media)查询,iPhone和iPad是不同的。通过这个技术,可以对设备不同的握持方向应用不同的样式,增强功能和体验。
iPhone是通过屏幕最大宽度来侦测的。是这样:
Code: 而iPad有点不同,它直接使用了媒体查询中的orientation属性。是这样: Code:
之后只要将不同的样式分别定义出来就可以了。
缩小图片
网站的大图通常宽度都超过480像素,如果用前面的代码限制了缩放,这些图片在iPhone版显示显然会超过屏幕。好在iPhone机能还够,我们可以用CSS让iPhone自动将大图片缩小显示。Code:
@media screen and(max-device-width: 480px){
img{max-width:100%;height:auto;}
}
手机网站开发 http://
注意如果原图片非常大,或一个页面非常多图,最好还是在服务器端缩放到480像素宽,iPhone只需要在正常浏览时缩略到320像素。这样不会消耗太多流量和机能。
默认隐藏工具栏
iPhone的浏览器工具栏会在页面最顶端,卷动网页后才隐藏。这样在加载网页完成后显得很浪费空间,特别是横向屏幕时。我们可以让它自动卷动上去。Code:
模拟:hover伪类 因为iPhone并没有鼠标指针,所以没有hover事件。那么CSS :hover伪类就没用了。但是iPhone有Touch事件,onTouchStart 类似 onMouseOver,onTouchEnd 类似 onMouseOut。所以我们可以用它来模拟hover。使用Javascript:
Code:
var myLinks = document.getElementsByTagName(„a‟);for(var i = 0;i < myLinks.length;i++){
myLinks[i].addEventListener(‟touchstart‟, function(){this.className = “hover”;}, false);myLinks[i].addEventListener(‟touchend‟, function(){this.className = “”;}, false);
}
然后用CSS增加hover效果:
Code:
a:hover, a.hover { /* 你的hover效果 */ }
这样设计一个链接,感觉可以更像按钮。并且,这个模拟可以用在任何元素上。
手机网站开发 http://
iphone fixed positioning
Code: 关于漂浮定位,测试后发现 { position: fixed;} 不能为其用,可以改为 { position:absolute;} 来实现,可以使用iphone看下DEMO:iphone-fixed-positioning Touch Events iPhone 是使用触屏的方式,所以就需要有手触屏和离开的时候的事件机制,幸好,iPhone做好了这方面的工作,提供了四个处理touch的事 件:touchstart,touchend,touchmove,touchcancel(when the system cancels the touch)。
Gestures 即是指两只手指接触屏幕的时候缩放或者旋转的效果,对于侦听gestures,iPhone也有三个事件:gesturestart,gestureend,gesturechange。
同时事件参数event有两个属性:scale,rotate。Scale的中间值是1,大于1表示放大,小于1表示缩小。
手机网站开发 http://
第四篇:开发总结
西博会总结
一. 提倡的地方
1. 数据方面:
利用Toad Data Modeler来设计数据模型;能够非常清晰方便的了解整个系统表和表之间的关系。
整个项目的过程中,一直安排一个人来维护数据库和数据库模型。2.开发方面:
在项目周期相对比较短的情况下,可以分版本开发,每个版本完成一部分功能。我觉得这种方式值得提倡。
二. 改进的地方:
1.数据库方面:
西博会系统设计的最初,所有表的主键都是由数据的序列自动产生的。开发工程中,程序员之间并没有完全按照数据模型中的序列名来生成表的主键,导致了一个表有多个序列来生成主键,从而产生了数据库主键唯一的冲突。2.开发方面:
西博会整个系统大部分都是前台的工作,尤其像表单。每提交一份表单就得在前台写一套验证规则,这样重复性的工作很大。可以考虑将一些公共的验证规则在项目开始之初就提取出来,这样可以减少很大一部分工作,而且也便于后期维护。
第五篇:培训课程开发实战技巧
培训课程开发实战技巧
文/李文德
企业如果完全采用外部的培训课程,就会大量出现培训内容与实际工作不一致的情形,出现培训的现场感很好,但在实际工作中无法应用的情形。为了改变这一状况,企业就需要开发适合自己的内部培训课程,提高培训的针对性。
课程开发的准备
培训课程开发周期长、成本高,企业可以选择与生产经营关系密切的观念、知识和技能类课程进行开发,提高课程开发的针对性和实效性。以下几类课程比较适合企业自主开发:
企业文化类:企业文化与核心价值观、企业发展战略、企业全员核心胜任力等;管理流程类:企业的绩效管理、预算管理、人力资源管理、信息管理等;产品类:根据不同人群开发(例如针对销售代表、客户、代理商等);
核心业务类:生产工艺、生产流程和生产技术,销售类,服务类等(根据企业的不同业务特点进行选择)。
员工素质类、管理素质类、专业认证类培训建议选择外部供应商提供,不一定需要自己开发。
为了保证课程的稳定性和不同培训师之间传授的一致性,企业的关键课程要具备标准化和完整性,一般需要包括七个部分的内容:
授课计划:课程的教学计划,是对教学进程和必备事项的系统设计。编写授课计划有利于确保课程的规范性、继承性和授课的一贯性。授课计划包括课程描述和授课计划两
个部分,课程描述主要指课程培训对象、课程名称、课程目的、培训目标、培训人数、课程时间和设施要求等;授课计划则包括课程纲要、内容要点、培训方法、练习项目或案例、时间分配等内容。
讲师手册:讲师培训的指导手册,包括了每一个知识点讲师培训的具体步骤,培训方法和讲评要点,是讲师理解和掌握课程的关键资料。
学员手册:学员培训时使用的文件,包括培训前的阅读资料、培训中的课程资料和培训后的复习资料。
讲师演示文件(Powerpoint文件):讲师培训时用来演示用的文件。
练习手册:培训过程中学员需要进行的案例分析、角色扮演、互动活动等的详细说明,包括背景资料、练习要求、讲师操作步骤和讲评要点等。
考核文件:包括考核方式、考核题目、参考答案和评分标准,是评价学员学习掌握程度的工具。
录像教学片(根据需要制作):一般适合观念类培训和技能类培训使用,主要采用正反对比的方式拍摄,保证培训的准确性、一致性和趣味性。课程开发的人员配备
企业根据课程的特点、内部的能力和资源条件来选择开发课程的方式,主要有以下三种选择:
自我开发:企业培训的相关部门自己组建开发小组,完全由内部进行开发;外包开发:企业将课程开发任务外包给相应的咨询公司开发,自己进行审核;
联合开发或教练式开发:企业培训部与外部咨询公司共同组建开发团队,联合开发。想要开发一个成功的课程需要配备三方面的专家:项目经理、内容专家、方法专家。
项目经理主要负责课程开发立项、项目团队管理、开发项目进程控制、组织课程评审、组织课程推广等任务;内容专家主要负责对开发课程内容、典型案例、练习和角色扮演场景等的提供,并对课程内容和互动活动的正确性和针对性进行把关;方法专家主要负责课程开发流程和开发技术的提供,协助内容专家将正确的培训内容设计出良好的培训方式,提高培训的有效性。
如果这三个方面的专家企业都具备,课程难度不是很高,自主开发比较好;企业有优秀的项目经理,但是缺乏内容专家和方法专家,选择外包开发比较合适,但是,外部合作伙伴必须应该非常了解企业的业务,并且对课程开发方法非常了解;企业有内容专家、但是缺乏方法专家时可以选择联合开发的方式。企业初次进行内部课程开发时选择联合开发比较好,这样不仅可以保证课程的质量,而且可以培养内部的开发力量,提高企业课程开发的管理能力。企业具备了开发能力和开发队伍时,就可以根据实际情况选择外包或内部开发。
课程开发流程和关键技术
企业自主开发内部培训课程的成本比较大,只有按照科学的开发流程和开发技术,并且进行有效的质量控制,才能控制成本、提高课程质量。这里以某电信公司为例,该公司在开发一线员工投诉处理技能的课程中,是按照以下的流程来进行的。
需求分析与立项:主要从组织、岗位和人员角度进行分析来决定是否开发某一课程。对于该电信公司来讲,客户满意度是赢得客户的关键,而处理客户不满和投诉的程度将极大地影响客户满意度。公司一次投诉的解决率只有50%,需要占用上级主管大量时间,而且投诉升级严重,影响客户满意度。营业员和呼叫中心话务员是企业受理投诉最重要的渠道,处理投诉是他们的关键职责之一。电信公司的一线人员有3000多人,从未举办过投诉处理技巧的培训,95%以上的员工缺乏处理投诉的专业知识和技能,83%的营业员害怕处理投诉,其中有50%的职员因此产生过离职的念头。所以,电信公司开发一线员工的投诉处理技能的课程非常必要。
课程设计:解决课程整体逻辑设计,是课程开发的总体计划,需要明确培训目的、培训目标、培训主要内容、内容的重要性和难易程度、对应的培训方法和案例要求、考核方式要求、与其它课程的关系等。该电信公司的《客户投诉技巧训练》课程开发计划包括以下内容:
培训对象:营业厅工作三个月以上的营业员、呼教中心实习期满的话务员。
培训目的:通过有效地处理客户投诉,挽回客户对公司的信任,维持并提高客户对企业的忠诚度,提高营业员处理投诉的能力,提高工作效率,减少员工工作压力。
培训目标:学员能清楚认识,客户不满将对企业造成的负面影响及解决投诉的价值;掌握客户投诉的心理及处理客户投诉的核心原则;掌握有效安抚客户情绪的技巧;确认客户投诉问题及期望,并根据客户投诉问题类型,提供有效的解决方案。(见图)考试方式要求:案例分析、情景模拟
与其它课程的配合关系:以良好的《客户满意技巧》为基础,熟悉业务知、内部工作流程。
在课程设计中,培训目标和培训方法的选择是关键,明确的课程目标有助于制定翔实的培训计划,帮助学员确认培训后应改变的行为,帮助讲师和学员对培训过程做出客观评价,培训目标是学习、教课和评估的指南。正确的培训方法能保证学员有效达成培训目标,选择培训方法需要考虑培训内容类型、培训内容的重要与难易程度、培训要达到的目标等级。常见的培训方法有以下几种:
理论知识类:讲授、阅读、讨论、案例分析、练习等;
技能类:录像观摩、示范、练习、角色扮演、模拟练习、现场参观等
观念态度类:演讲、现场参观、角色表演、案例研究、电影、录像带、自我分析等。
如果培训内容重要、学习难度大、要求达到的目标等级高,那么培训方法的参与度和深入程度就高。在电信公司的投诉处理中,客户投诉心理分析非常重要,如果不了解客户投诉心理就无法明确处理原则。要在短时间内掌握了解客户心理的技巧难度很高,这部分的培训方法就要强调学员的参与度,用录像片正反对比进行研讨,用角色扮演来体会客户心理,用案例分析来确认掌握程度。
课程内容开发及评估
课程开发:内容开发一般按照Why—What—How—If的原则进行开发。为什么/WHY(观念和理念)体现学习本部分内容的目的与价值;是什么/WHAT指知识和理论要点,及其详细要求;怎么做/HOW是技能项目、实施步骤和实施要点;典型情形/IF指这个任务有哪些典型工作情形。
开发中最难做的是HOW的部分,也就是具体的操作技巧部分,因为学员学习的目的是为了在实际工作中应用,所以技巧的可执行性要求很高。如电信公司的培训中如何道歉的问题,道歉的关键点:把表示歉意的话和表示歉意的原因结合起来,才显得真诚。在培训中采用案例演示的方法进行这个环节的训练,首先要保证案例的典型性,典型性不够,会影响培训的针对性,也不利于模仿。案例练习开发第二个关键点是案例练习与所培训知识点和技能点的练习,如果案例和练习的分析讲评不能与培训内容相联系,就无法让学员理解培训内容,达不成培训效果,所以一个好的案例练习需要包括5个部分:目的、背景、练习要求或讨论问题、操作步骤和讲评要点。
考核方式开发:考核是培训课程开发的一个关键部分,学员是学习的主角,所以只有考核才能衡量他们学习的掌握程度,也是促进学习的内在动力。
许多企业在开发课程时不太注重考核方式和考核题目的设计,培训的目的不是为了让员工记住,而是让员工能够提高解决问题的能力。考核需要注意如下几点:根据培训重点确定考试内容重点;根据培训目标选择考核形式;根据典型工作情形选择具体的题目;
不仅要编写题目、参考答案,还要编写评分标准。
课程评估:课程是否真正适合企业需要是课程开发的关键点,要进行审核和质量控制,课程开发的控制点有以下几个:
课程开发计划审核:保证培训目标的合理性、课程要点的针对性、培训方法的合理性;过程中的课程内容审核:保证培训内容符合实际工作需求;
过程中的课程案例和练习审核:保证案例练习的典型性、讲评的科学性;
课程开发结束后试讲审核:安排目标学员接受培训,通过学员反馈、现场观察、学员考核等方式了解课程,明确课程该如何修正。
课程推广:课程开发完成后,为了使课程能够得到使用部门的认可,讲师的质量有保证,需要进行课程推广。首先是对管理者进行推广,安排课程汇报会,向目标学员的主管部门领导进行推广,获得他们对课程的认同;其次,要进行内部讲师的培训,保证内部培训师能够掌握课程,保证培训的正确性和一致性;最后,制作课程说明与相应的培训计划进行课程的正式推广。