摘要: 其实这个cache怎么用已经在cas中给出了,站在巨人的肩膀上说一下: 首先ticket的作用可以在cas的流程里看出来,如下:用户第一次访问一个CAS服务的客户web应用时(访问URL:http://192.168.1.90:8081/web1),部署在客户web应用的cas AuthenticationFilter,会截获此请求,生成service参数,然后redirect到CAS服务的login接口,url为https://cas:8443/cas/login?service=http%3A%2F%2F192.168.1.90%3A8081%2Fweb1%2F,认证成功后,CAS服务.. 阅读全文
posted @ 2013-07-19 21:06 Think in Java 阅读(801) 评论(0) 推荐(1) 编辑
摘要: 一、Spring中的Advisor,Advice,Point概述1、Advisor:充当Advice和Pointcut的适配器,类似使用Aspect的@Aspect注解的类(前一章节所述)。一般有advice和pointcut属性。祖先接口为org.springframework.aop.Advisor,应用中可直接使用org.springframework.aop.support.DefaultPointcutAdvisor2、Advice:用于定义拦截行为,祖先接口为org.aopalliance.aop.Advice,该接口只是标识接口,应用中可直接实现BeforeAdvice ,Thr 阅读全文
posted @ 2013-01-04 16:31 Think in Java 阅读(344) 评论(0) 推荐(0) 编辑
摘要: Spring有7大模块构成:Core模块,AOP模块,ORM模块,DAO模块,Web模块,Context模块,mvc模块。1.Core模块主要功能实现了反向控制(Inversion of Control)与依赖注入DI(Dependency Injection),Bean配置以及加载。2.AOP模块是Spring的另一个重要特征。拦截器(Interceptor)就是AOP的一个实现。拦截器配置时,在组装各类对象时必须使用Spring的代理类-ProxyFactoryBean。借助于Spring的代理类,把拦截器安装到NameMatchMethodPointcutAdvisor中,把自定义的Se 阅读全文
posted @ 2013-01-04 12:05 Think in Java 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 一直不敢写点什么,是因为战战兢兢,生怕写的不好甚至写错了会误人子弟。随笔可以随便写一下,不用太过计较,可是技术从来都要不得半点马虎,差之毫厘,谬以千里啊!但敝帚自珍又不是我的风格,虽然文笔不好,也要勉为其难了。废话少说,进入正题。 从我开始接触Java的多线程起就总是觉得书上讲的不是那么清楚。不是说读完了不会写,而是对写出来的多线程代码懵懵懂懂,不知道每一句会有什么影响,心里感觉忐忑。后来仔细研读Java语言规范后,才慢慢搞明白一些细节。我主要想说的,也就是这些经验吧。 首先要搞清楚的是线程的共享资源,共享资源是多线程中每个线程都要访问的类变量或实例变量,共享资源可以是单个类变量或实例变量,也 阅读全文
posted @ 2012-09-24 18:13 Think in Java 阅读(200) 评论(0) 推荐(0) 编辑
摘要: java陷阱之自动装箱[Java]下面一段代码会得到什么样的结果呢?public static void main(String[] args) { Integer a=1; Integer b=2; Integer c=3; Integer d=3; Integer e=127; Integer f=127; Integer e2=128; Integer f2=128; Long g=3L; System.out.println(c==d); System.out.println(e==f); System.out.println(e2==f2); System.out.println(. 阅读全文
posted @ 2012-09-08 00:06 Think in Java 阅读(151) 评论(0) 推荐(0) 编辑
摘要: TOMCAT源码分析(启动框架) 前言: 本文是我阅读了TOMCAT源码后的一些心得。 主要是讲解TOMCAT的系统框架, 以及启动流程。若有错漏之处,敬请批评指教! 建议: 毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的。 所以得实践、实践、再实践。 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动过程。 如果有不明白的地方, 再来查阅本文, 看是否能得到帮助。 我相信这样效果以及学习速度都会好很多! 1. Tomcat的整体框架结构 Tomcat的基本框架, 分为4个层次。 Top Level Elements... 阅读全文
posted @ 2012-08-24 19:40 Think in Java 阅读(667) 评论(0) 推荐(0) 编辑
摘要: Java 内存分配:1.寄存器我们在程序中无法控制2.栈存放基本类型的变量数据,局部变量,和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3.堆存放用new产生的对象,数组。为了给垃圾回收器使用,堆主要分成三个区域,分别叫作New Generation,Old Generation或叫Tenured Generation,以及Perm space。New Generation是用来存放新建的对象的空间,在对象新建的时候被使用。如果长时间还使用的话,它们会被垃圾回收器移动到Old Generation(或叫Tenured Ge 阅读全文
posted @ 2012-08-11 00:32 Think in Java 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 代码审查可以帮助提高代码质量,避免由于代码习惯而造成的 bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是 Java 应用的话,这些建议应该被视作最佳实践。文档1. Javadoc 应该在每一个类和方法中添加。2. 如果是修复某个 bug,应该添加 bug ID。3. 走捷径的方法或者复杂的逻辑要有解释。4. 如果代码会被公开,每个文件头都要标注版权信息。5. 复杂的 HTML,JavaScript,CSS 应该包含文档。功能1. 如果类似的逻辑被使用了多次,应该把它写成一个帮助类,然后在多出调用。2. 鼓励使用 API 而不是重复编写代码解决相同的问题。3. 要强调代码的单元 阅读全文
posted @ 2012-08-10 21:39 Think in Java 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 问:什么是NULL?答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零。ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:1、主键字段(primary key),2、定义时已经加了NOT NULL限制条件的字段说明:1、等价于没有任何值、是未知数。2、NULL与0、空字符串、空格都不同。3、对空值做加、减、乘、除等运算操作,结果仍为空。4、NULL的处理使用NVL函数。5、比较时使用关键字用“is null”和“is not null”。6、空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中 阅读全文
posted @ 2012-08-08 23:18 Think in Java 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他 阅读全文
posted @ 2012-08-08 22:41 Think in Java 阅读(334) 评论(0) 推荐(0) 编辑