- Linux驱动-字符设备驱动
Vis-Lin
Linux驱动linux驱动开发运维单片机物联网
Linux驱动-字符设备驱动前言一、预备知识1、file_operations结构体2、地址映射二、涉及的API函数1、字符设备驱动1.1、设备号1.1.1、register_chrdev_region函数1.1.2、alloc_chrdev_region函数1.1.3、unregister_chrdev_region函数1.2、字符设备1.2.1、cdev_init函数1.2.2、dev_add
- 【SpringCloud微服务实战10】DevOps自动化部署微服务项目(Jenkins+Docker+K8s)
李维山
Javaspringcloud微服务jenkinsdockerk8s
一、什么是DevOpsDevOps是一种重视软件开发人员(Developer)和运维人员(Operations)之间沟通与协作的文化、运动或实践,目标在于快速交付高质量的软件产品和服务。DevOps强调自动化流程、持续集成与交付(CI/CD)、以及通过工具链、敏捷方法论和跨职能团队协作来增强软件的可靠性和安全性。在DevOps中,开发、测试、部署和监控等多个环节紧密连接,形成一个高效的工作流。以下
- 【深入理解计算机系统】 三:布尔逻辑与组合电路
Geeksongs
javascriptvuejqueryjavaspringboot
4.1.BooleanExpressionsToday’sdigitalcircuitsarebuiltsothattheycanperformveryfastoperationsoverdatathatisencodedinbinary.TheunderlyingoperationsarepartofwhatisknownasBooleanAlgebra.Thisalgebraconsistso
- Stirling-PDF:基于Web的开源PDF处理工具
TYUT_xiaoming
pdf
PDF文件进行各种各样的操作,比如合并、拆分、加密、解密、旋转、压缩等等,功能超全,而且开源免费,简直是神器!GitHub-Stirling-Tools/Stirling-PDF:#1LocallyhostedwebapplicationthatallowsyoutoperformvariousoperationsonPDFfiles35.8Kstar!开源免费的本地PDF处理神器,真的太强了!
- DAG (directed acyclic graph) 作为大数据执行引擎的优点
joeywen
分布式计算StormSparkStorm杂谈StormsparkDAG
TL;DR-ConceptuallyDAGmodelisastrictgeneralizationofMapReducemodel.DAG-basedsystemslikeSparkandTezthatareawareofthewholeDAGofoperationscandobetterglobaloptimizationsthansystemslikeHadoopMapReducewhicha
- 面试(八)
低调包含不哈哈
面试准备面试嵌入式LinuxIIC
目录一.设备树1.1驱动的设备树匹配1.2驱动的Probe函数1.3驱动的Remove函数1.4驱动结构体二.老版字符设备驱动框架2.1文件操作函数的实现三.新字符设备驱动框架3.1设备模型3.2设备树3.3kobject和sysfs3.4fasync和poll3.5file_operations的改进四.plateform驱动框架五.SPI驱动框架和编写流程5.1定义服务接口5.2实现服务提供者
- Linux内核(4)——Linux设备文件open函数从应用到内核全过程解析
Embedded-Xin
Linux驱动/内核编程块设备驱动linux嵌入式c++物联网服务器
学习并整理了下open等系统调用,从用户态如何调用到内核态的全过程。1.Linux内核目录总览2.Linux文件系统与设备驱动关系这是在Linux设备驱动开发详解里找的两张图,内容很形象。当用户程序通过系统调用陷入内核态时,会先经过VFS,也就是虚拟文件系统,使用不同的file_operations,在这里会根据操作的文件类型,来进行不同操作。3.系统调用完成内核调用全过程详解3.1用户态确认好自
- 【笔试】03
yogurt=b
笔试记录数据库数据结构
FLOPSFLOPS是FloatingPointOperationsPerSecond的缩写,意为每秒浮点运算次数。它是衡量计算机性能的指标,特别是用于衡量计算机每秒能够执行多少浮点运算。在高性能计算领域,FLOPS被广泛用来评估超级计算机、CPU、GPU和其他处理器的计算能力。FLOPS数值越高,计算机执行涉及浮点数的计算能力越强。SQL子查询可以用在FROM子句的数据源SELECT*FROM(
- Python中[:]与[::]的用法
巨輪
Pythonpython
Python中[:]与[::]的用法概述[:]与[::]语法是通用序列操作(CommonSequenceOperations)其中的两个。用[:]或[::]对多数序列类型(可变的或不可变的)(如字符串、列表等)序列中元素进行截取。[:]的用法s[i:j]从下标i到下标j,截取序列s中的元素。如果i或j为负数,则下标从序列尾部算起,也就是说,下标i相当于下标len(s)+i,下标j相当于下标len(
- 什么是DevOps?
IMPso
devops数据库运维
DevOps定义:DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。devops概念的提出:软件开发初期,项目开发好,找台服务器安装好环境,把jar包scp到远程服务器,放上去开启服务
- java写入word表格(poi-tl)
柴米油盐那点事儿
javaword
1.导入依赖com.deepoovepoi-tl1.12.02.代码自己创建模板。放在(resource/file)@GetMapping("/api/word")@ApiOperation(value="接口文档下载",produces="application/octet-stream")@ApiOperationSupport(order=1)publicvoiddownload(@Requ
- OpenCV Lesson 4 : Operations with images
0010000100
OpenCVopencv人工智能计算机视觉
Loadanimagefromafile:Matimg=imread(filename);Ifyouneedagrayscaleimage:Matimg=imread(filename,IMREAD_GRAYSCALE);Tosaveanimagetoafile:imwrite(filename,img);Getpixelintensityvaluefromasinglechannelgraysc
- 学习 Rust:I/O Ring
老父亲的能量嘎嘣脆
rust学习后端开发语言职场和发展
Areyoudisappointedwithselect,poll,epollorAIO?TryoutthebestI/OpromiseintheLinuxlandscape.您对select、poll、epoll或AIO感到失望吗?尝试Linux环境中最佳的I/O承诺。LinuxhasarichhistoryinmanagingI/Ooperations.Somemechanisms,likes
- 一文读懂MySQL执行计划 Explain
liuxuquan_
数据库后端sqlmysqlspringspringboot
MySQL执行计划Explain文章相关示例执行基于MySQL(8.0.13)版本定义官方文档描述的定义如下:Thesetofoperationsthattheoptimizerchoosestoperformthemostefficientqueryiscalledthe“queryexecutionplan”,alsoknownastheEXPLAINplan.MySQL优化器选择执行最有效的
- 汽车 vSOC安全运营管理平台开发解决方案
博大信息安全
汽车IDPSVSOC平台VSOC安全运营汽车网络安全汽车安全运营汽车入侵防御系统汽车
汽车vSOC安全解决方案一、引言随着汽车行业的快速发展,汽车的智能化和互联化程度越来越高,汽车网络安全问题也日益凸显。汽车vSOC(VehicleSecurityOperationsCenter)作为汽车网络安全的重要组成部分,其作用越来越受到重视。本方案旨在提供一套可实施落地的汽车vSOC安全解决方案,包括技术内容、实施步骤、预期效果等方面,以帮助汽车制造商和相关企业提高汽车网络安全水平,保障用
- 【C#】【EXCEL】Bumblebee/Classes/ExRange.cs
hmywillstronger
c#excel开发语言
Flowdiagram为了创建一个全面但不过于复杂的流程图,我们将重点关注ExRange类的主要功能和方法。以下是一个中英双语的流程图,展示了ExRange类的主要结构和操作流程:默认构造函数DefaultConstructorCOM对象构造函数COMObjectConstructor复制构造函数CopyConstructor属性操作PropertyOperations数据操作DataOperat
- 【C#】【EXCEL】Bumblebee/Classes/ExApp.cs
hmywillstronger
c#excelwindows
Bumblebee/Classes/ExApp.csFlowdiagram成功/Success失败/Failure工作簿操作WorkbookOperations工作表操作WorksheetOperations其他操作OtherOperations开始/Start创建ExApp实例CreateExAppInstance获取或创建Excel应用程序GetorCreateExcelApplication
- Apache Paimon:实时湖仓架构构建工具
乔如黎
ApachePaimon:实时湖仓架构构建工具paimonApachePaimonisalakeformatthatenablesbuildingaRealtimeLakehouseArchitecturewithFlinkandSparkforbothstreamingandbatchoperations.项目地址:https://gitcode.com/gh_mirrors/pai/paimo
- 探索实时湖仓架构的新星:Apache Paimon
幸愉旎Jasper
探索实时湖仓架构的新星:ApachePaimonpaimonApachePaimonisalakeformatthatenablesbuildingaRealtimeLakehouseArchitecturewithFlinkandSparkforbothstreamingandbatchoperations.项目地址:https://gitcode.com/gh_mirrors/pai/paim
- CSE101 C++ Introduction to Data Structures and Algorithms
zhuyu0206girl
c++开发语言
CSE101IntroductiontoDataStructuresandAlgorithmsProgrammingAssignment5Inthisprojectyouwillcreateanew,andsomewhatdifferentintegerListADT,thistimeinC++.YouwillusethisListtoperformshufflingoperations,andd
- ZCC575Digital On‐chip Temperature Sensor with I2C Interface
ZCWC123
社交电子
FeaturesTemperatureaccuracy‐±1℃from-20℃~80℃‐±2℃from-40℃~125℃Lowpowerconsumption‐4.5uAshutdowncurrentatVDD=5.0V‐125uAcontinuousconversioncurrent2.2~8.0Vultra-wideoperationsupplyvoltageHighPSRintemp
- easyExcel导出多sheet表格,最简单快捷写法
R-sz
笔记
/***导出*/@PostMapping("/export")@ApiOperationSupport(order=10)@ApiOperation(value="导出",notes="传入ids")publicvoidexport(HttpServletResponseresponse)throwsIOException{ArrayListbatchExcelList=newArrayListf
- CSS 预处理器语言Less
繁星学编程
CSScssless前端
文章目录概览Less是什么?Less安装通过[npm](https://www.npmjs.org/)安装Less转换为CSS变量(Variables)注释(Comments)混合(Mixins)嵌套(Nesting)1.选择器嵌套2.父选择器`&`@规则嵌套和冒泡运算(Operations)转义(Escaping)函数(Functions)命名空间和访问符映射(Maps)作用域(Scope)导入
- Redis在java中的使用
一个处女座的暖男程序猿
redisjava数据库
SpringDataRedis中提供了一个高度封装的类:RedisTemplate,对相关api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:ValueOperations:string数据操作SetOperations:set类型数据操作ZSetOperations:zset类型数据操作HashOperations:hash类型的数据操作ListOperations:
- Swift Combine 使用 ObservableObject 与 SwiftUI 模型作为发布源 从入门到精通二十
AI架构师易筋
iOSswiftswiftui服务器
Combine系列SwiftCombine从入门到精通一SwiftCombine发布者订阅者操作者从入门到精通二SwiftCombine管道从入门到精通三SwiftCombine发布者publisher的生命周期从入门到精通四SwiftCombine操作符operations和Subjects发布者的生命周期从入门到精通五SwiftCombine订阅者Subscriber的生命周期从入门到精通六S
- 嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之file_operations详解 (物联技术666)
vx349014857
嵌入式培训课程笔记笔记linuxarm开发
链接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd=1688提取码:1688structfile_operations{structmodule*owner;//指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化THIS_MODULESloff_t(*llseek)(structfile*,loff_t,int);//llsee
- 【社区投稿】Rust登陆华为鸿蒙操作系统之Native模块开发
Rust语言中文社区
华为rustharmonyos开发语言后端
Rust登陆【华为鸿蒙】操作系统之Native模块开发名词解释【鸿蒙操作系统】的英文全名是OpenHarmonyOperationSystem。正文将以其首字母缩写词ohos引用该词条。【鸿蒙软件开发工具包】的英文全名是OpenHarmonySoftwareDevelopmentKit。正文也将以它的首字母缩写词ohsdk引用该词条。DevEcoStudioIDE是【华为】为鸿蒙应用程序开发免费提
- SpringBoot3整合Knife4J,以及被拦截无法显示doc.html问题
whohaving
Javajavaspringboot
引入坐标:com.github.xiaoyminknife4j-openapi3-jakarta-spring-boot-starter4.4.0application.yml:#springdoc-openapi项目配置springdoc:swagger-ui:path:/swagger-ui.htmltags-sorter:alphaoperations-sorter:alphaapi-doc
- Swift Combine 用 Future 来封装异步请求 从入门到精通十一
AI架构师易筋
iOSswift开发语言ioscombinefuturepromise
Combine系列SwiftCombine从入门到精通一SwiftCombine发布者订阅者操作者从入门到精通二SwiftCombine管道从入门到精通三SwiftCombine发布者publisher的生命周期从入门到精通四SwiftCombine操作符operations和Subjects发布者的生命周期从入门到精通五SwiftCombine订阅者Subscriber的生命周期从入门到精通六S
- Swift Combine 有序的异步操作 从入门到精通十二
AI架构师易筋
iOSswiftcombinesinkiosfuture
Combine系列SwiftCombine从入门到精通一SwiftCombine发布者订阅者操作者从入门到精通二SwiftCombine管道从入门到精通三SwiftCombine发布者publisher的生命周期从入门到精通四SwiftCombine操作符operations和Subjects发布者的生命周期从入门到精通五SwiftCombine订阅者Subscriber的生命周期从入门到精通六S
- 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