- android.support.v7.widget.RecyclerView$SavedState cannot be cast to android.widget.AbsListView$Sa...
Mis丶H
全部错误信息:java.lang.RuntimeException:UnabletostartactivityComponentInfo{com.enhance.greapp/com.kaomanfen.enhance.gre3k.activity.QuestionWordActivity}:java.lang.ClassCastException:android.support.v7.widge
- Android第一行代码——快速入门 Kotlin 编程(4.5 最常用和最难用的控件:ListView)
目录4.5最常用和最难用的控件:ListView4.5.1ListView的简单用法4.5.2定制ListView的界面4.5.3提升ListView的运行效率4.5.4listView的点击事件4.5最常用和最难用的控件:ListViewListView在过去绝对可以称得上是Andoid中最常用的控件之一,几乎所有的应用程序都会用到它。由于手机屏幕空间比较有限,能够一次性在屏幕上显示的内容并不多
- 享元模式 - Flutter中的对象共享大师,万级列表的性能救星!
明似水
flutter享元模式flutterjavascript
痛点场景:万级社交表情列表假设你的社交应用需要展示:10,000+种表情每个表情有相同操作(点击、长按)表情图片资源较大(平均50KB)需要平滑滚动传统实现方式:ListView.builder(itemCount:10000,itemBuilder:(context,index){returnEmojiItem(emoji:allEmojis[index],//每个item独立实例onTap:(
- Flutter基础(ListView.builder)
ListView.builder最基本的形式需要两个参数:itemCount:列表项的总数。itemBuilder:一个回调函数,用于构建每个列表项。ListView.builder(itemCount:10,//列表项总数(这里是10个)itemBuilder:(context,index){//返回一个Widget作为列表项returnListTile(title:Text('项目$index
- WPF学习笔记(3):ListView根据内容自动调整列宽
weixin_30709061
WPF学习笔记(3):ListView根据内容自动调整列宽原文:WPF学习笔记(3):ListView根据内容自动调整列宽DataGrid中,只要不设置DataGrid的宽度和列宽度,或者将宽度设置为Auto,那么表格就会根据内容自动调整宽度,以显示所有内容。但如果是ListView,按以上方法设置,却达不到列宽自动调整的效果,列宽在控件第一次加载的时候已经确定,之后不会随着某列数据长度的增加和减
- TabLayout禁止选择
此间少年_hao
androidtablayout禁用选项卡tabviewtab
项目中有个页面上面是TabLayout下面是Listview,选择TabLayout的选项卡更新下面Listview里面的数据,在请求的时候想禁用TabLayout选项卡来避免用户频繁点击选项卡造成Listview的数据错误。如果只是调用TabLayout的setClickable方法是不起作用的,需要获取到每个选项卡的tabView然后再分别设置。LinearLayouttabStrip=(Li
- 【HarmonyOS NEXT】滑动选中放大卡片效果
【HarmonyOSNEXT】滑动选中放大卡片效果鸿蒙开发能力##HarmonyOSSDK应用服务##鸿蒙金融类应用(金融理财一、功能效果:1.横向滚动列表,手势左右滑动,居中选中会放大。2.左边滑动到首部,在居中位置。同理,尾部也在居中位置。3.放大选中和滑动滚动效果丝滑。二、开发思路:【完整代码请参考章节三】1.使用list实现横向滚动列表的效果@BuilderListView(){List(
- Android 10.0 java.lang.IllegalStateException The content of the adapter has
安卓兼职framework应用工程师
android10.0Rom开发疑难问题分析androidjavaListViewadapterrom
1.前言在10.0的系统rom定制化开发中,在某些时候,关于在Listview刷新数据的时候,出现ThecontentoftheadapterhaschangedbutListViewdidnotreceiveanotification.Makesurethecontentofyouradapterisnotmodifiedfromabackgroundthread,butonlyfromtheU
- Android常用内存优化方式整理
Lee·陈
笔记-Android笔记-RNandroid内存优化
Android常用内存优化方式整理1、减小对象内存占用基本数据类型与包装类型枚举Bitmap图片代码混淆序列化2、对象复用对象池ListView/GridView/RecyclerViewBitmap复用3、内存泄漏静态变量单例属性动画非静态内部类异步线程/任务Handler资源未关闭全局集合对象WebViewEditText4、内存使用策略优化优化布局,减少布局层次StringBuffer/St
- ASP.NET+LayUI实现多图片上传(ashx)
炫澜abc
C#
选择多文件文件名大小状态操作开始上传layui.use('upload',function(){varupload=layui.upload;vardemoListView=$('#demoList'),uploadListIns=upload.render({elem:'#testList',url:'Handler.ashx',accept:'file',multiple:true,size:
- WPF 学习《一》
rollingman
C#WPFwpf学习listview
ListView显示复选框和下拉框上代码,此列表显示checkbox、下拉框和支持内置搜索。列表设置了一些简单的样式。内置搜索功能可以搜索但是不知道怎么得到搜索出来的结果,还需要继续研究。都是网上搜索结合自己需求整理而成,感觉适合新手看^.^publicclassVersionField{publicintX{get;set;}publicintY{get;set;}publicintZ{get;
- 为 RecyclerView 的列表条目 item 添加动画
PekingVagrant
androidRecyclerViewRecyclerViewitem动画
首先感谢启舰前辈,他的Android自定义控件三部曲真的很经典,推荐大家去看,本篇文章也是借鉴他的自定义控件三部曲之动画篇(十三)——实现ListViewItem进入动画完成的。目录一.找到为item添加动画的合适位置二.使用Animation创建item动画1.创建item的布局xml2.adapter类3.从xml中加载item的动画4.主界面MainActivity5.效果一.找到为item
- C#设计模式之AbstractFactory_抽象工厂_对象创建新模式-练习制作PANL(一)
99乘法口诀万物皆可变
C#服务器javascripthtmlc#
系统功能说明核心功能控件列表(ListView)展示可用控件类型(按钮、文本框、标签等)支持拖拽操作创建新控件设计面板(Panel)可视化设计区域支持拖拽添加控件支持移动已添加的控件网格背景辅助布局参数树(TreeView)实时显示设计面板上的控件展示控件属性和事件信息随控件移动自动更新位置信息持久化功能保存设计到文件(XML序列化)从文件加载设计(反序列化)初稿完成界面,后续添加各种事件,其实个
- Android微信对话列表实现指南
青妍
本文还有配套的精品资源,点击获取简介:在Android应用开发中,实现类似微信的对话列表功能是一个常见的任务,涉及使用ListView及其自定义适配器。本文将指导你如何创建一个自定义适配器来填充ListView,展示不同类型的消息如文本、图片和语音消息。我们将详细讨论如何通过继承BaseAdapter实现自定义适配器,并在getView()方法中处理不同类型消息的展示逻辑。此外,本文还将讨论如何使
- WPF数据绑定疑惑解答--(关于控件的Itemsource,Collection绑定)
@Crazy Snail
WPF教程WPF知识点windowsWPFWPF数据绑定
1.ListView绑定的数据类型问题在`MainWindow`的构造函数中绑定`List11.ItemsSource`ListrpcList=newList();publicMainWindow(){ InitializeComponent(); //确保List11的ItemsSource已经绑定到rpcList List11.ItemsSource=rpcList;}如果`rpcLis
- wpf的listview编辑指定列_30.10 编辑数据系列
weixin_39869959
创建好图表之后,有可能图表的数据源会发生增减变化,此时需要对图表的数据源重新编辑,用户选中图表后,在【图表工具/设计】选项卡中单击【选择数据】命令,此时会弹出【选择数据源】的对话框,【图表数据区域】为当前图表的数据源区域,中间为【切换行/列】命令,左侧为【图例项(系列)】,右侧为【水平(分类)轴标签】,如图30‑90所示。图30-90【选择数据源】对话框30.10.1添加数据系列用户若在图表中添加
- WPF ListView实现拖拽调整顺序
Goat的奇思妙想
wpf
在学习过程中,做了个Demo,分享一下,做的比较粗糙,若有不对希望哥哥们指出来首先说说前台样式:样式比较简单主要就是两个控件listview和Popup,这个Popup主要是用来实时显示当前操作的item放在哪里了,粗线表示放在哪个地方,这是效果图:后台主要就是拖拽的事件,不算复杂,相关的属性,方法都在下面了,可以直接用#regionPropertyGridlastUnderLine;Gridla
- HarmonyOS应用闪屏问题性能优化三
程序员
刷新过程中,ForEach键值生成函数未设置导致的闪屏问题问题现象下拉刷新时,应用产生卡顿,出现闪屏问题。@BuilderprivategetListView(){List({space:12,scroller:this.scroller}){//使用懒加载组件渲染数据ForEach(this.newsData,(item:NewsData)=>{ListItem(){newsItem({news
- QComboBox样式设置-右侧按钮-下拉列表
#苔花如米小#
QTqt
1.设置下拉列表ui.comboBox->setView(newQListView());2.设置样式QStringstyle;调用ui.comboBox->setStyleSheet(style)style为下边的内容://QComboBox的样式QComboBox{border:none;background:#ff0000;color:#ffffff;padding-left:3px;}//
- Android开发-列表类视图
難釋懷
androidgitee
在Android应用开发中,列表类视图(ListView)是展示数据集的重要UI组件之一。无论是显示联系人列表、新闻文章还是产品目录,列表类视图都能提供一个高效且用户友好的方式来呈现信息。本文将详细介绍如何使用ListView和更现代的RecyclerView来构建列表界面,并探讨它们各自的优缺点和适用场景。一、ListView简介ListView是Android提供的用于垂直滚动显示一组可滚动项
- android listview 取消头部分割线
后知后觉
ANDROID
listview分割线会在头部、数据item、及根部的底部打印,如果要取消头部分割线必须先设置期方法addHeaderView(headView,null,true);addFooterView(footView,null,true);注意:第三个参数必须为true,否则无效//显示头部出现分割线listview.setHeaderDividersEnabled(true);//禁止底部出现分割线
- android listview 左右滑动手势的监听,listview实现左右滑动监听
王锦添
androidlistview左右滑动手势的监听
在android开发中会碰到有顶部导航并且下面显示的内容是一个listview,此时要想实现左右滑动切换顶部导航的选项是不能实现的,因为listview自己消耗横向滑动事件。因为我可以通过继承listview,对左右滑动事件进行消耗,不在让原生的listview处理。效果图:思路就是继承listview,设置一个GestureDetector监听滑动手势,如果左右滑动进行处理调用一个自己写的左右滑
- 移动应用开发:自定义 View 处理大量数据的性能与交互优化方案
每次的天空
Android学习知识总结交互javaandroid学习
实现1万条数据下流畅滑动与灵敏交互的完美平衡。一、数据渲染优化:从1万条到丝滑体验(一)视图复用机制视图复用是提升大量数据渲染性能的关键策略。以一个简单的自定义列表视图为例,我们可以构建如下的复用池管理机制:privatefinalLinkedListviewPool=newLinkedListcacheMap=newWeakHashMap=23){setLayerType(LAYER_TYPE_
- Android第六次面试总结之Java设计模式(二)
每次的天空
android面试java
一、适配器模式(AdapterPattern)1.ListViewvsRecyclerView的Adapter核心区别?为什么RecyclerView需要ViewHolder?解答:核心区别:特性ListView.Adapter(如ArrayAdapter)RecyclerView.AdapterViewHolder机制无,直接通过getView重复创建View(性能差)强制使用ViewHolde
- iOS—仿tableView自定义闹钟列表
MrZWCui
iOS自定义iosmacos学习objective-c
自定义View实现闹钟列表,左滑删除,滑动列表时收起删除按钮。用代理的方法实现ListView的创建,删除以及开关回调,并实现动画效果。ClockViewCell使用block通知ListView,ListView通过代理通知上层ClockView1、文件组成ClockView一共由3部分组成(1)ClockView为底层View,仅用于添加ListView,可以自定义ListView中Cell的
- 【QT的音乐播放器(简单版)】
神迷岛
音乐播放器QT音乐播放器项目实现qtmp3c++
基于QT的音乐播放器前言一、主体效果二、主要技术点:1.mp3的ID3V2格式文件解析:作者、歌手、时长、专辑图片等1.1需要工具:1.2ID3V2文件格式1.3mp3ID3V2解析代码2.音乐列表拖拽、临界自动滚动、信息栏。2.1要实现效果:2.2QListView的样式表2.3重写QListView四个事件函数,发出需要信号,及自动滚动效果2.4关联信号实现拖拽释放,移动iterm效果3.歌词
- Qt、C++软件开发之list控件:listview和listwidget的区别以及C++详细用法。
wwww.wwww
QtC++软件开发qtc++list
文章目录前言区别与功能数据模型与灵活性QListView:QListWidget:扩展性与自定义QListView:QListWidget:性能与内存使用C++详细用法QListView创建与初始化添加数据设置委托信号与槽QListWidget创建与初始化添加数据设置项属性信号与槽总结前言在Qt软件开发中,QListView和QListWidget都是用于展示列表数据
- libevent服务器与qt开发第二期(附带源码)
whoarethenext
服务器qt运维c++linux后端
本文是上一期文章的延伸源码本文核心点上一期的文章的位置链接:link本期要做的是通过libevent设计一个服务器,该服务器遇到有客户端访问的时候,会用一个qt的listview控件来显示该客户端的ip和端口号,客户端断开后listview也会删除该客户端的ip和端口号,演示视频如下。20250416_160008源码libeventuse.hclassglobalSignal:publicQOb
- 25.4.20学习总结
The_cute_cat
学习
如何使用listView组件来做聊天界面1.什么是CellFactory?在JavaFX中,控件(比如ListView、TableView等)用Cell来显示每一条数据。Cell:代表这个单元格(即每个列表项)中显示的内容和样式。CellFactory:是一个工厂接口,负责创建和配置每个Cell。简单来说,CellFactory用于定义如何将数据对象(比如好友信息)转化为界面显示的单元格(Cell
- 25.4.22学习总结
The_cute_cat
学习
如何通过好友列表对聊天框的切换首先,我们知道,你的好友列表是用ListView组件实现的,那么,接下来,我们将开始讲解如何实现切换。一、改造数据结构如果你是跟着我的上一篇文章做的话,应该需要修改一些的。如果不是,请了解上一篇用的再添加之后讲的。1.Map存ObservableList你的每一项好友都对应着一个ObservableList,你可以ObservableList理解为消息数组,这是你的U
- 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的配置