Python爬虫入门:网络世界的宝藏猎人
今天阿佑将带你踏上Python的肩膀,成为一名网络世界的宝藏猎人!
文章目录
- 1. 引言
- 1.1 简述Python在爬虫领域的地位
- 1.2 阐明学习网络基础对爬虫的重要性
- 2. 背景介绍
- 2.1 Python语言的流行与适用场景
- 2.2 网络通信基础概念及其在数据抓取中的角色
- 3. Python基础
- 3.1 Python语言概述
- 3.1.1 Python的历史与设计理念
- 3.1.2 特性:简洁性、可读性、模块化
- 3.2 基本语法
- 3.2.1 变量与数据类型
- 3.2.1.1 数字、字符串、列表、元组、字典
- 3.2.2 控制结构
- 3.2.2.1 条件语句(if...else)
- 3.2.2.2 循环语句(for, while)
- 3.3 函数和模块
- 3.3.1 定义与调用函数
- 3.3.2 标准库与第三方模块的引入与使用
- 4. 网络基础
- 4.1 HTTP协议基础
- 4.1.1 HTTP方法(GET, POST)
- 4.1.2 状态码含义
- 4.1.3 请求头与响应头
- 4.2 请求与响应
- 4.2.1 请求数据的构造
- 4.2.2 解析响应内容
- 4.3 URL和HTML基础
- 4.3.1 URL构成与查询参数
- 4.3.2 HTML标签与属性基础
- 4.3.3 理解DOM结构
- 5. 结论
- 5.1 回顾Python与网络基础的核心知识点
- 5.2 如何利用这些基础进行实际的数据抓取
- 参考文献
1. 引言
1.1 简述Python在爬虫领域的地位
想象一下,互联网就像一个巨大的蜘蛛网,而我们就是那些渴望探索每一角落的探险家。在这个过程中,Python就像是我们手中的瑞士军刀,它在爬虫领域的地位,可以说是无可匹敌的。
Python之所以在爬虫界如此受欢迎,原因有很多。首先,Python的语法简洁明了,即使是编程新手也能快速上手。这就像是给你的探险队伍配了一把锋利的刀,让你能够轻松地切割那些复杂的网络结构。
其次,Python拥有一个庞大的库和框架生态系统,比如著名的爬虫库Scrapy和Requests。这些工具就像是你的探险装备,让你能够更加高效地收集信息。而且,Python的社区非常活跃,无论你遇到什么问题,总能找到人帮你解决。
1.2 阐明学习网络基础对爬虫的重要性
在开始我们的网络探险之前,了解一些基本的网络知识是非常必要的。这就像是在出发前检查你的装备,确保一切都准备就绪。
网络基础包括了对HTTP协议的理解,这是互联网通信的基石。了解HTTP方法,比如GET和POST,就像是学会了如何与网络服务器进行对话。GET请求就像是你礼貌地问服务器要一些信息,而POST请求则像是你在告诉服务器一些信息。
此外,学习状态码也很重要。状态码就像是服务器给你的回复,告诉你请求是否成功。比如,一个200状态码意味着“一切顺利”,而404则意味着“找不到你要找的东西”。
最后,了解请求头和响应头的概念也是必不可少的。这些头部信息就像是你和服务器之间的小纸条,它们包含了请求和响应的附加信息。掌握了这些,你就能更好地理解服务器的反馈,从而优化你的爬虫策略。
通过学习这些网络基础,你将能够更深入地理解互联网的工作原理,这对你成为一名优秀的爬虫开发者至关重要。
2. 背景介绍
2.1 Python语言的流行与适用场景
想象一下,你手中拿着一张宝藏图,而Python就是那把能帮你解开图中谜题的钥匙。Python语言因其简洁和强大的功能,在编程世界中广受欢迎。它就像是一把多功能的瑞士军刀,无论是构建网站、开发游戏、数据分析还是人工智能,Python都能大展身手。
在数据科学领域,Python的库如NumPy和Pandas,让数据的处理和分析变得轻松简单。而在Web开发中,框架如Django和Flask则能让你快速搭建起功能丰富的网站。这就像是在探险中,无论你需要攀爬险峻的山峰还是穿越深邃的洞穴,Python都能提供合适的工具。
2.2 网络通信基础概念及其在数据抓取中的角色
现在,让我们把视线转向网络通信——这是我们探险旅程中的另一项必备技能。网络通信的基础概念,就像是学习如何读懂宝藏图中的古老文字,它能让你理解互联网是如何工作的。
在网络通信中,最核心的概念之一就是TCP/IP协议。这就像是互联网世界的通用语言,所有的数据传输都依赖于它。而当我们谈论数据抓取时,HTTP和HTTPS协议则成为了我们的主要关注点。它们定义了客户端(比如你的爬虫程序)和服务器之间的通信规则。
理解URL的概念也很重要。URL,或者说统一资源定位器,是互联网上每个资源的地址。通过URL,我们能够精确地找到并访问我们想要的数据,就像是通过坐标来定位宝藏的位置。
最后,HTML和CSS是构建网页的基石。HTML定义了网页的结构,而CSS则负责网页的外观。对于爬虫来说,理解HTML的标签和属性是非常关键的,因为这将帮助你定位和提取网页中的数据。
掌握了这些网络通信的基础知识,你就像是获得了一张互联网世界的通行证。无论是探索未知的领域,还是寻找隐藏的宝藏,你都将游刃有余。
好的,让我们继续以轻松有趣的方式,书写第3点的内容。
3. Python基础
3.1 Python语言概述
3.1.1 Python的历史与设计理念
Python,这个听起来像是某种神秘生物的名字,实际上是由一位名叫吉多·范罗苏姆(Guido van Rossum)的荷兰程序员在1989年圣诞节期间创造的编程语言。它的设计哲学是“优美胜于丑陋”,“简洁胜于复杂”,“可读性很重要”。这就像是在探险时,我们更愿意带上那些既美观又实用的装备,而不是那些看起来复杂却难以操作的工具。
3.1.2 特性:简洁性、可读性、模块化
Python的简洁性体现在它的语法上。比如,创建一个列表(list)并计算其长度,你只需要一行代码:
my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print(length) # 输出: 5
可读性则意味着Python的代码就像是在读一篇文章,易于理解。例如,一个简单的条件语句:
age = 18
if age >= 18:print("You are an adult.")
else:print("You are not an adult.")
模块化是指Python允许你将代码分解成独立的模块,每个模块负责一个特定的功能。这就像是将你的探险装备分门别类地放在背包的不同口袋里,需要时可以快速取用。
3.2 基本语法
3.2.1 变量与数据类型
3.2.1.1 数字、字符串、列表、元组、字典
在Python中,变量就像是标签,用来存储数据。数据类型则定义了数据的结构和它能进行的操作。以下是一些基本的数据类型和它们的例子:
- 数字(int):用来表示整数或浮点数。
number = 10 # 整数
pi = 3.14159 # 浮点数
- 字符串(str):用来表示文本。
message = "Hello, Python!"
- 列表(list):一个有序的元素集合,可以包含不同类型的数据。
fruits = ["apple", "banana", "cherry"]
- 元组(tuple):类似于列表,但它是不可变的。
coordinates = (10.0, 20.0)
- 字典(dict):一个无序的键值对集合,键必须是不可变类型。
person = {"name": "Alice", "age": 30}
3.2.2 控制结构
3.2.2.1 条件语句(if…else)
条件语句允许你根据条件执行不同的代码块。这就像是在探险时,根据天气决定是继续前进还是找个地方避雨。
is_raining = True
if is_raining:print("Better stay indoors.")
else:print("Let's go for an adventure!")
3.2.2.2 循环语句(for, while)
循环语句让你重复执行一段代码,直到满足某个条件。这就像是在探险中,不断尝试不同的路径直到找到正确的方向。
- for循环:遍历一个序列的每个元素。
for fruit in fruits:print(fruit)
- while循环:只要条件为真,就重复执行代码块。
count = 0
while count < 5:print(count)count += 1
3.3 函数和模块
3.3.1 定义与调用函数
函数是一段可以重复使用的代码块,它接受输入(参数),执行操作,并返回结果。这就像是你的多功能瑞士军刀,每次探险时,你只需要带上这把刀,就相当于带上了多种工具。
def greet(name):return f"Hello, {name}!"
print(greet("Kimi")) # 输出: Hello, Kimi!
3.3.2 标准库与第三方模块的引入与使用
Python有一个庞大的标准库,提供了许多内置的模块和函数。此外,还有许多第三方库,可以通过包管理器pip安装。这就像是你的装备库,里面应有尽有,你可以根据需要选择装备。
import random# 使用random库生成一个1到10之间的随机数
random_number = random.randint(1, 10)
print(random_number)
通过这些生动的例子和代码,我们介绍了Python的基础知识,包括语言概述、基本语法、控制结构以及函数和模块的使用。这样的介绍不仅接地气,而且易于理解,有助于读者更好地掌握Python的基础知识。接下来,我们可以接着探讨网络基础的相关内容。
当然,让我们以一种轻松诙谐的方式继续探索第4点的内容。
4. 网络基础
4.1 HTTP协议基础
HTTP,全称超文本传输协议(Hypertext Transfer Protocol),是互联网上应用最广泛的协议之一。它就像是网络世界的邮政系统,负责在客户端(比如你的浏览器或者爬虫程序)和服务器之间传递信息。
4.1.1 HTTP方法(GET, POST)
HTTP方法就像是你给服务器发送的不同种类的信件。最常见的两种方法是GET和POST:
- GET:就像是你给图书馆管理员一张纸条,上面写着你想要的书名。管理员会根据你的请求给你书。
import requests response = requests.get('http://example.com') print(response.text) # 打印网页内容
- POST:更像是你给朋友发送一封带有附件的信。除了信件内容,你还附加了一些额外的信息。
response = requests.post('http://example.com/login', data={'username': 'user', 'password': 'pass'})
4.1.2 状态码含义
状态码是服务器对请求的回应。它们就像是服务员给你的便签,上面写着你的订单是否被接受:
- 200 OK:你的请求已经被成功处理。
- 404 Not Found:哎呀,找不到你请求的资源,可能链接有误。
- 500 Internal Server Error:服务器自己出了问题,不是你的错。
4.1.3 请求头与响应头
请求头和响应头是HTTP通信中的附加信息。它们就像是信件上的邮票和邮戳,提供了额外的上下文:
- 请求头:告诉服务器你是谁,你想要什么,以及你可以接受什么。
headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get('http://example.com', headers=headers)
- 响应头:服务器告诉你它是谁,它给你的是什么,以及它的一些额外信息。
print(response.headers) # 查看响应头信息
4.2 请求与响应
4.2.1 请求数据的构造
构建一个HTTP请求就像是准备一次约会,你需要确保一切都恰到好处:
- URL:约会的地点。
- Method:你们见面的方式,比如GET或POST。
- Headers:你的着装和携带的礼物,显示你的诚意和品味。
- Body(对于POST请求):你的邀请函,详细说明了你的意图。
4.2.2 解析响应内容
解析HTTP响应就像是拆礼物,你期待地打开它,看看里面是什么:
from bs4 import BeautifulSoupsoup = BeautifulSoup(response.content, 'html.parser')
# 假设我们想找到所有的链接
links = soup.find_all('a')
for link in links:print(link.get('href')) # 打印每个链接的href属性
4.3 URL和HTML基础
4.3.1 URL构成与查询参数
URL是互联网上每个资源的地址。它通常看起来像这样:http://www.example.com/path?arg=value#anchor
。
- Scheme:
http
或https
,决定了数据是如何加密传输的。 - Host:
www.example.com
,服务器的域名。 - Path:
/path
,资源在服务器上的位置。 - Query:
?arg=value
,附加的请求参数。 - Fragment:
#anchor
,页面内的一个锚点。
4.3.2 HTML标签与属性基础
HTML是构建网页的基础,它由一系列的标签组成,每个标签都有特定的作用:
<a>
:定义一个超链接。<img>
:嵌入一个图像。<div>
:常用于布局,可以包含其他HTML元素。
每个HTML标签都可以有属性,属性提供了关于标签的额外信息:
<a href="http://www.example.com" target="_blank">Visit Example.com</a>
在这个例子中,href
属性定义了链接的目的地,而target="_blank"
表示链接将在新标签页中打开。
4.3.3 理解DOM结构
文档对象模型(DOM)是HTML和XML文档的编程接口。它将网页的结构表示为一个树形结构,每个节点代表一个HTML元素。理解DOM结构对于数据抓取至关重要,因为它允许你定位和提取所需的数据:
# 假设我们有以下HTML结构
html_doc = """
<html><body><div id="content"><p>Hello, World!</p></div></body>
</html>
"""
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html_doc, 'html.parser')
# 找到id为content的div元素
content_div = soup.find('div', id='content')
print(content_div.p.text) # 输出: Hello, World!
通过这些生动的例子和代码,我们了解了网络基础的核心概念,包括HTTP协议、请求与响应的处理、URL的构成、HTML的基础知识以及DOM结构的理解!
好的,让我们以一种轻松幽默的方式,来书写第5点的内容。
5. 结论
5.1 回顾Python与网络基础的核心知识点
在这段探险旅程中,我们学到了很多宝贵的知识。就像是一位勇敢的探险家回顾他的宝藏图,我们现在要回顾一下我们所学到的Python和网络基础的核心知识点。
- Python的简洁和强大:我们了解到Python的语法简洁,社区活跃,拥有丰富的库和框架,非常适合用来编写爬虫程序。
- 网络通信的基础:我们探索了HTTP协议,学习了GET和POST请求的区别,以及如何通过状态码来理解服务器的响应。
- 数据类型和控制结构:我们掌握了Python的基本数据类型和控制结构,这些都是编写爬虫程序不可或缺的基础。
- 函数和模块的使用:我们学习了如何定义和调用函数,以及如何利用Python的标准库和第三方模块来扩展我们程序的功能。
- URL和HTML的基础知识:我们了解了URL的构成,HTML的基本标签和属性,以及DOM结构,这些都是理解和解析网页的关键。
5.2 如何利用这些基础进行实际的数据抓取
现在,我们已经装备好了所有必要的工具和知识,是时候开始真正的探险了——也就是实际的数据抓取。在接下来的篇章中,我们将深入到数据抓取的实战技巧中,包括但不限于:
- 构建高效的爬虫:我们将学习如何使用Python的库,如Scrapy和Requests,来构建能够高效抓取数据的爬虫。
- 处理各种网页结构:我们将探索不同的HTML结构和数据提取技术,以应对各种复杂的网页布局。
- 数据存储和管理:我们将学习如何将抓取到的数据存储到数据库中,以及如何进行有效的数据管理。
- 遵守法律和道德规范:在数据抓取的过程中,我们还将讨论如何遵守相关的法律法规和道德规范,确保我们的探险活动是合法和负责任的。
让我们带着对知识的渴望和对探险的热情,继续前进,揭开数据世界的神秘面纱。准备好了吗?让我们的Python爬虫启航,向着数据的宝藏,出发!
在撰写学术或技术文档时,提供参考文献是一个重要的环节,它不仅展示了研究的深度,还体现了学术诚信。以下是一些可能与Python和网络基础相关的书籍、在线文档和资源,可以作为参考文献的示例:
参考文献
-
Python官方文档
Python Software Foundation
https://docs.python.org/3/ -
“Python网络数据采集”
Ryan Mitchell
O’Reilly Media; 第1版 (2015年)
ISBN-13: 978-1491950738 -
“用Python进行数据分析”
Wes McKinney
O’Reilly Media; 第1版 (2017年)
ISBN-13: 978-1491957660 -
Scrapy官方文档
Scrapy project
https://docs.scrapy.org/ -
“HTTP: The Definitive Guide”
David Gourley, Brian Totty
O’Reilly Media; 第14版 (2002年)
ISBN-13: 978-1565925938 -
“HTML & CSS: Design and Build Websites”
Jon Duckett
John Wiley & Sons; 第1版 (2011年)
ISBN-13: 978-1119999844 -
Mozilla开发者网络(MDN)
Mozilla
https://developer.mozilla.org/ -
“Python标准库”
Python Software Foundation
https://docs.python.org/3/library/ -
“Beautiful Soup: 如果你正在抓取网络,你需要Beautiful Soup”
Leonard Richardson, Leonard Richardson
Blog Post, 2006
https://www.crummy.com/software/BeautifulSoup/ -
“Python Requests: 人性化的HTTP客户端”
Kenneth Reitz
GitHub Repository, 2021
https://github.com/psf/requests
相关文章:

Python爬虫入门:网络世界的宝藏猎人
今天阿佑将带你踏上Python的肩膀,成为一名网络世界的宝藏猎人! 文章目录 1. 引言1.1 简述Python在爬虫领域的地位1.2 阐明学习网络基础对爬虫的重要性 2. 背景介绍2.1 Python语言的流行与适用场景2.2 网络通信基础概念及其在数据抓取中的角色 3. Python基…...

【NodeMCU实时天气时钟温湿度项目 6】解析天气信息JSON数据并显示在 TFT 屏幕上(心知天气版)
今天是第六专题,主要内容是:导入ArduinoJson功能库,借助该库解析从【心知天气】官网返回的JSON数据,并显示在 TFT 屏幕上。 如您需要了解其它专题的内容,请点击下面的链接。 第一专题内容,请参考&a…...
重构四要素:目的、对象、时机和方法
目录 1.引言 2.重构的目的:为什么重构(why) 3.重构的对象:到底重构什么(what) 4.重构的时机:什么时候重构(when) 5.重构的方法:应该如何重构(how) 6.思考题 1.引言 一些软件工程师对为什么要重构(why)、到底重构什么(what)、什么时候重构(when)应该如何重构(how)等问题的…...

基于Echarts的大数据可视化模板:服务器运营监控
目录 引言背景介绍研究现状与相关工作服务器运营监控技术综述服务器运营监控概述监控指标与数据采集可视化界面设计与实现数据存储与查询优化Echarts与大数据可视化Echarts库以及其在大数据可视化领域的应用优势开发过程和所选设计方案模板如何满足管理的特定需求模板功能与特性…...
Python3 笔记:Python的常量
常量(constant):跟变量相对应,指第一次赋予值后就保持固定不变的值。 Python里面没有声明常量的关键字,其他语言像C/C/Java会有const修饰符,但Python没有。 Python中没有使用语法强制定义常量,…...

【Linux】自动化构建工具make/Makefile和git介绍
🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12625432.html 目录 前言 Linux项目自动化构建工具-make/Makefile 举例 .PHONY 常见符号 依赖关系…...
C语言—关于字符串(编程实现部分函数功能)
0.前言 当我们使用这些函数功能时,可以直接调用头文件---#include<string.h>,然后直接使用就行了,本文只是手动编写实现函数的部分功能 1.strlen函数功能实现 功能说明:strlen(s)用来计算字符串s的长度,该函数计数不会包括最…...

picoCTF-Web Exploitation-Trickster
Description I found a web app that can help process images: PNG images only! 这应该是个上传漏洞了,十几年没用过了,不知道思路是不是一样的,以前的思路是通过上传漏洞想办法上传一个木马,拿到webshell,今天试试看…...

SSH 免密登录,设置好仍然需要密码登录解决方法
说明: ssh秘钥登录设置好了,但是登录的时候依然需要提供密码 查看系统安全日志,定位问题 sudo cat /var/log/auth.log或者 sudo cat /var/log/secure找到下面的信息 Authentication refused: bad ownership or modes...(网上的…...
【斑马打印机】web前端页面通过BrowserPrint API连接斑马打印机进行RFID条形码贴纸打印
web前端页面通过BrowserPrint API连接斑马打印机进行RFID条形码贴纸打印 在现代物流、仓储和零售行业中,RFID和二维码技术发挥着至关重要的作用。这些技术不仅提高了效率,还增强了追踪和管理的能力。本文将介绍如何使用JavaScript和斑马打印机的BrowserPrint API来打印RFID二…...

DigitalOcean 应用托管更新:应用端到端运行时性能大幅改进
DigitalOcean 希望可以为企业提供所需的工具和基础设施,以帮助企业客户加速云端的开发,实现业务的指数级增长。为此 DigitalOcean 在 2020 年就推出了App Platform。 App Platform(应用托管) 是一个完全托管的 PaaS 解决方案&…...
c/c++对于char*的理解(联合string容器)
在C和C中,char*是一个指向字符(char)的指针。它经常被用来处理C风格的字符串,这种字符串是以空字符(\0)结尾的字符数组。以下是关于char*的一些关键点: C风格的字符串: C风格的字符…...

Web前端三大主流框架是什么?
Web前端开发领域的三大主流框架分别是Angular、React和Vue.js。它们在Web开发领域中占据着重要的地位,各自拥有独特的特点和优势。 Angular Angular是一个由Google开发的前端框架,最初版本称为AngularJS,后来升级为Angular。它是一个完整的…...

一个基于servlet的MVC项目-登录验证
一、MVC的概念 MVC是Model、View、Controller的缩写,分别代表 Web 应用程序中的3种职责1 模型:用于存储数据以及处理用户请求的业务逻辑。 2视图:向控制器提交数据,显示模型中的数据。 3控制器:根据视图提出的请求,判断将请求和数据交给哪个…...

Windows 11 下 kafka 的安装踩坑
安装 windows系统kafka小白入门篇——下载安装,环境配置,入门代码书写(推荐) kafka在windows下安装和使用入门教程 问题1 参考链接 运行kafka集成的zookeeper时,命令:bin\windows\zookeeper-server-star…...
二维数组:行列互换/求最大值及其所在位置/求各行各列的和/矩阵乘积/深入理解二维数组
二维数组 1.定义 只有行号可以省略,初始化 全部初始化/部分初始化/不初始化 2.元素引用 3.存储形式 :顺序存储 按行存储 4.深入理解二维数组 #include<stdio.h> #include<stdlib.h>#define M 2 #define N 3int mian() {int a[M][N] {{1,2,3},{4,5,6}}…...
The Onion Router-洋葱
目录 Tor的运作原理 Tor挑战和局限性 Tor,即The Onion Router(洋葱路由器),是一个用于匿名通信的开放网络,它旨在增强用户的隐私和安全。Tor的名字源自其设计原理,类似于将信息包装在多层“洋葱”中&…...

自动化工具 Ansible:playbooks 剧本编写
目录 前言 一、playbooks 剧本概述 1、playbooks 剧本概念 2、playbooks 剧本组成部分 3、playbooks 剧本特点与优势 二、ansible-playbook 命令 三、playbooks 剧本简单实例 1、编写 apache 的 yum 安装部署脚本 2、编写 nginx 的 yum 安装部署剧本 四、playbooks 定…...

AttributeError: module ‘flask.app‘ has no attribute ‘route‘
秒解方法一: # 未引入Flask app Flask(__name__)秒解方法二: AttributeError: ‘module’ object has no attribute ‘route’错误描述: 这个错误通常发生在使用 app.route 装饰器时,表示 Flask 无法找到 route 属性。 解决方法…...

在云计算与人工智能中,7ECloud扮演着什么样的角色
数据驱动的时代,云计算和人工智能已成为推动现代科技进步的两大引擎。作为一家专注于云计算的公司,7ECloud正是在这个领域发挥自己的力量,力图为企业提供一站式解决方案,并拥有来自厂家的源头支持,用极其低的价格助力企…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...