- 从 How 到 What:探索命令式与声明式编程的哲学
Vitalia
编程范式&语言艺术开发语言
编程范式是程序员用来构建程序的基本风格或方法。在众多编程范式中,命令式编程和声明式编程是最常见的两种。它们的主要区别在于程序员如何描述程序的逻辑和行为。文章目录命令式编程:指示程序如何改变状态1.过程式编程(ProceduralProgramming)2.面向对象编程(Object-orientedProgramming,OOP)特点示例声明式编程:只说结果,不说过程1.函数式编程(Functio
- vue3解构defineProps失去响应式解决办法
半夏ing
前端javascript开发语言
constprops=defineProps({deviceType:{type:String,default:'apple'}});const{deviceType}=props;这样写下来,deviceType,这个玩意就失去响应了。正确的应该向下面的那样constprops=defineProps({deviceType:{type:String,default:"123",},});con
- 前端高级面试题
阿芯爱编程
面试前端
以下是一些高级前端面试题及答案:一、性能优化如何对大型前端项目进行性能剖析(profiling)?答案:使用ChromeDevTools中的Performance面板。可以记录页面加载和交互过程中的各种性能指标,如脚本执行时间、渲染时间、重绘和回流次数等。利用Lighthouse工具,它可以对网页进行全面的性能评估,包括加载性能、可访问性、最佳实践等方面,并给出优化建议。在代码中手动插入性能测量点
- vue 启动项目报错Cannot read properties of undefined (reading ‘parseComponent‘)
知道的越多越难受
vuevue.jsjavascript前端
如果出现如下报错大概率是因为install时中途出现异常导致vue-template-compiler依赖没有正常安装导致的,重新安装即可SyntaxError:TypeError:Cannotreadpropertiesofundefined(reading'parseComponent')Youmayusespecialcommentstodisablesomewarnings.Use//es
- Tab 如何滚动居中
kilito_01
前端javascriptcss
{{item}}exportdefault{name:"TabList",props:{tabList:{type:Array,},},data(){return{currentIndex:0,};},methods:{onTabClick(index){this.currentIndex=index;},},watch:{currentIndex(newVal){consttabList=thi
- mac 系统下使用clion调试redis4源码
迹忆客
redis编程redismac
原文:mac系统下使用clion调试redis4源码clion主要使用的是cmake+make进行编译。所以对于redis4来说,主要的就是先编写CMakeLists.txt文件。CmakeLists.txt文件redis4/CMakeLists.txtcmake_minimum_required(VERSION3.15)project(redis4)set(CMAKE_BUILD_TYPE"De
- Node.js 中的 fs 模块详解
小灰灰学编程
Node.jsnode.js前端
fs(FileSystem)模块是Node.js的核心模块之一,用于处理文件系统的操作,包括文件的读取、写入、删除、重命名等。它提供了同步和异步两种操作方式,适用于不同的场景。1.前置知识1.1文件系统文件系统是操作系统用于管理文件和目录的一种机制。Node.js通过fs模块提供了对文件系统的访问能力。1.2同步与异步同步操作:阻塞代码执行,直到操作完成。异步操作:非阻塞,通过回调函数、Promi
- Node.js 调用 DeepSeek API 完整指南
m0_74823490
面试学习路线阿里巴巴node.js
简介本文将介绍如何使用Node.js调用DeepSeekAPI,实现流式对话并保存对话记录。Node.js版本使用现代异步编程方式实现,支持流式处理和错误处理。1.环境准备1.1系统要求Node.js14.0或更高版本npm包管理器1.2项目结构deepseek-project/├──main.js#主程序├──package.json#项目配置文件└──conversation.txt#对话记录
- 基于vue3实现的课堂点名程序
zhouzhurong
vue.jsjavascriptelementui
设计思路采用vue3实现的课堂点名程序,模拟课堂座位布局,点击开始点名按钮后,一朵鲜花在座位间传递,直到点击结束点名按钮,鲜花停留的座位被点名。课堂点名座位组件seat.vue//组合式APIimport{ref,reactive,onMounted}from'vue';constseatImage=ref('/src/assets/desk.jpg')constprops=defineProps
- 1.如何配置开发环境(JDK、Maven、IDEA)搭建SpringBoot项目
yjx012
javamavenintellij-ideaspringboot
搭建SpringBoot项目的开发环境主要包括安装和配置JDK、Maven和IDEA(IntelliJIDEA)。以下是详细的步骤和注意事项。1.安装JDK1.1下载JDKDownloadIntelliJIDEA–TheLeadingJavaandKotlinIDE1.2安装JDK下载后,按照安装向导完成安装。安装过程中请记住安装路径,通常为C:\ProgramFiles\Java\jdk-11或
- JProfiler_windows:Java 性能分析与优化
心灵宝贝
java开发语言
JProfiler是一款功能强大的Java性能分析工具,专门用于监控和分析Java应用程序的性能瓶颈、内存泄漏、线程问题等。以下是关于JProfiler_windows-x64_8_0_2的详细介绍:一、JProfiler简介JProfiler是由ej-technologies公司开发的一款Java性能分析工具,支持对本地和远程JVM的监控。它能够帮助开发者深入分析Java应用程序的CPU使用、内
- 直肠癌远处转移预测模型临床影响力研究Protocol
医学AppMatrix
预测模型构建和评价人工智能大数据机器学习
直肠癌远处转移预测模型临床影响力研究Protocol举例说明AI工具,包括LLM模型和临床预测模型,的临床影响力研究的流程,这是AI工具进入临床实践之前必要的评估流程,如果AI工具与现有的临床工具相比,有正面的临床影响力,即可以使患者收益或者提高效率、节约资源,才可以进入临床实践。需要说明的是,AI工具的临床影响力也可能是负面的,所以临床影响力研究的初期,需要小规模的研究以确定AI工具不是有害的。
- Leetcode 518. Coin Change II
小白菜又菜
Leetcode动态规划(DP)解题报告leetcode算法
ProblemYouaregivenanintegerarraycoinsrepresentingcoinsofdifferentdenominationsandanintegeramountrepresentingatotalamountofmoney.Returnthenumberofcombinationsthatmakeupthatamount.Ifthatamountofmoneycan
- Leetcode 712. Minimum ASCII Delete Sum for Two Strings
小白菜又菜
Leetcode解题报告动态规划(DP)leetcode算法
ProblemGiventwostringss1ands2,returnthelowestASCIIsumofdeletedcharacterstomaketwostringsequal.AlgorithmDynamicProgramming(DP):similarasLongestCommonSubsequence(LCS).Ifs1[i]!=s2[j]:F(i,j)=min(F(i−1,j)
- java word在线编辑_[原创]Java开发在线打开编辑保存Word文件(支持多浏览器)
嘻嘻哈哈哦哦吧
javaword在线编辑
Java调用PageOffice实现在线编辑保存Word文件(以jsp调用为例,支持SSM、SSH、SpringMVC等流行框架)1.下载PageOffice开发包:http://www.zhuozhengsoft.com/dowm/下载PageOfficeforJAVA2.以Myeclipse为例,新建一个WebProject,比如:wordonline3.解压PageOffice开发包,拷贝“
- Word中的文档信息域
bu_shuo
Word域文档属性文档信息
Word中的文档信息域DocProperty包含文档信息的多个属性,也可以自定义属性.查看文档预定义的自定义属性【文件】→【信息】→【属性】→【高级属性】参考链接WORD中文档属性域DocProperty的应用-CSDN博客第06套Word_哔哩哔哩_bilibili
- ScaleFlux企业级SSD通过VMware IOVP认证
ScaleFlux锐钲
服务器运维智能硬件科技
ScaleFluxCSD3000企业级NVMeSSD成功通过VMwareIOVP认证。以卓越的性能和稳定性增强了OEM存储解决方案的竞争力,为企业提供高度可靠的存储性能和无缝集成的虚拟化环境,以满足不断增长的数据需求和业务挑战。关于VMwareIOVP认证:VMwareIOVP(I/OVendorProgram)认证是由VMware提供的一项认证计划,旨在验证和确认第三方硬件供应商的产品与VMwa
- ChatGPT和deepseek能力对比区别
分享是一种传递,一种快乐
杂学百货铺-啥都学学习
祥蛇增瑞气,福字映春光。祝你蛇年大吉,家庭幸福,万事顺意。-翻译为英文ChatGPT说:ChatGPTTheauspicioussnakebringsprosperity,andthecharacter"Fu"reflectsthespring'sradiance.WishingyoualuckyYearoftheSnake,ahappyfamily,andsuccessinallthings.祥
- shrio反序列化分析
红队蓝军
java开发语言安全
shiro550环境搭建https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4配置pom.xmljavax.servletjstlruntimejavax.servletservlet-apiprovidedorg.slf4jslf4j-log4j12runtimelog4jlog4jruntimenet.sourceforge.
- 基于ESP-NOW协议的温室通风监控系统
神一样的老师
物联网论文阅读分享物联网
论文标题中文标题:基于ESP-NOW协议的温室通风监控系统英文标题:SistemademonitoreodeventilacióneninvernaderoconprotocoloESP-NOW作者信息HéctorDeSosaa,*,GermánA.Xandera,LuisA.Urbania,AlejandroG.MaxitaaUniversidadNacionaldeMisiones,Facul
- SpringCloud之网关Gateway
2401_85358655
springcloudgatewayspring
3、过滤器(Filter):一个标准的SpringWebFilter,SpringCloudGateway中的Filter分为两种类型:GatewayFilter和GlobalFilter。过滤器Filter可以对请求和响应进行处理2、基本搭建①、新建模块②、导入依赖4.0.0com.gatewaycode0.0.1-SNAPSHOTgatewayDemoprojectforSpringBoot8
- 前端为什么要使用new Promise包裹一个函数
没资格抱怨
JS核心前端javascript
在前端开发中,使用newPromise包裹一个函数主要是为了将原本不支持Promise规范的操作转化为支持Promise规范的操作,从而可以更好地处理异步操作,提升代码的可读性和可维护性。下面详细介绍这么做的常见原因和应用场景:1.封装回调风格的异步操作在JavaScript中,早期的异步操作(如setTimeout、XMLHttpRequest等)通常使用回调函数来处理结果。这种方式容易导致回调
- [Ubuntu 20.04]Realtek ALC294无声音解决
CatTomCSDN
ubuntulinux
本文首发于本人博客:[Ubuntu20.04]RealtekALC294无声音解决目录环境问题解决附:查看你使用的声卡型号参考环境ASUSFL8000UUbuntu20.04问题RealtekALC294声卡在Ubuntu20.04下外放/耳机无声音估计这个问题应该只要是ASUS都可能会遇到,不论笔记本还是主板…解决修改/etc/modprobe.d/alsa-base.conf在文件的最后添加o
- 《Operating System Concepts》阅读笔记:p17-p25
操作系统
《OperatingSystemConcepts》学习第5天,p17-p25总结,总计9页。一、技术总结1.计算机系统的组成结构(1)CPU—Thehardwarethatexecutesinstructions.(2)Processor—AphysicalchipthatcontainsoneormoreCPUs.(3)Core—ThebasiccomputationunitoftheCPU.(
- 【Spring Boot】Spring AOP动态代理,以及静态代理
web13508588635
面试学习路线阿里巴巴springspringboot后端
目录SpringAOP代理一.代理的概念二.静态代理三.JDK代理3.1重写invoke方法进?功能增强3.2通过Proxy类随机生成代理对象四.CGLIB代理4.1自定义类来重写intercept方法4.2通过Enhancer类的create方法来创建代理类五.AOP源码剖析总结(重中之重,精华)SpringAOP代理一.代理的概念根据前面的学习想必大家都已经对SpringAOP有所了解了,接下
- 【kafka系列】broker
漫步者TZ
kafka数据库分布式kafka
目录Broker接收生产者消息和返回消息给消费者的流程逻辑分析Broker处理生产者消息的核心流程Broker处理消费者消息的核心流程关键点总结Broker接收生产者消息和返回消息给消费者的流程逻辑分析Broker处理生产者消息的核心流程接收请求Broker的SocketServer接收来自生产者的ProduceRequest(基于Reactor网络模型)。请求解析与验证解析请求头(Topic、P
- AWS Service Catalog Terraform 参考架构常见问题解决方案
陆骊咪Durwin
AWSServiceCatalogTerraform参考架构常见问题解决方案aws-service-catalog-terraform-reference-architectureApplyTerraformconfigurationsusingCloudFormationthroughaproxylambda项目地址:https://gitcode.com/gh_mirrors/aw/aws-s
- 《AI对话秘籍:5个Prompt Engineering核心技巧让DeepSeek输出质量翻倍》
Athena-H
PromptEngineering人工智能promptchatgptgptai
引言随着自然语言处理技术的飞速发展,像ChatGPT这样的AI对话系统已经广泛应用于客服、教育、创作等多个领域。然而,如何高效地与这些语言模型进行交互,获得准确、相关且高质量的回复,成为了应用中的一个关键挑战。这时,PromptEngineering(提示词工程)便成为了一项必不可少的技能。PromptEngineering的核心目标是通过优化与模型的输入互动方式,让模型生成更加符合预期的输出。在
- Ubuntu创建启动应用程序的快捷方式(宝宝级攻略)
PaLu-LvL
攻略计算机视觉ubuntulinux学习
前言分析没有快捷方式的原因:通过源码编译或解压缩.tar.gz等方式手动安装的软件,除非开发者明确提供安装脚本,否则不会自动创建快捷方式。解决方式:在Ubuntu系统中,.desktop文件用于创建启动应用程序的快捷方式,通常用于将程序添加到应用程序菜单或桌面。具体操作流程1.打开文件管理器或终端可以使用任何文本编辑器创建.desktop文件,例如gedit、nano或其他编辑器。2.创建.des
- 国产文本编辑器EverEdit - 做一回古人:EverEdit的竖排编辑模式
彩虹小黑馬
妙用编辑器编辑器EverEditEmEditorNotepad
1文档编辑模式1.1应用场景 当用户打开重要文件查阅时,并不希望误操作导致文件被修改,提前将文档属性设置为只读是一个可行的方法,但由于编辑文件的不可预知性,或仅需要临时对文档进行保护,在编辑器中设置只读属性将会更方便。1.2使用方法1.2.1禁止编辑 选择主菜单文档->禁止编辑即可生效,此时,当前文档将被设置为不可编辑状态,但界面元素无任何隐藏,适合用户边写文档边查阅资料。注:设置禁止编辑后,
- 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的配置