- 腾讯cos云存储
雄安白
pythondjango腾讯云
cos云存储授权问题报错callback内原本是SecurityToken修改为下方的XCosSecurityToken即可正确授权上传文件*腾讯cos存储官方varcos=newCOS({//getAuthorization必选参数getAuthorization:function(options,callback){//初始化时不会调用,只有调用cos方法(例如cos.putObject)时才
- drogon跨域问题和全局异常处理
zh7314
c++
2024年6月20日12:21:11在main.cc里加入/***全局异常处理*/drogon::app().setExceptionHandler([](conststd::exception&e,constdrogon::HttpRequestPtr&req,std::function&&callback){LOG_DEBUGdrogon::HttpResponsePtr{if(req->me
- 重生之我在异世界学编程之C语言:深入动态内存管理篇
就爱学编程
C语言c语言网络android
大家好,这里是小编的博客频道小编的博客:就爱学编程很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!!本文目录引言正文一动态内存管理的必要性二动态内存管理的关键函数1.`malloc`函数2.`calloc`函数3.`realloc`函数4.`free`函数三动态内存管理中的错误和最佳实践1.内存泄漏2.野指针3.内存越界四动态内存管理的高级主题内存分配器内存
- python封装程序Failed to execute script pyi_rth_multiprocessing错误
星烨无痕
pyinstaller封装程序机器学习人工智能python
我的python程序编写环境为win10、python3.8.6,打包成exe文件后,在win10中能正常打开,没有任何问题。将程序拷贝到另一台电脑,电脑使用的是win7系统,运行程序出现Failedtoexecutescriptpyi_rth_multiprocessing错误,错误显示如下:Traceback(mostrecentcalllast):File"C:\Users\wuhen\Ap
- python subprocess.run 详解
薇远镖局
Pythonpythonlinux
一、详解subprocess.run是Python3.5及以上版本中引入的一个函数,用于运行子进程。它是subprocess模块的一部分,提供了一种更简单和更强大的方式来创建和管理子进程。subprocess.run函数可以替代旧的os.system和subprocess.call等函数。以下是subprocess.run函数的详细解释:1.1、基本用法importsubprocessresult
- C#LINQ查询 - 分组依据
knight11112
linqc语言c#
C#LINQ查询-分组依据我很难理解如何构建LINQ查询来执行以下操作:我有一个CallLogs表,我希望得到一个结果,它代表持续时间最长的呼叫。该行如下所示:[ID][RemoteParty][持续时间]同一个RemoteParty可以有多个行,每个行代表一个特定持续时间的调用。我想知道哪个RemoteParty总持续时间最长。使用LINQ,我做到了这一点:varcallStats=(fromc
- 记录yolo v8模型训练后使用.pt模型推理正常 改用转换后的.onnx模型推理出现WARNING ⚠️ Unable to automatically guess model task, assu
YANGXUSHI520
问题相关YOLO深度学习人工智能
yolov8版本:‘8.0.228’出现错误:WARNING⚠️Unabletoautomaticallyguessmodeltask,assuming'task=detect'.Explicitlydefinetaskforyourmodel,i.e.'task=detect','segment','classify',or'pose'.解决办法:将训练出的模型名字best.pt修改为best-
- win32汇编环境,窗口程序中基础列表框的应用举例
一品人家
汇编
;运行效果;win32汇编环境,窗口程序中基础列表框的应用举例;比如在窗口程序中生成列表框,增加子项,删除某项,取得指定项内容等;直接抄进RadAsm可编译运行。重点部分加备注。;以下是ASM文件;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.386.modelflat,stdcalloptioncasem
- first parameter of redis.call/redis.pcall must be a single literal string
杨过姑父
redis数据库缓存
使用redission分布式锁的时候报错ERRbadluascriptforrediscluster,firstparameterofredis.call/redis.pcallmustbeasingleliteralstringorg.redisson.client.RedisException:ERRbadluascriptforrediscluster,firstparameterofred
- redis.call() 和 redis.pcall()
旅者随心
下面是来自官方文档的解释:原文http://www.redis.cn/commands/eval.htmlredis.call()和redis.pcall()的唯一区别在于它们对错误处理的不同。当redis.call()在执行命令的过程中发生错误时,脚本会停止执行,并返回一个脚本错误,错误的输出信息会说明错误造成的原因:>delfoo(integer)1>lpushfooa(integer)1>e
- Redis脚本全解
程序员Forlan
数据库luaredisjava
文章目录前言一、什么是Lua脚本二、为什么要用Lua脚本?三、如何正确使用?1、EVAL2、redis.call()和redis.pcall()区别3、编写脚本小结四、Lua脚本为什么能保证原子性?五、应用场景前言本文主要介绍我们为什么使用redis脚本,如何正确去使用,怎么保证原子性,具体的应用场景一、什么是Lua脚本Redis脚本使用Lua解释器来执行,所以我们一般叫Lua脚本Redis2.6
- aliyun redis lua脚本检测
lmsnice
redislua数据库
aliyun-redis:ERRbadluascriptforrediscluster,redis.call/pcall问题描述问题产生原因解决方法:官方文档问题描述使用redissonClient.getBucket(key).expire(expire,timeUnit);设置redis的某个key值的过期时间。发生报错如下:[ErrorEvent]Listentothe[HapiErrorE
- redis.call()和redis.pcall()的区别
荆州克莱
面试题汇总与解析springcloudspringbootspring技术css3
redis.call()与redis.pcall()很类似,他们唯一的区别是当redis命令执行结果返回错误时,redis.call()将返回给调用者一个错误,而redis.pcall()会将捕获的错误以Lua表的形式返回redis.call()和redis.pcall()两个函数的参数可以是任意的Redis命令:eval"returnredis.call('set','foo','bar')"0
- 《计算机组成及汇编语言原理》阅读笔记:p160-p176
python
《计算机组成及汇编语言原理》学习第12天,p160-p176总结,总计17页。一、技术总结1.PowerPC(1)programmingmodel(mode)Asinmostmoderncomputers,thereareatleasttwoseparateviewsofthesystem(formallycalledprogrammingmodels,alsooftencalledprogram
- 《计算机组成及汇编语言原理》阅读笔记:p133-p159
python
《计算机组成及汇编语言原理》学习第11天,p133-p159总结,总计27页。一、技术总结1.segment(1)定义Broadlyspeaking,acontiguoussectionofmemory.Morespecifically,asectionofmemoryreferencedbyoneofthesegmentregistersofthe80x86family.Thememoryoft
- Callable接口
難釋懷
java
Callable是Java5引入的一个接口,位于java.util.concurrent包中。它类似于Runnable接口,但提供了更强大的功能。主要区别在于:Callable的call()方法可以返回一个结果,并且可以抛出异常。Callable需要与Future和ExecutorService结合使用来获取执行结果。通过Callable接口,我们可以创建异步任务,这些任务能够在后台线程池中执行,
- 面试官桀桀一笑:请手写一个Promise.all(判断是不是Promise、js抛出错误)
前言本文如标题,回顾三个知识点判断是不是Promisejs抛出错误的类型手写Promise.all判断是不是Promise方式一Object.prototype.toString.call代码如下://p存在,且对象原型上是PromisefunctionisPromise(p){returnp&&Object.prototype.toString.call(p)==="[objectPromise
- c++单例设计模式
一定会升职加薪
设计模式c++设计模式
文章目录1.单例模式2.饿汉模式3.懒汉模式(线程安全,加锁)4.懒汉模式(c++11线程安全:call_once)1.单例模式单例模式有两种1.1懒汉模式(线程不安全)需要用到对象的时候才开始创建,多个线程调用的时候可能会创建多个对象1.2饿汉模式(线程安全)一开始就创建一个对象将构造函数私有化,不允许外部构造,声明一个静态的类指针,和静态的getInstance()函数,通过域名调用getIn
- 用Proxy实现watch监听对象、用Proxy代理函数可添加额外逻辑
vue3javascript
使用Proxy实现watch监听对象手写一个简单的watch函数用来监听某个数据的变化,比如Object我们来写一个简单的形式的watch形式:watch(target,(newVal,oldVal)=>{})target表示监听的对象,newVal,oldVal自然就是新值和旧值如下完整代码:Document变化functionwatch(target,callback){letoldObj=J
- 《CPython Internals》阅读笔记:p97-p117
python
《CPythonInternals》学习第7天,p97-p117总结,总计21页。一、技术总结1.词法分析(lexicalanalysis)根据《Compilers-Principles,Techniques,andTools》(《编译原理》第2版)第5页:Thefirstphaseofacompileriscalledlexicalanalysisorscanning.Thelexcicalan
- 我不是网管 - Shell 脚本中函数的使用
shell
函数是一个可重用的代码块。我们经常把重复的代码放入一个函数中,并从不同的地方调用该函数,库是函数的集合。我们可以在库中定义常用的函数,其他脚本可以使用它们而无需复制代码。Callingfunction在Shell中,调用函数和调用其他命令完全相同。例如,如果你的函数名是my_func,那么它可以像下面这样执行。$my_func如果函数接受参数,则可以从命令行提供这些参数,如下所示:$my_func
- 怎么做才能真正限制塑料袋的使用?
BalNews
Environmentalpollutionisalwaysamajorlivelihoodissue.Morethanadecadeago,ourgovernmenthadintroducedapolicyaboutrestrictionsontheuseofplasticbags,wecallitrestrictionsontheuseofplasticbags.Butmorethan10ye
- Day_11
ROC_bird..
算法
面试题16.15.珠玑妙算-力扣(LeetCode)/***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*///下标和对应位置的值都一样,answer[0]+1,对应位置的值猜对了,但是下标不对,answer[1]+1int*masterMind(char*solution,char*guess,int*returnSiz
- 《Veronika decides to die》
Ooutstanding
Whatismadness?——Madnessistheinabilitytocommunicate.Betweennormalityandmadness,whicharebasicallythesamething,thereexistsanintermediarystage:itiscalled"beingdifferent."Andpeoplewerebecomingmoreandmoreaf
- IO虚拟化 - virtio-vring的三个组成结构【转】
xidianjiapei001
#虚拟化技术
1.初始化三个结构vring_new_virtqueue函数中初始化virtqueue的各种字段的初始值vq->vq.callback=callback;vq->vq.vdev=vdev;vq->vq.name=name;vq->notify=notify;vq->broken=false;vq->last_used_idx=0;vq->num_added=0;list_add_tail(&vq-
- 前端知识点
ZhangTao_zata
前端javascriptcss
下面是一个最基本的html代码body{font-family:Arial,sans-serif;margin:20px;}//JavaScriptfunctionthatdisplaysanalertwhencalledfunctionshowMessage(){alert("Hello!Youclickedthebutton.");}MyFirstHTMLPageWelcometoMyPage
- 单线程执行器(`SingleThreadedExecutor`)来处理节点的任务
课堂随想
moveit2机器人
intmain(intargc,char**argv){rclcpp::init(argc,argv);rclcpp::NodeOptionsnode_options;node_options.automatically_declare_parameters_from_overrides(true);automove_group_node=rclcpp::Node::make_shared("mo
- 深入理解LangChain中的Callback机制:如何为Runnable添加回调函数
aehrutktrjk
langchainpython
深入理解LangChain中的Callback机制:如何为Runnable添加回调函数引言在LangChain中,回调(Callbacks)是一种强大的机制,允许开发者在运行过程中监控和干预各种操作。本文将深入探讨如何为Runnable对象添加回调函数,这对于调试、日志记录和性能监控等任务至关重要。我们将通过实际的代码示例来演示这一过程,并讨论一些常见的应用场景和最佳实践。理解Callback机制
- SIP ACK method
modem协议笔记
IMS5G网络智能手机
SIPACK同样在RFC3261中定义。ACK仅仅用于对INVITErequest的response的回复,例如在通话结束时,MO要断开连接,此时就会生成一条BYE消息。BYE不会经过代理,而是直接路由到MT。MT通过200(OK)响应确认收到BYE,然后就会终止该session和BYEtransaction,此时就不会有ACK发送。在构造的ACKrequest时,ACK必须包含Call-ID、F
- JavaScript 基础 - 第15天
+码农快讯+
JavaScript学习笔记javascript前端开发语言
文章目录JavaScript基础-第15天深浅拷贝浅拷贝深拷贝通过JSON序列化实现js库lodash实现深拷贝通过递归实现深拷贝异常处理throwtry...catchdebugger处理this改变thiscallapplybindthis指向性能优化防抖(debounce)手写防抖函数节流(throttle)手写节流函数JavaScript基础-第15天深浅拷贝浅拷贝浅拷贝:把对象拷贝给一个
- 开发者关心的那些事
圣子足道
ios游戏编程apple支付
我要在app里添加IAP,必须要注册自己的产品标识符(product identifiers)。产品标识符是什么?
产品标识符(Product Identifiers)是一串字符串,它用来识别你在应用内贩卖的每件商品。App Store用产品标识符来检索产品信息,标识符只能包含大小写字母(A-Z)、数字(0-9)、下划线(-)、以及圆点(.)。你可以任意排列这些元素,但我们建议你创建标识符时使用
- 负载均衡器技术Nginx和F5的优缺点对比
bijian1013
nginxF5
对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器。
目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、更高
- LeetCode[Math] - #9 Palindrome Number
Cwind
javaAlgorithm题解LeetCodeMath
原题链接:#9 Palindrome Number
要求:
判断一个整数是否是回文数,不要使用额外的存储空间
难度:简单
分析:
题目限制不允许使用额外的存储空间应指不允许使用O(n)的内存空间,O(1)的内存用于存储中间结果是可以接受的。于是考虑将该整型数反转,然后与原数字进行比较。
注:没有看到有关负数是否可以是回文数的明确结论,例如
- 画图板的基本实现
15700786134
画图板
要实现画图板的基本功能,除了在qq登陆界面中用到的组件和方法外,还需要添加鼠标监听器,和接口实现。
首先,需要显示一个JFrame界面:
public class DrameFrame extends JFrame { //显示
- linux的ps命令
被触发
linux
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行
- Android 音乐播放器 下一曲 连续跳几首歌
肆无忌惮_
android
最近在写安卓音乐播放器的时候遇到个问题。在MediaPlayer播放结束时会回调
player.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
Log.i("H
- java导出txt文件的例子
知了ing
javaservlet
代码很简单就一个servlet,如下:
package com.eastcom.servlet;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.Resu
- Scala stack试玩, 提高第三方依赖下载速度
矮蛋蛋
scalasbt
原文地址:
http://segmentfault.com/a/1190000002894524
sbt下载速度实在是惨不忍睹, 需要做些配置优化
下载typesafe离线包, 保存为ivy本地库
wget http://downloads.typesafe.com/typesafe-activator/1.3.4/typesafe-activator-1.3.4.zip
解压r
- phantomjs安装(linux,附带环境变量设置) ,以及casperjs安装。
alleni123
linuxspider
1. 首先从官网
http://phantomjs.org/下载phantomjs压缩包,解压缩到/root/phantomjs文件夹。
2. 安装依赖
sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
3. 配置环境变量
vi /etc/profil
- JAVA IO FileInputStream和FileOutputStream,字节流的打包输出
百合不是茶
java核心思想JAVA IO操作字节流
在程序设计语言中,数据的保存是基本,如果某程序语言不能保存数据那么该语言是不可能存在的,JAVA是当今最流行的面向对象设计语言之一,在保存数据中也有自己独特的一面,字节流和字符流
1,字节流是由字节构成的,字符流是由字符构成的 字节流和字符流都是继承的InputStream和OutPutStream ,java中两种最基本的就是字节流和字符流
类 FileInputStream
- Spring基础实例(依赖注入和控制反转)
bijian1013
spring
前提条件:在http://www.springsource.org/download网站上下载Spring框架,并将spring.jar、log4j-1.2.15.jar、commons-logging.jar加载至工程1.武器接口
package com.bijian.spring.base3;
public interface Weapon {
void kil
- HR看重的十大技能
bijian1013
提升能力HR成长
一个人掌握何种技能取决于他的兴趣、能力和聪明程度,也取决于他所能支配的资源以及制定的事业目标,拥有过硬技能的人有更多的工作机会。但是,由于经济发展前景不确定,掌握对你的事业有所帮助的技能显得尤为重要。以下是最受雇主欢迎的十种技能。 一、解决问题的能力 每天,我们都要在生活和工作中解决一些综合性的问题。那些能够发现问题、解决问题并迅速作出有效决
- 【Thrift一】Thrift编译安装
bit1129
thrift
什么是Thrift
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and s
- 【Avro三】Hadoop MapReduce读写Avro文件
bit1129
mapreduce
Avro是Doug Cutting(此人绝对是神一般的存在)牵头开发的。 开发之初就是围绕着完善Hadoop生态系统的数据处理而开展的(使用Avro作为Hadoop MapReduce需要处理数据序列化和反序列化的场景),因此Hadoop MapReduce集成Avro也就是自然而然的事情。
这个例子是一个简单的Hadoop MapReduce读取Avro格式的源文件进行计数统计,然后将计算结果
- nginx定制500,502,503,504页面
ronin47
nginx 错误显示
server {
listen 80;
error_page 500/500.html;
error_page 502/502.html;
error_page 503/503.html;
error_page 504/504.html;
location /test {return502;}}
配置很简单,和配
- java-1.二叉查找树转为双向链表
bylijinnan
二叉查找树
import java.util.ArrayList;
import java.util.List;
public class BSTreeToLinkedList {
/*
把二元查找树转变成排序的双向链表
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ \
6 14
/ \
- Netty源码学习-HTTP-tunnel
bylijinnan
javanetty
Netty关于HTTP tunnel的说明:
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/socket/http/package-summary.html#package_description
这个说明有点太简略了
一个完整的例子在这里:
https://github.com/bylijinnan
- JSONUtil.serialize(map)和JSON.toJSONString(map)的区别
coder_xpf
jqueryjsonmapval()
JSONUtil.serialize(map)和JSON.toJSONString(map)的区别
数据库查询出来的map有一个字段为空
通过System.out.println()输出 JSONUtil.serialize(map): {"one":"1","two":"nul
- Hibernate缓存总结
cuishikuan
开源sshjavawebhibernate缓存三大框架
一、为什么要用Hibernate缓存?
Hibernate是一个持久层框架,经常访问物理数据库。
为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。
缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
二、Hibernate缓存原理是怎样的?
Hibernate缓存包括两大类:Hib
- CentOs6
dalan_123
centos
首先su - 切换到root下面1、首先要先安装GCC GCC-C++ Openssl等以来模块:yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel2、再安装ncurses模块yum -y install ncurses-develyum install ncurses-devel3、下载Erang
- 10款用 jquery 实现滚动条至页面底端自动加载数据效果
dcj3sjt126com
JavaScript
无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的结果,改变了一直以来只能通过点击下一页来翻页这种常规做法。
无限滚动自动翻页技术的鼻祖是微博的先驱:推特(twitter),后来必应图片搜索、谷歌图片搜索、google reader、箱包批发网等纷纷抄袭了这一项技术,于是靠滚动浏览器滚动条
- ImageButton去边框&Button或者ImageButton的背景透明
dcj3sjt126com
imagebutton
在ImageButton中载入图片后,很多人会觉得有图片周围的白边会影响到美观,其实解决这个问题有两种方法
一种方法是将ImageButton的背景改为所需要的图片。如:android:background="@drawable/XXX"
第二种方法就是将ImageButton背景改为透明,这个方法更常用
在XML里;
<ImageBut
- JSP之c:foreach
eksliang
jspforearch
原文出自:http://www.cnblogs.com/draem0507/archive/2012/09/24/2699745.html
<c:forEach>标签用于通用数据循环,它有以下属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 开始条件 否 0 end 结束条件 否 集合中的最后一个项目 step 步长 否 1
- Android实现主动连接蓝牙耳机
gqdy365
android
在Android程序中可以实现自动扫描蓝牙、配对蓝牙、建立数据通道。蓝牙分不同类型,这篇文字只讨论如何与蓝牙耳机连接。
大致可以分三步:
一、扫描蓝牙设备:
1、注册并监听广播:
BluetoothAdapter.ACTION_DISCOVERY_STARTED
BluetoothDevice.ACTION_FOUND
BluetoothAdapter.ACTION_DIS
- android学习轨迹之四:org.json.JSONException: No value for
hyz301
json
org.json.JSONException: No value for items
在JSON解析中会遇到一种错误,很常见的错误
06-21 12:19:08.714 2098-2127/com.jikexueyuan.secret I/System.out﹕ Result:{"status":1,"page":1,&
- 干货分享:从零开始学编程 系列汇总
justjavac
编程
程序员总爱重新发明轮子,于是做了要给轮子汇总。
从零开始写个编译器吧系列 (知乎专栏)
从零开始写一个简单的操作系统 (伯乐在线)
从零开始写JavaScript框架 (图灵社区)
从零开始写jQuery框架 (蓝色理想 )
从零开始nodejs系列文章 (粉丝日志)
从零开始编写网络游戏 
- jquery-autocomplete 使用手册
macroli
jqueryAjax脚本
jquery-autocomplete学习
一、用前必备
官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
当前版本:1.1
需要JQuery版本:1.2.6
二、使用
<script src="./jquery-1.3.2.js" type="text/ja
- PLSQL-Developer或者Navicat等工具连接远程oracle数据库的详细配置以及数据库编码的修改
超声波
oracleplsql
在服务器上将Oracle安装好之后接下来要做的就是通过本地机器来远程连接服务器端的oracle数据库,常用的客户端连接工具就是PLSQL-Developer或者Navicat这些工具了。刚开始也是各种报错,什么TNS:no listener;TNS:lost connection;TNS:target hosts...花了一天的时间终于让PLSQL-Developer和Navicat等这些客户
- 数据仓库数据模型之:极限存储--历史拉链表
superlxw1234
极限存储数据仓库数据模型拉链历史表
在数据仓库的数据模型设计过程中,经常会遇到这样的需求:
1. 数据量比较大; 2. 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等; 3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态, 比如,查看某一个用户在过去某一段时间内,更新过几次等等; 4. 变化的比例和频率不是很大,比如,总共有10
- 10点睛Spring MVC4.1-全局异常处理
wiselyman
spring mvc
10.1 全局异常处理
使用@ControllerAdvice注解来实现全局异常处理;
使用@ControllerAdvice的属性缩小处理范围
10.2 演示
演示控制器
package com.wisely.web;
import org.springframework.stereotype.Controller;
import org.spring