自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

indexchen的专栏

勿在浮沙筑高台

  • 博客(38)
  • 资源 (5)
  • 收藏
  • 关注

原创 ajax中获取和发送二进制数据的方法

用ajax从服务器端获取二进制时, 需要用overrideMimtType设置request头,让浏览器不要修改读取的的数据,方法如下:var xhr = new XMLHttpRequest();xhr.onreadystatechange = function(){if (xhr.readyState=== 4 && xhr.status === 200){va

2012-06-04 15:54:56 11694 1

原创 在spring中配置多数据库读取

在应对大量用户读取的系统中,对数据库的操作通常采用读写分离方式,往一个数据库写入,然后通过复制将数据同步到另外的多个数据库中,读操作都从这些数据库中操作,在采用spring来配置多数据库时,并不能直接支持从多个DataSource中获得数据库连接,为此需要开发一个DataSource的代理,代理实现javax.sql.DataSource接口。该代理根据一定的策略从已有的多个DataSource中

2012-03-01 10:49:36 7693 1

原创 Tomcat中使用JNDI时需要注意的地方

在tomcat中数据库连接使用JNDI时,在spring配置文件中的名字前需要加上一个前缀:java:comp/env/,否则系统启动时会报 Name jdbc is not bound in this Context。比如在tomcat的Context.xml中配的JNDI如下<Resource name="myds" auth="Container"

2012-02-23 15:49:33 2359

原创 提升系统在运行时的可见性

系统开发好上线后,其运行状况能否方便获得对系统的维护和问题诊断具有重要意义。在设计系统时如果没有把系统运行轨迹记录下来,当出现问题需要查找时就比较尴尬了,尤其是大型系统。记录系统运行轨迹需要满足几方面的要求:首先应尽可能减少对系统本身性能的影响,因为记录附加信息总是要消耗资源的,这种情况下对运行轨迹的记录可采用异步方式,为了保证轨迹的顺序性,需要将轨迹信息放入一个消息队列,该队列实现先

2012-02-14 10:03:15 1002

原创 记法的功效

这里的记法是指用字符串表达式来描述要实现功能,比较典型的例子就是C语言中的格式化输出字符串,如%s表示输出字符串,%d表示输出整数,%6.2f表示输出小数位为2,最多6位的浮点数。在java1.5之前,要格式化输出数据,需要创建相应对象,然后调用方法才能实现,代码要比C语言中的记法复杂得多。将记法用于简化操作非常成功的例子是jQuery, jQuery将选择HTML元素从DOM的繁复操作中解放

2012-02-10 11:13:59 1032

原创 java处理字符串搜索嵌套结构的方法

在用java分析HTML文本时,如果要取出有嵌套结构的节点之间的内容,不能直接用正则表达式来处理,因为java所带的正则表达式不支持嵌套结构的描述,虽然Perl、.Net、PHP可以支持。这时可以先用正则表达式找出节点在字符串中的位置,然后对节点进行匹配处理,取出匹配节点之间的内容,实现对嵌套结构的处理。例如要从data=abcd1234中取出之间的内容,希望返回两个字符串abcd

2012-02-06 14:51:31 2613

原创 ANTLR应用场景

ANTLR是用java实现的一个语言识别器,它通过定义一个要识别目标语言的结构文件,然后用它的工具将该文件生成为可解析目标语言的java代码,利用生成的代码就可对目标语言进行解析。这种方式避免了自己编写java代码去解析文本,可利用ANTLR解析JSON,HTML,XML,EDIFACT,或自定义的报文格式。解析出来的信息需要做什么处理也可以在结构文件中定义。下面给出一些定义目标语言元素的描述方式

2012-01-12 13:15:22 3034

原创 在grails的服务中使用@Transactional来控制事务

grails的服务使用boolean transactional = true来为服务中每个方法添加事务,事务缺省的传播模式是Propagation.REQUIRED,readOnly=false,不能修改,如果服务中的有些方法需要只读事务,则这种方式不能满足要求。 由于grails的服务是一个bean,可以使用spring的注解事务@Transactional来配置服务方法的事务,可以对事务属性

2008-07-10 13:30:00 5499 2

grails导入Eclipse不能运行的问题

grails创建的项目导入到Eclipse后,在Eclipse的Run中启动,有时不能运行,并报如下错误:java.lang.NoClassDefFoundError: andException in thread "main"  这是需要修改运行参数,在Run对话框中Arguments中,把VM arguments 下的-Dbase.dir=${project_loc}中${project...

2008-06-06 15:47:35 160

用Xfire将grails的服务展现为WebService

用Xfire框架可以用很简易的方法将POJO展现为WebService ,而且Xfire还提供和spring的集成,可以很方便的将spring的bean展现为WebService。Grails的service在运行时会被srping托管,成为一个bean,因此可以用Xfire将其展现为WebService。将grails的service展现为WebService的步骤如下: 1.       ...

2008-04-17 10:15:24 138

原创 ThreadLocal使用场景

在Java的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用synchronized来保证同一时刻只有一个线程对共享变量进行操作。 但在有些情况下,synchronized不能保证多线程对共享变量的正确读写。例如类有一个类变量,该类变量会被多个类方法读写,当多线程操作该类的实例对象时,如果线程对类变量有读取、写入操作就会发生类变量读写错误,即便是在类方法前加上synchronized也

2007-07-11 14:18:00 15184 2

ThreadLocal的使用场景

在Java的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用synchronized来保证同一时刻只有一个线程对共享变量进行操作。 但在有些情况下,synchronized不能保证多线程对共享变量的正确读写。例如类有一个类变量,该类变量会被多个类方法读写,当多线程操作该类的实例对象时,如果线程对类变量有读取、写入操作就会发生类变量读写错误,即便是在类方法前加上synchronized也...

2007-07-11 14:13:43 355

原创 Cookie详解

 背景在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式、生存期、使用范围、安全性。 Cookie格式Cookie中保存的信息都是文本信息,在客户端和服务器端交互过程中,cookie信息被附加在HTTP消息头中传递,cookie的信息由键/值对组成。下面是一个HTTP头中cook

2007-04-20 11:23:00 9329

原创 在servlet中注入spring容器中的bean

在使用spring容器的web应用中,业务对象间的依赖关系都可以用context.xml文件来配置,并且由spring容器来负责依赖对象 的创建。如果要在servlet中使用spring容器管理业务对象,通常需要使用WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext())来获得WebApplic

2006-09-28 14:30:00 16570 2

原创 windows自带的一个死锁操作

在windowsXP的命令行中执行 gpedit.msc,进入组策略编辑器,在“用户配置”--〉“管理模块”--〉“系统”下双击“只运行许可的windows程序”,然后选择“启用”单选项,然后确认。 重启后会发现系统中的应用程序都不能运行,系统会显示一个对话框提示“由于这台计算机的限制不能运行,请与系统管理员联系”,包括gpedit.msc,也不能通过regedit来修改注册表恢复到原来的设置,也

2006-08-30 16:15:00 2287

翻译 面向服务(SO)和面向对象(OO)的比较

 本文译自Thomas Erl的《Service-Oriented Architecture: Concepts, Technology and Design》部分章节。 注意本节的标题是“面向服务和面向对象”,而不是“面向服务对面向对象”。这种区别是要强调这两种思想之间的关系不是竞争关系这一事实。 事实上,面向对象编程通常用于构建Web Services中应用逻辑的封装。然而

2006-08-21 14:49:00 9430

原创 spring与SOA

在面向对象方法中,系统的功能是通过一组相互协作的对象来实现,对象之间的协作通过对象间的相互关联来实现。 这种关联通常表现为对象或接口的引用,在早期的面向对象方法中,对关联对象的使用都是在代码中以编码方式得到,由对象的使用者负责对象的创建和清除,之间是调用对象的方法代码。这种方法将与业务无关的对象创建和清除和业务代码绑定在一起,使对象紧密耦合在一起,使对象难以测试和重用。spring 通过反转控制(

2006-07-05 11:13:00 5196

原创 从AOP到AOD,AOA

先解释名词,AOP是面向方面编程(Aspect-Oriented  Programming),AOD是面向方面设计(Aspect-Oriented Design),AOA是面向方面分析(Aspect-Oriented Analysis)。AOP可以认为是面向对象编程的一种补充,如果面向对象是对系统的纵向划分,AOP则可以看成是对系统的横向划分。AOP关注的是系统中全部类或大部分类中都涉及的某一

2006-06-07 10:33:00 2703

原创 论面向对象方法中的对象、职责、协作

面向对象方法的主要任务就是处理对象、职责、协作三者的各种关系,使构造出的系统能解决特定的问题。对象是完成任务的载体,系统的要完成的任务都是分配给一个或多个对象来承载,也就是对象的职责。当一个任务由多个对象来完成时,对象间必须要进行分工协作,以实现对象内的紧耦合和对象间的松耦合,保证系统的可扩展能力。使用面向对象方法时,首要任务是找出系统中和要解决的问题相关的对象,为每个对象分配职责。当一个任务

2006-06-05 16:15:00 3072 3

原创 论软件的复杂性

目前软件所采用的体系结构相对要解决的问题来说,不管要解决的问题本身是简单还是复杂,软件给出的解决方案通常都不会简单,尤其是一些企业级解决方案。软件是用来解决问题的,如果问题域本身已经很复杂,再使用一个更加复杂的工具去解决它,其成功的概率为0。关于问题域的复杂性可以参阅布鲁克斯那篇“没有银弹”的经典文章,本文关注的是软件的复杂性。从软件的发展历程看,复杂系统通常都会失败,不过失败后都通常会衍

2006-05-31 11:54:00 3347

原创 用JAXB来简化xml和对象间的交互

在很多应用中,xml得到越来越多的使用,但对xml中的数据进行处理时通常是采用DOM、XPATH、SAX等方法将其数据解析后传递给内存中的对象,这种方法存在大量的重复任务:解析xml。由于不同应用中的xml格式各不相同,因此很难写出通用解析程序来重用。 不过现在可以考虑使用JAXB(Java Architecture for Xml Binding)来将xml直接绑定到对象,也就是说不需要每次

2006-05-23 16:27:00 2727

原创 在Dynamic Proxy中取方法标注(annotations)要注意的问题

在jdk1.5中对类的方法申明了标注(annotations),当使用动态代理对该类的实例进行代理后要在invoke(Object proxy, Method method, Object[] args)中获取方法method的标注时不能直接从method获取,就象下面的代码:public class DynaProxy implements InvocationHandler { MyCla

2006-05-15 16:39:00 1587

原创 使用标注(annotations)而不是xml来作为系统配置

标注(Annotations) 是jdk1.5引入的元数据(metadata)处理机制,利用标注来作为系统配置,比现在常用的xml方式可得到如下的好处: 易编写和维护:标注是和源代码放在一起的,可以在集成开发环境中和源代码同时进行操作,有语法错误可以立即发现。 在修改源代码时可更好同步修改需要修改的标注,而不像在分离的xml文件中那样容易遗忘。 类型安全:标注被定义为一种类

2006-05-13 15:56:00 1430

原创 DROM4J:一款简洁易用的开源O/R mapping工具

不在需要创建大量的xml配置文件,不用在表所对应的类中为每个列重复定义类字段以及两倍的get,set函数,简化的对象之间的关系,不用再去处理一对多,多对一,多对多,一对一这些复杂的关系。DORM4J以极度简洁的方式实现对象和数据库之间的影射,如果用过Ruby on Rails,可以认为DORM4J是ror的ORM在java中的实现。下载地址: http://sourceforge.net/

2006-05-12 11:26:00 1316

原创 24小时CTU使用的软件系统

在美国连续剧中,CTU所使用的软件系统功能极其强大,下面列出第5季中出现过的系统,由于还没有看完,有新的系统将及时补充。 实时卫星红外图像显示,并可下载到PDA,jack在煤气站用这个方法定位恐怖分子的位置,基本一枪一个搞定。 可随时获取各种建筑物的结构图,并且可将纸面图纸扫描后与数据库中已有的结构图进行比对,识别出建筑物实际名称和地理位置。jack利用该系统在机场和医院

2006-04-12 12:39:00 3759 1

原创 SOA FAQ

 1.         什么是SOA?SOA(Service-Oriented Architecture)是面向服务的构架的简称,SOA是一种方法,它将企业中的应用组织成可重用的服务,以达到通过快速组合和重用这些服务来响应业务需求的变化。相对于组件,SOA提高了重用的层次,可提供更粗粒度的重用。 2.         SOA的目标是什么?SOA的关键点是什么?SOA的目标是通过

2006-04-11 15:30:00 2658

原创 基于重用的软件设计

"不要重新发明轮子"--这是在软件设计中经常听到的一句话。其根本含义就是提倡使用已经存在的可用的成果,不要为满足个人成就感而进行低水平的重复开发。牛顿曾经说过,他之所以看得比别人远,那是因为他站在巨人肩膀上的缘故。不管是微积分还是万有引力定律,决不是牛顿凭空从头想象出来的,之前已有了哥白尼、布鲁诺、伽利略、开普勒等先人大量知识的发现,牛顿能够在此基础上进行总结并加入自己的创造,终于让自己成为了

2006-04-05 15:24:00 1817

原创 数据不能增量复制时的解决方案

在应用中有时需要将一个系统的数据定时复制到另一个系统, 最好的情况是能增量复制, 即每次只复制新增或变更过的数据, 以减小网络流量和提高复制效率, 尤其在数据量达到百万级或千万级时。但很多系统没有时间戳字段或其他字段用来标识数据内容是新增或被修改过,因此在复制时无法只提取增量部分,而是全部数据都全部复制一遍,极度费时。而且这种系统通常还不容许在原有数据表中添加新字段来做标记。 下面给出几种辅助方法

2006-04-04 10:41:00 2323

原创 在javascript中访问web service方法及代码生成工具wsdl2js

根据web service的定义,和web service进行请求响应要用SOAP(http://www.w3c.org/TR/soap) 对请求响应的数据进行封装,客户端对请求数据用SOAP封装,然后用HTTP协议发送到web service的接收地址,web service实现解析SOAP,调用客户端请求的方法,成功后将返回值用SOAP封装返用HTTP回给发出请求的客户端,客户端解析返回的SO

2006-01-25 14:03:00 7155 8

原创 一种XML文档和关系数据库的映射方法

 XML 文档以其平台无关性、自描述性、统一标准、多语言支持等优势得到越来越多的应用,由于目前大多数平台和语言对XML都有很好的支持,因此在不同系统之间进行数据交互时XML能充分发挥其优势,但XML主要是用于临时传输数据,这些数据最终还是要保存到数据库系统,因此能用统一的方法将XML格式数据方便地保存到数据库中可极大简化程序开发。 如果对每种XML文件都去解析然后用SQL写入数据库,其工作量会

2006-01-16 17:32:00 2993

原创 Web开发新方法

自从 Tim Berners Lee 于1989年在欧核中心(CERN)发明Web技术以来,其发展经历了从静态页面到动态页面,从科学研究领域扩大到社会的各个行业。web的开发技术也随着实际的需要在不断变化。最初的web应用主要是用于信息交换的静态页面,没有什么交互性,都是页面制作者事先作好后放到服务器上然后客户去获取。显然这种方式不能满足实际的需求,于是出现了CGI提供的动态生成的页面,页面内容在

2005-12-21 17:42:00 1755

原创 java虚拟机参数详解

 下面的讨论以Windows平台的Sun MicroSystem实现的java5虚拟机为蓝本,其他操作系统或其他公司实现的虚拟机参数会有部分不同,但大部分含义都和Windows上的类似。Java5与以前版本相比,虚拟机参数大部分保持了向前兼容,同时也增加了一些新的参数,本文将对这些参数的作用作详细描述,使虚拟机能更符合运行环境的需要,获得更好的性能和稳定性。Java在运行已编译完成的类时,是通过j

2005-12-19 10:04:00 3149

原创 图形验证码的java通用类

在应用程序中为防止系统被攻击程序自动访问,通常提供一个人眼容易识别,但程序很难识别的图形,图形内是随机产生的一些字符。为防止被攻击程序自动识别,字符通常会在位置和颜色上作随机处理。为便于使用,本人用 java实现了一个生成随机字符图片的通用类,封装了生成过程的复杂性,能非常方便的使用。实现类类名为RandomGraphic,它由一个静态工厂方法createInstance(int charCoun

2005-12-16 18:37:00 4366

原创 在IE中使用Python作为开发脚本

 在IE中使用Python作为开发脚本目前IE支持的客户端脚本语言常见的有VBScript和JavaScript,这两种脚本语言在操作页面元素方面基本能满足一般应用的需要,可通过和COM集成来获得扩展功能。本文提供一种将Python作为IE客户端脚本语言的方法,利用Python的简洁和可扩展性使web应用在客户端可实现更好的交互。也可用Python内置的网络功能,更容易地实现AJAX的功能。根据在

2005-12-12 11:23:00 3272 3

原创 将py生成为exe文件

Using py2exeAssuming you have written a python script myscript.py which you want to convert into an executable windows program, able to run on systems without a python installation. If you dont alrea

2005-12-08 13:55:00 3628

原创 选择Python的理由

最近准备学习一下动态语言,可选择的有perl、Python、Ruby,通过查看相关评论和比较,决定选择Python作为学习对象:-)。Python是一种面向对象的解释型、交互式语言。它既有脚本语言的简易,又有C++,java等语言的强大功能。下面看一下Python的优势:1 - 简单。Python的语法比Perl,Java,C,C++相比要简单很多,实现同样功能只需java、C++代码量的1/3或

2005-12-07 17:25:00 2502

原创 XMLHTTP使用详解

XMLHTTP对象是Microsoft的MSXML开发包中带的一个用HTTP,XML协议访问web资源的对象. 从MSXML3.0开始出现. 它在AJAX技术中主要用来从其他网络资源获取信息,然后由javascript来更新页面中的部分内容.采用这种方法将页面可更新内容细化,不需要更新很少的内容而刷新整个页面.  XMLHTTP对象的使用方法如下:1- 创建XMLHTTP对象,不同的浏览器创建方式

2005-12-04 10:53:00 47473 3

原创 在本机浏览器中对表格数据进行排序

在Web应用中,数据从服务器端返回到客户端,以表格形式表现出来。如果要对数据集按指定的列排序显示,常规做法都是向服务器发出请求,服务器端程序重新从数据库中取出按指定列排序的数据,返回给客户端,页面重新显示排序后数据。 采用这种方式有如下缺点:1- 响应时间延迟,每次排序都要向服务器端发送请求,等待结果返回,同时增加网络负载。2- 编程复杂,可维护性差,而且客户端和服务器端代码耦合度很高,客户端和服

2005-12-04 10:15:00 2372

High Performance MySQL(第二版)

High Performance MySQL(第二版).pdf

2010-03-19

grails in action

免费下载,鄙视那些高分下载的**. 学习grails 的好资料

2009-07-06

groovy recipes

groovy recipes电子书

2008-05-08

Html - Css - Javascript - The Web Programmer's Desk Reference

Html - Css - Javascript - The Web Programmer's Desk Reference

2007-07-03

Head.Rush.Ajax

介绍ajax的书籍,为OReilly head first系列书籍

2007-05-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除