- try-finally
乐百事52淑熙
今天写一下有关Try-Finally的相关问题吧。如果代码块中有try,catch,finally,哪个会执行?首先:我们知道,如果在try{}中有异常,catch{}中的代码会执行。finally{}中的代码不管如何都会执行。如果try{}中有return,finally{}是否会执行?看一下下面这个代码:publicclassTry_Finallly{publicstaticvoidmain(
- java异常处理语句是,java 异常处理
低调王子
java异常处理语句是
JAVA的异常处理的语句为:try-catch-finally,在这个语句中catch语句可以有一个或多个,finally语句可以省略.但是try语句后至少要有一个catch语句或finally语句.JAVA异常处理机制只能处理Throwable类或其子类对象,所以自定义异常类层次需要选取Throwable类或其某个子类作为父类。JAVA异常处理大致可以分为两类:JAVA对不同的异常类采取不同的处
- Spring Boot 默认使用 CGLIB,但CGLIB 无法代理 final 类或 final 方法
yourkin666
springboot后端java
那么当这两件事冲突时,SpringBoot是怎么“解决”的呢?答案是:它不解决,也无法解决。当这种情况发生时,你的应用程序会直接启动失败。这不是SpringBoot的疏忽,而是由CGLIB的底层原理和Java语言的规则所决定的。工作流程和失败原因让我们来模拟一下SpringBoot启动时会发生什么:Spring容器开始创建所有的Bean。它找到了一个需要被AOP增强的Bean(例如,一个被@Ser
- 熟悉亚马逊邮件(第八天)
七qi_
电商运营分析学习方法
AmazonshipmentID(FBA18XBLW5JL)hasbeenreceivedatitsfinalAmazonfulfillmentcenterdestinationandhasbeenfullyprocessedintoinventory.Yourunitsarenowfulfillable.DearSellerWehavedeactivatedthelistingsnotedin
- static 继承 多态 抽象类和抽象方法 | 学习日志 Java 7 月 25 日 | 第 4 天
学习计划1.static和工具类2.继承3.多态4.包5.final6.权限修饰符7.抽象类和抽象方法8.周总结static和工具类被static修饰的成员变量是静态变量,修饰的成员方法是静态方法。静态变量,被该类所有对象共享,不属于对象属于类,可以使用对象名调用,还可以使用类名调用(推荐)。堆内存中有存放静态的存储区:静态区(不在堆内存的方法区)。静态变量是随着类的加载而加载的,优先于对象的出现
- SpringMVC——请求参数与请求头
获取请求参数一、@RequestParam获取jsp实例testRequestParamprivatestaticfinalStringSUCCESS="success";@RequestMapping(value="/testRequestParam")publicStringtestRequestParam(@RequestParam(value="username")Stringuserna
- 线程池公用变量
我有一只肥螳螂
JAVAjava
一般情况下,我们定义线程变量是使用ThreadLocalprivatefinalThreadLocalLOCAL_DATA=newThreadLocalLOCAL_DATA=newTransmittableThreadLocal{xxxx});}正确示例for(PatrolInspectPlanitem:dataList){//使用TtlRunnable包装任务,确保变量传递orderThread
- JDK 8 Condition 源码详解(详细注释版)
csdn_tom_168
源码学习JUC并发包javaJUCCondition源码学习
JDK8Condition源码详解(详细注释版)1.类定义和基本属性publicclassConditionObjectimplementsCondition,java.io.Serializable{//序列化版本号privatestaticfinallongserialVersionUID=1173984872572414699L;/***条件等待队列的第一个节点*构成一个FIFO的单向链表队
- JDK 8 AtomicIntegerArray 源码详解(详细注释版)
csdn_tom_168
源码学习JUC并发包javaAtomicIntegerArray源码学习
JDK8AtomicIntegerArray源码详解(详细注释版)1.类定义和基本属性publicclassAtomicIntegerArrayimplementsjava.io.Serializable{//序列化版本号privatestaticfinallongserialVersionUID=2862133569453604235L;/***Unsafe类实例,提供底层的原子操作*通过Uns
- JDK 8 AtomicLongArray 源码详解(详细注释版)
csdn_tom_168
源码学习JUC并发包javaAtomicLongArrayJUC源码学习
JDK8AtomicLongArray源码详解(详细注释版)1.类定义和基本属性publicclassAtomicLongArrayimplementsjava.io.Serializable{//序列化版本号privatestaticfinallongserialVersionUID=-2308431214976778248L;/***Unsafe类实例,提供底层的原子操作*通过Unsafe可以
- JDK 8 StampedLock 源码详解(详细注释版)
csdn_tom_168
源码学习JUC并发包javaJUCStampedLock源码学习
JDK8StampedLock源码详解(详细注释版)1.类定义和基本属性publicclassStampedLockimplementsjava.io.Serializable{//序列化版本号privatestaticfinallongserialVersionUID=-6001602636862214147L;/***CPU核心数,用于优化自旋策略*/privatestaticfinalint
- 6.Python异常处理实战指南:从基础到工程级应用
风雨同舟的代码笔记
Python实战python开发语言ai
文章目录Python异常处理实战指南:从基础到工程级应用一、异常处理基础:构建安全防线1.完整的try-except-else-finally结构二、内置异常类:精准捕获常见错误常见内置异常类及触发场景多异常联合处理实战三、自定义异常类:工程级错误管理1.创建带错误码的自定义异常2.异常链:保留原始错误上下文四、实战:文件操作健壮性处理1.安全文件读取器(自动重试+编码检测)2.原子文件写入(防止
- java中的可变字符串和不可变字符串
Black_carbon
jvmjavajvm开发语言
本文涉及到的类:String、StringBuffer、StringBulider一、不可变字符串:String为什么说String是不可变的字符串?有两方面来保证它的不可变性:一是将字符数组用final关键字修饰,被final修饰的引用数据类型值是不可变的,但这只能限制符号引用的值不可变,即指向的内存空间不可变;二是String作为封装类没有对外提供修改字符数组中的值的方法,以此来限制它指向的内
- Java字符串不可变性:从安全哲学到性能艺术的完美平衡
程序猿Mr.wu
#Java基础javaString字符串
目录引言一、什么是String的不可变性?二、解剖String的“防弹衣”:底层实现机制1.final的三重防御体系2.方法实现的精妙设计3.构造函数的防御性编程三、为什么String必须不可变?设计哲学的五大支柱1.字符串常量池:内存优化的革命性方案2.哈希码缓存:集合性能的加速器3.安全性的铜墙铁壁4.线程安全的无锁之道5.架构设计的稳定性基石四、突破边界:反射攻击与防御哲学五、演进与最佳实践
- Java异常处理Exceprion
棉花糖老丫
Java基础java开发语言异常
目录1、异常1.1现实生活的病1.2java异常体系图1.3Throwable类1.4程序中的异常处理1.4.1自行处理1.4.2抛出处理1.4.3自定义异常1.5运行时异常和非运行时异常1.5.1RuntimeException1.5.2非运行时异常(受检异常)1.6finally1、异常程序运行会出现异常的状况,异常状况的出现会改变正常的程序流程.很多事情可能导致程序异常,例如:硬件故障/资源
- java操做jsch的工具类记录一下
publicclassSFTPUtil{privatestaticfinalLoggerlog=LoggerFactory.getLogger(SFTPUtil.class);/***连接ftp/sftp服务器*@paramSFTP类*/publicstaticvoidgetConnect(SFTPs)throwsException{/**密钥的密码*///StringprivateKey="ke
- 【大模型文生图、文生音频实战Demo】基于Spring AI Alibaba和阿里百炼大模型实现文生图、文生视频
Sao_E
音视频spring人工智能ai
文章目录大模型实现文生图大模型实现文生音频大模型实现文生图使用阿里百炼大模型-wanx2.1-t2i-turbo,作为文生图调用的大模型代码@RestControllerpublicclassImageModelController{privatefinalImageModelimageModel;ImageModelController(@Qualifier("dashScopeImageMod
- 【方案白嫖】Kafka如何监听动态改变的topic
橙皇cc
Kafkajavakafkaspring数据库
问题简述:服务运行过程中,需要根据实际情况(配置)动态改变监听的topic。方案一:如果想改变的topic可以符合一定的规则,能做到正则限定范围,在限定的范围内变动,可以直接配置KafkaListener监听正则规则。@Configuration@EnableKafkapublicclassKafkaConfig{privatestaticfinalStringKAFKA_SERVERS_CONF
- java面向对象高级01——final关键字
硕硕子啊~
javajava开发语言
1.final的本质及用法final关键字是最终的意思,可以修饰类、方法、变量。//final修饰类:该类为最终类,特点是不可以被继承(一般工具类可以用final修饰)//final修饰方法:该方法为最终方法,特点是不可以被重写//final修饰变量:该变量存在,且仅仅可以被赋值1次2.final修饰变量▶final修饰基本类型变量(四类八种),变量存的数据只能写一次,之后数据不可改变▶final
- Redisson 加锁解锁源码
skystep
Redis分布式redisjava
分布式锁使用对于redisson分布式锁的使用很简单:1、调用getLock函数获取锁操作对象;2、调用tryLock函数进行加锁;3、调用unlock函数进行解锁;注意unlock操作需要放到finally代码段中,保证锁可以被释放。privatevoidsumLock(){lock=redissonClient.getLock("sum-lock");booleanb=lock.tryLock
- 电商开放平台获取商品数据返回信息详解
蓝倾976
数据库开发语言电商开放平台开放API
一、核心返回字段解析1.基础信息字段商品ID(num_iid/goods_id)唯一标识商品,用于后续操作(如详情查询、库存更新)。标题(title)商品名称,需注意可能包含营销关键词(如"【限时折扣】2025新款手机")。价格信息price:当前售价(如¥999.99)original_price:原价(促销前价格)zk_final_price:天猫/淘宝活动价(需结合促销字段判断)销量(sal
- final修饰符不可变的底层
final修饰符的底层原理在Java中,final修饰符的底层实现涉及编译器优化和JVM字节码层面的约束其核心目标是保证被修饰元素的【不可变性】或【不可重写/继承性】一、final修饰类:禁止继承的底层约束当一个类被final修饰时,例如String、IntegerJVM在字节码层面会通过访问标志(accessflags)标记该类为ACC_FINAL编译器在编译时会检查:如果子类试图继承被fina
- HashMap和ConcurrentHashMap源码精讲
HashMap类结构图HashMap源码讲解//HashMap默认初始容量是2的4次方,也就是16;staticfinalintDEFAULT_INITIAL_CAPACITY=1implementsMap.Entry{finalinthash;finalKkey;Vvalue;Nodenext;Node(inthash,Kkey,Vvalue,Nodenext){this.hash=hash;t
- Java中HashMap的实现原理详解
HashMap是Java集合框架中的核心类,基于哈希表实现键值对(Key-Value)存储,提供O(1)时间复杂度的快速查找。以下从数据结构、哈希机制、冲突解决、扩容策略等角度详细解析其实现原理(基于Java8)。一、核心数据结构:数组+链表+红黑树transientNode[]table;//哈希桶数组staticclassNode{//链表节点finalinthash;finalKkey;Vv
- 【MoodVine】DeepSeek聊天持久化(2):Spring AI + Redis实现对话记忆管理
一只鱼吖
【西瓜和晚霞】MoodVinespringredisjava
在上一篇文章中,我们介绍了如何引入SpringAI,本文将深入探讨如何实现聊天记录的持久化存储。一、初始方案:内存存储的局限性在项目初期,我们使用简单的内存存储实现聊天记录管理:创建ChatController@RestController@RequestMapping("/chat")publicclassChatController{privatefinalOllamaChatModeloll
- 10个正规靠谱的电脑兼职副业平台,在家有电脑能做的兼职软件
氧惠佣金真的高
比如说互联网的飞速发展和流行,越来越多的人在网上寻求赚钱的方法,那么有哪些靠谱的赚钱软件可以做的呢?整理了十种靠谱的兼职平台,希望能够对大家有所帮助。1,视频剪辑(赚钱软件)视频剪辑是一项非常受欢迎的兼职工作,可以在自己的时间表内完成,而且需求量也很大。如果您熟悉视频编辑软件,如AdobePremiere、FinalCutPro等,您可以尝试从事视频剪辑工作。许多公司、品牌和个人都需要剪辑视频以用
- Java炼金术:从代码到加密货币——用Java铸造数字黄金的黑科技
墨夶
Java学习资料4java科技开发语言
一、智能合约:比“契约精神”更严谨的代码1.1用Java写ERC-20代币(以太坊上的数字黄金)//ERC-20代币合约实现(需配合Web3j框架)publicclassMyERC20Token{privatefinalStringname="JavaCoin";privatefinalStringsymbol
- Collections集合类
进击的码奴
我一直有一种观点,就是尽量使用jdk提供的code,不要秀智商自己写。自己写的弊端很明显:1、bug问题。jdk比较都是大牛编的,还经过众多大众使用检验,bug率应该远远低于你个人写的。2、通用性。你写的规范还好,别人看函数名,类名就可以看懂。但是如果动不动就几万行、几十万或几百万行代码,谁有闲工夫一遍遍翻你写的工具类找实用方法。3、问题的警示性。你写的编译器没法智能提醒。但是像final啊,.u
- java中字符串的创建_Java学习之字符串的创建
weixin_39849127
java中字符串的创建
Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生。一、从根本上认识java.lang.String类和String池首先,我建议先看看String类的源码实现,这是从本质上认识String类的根本出发点。从中可以看到:1、String类是final的,不可被继承。publicfinalclassString。2、St
- 关于Java中的private final、static修饰的方法
讴歌oge
java开发语言
privatefinal修饰的方法示例代码:classCarextendsVehicle{publicstaticvoidmain(String[]args){newCar().run();//创建Car实例并调用run()方法}privatefinalvoidrun(){System.out.println("Car");//打印"Car"}}classVehicle{privatefinalv
- mondb入手
木zi_鸣
mongodb
windows 启动mongodb 编写bat文件,
mongod --dbpath D:\software\MongoDBDATA
mongod --help 查询各种配置
配置在mongob
打开批处理,即可启动,27017原生端口,shell操作监控端口 扩展28017,web端操作端口
启动配置文件配置,
数据更灵活 
- 大型高并发高负载网站的系统架构
bijian1013
高并发负载均衡
扩展Web应用程序
一.概念
简单的来说,如果一个系统可扩展,那么你可以通过扩展来提供系统的性能。这代表着系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展和语言、某项具体的技术都是无关的。扩展可以分为两种:
1.
- DISPLAY变量和xhost(原创)
czmmiao
display
DISPLAY
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:DISPLAY=:0.0
- 获取B/S客户端IP
周凡杨
java编程jspWeb浏览器
最近想写个B/S架构的聊天系统,因为以前做过C/S架构的QQ聊天系统,所以对于Socket通信编程只是一个巩固。对于C/S架构的聊天系统,由于存在客户端Java应用,所以直接在代码中获取客户端的IP,应用的方法为:
String ip = InetAddress.getLocalHost().getHostAddress();
然而对于WEB
- 浅谈类和对象
朱辉辉33
编程
类是对一类事物的总称,对象是描述一个物体的特征,类是对象的抽象。简单来说,类是抽象的,不占用内存,对象是具体的,
占用存储空间。
类是由属性和方法构成的,基本格式是public class 类名{
//定义属性
private/public 数据类型 属性名;
//定义方法
publ
- android activity与viewpager+fragment的生命周期问题
肆无忌惮_
viewpager
有一个Activity里面是ViewPager,ViewPager里面放了两个Fragment。
第一次进入这个Activity。开启了服务,并在onResume方法中绑定服务后,对Service进行了一定的初始化,其中调用了Fragment中的一个属性。
super.onResume();
bindService(intent, conn, BIND_AUTO_CREATE);
- base64Encode对图片进行编码
843977358
base64图片encoder
/**
* 对图片进行base64encoder编码
*
* @author mrZhang
* @param path
* @return
*/
public static String encodeImage(String path) {
BASE64Encoder encoder = null;
byte[] b = null;
I
- Request Header简介
aigo
servlet
当一个客户端(通常是浏览器)向Web服务器发送一个请求是,它要发送一个请求的命令行,一般是GET或POST命令,当发送POST命令时,它还必须向服务器发送一个叫“Content-Length”的请求头(Request Header) 用以指明请求数据的长度,除了Content-Length之外,它还可以向服务器发送其它一些Headers,如:
- HttpClient4.3 创建SSL协议的HttpClient对象
alleni123
httpclient爬虫ssl
public class HttpClientUtils
{
public static CloseableHttpClient createSSLClientDefault(CookieStore cookies){
SSLContext sslContext=null;
try
{
sslContext=new SSLContextBuilder().l
- java取反 -右移-左移-无符号右移的探讨
百合不是茶
位运算符 位移
取反:
在二进制中第一位,1表示符数,0表示正数
byte a = -1;
原码:10000001
反码:11111110
补码:11111111
//异或: 00000000
byte b = -2;
原码:10000010
反码:11111101
补码:11111110
//异或: 00000001
- java多线程join的作用与用法
bijian1013
java多线程
对于JAVA的join,JDK 是这样说的:join public final void join (long millis )throws InterruptedException Waits at most millis milliseconds for this thread to die. A timeout of 0 means t
- Java发送http请求(get 与post方法请求)
bijian1013
javaspring
PostRequest.java
package com.bijian.study;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURL
- 【Struts2二】struts.xml中package下的action配置项默认值
bit1129
struts.xml
在第一部份,定义了struts.xml文件,如下所示:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts
- 【Kafka十三】Kafka Simple Consumer
bit1129
simple
代码中关于Host和Port是割裂开的,这会导致单机环境下的伪分布式Kafka集群环境下,这个例子没法运行。
实际情况是需要将host和port绑定到一起,
package kafka.examples.lowlevel;
import kafka.api.FetchRequest;
import kafka.api.FetchRequestBuilder;
impo
- nodejs学习api
ronin47
nodejs api
NodeJS基础 什么是NodeJS
JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。
每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了docum
- java-64.寻找第N个丑数
bylijinnan
java
public class UglyNumber {
/**
* 64.查找第N个丑数
具体思路可参考 [url] http://zhedahht.blog.163.com/blog/static/2541117420094245366965/[/url]
*
题目:我们把只包含因子
2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14
- 二维数组(矩阵)对角线输出
bylijinnan
二维数组
/**
二维数组 对角线输出 两个方向
例如对于数组:
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 },
slash方向输出:
1
5 2
9 6 3
13 10 7 4
14 11 8
15 12
16
backslash输出:
4
3
- [JWFD开源工作流设计]工作流跳跃模式开发关键点(今日更新)
comsci
工作流
既然是做开源软件的,我们的宗旨就是给大家分享设计和代码,那么现在我就用很简单扼要的语言来透露这个跳跃模式的设计原理
大家如果用过JWFD的ARC-自动运行控制器,或者看过代码,应该知道在ARC算法模块中有一个函数叫做SAN(),这个函数就是ARC的核心控制器,要实现跳跃模式,在SAN函数中一定要对LN链表数据结构进行操作,首先写一段代码,把
- redis常见使用
cuityang
redis常见使用
redis 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets
引入jar包 jedis-2.1.0.jar (本文下方提供下载)
package redistest;
import redis.clients.jedis.Jedis;
public class Listtest
- 配置多个redis
dalan_123
redis
配置多个redis客户端
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&quo
- attrib命令
dcj3sjt126com
attr
attrib指令用于修改文件的属性.文件的常见属性有:只读.存档.隐藏和系统.
只读属性是指文件只可以做读的操作.不能对文件进行写的操作.就是文件的写保护.
存档属性是用来标记文件改动的.即在上一次备份后文件有所改动.一些备份软件在备份的时候会只去备份带有存档属性的文件.
- Yii使用公共函数
dcj3sjt126com
yii
在网站项目中,没必要把公用的函数写成一个工具类,有时候面向过程其实更方便。 在入口文件index.php里添加 require_once('protected/function.php'); 即可对其引用,成为公用的函数集合。 function.php如下:
<?php /** * This is the shortcut to D
- linux 系统资源的查看(free、uname、uptime、netstat)
eksliang
netstatlinux unamelinux uptimelinux free
linux 系统资源的查看
转载请出自出处:http://eksliang.iteye.com/blog/2167081
http://eksliang.iteye.com 一、free查看内存的使用情况
语法如下:
free [-b][-k][-m][-g] [-t]
参数含义
-b:直接输入free时,显示的单位是kb我们可以使用b(bytes),m
- JAVA的位操作符
greemranqq
位运算JAVA位移<<>>>
最近几种进制,加上各种位操作符,发现都比较模糊,不能完全掌握,这里就再熟悉熟悉。
1.按位操作符 :
按位操作符是用来操作基本数据类型中的单个bit,即二进制位,会对两个参数执行布尔代数运算,获得结果。
与(&)运算:
1&1 = 1, 1&0 = 0, 0&0 &
- Web前段学习网站
ihuning
Web
Web前段学习网站
菜鸟学习:http://www.w3cschool.cc/
JQuery中文网:http://www.jquerycn.cn/
内存溢出:http://outofmemory.cn/#csdn.blog
http://www.icoolxue.com/
http://www.jikexue
- 强强联合:FluxBB 作者加盟 Flarum
justjavac
r
原文:FluxBB Joins Forces With Flarum作者:Toby Zerner译文:强强联合:FluxBB 作者加盟 Flarum译者:justjavac
FluxBB 是一个快速、轻量级论坛软件,它的开发者是一名德国的 PHP 天才 Franz Liedke。FluxBB 的下一个版本(2.0)将被完全重写,并已经开发了一段时间。FluxBB 看起来非常有前途的,
- java统计在线人数(session存储信息的)
macroli
javaWeb
这篇日志是我写的第三次了 前两次都发布失败!郁闷极了!
由于在web开发中常常用到这一部分所以在此记录一下,呵呵,就到备忘录了!
我对于登录信息时使用session存储的,所以我这里是通过实现HttpSessionAttributeListener这个接口完成的。
1、实现接口类,在web.xml文件中配置监听类,从而可以使该类完成其工作。
public class Ses
- bootstrp carousel初体验 快速构建图片播放
qiaolevip
每天进步一点点学习永无止境bootstrap纵观千象
img{
border: 1px solid white;
box-shadow: 2px 2px 12px #333;
_width: expression(this.width > 600 ? "600px" : this.width + "px");
_height: expression(this.width &
- SparkSQL读取HBase数据,通过自定义外部数据源
superlxw1234
sparksparksqlsparksql读取hbasesparksql外部数据源
关键字:SparkSQL读取HBase、SparkSQL自定义外部数据源
前面文章介绍了SparSQL通过Hive操作HBase表。
SparkSQL从1.2开始支持自定义外部数据源(External DataSource),这样就可以通过API接口来实现自己的外部数据源。这里基于Spark1.4.0,简单介绍SparkSQL自定义外部数据源,访
- Spring Boot 1.3.0.M1发布
wiselyman
spring boot
Spring Boot 1.3.0.M1于6.12日发布,现在可以从Spring milestone repository下载。这个版本是基于Spring Framework 4.2.0.RC1,并在Spring Boot 1.2之上提供了大量的新特性improvements and new features。主要包含以下:
1.提供一个新的sprin