- 浏览: 18694 次
- 性别:
- 来自: 海口
最新评论
文章列表
情况大概是这样:项目中使用Oracle的Sequence来生成流水号,并设置cache为20,。然后通过测试环节后交付给客户上生产。然后一段时间后,客户反馈说有bug。拿到生产环境的数据库dump部署后一查,发现相关数据确实有问题:
1)如果按照流水号从小到大,数据入库时间不连续,并且流水号跳号,比如从1000、1001直接到1020,中间丢了1002~1019。
2)如果按照数据入库时间从小到大,流水号跳号并且是穿插,比如从1000、1001直接到1020,然后是1002,、1003、然后是1021。
通过查找资料以及结合生产环境的Oracle使用RAC推断,上面的2)才是数据 ...
Java异常体系很庞大(eclipse,选中Exception,按下ctrl+T可看到),在实际运用中,我们会根据需要定义自己的异常。每个自定义异常一般从名字上就能看出所要表达的类型,比如业务异常BusinessException,任务异常JobException等。异常类的主要属性一般是异常号码和异常信息参数;其中异常号码应全局唯一,通过该号码可找到对应的异常信息(异常号码和异常信息的映射可配置到properties、xml文件,枚举类或是存储到数据库,异常信息可带有占位符);而异常信息参数在运行时传入,按顺序替换异常信息中的占位符,生成最终提示信息。
自定义异常如下:
@ ...
之前项目中需要分开部署,使用hessian(4.0.7)交互,而项目本身就是用Spring(3.2.5),已提供相关组件,因此使用起来很容易。如果是作为服务端,暴露服务,使用的是org.springframework.remoting.caucho.HessianServiceExporter,已提供有debug属性,方便开发时调试。但提供给客户端用于代理指定接口的org.springframework.remoting.caucho.HessianProxyFactoryBean并没有提供debug属性。HessianProxyFactoryBean继承自org.springframewo ...
接上一篇,如果没有Servlet代理类,而又想在Servlet(或其他非同一Spring容器管理的对象)中获取目标bean,可以实现接口org.springframework.context.ApplicationContextAware,然后将实现类作为bean,然后可以正常使用,一般是将常用的getBean、getBeansOfType等包装成类方法,一是方便作为工具方法调用,二来可以自己捕获异常,再抛出项目中的指定异常。实际上,ApplicationContextAware的类型层次结构中,有一个实现类org.springframework.context.support.Applic ...
有时在Spring(3.2.5)项目中,如果使用到Servlet,可能希望Servlet实例作为bean受Spring容器管理,这样也能自动注入其他需要的bean,查了下,发现只针对过滤器提供了代理类org.springframework.web.filter.DelegatingFilterProxy,并没有提供针对Servlet的代理类,于是模仿着写了下面的代理类: package org.springframework.web.servlet; import java.io.IOException;import javax.servlet.Servlet;import javax.s ...
2012年毕业至今,感觉自己还是喜欢搞技术,平时没事经常上来转转,也从中获益良多,感觉自己也应该写下平时遇到的问题,既是日记也是总结!
Java的代理框架经常接触,但实际中我们看不到运行时生成的代理类,使用的代理框架是默认不会保存,如果想要查看,需要显式打开开关,可以通过以下2段代码做到。
1、Java动态代理。让下面代码在代理类执行前执行,然后刷新项目,在其根目录下可以看到形如"$Proxy0.class" 文件,再使用反编译工具解析即可。
/** * 设置保存Java动态代理生成的类文件。 * * @throws Exception */ public static void saveGeneratedJdkProxyFiles() throws Exception { Field fi ...
网上看到很多对关键字synchronized继承性的描述只有一句"关键字synchronized不能被继承",并没有描述具体场景,于是自己做了以下测试。
//父类
public class Super {
static Logger logger = Logger.getLogger(Super.class);
// 同步方法 @SuppressWarnings("static-access") public synchronized void testMothed() { try { ...