- 卸载并重新安装ROS环境
@倾尽天下
机器人自动驾驶人工智能python
在尝试激光雷达和IMU融合时出现一些问题,客服建议重新安装ROS环境,就尝试一下,顺便把过程记录一下。一、卸载ROS请注意,卸载ROS可能会影响您系统上的其他软件和数据,在执行任何卸载操作之前请确保备份重要数据。按照以下步骤:需要将下面代码中的替换为您的ROS发行版的名称,例如melodic、noetic等。sudoapt-getremoveros--*sudoapt-getremovepytho
- VSCode 配置python虚拟环境(激活环境细节)_vscode python conda虚拟环境(1)
2401_83817171
程序员vscodepythonconda
AnacondaPrompt常用命令:1.查看存在的环境:condainfo-e2.创建新环境:condacreate-n环境名python=(python的版本号)3.切换到某个环境:condaactivate环境名4.查看环境中已安装的包:condalist5.在环境中安装包:pipinstall包名6.删除包:pipunstall包名7.删除环境:condaenvremove-n环境名下载库
- 问题 E: 指针练习-1
我就是南山
C++题目算法数据结构
时间限制:1.000sec内存限制:128MB题目描述编写一个函数myMove,其功能是将一个数组中的所有为0的元素移至数组末尾,并保持数组非0元素的相对顺序不变。函数原型可参考如下:voidmyMove(int*p,intlen);其中,p为指向数组首元素的指针,len为数组中的元素个数。如,数组中的原始数据为:1,0,3,4,0,2,5。则经过函数处理后的数组元素为:1,3,4,2,5,0,0
- python 删除文件-python实现删除文件与目录的方法
weixin_39876282
本文实例讲述了python实现删除文件与目录的方法。分享给大家供大家参考。具体实现方法如下:os.remove(path)删除文件path.如果path是一个目录,抛出OSError错误。如果要删除目录,请使用rmdir().remove()同unlink()的功能是一样的在Windows系统中,删除一个正在使用的文件,将抛出异常。在Unix中,目录表中的记录被删除,但文件的存储还在。os.rem
- python 删除文件、目录_python删除文件和删除目录的方法
weixin_39778214
python删除文件目录
下面来看一下python里面是如何删除一个文件及文件夹的~~首先引入OS模块importos删除文件:os.remove()删除空目录:os.rmdir()递归删除空目录:os.removedirs()递归删除目录和文件(类似DOS命令DeleteTree):方法1:#Deleteeverythingreachablefromthedirectorynamedin'top',#assumingth
- Python中删除文件和目录
湫兮之风
pythonjava开发语言
python中分别提供os包下的os.remove()与shutil包下的shutil.rmtree()函数,其中os.remove()的主要作用是删除一个具体的文件,shutil.rmtree()主要作用是删除一个具体的目录。os.remove()这个函数需要一个参数,即要删除的文件的路径。importosfile_path="/path/to/your/file.txt"#将此处的路径替换为你
- ubuntu 安装 docker
2301_78094384
ubuntudockerlinux
打开网站:Ubuntu|DockerDocs卸载冲突包forpkgindocker.iodocker-docdocker-composedocker-compose-v2podman-dockercontainerdrunc;dosudoapt-getremove$pkg;done运行以下命令#AddDocker'sofficialGPGkey:sudoapt-getupdatesudoapt-g
- python 删除文件、目录(文件夹)
2301_78094384
pythonpython
最近使用python进行文件,目录的操作,实在难以相信,python这么简单,易用的语言,竟然没有一个库很好的支持删除文件、目录(文件夹),于是把最近收集到的一些信息做下整理。删除文件:Pathlib:file_path.unlink()os:os.remove(file_path)删除目录(文件夹):空目录(Path库):dir_path.rmdir()非空目录(shutil):shutil.r
- leetcode19-删除链表的第n结点
记得早睡~
算法小课堂链表数据结构leetcode算法
leetcode19思路要删除倒数第n个元素,那么就要找到倒数第n+1个元素,那么我们需要两个指针来记录,首先快指针需要先走n+1步,然后快慢指针一起进行移动,直到快指针为null的时候,此时慢指针恰好走到倒数第n+1个元素,这时候再设置slow.next=slow.next.next即实现了删除操作实现varremoveNthFromEnd=function(head,n){constdummy
- 数字图像的运算(3)
vsropy
matlab计算机视觉图像处理算法
一、图像的平移closeall;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量clearall;clc;I=imread('lenna.bmp');%输入图像a=50;b=50;%设置平移坐标J1=move1(I,a,b);%移动原图像a=-50;b=50;%设置平移坐标J2=move1(I,a,b);%移动原图像a=50;b=-50;%设置平移坐标J3=move1(I,a,b);
- windows cmd命令大全
Mika-1001
windows
一、常用1以下是一些常用的WindowsCMD命令,以及它们的详细描述:dir:列出当前目录下的文件和子目录。cd:改变当前目录。copy:复制文件。move:移动或重命名文件和目录。del:删除文件或目录。erase:删除文件或目录。ren:重命名文件或目录。type:显示文件内容。echo:在命令行中显示文本或变量的值。set:设置或显示环境变量。path:显示或设置系统环境变量中的目录列表。
- css‘s hover VS mobile
溪i
服务器运维
.animation{animation:30smoveinfinitelinear;/*&:hover{animation-play-state:paused;*/}原本写的好好的,测试说:“移动端点击滚动条,跳转到其他页面后,返回当前页面,滚动条不滚动;可以优化位点击后继续滚动”哎,改吧!setPause(true)}//onTouchEnd={()=>setPause(false)}onMo
- leetcode-82. Remove Duplicates from Sorted List II
千念飞羽
JAVAleetcodeleetcodejava
leetcode-82.RemoveDuplicatesfromSortedListII题目:Givenasortedlinkedlist,deleteallnodesthathaveduplicatenumbers,leavingonlydistinctnumbersfromtheoriginallist.Forexample,Given1->2->3->3->4->4->5,return1->
- 82. Remove Duplicates from Sorted List II
caisense
LeetCode
https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/description/删除增序链表中的重复结点思路:用pre记录前驱,i往后遍历,遇到重复的就继续向前,直到非重复,然后修改pre的后继即可classSolution:defdeleteDuplicates(self,head):""":typehead:Lis
- leetcode 82. Remove Duplicates from Sorted List II (排序链表中删除重复数字II)
蓝羽飞鸟
leetcode
删除排好序的单向链表中重复的数字。注意是把重复的数字都删掉,而不是unique。思路:链表已经是排好序的,这就说明相同的数字都是在一起的。假设[1,2,2,2,3]删除2的时候需要确定它的左边界和右边界,分别是index=1和index=3同时,因为是单向链表,需要知道左边界左边的一个node,假设左边界是left,右边界是right,left的前一个node是pre那么删除如下:pre.next
- golang map原理
悟空丶123
golang开发语言后端
map的实现原理map的定义map是由一组key,value键值对组成的抽象数据结构,并且同一个key只会出现一次。常见map操作add增加k-vremove删除k-vreassign修改k-vlookup查询k-v增删改查的操作。golang里的map结构主要有两种数据结构哈希查找表Hashtable哈希查找表用一个哈希函数将key分配到不同的桶。哈希查找表一般会存在碰撞问题,简而言之,不同的k
- 上位机知识篇---常见Windows操作
Ronin-Lotus
上位机操作篇windows交互程序人生人机交互学习笔记经验分享
文章目录前言Windows常见的电脑快捷操作1.快速切换程序2.一键锁屏3.打开文件管理4.显示桌面5.切换当前页面6.关掉页面7.恢复关闭掉的页面8.放大显示屏显示9.缩小显示屏显示Windows常用CMD命令1.启动cmd2.文件操作(1)dir(2)cd(3)mkdir(4)rmdir(5)copy(6)move(7)del(8)rename3.计算机系统管理(1)systeminfo(2)
- 解决Docker服务注册到Eureka instanceId显示172.../以及Dockerfile和 docker-maven-plugin的简单使用
林纳斯_
dockerdocker微服务eureka172.
一、CentOS下安装DKcentos内核高于3.10:通过uname-r命令查看当前的内核版本移除旧版本:$sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-selinux\docker
- html5贪吃蛇特点,简易html5贪吃蛇
雪小梨
html5贪吃蛇特点
1.[图片]E6~0%QPA46ER843UQJ$0Z`H.jpg2.[文件]snake.htmlThesnakegamefunctionlog(msg){console.log(msg);}Yourbrowsercannotsupporthtml5.this.onkeydown=function(e){varcode=e.keyCode;if(code==37)changeMove(3);if(
- 一个非常好用的图片切割工具(c# winform开发)
源之缘-OFD解决方案之道
c#winform
本人业余时间开发了一个图片切割工具,非常好用,也很灵活!特别对大型图片切割,更能体现出该软件的优势!开发工具为winform功能说明可以设定切割的高度和宽度。切割线可以上下拖动,可以增加一个切割区域,可设定某个区域不参与切割。主要技术点分析切割区域确定每个切割区域是一个长方形。用一个结构标识该属性。1classSpliteMoveIndex2{3publicenumEN_DIR4{5NON,6HO
- ubuntu GRPC protobuf 环境安装
zhurui_xiaozhuzaizai
我的经验linux系统linuxubuntubash
个人开发机:申请完后进去:passwd设置密码#如果cmake低于3.15,gcc/g++低于7.0,请根据文档进行安装。查看版本的方式cmake-version#检查cmake版本gcc-v#检查gcc/g++版本g++-v1cmake安装与使用sudoapt-getautoremovecmakewgethttps://cmake.org/files/v3.23/cmake-3.23.0-lin
- 汇编语言:基于x86处理器考前笔记 | 第三章 汇编语言基础
正小安
课程所学笔记
3.1基本语言元素程序框架程序从mainPROC开始,到mainENDP结束,最后以ENDmain标识程序入口与地址。如mainPROC,调用函数(子程序)ExitProcess,moveax,5,addeax,6,INVOKEExitProcess,0,mainENDP。声明变量使用.data伪指令声明变量,如.datasumDWORD0声明了32位变量sum,并可在程序中对其赋值,如movsu
- 【嵌入式——QT】QT多线程编程
炯哈哈
qt开发语言嵌入式c++
这里介绍的是moveToThread的方式,继承QThread的方式可以参考我的另一篇文章【嵌入式——QT】QThread创建多线程编程实现首先创建一个类,但是这个类一定要继承QObjectSerialWorker.h#ifndefSERIALWORKER_H#defineSERIALWORKER_H#include#include#include#include#include#includec
- 【C语言】内存函数详解与模拟实现
利刃大大
C语言c语言开发语言
文章目录拓展:Ⅰ.memcpy--内存拷贝1、函数介绍与使用2、模拟实现Ⅱ.memmove--内存拷贝1、函数介绍与使用(与memcpy函数的区别)2、模拟实现Ⅲ.memcmp--内存比较1、函数介绍与使用2、模拟实现Ⅳ.memset--内存设置1、函数介绍与使用2、模拟实现拓展:符号扩展是指将有符号类型的值转换为更宽的类型时,如果符号位为1,则在更高位填充1,以保持符号不变。例如,将signed
- java中如何在集合遍历过程中删除元素(5种方法对比、案例、常见的错误及其后果)
小胡说技书
Java+SSM+DBjavaList开发语言
文章目录一、问题背景二、不同解决方案的对比1.使用`Iterator.remove()`2.`for-each`+手动删除3.`for`循环反向遍历4.`List.removeIf()`(Java8+)5.使用`Stream.filter()`(Java8+)三、常见的错误及其后果四、通过案例展示具体应用案例:删除列表中的偶数五、总结与补充在Java开发中,集合遍历过程中删除元素是一个常见但容易出
- [Python学习笔记1]——列表的简单操作
秋风、萧瑟
python学习笔记
目录1.列表的定义2.访问列表元素3.列表的改、增、删3.1列表元素的修改3.2列表元素的添加3.2.1使用方法append()在列表末尾添加元素3.2.2使用方法insert()在列表中插入元素3.3在列表中删除元素3.3.1使用del语句删除元素(根据索引删除)3.3.2使用pop()方法删除元素(根据索引删除,可将删除值再利用)3.3.3使用remove()方法删除元素(根据值删除元素)4.
- python列表
[禾火]
链表数据结构散列表
目录1.列表(list(线性表))2.定义一个列表1.直接用2.用list()3.常见的方法1.append(object)-------向列表尾部追加元素2.insert(index,object)-----向指定位置(index)添加元素3.sort()-----列表进行排序4.index()-------查找元素的位置5.reverse()------将列表进行翻转6.remove()---
- Sass报错: Using / for division is deprecated
Pinia_0819
vuesass前端css
运行项目时报以下错误::Using/fordivisionisdeprecatedandwillberemovedinDartSass2.0.0.Recommendation:math.div($px,$screenWidth)Moreinfoandautomatedmigrator:https://sass-lang.com/d/slash-div官方还很贴心做了一个一键迁移的工具,执行下面两行
- docker + nginx +微信小程序后台 (springboot)
少侠好刀法
dockernginxdocker容器
1.资源环境阿里云ecs服务器、centos8系统、docker2.0、nginx、微信小程序、springbootjar包、ssl证书、已备案的域名www.dan-huang.cn2.centos8中安装docker卸载原有docker环境yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\
- Linux安装docker,安装配置xrdp远程桌面
代码讲故事
服务器linuxdockerrdpxrdp远程桌面远程连接图形化
Linux安装docker,安装配置xrdp远程桌面。1、卸载旧版本docker卸载旧版本docker命令yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine现在就是没有旧版本的dock
- 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