- java定时器和netty心跳检测简单案例
KingDol_MIni
前后端技术springbootjava后端springboot
一,定时器的实现方式在Java中,定时器可以通过多种方式实现,其中最常用的是使用`java.util.Timer`和`java.util.TimerTask`类。下面是一个简单的示例,演示如何使用这些类来创建一个定时器。首先,我们需要创建一个继承自`TimerTask`的类。这个类将定义定时器任务的行为。例如,我们可以创建一个简单的定时器任务,每隔1秒打印一次时间。```javaimportjav
- 用java定时器实现记录用户访问页面时间
haiyong6
前阵子工作中遇到同事要记录用户访问网页页面时间的问题,后来仔细思考了一下,写了一个小demo,觉得应该记录下来。思路:考虑到用户访问除了正常关闭或离开页面之外还有停电断网的情况,所以最好的办法是用前端定时心跳请求法记录用户访问状态。1.在前端公共js里设置一个定时器,每隔一段时间(这个可以根据业务自调)定时向后台访问一个url2.后台设置一个公用map,用来记录每个用户的访问状态,map里记录有每
- Java 实现订单未支付超时自动取消
Java架构师顶顶
在电商上购买商品后,如果在下单而又没有支付的情况下,一般提示30分钟完成支付,否则订单自动。比如在京东下单为完成支付:超过24小时,就会自动取消订单,下面使用Java定时器实现超时取消订单功能。Timer定时器Timer是一个调度任务的执行的工具,任务可以一次性定时执行或者定时重复执行,系统会启动一个线程来执行所有的定时任务。TimerTask定时任务TimerTask是一个抽象类,它实现了Run
- Java定时器
楠枬
JavaEE开发语言java定时器多线程
目录什么是定时器?如何使用定时器?scheduleTimer的构造方法cancel定时器的模拟实现思路分析实现过程完整代码什么是定时器?定时器:即在设定的时间时执行某事的设备(例如闹钟,在指定的时间响铃),Java中的定时器会在到达设定的时间后,执行指定的代码Java标准库中提供了一个定时器Timer类供我们使用,位于java.util中如何使用定时器?schedule对于Timer类,其核心方法
- Java定时器之JDK自带的定时器实现方式
怪力乌龟
Java菜鸡笔记定时任务javathread定时器
既然要详细说说定时器,就由浅入深,先从最简单的说起。我首先接触到的定时器就是根据线程的Thread.sleep()方法实现的,最开始学习java的时候,会用这个方法实现一些简单的动画效果,今天就来回顾一下当初的小动画!1.利用Thread.sleep();方法实现定时任务首先Thread.sleep(times)方法是干嘛的呢,它是用来阻塞当前线程运行的一个方法,按字面意思就是让当前线程睡一会,把
- java定时器2-spring实现
weixin_30750335
java
spring定时器(基于xml)spring定时器(基于注解)quartz定时器1、使用基于xml配置的spring定时器首先编写定时任务类MytaskpublicclassMytask{publicvoidexecute(){System.out.println("基于xml配置的spring定时任务!");}}接着在spring配置文件中加入xmlns:task="http://www.spr
- Java定时器 Spring定时任务 Quartz
不想当厨师的力学渣不是好程序员
java类用法java定时器
spring定时器(基于xml)spring定时器(基于注解)quartz定时器1、使用基于xml配置的spring定时器首先编写定时任务类MytaskpublicclassMytask{publicvoidexecute(){System.out.println("基于xml配置的spring定时任务!");}}接着在spring配置文件中加入xmlns:task="http://www.spr
- 【多线程案例】Java实现简单定时器(Timer)
去北极避暑~
习题总结多线程安全java多线程定时器
1.定时器(Timer)1.什么是定时器?在日常生活中,如果我们想要在t时间后去做一件重要的事情,那么为了防止忘记,我们就可以使用闹钟的计时器功能,它会在t时间后执行任务(响铃)提醒我们去执行这件事情.—这就是Java定时器的简单功能。它作为一种日常开发组件。约定一个时间,时间到达之后,执行某个任务。常被用于网络通信。也比如在客户端和服务器之间,当客户端发出去请求之后,服务器就要返回响应,客户端这
- 实现定时器
Lpy2569
javaEEjavajava-ee开发语言
前言在现代软件开发中,定时任务是一项非常重要的功能。无论是数据备份、自动化报告生成还是周期性任务,定时器都是不可或缺的工具。在Java中,我们可以使用内置的java.util.timer和java.util.TimerTimerTask类来实现定时任务。本篇博客将详细介绍如何使用Java定时器来创建各种定时任务,并提供实例演示。1.定时器基础在使用Java定时器之前,我们需要了解两个基本的概念:'
- Java 定时器
希希里之海
Java定时器1.概述Timer可以按计划执行重复的任务或者定时执行指定任务,这是因为Timer内部利用了一个后台线程TimerThread有计划地执行指定任务。Timer:是一个实用工具类,该类用来调度一个线程(scheduleathread),使它可以在将来某一时刻执行。Java的Timer类可以调度一个任务运行一次或定期循环运行。Timertasksshouldcompletequickly
- Quartz任务调度基本使用
缘来有你123
转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html上一篇:定时器的实现、java定时器Timer和Quartz介绍与Spring中定时器的配置http://blog.csdn.net/sup_heaven/article/details/37738255概述各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔
- Java定时器Timer和第三方定时器Quartz
不会叫的狼
Javajava开发语言后端
概述定时器在应用广泛,比如定时统计数据生成报表、每隔设定的时间提醒用户等。Java.util包自带的定时器Timer提供简单的定点执行功能,而Quartz是一个第三方提供的定时器框架。对比Timer优点:java.util包自带的,Timer的任务是通过创建TimerTask子类进行实现,使用方便。缺点:定时器没有持久性机制。定时器不能灵活的调度(只能设置开始时间和重复间隔,没有基于日期,一天中的
- Java定时器任务3种实现方式(可用于解决过期、超时等需求)
Bummon.
Javajava后端开发语言spring
定时任务在实际的开发中特别常见,比如电商平台30分钟后自动取消未支付的订单,以及凌晨的数据汇总和备份等,都需要借助定时任务来实现,那么我们本文就来看一下定时任务最简单的几种实现方式。TOP1:TimerTimer是JDK自带的定时任务执行类,无论任何项目都可以直接使用Timer来实现定时任务,所以Timer的优点就是使用方便,它的实现代码如下:publicclassMyTimerTask{publ
- java定时器
o壞蛋0o_dd2b
每天定时执行(方法1)publicclassDayIntervalimplementsServletContextListener{publicstaticvoidshowDayTime(){DatesendDate=newDate();TimerdTimer=newTimer();dTimer.schedule(newTimerTask(){@Overridepublicvoidrun(){Ca
- Java定时器任务的使用
Artisan_w
Java基础与八股java
Java定时任务的使用方法JDK自带Timer实现目前来看,JDK自带的TimerAPI算是最古老的定时任务实现方式了。Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以安排任务“执行一次”或者定期“执行多次”。在实际的开发当中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。核心方法//在
- Java定时器(实现每月1号、每日、每15分钟自动执行任务)
揽月随风醉
java
使用注解的形式,跑起代码一、代码一、代码1、思路:在tomcat中,添加监听器,在监听器中设置定时任务。2、监听:新建监听类implentsServletContextListener,实现其中的方法即可。讲解:创建一个基准时间defaultdate(每日8点),用于参照,在此时间以后的多长周期内执行操作。schedule(task,firstTime,period);方法参数介绍:task:Ti
- Java定时器时间配置
猿二胖
1、格式【秒】【分】【时】【日】【月】【周】【年】2、取值image.png3、通配符image.png
- Java定时器Timer的源码分析
目录一、TimerTask1.任务状态2.任务属性说明3.任务方法说明二、Timer1.sched方法2.cancel方法3.purge方法三、TaskQueue四、TimerThread通过源码分析,我们可以更深入的了解其底层原理。对于JDK自带的定时器,主要涉及TimerTask类、Timer类、TimerQueue类、TimerThread类,其中TimerQueue和TimerThread
- Java定时器的cron设置详解(摘抄)
shadow雨轩
这些星号由左到右按顺序代表:*******格式:[秒][分][小时][日][月][周][年]序号说明是否必填允许填写的值允许的通配符1秒是0-59,-*/2分是0-59,-*/3小时是0-23,-*/4日是1-31,-*?/LW5月是1-12orJAN-DEC,-*/6周是1-7orSUN-SAT,-*?/L#7年否empty或1970-2099,-*/通配符说明:*表示所有值.例如:在分的字段上
- 【JAVA定时器】四种常见定时器的原理和简单实现
Echo-YeZi
web后端quartzjavaspring
个人学习笔记分享,当前能力有限,请勿贬低,菜鸟互学,大佬绕道如有勘误,欢迎指出和讨论,本文后期也会进行修正和补充前言定时器顾名思义,即定时触发某个事件,分离开来,即包含三个因素:定时,触发,某个事件,本文也将以此为基础介绍五种常见的定时器本文只做基于SpringBoot的示例,其余版本的请自行查阅资料,大同小异1.介绍1.1.目的定时器的目的即为了在某个时间点,程序自身主动触发某个事件,而不需要外
- Java 实现订单未支付超时自动取消
小码code
java
在电商上购买商品后,如果在下单而又没有支付的情况下,一般提示30分钟完成支付,否则订单自动。比如在京东下单为完成支付:超过24小时,就会自动取消订单,下面使用Java定时器实现超时取消订单功能。Timer定时器Timer是一个调度任务的执行的工具,任务可以一次性定时执行或者定时重复执行,系统会启动一个线程来执行所有的定时任务。TimerTask定时任务TimerTask是一个抽象类,它实现了Run
- java定时器总结
谭家成
1.timer(所有任务都是同一个线程调度【串行执行】,同一时间只能有一个任务执行且前一任务延迟或异常会影响后面任务)基本不用2.scheduledExecutor(任务并发执行,互相不会影响)timer和scheduledExecutor仅能提供基于开始时间与重复间隔的任务调度,不能胜任复杂的调度(如每星期二16:38:10执行任务)要借助calendar实现(麻烦)3.quartz(关机后定时
- java定时器的几种实现方式
手写代码
Javajava定时器
转自:https://www.cnkirito.moe/timer/1前言在开始正题之前,先闲聊几句。有人说,计算机科学这个学科,软件方向研究到头就是数学,硬件方向研究到头就是物理,最轻松的是中间这批使用者,可以不太懂物理,不太懂数学,依旧可以使用计算机作为自己谋生的工具。这个规律具有普适应,看看“定时器”这个例子,往应用层研究,有Quartz,SpringSchedule等框架;往分布式研究,又
- java定时器推送消息_Springboot+websocket+定时器实现消息推送
林竹w
java定时器推送消息
由于最近有个需求,产品即将到期(不同时间段到期)时给后台用户按角色推送,功能完成之后在此做个小结1.在启动类中添加注解@EnableSchedulingpackagecom.hsfw.backyard.websocket333;/***@Description*@Author:liucq*@Date:2019/1/25*/importorg.mybatis.spring.annotation.Ma
- Java定时器通信协议管理模块Timer详解
目录Timer详解定时功能执行一次FixedDelay模式Timer详解Timer和TimerTask用于在后台线程中调度任务的java.util类。TimerTask负责任务的执行,Timer负责任务的调度。定时功能Timer提供了三种定时模式:一次性任务按照固定的延迟执行(fixeddelay)按照固定的周期执行(fixedrate)执行一次Timer提供了两种方法,应用于不同场景://在当前
- Java定时器演进过程和生产级分布式任务调度ElasticJob代码实战v2.5.2
IT小神
分布式Javajava面试数据结构springboot分布式
为何要使用分布式任务调度演示项目源码地址**https://gitee.com/yongzhebuju/spring-task****本人博客网站**IT小神www.itxiaoshen.com在企业系统开发过程中难免少不了要使用定时任务来进行定时触发执行,对于非分布式环境系统的单一应用来说则非常容易解决,我们只需要在系统中内部集成一些开源的调度库配置定时触发即可;但是随着企业的系统越来越多,逐步
- Java 实现订单未支付超时自动取消功能(京东商城为例)
目录创建TimerTaskTimer定时器调用TimerTask总结源码在电商上购买商品后,如果在下单而又没有支付的情况下,一般提示30分钟完成支付,否则订单自动。比如在京东下单为完成支付:超过24小时,就会自动取消订单,下面使用Java定时器实现超时取消订单功能。Timer定时器Timer是一个调度任务的执行的工具,任务可以一次性定时执行或者定时重复执行,系统会启动一个线程来执行所有的定时任务。
- Java定时器 Quartz 的进阶使用
是小猪童鞋啦
在上一篇讲解了JavaAPI的定时器和Quartz定时器框架的基本使用的@Java定时器的使用JavaAPI的&Quartz本篇讲解Quartz定时器框架的持久化配置以及定时任务的增删该查操作回顾一下Quartz定时器的基本使用创建Maven项目导入依赖org.quartz-schedulerquartz2.3.0org.springframeworkspring-webmvc5.0.2.RELE
- 深入了解Java定时器中的Timer的原理
目录主要成员变量定时功能TimerThread结论Demo代码位置Java在1.3版本引入了Timer工具类,它是一个古老的定时器,搭配TimerTask和TaskQueue一起使用。从Java5开始在并发包中引入了另一个定时器ScheduledThreadPoolExecutor,它对Timer做了很多改进并提供了更多的工具,可以认为是对Timer的取代。那为什么还要介绍Timer工具类呢?通过
- Java 实现订单未支付超时自动取消
java
在电商上购买商品后,如果在下单而又没有支付的情况下,一般提示30分钟完成支付,否则订单自动。比如在京东下单为完成支付:超过24小时,就会自动取消订单,下面使用Java定时器实现超时取消订单功能。Timer定时器Timer是一个调度任务的执行的工具,任务可以一次性定时执行或者定时重复执行,系统会启动一个线程来执行所有的定时任务。TimerTask定时任务TimerTask是一个抽象类,它实现了Run
- jquery实现的jsonp掉java后台
知了ing
javajsonpjquery
什么是JSONP?
先说说JSONP是怎么产生的:
其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,小可不才,试着用自己的方式来阐释一下这个问题,看看是否有帮助。
1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准;
2、
- Struts2学习笔记
caoyong
struts2
SSH : Spring + Struts2 + Hibernate
三层架构(表示层,业务逻辑层,数据访问层) MVC模式 (Model View Controller)
分层原则:单向依赖,接口耦合
1、Struts2 = Struts + Webwork
2、搭建struts2开发环境
a>、到www.apac
- SpringMVC学习之后台往前台传值方法
满城风雨近重阳
springMVC
springMVC控制器往前台传值的方法有以下几种:
1.ModelAndView
通过往ModelAndView中存放viewName:目标地址和attribute参数来实现传参:
ModelAndView mv=new ModelAndView();
mv.setViewName="success
- WebService存在的必要性?
一炮送你回车库
webservice
做Java的经常在选择Webservice框架上徘徊很久,Axis Xfire Axis2 CXF ,他们只有一个功能,发布HTTP服务然后用XML做数据传输。
是的,他们就做了两个功能,发布一个http服务让客户端或者浏览器连接,接收xml参数并发送xml结果。
当在不同的平台间传输数据时,就需要一个都能解析的数据格式。
但是为什么要使用xml呢?不能使json或者其他通用数据
- js年份下拉框
3213213333332132
java web ee
<div id="divValue">test...</div>测试
//年份
<select id="year"></select>
<script type="text/javascript">
window.onload =
- 简单链式调用的实现技术
归来朝歌
方法调用链式反应编程思想
在编程中,我们可以经常遇到这样一种场景:一个实例不断调用它自身的方法,像一条链条一样进行调用
这样的调用你可能在Ajax中,在页面中添加标签:
$("<p>").append($("<span>").text(list[i].name)).appendTo("#result");
也可能在HQ
- JAVA调用.net 发布的webservice 接口
darkranger
webservice
/**
* @Title: callInvoke
* @Description: TODO(调用接口公共方法)
* @param @param url 地址
* @param @param method 方法
* @param @param pama 参数
* @param @return
* @param @throws BusinessException
- Javascript模糊查找 | 第一章 循环不能不重视。
aijuans
Way
最近受我的朋友委托用js+HTML做一个像手册一样的程序,里面要有可展开的大纲,模糊查找等功能。我这个人说实在的懒,本来是不愿意的,但想起了父亲以前教我要给朋友搞好关系,再加上这也可以巩固自己的js技术,于是就开始开发这个程序,没想到却出了点小问题,我做的查找只能绝对查找。具体的js代码如下:
function search(){
var arr=new Array("my
- 狼和羊,该怎么抉择
atongyeye
工作
狼和羊,该怎么抉择
在做一个链家的小项目,只有我和另外一个同事两个人负责,各负责一部分接口,我的接口写完,并全部测联调试通过。所以工作就剩下一下细枝末节的,工作就轻松很多。每天会帮另一个同事测试一些功能点,协助他完成一些业务型不强的工作。
今天早上到公司没多久,领导就在QQ上给我发信息,让我多协助同事测试,让我积极主动些,有点责任心等等,我听了这话,心里面立马凉半截,首先一个领导轻易说
- 读取android系统的联系人拨号
百合不是茶
androidsqlite数据库内容提供者系统服务的使用
联系人的姓名和号码是保存在不同的表中,不要一下子把号码查询来,我开始就是把姓名和电话同时查询出来的,导致系统非常的慢
关键代码:
1, 使用javabean操作存储读取到的数据
package com.example.bean;
/**
*
* @author Admini
- ORACLE自定义异常
bijian1013
数据库自定义异常
实例:
CREATE OR REPLACE PROCEDURE test_Exception
(
ParameterA IN varchar2,
ParameterB IN varchar2,
ErrorCode OUT varchar2 --返回值,错误编码
)
AS
/*以下是一些变量的定义*/
V1 NUMBER;
V2 nvarc
- 查看端号使用情况
征客丶
windows
一、查看端口
在windows命令行窗口下执行:
>netstat -aon|findstr "8080"
显示结果:
TCP 127.0.0.1:80 0.0.0.0:0 &
- 【Spark二十】运行Spark Streaming的NetworkWordCount实例
bit1129
wordcount
Spark Streaming简介
NetworkWordCount代码
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
- Struts2 与 SpringMVC的比较
BlueSkator
struts2spring mvc
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。 2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring
- Hibernate在更新时,是可以不用session的update方法的(转帖)
BreakingBad
Hibernateupdate
地址:http://blog.csdn.net/plpblue/article/details/9304459
public void synDevNameWithItil()
{Session session = null;Transaction tr = null;try{session = HibernateUtil.getSession();tr = session.beginTran
- 读《研磨设计模式》-代码笔记-观察者模式
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
/**
* “观
- 重置MySQL密码
chenhbc
mysql重置密码忘记密码
如果你也像我这么健忘,把MySQL的密码搞忘记了,经过下面几个步骤就可以重置了(以Windows为例,Linux/Unix类似):
1、关闭MySQL服务
2、打开CMD,进入MySQL安装目录的bin目录下,以跳过权限检查的方式启动MySQL
mysqld --skip-grant-tables
3、新开一个CMD窗口,进入MySQL
mysql -uroot
 
- 再谈系统论,控制论和信息论
comsci
设计模式生物能源企业应用领域模型
再谈系统论,控制论和信息论
偶然看
- oracle moving window size与 AWR retention period关系
daizj
oracle
转自: http://tomszrp.itpub.net/post/11835/494147
晚上在做11gR1的一个awrrpt报告时,顺便想调整一下AWR snapshot的保留时间,结果遇到了ORA-13541这样的错误.下面是这个问题的发生和解决过程.
SQL> select * from v$version;
BANNER
-------------------
- Python版B树
dieslrae
python
话说以前的树都用java写的,最近发现python有点生疏了,于是用python写了个B树实现,B树在索引领域用得还是蛮多了,如果没记错mysql的默认索引好像就是B树...
首先是数据实体对象,很简单,只存放key,value
class Entity(object):
'''数据实体'''
def __init__(self,key,value)
- C语言冒泡排序
dcj3sjt126com
算法
代码示例:
# include <stdio.h>
//冒泡排序
void sort(int * a, int len)
{
int i, j, t;
for (i=0; i<len-1; i++)
{
for (j=0; j<len-1-i; j++)
{
if (a[j] > a[j+1]) // >表示升序
- 自定义导航栏样式
dcj3sjt126com
自定义
-(void)setupAppAppearance
{
[[UILabel appearance] setFont:[UIFont fontWithName:@"FZLTHK—GBK1-0" size:20]];
[UIButton appearance].titleLabel.font =[UIFont fontWithName:@"FZLTH
- 11.性能优化-优化-JVM参数总结
frank1234
jvm参数性能优化
1.堆
-Xms --初始堆大小
-Xmx --最大堆大小
-Xmn --新生代大小
-Xss --线程栈大小
-XX:PermSize --永久代初始大小
-XX:MaxPermSize --永久代最大值
-XX:SurvivorRatio --新生代和suvivor比例,默认为8
-XX:TargetSurvivorRatio --survivor可使用
- nginx日志分割 for linux
HarborChung
nginxlinux脚本
nginx日志分割 for linux 默认情况下,nginx是不分割访问日志的,久而久之,网站的日志文件将会越来越大,占用空间不说,如果有问题要查看网站的日志的话,庞大的文件也将很难打开,于是便有了下面的脚本 使用方法,先将以下脚本保存为 cutlog.sh,放在/root 目录下,然后给予此脚本执行的权限
复制代码代码如下:
chmo
- Spring4新特性——泛型限定式依赖注入
jinnianshilongnian
springspring4泛型式依赖注入
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
- centOS安装GCC和G++
liuxihope
centosgcc
Centos支持yum安装,安装软件一般格式为yum install .......,注意安装时要先成为root用户。
按照这个思路,我想安装过程如下:
安装gcc:yum install gcc
安装g++: yum install g++
实际操作过程发现,只能有gcc安装成功,而g++安装失败,提示g++ command not found。上网查了一下,正确安装应该
- 第13章 Ajax进阶(上)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- How to determine BusinessObjects service pack and fix pack
blueoxygen
BO
http://bukhantsov.org/2011/08/how-to-determine-businessobjects-service-pack-and-fix-pack/
The table below is helpful. Reference
BOE XI 3.x
12.0.0.
y BOE XI 3.0 12.0.
x.
y BO
- Oracle里的自增字段设置
tomcat_oracle
oracle
大家都知道吧,这很坑,尤其是用惯了mysql里的自增字段设置,结果oracle里面没有的。oh,no 我用的是12c版本的,它有一个新特性,可以这样设置自增序列,在创建表是,把id设置为自增序列
create table t
(
id number generated by default as identity (start with 1 increment b
- Spring Security(01)——初体验
yang_winnie
springSecurity
Spring Security(01)——初体验
博客分类: spring Security
Spring Security入门安全认证
首先我们为Spring Security专门建立一个Spring的配置文件,该文件就专门用来作为Spring Security的配置