自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

纸做原创

我不是一个伟大的程序员,但是我可以做一个有优良习惯的程序员

  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 Azure:内容分发网络(CDN)特性一览

Azure的内容分发网络给开发者提供了一个全球范围的托管于Azure的高带宽内容网络。它使用起来非常简单,http://msdn.microsoft.com/en-us/library/windowsazure/ee795176.aspx详细阐述了其怎么使用。下面主要描述Azure CDN的一些关键特性:1. CDN节点地理位置CDN提供了比Azure其他服务多的多的服务地点,涉及

2012-10-12 22:26:09 4273 2

原创 Rest服务的健壮性考虑

之前写了个六步实现Rest风格的API,详述了怎么开发Rest风格的服务。Rest是基于HTTP的,有必要知道,HTTP是一个简单的基于“请求/响应”的协议,它初始时候只是设计用来获取静态的或动态生产的内容。HTTP不支持事务,简单的来说,在接受处理完请求像想客户端发送完响应后,HTTP服务器即认为它的工作已经完成了。这个时候网络或者客户端发生了错误,服务器端是完全不知道的。如果客户端决定重试请求

2012-10-02 13:26:43 2081

原创 Apache Httpd的mod_proxy模块修改了HTTP的响应吗

前几天,一个开发组开发的一个模块,放到我们的产品环境上去后,发现其中的一个功能没有正常工作。用Fiddler查看HTTP记录,发现那个功能的发出的HTTP请求返回了500错误。查看文档,500代表Internal Server Error,服务器出错了。问题抛回给负责开发的组,他们查看了服务器log,没有发现相关的错误。而这个功能在他们自己开发的环境上都是可以的。难道和我们产品环境的部署有

2012-09-09 13:26:19 2734

原创 如何在开发纯富客户端(RIA)应用的时候利用标签库(tab library)

原来做项目的时候,会使用Ajax来做一些页面动态功能,最典型的如auto complete。 还有一些小范围的数据保存之类的,基本上从来没有做过全页面的表单都用Ajax来保存的开发。要实现把页面上的所有数据都用Ajax保存不麻烦,麻烦在保存后怎么办。通常保存完数据后,我们都会刷新整个页面,到一个完全不同的页面去:比如,保存完一个订单后跳回订单查询页面。通常用javascript的时候,我们只用它来

2012-09-08 21:16:26 1142

原创 Azure: Java 连接SQL Azure数据库及Connection timeout问题解决方法

SQL Azure是Azure提供的关系数据库服务,它天生支持高可用性,扩展性。使用SQL Azure,开发人员不需要自己安装,升级,维护服务器,只需要简单的在Azure portal上创建一个SQL Azure服务器实例即可。SQL Azure是基于SQL Server的,其实,它就是SQL Server的一个受限制版本。SQL Azure支持几乎我们会用到的所有SQL Server的数据类型,

2012-08-25 11:20:31 3056

原创 六步实现Rest风格的API

Rest的作者认为计算机发展到现在,最大的成就不是企业应用,而是web,是漫漫无边的互联网web世界。Web能有这么大的成就,它值得我们研究。所以Rest的作者仔细研究了Web,按照Web的世界一些关键特性,提出了我们在实现企业应用的时候应该遵循的一种风格,就是Restful。Rest风格的API可以给我们很多好处,比如:简洁,统一,性能,可扩展性等等。可惜的是,在实现Rest的时候,总有一些

2012-08-19 11:17:18 38475 4

原创 Azure:用InstanceInputEndpoint直接和指定instance通信

默认情况下,Azure里面的虚拟机实例(instance)是自我封闭的,它可以请求虚拟机外部的网络资源,但是外部没法访问到它,除非给它定义Endpoint。定义Endpoint就是定义instance或者说role要打开哪些端口给外部访问。Azure之前有提供两种endpoint,InternalEndpoint和InputEndpoint。InternalEndpoint定义的端口只能被

2012-08-10 20:03:41 2782

原创 Azure:用LoadBalancerProbe自定义负载均衡器

在Azure SDK 1.7之前,Azure对同一个Host Service里同一个role的多个instance,默认情况下,请求是会平均分配给所有instance的,Azure并没有提供任何控制方法。这有些问题,比如,一些服务有可能需要一些初始化动作,Azure有可能在这些服务初始化结束前就会将请求转发过去,因为Azure只关心instance是不是存活的,而不关心服务是否正常,这种问题对于j

2012-08-04 20:06:22 2432

原创 Azure:自定义环境变量和预定义环境变量

在Azure的definition文件里,我们可以定义一些环境变量,这里是个例子:                                                executionContext="limited">

2012-08-03 12:49:26 1419

原创 用javascript监听页面上的所有ajax请求

最近碰到一个很纠结的技术问题。我们自己是个Grails,集成了另外一个web程序,我们把那个web程序放在我们提供的iframe里。那个web程序只有在第一次初始化的时候是一个普通的HTTP请求,之后在页面上的操作,都是通过ajax来操作的。现在我们有个需求,我们需要知道iframe里面做了什么操作。没法改别人的代码,那我们只能监测里面的事件了,所以总归来说,要找到一种方法来检测到ifra

2012-04-21 17:33:00 23601 6

原创 Grails HTTP response codes mapping(默认错误页面)bug的解决方法

Grails提供了一种方便地将HTTP response code和一些默认页面映射起来的方法。就是在URLMappings.groovy文件中加入如下的配置,映射到view:static mappings = { "500"(view:"/errors/serverError") "404"(view:"/errors/notFound")}或者,映射到acti

2012-01-27 16:11:26 3055

原创 JavaScript(Ajax)和Cookie的同源策略

一个URL由四部分组成,拿http://blog.csdn.net/yanical来说(http的默认端口是80,https的默认端口是443。如果是默认端口,可以省略,所以这个URL等价于http://blog.csdn.net:80/yanical)协议:http主机:blog.csdn.net端口:80路径:/yanical所谓的同源就是要求这个URL的协议,主机,端口三

2012-01-20 20:39:48 4907

原创 Grails完美解决一对多(One to many)Model动态表单的自动组装

这里的试验是在Grails下做的,但是在Spring MVC中应该也能适用,即便不行,通过简单的扩展也能达到效果。对于其他框架像Struct之类应该也都没问题(不了解,不确定)。能实现的自动封装包含:1.一层简单模型class AddressCommand { String city String street int hourseNumber}2.One to

2012-01-14 23:01:41 5198

原创 Groovy常用语法总结

过去半年都在写Groovy,基本都是在实战中学习,从java转过来,也还没什么问题,毕竟基础,架构都没变。Groovy的强大特性中,Closure,MetaClass都尝试过,Closure基本上就是当方法或者回调接口使用,再高级的用法就没用过了,没有特别体会什么好处,当回调接口就是省的定义接口,简洁了一些;MetaClass就有专门为一个模块做了些MetaClass,和GORM差不多的,给一

2011-12-29 21:00:19 24909

原创 Java里的XML概念整理

1. XML语法解析方式 XML解析方法是理论知识,不止在java里是这样,换到其他语言下也是一样的。目前有三种:     A.  DOM(Document Object Model): DOM方法一次把XML的所有内容读入内存,按照xml的内容里面的node,attribute等生成一个树状结构。这就是一个对象模型了,完了我们就可以对这个树状结构进行操作。DOM的特点是编程简单,明了

2011-03-03 21:32:00 1419

翻译 写伟大的测试:最好与最坏的实践

原文地址:http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/ 这篇博客只针对那些至少有少量单元测试经验的开发员,如果你没有写过单元测试,请先读读这个介绍尝试一下。 好的单元测试和坏的单元测试有什么区别?你怎么学习怎么写一个好的单元测试? 这明显是很

2011-02-25 19:51:00 887

原创 Oracle BAM 使用体会

前几天看了一下BIRT。 想起在前一家公司使用Oracle BAM, 当时就我一个人搞BAM,从零开始,把东西学的差不多后发现Oracle BAM要做起应用来极其崩溃,几乎要把我折磨死。Bug一堆不说,功能设计也相当鸡肋。虽然可以理解,做到Oracle BAM那么不编程就实现实时确实很难,但是感觉Oracle的设计方向有问题。把东西封装的太死,花大量时间做功能的封装,几乎没有任何扩展,这样的好处是如果只用到了它提供的功能,万事大吉,做的还快,但是一旦它的功能没法满足需求,那么就完蛋了。1.Report的产生

2010-12-27 22:17:00 2024 2

原创 OSGi笔记-几个原理问题

1.什么样的jar才能做为bundle不是任何jar都可以作为一个bundle存在的,jar必须符合一定的规范才能作为bundle安装到OSGi里去。规范就是在jar的MANIFEST.MF文件里必须加入一些OSGi元数据,比如Export-Package, Import-Package, Required-Bundle等等。一般的jar里是没有这些信息的,所以通常都不能作为bundl

2010-12-20 19:58:00 1957 1

原创 IBM JDK下访问SSL/HTTPS时候ClassNotFoundException解决方法

<br />项目代码会使用HTTPS,之前一直在Sun JDK+Tomcat上开发。换到QA环境后使用的是Websphere,默认是IBM JDK。<br />1. QA报问题,预料中,因为没导过HTTPS的证书,导完重启,问题解决。<br />2. 再重启QA,又出问题,看log,java.net.SocketException: Cannot find the specified class java.security.PrivilegedActionException: java.lang.Class

2010-11-06 13:43:00 12502 5

原创 关于敏捷开发的3个误区

发表几个我对我们项目里敏捷开发的不赞同点:1.专注于形式,不注重精髓我问我的一个同事他怎么理解敏捷开发,他给我的回答是,pair coding。让我崩溃,这就是不理解精髓,只重视表象。敏捷的精髓是沟通与反馈。各种practice的作用只是用来帮助我们更好的沟通,帮助信息流通。如果分不清这些,就算在做pair coding,你也不知道它的目的是干什么。专注形式可能会让团队变得笨重,完全不敏捷了。Agile就我的理解就是轻装上阵,已经减轻了很多文档之类的负担,目的就是写出更好的代码。但是如果过于专注形式,就会在

2010-10-08 15:02:00 1353

原创 开心:解决一个osgi里hibernate事务transaction的问题

<br />首先项目里有好多个bundle,简单的来说,我们分成两类,一类是业务方面的bundle,不同业务的放在不同bundle里;另一类是框架类的,比如hibernate,hibernate存在一个独立的bundle里,启动的时候会把所有Persistent Object读进去,然后发布出一个session factory服务,业务方面的bundle就用这个session factroy做db操作。事务管理使用的AOP在另外一个bundle里,这也算是一个框架bundle。所以来说,任何调用会先在这个A

2010-10-04 22:37:00 2460 1

原创 软件代码的开发视图与部署视图(随笔)

<br />随便写点东西吧,最近的一个项目让我有点心烦,疙瘩很大。文章都是些个人想法,可能没太大意义。<br /> <br />开发视图:开发view,就说developer在做开发的时候看到的代码样子,简单说就是在IDE,如Eclipse里的目录结构,项目之间的依赖关系等等<br />部署视图:部署view,指的是产品在部署完后在服务器中的样子,比如是打包成war包还是ear包,包里包含的是jar文件还是编译后的class文件,也包括包里的各种各样目录结构。<br /> <br />这两个东西肯定是不一样

2010-09-09 00:03:00 9182

原创 Hibernate 里 SQL 和 HQL,Criteria Query 对Session Cache缓存使用的不同

现在在做JBPM,JBPM里面有个接口是History Process Instance Query。 后来有需求查找的时候要和实际业务中的数据关联,考虑到性能,希望把业务表和JBPM的表关联起来,所以我扩展了一下这个接口,用的也是JBPM的Command模板,调用CommandService执行,不同就只是我写的是SQL,JBPM用的是HQL。今天出现了个异常,我们创建了一个Process,在没结束前,立即用我写的那个接口去查,发现查不到刚创建的那条数据,很奇怪。理论上来说,虽然数据没有被commit到d

2010-09-03 17:29:00 5001

原创 Oracle BPEL vs jBPM

    Oracle BPEL和jBPM都是用来开发Workflow工作流的工具,一个是强势公司的收费产品,一个是免费的开源软件,还是很有代表性的。之前用Oracle BPEL用了近半年,虽然是其他人用,哈哈,但是大致的经验还是有的。现在又用jBPM开发,一个月了。拿他们来对比一下吧。    以下关于Oracle BPEL的描述都是基于Oracle SOA suite的,我不知道在其他包,比如Oracle BPM里是什么样的。1.工作流描述语言    Oracle BPEL,听名字就知道是用BPEL了,到底

2010-08-05 21:53:00 3210

原创 HTTP Push

<br />之前做BAM,一直认为客户端会不停的访问服务器端来取得最新数据,就是Pull。用httpwatch观察一段时间,发现在普通情况下都没有网络请求,就是说IE没有不停的像服务器请求数据,那数据怎么发到浏览器的呢?<br />HTTP是无状态的协议,客户端请求一个URL,服务器端响应,发回响应内容,断开连接。正常来说是这样运行的,但是如果服务器端不断开连接呢? 好了,如果没断开连接,那么理论上来说,服务器就可以不停的把最新数据发到浏览器。这就是基于HTTP的Push机制了。奇怪但很有意思的用法。<br

2010-06-19 22:59:00 4480

原创 Java时区bug,TimeZone.setDefault()只在当前线程和之后创建的子线程有效

项目是基于GMT时间的,在系统启动的时候,我们就会调用TimeZone.setDefault(timeZone)将默认时区设为GMT。   后来突然发现,有时用户选择的时间经过后台一圈后回产生8个小时误差。又是间歇性的,要他重现的时候又偏不来。苦心debug,终于发现在部分线程中,时区还是GMT+8,后台某个调用可能把时区变为了GMT,8小时误差就产生了。网上一搜,原来是bug:http:

2010-03-16 20:22:00 6976

原创 Oracle BAM原理简介

 Oracle BAM全称为Oracle Busines Activity Monitoring,中文叫Oracle 业务活动监视,BAM有两种功能    1.创建实时report    2.创建基于一定规则的alert BAM最大的特点就是,它的功能都是实时的,任意的数据变化,他都能实时的反应到正在显示的report上去,也能立刻触发alert的发生。怎么实现这项功能呢?1.

2009-11-07 18:56:00 3497

原创 Oracle SQL NULL 值对 IN/NOT IN语句的影响

  今天,有一个sql NOT IN语句,匹配条件里有一个null,结果什么都查不出来,同事觉得很难理解。其实只要明白一点就可以了,IN语句匹配的时候是用=,NOT IN匹配的时会用首先我们要知道,null在oracle是个特殊的东西,没有任何可比性,如果使用 =/已知表table:type  value SC    1 PO    4 BO    9 select

2009-10-14 22:17:00 2839 1

原创 Spring 里JMS和DB的事务集成

首先介绍一篇文章:http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html?page=1不过有点长,我现在都差不都忘了里面讲的内容了。注意评论,里面提到文章讲的内容有些是错误的。Spring里,如果同时存在JMS操作和DB操作,大概也就三种方式:1.没有使用JTA。JMS不在事务中,DB操作

2009-09-12 09:19:00 6409 2

原创 Excel打开CSV文件,数字起始0丢失问题

本文讲的只是excel下打开csv,不保证其他阅读器打开能正常工作。CSV用逗号隔开数据,用换行符产生一行一行的数据, 逗号就是第一个特殊字符,如果数据内容中出现了逗号,就要用半角双引把数据内容包起来,所以比如数据是 xilang,yan, 就要改成 "xilang,yan"。第二个特殊字符就是引号:",数据中如果有引号,就要换成两个引号,比如xilang"yan要转义为xilang""yan

2009-09-06 11:22:00 16148 3

翻译 Windows下基于Eclipse的Hadoop开发环境完全配置(三)

启动Eclipse,右键点击  Project Explorer 窗口,选择 New -> Project.. 找到 Map/Reduce Project, 点Next,输入名字。点击下面的Config Hadoop Install Directiory,输入Hadoop的目录,如:C:/cygwin/home/User/hadoop-0.19.2右键点击新

2009-08-23 13:48:00 7029 3

翻译 Windows下基于Eclipse的Hadoop开发环境完全配置(二)

 接下来开始配置Hadoop了,一,解压文件打开一个cygwin,输入以下命令      cd .      explorer .会弹出一个新窗口,把原来下载的hadoop压缩文件放到里面,并解压。个人认为,其实不一定要放到cygwin的用户根目录下,没试过。二,配置Hadoop打开解压出来的文件夹,在 hadoop-0.19.2/conf 目录下有一个 had

2009-08-23 13:42:00 19076 13

翻译 Windows下基于Eclipse的Hadoop开发环境完全配置(一)

网上搜了一些中文的,总是只有一小部分,对于我们这些菜鸟来说,根本没发用,更可恶的是,搜到的内容都是一样的,哎,抄来抄去,估计都没试过到底能不能用就贴上去了。后来找了一个英文的:http://ebiquity.umbc.edu/Tutorials/Hadoop/00%20-%20Intro.html 非常的全面,一步一步的教,我这翻译一下大致的步骤。一,准备Java 1.6E

2009-08-23 12:28:00 16713 3

原创 Spring里多线程共享事务的问题

最近做Performance Tuning, 有一个功能,在用户点击后要做两次数据库存储,而且还要发送好几条JMS message,造成反应极慢。所以我考虑用FutureTask来并发做几件事情,我在service层里新建FutureTask。写完后,测试发现除了还在原来主线程中的数据库操作外,其他数据库,message操作通通变成不受事务控制的了。研究Spring源代码,发现原来Spring

2009-08-07 22:22:00 9771 1

原创 selenium 测试SSL证书非法的HTTPS站点

无聊,今天写我的第一篇文章,嘿嘿。关于Selenium,可能有不少的同志都在用了吧,很不错的工具,而且还免费,作为一个低层程序员的我,用的当然是RC版,详细信息看:http://seleniumhq.org/projects/remote-control/最近碰到了一个问题,就是在进行HTTPS站点的时候,按照官方文档,在1.0之前的版本如果要测试HTTPS,必须把启动浏览器的模式设为*c

2009-06-30 21:59:00 7235 5

企业应用架构模式(中文版)

经典的书,关于企业系统架构的东西,spring in action书里有提到过

2009-07-03

空空如也

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

TA关注的人

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