ajax中获取和发送二进制数据的方法 用ajax从服务器端获取二进制时, 需要用overrideMimtType设置request头,让浏览器不要修改读取的的数据,方法如下:var xhr = new XMLHttpRequest();xhr.onreadystatechange = function(){if (xhr.readyState=== 4 && xhr.status === 200){va
在spring中配置多数据库读取 在应对大量用户读取的系统中,对数据库的操作通常采用读写分离方式,往一个数据库写入,然后通过复制将数据同步到另外的多个数据库中,读操作都从这些数据库中操作,在采用spring来配置多数据库时,并不能直接支持从多个DataSource中获得数据库连接,为此需要开发一个DataSource的代理,代理实现javax.sql.DataSource接口。该代理根据一定的策略从已有的多个DataSource中
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"
提升系统在运行时的可见性 系统开发好上线后,其运行状况能否方便获得对系统的维护和问题诊断具有重要意义。在设计系统时如果没有把系统运行轨迹记录下来,当出现问题需要查找时就比较尴尬了,尤其是大型系统。记录系统运行轨迹需要满足几方面的要求:首先应尽可能减少对系统本身性能的影响,因为记录附加信息总是要消耗资源的,这种情况下对运行轨迹的记录可采用异步方式,为了保证轨迹的顺序性,需要将轨迹信息放入一个消息队列,该队列实现先
记法的功效 这里的记法是指用字符串表达式来描述要实现功能,比较典型的例子就是C语言中的格式化输出字符串,如%s表示输出字符串,%d表示输出整数,%6.2f表示输出小数位为2,最多6位的浮点数。在java1.5之前,要格式化输出数据,需要创建相应对象,然后调用方法才能实现,代码要比C语言中的记法复杂得多。将记法用于简化操作非常成功的例子是jQuery, jQuery将选择HTML元素从DOM的繁复操作中解放
java处理字符串搜索嵌套结构的方法 在用java分析HTML文本时,如果要取出有嵌套结构的节点之间的内容,不能直接用正则表达式来处理,因为java所带的正则表达式不支持嵌套结构的描述,虽然Perl、.Net、PHP可以支持。这时可以先用正则表达式找出节点在字符串中的位置,然后对节点进行匹配处理,取出匹配节点之间的内容,实现对嵌套结构的处理。例如要从data=abcd1234中取出之间的内容,希望返回两个字符串abcd
ANTLR应用场景 ANTLR是用java实现的一个语言识别器,它通过定义一个要识别目标语言的结构文件,然后用它的工具将该文件生成为可解析目标语言的java代码,利用生成的代码就可对目标语言进行解析。这种方式避免了自己编写java代码去解析文本,可利用ANTLR解析JSON,HTML,XML,EDIFACT,或自定义的报文格式。解析出来的信息需要做什么处理也可以在结构文件中定义。下面给出一些定义目标语言元素的描述方式
在grails的服务中使用@Transactional来控制事务 grails的服务使用boolean transactional = true来为服务中每个方法添加事务,事务缺省的传播模式是Propagation.REQUIRED,readOnly=false,不能修改,如果服务中的有些方法需要只读事务,则这种方式不能满足要求。 由于grails的服务是一个bean,可以使用spring的注解事务@Transactional来配置服务方法的事务,可以对事务属性
grails导入Eclipse不能运行的问题 grails创建的项目导入到Eclipse后,在Eclipse的Run中启动,有时不能运行,并报如下错误:java.lang.NoClassDefFoundError: andException in thread "main" 这是需要修改运行参数,在Run对话框中Arguments中,把VM arguments 下的-Dbase.dir=${project_loc}中${project...
用Xfire将grails的服务展现为WebService 用Xfire框架可以用很简易的方法将POJO展现为WebService ,而且Xfire还提供和spring的集成,可以很方便的将spring的bean展现为WebService。Grails的service在运行时会被srping托管,成为一个bean,因此可以用Xfire将其展现为WebService。将grails的service展现为WebService的步骤如下: 1. ...
ThreadLocal使用场景 在Java的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用synchronized来保证同一时刻只有一个线程对共享变量进行操作。 但在有些情况下,synchronized不能保证多线程对共享变量的正确读写。例如类有一个类变量,该类变量会被多个类方法读写,当多线程操作该类的实例对象时,如果线程对类变量有读取、写入操作就会发生类变量读写错误,即便是在类方法前加上synchronized也
ThreadLocal的使用场景 在Java的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用synchronized来保证同一时刻只有一个线程对共享变量进行操作。 但在有些情况下,synchronized不能保证多线程对共享变量的正确读写。例如类有一个类变量,该类变量会被多个类方法读写,当多线程操作该类的实例对象时,如果线程对类变量有读取、写入操作就会发生类变量读写错误,即便是在类方法前加上synchronized也...