自定义“请求头”

news2024/9/22 13:28:49

请求头是HTTP请求的重要部分,可以用“头部字典”按需定制请求头。


(笔记模板由python脚本于2024年07月12日 19:28:44创建,本篇笔记适合喜欢钻研web知识点的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


请求头是HTTP请求的重要部分
简析“请求头”
(可以用“头部字典”按需定制请求头)


本文质量分:

96 96 96

本文地址: https://blog.csdn.net/m0_57158496/article/details/140362712

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 简析“请求头”
    • 1、请求头的作用
    • 2、获取请求头的方法
    • 3、 自定义请求头
    • 4、urllib基本用法
      • 1. 网络请求
      • 2. 解码响应内容
      • 3. 请求头
      • 4. 错误处理
      • 5. URL 编码和解码
    • 5、URL解码
    • 6、页面解析
      • 1. 使用正则表达式(`re` 模块)
      • 2. 使用 BeautifulSoup
      • 3. 使用 XML 解析器
      • 4. 使用 JSON 解析器
    • 7、“请求头”的“部件”
    • 8、模拟浏览器访问url
      • 1. 使用Python的`requests`库
      • 2. 使用JavaScript的`fetch` API
      • 3. 使用Curl命令行工具
      • 4. 使用浏览器自动化工具
    • 9、访问url的“实际需求”
      • 信息检索
      • 交互操作
      • 功能测试
      • 网络爬虫
      • 安全检查
      • 网络监控
      • 个人使用
    • 10、按需定制“请求头”
      • 1. 用户代理(User-Agent)
      • 2. 接受类型(Accept)
      • 3. 接受语言(Accept-Language)
      • 4. 接受编码(Accept-Encoding)
      • 5. 内容类型(Content-Type)
      • 6. 认证信息(Authorization)
      • 7. 引用(Referer)
      • 8. Cookie
      • 模拟浏览器访问网页
      • 发送JSON数据到API
      • 发送表单数据
    • 2、算法解析


◆ 简析“请求头”



  请求头(HTTP Request Headers)HTTP 请求中的一个重要部分,它们提供了关于请求、响应以及客户端和服务器之间的通信方式的额外信息。


1、请求头的作用


  • 以下是请求头的一些主要作用
  1. 身份验证:如 Authorization 头可以用于提供认证信息。
  2. 内容类型Content-Type 头告诉服务器请求正文的 MIME 类型。
  3. 编码Accept-Encoding 头用于指定客户端可以处理的编码类型。
  4. 语言Accept-Language 头用于指定客户端接受的语言。
  5. 缓存控制Cache-Control 头用于指定响应的缓存策略。
  6. 用户代理User-Agent 头包含了发出请求的用户代理软件信息,通常用于浏览器识别。
  7. 引用Referer 头包含了当前请求的原始地址,即从哪个页面发出的请求。



回页目录


2、获取请求头的方法


  在 Python 中,可以使用 urllib 模块来获取请求头。


以下是获取请求头的一个示例

import urllib.request
# 发送请求
response = urllib.request.urlopen('http://www.example.com')
# 获取响应头
headers = response.getheaders()
# 打印所有响应头
for header in headers:
    print(header)



回页目录


3、 自定义请求头


  在发送请求时,有时需要自定义请求头,比如模拟浏览器行为或传递特定的信息。


以下是如何在 Python 中使用 urllib 自定义请求头

import urllib.request
# 要发送请求的 URL
url = 'http://www.example.com'
# 自定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-us,en;q=0.5',
    # 可以添加更多的自定义头部
}
# 创建一个请求对象,并设置自定义头部
req = urllib.request.Request(url, headers=headers)
# 发送请求
response = urllib.request.urlopen(req)
# 读取响应内容
html = response.read().decode('utf-8')


  在这个例子中,我们创建了一个 Request 对象,并将自定义的头部字典传递给它。urllib 将使用这些头部信息发送请求。
需要注意的是,某些网站可能会对请求头进行校验,以确保请求来自合法的客户端。如果请求头信息不正确,服务器可能会拒绝请求或返回错误信息。因此,在自定义请求头时,应确保遵守目标网站的要求和规定。



回页目录


4、urllib基本用法


  urllib 是 Python 标准库中的一个模块,它用于读取来自 Web 的数据。


1. 网络请求

使用 urllib.request 可以发送网络请求。

import urllib.request
# 发送请求并读取响应
response = urllib.request.urlopen('http://www.example.com')
html = response.read()
# 打印内容
print(html)

2. 解码响应内容

响应内容通常是以字节形式返回的,可以使用 decode() 方法将其解码为字符串。

html = response.read().decode('utf-8')

3. 请求头

可以通过添加请求头来模拟浏览器行为。

url = 'http://www.example.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
}
req = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(req)

4. 错误处理

使用 try-except 语句可以捕获请求过程中可能出现的异常。

from urllib.error import URLError, HTTPError
try:
    response = urllib.request.urlopen('http://www.example.com')
except HTTPError as e:
    print('HTTPError:', e.code)
except URLError as e:
    print('URLError:', e.reason)
else:
    print('请求成功')

5. URL 编码和解码

使用 urllib.parse 可以对 URL 进行编码和解码。

from urllib.parse import urlencode, urlparse, parse_qs
# 编码查询参数
params = {'key1': 'value1', 'key2': 'value2'}
encoded_params = urlencode(params)
print(encoded_params)  # 输出: key1=value1&key2=value2
# 解析 URL
parsed_url = urlparse('http://www.example.com/index.html;user?id=5#comment')
print(parsed_url.scheme)    # 输出: http
print(parsed_url.netloc)    # 输出: www.example.com
print(parsed_url.path)      # 输出: /index.html
print(parsed_url.query)     # 输出: user?id=5
print(parsed_url.fragment)  # 输出: comment
# 解析查询字符串
query = 'user?id=5&name=John'
parsed_query = parse_qs(query)
print(parsed_query)  # 输出: {'user': [''], 'id': ['5'], 'name': ['John']}


  以上是 urllib 的基本用法。在实际使用中,请根据具体需求选择合适的方法。



回页目录


5、URL解码


  在Python中,你可以使用urllib.parse模块来对URL进行解码。


以下是一个如何对提供的URL进行解码的例子

from urllib.parse import unquote
url = 'https://blog.csdn.net/2202_76097976/article/details/140308602?app_version=6.4.0&code=app_1562916241&csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22140308602%22%2C%22source%22%3A%22m0_57158496%22%7D&uLinkId=usr1mkqgl919blen&utm_source=app'
decoded_url = unquote(url)
print(decoded_url)

  这段代码将输出解码后的URL,其中URL中的百分号编码(例如%7B)会被替换成对应的字符(例如{)。

  unquote函数会将URL字符串中的百分号编码的数据解码成原字符。如果你遇到 U R L URL URL中包含中文或其他非ASCII字符被编码的情况,这个函数也会将这些字符正确解码。如果URL中使用了+来表示空格(这在URL编码中是允许的),并且你希望将+解码成空格,你可以使用unquote_plus函数代替unquote



回页目录


6、页面解析


  urllib 本身并不提供页面解析的功能,但通常与 Python 的其他模块如 re(正则表达式模块)或第三方库如 BeautifulSoup 配合使用来解析读取的页面数据。


以下是几种使用 urllib 读取页面数据并进行解析的方法


1. 使用正则表达式(re 模块)

import urllib.request
import re
# 发送请求并读取页面数据
response = urllib.request.urlopen('http://www.example.com')
html = response.read().decode('utf-8')
# 使用正则表达式查找数据
pattern = re.compile(r'<title>(.*?)</title>')
title = pattern.search(html)
if title:
    print('Page title:', title.group(1))

  这段代码将获取页面标题title,如果re到文本数据,则打印输出到python终端控制台;否则不输出。

  (这段代码,是不科学的。诚然,一般都是可以从url读取到title的,但也不排除title为空的情况。最好,加入一个if分支else: print("页面标题获取失败。"),以保证title为空时有消息字符串提示。)


2. 使用 BeautifulSoup

  BeautifulSoup 是一个第三方库,它提供了一个非常友好的 API 来解析 HTML 和 XML 文档。首先需要安装 BeautifulSoup 和 解析器(通常是 lxmlhtml.parser)。

import urllib.request
from bs4 import BeautifulSoup
# 发送请求并读取页面数据
response = urllib.request.urlopen('http://www.example.com')
html = response.read().decode('utf-8')
# 使用 BeautifulSoup 解析 HTML
soup = BeautifulSoup(html, 'html.parser')
# 获取页面标题
title = soup.title.string
print('Page title:', title)
# 获取所有链接
for link in soup.find_all('a'):
    print(link.get('href'))

3. 使用 XML 解析器

  如果页面数据是 XML 格式,可以使用 xml.etree.ElementTree 模块进行解析。

import urllib.request
import xml.etree.ElementTree as ET
# 发送请求并读取页面数据
response = urllib.request.urlopen('http://www.example.com/some.xml')
xml_data = response.read().decode('utf-8')
# 使用 ElementTree 解析 XML
root = ET.fromstring(xml_data)
# 遍历 XML 文档
for child in root:
    print(child.tag, child.attrib)

4. 使用 JSON 解析器

  如果页面数据是 JSON 格式,可以使用 json 模块进行解析。

import urllib.request
import json
# 发送请求并读取页面数据
response = urllib.request.urlopen('http://www.example.com/some.json')
json_data = response.read().decode('utf-8')
# 使用 json 模块解析 JSON
data = json.loads(json_data)
# 打印 JSON 数据
print(data)


  根据您需要解析的页面数据类型,您可以选择上述方法中的一种。正则表达式适用于简单、有规律的文本匹配,而 BeautifulSoup 则提供了更加强大和灵活的解析能力,适用于复杂的 H T M L HTML HTML 结构。对于 XMLJSON 数据,使用专门的解析器可以更加高效和方便。



回页目录


7、“请求头”的“部件”


  在HTTP请求中,“请求头”(HTTP headers)包含了关于请求、响应或者其他的发送信息。并不是所有的字段都需要在每次请求中出现,但有一些基本的字段通常会被包括在内。


  • 以下是一些常见的HTTP请求头字段
  1. Host: 指定请求的服务器的域名和端口号。
  2. User-Agent: 包含了发出请求的用户代理软件信息。
  3. Accept: 指定客户端能够接收的内容类型。
  4. Accept-Language: 指定客户端接受的语言。
  5. Accept-Encoding: 指定客户端能够解码的内容编码。
  6. Connection: 控制不同请求之间的网络连接的选项。
  7. Cookie: 发送服务器之前存储在客户端的cookie。

  • 以下是一些不一定需要在每次请求中都出现的请求头字段
    • Content-Length: 请求体的长度,仅在发送请求体时需要。
    • Content-Type: 请求体的类型,仅在发送请求体时需要。
    • Authorization: 认证信息,仅在访问受保护的资源时需要。
    • Referer: 当前请求页面的来源页面的地址,不是所有请求都需要。


  根据请求的具体内容和目的,某些请求头字段可能是可选的或者根本不需要。例如,一个简单的GET请求可能不需要Content-LengthContent-Type头,因为没有请求体。而对于需要身份验证的请求,则必须包含Authorization头。


  总的来说,是否包含全部字段信息取决于具体请求的需求。开发者应该根据实际情况和HTTP规范来决定哪些请求头字段是必要的。



回页目录


8、模拟浏览器访问url


  模拟浏览器访问URL通常涉及到使用HTTP客户端来发送请求,并设置相应的请求头来模仿真实浏览器的行为。


以下是一些常见的方法来模拟浏览器访问


1. 使用Python的requests

  你可以使用Python的requests库来模拟浏览器访问,通过设置User-Agent等请求头。

import requests
# 设置请求头,模拟Chrome浏览器的User-Agent
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
# 发送GET请求
response = requests.get('http://example.com', headers=headers)
# 打印响应内容
print(response.text)

2. 使用JavaScript的fetch API

在JavaScript中,你可以使用fetch API来模拟浏览器请求。

// 模拟Chrome浏览器的User-Agent
const headers = new Headers({
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
});
// 发送GET请求
fetch('http://example.com', { headers: headers })
  .then(response => response.text())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

3. 使用Curl命令行工具

在命令行中,你可以使用curl来模拟浏览器请求。

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" \
     http://example.com

这里-A参数用于设置User-Agent请求头。


4. 使用浏览器自动化工具

如果你需要更复杂的模拟,比如处理JavaScript渲染的页面,你可以使用浏览器自动化工具,如Selenium。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 设置Chrome选项以模拟浏览器
options = Options()
options.add_argument("--headless")  # 无头模式
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3')
# 创建WebDriver实例
driver = webdriver.Chrome(options=options)
# 访问网页
driver.get('http://example.com')
# 获取页面源代码
page_source = driver.page_source
print(page_source)
# 关闭浏览器
driver.quit()

请确保在运行Selenium代码之前已经安装了相应的WebDriver。


  以上方法都可以模拟浏览器访问URL,但是如果你需要处理JavaScript渲染的页面或者与页面进行交互,那么使用Selenium等自动化工具会更加合适。



回页目录


9、访问url的“实际需求”


  访问URL的实际需求可以根据不同的场景和目的而有所不同。


以下是一些可能的需求


信息检索

  1. 内容获取:用户或程序需要访问网页以获取信息,如阅读新闻、查询天气、搜索学术资料等。
  2. 数据抓取:开发者可能需要从网页上抓取数据用于数据分析、机器学习或其他处理。

交互操作

  1. 用户交互:用户可能需要登录网站、填写表单、参与论坛讨论等。
  2. API调用:程序可能需要访问API端点以获取数据或触发某些操作,例如在社交媒体上发布消息。

功能测试

  1. 功能验证:开发者可能需要测试网站的功能是否正常,例如支付流程、用户注册等。
  2. 性能测试:需要检查网站或服务的响应时间、负载能力等性能指标。

网络爬虫

  1. 搜索引擎索引:搜索引擎的爬虫需要访问网页以建立索引,便于用户搜索。
  2. 价格监控:电商监控工具可能定期访问商品页面以监控价格变动。

安全检查

  1. 漏洞扫描:安全专家可能需要访问网站以检测潜在的安全漏洞。
  2. 合规性检查:企业可能需要检查网站内容是否符合法律法规的要求。

网络监控

  1. 网站可用性监控:监控服务需要定期访问网站以确保网站在线并且可以访问。
  2. 内容监控:可能需要监控特定网页内容的变化,例如新闻更新或政策变动。

个人使用

  1. 娱乐:用户访问视频、音乐、游戏网站进行娱乐活动。
  2. 学习:用户访问在线课程、教育资料进行自我提升。


  在访问URL时,根据实际需求,可能需要考虑以下因素

  • 用户代理:模拟不同的浏览器或设备。
  • 身份验证:登录或使用API密钥进行访问。
  • 数据格式:请求特定格式的数据,如JSON、XML等。
  • 频率:确定访问频率,避免对服务器造成过大压力。
  • 遵守规则:遵循网站的服务条款和robots.txt文件规定。
  • 网络环境:考虑网络延迟、代理、VPN等因素。


  根据不同的需求,访问URL的方法和使用的工具也会有所不同。例如,简单的数据抓取可能只需要使用requests库,而复杂的交互可能需要使用Selenium或其他自动化工具。



回页目录


10、按需定制“请求头”


  根据不同的需求配置请求头,通常需要考虑以下几个方面


1. 用户代理(User-Agent)

  • 模拟浏览器访问:设置与目标浏览器一致的User-Agent字符串。
  • 避免被屏蔽:某些服务器可能会屏蔽爬虫或非主流浏览器的请求,因此可能需要伪装成主流浏览器的用户代理。
  • API访问:对于API调用,可能需要提供API指定的用户代理字符串。

2. 接受类型(Accept)

  • 获取网页内容:通常设置为text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  • API调用:可能需要设置为application/json或其他数据格式。

3. 接受语言(Accept-Language)

  • 本地化内容:根据需求设置特定的语言,如en-USzh-CN等。

4. 接受编码(Accept-Encoding)

  • 压缩内容:通常设置为gzip, deflate以接受压缩内容,减少数据传输量。

5. 内容类型(Content-Type)

  • 发送数据:在发送POST或PUT请求时,需要根据发送的数据类型设置,如application/jsonapplication/x-www-form-urlencoded等。

6. 认证信息(Authorization)

  • 需要认证的请求:设置正确的认证信息,如Bearer Token或Basic认证。

7. 引用(Referer)

  • 防止盗链:某些服务器会检查请求的来源,因此需要设置正确的Referer字段。

8. Cookie

  • 维持会话状态:在需要维持登录状态或会话信息时,需要携带正确的Cookie。

以下是根据不同需求配置请求头的示例


模拟浏览器访问网页

import requests
# 模拟Chrome浏览器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Accept-Encoding': 'gzip, deflate'
}
response = requests.get('http://example.com', headers=headers)

发送JSON数据到API

import requests
# 发送JSON数据
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_token_here'
}
data = {'key': 'value'}
response = requests.post('http://api.example.com/data', headers=headers, json=data)

发送表单数据

import requests
# 发送表单数据
headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
}
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://example.com/form', headers=headers, data=data)

  在配置请求头时,应当根据具体需求以及目标服务器的预期来设置。同时,要确保遵守目标网站的使用条款和隐私政策,不要进行任何违法或侵犯他人权益的行为。



回页目录


2、算法解析



回页首


上一篇:  编程学单词:delta(希腊字母Δ/δ)(希腊字母表的第四个字母,大写为Δ,小写为δ)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1922854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaDS —— 栈 Stack 和 队列 Queue

栈的概念 栈是一种先进后出的线性表&#xff0c;只允许在固定的一端进行插入和删除操作。 进行插入和删除操作的一端被称为栈顶&#xff0c;另一端被称为栈底 栈的插入操作叫做进栈/压栈/入栈 栈的删除操作叫做出栈 现实生活中栈的例子&#xff1a; 栈的模拟实现 下面是Jav…

mysql和oracle数据库的备份和迁移

本文主要讲述了mysql数据库的备份和迁移&#xff1b;oracle的肯定是备份和数据迁移&#xff0c;同时介绍了linux的定时任务。 一、mysql Docker容器下mysql备份方法 1、数据库备份 # 进入容器docker exec -it 《containerId容器id》 /bin/bash# mysqldump命令备份并生成数据…

02MFC画笔/画刷/画椭圆/圆/(延时)文字

文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件 画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本 定时器与定时事件

近期matlab学习笔记,学习是一个记录,反复的过程

近期matlab学习笔记&#xff0c;学习是一个记录&#xff0c;反复的过程 matlab的mlx文件在运行的时候&#xff0c;不需要在文件夹路径下&#xff0c;也能运行&#xff0c;但是需要调用子函数时&#xff0c;就需要在文件所在路径下运行 那就先运行子函数&#xff0c;把路径换过来…

【STM32CubeMX安装教程】

【STM32CubeMX安装教程】 1. 前言2. 下载软件3. 安装配置4. 测试5. 小结 1. 前言 STM32CubeMX是一款图形化工具&#xff0c;可以非常轻松地配置STM32微控制器和微处理器&#xff0c;以及为Arm Cortex-M内核生成相应的初始化C代码&#xff0c;或为Arm Cortex-A内核生成部分Linu…

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App

电子签章 签到 互动 打卡 创意印章 支持小程序 H5 App 定制化

Mybatis-plus 集成 PostgreSQL 数据库自增序列问题记录

1.创建序列并绑定id CREATE SEQUENCE biz_factory_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;"id" int4 NOT NULL DEFAULT nextval(sys_user_seq::regclass), 2.实体设置KeySequence和TableId注解 注意IdType.INPUT 和 KeySequence(value …

docker inspect 如何提取容器的ip和端口 网络信息?

目录 通过原生Linux命令过滤找到IP 通过jq工具找到IP 使用docker -f 的过滤&#xff08;模板&#xff09; 查找端口映射信息 查看容器内部细节 docker inspect 容器ID或容器名 通过原生Linux命令过滤找到IP 通过jq工具找到IP jq 是一个轻量级且灵活的命令行工具&#xf…

通过FallbackFactory接口实现降级逻辑

触发限流或熔断后的请求不一定要直接报错&#xff0c;也可以返回一些默认数据或者友好提示&#xff0c;用户体验会更好。 给FeignClient编写失败后的降级逻辑有两种方式&#xff1a; 方式一&#xff1a;FallbackClass&#xff0c;无法对远程调用的异常做处理方式二&#xff1a…

GenAl如何改变 DevOps 中的软件测试?

TestComplete 是一款自动化UI测试工具&#xff0c;这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的自动化测试。 TestComplete 集成了一种精心设计的自动化引擎&#xff0c;可以自动记录和回放用户的操作&#xff0c;方便用户进行UI&#xff08;用户界面&…

读人工智能全传11人工智能会出什么错

1. 人工智能会出什么错 1.1. 一些报道是公正合理的&#xff0c;不过坦白地说&#xff0c;大部分报道都愚蠢得无可救药 1.2. 一些报道颇有知识性和引导性&#xff0c;而大部分则是杞人忧天式的恐吓 1.3. 滑稽的报道迎合了大众对人工智能的“终结者式恐惧” 1.3.1. 我们创造出…

python库(13):Tablib库简化数据处理

1 Tablib简介 数据处理是一个常见且重要的任务。无论是数据科学、机器学习&#xff0c;还是日常数据分析&#xff0c;都需要处理和管理大量的数据。然而&#xff0c;标准库中的工具有时显得不够直观和简便。这时&#xff0c;我们可以借助第三方库来简化数据处理流程。Tablib 就…

一.3.(1)结型MOSFET场效应管的结构和工作原理;

N沟道结型MOSFET的结构 看完上图&#xff0c;会发现其实本质上二极管&#xff0c;三极管&#xff0c;MOS管都是PN结&#xff0c;如果第一章一.1.&#xff08;1&#xff09;半导体基础知识_木头的最外层电子是多少个-CSDN博客 理解消化以后&#xff0c;发现底层原理都一样。 例如…

Linux进程编程(使用fork函数创建进程以及fork函数的实际引用场景)

目录 一、进程以及相关概念和指令 1.什么是进程、什么是程序、有什么区别&#xff1f; 2.如何查看系统中有哪些进程&#xff1f; 3.什么是进程标识符&#xff1f; 4.什么叫父进程&#xff0c;什么叫子进程&#xff1f; 二、进程的创建 三、fork函数的实际应用场景 总结…

[每周一更]-(第105期):SSL证书过期后引发的DNS缓存问题

问题回顾&#xff1a; ​ 上班路上收到ZeroSSL邮件通知我们清点项目的SSL证书到期了&#xff0c;到公司还是登录网址查看信息&#xff0c;一看果然是7.10也就是今天到期&#xff0c;开始看下acme.sh的定制任务为何没生效&#xff0c;一看crontab脚本&#xff0c;日志任务丢垃圾…

Java高频面试基础知识点整理13

干货分享&#xff0c;感谢您的阅读&#xff01;背景​​​​​​高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09; 最全文章见&#xff1a;Java高频面试基础知识点整理 &#xff08;一&#xff09;Java基础高频知识考点 针对人员&#xff1a; 1.全部人员都…

CSS实现table表格:隔行换色的效果

表格是网页中十分重要的组成元素。表格用来存储数据&#xff0c;包含标题、表头、行和单元格。在HTML语言中&#xff0c;表格标记使用符号<table>表示。定义表格光使用<table>是不够的&#xff0c;还需要定义表格中的行、列、标题等内容。推荐博文&#xff1a;《HT…

LeetCode热题100刷题13:64. 最小路径和、62. 不同路径、5. 最长回文子串、1143. 最长公共子序列

64. 最小路径和 class Solution { public:int minPathSum(vector<vector<int>>& grid) {int m grid.size();int n grid[0].size();vector<vector<int>> dp(m,vector<int>(n,INT_MAX));dp[0][0]grid[0][0];if(m1 && n1)return grid…

使用 Apache Pulsar 构建弹性可扩展的事件驱动应用

本视频来自 2024 Apache Pulsar 欧洲峰会&#xff0c;由 David Kjerrumgaard, 《Pulsar in Action》书作者给大家带来的《使用 Apache Pulsar 构建弹性可扩展的事件驱动应用》分享。 嘉宾&#xff5c;David Kjerrumgaard&#xff0c;Apache Pulsar Committer&#xff0c;《Pul…

登录/注册

目录 1.HTML 2.CSS 3.JS 4.资源 5.运行结果 6.下载链接 7.注意事项 1.HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…