摘要: 为什么要用切面 现在面向切面编程(AOP)早就是非常normal的概念了,不光是java(Spring),其他很多语言框架也借鉴了AOP的思想,实现了面向切面编程的功能。AOP将一些非常繁琐的、通用的检查收敛到某些点上(Pointcut),由各个业务流程自行选择使用,而且这种使用通常来说是对业务代码 阅读全文
posted @ 2019-02-23 22:55 壹零叁柒 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: python中dict类型的key值要求是不可变类型,通常来说,我们一般采用int或者str类型来作为字典的key,但是在某些场景中,会造成一定的麻烦。如我们有一个处理http Request的规则类名为Rule,其定义如下,它由一个Request path和其支持的Request methods数... 阅读全文
posted @ 2015-03-03 11:44 壹零叁柒 阅读(1505) 评论(0) 推荐(0) 编辑
摘要: 本文只是对PEP3333中关于WSGI的例子的一个简单的记录,方便自己将来查看,若需要详细的信息,请自行查看PEP 3333的官方文档。WSGI中定义,application端是一个callable term(可以是function,class,method或者是一个实现了__call__方法的... 阅读全文
posted @ 2015-02-25 17:30 壹零叁柒 阅读(715) 评论(0) 推荐(0) 编辑
摘要: 内存映射文件是java NIO模块里非常有用的一个功能,它通过FileChannel中的map方法将文件片段映射到内存中,并且可以直接将对内存的操作反应到文件中,非常适合对大文件的操作,并且效率相比传统的字节IO流效率高出不少。以下是我实现的一个简单的文件编辑器。 1 /** 2 * 文件编辑器 3 * @author rui.chen 4 * 5 */ 6 public class MyFileEditor { 7 private FileChannel channel; 8 private RandomAccessFile file; 9 10 pu... 阅读全文
posted @ 2013-05-17 10:12 壹零叁柒 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 昨天遇到一个比较有趣的问题:如何在一张表中通过SQL查询出某rank字段的第二大的值?当时没怎么想清楚,后来回来查了一下资料,现总结如下。这里选取我在项目中的一张表hy_scm_salescontractdetail,其中有一个整形字段indexnum。首先,若是仅需找出第二大的值,即是找出比最大值小的子集里的最大值。想通了这点,我们只需利用MAX函数及条件子查询即可。1 SELECT MAX(indexnum) FROM hy_scm_salescontractdetail 2 WHERE indexnum < (SELECT MAX(indexnum) FROM hy_scm_sal 阅读全文
posted @ 2013-05-15 16:48 壹零叁柒 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 今天要说的是java字节码的增强,按照惯例,先上代码以后再补说明。首先是自己定义的一个字节码增强类,采用的是ASM来操纵的。View Code 1 /** 2 * 3 * @author rui.chen 4 * 5 */ 6 public class ClassAdvice { 7 /** 8 * 前增强,在每个方法执行前打印出"Enter Method -> + 方法名" 9 * @param className 要增强的类名10 */11 public void beforeAdvice(String className){12 ... 阅读全文
posted @ 2013-05-10 17:14 壹零叁柒 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 首先定义自己的ClassLoader,可以加载磁盘上的.class文件: 1 public class MyClassLoader extends ClassLoader{ 2 private String rootDir = "."; 3 4 public MyClassLoader(String rootDir){ 5 this.rootDir = rootDir; 6 } 7 8 @Override 9 public Class<?> findClass(String name)throws ClassNotFo... 阅读全文
posted @ 2013-05-09 17:18 壹零叁柒 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 动态代理是java中非常有用的特性之一,目前Spring作为MVC框架的主流选择,主要归功于其最重要的两个特性:Ioc和AOP,他们使得项目模块可以以一种非常松散的耦合的关系组织起来,大大减轻了开发者的负担。AOP正是动态代理实现的典型案例之一,动态代理目前主要有两种方式,JDK动态代理以及CGlib动态代理,下面以代码为例一一讲解。CGlib需要用到cglib和asm的jar包。首先定义接口:1 public interface SayHello {2 3 @MyAnnotation("annotation declared in interface")4 public 阅读全文
posted @ 2013-05-08 23:42 壹零叁柒 阅读(268) 评论(0) 推荐(0) 编辑