- WLAN与WIFI
lpl还在学习的路上
网络
网工知识:WLAN和WIFI有什么区别_哔哩哔哩_bilibili请问WLAN就是Wifi吗?不懂网络的人也能听懂!_哔哩哔哩_bilibiliWLAN:wirelesslan:无线局域网包括家用WIFI,企业级的无线网络。包括ZigBee,红外和蓝牙技术。WIFI:802.11无线局域网技术。WIFI技术是WLAN的主流技术标准。
- 2024.3.22 ARM
Carl余
arm开发单片机嵌入式硬件
实现三个按键的中断main.c:主函数初始化#include"key_inc.h"#include"uart4.h"//封装延时函数voiddelay(intms){inti,j;for(i=0;iIAR&0x3ff;switch(irqno){case99:puts("key1_intc");//清除GICD中断排队标志GICD->ICPENDR[3]|=(0X1FPR1|=(0X1ICPEND
- js的MediaRecorder录音录视频方法笔记
大猫会长
javascript前端开发语言
/***录音举例说明*https://www.cnblogs.com/zaijin-yang/p/17306578.html*通过web录制视频(摄像头)并上传*https://cloud.tencent.com/developer/article/1818977?areaId=106001*视频录制基础知识-MediaRecorder*https://www.jianshu.com/p/ad7d
- kubernetes解决nginx跨域问题
滴流乱转的小胖子
官方文档出处:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#enable-cors%20%E4%BD%9C%E8%80%85%EF%BC%9AKaliArch%20%E9%93%BE%E6%8E%A5%EF%BC%9Ahttps://www.imooc.com/artic
- visual basic for application 绘制多边形
太空漫步11
ppt
绘制多边形的代码Sub绘制多边形()DimtriArray(1To4,1To2)AsSingletriArray(1,1)=25triArray(1,2)=100triArray(2,1)=100triArray(2,2)=150triArray(3,1)=150triArray(3,2)=150triArray(4,1)=25'Lastpointhassamecoordinatesasfirst
- 周期性任务线程池 - ScheduledThreadPoolExecutor & DelayedWorkQueue
weixin_44612246
java开发语言
今天要复习一下线程池,这同样是很久以前的一篇文章,格式不对所以看起来太难受,所有修改格式,重新发一下。ScheduledThreadPoolExecutor是ThreadPoolExecutor的扩展类,用来实现延迟执行的任务、或者周期性执行的任务。一般来讲,周期性任务或者定时任务包含两大组件:一个是执行任务的线程池,一个是存储任务的存储器。还记得Quartz吗?企业级定时任务框架,最重要的内容其
- 智慧路灯杆会用到哪些通信方式
ianvtenr
智慧城市智慧路灯杆物联网
智慧路灯杆系统的通信方式通常包括有线通信和无线通信。有线通信可采用光纤、网线、电力线载波等方式,且一般以光纤和网线为主,电力线载波为备选;无线通信可采用NB-IoT、3G/4G/5G、LoRa、ZigBee等方式。一、智慧路灯杆有线通信方式:主要是让边缘端的杆载设备链接到智慧灯杆网关,亦可让网关通过光纤链接到云平台系统。1、光纤通信:支持对接包括杆载WiFiAP、手拉手环形组网等应用。2、网线:网
- FPGA常用通信协议 —UART(二)---UART接收
毛豆仙人
fpga开发
一、信号说明因为是接收端,所以输入的是RX,发送端一次发8位串行数据,在本模块中,要接收这8位数据并转换为并行数据,因为最终要实现数据的回环,这8位并行数据会在下一个模块中被转换为串行数据再发出去,需要一个数据有效信号,当它拉高时表示八位数据接收完成,可以进行并串转换并发送了。时钟采用50Mhz,下面是信号列表reg1,reg2,reg3rx打拍后的信号work_en拉高表示正在接收信号bote_
- 冒泡排序算法
向阳花自开
前端开发算法数据结构
逻辑:比较数组中,相邻两个数,如果第一个数比第二个数大,那么就交换他俩位置;每一次比较都会产生一个最大或最小数;下一次可以少一次排序一次循环,直到结束实现步骤:两层循环,外层循环表示要比较多少次,内层循环,比较判断两个数,交换位置。4个数比较3次,n个数比较n-1次:实现代码:vararr=[3,4,1,2]vartemp=0for(vari=0;iarr[j+1]){temp=arr[j]arr
- Springboot(-) Quartz定时任务cron表达式详解
charles_lun
Java菜鸟到老鸟的蜕变之路
目录前言正文1.cron表达式组成2.子表达式范围3.子表达式格式4.字符含义5.表达式例子结束语前言在做springboot整合Quartz的时候,看到指导手册里推荐用cron表达式,然后抱着试试看的态度,额,刚一上手,感觉又回到了正则表达式的恐惧之中,乱,晕,硬着头皮看,终于看完了,有了一定的理解,赶紧整理记录下来,方便自己查看,也方便新接触的同学理解。正文1.cron表达式组成cron表达式
- 使用Composer 来安装自己的PHP代码库
_玖-幽
PHP开发composersdkphp打包项目
一、将自己的PHP代码打包1.1打包项目在项目根目录创建composer.json,就可以打包项目,require写入你的项目依赖,name是自己项目的名字,格式:团队/项目名称{"name":"ciara/hello-world","require":{"monolog/monolog":"1.0.*"}}1.2指定包版本composer可以自动识别Git版本,也可以在composer.json
- leetcode-快速排序法和冒泡排序法
浦东新村轱天乐
leetcodeleetcode算法排序算法
冒泡排序视频讲解快速排序视频动画演示#include#includeusingnamespacestd;//1.quickSort(arr,0,n-1);注意函数调用是左闭右闭区间,所以递归调用的两次也是左闭右闭voidquickSort(std::vector&arr,intlow,inthigh){if(low&arr){intn=arr.size();for(inti=0;iarr={1,1
- #FPGA(基础知识)
GrassFishStudio
fpga开发
1.IDE:QuartusII2.设备:CycloneIIEP2C8Q208C8N3.实验:正点原子-verilog基础知识4.时序图:5.步骤6.代码:
- 【万卷书】将要去田间耕作的农妇-《常见之华人容貌》1920年代
般若心行
关注“般若心行”,看更多经典老照片20世纪20年代的摄影书有一位来自西方的一位摄影师卡特(J.C.Carter);他以社会观察家的敏锐思考,用摄影记录各色中国人的日常生活百态;最终以24幅中国人肖像照呈现出来,采用珂罗版印刷,手工贴入内页;最终出版了摄影书《FamiliarChineseFaces》《常见之华人容貌》;它们记录了各色中国人的日常生活百态,这些中国人脸上的表情,淋漓尽致地绘制了中国百
- 排序算法汇总
旭氏美术馆
js排序算法javascript算法
选择排序简单选择排序复杂的插入排序时间.O(n2)空间O(1)functionsort(arr){for(i=0;iarr[j]){lettp=arr[i]arr[i]=arr[j]arr[j]=tp}}}}letarr=[2,1,3,8,4,6]sort(arr)console.log(arr)堆排序复杂的插入排序时间.O(nlog2n)空间O(1)functionheapAdjust(arr,
- Spring Boot 集成 Quartz 实现定时任务
猿泰山
springboot后端java
SpringBoot集成Quartz实现定时任务在SpringBoot应用中,我们经常需要执行一些定时任务,如每天发送报表、定时更新数据库等。虽然SpringFramework自带了一个简单的定时任务功能(@Scheduled),但在一些复杂场景下,我们可能需要更强大的定时任务框架,这时Quartz就是一个很好的选择。Quartz是一个开源的作业调度框架,它允许你以非常灵活的方式定义任务执行的时间
- [Backtracking/DP]63. Unique Paths II
野生小熊猫
分类:Backtracking/DP时间复杂度:O(n*m)63.UniquePathsIIArobotislocatedatthetop-leftcornerofamxngrid(marked'Start'inthediagrambelow).Therobotcanonlymoveeitherdownorrightatanypointintime.Therobotistryingtoreacht
- MicroPython开发板:pyboard快速参考
原子星
物联网开发micropythonpython单片机嵌入式硬件python
pyboard是MicroPython官方支持的开发板,具有很好的兼容性和易用性,下面的内容是pyboard开发过程中最常用的一些参考。开发板管脚下图为PYBv1.1开发板的引脚示意图:下面是pyboard的快速参考开发板的基本控制#使用pyb模块importpybpyb.repl_uart(pyb.UART(1,9600))#在UART(1)上复制REPLpyb.wfi()#暂停CPU,等待中断
- 本地个性化聊天机器人CHAT WITH RTX
崎山小鹿
神经网络人工智能神经网络gpt
英伟达推出了自家版本的ChatGPTChatwithRTX是一个技术演示,现已免费>>>下载<<<,可让用户使用自己的内容个性化聊天机器人,并由本地NVIDIAGeForceRTX30系列GPU或更高版本(具有至少8GB视频随机存取存储器或VRAM)加速系统要求平台视窗图形处理器NVIDIAGeForce™RTX30或40系列GPU或NVIDIARTX™Ampere或AdaGenerationGP
- 2018-05-22
如果我名王玉珏
3.Charles,anatheist,iswritingapaperontheissueofprayerinpublicschools.Heiswellacquaintedwiththeargumentsadvancedbythosewhoopposesuchprayerbutunfamiliarwiththeothersideoftheissue.Charlesreasonsthatbecau
- 前端自动生成二维码并长按识别跳转 Vue
天使的同类
二维码前端vue.js
下载arale-qrcode依赖:npmiarale-qrcode--save引用依赖:importAraleQRCodefrom"arale-qrcode";代码部分://生成二维码按钮点击生成二维码//生成二维码弹窗importAraleQRCodefrom"arale-qrcode";//引入依赖exportdefault{name:"index",data(){return{show:fa
- Springboot+Quartz集群配置
langzitianya
SpringBootJAVAquartz集群springboot
看了一些网上的文章,都不太合我意,集众家之长,来个自己的版本。原理和介绍就不搬来搬去了,直接上代码吧。目录一.POM文件二.application-quartz.properties三.java文件3.1Application3.2QuartzSchedulerConfig配置一下,类名自己随便改3.3StartApplicationListener应用启动时调用一下QuartzTasks添加定时
- 排序算法总结(1)
chuaa
1.冒泡排序functionbubbleSort(arr){for(leti=0,len=arr.length;iarr[j+1]){[arr[j],arr[j+1]]=[arr[j+1],arr[j]];}}}returnarr;}2.选择排序functionselectSort(arr){for(leti=0,len=arr.length;iarr[j]){minIndex=j;}}[arr[
- The night cooking
搬布
Tootiredandhungry,Icookednoodlesformyselftonight.Afterworkthisafternoon,Iplayedpingpongwithcolleaguesanddidn’thaveanyfood.ThenIwereondutytill21:30o’clock.WhenIarrivedhome,it’s22:00o’clock.Icookedeggsa
- 冒泡排序及其优化
B·O·P
排序算法算法数据结构
冒泡排序int[]arr={1,3,2,9,4,7,2,8};//比较多少轮(n个数字比较n-1次)for(inti=0,n=arr.length;iarr[j+1]){//比较结果为升序排列,如果想要降序排列结果将>替换为arr[j+1]){//交换(只有整形数值可以用异或的形式进行交换)arr[j]=arr[j]^arr[j+1];arr[j+1]=arr[j]^arr[j+1];arr[j]
- Springboot2.6整合Quartz2.3.2找不到数据源问题记录
lzh_me
知新springboot2.6quartz多数据源
PS:问题没有彻底解决,先记录一下。问题产生原因是springboot版本问题,具体原因需要再找。(或许是quartz的配置方式变了)版本:springboot2.6.0,quartz2.3.2用的都是默认配置,没什么改动。以下是pom.xml里面的,贴出来参考。org.springframework.bootspring-boot-starter-parent2.6.0org.springfra
- STM32 USART详细解读(理论知识)
花落已飘
STM32框架式编程stm32嵌入式硬件单片机
文章目录前言一、同步传输和异步传输二、UART协议三、UART硬件结构1.波特率,数据位,校验位,停止位设置2.数据发送流程3.数据接收流程4.中断控制总结前言本篇文章来给大家讲解一下STM32中的USART,USART是STM32中非常重要的一个模块,本篇文章将从STM32F1的参考手册出发进行讲解。一、同步传输和异步传输同步传输和异步传输是指在数据通信中数据传输的两种基本方式。它们之间的主要区
- 鸿蒙开发 之 工具安装和环境搭建
jiojio冲冲冲
鸿蒙开发harmonyos华为鸿蒙
DevEcoStudio面向HarmonyOS应用及元服务开发者提供的集成开发环境(IDE),助力高效开发。ArkTS语言ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用ArkUIArkUI是一套构建分布
- 排序算法总结
CodeMonkey-D
JavaSE排序算法算法java
排序算法冒泡排序N个数字进行冒泡排序,一共比较N-1轮,每轮比较N-1-i次,每次相邻的元素进行比较,满足条件进行交换publicstaticvoidmain(String[]args){//冒泡排序int[]arr={9,3,6,2,1,4,5,7};//外层循环控制轮数//内存循环控制每轮比较的次数for(inti=0,n=arr.length;iarr[k+1]){//采用异或运算符交换相邻
- 粘的ScalersTalk第七轮新概念朗读持续力训练Day 25 211108
粘_NIAN
练习材料:Lesson25DotheEnglishspeakEnglish?IarrivedinLondonatlast.Therailwaystationwasbig,blackanddark.Ididnotknowthewaytomyhotel,soIaskedaporter.InotonlyspokeEnglishverycarefully,butveryclearlyaswell.Thep
- 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