- 浏览: 20348 次
- 性别:
- 来自: 上海
最新评论
文章列表
简单看了下spring aop的代码,所以做个笔记,不对的地方还望指正
spring aop 是实现上基于 java动态代理和cglib,
类 JdkDynamicAopProxy, Cglib2AopProxy, 他们都实现了接口AopProxy
当要获得一个bean时, spring 会检查这个bean是普通bean了还是factoryBean,就返回factorybean 的 getObject方法,让客户端得到一个已经被增强的代理类。有了这个代理类,其他问题就好办了,你懂的。。。。
cglib example:
import net.sf.cglib.pr ...
数据层
使用MySQL ,同时使用Tokyo Cabinet(Key-value的存储引擎,简称TC)做一个数据冗余,TC代替MySQL做存储,例如搜索结果页的用户资料,但Tokyo Cabinet没有网络处理能力,需要使用Tokyo Tyrant以提供网络接入能力,并调用Tokyo Cabinet的API进行持久化存储
Tokyo Tyrant其实也是Tokyo Cabinet的作者开发的,主要是支持Memcached传输协议的网络接口,可以理解为Tokyo Tyrant处理网络连接,协议解析,然后调用Tokyo Cabinet的API来完成持久化存储
服务端
Web Server : Ngi ...
3要素: 封装,继承,多态
5原则:
单一职责:对于一个类,应该仅有一个引起它变化的原因
开放封闭:软件实体可以扩展,但不能修改
Liskow替换原则:子类必须能够替换他们的基类型
依赖倒置:抽象不依赖与细节,细节应该依赖与抽象
接口隔离:多个专用接口优于一个通用接口
进程: 一个执行中程序的实例,
提供给程序2个关键抽象
1, 一个独立的逻辑控制流
2, 一个私有的地址空间
一个运行应用程序代码的进程初始化时应该实在用户模式,切换到内核模式的唯一办法是通过诸如中断,故障或者陷入系统调用(trapping system call)这样异常,异常出现时,控制传递到异常处理程 ...
in 和 exists区别
in 是把外表和内表作hash join,而exists是对外表作loop,每次loop再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:
select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;
select * from A where exist ...
cglib 是一个很强大的动态字节增强库, 使用例子:
cglib 官网:http://cglib.sourceforge.net/howto.html
public class Dao {
public void update(){
System.out.println("update");
}
public void insert(){
System.out.println("insert");
}
public void delete(){
System.out.println("delete" ...