08 2016 档案

摘要:其实大部分页面都是这种模板,只是改动某一块或者几块,但是每个ftl文件,都得包含这些内容,万一有改动,得全部ftl做修改,比较麻烦。 假设自定义三个指令parent, layout, content ,可能会方便很多。 阅读全文
posted @ 2016-08-18 21:30 li.zhiliang 阅读(726) 评论(0) 推荐(0)
摘要:freemarker是一款模板引擎,自己定义了很多指令。 阅读全文
posted @ 2016-08-18 21:27 li.zhiliang 阅读(312) 评论(0) 推荐(0)
摘要:通常,程序中的对象在多线程下,数据都是竞争共享的。但是,有一个类例外,他生成的实例是线程私有的,ThreadLocal。ThreadLocal生成的对象,线程私有,这是怎么做到的呢? 阅读全文
posted @ 2016-08-16 21:40 li.zhiliang 阅读(207) 评论(0) 推荐(0)
摘要:在SimpleInstantiationStrategy类中,留下了包含MethodOverride对象的bd对象定义未做实现,做了抽象。CglibSubclassingInstantiationStrategy类是其中的一种实现方式,采用cglib生成之类方式,实例化对象。 阅读全文
posted @ 2016-08-11 20:44 li.zhiliang 阅读(1803) 评论(0) 推荐(0)
摘要:spring对类的实例化,定义了接口InstantiationStrategy,同时先做了个简单实现类SimpleInstantiationStrategy。采用实现部分,抽象部分的策略。为了更好的扩展性,把一部分再次抽象,后面可以采用多种实现方式。 阅读全文
posted @ 2016-08-11 20:43 li.zhiliang 阅读(2785) 评论(0) 推荐(1)
摘要:DefaultListableBeanFactory对bean的管理工厂,包括bean的生成,从class到bean的实例化。spring特为这个实例化过程,定义了接口InstantiationStrategy,直译为实例化策略。里面分别定义了几个接口方法。 阅读全文
posted @ 2016-08-11 20:42 li.zhiliang 阅读(478) 评论(0) 推荐(0)
摘要:有人说,DefaultListableBeanFactory是spring的发动机,其实重要性不为过。 阅读全文
posted @ 2016-08-10 20:04 li.zhiliang 阅读(14977) 评论(3) 推荐(2)
摘要:replaced method注入是spring动态改变bean里方法的实现。需要改变的方法,使用spring内原有其他类(需要继承接口org.springframework.beans.factory.support.MethodReplacer)的逻辑,替换这个方法。通过改变方法执行逻辑来动态改变方法。内部实现为使用cglib方法,重新生成子类,重写配置的方法和返回对象,达到动态改变的效果。 阅读全文
posted @ 2016-08-07 12:20 li.zhiliang 阅读(877) 评论(0) 推荐(0)
摘要:lookup method注入是spring动态改变bean里方法的实现。方法执行返回的对象,使用spring内原有的这类对象替换,通过改变方法返回值来动态改变方法。内部实现为使用cglib方法,重新生成子类,重写配置的方法和返回对象,达到动态改变的效果。 阅读全文
posted @ 2016-08-07 11:15 li.zhiliang 阅读(879) 评论(1) 推荐(0)
摘要:在java应用中,对于访问频率比较高,又不怎么变化的数据,常用的解决方案是把这些数据加入缓存。相比DB,缓存的读取效率快好不少。java应用缓存一般分两种,一是进程内缓存,就是使用java应用虚拟机内存的缓存;另一个是进程外缓存,现在我们常用的各种分布式缓存。相比较而言,进程内缓存比进程外缓存快很多,而且编码也简单;但是,进程内缓存的存储量有限,使用的是java应用虚拟机的内存,而且每个应用都要存储一份,有一定的资源浪费。进程外缓存相比进程内缓存,会慢些,但是,存储空间可以横向扩展,不受限制。 阅读全文
posted @ 2016-08-03 21:08 li.zhiliang 阅读(14634) 评论(0) 推荐(0)