网络基础

1.常见的HTTP请求头和响应头及其作用

  • 常见请求头(Request Headers)
    • Host:指定请求的服务器域名和端口
    • User-Agent:客户端浏览器或应用标识
    • Accept:声明客户端可接收的响应数据类型(如 text/html)
    • Content-Type:请求体的数据类型(如 application/json)
    • Cookie:携带服务器设置的Cookie信息
    • Authorization:用于身份验证(如 Bearer token)
  • 常见响应头(Response Headers)
    • Content-Type:响应体的数据类型(如 application/json)
    • Set-Cookie:服务器向客户端设置Cookie
    • Cache-Control:控制缓存策略(如 no-cache)
    • Location:重定向目标URL(如 302 跳转)

2.Cookie和Session的区别

  • Cookie
    • 存储在客户端(浏览器)
    • 可设置过期时间
    • 大小受限(~4KB)
    • 可能被篡改(需加密)
  • Session
    • 存储在服务器端
    • 默认基于会话(浏览器关闭失效)
    • 存储数据量更大
    • 更安全

Cookie工作原理:
(1) 服务器通过 Set-Cookie 响应头下发Cookie。
(2) 浏览器存储Cookie,后续请求自动携带 Cookie 请求头。
(3) 服务器读取Cookie进行身份验证或状态管理。

3.常见HTTP状态码

  • 200 OK:请求成功
  • 301 Moved Permanently:永久重定向
  • 302 Found:临时重定向
  • 400 Bad Request:请求语法错误
  • 401 Unauthorized:未认证
  • 403 Forbidden:无权限访问
  • 404 Not Found:资源不存在
  • 500 Internal Server Error:服务器内部错误

4.Ajax请求及实现

Ajax(Asynchronous JavaScript and XML) 是一种异步请求技术,无需刷新页面即可获取数据

示例:
(1) 原生JavaScript:

1
2
3
4
5
6
7
8
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.example.com/data", true); // 异步请求
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(JSON.parse(xhr.responseText)); // 解析响应数据
}
};
xhr.send();

(2) 现代方式(Fetch API):

1
2
3
4
fetch("https://api.example.com/data")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));

5.HTML5新特性

  • 语义化标签:< header >, < footer >, < article >, < section >
  • 多媒体支持:< video >, < audio >
  • 本地存储:localStorage, sessionStorage
  • Canvas/SVG绘图:动态图形渲染
  • Web Workers:多线程计算

6.JavaScript闭包

闭包(Closure) 是函数与其词法环境的组合,允许函数访问外部作用域的变量。

示例:

1
2
3
4
5
6
7
8
9
10
function outer() {
let count = 0;
return function inner() {
count++;
console.log(count);
};
}
const counter = outer();
counter(); // 1
counter(); // 2

作用: 封装私有变量、实现模块化。

7.JSON数据格式

JSON(JavaScript Object Notation) 是轻量级数据交换格式。

示例:

1
2
3
4
5
6
const obj = { name: "Alice", age: 25 };
const jsonStr = JSON.stringify(obj); // 转为JSON字符串
console.log(jsonStr); // {"name":"Alice","age":25}

const parsedObj = JSON.parse(jsonStr); // 解析回对象
console.log(parsedObj.name); // Alice

8.正则表达式验证邮箱

1
2
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test("test@example.com")); // true

9.Jsoup CSS选择器 vs XPath

(1) Jsoup CSS选择器示例:

1
Elements links = doc.select("a[href]"); // 获取所有带href的<a>标签

(2) XPath示例(需结合其他库如Jsoup+XPath):

1
//a[@href]  # 获取所有带href的<a>标签

区别:

  • CSS选择器:更简洁,适合HTML解析。
  • XPath:功能更强大,支持复杂路径查询。

10.WebMagic核心组件

  • Downloader:下载网页
  • PageProcessor:解析页面(定义爬取逻辑)
  • Scheduler:URL调度(去重、队列管理)
  • Pipeline:数据存储(如存数据库)

11.MyBatis vs Hibernate

  • MyBatis
    • SQL手动编写
    • 更灵活,适合复杂查询
    • 基于XML/注解
  • Hibernate
    • 自动生成SQL
    • 更自动化,适合简单CRUD
    • 基于JPA标准

网络基础
http://example.com/2025/01/10/网络基础/
作者
yunwx
发布于
2025年1月10日
许可协议