equals和==的区别
equals是比较内容是否相同,多用于引用数据类型
==是比较引用地址是否相同,一般多适用于基本数据类型比较
String、StringBuffer和StringBuilder的区别
- 首先最大的区别是String是不可变的,而StringBuffer和StringBuilder是可变的,即String为字符串常量,而StringBuilder和StringBuffer均为字符串变量
- String和StringBuffer是线程安全的,而StringBuilder是非线程安全的
- 最后String是java.lang.String而StringBuffer和StringBuilder都是继承自AbstractStringBuilder(是一个抽象类)
- 执行速度:这三个类在进行操作时的速度关系为:StringBuilder > StringBuffer > String。
- 由于String中进行操作时都会新建一个char[]数组代替原来的char[]数组,所以速度最慢
- StringBuffer线程安全,每个方法都有synchronized同步阻塞,所以操作速度受影响
- StringBuilder没有同步阻塞的限制,所以操作速度最快
- 使用场景:a 如果要操作少量的数据用 String;b 单线程操作字符串缓冲区 下操作大量数据用 StringBuilder;c 多线程操作字符串缓冲区下操作大量数据用 StringBuffer
原生XMLHttpRequest和FetchAPI的使用
原生XMLHttpRequest
//创建异步对象
var xhr = new XMLHttpRequest();
//post请求一定要添加请求头才行不然会报错
//xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.open('GET', url);//设置响应类型
xhr.responseType = 'json';//响应数据格式
//发送时
xhr.onload = function() {
console.log(xhr.response);
};
//加载时
xhr.onerror = function() {
console.log("Oops, error");
};
//发送请求
xhr.send();
// 注册事件
xhr.onreadystatechange = function () {
// 这步为判断服务器是否正确响应
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);
}
};
FetchAPI
//链式编程
fetch(url).then(function(response) {
return response.json();//设置数据响应格式
//共有8种响应类型:clone();redirect();arrayBuffer();formData(;)blob();text();json()
//可简写response=>response.json()
}).then(function(data) {
console.log(data);//响应回来的数据
}).catch(function(e) {
console.log("Oops, error");//错误时
});
HTTP 协议的基本知识
8种请求方法:
1、 OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8**、CONNECT**
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7步请求流程
- 建立TCP连接
- Web浏览器向Web服务器发送请求命令
- Web浏览器发送请求头信息
- Web服务器应答
- Web服务器发送应答头信息
- Web服务器向浏览器发送数据
- Web服务器关闭TCP连接
将Servlet 的接口设计和具体实现分开,这样做有什么好处?
- 易于封装。代码可封装起来,提供给接口使用
- 可直接使用户明白具体功能有哪些,简洁明了
- 二者分离,可减少之间的依赖,修改一方对另一方的影响较小
- 代码具有一定的保密性,实现接口即可