- centOS 安装和配置docker
LCY133
centosdockerlinux
以下是在CentOS系统上安装和配置Docker的详细步骤:一、安装Docker1.卸载旧版本(如有)sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine2.安装依赖工具sudo
- 海康卫视摄像头yolo检测,转换gps,用高德api借口显示点
xxxy502
无人驾驶海康威视yolo检测转gps
直接上代码和效果图,因为用了高德的api接口,无法达到实时性importsysimportargparsefromyolo_xieimportYOLO,detect_videofromPILimportImageimportcv2importosimporttimeimportnumpyasnpfromdatetimeimportdatetimeimportmathimportglobimport
- iperf
xiaofeilongyu
linux工具bashlinux网络网络协议服务器运维
iperf3测试1、iperf3简介iperf3是一个主动测试网络带宽的工具,可以测试iTCP、UDP、SCTP等网络带宽;可以通过参数修改网络协议、缓冲区、测试时间、数据大小等,每个测试结果会得出吞吐量、带宽、重传数、丢包数等测试结果2、参数详解通用参数:-v,--version,显示版本信息并退出;-p,--port#,Server端监听、Client端连接的端口号;-f,--format[k
- Python连接海康摄像头并获取摄像头信息
笑看人生163
python开发语言
安装海康摄像头插件hikvisionapipipinstallhikvisionapi使用海康插件连接摄像头,并且获取设备信息fromhikvisionapiimportClientclient=Client('http://192.168.0.1',login='admin',password='password')response=client.System.deviceInfo(method
- python面向对象
你如同氧气
python开发语言
今天是python面向对象。面向对象编程(Object-OrientedProgramming,简称OOP)是一种程序设计的范式,它以对象作为基本单元,通过封装、继承和多态等概念来组织代码和数据。Python是一门支持面向对象编程的语言,下面我会介绍Python中面向对象编程的基本概念和用法。基本概念在Python中,面向对象编程的核心概念包括:类(Class):类是对象的抽象,用来定义对象的行为
- python网络爬虫练习_《零基础:21天搞定Python分布爬虫》练习-古诗文网
weixin_39953244
python网络爬虫练习
importrequestsimportredefmain():url='https://www.gushiwen.org/default_1.aspx'headers={"user-agent":"Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36
- 利用MQTT协议实现Arduino与onenet测温湿度
Tenderness*
物联网ESP32单片机嵌入式硬件
一、代码根据实际情况,对WIFI的名称,密码进行修改,onenet的端口号与IP地址不必修改,设备id,产品id,鉴权信息通过onenet平台获取#include#include"DHT.h"#include"PubSubClient.h"#include"Ticker.h"#defineDHTPIN21//`#defineDHTTYPEDHT11//DHT11DHTdht(DHTPIN,DHT1
- 彗星http_彗星介绍
cuyi7076
pythonjavaajaxlinuxweb
彗星http在过去的几年中,Web开发有了长足的发展。我们超越了链接在一起的静态网页,这导致浏览器刷新并等待页面加载。现在,需求是可以从Web访问的完全动态的应用程序。这些应用程序通常需要尽可能快并提供几乎实时的组件。在这个由五部分组成的新系列中,学习如何使用反向Ajax技术开发事件驱动的Web应用程序。在第一篇文章中,了解反向Ajax,轮询,流,Comet和长轮询。了解如何实现不同的Revers
- AI Agent开发大全第二十二课-生产级全动态MCP代码长什么样?
TGITCIC
AIAgent开发大全mcpaimcp大模型mcpmcp协议mcp入门AIMCPmcp开发
开篇经过了之前两篇《如何开发一个MCP(从0开发一个MCPServer)》和《如何开发一个MCP(从0开发一个MCPClient)》我们掌握了MCPServer和MCPClient在生产环境即基于Http协议是如何搭建以及开发的原理以及全步骤和代码。但是我们留了一个疑问:那就是真正的MCP是在客户端一次开发到随时更换的,而不用像functionalcall或者是api那样每次服务端改了客户端也要改
- AI Agent开发大全第二十六课-再通过复杂案例来看MCP的“热插拨”机制及应用场景如何
TGITCIC
AIAgent开发大全MCP大模型MCPaimcpMCP协议DeepSeekMCP是什么MCP入门
开篇在上一篇《AIAgent开发大全第二十二课-生产级全动态MCP代码长什么样?_tgitcicagent开发大全-CSDN博客》最后,我们留了一道作业:留一道课后作业为了加深影响我们留了一道课后作业:当前例子中的mcpserver和mcpclient是一个参数的输入的,如果mcpserver的tool有的是两个参数、有的是3个参数这个代码怎么改?这套MCP系列发表后无论是在微信还是消息里收到大量
- AI Agent开发大全第二十八课-MCP实现本地命令调用怎么做的?
TGITCIC
AIAgent开发大全MCP大模型MCPAIMCPMCP协议AIAgentMCP执行MCP如何执行
开篇MCP很强大,Client端一旦实现了稳定的连接和执行流程后任Server端随意改动都可兼容,这就是热插拨功能。如果我们仅仅满足于MCP查点网上资料、读点图片即文字型的功能肯定是不能充分发挥MCP的强大之处的,正应了Google以及Anthropic最近的研究报告上说的:不要再在chatbot上花力气了。当下的AIAgent特别是MCP以充当LLM的手和脚为趋势已经越来越多的在实际生活和工作中
- 解决jupyter Notebook打开空白及需要输入token的问题
kunkun_1230
jupyternotebookautocadpython计算机视觉
在调试代码的时候,一般我们会在Notebook中进行分步调试。今天在打开notebook的时候,显示是空白,而且点击new的时候没有出现已经安装的环境(此问题出现的前提是我的jupyternotebook默认由Chrome启动)进一步刷新后出现需要输入password或者token的页面查看了很多资料后,我基本把问题定位在了浏览器的cookies上,具体如何配置浏览器参考JupyterNotebo
- jupyter Notebook打开后浏览器页面空白解决办法
狂奔的 蜗牛
第一种方法(推荐):下载一个浏览器,卸载JupyterNotebook默认的浏览器。卸载后Jupyternotebook会自动进行选择默认浏览器。第二种方法卸载重新装Jupyternotebook.
- WebSocket与MQTT
、我是男生。
websocket网络协议网络
在物联网(IoT)领域,WebSocket和MQTT确实都可以实现实时通信,但它们的核心设计目标、适用场景和角色存在显著差异。以下是两者的对比分析:1.协议设计初衷WebSocket目标:提供浏览器与服务器之间的全双工实时通信(如网页聊天、实时游戏),解决HTTP轮询的低效问题。角色:一种通用的双向通信协议,不限定应用场景,适用于任何连接的场景。MQTT目标:专为物联网优化的轻量级消息传输协议,注
- Labview完全卸载方法
MCCBlog
labviewwindows
Windows系统通过控制面板进入卸载程序界面,找到NationalInstrumentsSoftware卸载,进入界面后全选后移除。最后卸载掉NIPackageManager。
- Android activity默认横屏设置
安卓兼职framework应用工程师
Android高级进阶app默认横屏设置默认横屏
在androidapp开发中,有些需求要求app页面默认横屏状态,但是如果在AndroidManifest.xml中设置方向设置android:screenOrientation=“landscape”属性,会把方向设置成固定横屏方向,不能旋转达不到要求,但是在查看Launcher3的系统源码的时候发现可以做到默认横屏,可以自动旋转,@OverrideprotectedvoidonResume()
- LabVIEW 控制电机需注意的关键问题
LabVIEW开发
LabVIEW知识LabVIEW知识LabVIEW功能
在自动化控制系统中,LabVIEW作为图形化编程平台,因其高度可视化、易于集成硬件等优势,被广泛应用于电机控制场景。然而,要实现稳定、精确、高效的电机控制,仅有软件并不足够,还需结合硬件选型、控制逻辑设计、程序架构、实时性保障和安全防护等多方面因素进行综合考量。本文将围绕这些关键问题展开系统分析,为LabVIEW开发者提供实用参考。硬件选型与连接电机类型适配LabVIEW控制电机前,需根据实际应用
- Chrome浏览器和Microsoft Edge浏览器的导出收藏链接
一勺-_-
chromeedge前端
Chrome浏览器导出收藏链接1.在地址栏里输入:chrome://bookmarks/2.MicrosoftEdge浏览器导出收藏链接
- MongoTemplate批量操作以及nosuchmethoderror BulkOperations.execute()
唐家麦兜
JAVA数据库MongoDBjava
java中操作MongoDB最常见的就是MongoTemplate。接下记录写常见的基本操作:Springboot添加包:org.springframework.bootspring-boot-starter-data-mongodb注入@AutowiredprivateMongoTemplatemongoTemplate;1.添加。保存会判断存在,存在就会修改。如果不写collectname。会
- SpringBoot之OriginTrackedPropertiesLoader类源码学习
沉默的环海
SpringBootspringboot学习java
源码解析/***作用是从给定的资源(如文件或输入流)中加载.properties文件,*并将属性键值对转换为带有来源信息(origin)的OriginTrackedValue对象。*/publicclassOriginTrackedPropertiesLoader{privatefinalResourceresource;/***Createanew{@linkOriginTrackedPrope
- 关闭Mac 双指左右滚动功能(浏览器前进、后退丢失页面)
Lucky小黄人
macos
关闭所有浏览器的前进后退功能系统偏好设置=>触控板=>更多手势=>在页面之间轻扫取消勾选即可。如下图所示:仅关闭Chrome的前进后退功能如果是Chrome浏览器,还可以使用下面这份方法在终端输入执行下面两条命令,然后重启Chrome,需要注意的是Chrome重启需要完全退出程序再打开,可按⌘+Q键退出,仅仅关闭窗口是不行的。defaultswritecom.google.ChromeAppleE
- 如何使用git下载huggingface中的仓库和指定的大型文件
我就要七点起床
git
第一步:gitclonehttp://........下载整个文件,但是clone会忽略数个G的权重文件。第二步:安装lfs,如果已有lfs则只需要直接gitlfsinstall进行初始化curl-shttps://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh|sudobashsudoapt-getinstall
- Mac 关闭浏览器左右滑动切换页面的问题
唐家麦兜
macos
在使用触控板,操作浏览器时,左右滑动时,浏览器容易触发前进或者后退去查看历史记录。如何关闭呢?打开Mac-系统设置-触控板-更多手势将轻扫切换页面设置为关,就可以了
- Devops系列之对接Gerrit的设计与实现(三)-- Java编程实现
天草二十六_简村人
devopsjava运维后端开发语言微服务
一、背景上文讲述了如何使用shell命令实现创建gerrit项目,本文介绍如何使用java语言编程实现。二、java语言实现1、引入jar包com.urswolfer.gerrit.client.restgerrit-rest-java-client0.9.3核心类GroupApiRestClient.java2、配置project:gerrit:host:http://192.168.5.60:
- spark-submit 提交spark程序示例
probtions
spark大数据python
spark-submit\--masteryarn\--deploy-modeclient\--confspark.driver.maxResultSize=8g--confspark.driver.memory=8g\--confspark.executor.memory=16g\--confspark.debug.maxToStringFields=100\--conf"spark.yarn.
- spark-submit 任务提交过程分析
疯狂哈丘
spark大数据spark任务提交过程spark配置优先级
文章目录一、spark-submit脚本分析二、Main类的作用三、SparkSubmit类提交任务的过程如何和ResourceManger建立连接spark任务配置的优先级client模式的真正运行方式一、spark-submit脚本分析spark-submit的脚本内容很简单:#如果没设置SPARK_HOME的环境变量,调用find-spark-home文件寻找spark-homeif[-z"
- MySQL逻辑架构有什么?
严文文-Chris
数据库mysql架构数据库
1.MySQL逻辑架构分层MySQL的逻辑架构可分为三层(自上而下):连接层(ClientLayer)服务层(ServerLayer)存储引擎层(StorageEngineLayer)+-----------------------+|客户端工具|(如MySQLShell、JDBC)+-----------------------+↓+-----------------------+|连接层|(连
- 【智能合约】Solidity 进阶编程 | 注意一下合约中的细节
小生凡一
【区块链】实战100例比特币区块链编程语言solidity
目录1.内置的全局变量2.错误处理3.访问函数4.创建合约5.合约继承6.修饰器modifier最后补充知识:转账的话是与部署者无关,与交易者有关!gas是以太坊网络中的一个计量单位,是为了对算力消耗进行量化而设计的指标,也就是说有了gas这个计算单位,我们可以方便的计算出用户完成一笔交易需要支出多少gas费用,矿工完成一个区块的打包确认能收到多少gas报酬。1.内置的全局变量msg.sender
- solidity基础数据类型以及基础变量的讲解
破 风
区块链学习mysqlsql数据库
智能合约开发浏览器(初学者推荐使用):Remix-EthereumIDEint和uint的区别:int表示的是数据整数,而uint对应于无符号整数。internal可以在内部被调用,不能够在外部被调用,可以被继承external不能够在内部被调用,只能够在外部调用,可以被继承,如果强行调用,通过"地址."public权限最大,可以在外部内部调用,可以被继承pure不会读取全局变量,更不会修改全局变
- Django笔记——操作数据库(ORM)第四节
俺的图图呢?
Django数据库django笔记
Django学习之操作数据库操作数据库——ORM模型中的基本查询操作一、查询方法查询一般是使用filter、exclude、以及get三个方法来实现,我们可以在调用这些方法的时候传递不同的参数来实现查询需求。在ORM层面,这些查询条件都是使用field+__+condition的方式来使用的。注:__是两个下划线方法描述示例filter(*args,**kwargs)返回与查询条件匹配的对象集合。
- 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