- 原型链
Christoles
1.什么是原型链?原型链: 当我们需要调用一个变量的时候,那么JS会给我们提供一个搜索机制,从当前的作用域范围内进行查询; 如果没有,则继续往上查询,直到查出来为止; 如果全局作用域内都没有这个变量的时候,就结束查找; 像这样当前作用域内往全局作用域一层一层往上查找形成的链,我们称为原型链(也称为作用域链)。proto:我们可以通过这个原型链找来到对象的父级语法:proto前后各2个下划线
- 关于ES6类的继承自己的一些见解和总结
宋小高
前端学习es6原型模式javascript
一丶前三种继承方式1.原型链继承(代码如下)//缺点:原型上的数据共享,所以原型创建的实例数据会互相影响constParent_1=function(){}Parent_1.prototype.getName=function(){return'宋';}constChild_1=function(){}Child_1.prototype=newParent_1()//child的原型是ChildC
- JS之对象精讲(一)
坤坤不会编程
精讲JSjavascript开发语言正则表达式json前端
文章目录对象的属性和访问方式对象的属性数据属性访问器属性属性的访问方式创建对象1.基于Object()构造函数2.基于对象字面量3.基于工厂方法模式4.基于构造函数模式5.基于原型对象的模式6.构造函数和原型混合模式7.基于动态原型模式对象克隆浅克隆深克隆JSON序列化和反序列化原型对象原型对象、构造函数、实例之间的关系实例属性的读取顺序重写原型对象原型链原型链的特点属性区分_proto_属性JS
- 【面试经验】滴滴 秋招储备实习 前端面经
litterfinger
面试经验面试前端职场和发展
滴滴秋招储备实习前端面经时间线:5.1511点半一面,下午2点半二面一面●自我介绍+项目介绍●拷打项目●文件断点续传+切片上传●不知道盒子宽高情况下水平垂直居中●transform的属性●scale是怎么放大盒子宽高的●数据类型●原型和原型链●做几道js题二面timeline:5.152:30自我介绍拷打项目(这次竟然没问文件上传的实现)v-if和v-show的区别,为什么要用v-show替换v-
- Object.prototype.hasOwnProperty.call()2020-12-24
猴逃逃
JavaScript中Object对象原型上的hasOwnProperty()用来判断一个属性是定义在对象本身而不是继承自原型链。obj.hasOwnProperty(prop)参数prop要检测的属性字符串名称或者Symbol(ES6)o=newObject();o.prop='exists';o.hasOwnProperty('prop');//返回trueo.hasOwnProperty('
- Javascript归纳与总结——this指向及其改变、new关键字与原型链、异步、闭包和函数防抖与节流
GISer_Jinger
面试题目Javascriptvue.js前端javascript
this指向及其改变普通函数在调用时,this为obj.obj1.fun(),this->obj1,箭头函数在声明定义时this->obj。Javascript中bind、call、apply區別-CSDN博客new关键字与原型链从原型链视角解读VueComponent与Vue关系_vue中重要的原型链关系-CSDN博客prototype这个属性只有函数对象才有!(构造)函数的原型对象_proto
- JS 常见的 6 种继承方式
杨大东
javascript原型模式开发语言
目录原型链继承构造函数继承(借助call)组合继承(前两种组合)原型式继承寄生式继承寄生组合式继承--最优原型链继承原型链继承涉及的是构造函数、原型、实例化对象,这三者之前存在一定的关系:●每一个构造函数都有一个原型对象(prototype)●原型对象中包含一个指向构造函数的指针(constructor),指向对应的构造函数●实例中包含一个原型对象的指针([[Prototype]],这个内部属性无
- JS中Object.prototype.toString方法解读
OEC小胖胖
JavaScriptjavascript原型模式开发语言
Object.prototype.toString是JavaScript中一个非常重要的方法,用于获取对象的类型信息。它的主要功能是返回一个表示对象类型的字符串。1.基本用法Object.prototype.toString是Object原型链上的一个方法,所有对象都可以访问它。默认情况下,它返回一个类似[objectType]的字符串,其中Type是对象的类型。例如:console.log(Ob
- 【JS】this 指向介绍(箭头函数)
阿昊在
ES6javascriptes6前端
目录全局环境下函数直接调用对象中的this对象内部方法的this指向调用这些方法的对象,原型链中this构造函数中thiscall&applybind方法DOM事件处理函数中的this&内联事件中的thissetTimeout&setInterval箭头函数中的this在普通函数中,this指向调用其所在函数的对象,而且是离谁近就是指向谁(此对于常规对象,原型链,getter&setter等都适用
- javaScript如何判断一个对象是否存在某个属性
道长道长IOT
javascript开发语言
在JavaScript中检查一个对象是否包含某个属性可以通过几种不同的方法实现。以下是几种常用的方法:1.in操作符in操作符可以用来检测一个属性是否存在于对象中,包括原型链上的属性。constobj={foo:'bar'};if('foo'inobj){console.log('fooisintheobject');}2.hasOwnProperty()方法hasOwnProperty()方法只
- js实现继承的几种方式
AAA正在输入中
javascript开发语言ecmascript
1.原型链继承JavaScript中,每个函数都有一个prototype属性,这个属性是一个指向原型对象的指针。原型对象默认包含一个名为constructor的属性,指向原函数。当我们使用构造函数创建实例时,每个实例内部都有一个指向其构造函数原型对象的指针__proto__(在ES6中,通过Object.getPrototypeOf()方法访问)。如果原型对象中包含一个指向另一个类型的原型对象的指
- javaScript基础面试题 --- 原型链
临在❀
前端JS面试题原型模式
1、原型可以解决什么问题对象共享属性和共享方法2、谁有原型?函数有prototype对象有__proto__3、查找顺序:当查询一个对象的属性时,JavaScript会首先检查对象自身是否有这个属性。如果对象本身没有该属性,那么JS会查找该对象的原型。如果原型上也没有这个属性,则继续查找原型的原型,如此类推,直至原型链的顶端(null)。如果沿着原型链都没有找到该属性,那么返回undefined。
- javaScript基础面试题 --- JS继承有哪些
临在❀
前端JS面试题javascript前端开发语言
方法一:extends方法在构造函数constructor中写super(),必须的classParent{constructor(){this.age=18}}classChildextendsParent{constructor(){super();this.name='张三';}}leto1=newChild();console.log(o1,o1.name,o1.age)方式二:原型链继承
- 前端笔记+面试
huahua1112520
前端笔记面试
一:JS基础部分原型链和原型每个对象都有_proto_属性,并且指向它的原型对象每个构造函数都有它的prototype原型对象prototype原型对象里的constructor指向它的构造函数new一个构造函数会形成它的实例对象深拷贝与浅拷贝涉及堆栈内存、引用类型的区别如何深拷贝:递归拷贝&&利用JSON函数深拷贝JSON.parse(JSON.stringify({对象}))堆栈内存堆内存:接
- 前端面试总结——原型和原型链
旺sir
前端
1.classclassPeople{constructor(name){this.name=name;}eat(){console.log(this.name+'iseatingsomething')}}constzhangsan=newPeople(张三);console.log(zhangsan.name);zhangsan.eat();classStudentextendsPeople{c
- 前端面试每日一题——什么是原型链?
前端技术迷
面试题javascript
什么是原型?在JS中,每个函数在被创建的时候就会有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象就是这个函数的原型对象(也就是原型),它是用来共享所有实例的属性和方法的地方,所以原型其实就是函数的伴生体(与生俱来的)vara=[1,2,3,4,5];a.__proto__===Array.prototype;//true什么是原型链?原型链,简单理解就是原型组成的链。当访
- 前端面试——什么是原型和原型链
JSU_曾是此间年少
前端原型原型链
背景最近看到了很有意思的东西,原型和原型链我们首先看看MDN怎么讲:继承与原型链-JavaScript|MDN不过文档里面也没有给出原型的定义???不过里面提到原型链,是指对象层层向上寻找原型形成的路径就叫做原型链后面我参考了一些文章,在这里做一下总结:参考(超赞):前端面试必考——原型及原型链(涵实例+话术)我自己的定义:原型:每个函数创建好之后,都会添加一个prototype属性,这个就是原型
- JS中的八种继承方法
酥脆角
javascript开发语言ecmascript
1.原型链继承:原型链继承是JavaScript中最基本的继承方式。每个对象都有一个原型对象,通过原型链将属性和方法沿着对象链传递下来。在原型链继承中,通过将子构造函数的原型对象指向父构造函数的实例,实现了继承。这意味着子对象可以访问父对象原型链上的属性和方法。functionParent(){this.name='Parent';}Parent.prototype.sayHello=functi
- 原型对象与原型链
网站打工人
javascript原型模式开发语言
原型对象实际上每一个构造函数都有一个名为prototype的属性,就是原型的意思,prototype的是对象类据类型,称为构造函数的原型对象,每个原型对象都具有constructor属性代表了该原型对象对应的构造函数。 functionPerson(){ } //每个函数都有prototype属性 console.log(Person.prototype);了解了JavaScript中构造函数
- JS中的继承
浅墨_东
javascript开发语言ecmascript
在JavaScript中,有多种实现继承的方法。下面介绍几种常见的继承方式以及它们的优缺点:原型链继承原型链继承是JavaScript中最基本的一种继承方式。它的原理是通过将父类的实例作为子类的原型(prototype)来实现继承。functionParent(){this.name='Parent';}Parent.prototype.sayHello=function(){console.lo
- JS原型链面试题
qq_42431718
javascript
题目1functionPerson(name){this.name=name;}Person.prototype.sayHello=function(){console.log('Hello,'+this.name);};varjohn=newPerson('John');john.sayHello();请问上述代码的输出结果是什么?答案1输出结果是:Hello,John题目2functionAn
- Object 对象与继承
许先生__
通过原型链,对象的属性分成两种:自身的属性和继承的属性。JavaScript语言在Object对象上面,提供了很多相关方法,来处理这两种不同的属性。Object.getOwnPropertyNames()Object.getOwnPropertyNames方法返回一个数组,成员是对象本身的所有属性的键名,不包含继承的属性键名。Object.getOwnPropertyNames(Date)//["
- JS常见问题
前端碎碎念
面试javascript原型模式开发语言
文章目录如何判断是数组如何判断是数组Array.isArrayconsole.log(Array.isArray(arr))instanceof(instanceof运算符用于验证构造函数的prototype属性是否出现在对象的原型链中的任意位置)console.log(arr1instanceofArray)constructor(实例的构造函数属性constructor指向构造函数)conso
- 【 JS 进阶 】原型对象、面向对象
fans小知
#JSjavascript开发语言ecmascript
目标了解构造函数原型对象的语法特征,掌握JavaScript中面向对象编程的实现方式,基于面向对象编程思想实现DOM操作的封装。了解面向对象编程的一般特征掌握基于构造函数原型对象的逻辑封装掌握基于原型对象实现的继承理解何为原型链及其作用能够处理程序异常,提升程序执行的健壮性编程思想学习JavaScript中基于原型的面向对象编程序的语法实现,理解面向对象编程的特征。面向过程面向过程就是分析出解决问
- javascript进阶知识点
vousmevoyez0613
前端前端
文章目录0.基础回顾1.Json对象2.Array对象3.函数Function0.创建函数的方式1.call()、apply()、bind()方法1)、call()方法2)、apply()方法3)、bind()方法4)、call()、apply()、bind()方法区别5)、手写call、apply、bind函数2.函数防抖和节流(1).防抖(2).节流4.原型与原型链1.原型2.显示原型属性和隐
- 【JavaScript】创建和使用构造函数
好久不见的流星
JavaScriptjavascript前端开发语言
文章目录1.构造函数的概念2.创建和使用构造函数创建构造函数构造函数中的方法原型链3.构造函数的最佳实践使用`instanceof`检查类型使用Object.create创建对象4.总结在JavaScript中,构造函数是一种特殊的函数,用于创建和初始化对象。通过构造函数,你可以定义自己的对象类型,并在创建新对象时进行一些初始化操作。本篇博客将介绍构造函数的概念、创建方式、使用方法以及一些最佳实践
- 【JavaScript】原型链和继承
好久不见的流星
JavaScriptjavascript原型模式开发语言前端
文章目录1.原型链的概念原型原型链2.构建原型链构造函数与原型实例与原型链3.继承的实现原型链继承原型链的问题4.继承的最佳实践构造函数继承(经典继承)组合继承5.ES6中的类和继承6.总结在JavaScript中,原型链和继承是构建对象关系的核心概念之一。理解原型链和继承有助于更好地组织代码、复用逻辑,以及创建灵活的对象结构。本篇博客将介绍原型链的概念、构建方式、继承的实现以及一些实际应用。1.
- 使用 TypeScript 自定义装饰器给类的方法增添监听器 Listener
JerryWang_汪子熙
方法装饰器语法typeMethodDecorator=(target:Object,propertyKey:string|symbol,descriptor:TypedPropertyDescriptor)=>TypedPropertyDescriptor|void;(1)target:对于静态成员来说是类的构造器,对于实例成员来说是类的原型链。(2)propertyKey:属性的名称。(3)de
- 【JavaScript】一文学会JavaScript继承
程序员Syoyu
javascriptjavascript
1.原型链继承原理:让子类的原型等于父类的实例functionAnimal(){this.name='dog'}Animal.prototype.getName=function(){console.log(this.name)}functionDog(){}Dog.prototype=newAnimal()constdog=newDog()console.log(dog.getName())//
- 聊一聊JS的继承
LeonLi_9ea5
常见的继承方式有哪些循序渐进着来看,分为以下几种类(原型链)继承——用父类的实例重写子类原型对象构造函数继承(经典继承)——在子类构造函数中调用父类构造函数组合继承(伪经典继承)——使用原型链实现原型属性继承,借用构造函数实现实例属性继承原型式继承(是对类式继承的封装)——≈Object.create(obj)寄生式继承——对原型式继承二次封装和拓展寄生组合式继承——寄生式+借用构造函数类(原型链
- 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