- 使用Selenium和bs4进行Web数据爬取和自动化(爬取掘金首页文章列表)
程序员霄霄
软件测试selenium前端自动化软件测试功能测试自动化测试程序人生
前言:Web数据爬取和自动化已成为许多互联网应用程序的重要组成部分。本文将介绍如何使用Python中的两个强大库,即Selenium和BeautifulSoup,来实现自动化操作、网页数据提取以及网页内容分析。并以爬取掘金首页文章列表标题和url为例子进行讲解.安装和使用Selenium本文是在python环境下使用selenium,使用浏览器是火狐,系统是win10系统。python环境的配置这
- python爬虫之自动化爬取网页
陌小
pythonseleniumpythonchrome
以下为公开源码fromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptionsimporttimefrombs4importBeautifulSoupurl='https://movie.douban.com/'chrome_optins=Options()chrome_optins.add_argument
- IDEA-插件开发踩坑记录-第七坑-Unable to locate JNA native support library
無炆_
intellij-ideajavaide
背景插件里需要要到Neo4j存储一些数据关系。因为插件环境没办法使用用户的Neo4j库,因此需要用到Neo4j的内嵌模式(Embedded)。参考官方文档操作遇到一个问题:依赖dependencies{//内置图数据库implementation("org.neo4j:neo4j:5.25.1")}代码publicstaticNeo4jServiceINSTANCE(){if(INSTANCE!=
- 浏览器中wss请求状态码101是成功了吗
rock——you
运维websocket
是的,状态码101SwitchingProtocols代表WebSocket连接成功。状态码101解释在WebSocket连接过程中,客户端(浏览器)发送一个HTTPUpgrade请求,要求服务器将连接从HTTP协议升级到WebSocket协议(ws://或wss://)。如果服务器同意升级,就会返回:HTTP/1.1101SwitchingProtocolsUpgrade:websocketCo
- 开机出现fixing(c:) stage...问题解决方案
QuartusII7
KMJ公司运维
1.使用官方提供的疑难解答程序后并更新系统https://aka.ms/wudiag2.修复系统文件要检查和修复系统文件,请执行以下操作:请您启动管理员模式的命令提示符,依次输入以下命令并回车,之后重新启动计算机。sfc/scannowDism/Online/Cleanup-Image/ScanHealthDism/Online/Cleanup-Image/CheckHealthDISM/Onli
- 经典SQL查询语句大全
小崔不闹
数据库sqloracle
一、基础1、说明:创建数据库CREATEDATABASEdatabase-name2、说明:删除数据库dropdatabasedbname3、说明:备份sqlserver---创建备份数据的deviceUSEmasterEXECsp_addumpdevice'disk','testBack','c:\mssql7backup\MyNwind_1.dat'---开始备份BACKUPDATABASEp
- Azimuth Superresolution of Forward-Looking Radar Imaging Which Relies on Linearized Bregman论文阅读
青铜锁00
论文阅读Radar论文阅读
AzimuthSuperresolutionofForward-LookingRadarImagingWhichReliesonLinearizedBregman1.论文的研究目标与意义1.1研究目标1.2实际应用意义2.论文提出的新方法、公式与优势(重点)2.1方法框架2.1.1贝叶斯建模2.1.2线性化Bregman算法2.2与传统方法的对比2.3公式总结3.实验设计与结果3.1点目标仿真3.
- A Bayesian Angular Superresolution Method With Lognormal Constraint for Sea-Surface Target 论文阅读
青铜锁00
论文阅读Radar论文阅读
目录1.研究背景与问题2.方法创新3.关键优势4.实验验证5.与传统方法对比6.结论与意义1.研究背景与问题核心挑战:实孔径雷达受限于天线孔径尺寸,导致角分辨率不足,影响海面目标(如船舶)的精细化探测。传统方法局限性:谱估计方法(如MUSIC、IAA):依赖多快拍数据,机械扫描雷达难以满足。正则化方法(如TSVD、l1/l2约束):假设噪声服从高斯分布,未考虑海杂波的非高斯特性(如Rayleigh
- flutter permission_handler IOS端权限bug
qq_37025271
flutterios
podfile中记得添加一下设置:用到什么权限就设置什么权限用到啥权限就开一下,不然出bug全都是状态不允许##dart:PermissionGroup.calendar#'PERMISSION_EVENTS=1',##dart:PermissionGroup.reminders#'PERMISSION_REMINDERS=1',##dart:PermissionGroup.contacts#'P
- python编译安装vosk语音识别包
hzjxinyue
python
不知道为什么,谁把vosk从pip源上删了。没办法只能自己编译安装了。下载源代码gitclonehttps://github.com/alphacep/vosk-api.git进入python文件夹cdvosk-api/python编译安装python3setup.pyinstall
- ZDZL首届吉祥杯季度赛双语说明&答疑
ZDZL
c++
ACGO版本本贴用于ZDZL团队首届吉祥杯季度赛赛事说明与答疑。ThispostisusedforexplainingandansweringquestionsaboutthefirstJixiangCupquarterlycompetitionoftheZDZLteam.我们很遗憾的通知您,因一些问题,竞赛时间可能发生变更,请您随时关注官方消息,很抱歉为您带来了不便。感谢您的理解与支持,您的支持
- ocp 之 Prometheus Operator ~Operator-Prometheus原理 -JG第一次-PrometheusRule - Prometheus断点每周
yuezhilangniao
k8sPrometheus
Prometheus的告警恢复和修改operator版Prometheus默认的Prometheus.ymlgpt回答告警问题如果您没有收到Prometheus的告警恢复通知,请检查以下几个可能的原因:检查Alertmanager的配置文件中的group_wait参数是否正确设置。group_wait参数定义了Alertmanager在发送告警恢复通知之前等待的时间,以便其他相关告警的解决状态被合
- Meta:基于数据关系的LLM高效预训练
大模型任我行
大模型-模型训练人工智能自然语言处理语言模型论文笔记
标题:Data-EfficientPretrainingwithGroup-LevelDataInfluenceModeling来源:arXiv,2502.14709摘要数据高效的预训练已显示出提高缩放定律的巨大潜力。本文认为有效的预训练数据应该在组级别进行管理,将一组数据点作为一个整体而不是独立的贡献者。为此,我们提出了一种新的数据高效预训练方法GroupLevelDataInfluenceMo
- 【ARM】SMMU系统虚拟化(4)
Lambor_Ma
ARM系列arm开发SoC硬件架构IC
ReducedIAwidth这个概念的理解是,假如使用的是4KB的granule,IA(inputaddress)的位宽是35位,根据IAbitsresolvedatdifferentlevelsoflookup表格,可以得出initiallevel为level1。level1从38:30,相当于有4-bit的减少。这个时候意味着translationtablesize被减少了2^4倍。但是又因为
- YOLOv11-ultralytics-8.3.67部分代码阅读笔记-ops.py
红色的山茶花
YOLO笔记深度学习
ops.pyultralytics\models\utils\ops.py目录ops.py1.所需的库和模块2.classHungarianMatcher(nn.Module):3.defget_cdn_group(batch,num_classes,num_queries,class_embed,num_dn=100,cls_noise_ratio=0.5,box_noise_scale=1.0
- 系统调用read和write的疑问
唯瑞主义
疑问篇linux
问题背景:现在我有一个中文文档,里面是一些中文的句子,然后我有一个charbuffer[1]的缓冲区,我通过read中文文档,然后把数据写入到标准输出中,此时终端却正常打印,而不是显示乱码。代码展示:#include"unistd.h"#include#include"stdio.h"#include"stdlib.h"intmain(){//打开intfd=open("test.txt",O_R
- super的使用
一天八小时
语言中的一些基础概念java
关于Super()的用法1.Super()只能用在子类的构造方法中使用,在其它地方使用存在编译错误。2.super()构造的父类只有在子类中有效,离开子类无法使用。3.super.的调用的是由在子类构造的时候使用了super()的无参或者有参构造出来的父类。4.当父类为有参构造而不写无参构造的时候,我们子类构造方法必须拥有父类的构造方法就需要用Super(Stringxx,intno)的构造方法将
- 【RA-Eco-RA2L1-48PIN】电容触摸按键
无垠的广袤
单片机单片机物联网嵌入式硬件
【RA-Eco-RA2L1-48PIN】电容触摸按键工程目标:触摸按键控制板载LED操作流程介绍项目实现的具体操作步骤。硬件连接使用自制JLink-OB连接开发板与电脑。新建工程1.新建工程,配置板载LED引脚为输出模式;触摸驱动2.Stacks-NewStack-CapTouch-Touch(rm_touch);3.更改CTSU(r_ctsu)属性SupportforusingDTC使能Enab
- pip安装非标准版本号库报错 pip 24.1 will enforce this behaviour change.
m0_74397054
pippython机器学习神经网络
在做神经网络作业安装tensorflow报错pyodbc4.0.0-unsupportedhasanon-standardversionnumber.pip24.1willenforcethisbehaviourchange.Apossiblereplacementistoupgradetoanewerversionofpyodbcorcontacttheauthortosuggestthatth
- Ubuntu安装python后使用pip安装遇到packaging.verson错误
gier09
pythonpythonubuntu
怀疑是pip的安装问题修改pip的配置文件即可:pip源配置文件可以放置的位置:Linux/Unix:/etc/pip.conf~/.pip/pip.conf~/.config/pip/pip.confMacOSX:~/Library/ApplicationSupport/pip/pip.conf~/.pip/pip.conf/Library/ApplicationSupport/pip/pip.
- Windows和AD域提权枚举脚本及工具介绍
vortex5
网络安全安全windows
在Windows和ActiveDirectory(AD)域环境中,权限提升和枚举是渗透测试的关键部分。为了有效进行这些操作,使用特定的工具和脚本可以帮助你识别和利用系统中的漏洞。以下是一些常用于Windows和AD域环境中的权限提升和枚举脚本工具:Windows环境中的提权枚举脚本PowerUp描述:PowerUp是一个PowerShell脚本,专注于在Windows系统中查找权限提升漏洞。它能够
- Python解决安装包报错4.0.0-unsupported
zhou_x_b
python开发语言
1、安装open3d一直报错,提示pip没有最新2、更新pip报错4.0.0-unsupported解决思路:pip含多个(wherepip命令可以在cmd中查看pip的位置),卸载pippipuninstallpip根据提示如果有多个都卸载了在安装pip命令:easy_installpip关掉软件在打开(否则没用)如果通过pycharm设置安装包,得选择python安装路径对应的pip
- 【HTML】HTML入门:构建网页的基础
雷神 Leo
经验分享类#前端后端html前端javascript
前言HTML(HyperTextMarkupLanguage)是构建网页和应用的基础。它提供了一种结构化的方式来组织内容,使得网页设计师可以创建出丰富且具有交互性的网页。本指南将带你从零开始学习HTML,包括它的基本概念、常用标签、属性以及如何构建一个简单的网页。第一部分:HTML基础1.1什么是HTML?HTML是一种标记语言,它通过一系列的标签(tags)来描述网页的结构。这些标签可以定义文本
- Java基础——8.5 super关键字
kongbai_mumu
Java基础java开发语言
8.5super关键字super代表父类的引用,用于访问父类的属性、方法、构造器。8.5.1基本语法super.属性名,访问父类的属性,但不能访问父类的private属性;super.方法名(参数列表),访问父类的方法,但不能访问父类的private方法;super(参数列表);,访问父类的构造器,只能放在构造器的第一句且只能出现一句;例:packagecom.edu.super_;publicc
- php序列化与反序列化
lally.
phpandroid开发语言
文章目录基础知识魔术方法:在序列化和反序列化过程中自动调用的方法什么是`__destruct()`方法?何时触发`__destruct()`方法?用途:语法示例:反序列化漏洞利用前提条件一些绕过策略绕过__wakeup函数绕过正则匹配绕过相等逻辑判断利用大S的ascll码绕过反序列化字符逃逸高级反序列化phar反序列化什么是PHAR文件?特点session反序列化基础知识序列化:将对象转化为一个可
- The underlying provider failed on open 问题解决
yyueshen
SQLServer链接字符串
用EntityFramework6,链接MSSqlServer,本地测试没问题,同事用IP访问就提示了“Theunderlyingproviderfailedonopen”,在网上查,有人说是连接字符串写的有问题,喵了个咪的,连接字符串写的有问题,为啥我用Add-Migration和update-database命令可以成功更新数据库,连接字符串有问题,为啥我IISExpress下的localho
- [repo] No such file or directory: ‘/xxxx/.repo/manifests/.git/HEAD‘error: manifest missing or unrea
新镜
git
1、运行repoinit-uxxxxx--no-repo-verify报错:Unabletonegotiatewith:nomatchingkeyexchangemethodfound.Theiroffer:diffie-hellman-group1-sha1fatal:Couldnotreadfromremoterepository.【解决方法】:在~/.ssh/config添加这一行(conf
- 探索高效图像处理:Android原生OpenCV开发指南
农隆龙
探索高效图像处理:Android原生OpenCV开发指南native-opencv-android-templateAtutorialforsettingupOpenCV4.6.0(andother4.x.yversion)forAndroidinAndroidStudiowithNativeDevelopmentKit(NDK)supportforC++development.项目地址:http
- from PIL import Image ModuleNotFoundError: No module named ‘PIL‘
万年枝
服务器使用linux常见运行错误pythonlinux前端
问题报错:Traceback(mostrecentcalllast):File"examples/inference_demo.py",line10,infromPILimportImageModuleNotFoundError:Nomodulenamed'PIL'已知环境为python=3.7.16,Pillow=9.0.1;问题解决:使用命令pipinstallpillow--upgradeI
- 力扣 寻找重复数
孑么
力扣leetcode算法职场和发展链表数据结构java排序算法
二分,双指针,环形链表。题目不看完题就是排序后,用两个快慢指针移动,找到相同就返回即可。classSolution{publicintfindDuplicate(int[]nums){Arrays.sort(nums);intl=0;intr=1;while(r>1;intcnt=0;for(inti=0;i
- 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