Observe变种,校验链 近期,由于项目需要,需要重新设计一套系统的拦截机制,其场景如下:1.首先,系统需要对发起的请求做是否需要拦截过过滤,如果不需要拦截,则放过,进行第二层拦截2.对于系统的角色的所属权限进行校验,如果为角色默认权限则放过,如果非角色默认可使用权限,则交由第三层用户权限进行控制
软件设计权限-功能原子性 最近负责一个项目的重构架构实施,执行到权限这一块时,发现对原有的权限体系很难下手,包括对表间设计或者是说对权限的显示控制。权限,无非就是赋权和权限拦截。先从权限拦截开始说起吧,对于普通的web来说,对权限的拦截无非就是前端加一个fiter类似的拦截器,对用
Java动态代理及原理 代理模式应该都不陌生。Java通过反射机制,提供了代理模式的实现。其使用到的核心类如下:InvocationHandler接口 Proxy类先看示例:接口:public interface MyInterface { void method();}接口实现类:public
Java运行时调用方法、方法名、及行数 StackTraceElement:栈轨迹。其中每一个元素代表一个简单的帧。除了顶部的帧,其余的帧代表了一个方法的调用执行。最顶部的帧代表了执行帧(在该帧上,这个执行栈生成)。获取方法如下:StackTraceElement[] stacks = new Throwable().
关于 java.util.concurrent Concurrent Collections 是 Java™ 5 的巨大附加产品,但是在关于注释和泛型的争执中很多 Java 开发人员忽视了它们。此外(或者更老实地说),许多开发人员避免使用这个数据包,因为他们认为它一定很复杂,就像它所要解决的问题一样。事实上,java.util
Java synchronized关键字 JAVA的synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literal
Java 并发及同步相关 Synchronized ReentrantLock 要了解Java并发,首先需要了解JVM内存模型。JVM内存模型分为两个部分,Main Memory和Working Memory. Main Memory为线程共享,Working Memory为线程自己所有,存放的是线程所需要的变量的拷贝(线程要对main
MySQL P及以上数据量优化方案 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: s
entityManager 的 merge/refresh/flush 方法 理解eneityManager的这三个方法的作用和区别,首先需要分清楚PersistenceContext 和 EntityManager. PersistenceContext:是entity的一个实例。EntityManager:是和PersistenceContext联系在一起的,被用来创建、删除或者查找一个持久化Entity实例。 换句话来说PersistenceCon
liferay 6 开发记录 1(头部语言切换) 最近帮别人开发项目,想起了liferay这个框架,自己也很久没有开发过这种web应用了,已经有点生疏了,用liferay也是边研究边开发,也是将一些东西记录下来,免得时间长忘记了吧。 先从theme开始吧,因为拿到项目之后,首先需求就是要支持双语,而且语言切换的地方要出现在头部,需要全站都可以看得到,而不是只在小的portlet中出现。 开发是用的liferay的eclip
Hibernate二级缓存的并发访问策略 Hibernate二级缓存的并发访问策略有四种:只读(read-only)、非严格读写(nonstrict-read-write)、读写(read-write)和事务(transactional)。但是目前还没有二级缓存提供者完全支持所有的并发访问策略。只读(read-only): 对于永远不会被修改的数据可以采用这种并发访问策略,它的并发性能是最高的。但必须保证数据不会被修改,否则就会出错。非严格读写(nonstrict-read-writ
check exception和uncheck exception 使用Checked Exception还是UnChecked Exception如果你希望强制你的类调用者来处理异常,那么就用Checked Exception; 如果你不希望强制你的类调用者来处理异常,就用UnChecked。 那么究竟强制还是不强制,权衡的依据在于从业务系统的逻辑规则来考虑,如果业务规则定义了调用者应该处理,那么就必须Checked,如果业务规则没有定义,
设计异常的最佳实践 1.当要决定是采用checked exception还是Unchecked exception的时候,你要问自己一个问题,"如果这种异常一旦抛出,客户端会做怎样的补救?" 如果客户端可以通过其他的方法恢复异常,那么这种异常就是checked exception;如果客户端对出现的这种异常无能为力,那么这种异常就是Unchecked exception;从使用上讲,当异常出现的时候要做一些试
Observe design pattern 一、 观察者(Observer)模式观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
JMS Development Guide 1.JMS消息的异步与同步接收消息的异步接收: 异步接收是指当消息到达时,主动通知客户端,即当消息到达时转发到客户端。JMS客户端可以通过注册一个实现MessageListener接口的对象到MessageConsumer,这样,每当消息到达时,JMS Provider 会调用MessageListener中的onMessage 方法。所以需要创建一个消息监听器,然后注册一个或多
系统架构设计 Web Application with Business component interfaces In most cases, J2EE is used to build web applications. Thus, a J2EE web container can provide the entire infrastructure required by many appl
Design Exception System 错误处理需求什么是一个好的错误处理系统?抛开审美角度的考虑,一个好的错误处理系统通常要符合下面的条件:1、任何异常都不会导致应用系统的崩溃。2、在发生异常时,允许应用程序进行相应的处理。3、显示给用户的错误信息要清晰的描述发生了什么错误以及应该采取什么样的处理。4、如果需要辅助信息,错误信息还要帮助用户与帮助部门交互,为帮助部门团队提供必要的信息, 使他们能够快速的容易的重
Error & Exception exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况.error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出,VirtualMachineError ,ThreadDeath ,LinkageError 。不可能指望程序能处理这样的情况。 另一方面,error 是虚拟机的问题(通常是这样,但也可能是操作系统的问题)。引用Jav
xml parsing(DOM SAX) 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在
JVM classLoader 1)三个类加载器:bootstrap classloader - 引导(也称为原始)类加载器,它负责加载Java的核心类。extension classloader - 扩展类加载器,它负责加载JRE的扩展目录中JAR的类包。system classloader - 系统(也称为应用)类加载器,加载应用程序的类。bootstrap classloader不是一个真正的Clas