- 浏览: 199942 次
- 性别:
- 来自: 北京
最新评论
-
粟谷_sugu:
干货!!!膜拜大神,持续学习
lucene中的docValue实现源码解读(三)——NumericDocValue的读取 -
suichangkele:
我的qq:1308567317
solr VS es -
wangq332:
老哥,我是solr的新司机,除了官方doc之外,其他的资料确实 ...
solr VS es -
一缕欢笑:
solrCloud中的路由策略:DocRouter、CompositeIdRouter、ImplicitDocRouter
文章列表
这个博客介绍quartz集成spring,之前用的是spring3,既然现在spring4已经出了很久了,再学习的话当然用的是4,我这里使用的是最新的spring4.2.4.RELEASE,创建的maven项目的pom如下,其中spring中关于quartz的包都在spring-context-support这个包中。
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
</properties>
<dependencies>
&l ...
CronTrigger这个类在工作中更好用,现在详细说一下他。
通过Crontrigger,你可以指定像每个周五的中午12点或者是每个工作日的早晨的几点或者是每天早晨9到十点,每隔5分钟执行一次。这个类的功能就是如此的强悍。
这个类也需要指定一个startTime,可以选择性的指定一个endTime。
Cron Expressions:一个字符串,用来指定CronTrigger,包含秒、分、时、日、月、周、年 例如:0 0 12 ? * WED 意思是每个周三的12点触发。
可以包含范围符号和list,比如上面的WED可以替换为 MON-FRI 或者是 MON,WED,FRI ...
用户的信息多都在Realm中,所以我们先从realm开始看源码吧。
我们在上一篇中用到了AuthenticationRealm,这个就是Realm接口的实现类,我们具体看这个类的源码以及在校验时所用到的方法。
先从这个类的无参构造方法开始
public AuthenticatingRealm() {
this(null, new SimpleCredentialsMatcher());
}
其中第一个参数是CacheManager,是一个null,第二个是CredentialsMatcher。AuthenticationRealm是CachingRealm的 ...
这一节说明shiro对登录模块的限制,这一节可能用到的接口有:SecurityManager,Realm,AuthenticationToken,AuthenticationInfo,PrincipalCollection,如果你对这些接口不熟悉的话,回到第一节先看看他们的大概介绍。
登录模块的大概流程很简单,用户提交用用名+密码,然后从数据库查找该用户,如果没有找到怎么样,找到了用户但是密码不对又怎么样。先将我搭建的shiro项目的pom.xml贴出,方便你的测试。在这个项目中我集成了spring+springMVC+shiro。
<properties>
& ...
下面是摘自官方文档中的用户校验和权限检查,我觉得还是很有必要看一看。
一、用户校验
这一节对应于官方文档的地址是:http://shiro.apache.org/java-authentication-guide.html,主要介绍shiro的用户验证的部分。
在这一节中主要的名词有如下:
Subject(类比于用户),Principal(类似于用户名),Credentials(类似密码),Realm(类似于我们的数据库,存储用户的相关信息)
第一步:收集用户的principal和credentials(也就是用户名和密码),代码如下:
//Example using mo ...
安全框架其实就干了两件事,一是用户能不能登录,第二个是登录之后能做什么,就这些,shiro的作用也就这么多,所以在学习要对shiro采取一种心理上的藐视,因为他所有的工作都是为了满足这两个来实现的。
一、shiro相 ...
Trigger(触发器)有多种,最常使用的就是SimpleTriggerhe CronTrigger,前者用于完成简单的触发,后者类似于linux中的crontab的使用。
trigger的共有的属性有:
·jobKey:用于获得要执行的jobDetail
·startTime:第一次触发的时间
·endTime:触发的最后时间,最后一次触发不能超过这个时间。
下面说一下比较不常见的属性:
1、priority(优先级)
当我们有多个trigger,并且其中有多个trigger的触发时间是一样的,至少是某一次触发的时间是一样的,如果可以执行的工作线程多于tri ...
继续讨论job和jobDetail的知识。
1、能不能将同一个jobDetail或者是Trigger重复添加到同一个scheduler中,这个问题是我在学习quartz时突发奇想思考到的。所有的jobDetail和Trigger都被存储起来了,quartz中含有一个接口:JobStore,他的jav ...
写这篇博客的时候是在已经使用了quartz很长之后,我并不是按照从一开始学习的顺序写的,只是记录学了一些我自己的笔记,所以写的很乱,不过读者慢慢看就可以,到最后一定会学的会顺利的。
先到官网上的quick-start上看看 ...
介绍一下job的生命周期,每当trigger触发器出发的时候都会创建一个新的job实例,也就是在上一个博客中的HelloJob的实例每执行一次调度就会实例化一次,等实例化完成之后就会被垃圾回收。我们可以这样做一下实验,以验证这个:
public class HelloJob implements Job {
static int i = 0;
public HelloJob(){
i++;
}
public void execute(JobExecutionContext context) throws JobExecutionException {
...
在springmvc的配置中,很重要的一个就是viewResolver,中文叫做视图解析器。他的作用就是处理MVC模式下从C到V的连接。视图可以使jsp的,也可以是velocity的,也可以是freemarker的,针对于不同的视图,springmvc定义了不同的视图解析器 ...
我上学那会流行的是struts,但是等我13年毕业工作的时候springMVC开始变得更加流行了,所以我又学了学springMVC,学的不算深入,但是应付开发没问题了。之前搭建的是spring-3.x的,今天下午又搭建了一次spring-4.x,耽误了很久才彻底弄好,这里还是记一下笔记吧,方便我,也方便大家。我这里只是记录搭建的步骤,不是具体的深入讲解springMVC,所以不适合那些刚刚接触springMVC的读者,不过如果只是看搭建的过程的话,完全没问题。
提前说一下,我这里使用的版本是spring-4.1.6.RELEASE版本。
1、建立工程
先建立一个maven工程,在ecl ...
最近在研究kafka的源码,先说一下感触,虽然kafka不是用java写的,只是提供了java的客户端,但是单纯这个客户端的代码已经让我焦头烂额了,可以很肯定的说现在的我真的是太菜了,需要学习的东西太多,不过乐观点的说我的成长空间也很大,而且读源码真的是非常好的学习机会,很推荐有时间的朋友们读一个框架的源码。通过读源码我发现了很多的不足,这里仅仅记录一些关于java网络编程的,顺便将以前总结的关于网络编程的笔记汇总一下。关于kafka的源码中的补充的知识也会逐渐添加进来。
1、InetAddress类,这个出现于kafkaProducer的源码中。这个类表示的是ip地址的详细信息,通 ...
之前做的并发1、2都是做的Runnable,虽然能够实现线程之间的互斥、通信,但是不能实现两个线程之间的信息共享,必须有这样一个需求:有一个service的操作需要发送信息到另一台服务器并且等待确认这个信息被目标机器接受, ...
以前讨论了线程之间的互斥,这里讨论线程之间的通信。线程之间的通信即A线程唤醒正在阻塞的其他线程,使其继续执行。最传统的方式即wait,notify,先上例子。
这里要实现的效果是A线程输出一次“AAA",然后B线程输出一下“BBB”,由于输出AAA或者BBB不是原子性操作(即输出不是一下子就能完成的,这期间CPU可能跑到其他线程上去执行)所以显然线程之间的互斥是必须的,我们这里使用synchronized关键字来解决线程之间的互斥。
public Class TheadCommunication1{
public synchronized void out ...