- python抓取网页内容401应该用哪个库_python3使用requests模块爬取页面内容入门
坂田月半
python的爬虫相关模块有很多,除了requests模块,再如urllib和pycurl以及tornado等。相比而言,requests模块是相对简单易上手的。通过文本,大家可以迅速学会使用python的requests模块爬取页码内容。1.Requests唯一的一个非转基因的PythonHTTP库,人类可以安全享用。官网:http://cn.python-requests.org/zh_CN/
- 用python写1个简单的聊天服务器3-TCP服务器选择
watsy
pythonios开发
有了文章2的分析以后下面需要做的事情是选择1个TCP服务器。自己写1个TCP服务器考虑到快速实现,不现实。最终有3个框架twistedgeventtornadogoogle了一下资料以后。考虑geventtornado比较理想的目标是gevent,不过测试1天,作为tcp服务器时候。read函数并没有补丁为非阻塞方法。放弃剩下的就是tornadogoogle一下tornadotcp服务器资料,发现
- 使用Tornado部署Flask项目
二进制杯莫停
#Tornadotornadoflaskpython
Tornado不仅仅是一个WEB框架,也可以是一个WEB服务器。在Tornado中我们可以使用wsgi模块下的WSGIContainer类运行其他WSGI应用如:Fask,Bottle,Django。首先我们写一个最小的Flask应用#hello.pyfromflaskimportFlaskapp=Flask(__name__)@app.route("/")defhello():return"He
- Python 协程 & 异步编程 (asyncio) 入门介绍
linmeiyun
后端pythonpython爬虫学习开发语言机器学习
在近期的编码工作过程中遇到了async和await装饰的函数,查询资料后了解到这种函数是基于协程的异步函数。这类编程方式称为异步编程,常用在IO较频繁的系统中,如:Tornadoweb框架、文件下载、网络爬虫等应用。协程能够在IO等待时间就去切换执行其他任务,当IO操作结束后再自动回调,那么就会大大节省资源并提供性能。接下来便简单的讲解一下异步编程相关概念以及案例演示。1.协程简介1.1协程的含义
- pythontcp服务器框架_Python Tornado框架(TCP层)
weixin_39724441
pythontcp服务器框架
Tornado在TCP层里的工作机制上一节是关于应用层的协议HTTP,它依赖于传输层协议TCP,例如服务器是如何绑定端口的?HTTP服务器的handle_stream是在什么时候被调用的呢?本节聚焦在TCP层次的实现,以便和上节的程序流程衔接起来。首先是关于TCP协议。这是一个面向连接的可靠交付的协议。由于是面向连接,所以在服务器端需要分配内存来记忆客户端连接,同样客户端也需要记录服务器。由于保证
- Python:Django 和 Tornado 的关系
ac-er8888
pythondjangotornado
Django和Tornado是两个用于Python编程语言的非常流行的web框架,但它们在设计理念、应用场景和性能特性上有显著的不同。DjangoDjango是一个高级别的PythonWeb框架,它鼓励快速开发和干净、实用的设计。Django遵循MVC(模型-视图-控制器)设计模式,但Django社区更喜欢将其称为MTV(模型-模板-视图),因为它稍微改变了这些组件之间的交互方式。Django提供
- tornado获取请求参数
youhebuke225
tornadotornadopython开发语言
在Tornado框架中,获取请求参数(包括查询字符串参数、表单数据、JSON数据等)可以通过RequestHandler类提供的方法来完成。以下是一些常用的方法来获取不同类型的请求参数:1.获取查询字符串参数查询字符串参数是附加在URL后面的键值对,用于传递信息。例如,在URLhttp://example.com/page?key1=value1&key2=value2中,key1和key2是参数
- python gui web_python无法使用gui两个Python web框架:Django & Tornado比较
weixin_39762666
pythonguiweb
在各种语言平台中,python涌现的web框架恐怕是最多的;猜想原因应该是在py中构造框架十分简单,使得轮子不断被发明。这里记述一下我了解过的两个pyweb框架,供大家参考,希望能起他山之石的作用。DjangoDjango应该是最出名的py框架,GoogleAppEngine甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单
- python网页展示框架_Python网页框架:Django和Tornado
weixin_39832965
python网页展示框架
原标题:Python网页框架:Django和TornadoPython部落组织翻译,禁止转载,欢迎转发软件开发者杂志,CPOL,2013年10月29日学习Django和Tornado这篇文章的作者是MichaelD'Agosta,也首次被发表在软件开发者杂志的第201308期中。你可以在软件开发者杂志上找到更多文章。前言很久之前,随处可见的是把“服务端页面”放到一起,并将它们和一个数据库连接起来,
- Python Web 框架:Django, Tornado
buptshirly
tornadopython
原文连接https://zhuanlan.zhihu.com/p/25978330DjangoDjango是一个高级的PythonWeb框架,支持快速开发,简洁、实用的设计。如果你正在建一个和电子商务网站相似的应用,那你应该选择用Django框架。它能使你快速完成工作,也不必担心太多的技术选择。它能提供从模版引擎到ORM所需的一切东西。用Django构建你的app的时候,你必须要遵循Django的
- Python3学习(六十一):Python对Tornado请求与响应的数据处理
猪笨是念来过倒
Pythonpythontornado
获取查询字符串参数get_query_argument(name,default=_ARG_DEFAULT,strip=True)从请求的查询字符串中返回指定参数name的值,如果出现多个同名参数,则返回最后一个的值;default为路由中未传name参数时返回的默认值,如default未设置,则会抛出tornado.web.MissingArgumentError异常;strip表示是否过滤掉左
- Python基础进阶知识点
小小毛球球
Python学习算法青少年编程pythonc语言学习
一、Web开发同步框架:Django、Flask;异步框架:Tornado、Sanic;Tornado框架;Git版本控制;HTTP方法以及响应码;关系型数据库:MySQL、PostgreSQL、Oracle;非关系型数据库:Redis、Mongo;日志;项目的部署;实战练习。二、爬虫爬虫应用领域;爬虫的合法性:Robots.txt;HTTP请求:请求行、请求头,请求体;响应:响应码、响应头、响应
- (2018-05-25.Python从Zero到One)8、(Tornado)关于tornado__1.2.3httpserver
lyh165
2.3httpserver上一节我们说在tornado.web.Application.listen()(示例代码中的app.listen(8000))的方法中,创建了一个http服务器示例并绑定到给定端口,我们能不能自己动手来实现这一部分功能呢?现在我们修改上一示例代码如下:#coding:utf-8importtornado.webimporttornado.ioloopimporttorna
- Python学习
1eb034fb5715
Tornado是一个PythonWeb框架和异步网络库,通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接,WebSockets等需要与每个用户建立长期连接的应用程序。
- 【小沐学前端】Golang实现Web服务器
爱看书的小沐
Webgolanggo语言webserverweb服务器服务器
Web服务器系列相关文章编写如下:【Web开发】Node.js实现Web服务器(http模块)【Web开发】Node.js实现Web服务器(express模块)【Web开发】Python实现Web服务器(Flask入门)【Web开发】Python实现Web服务器(Flask测试)【Web开发】Python实现Web服务器(Tornado入门)【Web开发】Python实现Web服务器(Tornad
- Python的7种数据类型
运维仙人
Python
摘录于《Python高效开发实战:Django、Tornado、Flask、Twisted》书籍,回顾知识点,供大家参考。1、Number类型移位计算:将数字3转为2进制表示:11往右移一位为:1往左移一位为:110总结为:往左移几位就补多少个0,往右移动几位就是从右往左第几为抹掉。2、Sequence类型簇3、String类型4、Tuple类型5、List类型6、Set类型7、Dictionar
- pip下载第三方库失败的问题(查了几个小时,终于解决问题!!)
henu-于笨笨
pytorch环境配置pippython深度学习
新安装conda之后,pip出现的问题1.pip版本低,cmd一直提示你提升版本,查询了百度上面很多方法,给出了一条命令语句python-mpipinstall--upgradepip没用,无法解决问题2.出现大量的警告和报错百度查询的办法是配置环境变量,没用3.使用最新版本和最新版本+清华源的镜像下载还是报错最终解决,改用豆瓣源镜像,并加上信任动作pipinstalltornado-ihttp:
- Tornado提纲
月守护
Tornadotornado
pipinstalltornado源码安装https://pypi.python.org/packages/source/t/tornado/tornado-4.3.tar.gz注:Toanado系列内容都是和Django比对学习,默认有django基础Toanado不像Django那样,在创建对应项目之后,很多东西自动生成了,Toanado就像一个普通的第三方库一样,你可以导入使用,但很多东西都
- (大纲42)Python08tornado 第2节、初识Tornado
lyh165
8、Tornado2、初识Tornado1.2.0初识Tornado1.2.1安装1.2.2HelloItcast1.2.3httpserver1.2.4options1.2.5练习
- Python学习之路-Tornado基础:部署
geobuins
python学习tornado
Python学习之路-Tornado基础:部署部署Tornado简介为了充分利用多核CPU,并且为了减少同步代码中的阻塞影响,在部署Tornado的时候需要开启多个进程(最好为每个CPU核心开启一个进程)因为Tornado自带的服务器性能很高,所以我们只需开启多个Tornado进程。为了对外有统一的接口,并且可以分发用户的请求到不同的Tornado进程上,我们用Nginx来进行代理。supervi
- Python学习之路-Tornado基础:异步与WebSocket
geobuins
python学习tornado
Python学习之路-Tornado基础:异步与WebSocket认识异步同步我们用两个函数来模拟两个客户端请求,并依次进行处理:#coding:utf-8defreq_a():"""模拟请求a"""print('开始处理请求req_a')print('完成处理请求req_a')defreq_b():"""模拟请求b"""print('开始处理请求req_b')print('完成处理请求req_b
- Python学习之路-Tornado基础:数据库
geobuins
python学习tornado
Python学习之路-Tornado基础:数据库简介与Django框架相比,Tornado没有自带ORM,对于数据库需要自己去适配。我们使用MySQL数据库。在Tornado3.0版本以前提供tornado.database模块用来操作MySQL数据库,而从3.0版本开始,此模块就被独立出来,作为torndb包单独提供。torndb只是对MySQLdb的简单封装,不支持Python3。连接初始化我
- Python学习之路-Tornado基础:安全应用
geobuins
python学习tornado
Python学习之路-Tornado基础:安全应用Cookie对于RequestHandler,除了在初始Tornado中讲到的之外,还提供了操作cookie的方法。设置set_cookie(name,value,domain=None,expires=None,path=‘/’,expires_days=None)参数说明:参数名说明namecookie名valuecookie值domain提交
- 三分钟了解 Python3 的异步 Web 框架 FastAPI
又拍云 UPYUN
apiAPIJAVAJDKNetbeans
快速编码,功能完善。从启动到部署,实例详解异步py3框架选择FastAPI的原因。FastAPI介绍FastAPI与其它Python-Web框架的区别在FastAPI之前,Python的Web框架使用的是django、flask、tornado三种Web框架。django自带admin,可快速构建,但是比较笨重。如果是mvc形式的开发,很多已经封装好了,的确蛮合适。但如果是restful风格设计,
- pythonpecan教程_python后台Flask 快速入门
weixin_39524574
pythonpecan教程
全栈工程师开发手册(作者:栾鹏)在pythonweb框架的世界里充满了选择。有Django,Flask,Pyramid,Tornado,Bottle,Diesel,Pecan,Falcon等等的来吸引开发者的注意。作为一个开发者,你想要从中选择一个框架来帮你完成项目,并且能继续做大事情。关于读者该选择哪个框架,这里不做选择,本文带大家入门flask框架。安装Flaskpipinstallflask
- 计算机设计大赛 深度学习 植物识别算法系统
iuerfee
python
文章目录0前言2相关技术2.1VGG-Net模型2.2VGG-Net在植物识别的优势(1)卷积核,池化核大小固定(2)特征提取更全面(3)网络训练误差收敛速度较快3VGG-Net的搭建3.1Tornado简介(1)优势(2)关键代码4InceptionV3神经网络4.1网络结构5开始训练5.1数据集5.2关键代码5.3模型预测6效果展示6.1主页面展示6.2图片预测6.3三维模型可视化7最后0前言
- 01-什么是tornado
safina ~
Tornado的探索之旅tornadopython
文章目录Tornado的诞生和演进Tornado的功能和特性非阻塞性Web服务器异步编程Web框架功能tornado安装及简单应用在Python的众多网络框架中,Tornado唯一的一员,以其非阻塞性的网络I/O和高并发的能力而著名。它是一个强大且灵活的工具,可以用于构建各种各样的Web服务,尤其擅长于实时应用。Tornado的诞生和演进Tornado诞生于FriendFeed,这是一家由前Goo
- python tornado异步_python tornado异步处理记录
Reinhardt Jin
pythontornado异步
单进程单线程。importtornado.ioloopimporttornado.webclassMainHandler(tornado.web.RequestHandler):defget(self):time.sleep(10)return"ok"application=tornado.web.Application([(r"/",MainHandler),])if__name__=="__m
- Python2 Tornado异步协程
永恒dingle
数据库开发语言
Tornado是一个高性能的PythonWeb框架,具有非阻塞I/O的特性,常用于构建大规模高并发的网络应用程序。它的异步非阻塞特性使得Tornado能够轻松地处理大量并发请求,从而提高应用的性能和吞吐量。在这篇文章中,我将分享一些Tornado的高阶玩法和技巧,希望能够对您有所帮助。
[email protected]
- python tornado异步_python tornado异步性能测试
百思视界
pythontornado异步
测试两个接口#-*-coding:utf-8-*-importtimeimporttornado.webimporttornado.genimporttornado.ioloopfromtornado.concurrentimportrun_on_executorfromconcurrent.futuresimportThreadPoolExecutorclassSyncHandler(torna
- 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