- Java 企业级 Jakarta EE 11 发布
ejinxian
Javajava开发语言JakartaEE11javaEE11
标志着企业级Java在简化开发、提升开发人员生产力和整体性能方面的进步。主要亮点包括:现代化的测试兼容性工具包(TCK)、全新JakartaData规范的引入、对现有规范的重大更新以及对最新JavaLTS版本的支持,使开发人员能够充分利用Java21中的增强功能,包括虚拟线程JakartaData在简化企业应用程序持久化逻辑方面迈出了重要一步。主要功能包括:BasicRepository:基础存储
- git本地裸仓库的“激活”:在同一台 Linux 服务器上创建工作区
运维开发王义杰
系统运维软件工具服务器gitlinux
大家好!在之前的文章中,我们探讨了Git裸仓库(BareRepository)的概念,它是没有工作目录,只包含.git目录内容的特殊仓库格式,非常适合作为中心化的代码集散地或备份。我们也了解了gitclone--mirror命令会生成这样的裸仓库。现在,假设我们已经在Linux服务器上的/data/gitlab/cex-cicd/pipeline.git路径下拥有一个这样的裸仓库(之前备份或创建的
- ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repo
youyu-youyu
githubgit
问题描述:在使用Git将本地仓库推送到远程仓库的时候,发生了如下错误:“fatal:Couldnotreadfromremoterepository.”1、首先输入以下命令检查SSH是否能够连接成功(ssh后面有空格)
[email protected]发现报错:端口连接超时。ssh:connecttohostgithub.comport22:Connectiontimedout解决方案(亲测有
- maven项目导入本地依赖jar包
Focusty
mavenjar
项目场景:maven项目导入本地依赖jar包问题描述在开发过程中已有的maven库没有需要的依赖,在链接:https://mvnrepository.com/中下载对应依赖的jar包到本地后进行导入。解决方案:1、确定电脑是否配置maven环境变量,cmd进入命令行窗口,使用命令"mvn-v"查看是否正确返回maven的版本信息。2、如果返回了maven的版本信息说明maven的环境变量配置好了,
- Domain 层完全指南(面向 iOS 开发者)
依旧风轻
AppArchitectureSQIiOSDomainEntity
目录为什么需要Domain层清晰的三层架构核心概念:Entity/ValueObject/UseCase/RepositorySwift代码实战测试策略在旧项目中落地的步骤结语1为什么需要Domain层在传统MVC/MVVM中,我们往往把业务规则写进ViewController或ViewModel。问题随规模放大而爆发:痛点具体表现可测试性差单元测试必须启动UIKit,跑真机或模拟器业务难复用同样
- 【.net core】【sqlsugar】在where条件查询时使用原生SQL
MoFe1
.netcoresql数据库
//初始化查询varquery=repository.IQueryable();//添加原生SQLWHERE条件query=query.Where("fieldAWhere(stringwhereString,objectparameters=null);
- Sonatype Nexus3安装配置及使用
無法複制
nexus
1、简介SonatypeNexusRepositoryManager是一款强大的仓库管理工具,用于存储、管理和发布软件组件。它能够支持多种格式的仓库,如Maven、npm、Docker等。在企业开发中,私有Maven仓库常用于存储自定义依赖和发布组件,确保代码安全性和内部共享。本文将从服务器环境搭建、Nexus安装与配置、仓库创建、依赖上传,再到Maven项目中使用私有仓库的全过程,帮助你掌握如何
- Springboot --- 整合spring-data-jpa和spring-data-elasticsearch
百世经纶『一页書』
SpringbootJavaspringboot
Springboot---整合spring-data-jpa和spring-data-elasticsearch1.依赖2.配置文件3.代码部分3.1Entity3.2Repository3.3Config3.4Service3.5启动类3.6Test3.7项目结构SpringBoot:整合Ldap.SpringBoot:整合SpringDataJPA.SpringBoot:整合Elasticse
- java aspose.words_Aspose.Words for java 示例
PraiseSunMan
javaaspose.words
安装Aspose.Words.jdk16.jar到本地mavenrepository:mvninstall:install-file-Dfile=Aspose.Words.jdk16.jar-DgroupId=com.aspose-DartifactId=aspose-words-Dversion=13.9.0.0-Dpackaging=jarpom.xml文件中依赖:com.asposeaspo
- Rust 服务端项目分层结构
幺零九零零
rust开发语言后端
DDDsrc/├──main.rs#程序入口,负责启动和依赖注入├──lib.rs#公共库入口,便于单元测试和复用├──config.rs#配置管理(如数据库、端口、环境变量等)├──entities/#数据库实体(ORM模型)│├──mod.rs│└──user.rs├──schema.rs#数据库表结构(如diesel/sea-orm生成)├──repository/#数据访问层(Reposi
- 2.深入剖析:Spring 中如何巧妙玩转依赖注入的多种方式
代码世界的浪客
springjava
一、构造函数注入的深入剖析1.严格的依赖初始化构造函数注入使得依赖关系在对象创建时就被严格初始化。这符合面向对象编程中对象的不变性原则,一旦对象创建完成,其依赖关系就不会再改变。这对于一些需要保证数据一致性和安全性的场景非常重要。例如,在金融系统中,账户服务类AccountService依赖于账户存储库AccountRepository,使用构造函数注入可以确保在AccountService实例创
- DDD架构实战 充血模型 电商订单
我是Dduo不是dduo
web后端开发#SpringBoot#分布式与微服务java微服务开发语言责任链模式缓存链表jvm
目录一、充血模型的核心概念1.领域对象的职责2.领域层的核心地位二、充血模型的特点1.以领域为中心的设计2.强封装性3.支持复杂业务逻辑4.便于领域知识传递三、充血模型的优势四、充血模型的实现要点1.明确实体与值对象2.领域服务的定位3.领域事件的应用4.仓储模式(Repository)五、充血模型vs.贫血模型六、充血模型的应用挑战七、充血模型的典型应用场景总结代码示例在领域驱动设计(DDD)架
- Git 使用手册:从入门到精通
蒂法就是我
git大数据
git高速下载一、Git核心概念1.三个工作区域gitaddgitcommitgitpushgitpull工作目录WorkingDirectory暂存区StagingArea本地仓库LocalRepository远程仓库RemoteRepository2.文件生命周期新文件gitaddgitcommit编辑文件gitaddgitaddgitrmUntrackedStagedUnmodifiedMo
- Ubuntu18.04全命令行在3090显卡上安装pytorch环境
镜中隐
深度学习pytorch深度学习3090全命令行安装ubuntu18.04
1.3090驱动安装:sudoadd-apt-repositoryppa:graphics-drivers/ppasudoaptupdatesudoaptinstallnvidia-driver-470sudoaptautoremovexserver-xorgsudoaptautoremove--purgexserver-xorgsudoapt-markholdnvidia-driver-470#
- android gradle的优化
安卓程序员_谢伟光
android
在setting.gradle.kts配置google()maven("https://maven.aliyun.com/repository/google")//官方MavenCentral,最通用mavenCentral()//特殊仓库(4thline,Cling用)maven{url=uri("http://4thline.org/m2")isAllowInsecureProtocol=tr
- Docker
YUNYINGXIA
云原生docker
目录一、Docker概述1.1Docker的定义与核心价值1.2容器技术与传统虚拟化的对比1.3Docker的三大核心概念(1)镜像(Image)(2)容器(Container)(3)仓库(Repository)1.4Docker的应用场景二、Docker环境部署(CentOS系统)2.1安装前的准备工作(1)关闭系统防火墙与SELinux(2)配置Docker软件源2.2安装DockerCE2.
- 容器技术技术入门与 Docker 环境部署
眠修
docker容器运维
目录一:Docker概述1、Docker的优势:(1)环境一致性(2)隔离性(3)资源高效(4)便捷性和可扩展性2、Docker容器与传统虚拟机的区别3、Docker的应用场景4、Docker核心(1)镜像(Image)(2)容器(Container)(3)仓库(Repository)二:Docker安装1:本安装方式使用阿里的软件仓库(1)关闭系统防火墙(2)下载Docker的repo文件(3)
- maven配置两个远程仓库源,第一个获取不到,去第二个源下载
缺的不是资料,是学习的心
mavenjavaintellij-idea
maven配置多个镜像是无用的,默认只会从第一个有效镜像搜索包,当找不到依赖时候就会报错,而这我们可以配置先去阿里maven仓库寻找,找不到然后再去maven官方仓库寻找,关于这个策略如何配置,可以查看下面的,拷贝着去修改maven的setting.xml文件myRepository1myRepository1_1http://maven.aliyun.com/nexus/content/grou
- Spring框架中接口需要添加注解吗?
在Spring框架中,接口本身不需要也不能添加@Component或其他Spring的Bean注册注解(如@Service,@Repository,@Controller)来放入IoC容器。原因很直接:接口不能被实例化!SpringIoC容器管理的是对象实例(Bean),而接口只是一个抽象契约,它本身不能被创建成一个具体的对象。核心原则:Spring管理的是实现类的实例:你需要将实现了接口的具体类
- windows,java后端开发常用软件的下载,使用配置
com-ing
windows
以下软件尽量从官网下载,流程为:确定版本下载->配置环境变量->修改配置文件->启动版本选择的话,可参考阿里巴巴和apache官网推荐。1.idea,jdk,maven,MySQL,tomcat官网下载maven3.3.9的setting.xml配置阿里云仓库,jdk1.8,根据需求自己改mirrorIdrepositoryIdHumanReadableNameforthisMirror.http
- `Could not find artifact...`等Maven 依赖问题排查终极指南 (SOP)
三无少女指南
mavenjava
我们在执行mvncleancompile时经常会被Couldnotfindartifact…:Non-resolvableparentPOM…:‘dependencies.dependency.version’…ismissing:…wascachedinthelocalrepository…:等爆红烦恼,本文的定位是一站式解决maven爆红问题,出现爆红参考本文即可游刃有余核心原则:理解Mave
- AI博客搭建实战指南
钟炯默
AI博客搭建实战指南AI-blogAccompanyingrepositoryforLet'smakeaDQN/A3Cseries.项目地址:https://gitcode.com/gh_mirrors/ai/AI-blog项目介绍AI博客是由Jaromiru开发的一个开源项目,旨在提供一个简单易用的平台,让技术爱好者能够轻松分享他们在人工智能领域的洞见和实验。这个项目基于GitHubPages,
- Docker 安装oracle11g 手把手详细教程
一、在线拉去镜像因为镜像比较大,所以请划水等拉去好命令:dockerpullregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g查看拉去好的镜像:最新版本6.85GB[root@syf~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEdockertest1.07f4faa2061719monthsago7
- 注入Java Bean的方式
后端java
SpringBoot中注入Bean的常见方式如下,每种方式适用于不同的场景:@Autowired注解(字段注入)说明:按类型自动装配,可作用于构造器、Setter方法、字段或普通方法。场景:大多数情况下的依赖注入。示例:java体验AI代码助手代码解读复制代码@ServicepublicclassMyService{@Autowired//字段注入privateMyRepositoryreposi
- Ubuntu22.04.5 桌面版然后安装 VMware 17
爱辉弟啦
linux运维运维linuxUbuntuVMware
安装VMware需要GCC12版本标题通过PPA安装这是最简单的方法,适用于大多数Ubuntu版本。步骤1:添加PPA仓库sudoaptupdatesudoaptinstallsoftware-properties-commonsudoadd-apt-repositoryppa:ubuntu-toolchain-r/testsudoaptupdate安装GCC12sudoaptinstallgcc
- hadoop yarn 获取日志_Hadoop YARN日志查看方式
weixin_30131105
hadoopyarn获取日志
HadoopYARN日志查看方式实验环境CDH6.3.2Hadoop版本$hadoopversionHadoop3.0.0-cdh6.3.2Sourcecoderepositoryhttp://github.com/cloudera/hadoop-r9aff20de3b5ecccf3c19d57f71b214fb4d37ee89Compiledbyjenkinson2019-11-08T13:49
- JPA Hibernate直接执行sql 转换成dto AliasToEntityMapResultTransformer
有答案直接发给我
hibernatesql
前言公司中有一个老的项目使用了JPA+Hibernate框架,在接触了这个项目之后我的感受就是异常难用(o(╥﹏╥)o),相对于目前主流使用的Mybatis框架,在使用这种框架的项目中查询数据库有以下几种方式:使用JpaRepository映射实体类和表。@Repository@Transactional(rollbackFor=Exception.class)publicinterfaceOrd
- CentOS7报错:Cannot find a valid baseurl for repo: base/7/x86_64
这个错误通常出现在CentOS/RHEL7系统中,当你尝试运行yumupdate或yuminstall时,系统无法连接到默认的软件仓库(repository)。可能的原因网络连接问题:系统无法访问互联网或仓库服务器。错误的仓库配置:/etc/yum.repos.d/下的.repo文件可能配置错误。仓库服务器不可用:官方仓库可能已迁移或停止支持(如CentOS7已进入EOL)。DNS解析问题:系统无
- springboot项目--数据库配置(使用JpaRepository进行增删改查)(1)
2301_79987255
程序员springboot数据库后端
CREATETABLEproduct_category(category_idintnotnullAUTO_INCREMENT,category_namevarchar(64)notnullcomment’类目名字’,category_typedecimal(8,2)notnullcomment’类目编号’,create_timetimestampnotnulldefaultcurrent_tim
- maven打包或者install的时候,总是不走本地依赖的原因排查
骆子无悔
mavenjava
1、检查idea的setting配置是否正确指向2、检查setting的mirro是不是拦截了所有的jar包指向,要么修改拦截范围要么直接删除3、检查setting的localRepository是没有配置(这个最重要,没配置的话将导致maven到爆的时候总是以项目目录作为依赖仓库的位置导致一直去远程下载)
- 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