- 浏览: 58194 次
- 性别:
- 来自: 广州
最新评论
-
mayucai:
博主,有一点我不太理解:上面第一段代码,把test2的sync ...
java synchronized关键字的用法 -
nnxiaod:
java synchronized关键字的用法 -
zhh9106:
tan4836128 写道要想把一个不怎么简单的的东西,简单的 ...
java synchronized关键字的用法 -
tan4836128:
要想把一个不怎么简单的的东西,简单的描述出来,确实不是每个人都 ...
java synchronized关键字的用法 -
静夜独窗:
(1)执行的顺序(2)类加载和类编译的区别我都明白了,谢谢,其 ...
java基础--java关键字static,final
文章列表
ArrayList基本上是我们在java编程中用得最多的集合类了,是一个动态的数组,在我们用ArrayList的时候发现其非常方面,功能也很强大,但是其这强大的功能是底层是怎么实现的呢?因为现在jdk已经从1.6到1.7,再到现在的1.8版本了,ArrayList在jdk版本升高的同时,会有什么异同呢?带着这些疑问,去探讨ArrayList的源码。
首先,ArrayList的继承和实现了的类和接口
public class ArrayList<E> extends AbstractList<E>
implements List< ...
注:在此声明此博客转自:http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html
关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了Thinking in Java, Effective Java,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助。(持续更新中,2012.02 ...
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。
因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。
java的内置锁:每个java对象都可以用做一个 ...
已经有半年多没更新博客了,今天突然重新归来,是因为一件事改变了自己的想法。之前我认为,写博客也只是为了对自己学习知识的一个总结罢了,那么既然学习的过程中我写了学习笔记,那又为什么多此一举去写博客呢,而且写博客的人都知道,写博客是挺消耗时间的。但是有一件小事却改变了我的想法,有一位朋友想看看我的博客,我当时就懵了,因为我的博客少得可怜,平时我都是写到笔记上面的。这时我才恍然大悟,笔记虽然是作了一个总结,但是如果有人想看看你的博客,或者想了解你的学习情况的时候,都是看你写的博客,自己的笔记只有自己能看到,如果不是认识的人,谁会看得到你的笔记呢!再者,如果是相识的人,操作也相当繁重,需要导出笔记, ...
上文讲到对索引的管理,增删查改。今晚就讲讲,为索引域添加"权"了,有时在搜索的时候,会根据需要的不同,对不同的关键值或者不同的关键索引分配不同的权值,让权值高的内容更容易被用户搜索出来,而且排在前面。
为索引域添加权是再创建索引之前,把索引域的权值设置好,这样,在进行搜索时,lucene会对文档进行评分,这个评分机制是跟权值有关的,而且其它情况相同时,权值跟评分是成正相关的。
private String[] ids={"1","2","3","4","5"," ...
之前说到,lucene简单的建立索引,并根据索引进行简单的搜索功能。下面来探讨一下对lucene索引的管理,也就是对索引的增删查改,其它不多说,直接贴代码:
(ps:因为在学习lucene的时候,全部笔记都作为注释写到代码了,所以贴出代码后也不多说了,望谅解)
package lucene;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.documen ...
上一篇文章我们讲到了索引的建立,下一步就行搜索了,实现简单的搜索功能,不多说,直接贴代码,因为代码里面有注释,所以其它的也不多说了,本来也不是复杂的东西。
package lucene;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader ...
很早就对lucene这个基于java的apache开源全文搜索框架有过初步的学习了,但是由于学习等各种原因,迟迟都没有发表一些博文,今天就贴出一些博主的一些学习笔记,希望对lucene有兴趣的博友指点指点。
对于学习lucene这个全 ...
之前有讨论过security空间基于内存修改密码的,因为绝大部分应用的用户及其用户信息都是存到数据库当中的,所以,修改密码肯定也是基于数据库操作的。
其实基于内存的修改密码和基于数据库的修改密码原理基本上是一 ...
在现在的应用当中,我们都会把用户信息都存到数据库当中,所以我们要把security基于内存的操作改为基于数据库的操作。
其实不管基于内存的操作还是基于数据库的操作,security的目的都是只有一个,拿到当前的User以及相关的UserDetails信息,在基于内存的时候,用户名以及相关的UserDetails都会存到内存中,同理,如果迁移到数据库中,那么,我们可以从数据库中查出当前User以及相关的用户信息,然后封装成一个实现了UserDetails接口的User实现类。理解到这里,目标已经非常明确了:返回一个实现了UserDetails的User类给框架。
在security框架中,无 ...
为了进一步加强用户体验,提供密码修改功能是必须的。因为密码修改功能更多的是应用在用户名和密码都存到数据库的,所以这里基于内存修改密码不会关注存储机制,更多的会关注security框架本身对这种方式的拓展的整体流程和设计。
security框架中提供了一个UserDetailService的实现类InMemoryDaoImpl的类来管理内存用户,它的内存凭证存储使用了一个Map来存储内存中的用户和所关联的UserDetails。而这个UserDetails的实现类,security已经封装好了——o.s.s.core.userDetails.User。
既然我们知道了是InMemoryDa ...
在了解了springSecurity的大体认证过程之后,就要从基本开始一步一步的深入学习其内部实现。
1、自定义登录界面
首先,一个软件应用要有一个验证入口(登录界面),而springsecurity提供了一个默认的登录界面,但是由于用户体验和结合自身网站的特性,一般都是自定义一个登录界面。而security框架的开发者也想到了这个问题,所以security提供了其他开发者设置自定义登录界面的方法。
配置自定义登录页面步骤:1、在配置文件中添加一句配置:<form-login login-page="/login.jsp">,这里login- ...
个人学习spring security的心得:要入门这个框架首先要大体了解它的认证过程,而这个认证过程就是使用spring security的各种Filter(过滤器)来完成。
大多数的spring security的学习文档都会有这样一张认证流程图:
当客户端一个请求来到的时候,它会被AbstractAuthenticationProcessingFilter拦截(这个Filter是在基于 web 的认证请求中使用的。 处理包含 认证信息的请求,如 认证信息可能是 form POST提交的、 SSO 信息或者其他用户提供的),然后它检验到你是一个认证请求,所以它会分发 ...