??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲第一黄片大全,精品亚洲成a人片在线观看,久久久久久A亚洲欧洲AV冫http://www.tkk7.com/yrj11320/archive/2007/12/28/171121.htmlYangRjYangRjFri, 28 Dec 2007 03:20:00 GMThttp://www.tkk7.com/yrj11320/archive/2007/12/28/171121.htmlhttp://www.tkk7.com/yrj11320/comments/171121.htmlhttp://www.tkk7.com/yrj11320/archive/2007/12/28/171121.html#Feedback0http://www.tkk7.com/yrj11320/comments/commentRss/171121.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/171121.html 包括
db2_kill
ipclean
ps -ef|grep -i db2
kill all processes left

YangRj 2007-12-28 11:20 发表评论
]]>
什么是Ajax? Q{载)http://www.tkk7.com/yrj11320/archive/2006/06/23/54770.htmlYangRjYangRjFri, 23 Jun 2006 11:33:00 GMThttp://www.tkk7.com/yrj11320/archive/2006/06/23/54770.htmlhttp://www.tkk7.com/yrj11320/comments/54770.htmlhttp://www.tkk7.com/yrj11320/archive/2006/06/23/54770.html#Feedback0http://www.tkk7.com/yrj11320/comments/commentRss/54770.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/54770.html

作?viidea 日期:2006-04-17

1.什么是Ajax?
Ajax的全U是QAsynchronous JavaScript + XML

2.Ajax的定义:
Ajax不是一个技术,它实际上是几U技术,每种技术都有其独特q处Q合在一起就成了一个功能强大的新技术?br />
3.Ajax包括Q?br />XHTML和CSS 
使用文档对象模型(Document Object Model)作动态显C和交互 
使用XML和XSLT做数据交互和操作 
使用XMLHttpRequestq行异步数据接收 
使用JavaScript它们绑定在一?

Web开发领域的最新时髦术语其实质是“旧貌换新颜”。?br />
AjaxQAsynchronous JavaScript and XMLQ是l合了Java技术、XML以及JavaScript{编E技术,可以让开发h员构建基于Java技术的Web应用Qƈ打破了用页面重载的惯例。?br />
Ajax是用客L脚本与Web服务器交换数据的Web应用开发方法。这PWeb面不用打断交互程q行重新加裁Q就可以动态地更新。用AjaxQ用户可以创建接q本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。?br />
异步JavaScript和XMLQAJAXQ不是什么新技术,而是指这样一U方法:使用几种现有技术——包括联样式表QCSSQ、JavaScript、XHTML、XML和可扩展样式语言转换QXSLTQ,开发外观及操作cM桌面软g的Web应用软g。实现Ajax的所有组仉已存在了许多q。Adaptive Path的用户体验战略部门主兼创办合伙人Jesse James Garrett今年2月发表在Adaptive Path|站上的一文章中杜撰了这个术语。?br />
异步q个词是指AJAX应用软g与主机服务器q行联系的方式。如果用旧模式Q每当用h行某U操作、向服务器请求获得新数据QWeb览器就会更新当前窗口。?br />
如果使用AJAX的异步模式,览器就不必{用戯求操作,也不必更新整个窗口就可以昄新获取的数据。只要来回传送采用XML格式的数据,在浏览器里面q行的JavaScript代码可以与服务器进行联pRJavaScript代码q可以把样式表加到检索到的数据上Q然后在现有|页的某个部分加以显C。?br />
在面向消费者的诸多应用当中QGoogle的Gmail和Google Maps是最常见的例子。在Gmail当中QAJAX负责如何开启线E会话,以显CZ同邮件的文本内容。而在Maps当中QAJAX允许用户以一U似乎无~的方式拖拉及滚动地图。?br />
q有雅虎的Flickr像片׃n应用和亚马逊网站的A9搜烦引擎。另外,雅虎新的Web邮g服务可能很快׃吸引AJAX支持者的莫大xQ这Ҏ务基于雅虎收购Oddpost后得到的技术。?br />
q些UI都充分地使用了后台通道Q也被一些开发者称为“Web 2.0”,q导致了大家对Ajax应用兴趣的猛涨。?br />
然而,AJAX应用软g厂商来把目光瞄准了企业。譬如说QScalix的Web Access电子邮g应用软g其实比微软Outlook自己的Web邮g界面更像Outlook。?br />
不过AJAX应用软g的适用领域h一定的局限性。因为它们利用了一些最新的Web技术,所以只能在某些Web览器里面运行——不qAJAX适用的浏览器正越来越多。?/span>

Ajax

AjaxQ异步JavaScript与XMLQ是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这PWeb面不用打断交互程q行重新加裁Q就可以动态地更新。用AjaxQ你可以创徏接近本地桌面应用的,直接的、高可用的、更丰富的、更动态的Web用户接口界面?br />
Ajax处理q程 

一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的,它允怸个客L脚本来执行HTTPhQƈ且将会解析一个XML格式的服务器响应。Ajax处理q程中的W一步是创徏一个XMLHttpRequest实例。用HTTPҎQGET或POSTQ来处理hQƈ目标URL讄到XMLHttpRequest对象上?br />
现在Q记住Ajax如何首先处于异步处理状态?当你发送HTTPhQ你不希望浏览器挂vq等待服务器的响应,取而代之的是,你希望通过面l箋响应用户的界面交互,q在服务器响应真正到辑֐处理它们。要完成它,你可以向XMLHttpRequest注册一个回调函敎ͼq异步地z֏XMLHttpRequesth。控制权马上pq回到浏览器Q当服务器响应到达时Q回调函数将会被调用?br />
在Java Web服务器上Q到辄h与Q何其它HttpServletRequest一栗在解析h参数后,servlet执行必需的应用逻辑Q将响应序列化到XML中,q将它写回HttpServletResponse?br />

一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的,它允怸个客L脚本来执行HTTPhQƈ且将会解析一个XML格式的服务器响应。Ajax处理q程中的W一步是创徏一个XMLHttpRequest实例。用HTTPҎQGET或POSTQ来处理hQƈ目标URL讄到XMLHttpRequest对象上?br />
现在Q记住Ajax如何首先处于异步处理状态?当你发送HTTPhQ你不希望浏览器挂vq等待服务器的响应,取而代之的是,你希望通过面l箋响应用户的界面交互,q在服务器响应真正到辑֐处理它们。要完成它,你可以向XMLHttpRequest注册一个回调函敎ͼq异步地z֏XMLHttpRequesth。控制权马上pq回到浏览器Q当服务器响应到达时Q回调函数将会被调用?br />
在Java Web服务器上Q到辄h与Q何其它HttpServletRequest一栗在解析h参数后,servlet执行必需的应用逻辑Q将响应序列化到XML中,q将它写回HttpServletResponse?br />

一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的,它允怸个客L脚本来执行HTTPhQƈ且将会解析一个XML格式的服务器响应。Ajax处理q程中的W一步是创徏一个XMLHttpRequest实例。用HTTPҎQGET或POSTQ来处理hQƈ目标URL讄到XMLHttpRequest对象上?br />
现在Q记住Ajax如何首先处于异步处理状态?当你发送HTTPhQ你不希望浏览器挂vq等待服务器的响应,取而代之的是,你希望通过面l箋响应用户的界面交互,q在服务器响应真正到辑֐处理它们。要完成它,你可以向XMLHttpRequest注册一个回调函敎ͼq异步地z֏XMLHttpRequesth。控制权马上pq回到浏览器Q当服务器响应到达时Q回调函数将会被调用?br />
在Java Web服务器上Q到辄h与Q何其它HttpServletRequest一栗在解析h参数后,servlet执行必需的应用逻辑Q将响应序列化到XML中,q将它写回HttpServletResponse?/span>



YangRj 2006-06-23 19:33 发表评论
]]>
websphere如何主要关键点http://www.tkk7.com/yrj11320/archive/2006/06/20/53924.htmlYangRjYangRjTue, 20 Jun 2006 03:06:00 GMThttp://www.tkk7.com/yrj11320/archive/2006/06/20/53924.htmlhttp://www.tkk7.com/yrj11320/comments/53924.htmlhttp://www.tkk7.com/yrj11320/archive/2006/06/20/53924.html#Feedback0http://www.tkk7.com/yrj11320/comments/commentRss/53924.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/53924.html 关于乌鲁木齐电业局服务主要关键点说明

数据库服务:采用 QUEST 自带的检工具即?/span>

l         保证没有持箋锁情况:如果短时间出?/span> 可以自动解开 注意一定不要慌忙杀M个锁 其?/span> JAVA 的锁 对于其他的例?/span> QUEST,PB {引L 必须q行杀d理――――一般处理方式先?/span> QUEST,PB Q?/span> JAVAW 或者邦联的{全部杀?/span> h一下检?/span> 看看是否消失 否则可以一层一层向上寻?/span> 扑ֈ引v?/span> 没有办法的情况下杀死该q程

l         晚上或者吃饭前杀M?/span> QUEST,PB Q?/span> JAVAW {连?/span> 同时是否有 CURR UOW(SEC) 占用的情况,如果有ƈ且是 JAVA 的ƈ?/span> CPU 被占用了q且一直释放不?/span> 肯定E序有问题,Z攑ֿ期间 对这U情况可以杀?/span> 一般不要这样做

 

对于应用服务 WEBSPHERE 的检?/span>

telnet 10.218.103.6

NAME   /   PASSWORD

 

l         CPU {检?/span>

top

SHIFT+M

一定不能出?/span> CPU 99 ?/span> 99 的情?/span> 如果出现 长时间不能释?/span> 肯定有程序被挂v?/span>

 

q种情况下: kill ? pid 一分钟后再执行一?/span>

获得 CORE 文g 观测是否?/span> .yxgl. 的相兛_?/span> 如果重复出现 基本是由该程序操作引Lq程挂v 不能释放

 

CPU 比较严重 Dpȝ速度{很?/span> 无法登陆{现象出?/span> 执行 kill ?1 pid 可以杀死该服务 自动重启该服务(一般情况下 可以多执行几ơ该命oQ?/span> 同时观察 TOP 中的 CPU 的情?/span> 杀d应该重启了一个进E?/span>

 

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/ 目录?/span> cM

javacore.20060615.164429.6088.txt 一cȝ文g

 

l         后台服务日志(共四个服务)

cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/

 

tail ?/span> f SystemOut.log

tail ?/span> f SystemErr.log

 

l         pȝ内存垃圾自动清除日志

其是当出现 CPU 饥饿{症?/span> 无法释放的情况下 执行?/span> kill ? pid

注意观测Q?/span> /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/下的

native_stderr.log

 

 

 

l         常用命o

ps –ef|grep java  -- 查看 WEBSPHERE 启动的几个进E的情况 ?/span> TOP 中的q程号对?/span> 可以知道对应的服务情?/span>

 

 

l         应用服务的管理:

启动Q?/span> /opt/IBM/scripts

./ start_was.sh

停止Q?/span> /opt/IBM/scripts

./ stop_was.sh

 

l合 ps –ef|grep java 观察启动和停止情?/span>

如果出现紧急情?/span> 停止不了 可以 kill ? pid ( 一般不要这h?/span> )



YangRj 2006-06-20 11:06 发表评论
]]>
初学者如何开发出高质量的J2EEpȝhttp://www.tkk7.com/yrj11320/archive/2005/10/24/16593.htmlYangRjYangRjMon, 24 Oct 2005 07:29:00 GMThttp://www.tkk7.com/yrj11320/archive/2005/10/24/16593.htmlhttp://www.tkk7.com/yrj11320/comments/16593.htmlhttp://www.tkk7.com/yrj11320/archive/2005/10/24/16593.html#Feedback2http://www.tkk7.com/yrj11320/comments/commentRss/16593.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/16593.html
  J2EE可以说指Java在数据库信息pȝ上实玎ͼ数据库信息系l从早期的dBase、到Delphi/VB{C/Sl构Q发展到B/SQBrowser览?Server服务器)l构Q而J2EE主要是指B/Sl构的实现?BR>
  J2EE又是一U框架和标准Q框架类似API、库的概念,但是要超出它们。如果需要详l了解框Ӟ可先从设计模式开始学习?BR>
  J2EE是一个虚的大的概念,J2EE标准主要有三U子技术标准:WEB技术、EJB技术和JMSQ谈到J2EE应该说最l要落实到这三个子概念上?BR>
  q三U技术的每个技术在应用旉涉及两个部分Q容器部分和应用部分QWeb容器也是指Jsp/Servlet容器Q你如果要开发一个Web应用Q无论是~译或运行,都必要有Jsp/Servlet库或API支持Q除了JDK/J2SE以外Q?BR>
  Web技术中除了Jsp/Servlet技术外Q还需要JavaBeans或Java Class实现一些功能或者包装携带数据,所以Web技术最初裸体简UCؓJsp/Servlet+JavaBeanspȝ?BR>谈到JavaBeans技术,涉及到lg构g技术(componentQ,q是Java的核心基部分Q很多Y件设计概念(设计模式Q都是通过JavaBeans实现的?BR>
  JavaBeans不属于J2EE概念范畴中,如果一个JavaBeans对象被Web技术(也就是Jsp/ServletQ调用,那么JavaBeansp行在J2EE的Web容器中;如果它被EJB调用Q它p行在EJB容器中?BR>
  EJBQ企业JavaBeansQ是普通JavaBeans的一U提升和规范Q因Z业信息系l开发中需要一个可伸羃的性能和事务、安全机Ӟq样能保证企业系l^滑发展,而不是发展到一U规模重新更换一套Y件系l?BR>
  xQJavaBeanslg发展到EJB后,q不是说以前的那UJavaBeans形式消׃Q这p然Ş成了两种JavaBeans技术:EJB和POJOQPOJO完全不同于EJB概念Q指的是普通JavaBeansQ而且q个JavaBeans不依附某U框Ӟ或者干脆可以说Q这个JavaBeans是你个应用程序单独开发创建的?BR>
  J2EE应用pȝ开发工h很多Q如JBuilder、Eclipse{,q些IDE首先是Java开发工P也就是说Q它们首要基本功能是可以开发出JavaBeans或Java classQ但是如果要开发出J2EEpȝQ就要落实到要么是Web技术或EJB技术,那么有可能要一些专门模块功?如eclipse需要lomboz插g)Q最重要的是Q因为J2EEpȝ区分为容器和应用两个部分Q所以,在Q何开发工具中开发J2EE都需要指定J2EE容器?BR>
  J2EE容器分ؓWEB容器和EJB容器QTomcat/Resin是Web容器QJBoss是EJB容器+Web容器{,其中Web容器直接使用Tomcat实现的。所以你开发的Web应用E序可以在上面两U容器运行,而你开发的Web+EJB应用则只可以在JBoss服务器上q行Q商业品Websphere/Weblogic{和JBoss属于同一U性质?BR>
  J2EE容器也称为J2EE服务器,大部分时它们概念是一致的?BR>如果你的J2EE应用pȝ的数据库q接是通过JNDI获得Q也是说是从容器中获得Q那么你的J2EE应用pȝ基本与数据库无关Q如果你在你的J2EE应用pȝ耦合了数据库JDBC驱动的配|,那么你的J2EE应用pȝ有数据库概念色彩,作ؓ一个成熟需要推q的J2EE应用pȝQ不推荐和具体数据库耦合Q当然这其中如何保证J2EE应用pȝq行性能又是体现你的设计水^了?BR>
  衡量J2EE应用pȝ设计开发水q高低的标准是Q解耦性;你的应用pȝ各个功能是否能够dqQ是否不怺依赖Q也只有q样Q才能体现可l护性、可拓展性的软g设计目标?BR>
  Z辑ֈq个目的Q诞生各U框架概念,J2EE框架标准一个系l划分ؓWEB和EJB主要部分Q当然我们有时不是以q个具体技术区分,而是从设计上抽象现层、服务层和持久层Q这三个层次从一个高度将J2EE分离开来,实现解耦目的?BR>
  因此Q我们实际编E中Q也要将自己的功能向q三个层ơ上靠,做到大方向清楚,泾渭分明Q但是没有技术上U束限制要做到这Ҏ很不Ҏ的,因此我们q是必须借助J2EE具体技术来实现Q这Ӟ你可以用EJB规范实现服务层和持久层,Web技术实现表现层Q?BR>
  EJBZ么能服务层从Jsp/Servlet手中分离出来Q因为它对JavaBeans~码有强制的U束Q现在有一U对JavaBeansq束,使用Ioc模式实现的(当然EJB 3.0也采取这U方式)Q在Ioc模式诞生前,一般都是通过工厂模式来对JavaBeansU束QŞ成一个服务层Q这也是是Jiveq样开源论坛设计原理之一?BR>
  由此Q将服务层从表现层中分离出来目前有两U可选架构选择Q管理普通JavaBeansQPOJOQ框?如Spring、JdonFramework)以及理EJB的EJB框架Q因为EJB不只是框Ӟq是标准Q而标准可以扩展发展,所以,q两U区别将来是可能模糊Q被U_同一个标准了。 但是Q个为:标准制定是ؓ某个目的服务的,总要牺牲一些换取另外一些,所以,q两U架构会长时间ƈ存?BR>
  q两U架构分歧也曄诞生一个新名词Q完全POJO的系l也UCؓ轻量U系l?lightweight)Q其实这个名词本w就没有一个严格定义,更多是一个吸引h的招牌,轻量是指Ҏ学习Ҏ使用吗?按照q个定义Q其实轻量Spring{系lƈ不容易学习;而且EJB 3.0Q依然叫EJBQ以后的pȝ是否可称量了呢Q?BR>前面谈了服务层框Ӟ使用服务层框架可以将JavaBeans从Jsp/Servlet中分d来,而用表现层框架则可以将Jsp中剩余的JavaBeans完全分离Q这部分JavaBeans主要负责昄相关Q一般是通过标签库(taglibQ实玎ͼ不同框架有不同自q标签库,Struts是应用比较广泛的一U表现层框架?BR>
  q样Q表现层和服务层的分L通过两种框架辑ֈ目的Q剩余的是持久层框架了Q通过持久层的框架数据库存储从服务层中分d来是其目的,持久层框架有两种方向Q直接自q写JDBC{SQL语句Q如iBatisQ;使用O/R Mapping技术实现的Hibernate和JDO技术;当然q有EJB中的实体Bean技术?BR>
  持久层框架目前呈现百花齐放,各有优缺点的现状Q所以正如表现层框架一P目前没有一个框架被指定为标准框Ӟ当然Q表现层框架现在又出来了一个JSFQ它代表的页面组件概忉|一个新的发展方向,但是复杂的实现让人有些忘而却步?BR>
  在所有这些J2EE技术中Q虽然SUN公司发挥了很大的作用Q不qM来说Q网l上有这样一个评PSUN的理论天下无敌;SUN的品用h撞墙Q对于初学者,特别是那些试N过或已l通过SUN认证的初学者,赶快摆脱SUN的阴影,立即开溜,使用开源领域的产品来实现自q应用pȝ?BR>
  最后,你的J2EE应用pȝ如果采取上面提到的表现层、服务层和持久层的框架实玎ͼ基本你也可以在无需深刻掌握设计模式的情况下开发出一个高质量的应用系l了?BR>
  q要注意的是: 开发出一个高质量的J2EEpȝq需要正的业务需求理解,那么域徏模提供了一U比较切实可行的正确理解业务需求的ҎQ相兌l知识可从UML角度l合理解?BR>
  当然Q如果你惌计自q行业框架Q那么第一步从设计模式开始吧Q因计模式提供你一个实现JavaBeans或类之间解耦参考实现方法,当你学会了系l基本单元JavaBean或类之间解耦时Q那么系l模块之间的解耦你可能掌握,q而你可以实现行业框架的提炼了,q又是另外一个发展方向了?BR>
  以上理念可以ȝZ句话Q?BR>  J2EE开发三件宝: Domain ModelQ域建模Q、patternsQ模式)和frameworkQ框Ӟ?BR>

YangRj 2005-10-24 15:29 发表评论
]]>
DOM基础&实例http://www.tkk7.com/yrj11320/archive/2005/10/23/16457.htmlYangRjYangRjSat, 22 Oct 2005 16:00:00 GMThttp://www.tkk7.com/yrj11320/archive/2005/10/23/16457.htmlhttp://www.tkk7.com/yrj11320/comments/16457.htmlhttp://www.tkk7.com/yrj11320/archive/2005/10/23/16457.html#Feedback1http://www.tkk7.com/yrj11320/comments/commentRss/16457.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/16457.html阅读全文

YangRj 2005-10-23 00:00 发表评论
]]>
JAR文g包及jar命o详解 http://www.tkk7.com/yrj11320/archive/2005/10/16/15647.htmlYangRjYangRjSun, 16 Oct 2005 08:27:00 GMThttp://www.tkk7.com/yrj11320/archive/2005/10/16/15647.htmlhttp://www.tkk7.com/yrj11320/comments/15647.htmlhttp://www.tkk7.com/yrj11320/archive/2005/10/16/15647.html#Feedback1http://www.tkk7.com/yrj11320/comments/commentRss/15647.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/15647.html常常在网上看到有问:如何?nbsp;java E序~译?nbsp;.exe 文g。通常回答只有两种Q一U是制作一个可执行?nbsp;JAR 文g包,然后可以像.chm 文档一样双击运行了Q而另一U是使用 JET 来进?nbsp;~译。但?nbsp;JET 是要用钱买的Q而且据说 JET 也不是能把所有的 Java E序都编译成执行文gQ性能也要打些折扣。所以,使用制作可执?nbsp;JAR 文g包的Ҏ是最佳选择了,何况它还能保?nbsp;Java 的跨q_Ҏ?BR>  下面来看看什么是 JAR 文g包吧Q?nbsp;

  1. JAR 文g?nbsp;

  JAR 文g是 Java Archive FileQ顾名思意Q它的应用是?nbsp;Java 息息相关的,?nbsp;Java 的一U文档格式。JAR 文g非常cM ZIP 文g??准确的说Q它是 ZIP 文gQ所以叫它文件包。JAR 文g?nbsp;ZIP 文g唯一的区别就是在 JAR 文g的内容中Q包含了一?nbsp;META-INF/MANIFEST.MF 文gQ这个文件是在生?nbsp;JAR 文g的时候自动创建的。D个例子,如果我们h如下目录l构的一些文Ӟ 

  == 

  `-- test 

    `-- Test.class 

  把它压羃?nbsp;ZIP 文g test.zipQ则q个 ZIP 文g的内部目录结构ؓQ?nbsp;

  test.zip 

  `-- test 

    `-- Test.class 

  如果我们使用 JDK ?nbsp;jar 命o把它打成 JAR 文g?nbsp;test.jarQ则q个 JAR 文g的内部目录结构ؓQ?nbsp;

  test.jar 

  |-- META-INF 

  |  `-- MANIFEST.MF 

  `-- test 

    `--Test.class 

  2. 创徏可执行的 JAR 文g?nbsp;

  制作一个可执行?nbsp;JAR 文g包来发布你的E序?nbsp;JAR 文g包最典型的用法?nbsp;

  Java E序是由若干?nbsp;.class 文gl成的。这?nbsp;.class 文g必须Ҏ它们所属的包不同而分U分目录存放Q运行前需要把所有用到的包的根目录指定给 CLASSPATH 环境变量或?nbsp;java 命o?nbsp;-cp 参数Q运行时q要到控制台下去使用 java 命o来运行,如果需要直接双击运行必d Windows 的批处理文g (.bat) 或?nbsp;Linux ?nbsp;Shell E序。因此,许多QJava 是一U方便开发者苦了用LE序设计语言?nbsp;

  其实不然Q如果开发者能够制作一个可执行?nbsp;JAR 文g包交l用P那么用户使用h方便了。在 Windows 下安?nbsp;JRE (Java Runtime Environment) 的时候,安装文g会将 .jar 文g映射l?nbsp;javaw.exe 打开。那么,对于一个可执行?nbsp;JAR 文g包,用户只需要双d可以运行程序了Q和阅读 .chm 文档一h?nbsp;(.chm 文档默认是由 hh.exe 打开?。那么,现在的关键,是如何来创个可执行?nbsp;JAR 文g包?nbsp;

  创徏可执行的 JAR 文g包,需要用带 cvfm 参数?nbsp;jar 命oQ同样以上述 test 目录ZQ命令如下: 

jar cvfm test.jar manifest.mf test 

  q里 test.jar ?nbsp;manifest.mf 两个文gQ分别是对应的参?nbsp;f ?nbsp;mQ其重头戏在 manifest.mf。因创徏可执行的 JAR 文g包,光靠指定一?nbsp;manifest.mf 文g是不够的Q因?nbsp;MANIFEST ?nbsp;JAR 文g包的特征Q可执行?nbsp;JAR 文g包和不可执行?nbsp;JAR 文g包都包含 MANIFEST。关键在于可执行 JAR 文g包的 MANIFESTQ其内容包含?nbsp;Main-Class 一V这?nbsp;MANIFEST 中书写格式如下: 

  Main-Class: 可执行主cd?包含包名) 

  例如Q假设上例中?nbsp;Test.class 是属?nbsp;test 包的Q而且是可执行的类 (定义?nbsp;public static void main(String[]) Ҏ)Q那么这?nbsp;manifest.mf 可以~辑如下Q?nbsp;

Main-Class: test.Test <回R> 

  q个 manifest.mf 可以攑֜M位置Q也可以是其它的文g名,只需要有 Main-Class: test.Test 一行,且该行以一个回车符l束卛_。创Z manifest.mf 文g之后Q我们的目录l构变ؓQ?nbsp;

  == 

  |-- test 

  |  `-- Test.class 

  `-- manifest.mf 

  q时候,需要到 test 目录的上U目录中M?nbsp;jar 命o来创?nbsp;JAR 文g包。也是在目录树中用?=”表C的那个目录中,使用如下命oQ?nbsp;

jar cvfm test.jar manifest.mf test 

  之后在?=”目录中创徏?nbsp;test.jarQ这?nbsp;test.jar 是执行?nbsp;JAR 文g包。运行时只需要?nbsp;java -jar test.jar 命o卛_?nbsp;

  需要注意的是,创徏?nbsp;JAR 文g包中需要包含完整的、与 Java E序的包l构对应的目录结构,像上例一栗?nbsp;Main-Class 指定的类Q也必须是完整的、包含包路径的类名,如上例的 test.TestQ而且在没有打?nbsp;JAR 文g包之前可以?nbsp;java <cd> 来运行这个类Q即在上例中 java test.Test 是可以正运行的 (当然要在 CLASSPATH 正确的情况下)?BR>
  3. jar 命o详解 

  jar 是随 JDK 安装的,?nbsp;JDK 安装目录下的 bin 目录中,Windows 下文件名?nbsp;jar.exeQLinux 下文件名?nbsp;jar。它的运行需要用?nbsp;JDK 安装目录?nbsp;lib 目录中的 tools.jar 文g。不q我们除了安?nbsp;JDK 什么也不需要做Q因?nbsp;SUN 已经帮我们做好了。我们甚至不需要将 tools.jar 攑ֈ CLASSPATH 中?nbsp;

  使用不带M?nbsp;jar 命o我们可以看到 jar 命o的用法如下: 

  jar {ctxu}[vfm0M] [jar-文g] [manifest-文g] [-C 目录] 文g?nbsp;... 

  其中 {ctxu} ?nbsp;jar 命o的子命oQ每?nbsp;jar 命o只能包含 ctxu 中的一个,它们分别表示Q?nbsp;

   -c 创徏新的 JAR 文g?nbsp;

   -t 列出 JAR 文g包的内容列表 

   -x 展开 JAR 文g包的指定文g或者所有文?nbsp;

   -u 更新已存在的 JAR 文g?nbsp;(d文g?nbsp;JAR 文g包中) 

     [vfm0M] 中的选项可以任选,也可以不选,它们?nbsp;jar 命o的选项参数 

   -v 生成详细报告q打印到标准输出 

   -f 指定 JAR 文g名,通常q个参数是必ȝ 

   -m 指定需要包含的 MANIFEST 清单文g 

   -0 只存储,不压~,q样产生?nbsp;JAR 文g包会比不用该参数产生的体U大Q但速度更快 

   -M 不生所有项的清单(MANIFEST〕文Ӟ此参C忽略 -m 参数 

     [jar-文g] 即需要生成、查看、更新或者解开?nbsp;JAR 文g包,它是 -f 参数的附属参?nbsp;

     [manifest-文g] ?nbsp;MANIFEST 清单文gQ它?nbsp;-m 参数的附属参?nbsp;

     [-C 目录] 表示转到指定目录下去执行q个 jar 命o的操作。它相当于先使用 cd 命o转该目录下再执行不带 -C 参数?nbsp;jar 命oQ它只能在创建和更新 JAR 文g包的时候可用。   

  文g?nbsp;... 指定一个文?目录列表Q这些文?目录是要添加到 JAR 文g包中的文?目录。如果指定了目录Q那?nbsp;jar 命o打包的时候会自动把该目录中的所有文件和子目录打入包中?nbsp;

  下面举一些例子来说明 jar 命o的用法: 

  1) jar cf test.jar test 

  该命令没有执行过E的昄Q执行结果是在当前目录生成了 test.jar 文g。如果当前目录已l存?nbsp;test.jarQ那么该文g被覆盖?nbsp;

  2) jar cvf test.jar test 

  该命令与上例中的l果相同Q但是由?nbsp;v 参数的作用,昄Z打包q程Q如下: 

  标明清单(manifest) 

  增加Qtest/(d= 0) (写出= 0)(存储?nbsp;0%) 

  增加Qtest/Test.class(d= 7) (写出= 6)(压羃?nbsp;14%) 

  3) jar cvfM test.jar test 

  该命令与 2) l果cMQ但在生成的 test.jar 中没有包?nbsp;META-INF/MANIFEST 文gQ打包过E的信息也略有差别: 

  增加Qtest/(d= 0) (写出= 0)(存储?nbsp;0%) 

  增加Qtest/Test.class(d= 7) (写出= 6)(压羃?nbsp;14%) 

  4) jar cvfm test.jar manifest.mf test 

  q行l果?nbsp;2) 怼Q显CZ息也相同Q只是生?nbsp;JAR 包中?nbsp;META-INF/MANIFEST 内容不同Q是包含?nbsp;manifest.mf 的内?nbsp;

  5) jar tf test.jar 

  ?nbsp;test.jar 已经存在的情况下Q可以查?nbsp;test.jar 中的内容Q如对于 2) ?nbsp;3) 生成?nbsp;test.jar 分别应该此命令,l果如下Q?nbsp;

  对于 2) 

  META-INF/ 

  META-INF/MANIFEST.MF 

  test/ 

  test/Test.class 

  对于 3) 

  test/ 

  test/Test.class 

  6) jar tvf test.jar 

  除显C?nbsp;5) 中显C的内容外,q包括包内文件的详细信息Q如Q?nbsp;

  0 Wed Jun 19 15:39:06 GMT 2002 META-INF/ 

  86 Wed Jun 19 15:39:06 GMT 2002 META-INF/MANIFEST.MF 

  0 Wed Jun 19 15:33:04 GMT 2002 test/ 

  7 Wed Jun 19 15:33:04 GMT 2002 test/Test.class 

  7) jar xf test.jar 

  解开 test.jar 到当前目录,不显CZQ何信息,对于 2) 生成?nbsp;test.jarQ解开后的目录l构如下Q?nbsp;

  == 

  |-- META-INF 

  |  `-- MANIFEST 

  `-- test 

    `--Test.class 

jar xvf test.jar 

  q行l果?nbsp;7) 相同Q对于解压过E有详细信息昄Q如Q?nbsp;

  创徏QMETA-INF/ 

  展开QMETA-INF/MANIFEST.MF 

  创徏Qtest/ 

  展开Qtest/Test.class 

  9) jar uf test.jar manifest.mf 

  ?nbsp;test.jar 中添加了文g manifest.mfQ此使用 jar tf 来查?nbsp;test.jar 可以发现 test.jar 中比原来多了一?nbsp;manifest。这里顺便提一下,如果使用 -m 参数q指?nbsp;manifest.mf 文gQ那?nbsp;manifest.mf 是作为清单文?nbsp;MANIFEST 来用的Q它的内容会被添加到 MANIFEST 中;但是Q如果作Z般文件添加到 JAR 文g包中Q它跟一般文件无异?nbsp;

  10) jar uvf test.jar manifest.mf 

  ?nbsp;9) l果相同Q同时有详细信息昄Q如Q?nbsp;

  增加Qmanifest.mf(d= 17) (写出= 19)(压羃?nbsp;-11%) 

  4. 关于 JAR 文g包的一些技?nbsp;

  1) 使用 unzip 来解?nbsp;JAR 文g 

  在介l?nbsp;JAR 文g的时候就已经说过了,JAR 文g实际上就?nbsp;ZIP 文gQ所以可以用常见的一些解?nbsp;ZIP 文g的工h解压 JAR 文gQ如 Windows 下的 WinZip、WinRAR {和 Linux 下的 unzip {。?nbsp;WinZip ?nbsp;WinRAR {来解压是因为它们解压比较直观,方便。而?nbsp;unzipQ则是因为它解压时可以?nbsp;-d 参数指定目标目录?nbsp;

  在解压一?nbsp;JAR 文g的时候是不能使用 jar ?nbsp;-C 参数来指定解压的目标的,因ؓ -C 参数只在创徏或者更新包的时候可用。那么需要将文g解压到某个指定目录下的时候就需要先这?nbsp;JAR 文g拯到目标目录下Q再q行解压Q比较麻烦。如果?nbsp;unzipQ就不需要这么麻烦了Q只需要指定一?nbsp;-d 参数卛_。如Q?nbsp;

  unzip test.jar -d dest/ 

  2) 使用 WinZip 或?nbsp;WinRAR {工具创?nbsp;JAR 文g 

  上面提到 JAR 文g是包含?nbsp;META-INF/MANIFEST ?nbsp;ZIP 文gQ所以,只需要?nbsp;WinZip、WinRAR {工具创建所需?nbsp;ZIP 压羃包,再往q个 ZIP 压羃包中d一个包?nbsp;MANIFEST 文g?nbsp;META-INF 目录卛_。对于?nbsp;jar 命o?nbsp;-m 参数指定清单文g的情况,只需要将q个 MANIFEST 按需要修改即可?nbsp;

  3) 使用 jar 命o创徏 ZIP 文g 

  有些 Linux 下提供了 unzip 命oQ但没有 zip 命oQ所以需要可以对 ZIP 文gq行解压Q即不能创徏 ZIP 文g。如要创Z?nbsp;ZIP 文gQ用带 -M 参数?nbsp;jar 命o卛_Q因?nbsp;-M 参数表示制作 JAR 包的时候不d MANIFEST 清单Q那么只需要在指定目标 JAR 文g的地方将 .jar 扩展名改?nbsp;.zip 扩展名,创徏的就是一个不折不扣的 ZIP 文g了,如将上一节的W?nbsp;3) 个例子略作改动: 

  jar cvfM test.zip test 


YangRj 2005-10-16 16:27 发表评论
]]>
JSP中SQL数据库编E技?http://www.tkk7.com/yrj11320/archive/2005/10/16/15645.htmlYangRjYangRjSun, 16 Oct 2005 08:26:00 GMThttp://www.tkk7.com/yrj11320/archive/2005/10/16/15645.htmlhttp://www.tkk7.com/yrj11320/comments/15645.htmlhttp://www.tkk7.com/yrj11320/archive/2005/10/16/15645.html#Feedback0http://www.tkk7.com/yrj11320/comments/commentRss/15645.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/15645.htmlJSP中SQL数据库编E技?BR>一QSQL复习
 1QSQL语句分ؓ两类QDDL(Data Definition Language)和DML(Dat Manipulation Languge,数据操作语言)。前者主要是定义数据逻辑l构Q包括定义表、视囑֒索引;DML主要是对数据库进行查询和更新操作?BR> 2QCreate Table(DDL):
  Create Table tabName(
   colName1 colType1 [else],
   colName2 colType2 [else],
   ...,
   colNamen colTypen [else]
  );
  例如QCteate Table pJoiner(
   pno char(6) not null,
   eno char(6) nut null
   );
  char int varchar{等都是用来定义列数据类型的保留字,其中varchar表示可变字符cd?BR> 3QSelect <col1>,<col2>,...,<coln>
  From <tab1>,<tab2>,...,<tabm>
  [Where<条g>]
  
  条g中的子查询:
   Where Not Exists(
    Select * From tab2 Where col1=col2
   )//当查询结果ؓI时Q条件ؓ真?BR>   
 4QINSERT INTO <tab1> VALUES(<col1>, ...<coln>)
 5QDELETE FROM <tab1> [WHERE<条g>]
 6QUPDATE <tab1>
  SET <tab1>=<vlu1>
  ...
  <tabn>=<vlun>
  [WHERE<条g>]
  例如Q?BR>   Update exployee
   Set age=27
   Where name='赵一'
二,JDBC 主要接口Q?BR> java.sql.DriverManagercȝ于处理驱动程序的调入q且Ҏ的数据库q接提供支持?BR> java.sql.ConnectionQ指应用E序与特定数据库的连接?BR> java.sql.StatementQ用于一般sql语句的执行(可以是查询、更新甚臛_以创建数据库的执行过E)
 java.sql.ResultSet,查询所q回的结果保存在此对象中Q用它可以浏览和存取数据库内的记录?BR> 
 1Q通过jdbc-odbc桥用odbc数据库(q不需要jdbc DriversQ?BR> 
  先在odbc DSN(Data Source Name)讄处设|pubs sysDSN,sa为username,密码为空
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加蝲驱动E序
  con=DriverManager.getConnection("jdbc:odbc:pubs","sa","");//jdbc:odbc:pubs   
  con.close();
  //应当catch ClassNotFoundException和SQLException
 
  Connection的getWarningҎq回一个SQLWarning对象Q在q接之前应当先检查?BR>    使用jdbc-odbc的最大好处是Q免费的。但是性能受odbc的限Ӟ而且一般odbc驱动比较昂贵?BR> 2Q用专门的jdbc驱动E序?/此处是mm jdbc Driver
  先将jar文g攑֜ClassPath里面?BR>  Class.forName("org.gjt.mm.mysql.Driver");
  con=DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname","root","");
  con.close();
  
  可见使用何种方式q接何种数据库与数据库的操作和连接数据库是无关的?BR>三,查询数据?BR> Statement stmt=con.createStatement();
 stmt.setMaxRows()可以控制输出记录最大数?
 ResultSet rs=stmt.executeQuery("select .....");
 
 ResultSet指向当前记录:
  int userId=rs.getInt("userid");
  String userName=rs.getString("username");
  ...或者用序号Q从1开始的Q?BR>  int userId=rs.getInt(1);
  Stirng userName=rs.getString(2);
 
 ClassNotFoundException是由于Class.forName()无法载入jdbc驱动E序触发?BR> SQLException是jdbc在执行过E中发生问题时生。有一个额外的ҎgetNextException()
  catch(SQLException e){
   out.println(e.getMessage());
   while(e=e.getNextException()){
    out.println(e.getMessage());
   }
  }
   
 一般来说ƈ不徏议在jsp中编写数据库的访问程序,可以数据库的访问封装在一个javabean中?BR>四,ResultSet深入
 1QResultSetMetaData
  ResultSet rs=stmt.executeQuery("select....");
  ResultSetMetaData rsmd=rs.getMetaData(); //获取ResultSetMateData对象
  int numberOfColumns=rsmd.getColumnCount();//q回列数
  boolean b=rsmd.isSearchable(int i);//q回Wi列是否可以用于where子句
  String c=rsmd.getColumnLabel(int i);//获取Wi列的列标
  Objcet obj=rs.getObject();
  if(obj!=null)out.println(obj.toString());
  else println("");
 2QSQLcd与ResultSet的getObjectq回cd及对应的XXX getXXX()Ҏ
  SQLcd  JSPcd   对应的getXXX()Ҏ
  ????????????????????????????????????????????
  CHAR                         String                                            String getString()
  VARCHAR                 String                                            String getString()
  LONGVARCHAR      String                                            InputStream getAsciiStream()/getUnicodeStream()
  NUMERIC                  java.math.BigDecimal              java.math.BigDecimal getBigDecimal()
  DECIMAL                   同上
  BIT                              Boolean                                       boolean getBoolean()
  TINYINT                     Integer                                          byte getByte()
  SMALLINT                 Integer                                          short getShort()
  INTEGER                  Integer                                          int getInt()
  BIGINT                       Long                                             long getLong()
  REAL                         Float                                              float getFloat()
  FLOAT                       Double                                          double getDouble()
  DOUBLE                   Double                                          double getDouble()
  BINARY                     byte[]                                              byte[] getBytes()
  VARBINARY              byte[]                                              byte[] getBytes()
  LONGVARBINARY   byte[]                                              InputStream getBinaryStream()
  DATE                          java.sql.Date                               java.sql.Date getDate()
  TIME                           java.sql.Time                               java.sql.Time getTime()
  TIMESTAMP              java.sql.Timestamp                   java.sql.Timestamp getTimestamp()
  
 3Qnull 
  int i=rs.getInt("age");
  if(!rs.wasNull())....//RecordSet::wasNull()用来查null
 4,存取大字W串和二q制文本
  对于数据库中longvarchar和langvarbinaryq行操?BR>  ResultSet rs=stmt.executeQueryString("select ...");
  BufferedReader br=new BufferedReader(new InputStream(rs.getAsciiStream("vol1")));//长文本串
  BufferedReader br=new BufferedReader(new InputStream(rs.getUnicodeStream("vol1")));
  BufferedReader br=new BufferedReader(new InputStream(rs.getBinaryStream("vol2")));//长二q制文本
  //取数据必drs.getAsciiStream(), rs.getUnicodeStream(), rs.getBinaryStream(){之后马上进?/SPAN>

YangRj 2005-10-16 16:26 发表评论
]]>
J2EE应用中常见的反模?anti-patterns) http://www.tkk7.com/yrj11320/archive/2005/10/16/15640.htmlYangRjYangRjSun, 16 Oct 2005 07:34:00 GMThttp://www.tkk7.com/yrj11320/archive/2005/10/16/15640.htmlhttp://www.tkk7.com/yrj11320/comments/15640.htmlhttp://www.tkk7.com/yrj11320/archive/2005/10/16/15640.html#Feedback0http://www.tkk7.com/yrj11320/comments/commentRss/15640.htmlhttp://www.tkk7.com/yrj11320/services/trackbacks/15640.htmlJ2EE应用中有一些常见的毛病和错误的观念Q按照时下流行的说法Q叫反模式。稍不注意,我们自己也会犯,所以大概整理一下,一个是备忘Q也是供需要的朋友参考:

 

1- ?/SPAN>EJB不叫J2EE

EJB一直发展到今天?/SPAN>2.1仍然被广病,它提供了很多时候我们ƈ不需要的东西Q而且我们在很多情况下一旦选用EJB没有其他的方式不去使用那些W重的功能。但是很多所谓范例让我们有一U错觉,好像不用EJB׃?/SPAN>J2EE应用。有一些折中的Ҏ是?/SPAN>Session Fa?ade模式Q?/SPAN>Entity Bean采用BMP + 本地接口Q然后提供一层无状态的Session BeanQ采用远E和本地接口Q这L设计模式Q我惻I多半是出于无奈。如今,甚至我们l常都能看到不?/SPAN>EJB的言论,炒得很火?/SPAN>Spring则ؓq种完全不用EJB开?/SPAN>J2EE目提供了实际的、强有力的佐证?/SPAN>

 

2- q度分层

J2EEq个规范肤浅的来看,是为我们定义了很多“层”,然后q有很多分工明确的“角艜y,加上J2EE的蓝本应用程序就分了很多“层”,以至于大安觉得J2EE的应用就应该是很多层的,其实不然Q需要具体情况具体分析?/SPAN>

 

3- 频繁的往q调?/SPAN>

EJB的看似简单造成我们l常忽略可能在用过E中出现的远E调用,比如有时候ؓ了更C条记录,每个字段都是q程的去setQ大大增加了不必要的开销Q于是我们意识到在调用中使用DTO是一个徏议遵循的Ҏ?/SPAN>

 

4- q度使用有状态的Session Bean

一般来Ԍ一?/SPAN>Session Bean实例Q如果它是有状态的Q那么它只对某个固定的用h务,如果是无状态的Q则可以满不同用户的调用。这有点cMQ只是有点类|一个类的静态方法和非静态方法的区别。我们在实际应用中,应该量避免使用有状态的Session BeanQ除非特别必要。我们可以把状态保留在Session Bean之外Q如Web容器?/SPAN>session对象或者我们自定义的类中,而不是完全依赖有状态的Session Beand我们做?/SPAN>

 

5- q度会话

Web容器?/SPAN>session对象是个好东西,用v来也很方便和直截了当Q这造成了我们很多h对它的滥用,什么东襉K往里面放。这有两个突出的问题Q一个是资源费Q另一个,万一Web服务器崩溃,那些本来需要持久化的数据就丢失了。我们需要考虑好,哪些数据本可以用request的,哪些数据又是需要持久化到数据库的,{等Q不能一味依?/SPAN>session?/SPAN>

 

6- 万能Servlet或者万?/SPAN>JSP

J2EE为我们提供了Web层丰富的技术选择Q?/SPAN>Servlet或?/SPAN>JSP都只是其中一U,虽然它很强大Q但是也不应该由它一个来承担所?/SPAN>MVC三个部分的功能。现实中我们?/SPAN>Struts很好的规范了q个问题Q?/SPAN>Servlet负责调度Q专门的Action负责处理逻辑Q?/SPAN>JSP用于用户界面昄?/SPAN>JSP?/SPAN>Servlet本质上是同一个东西,只是从不同的角度来处理问题,它们各有所长,互ؓ补充?/SPAN>



YangRj 2005-10-16 15:34 发表评论
]]>
վ֩ģ壺 ƬѸƬ| ˳վ߹ۿ| ޹Ʒþþþ| 99Ļ| һ| þþþޱٸ| ҹƬ߹ۿ| ޳aavҰĦ| ˸һ91| av˾Ʒ߲ | 99þ޾ƷëƬ| þþþþëƬѲ| Ƭѿ| պһһ| ƷƷþһʽ| ҹӰ| ޹Ʒ| 㽶Ƶѿ| AVþƷ鵺̳| ƷƵ| ޹ۺһ| 91㽶߹ۿ| ޸Ӱһ?| Ƭѹۿ| ޳AVƬ߳ˮ| ԺԺҳ| ߿Ƭ˳Ƶ| һƷƵ| ձվ| ߹ۿ| a߹ۿ| ĻƵѹۿ| ޹Ʒ| þ99ྫƷѹۿ| avһ㽶| ĻƷ| ȫ߹ۿѹۿȫ | ƵѲ | պƵһ| aëƬѿ| ؼaaaaaaëƬ|