【Python爬虫(4)】揭开Python爬虫的神秘面纱:基础概念全解析
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。
目录
- 一、什么是网络爬虫
- 二、网络爬虫的工作原理
- 2.1 初始 URL 设定
- 2.2 发送请求与获取响应
- 2.3 解析网页
- 2.4 提取链接
- 2.5 循环爬取
- 三、爬虫在不同领域的应用场景
- 3.1 搜索引擎
- 3.2 数据挖掘
- 3.3 网络监控
- 3.4 竞品分析
- 3.5 价格比较
- 四、网络爬虫的分类
- 4.1 通用爬虫
- 4.2 聚焦爬虫
- 4.3 增量式爬虫
- 4.4 深层网络爬虫
一、什么是网络爬虫
网络爬虫,又被称为网页蜘蛛、网络机器人 ,在 FOAF 社区中,也常被叫做网页追逐者。从定义上来说,它是一种按照一定规则,自动抓取互联网信息的程序或脚本。就如同它的名字 “爬虫” 一样,它就像是一只在网络世界中不知疲倦的蜘蛛,沿着网页中的链接,从一个页面爬行到另一个页面,获取并收集我们需要的各种信息。
网络爬虫的工作过程高度自动化。一旦设定好规则和目标,它就能自动地在互联网这个巨大的信息海洋中穿梭。例如,当我们想要获取某电商平台上所有电子产品的价格信息时,只需编写好爬虫程序,设置好起始页面和爬取规则,它便会自动地从起始页面开始,依次访问各个产品页面,提取出价格信息,而不需要我们手动一个一个页面去查找和记录 。这种自动化的特性,使得它能够在短时间内处理大量的信息,大大提高了数据获取的效率。
同时,爬虫的规则性体现在它会严格按照预先设定的规则进行操作。这些规则包括但不限于:从哪些网站获取信息、获取哪些类型的信息、按照怎样的顺序访问网页等。比如,我们可以设定爬虫只访问某个特定域名下的网页,或者只提取网页中的文本信息、图片链接等。通过精确地制定规则,我们能够让爬虫准确地获取到我们真正需要的数据,避免了大量无关信息的干扰。
二、网络爬虫的工作原理
网络爬虫的工作原理可以类比为我们在图书馆中寻找书籍的过程。想象一下,图书馆是整个互联网,每一本书就是一个网页,而我们就像是爬虫,带着特定的目的在这个巨大的图书馆里寻找所需的信息。具体来说,爬虫的工作流程主要包括以下几个关键步骤:
2.1 初始 URL 设定
初始 URL 就像是我们进入图书馆时拿到的第一本推荐书籍,它为爬虫提供了起始位置 。这个起始 URL 可以是某个网站的首页,比如我们想要获取电商平台上的商品信息,那么该电商平台的首页就可以作为初始 URL。它是爬虫进入网络世界的入口,决定了爬虫后续的爬行方向和范围。
2.2 发送请求与获取响应
当爬虫确定了初始 URL 后,就会向这个 URL 发送 HTTP 请求,就如同我们向图书馆管理员询问某本书的位置。服务器在接收到请求后,会返回对应的网页内容,这就是响应。这个过程类似于管理员根据我们的询问,将我们需要的书籍找出来递给我们。例如,当我们使用 Python 的 requests 库发送请求时,代码可能如下:
import requestsurl = "https://www.example.com" # 初始URL
response = requests.get(url)
if response.status_code == 200:html_content = response.text# 这里的html_content就是获取到的网页内容
2.3 解析网页
爬虫获取到网页内容后,就需要对其进行解析,就像我们拿到书籍后,需要阅读并理解其中的内容。网页通常是由 HTML、XML 等标记语言编写而成,爬虫会使用各种解析工具和技术,如正则表达式、BeautifulSoup 库、XPath 等,来提取出我们需要的信息。例如,我们想要从一个新闻网页中提取新闻标题、发布时间和正文内容,使用 BeautifulSoup 库的代码示例如下:
from bs4 import BeautifulSoupsoup = BeautifulSoup(html_content, 'html.parser')
title = soup.find('h1').text # 假设新闻标题在h1标签中
publish_time = soup.find('span', class_='time').text # 假设发布时间在class为time的span标签中
content = soup.find('div', class_='content').text # 假设正文内容在class为content的div标签中
2.4 提取链接
在解析网页的过程中,爬虫还会提取出网页中的链接,就像我们在阅读一本书时,发现书中引用了其他书籍的信息,从而将这些信息记录下来,以便后续查找。这些链接会被添加到待爬取 URL 队列中,作为爬虫下一次访问的目标。例如,使用 BeautifulSoup 库提取网页中所有链接的代码如下:
links = soup.find_all('a')
for link in links:href = link.get('href')if href:# 将相对链接转换为绝对链接absolute_url = requests.compat.urljoin(url, href)# 将绝对链接添加到待爬取URL队列中url_queue.append(absolute_url)
2.5 循环爬取
爬虫会不断地重复上述步骤,从待爬取 URL 队列中取出 URL,发送请求、获取响应、解析网页、提取信息和链接,直到满足停止条件,比如达到了设定的最大爬取次数、待爬取 URL 队列为空等。这个过程就像我们在图书馆中,按照记录的书籍信息,一本接一本地寻找和阅读相关书籍,直到找到所有需要的信息或者完成了预定的查找任务。
三、爬虫在不同领域的应用场景
3.1 搜索引擎
在搜索引擎领域,爬虫扮演着举足轻重的角色。以百度、谷歌等为代表的搜索引擎,每天要处理数以亿计的用户搜索请求。为了能够快速、准确地返回用户所需的信息,它们依赖爬虫来不断地抓取网页内容。例如,谷歌的爬虫程序会按照一定的频率,遍历互联网上的各个网站,将网页的文本、图片、链接等信息抓取下来,并进行索引和存储。当用户在谷歌搜索引擎中输入关键词时,搜索引擎会根据预先建立的索引,快速地找到与之相关的网页,并按照相关性和重要性进行排序,将最符合用户需求的网页展示在搜索结果页面上。这种高效的信息检索服务,离不开爬虫技术的支持,它使得用户能够在浩瀚的互联网信息海洋中迅速找到自己需要的内容。
3.2 数据挖掘
数据科学家和研究人员在进行数据挖掘和分析时,常常需要大量的数据作为支撑。爬虫成为了他们获取数据的有力工具。比如,在研究市场趋势时,数据科学家可以使用爬虫从各大电商平台、新闻网站、社交媒体等渠道收集相关数据。通过对这些数据的统计和机器学习分析,他们能够发现隐藏在数据背后的规律和趋势。例如,通过分析电商平台上的商品销售数据和用户评价数据,研究人员可以了解消费者的购买偏好、对不同产品的满意度等信息,从而为企业的产品研发、市场营销等决策提供有价值的参考。在学术研究领域,爬虫也可以帮助研究人员收集相关领域的文献资料、实验数据等,为科研工作提供丰富的数据资源。
3.3 网络监控
在网络监控方面,爬虫可以用于检测网站的运行状态和内容变化。对于网站管理员来说,及时了解网站的可用性和内容更新情况至关重要。爬虫可以定期访问网站,检查网站是否能够正常响应,以及网页内容是否发生了变化。一旦发现网站出现故障或者内容被恶意篡改,爬虫可以及时发送警报通知管理员。例如,一些大型新闻网站会使用爬虫来监控自己网站上的新闻内容,确保新闻的准确性和及时性。如果发现某个新闻页面被错误修改或者删除,爬虫能够立即触发警报,让管理员及时采取措施进行修复,从而保证网站的正常运行和用户体验。
3.4 竞品分析
在商业竞争日益激烈的今天,竞品分析对于企业制定商业策略至关重要。商家可以借助爬虫收集竞争对手的产品信息、价格策略、促销活动等信息。通过对这些信息的分析,企业能够了解竞争对手的优势和劣势,从而制定出更具竞争力的商业策略。例如,一家电商企业可以使用爬虫爬取竞争对手网站上的商品价格、库存情况、用户评价等数据。通过对比分析这些数据,企业可以及时调整自己的产品定价和营销策略,以吸引更多的用户。此外,爬虫还可以帮助企业监控竞争对手的新产品发布情况,以便企业能够及时做出应对,推出类似的产品或者进行产品升级。
3.5 价格比较
对于消费者来说,在购买商品时希望能够找到性价比最高的产品。爬虫可以帮助用户实现这一目标。一些价格比较网站,如慢慢买、什么值得买等,就是利用爬虫技术从各个电商平台抓取商品的价格信息。用户在这些网站上输入商品关键词后,网站会展示不同电商平台上该商品的价格,以及价格走势、历史最低价等信息,帮助用户做出更明智的购买决策。例如,当用户想要购买一款手机时,通过在价格比较网站上搜索,就可以一目了然地看到各大电商平台上该手机的价格差异,从而选择价格最优惠的平台进行购买。这种价格比较功能,不仅为用户节省了时间和金钱,也促进了电商平台之间的竞争,推动市场价格更加透明和合理。
四、网络爬虫的分类
根据不同的应用场景和实现方式,网络爬虫可以分为多种类型,每种类型都有其独特的特点和适用范围。
4.1 通用爬虫
通用爬虫主要应用于大型搜索引擎,如百度、谷歌等。它的爬行范围极其广泛,旨在抓取互联网上尽可能多的网页数据,数量巨大。以谷歌为例,其爬虫程序会持续不断地遍历整个互联网,从数以亿计的网站中抓取网页信息。为了实现如此大规模的爬取,通用爬虫对爬行速度和存储空间都有着极高的要求。在速度方面,它需要能够快速地发送请求、获取响应,以提高爬取效率;在存储空间方面,由于要存储大量的网页数据,需要具备庞大的存储设备和高效的存储管理系统。同时,由于待爬取的页面数量众多,通用爬虫在爬取页面的顺序要求相对较低,通常采用并行工作方式,以充分利用资源。然而,这种大规模的爬取也导致它需要较长时间才能刷新一次页面,可能无法及时获取最新的网页内容。
4.2 聚焦爬虫
聚焦爬虫,也被称为主题爬虫,它会按照预先定义好的主题,有选择地进行相关网页的爬取。与通用爬虫不同,它不会将目标资源定位在整个互联网当中,而是将爬取的目标网页精准地定位在与主题相关的页面中。例如,当我们需要获取关于人工智能领域的学术论文时,聚焦爬虫可以通过分析网页的内容、链接等信息,筛选出与人工智能相关的网页进行爬取,而不会浪费资源去爬取其他不相关的网页。这种针对性的爬取方式极大地节省了硬件和网络资源,同时由于保存的页面数量相对较少,处理和分析数据的速度也更快。聚焦爬虫在对特定信息的爬取场景中应用广泛,能够为某一类特定的人群提供精准的服务。
4.3 增量式爬虫
增量式爬虫在爬取网页的时候,只会在需要的时候爬取新产生或更新的页面,而对于没有发生变化的页面,不会进行重复爬取。以新闻网站为例,每天都会有大量的新新闻发布,同时也会有部分新闻进行更新。增量式爬虫可以通过监测网站的更新情况,只爬取新发布的新闻和有更新的新闻页面,而不会再次爬取那些没有变化的新闻页面。这样做的优点是可以显著减少数据下载量,节省时间和空间资源,提高爬取效率。然而,实现增量式爬虫的算法难度相对较大,需要精确地判断页面是否发生变化,以及如何高效地获取新产生的页面,这对爬虫的设计和实现提出了更高的要求。
4.4 深层网络爬虫
深层网络爬虫主要针对深层网页进行爬取。在介绍深层网络爬虫之前,我们先来了解一下表层网页和深层网页的概念。表层网页是指传统搜索引擎可以索引的页面,主要是以超链接可以到达的静态网页构成。而深层网页则是指大部分内容无法通过静态链接获取,只有用户提交一些关键词,或者进行特定的操作(如登录、填写表单等)才能获取的网页。例如,一些需要用户登录才能查看内容的网站,或者搜索结果页面,只有在用户输入搜索关键词后才能显示相关内容,这些都属于深层网页的范畴。在互联网中,深层网页的数量往往比表层网页的数量多得多,而且包含着大量有价值的信息。深层网络爬虫需要模拟用户的交互行为,如填写表单、提交数据等,以获取深层网页中的内容,其工作原理相对复杂,需要具备更强大的功能和技术支持。
相关文章:
【Python爬虫(4)】揭开Python爬虫的神秘面纱:基础概念全解析
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
kafka为什么这么快?
前言 Kafka的高效有几个关键点,首先是顺序读写。磁盘的顺序访问速度其实很快,甚至比内存的随机访问还要快。Kafka在设计上利用了这一点,将消息顺序写入日志文件,这样减少了磁盘寻道的时间,提高了吞吐量。与传统数据库的…...
书籍推荐:《书法课》林曦
记得樊登老师说过,如果你想了解一个事物,就去读5本相关的书,你会比大部分人都更了解它。这是我读的第4本和“书法”有关的书,作为一个零基础的成年人,林曦这本《书法课》非常值得一读。(无论你是否写字&…...
位图(C语言版)
文章目录 位图模型基本操作实现代码运行结果 应用存储只有两种状态的数据排序并去重 位图 模型 位图是“位”的数组。 为什么需要构建一个专门的数据结构来表示位的数组?:因为计算机最小的寻址单位是字节,而不是位。 位图是一种内存紧凑的…...
使用C#元组实现列表分组汇总拼接字段
文章目录 使用C#元组实现列表分组汇总拼接字段代码运行结果 使用C#元组实现列表分组汇总拼接字段 代码 string message string.empty; var tupleList new List<Tuple<string, string, string>>(); tupleList.Add(new Tuple<string, string, string>("…...
淘宝API数据采集接口||调用步骤详解
### 一、注册与认证 1. **注册淘宝开发者账号**: * 访问淘宝开放平台官网,点击“立即入驻”按钮,按照提示完成注册流程。注册过程中需要提供企业名称、联系人信息等基本信息。 2. **创建应用**: * 注册成功后,登录淘…...
C# 调用 C++ 动态库接口
在 C# 中调用 C 动态库接口,通常需要通过 P/Invoke (Platform Invocation Services) 来与 C 代码交互 1. 准备 C 动态库 假设你有一个 C 动态库,其中包含如下函数: extern "C" char* getLocationURL(const char* package_name, …...
fastadmin 接口请求提示跨域
问题描述 小程序项目,内嵌h5页面,在h5页面调用后端php接口,提示跨域。网上查找解决方案如下: 1,设置header // 在入口文件index.php直接写入直接写入 header("Access-Control-Allow-Origin:*"); header(&q…...
C#_文件写入读取操作
文件写入操作:--------------------------------------------------------------------------- 读取文件:---------------------------------------------------------------------------...
redis的哨兵模式和集群模式
Redis 的 哨兵模式(Sentinel Mode) 和 集群模式(Cluster Mode) 是两种常见的高可用部署方式,它们各有优缺点,适用于不同的场景。以下是它们的比较: 1. 哨兵模式(Sentinel Mode&#…...
《open3d +pyqt》凸包计算
《open3d +pyqt》凸包计算 一、效果展示二、qt设置2.1界面设置2.2 py文件生成三、核心代码一、效果展示 二、qt设置 2.1界面设置 添加动作Qhull: 布局参数: 2.2 py文件生成 更新Mainwindow.py 生成py文件 三、核心代码 代码如下: main.py文件...
数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式
MySQL 报错 1045 表示用户root从localhost连接时被拒绝访问,通常是因为密码错误、权限问题或配置问题。以下是解决该问题的常见方法: 方法一:检查用户名和密码 • 确认用户名和密码是否正确: 确保输入的用户名和密码完全正确&am…...
ThreadLocal为什么会内存溢出
每个线程(Thread 对象)内部维护一个 ThreadLocalMap,用于存储该线程的所有 ThreadLocal 变量的键值对: ThreadLocalMap虽然是ThreadLocal的静态内部类,但是Thread 对象的属性,当线程存活时ThreadLocalMap不会被回收。 Key:ThreadLocal 实例的 弱引用(WeakReference)。…...
数据结构------单向链表。
一.实现单向链表的头插,头删,尾插,尾删,按位置插,按位置删,按位置修改,按元素查找,按元素修改,按元素删除,单链表的逆置,查找倒数第几个元素&…...
Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究
基于 Python 的 Django 框架在 Web 开发中的应用研究 摘要 Django 是一个基于 Python 的高级 Web 框架,以其开发效率高、安全性和可扩展性强等特点被广泛应用于现代 Web 开发。本文首先介绍了 Django 的基本架构和核心特性,然后通过一个实际的 Web 开发项目案例,展示了 Dj…...
在 PyCharm 中接入deepseek的API的各种方法
在 PyCharm 中接入 DeepSeek 的 API,通常需要以下步骤: 1. 获取 DeepSeek API 密钥 首先,确保你已经在 DeepSeek 平台上注册并获取了 API 密钥(API Key)。如果没有,请访问 DeepSeek 的官方网站注册并申请 …...
当扩展屏显示【输入不支持】怎么解决?!
1、why? 当你遇到这个问题的时候,那就表示您的扩展屏偏老旧,这时候需要进行一些参数设置 2、直接改变桌面模式解决不了问题 你是不是尝试过直接在缩放和布局这里设置?在这里直接设置的话,设置的是桌面模式,屏幕大小是会变化但…...
深入剖析 Python 类属性与对象的底层创建与内存分析
各类资料学习下载合集 https://pan.quark.cn/s/8c91ccb5a474 在 Python 中,类和对象是面向对象编程(OOP)的核心组成部分。类属性与实例属性的存储和管理方式,以及类和对象在内存中的分布和结构,对于深入理解 Python 的底层机制至关重要。 本文将带你详细解析 P…...
pdf文件的读取,基于深度学习的方法
需要安装一些依赖解析 PDF 文件的详细指南_unstructured.partition.pdf-CSDN博客文章浏览阅读1.3k次,点赞13次,收藏9次。通过 unstructured.partition.pdf 函数,可以方便地解析 PDF 文件并提取其中的文本和表格内容。尽管在使用过程中可能会遇…...
【指令集】Nginx
本文作者: slience_me 【指令集】Nginx 1. 目录结构 Nginx 的基础目录结构通常包括以下几个主要目录: Nginx的目录结构大致如下(以Linux系统为例): /etc/nginx/ # Nginx的配置文件目录 ├── ngin…...
蓝耘云智算|使用 Deepseek R1 模型优化 BERT 在 NLP 任务中的表现
在自然语言处理(NLP)领域,BERT(Bidirectional Encoder Representations from Transformers)已成为许多文本分类任务的基准模型。然而,随着新模型的出现和技术的不断进步,BERT在某些情况下可能不…...
LINUX常用命令学习
查看系统版本 使用hostnamectl命令检查。hostnamectl显示了CentOS的版本以及操作系统的相关信息,非常方便 设置linux机器别名称 hostnamectl set-hostname 机器别名 --static 华为云 centos 命令:lsb_release -a linux:cat /proc/version 查看进程路…...
【java面向对象的三大特性】封装、继承和多态
目录标题 一、封装(Encapsulation):二、继承(Inheritance):三、多态(Polymorphism):1. 多态的三个必要条件:2.多态的具体实现:3.多态的使用场景&a…...
【开源免费】基于SpringBoot+Vue.JS校园商铺管理系统(JAVA毕业设计)
本文项目编号 T 191 ,文末自助获取源码 \color{red}{T191,文末自助获取源码} T191,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
日常故障排查 - Java程序故障排查
Java程序故障 无论对于任何的故障而言,恢复可用性都是首要目标。但作为一个技术匠人,不能让同一个问题导致多次故障,因此故障的根因剖析以及解决也是很重要的。但是故障根因剖析是需要现场数据来进行分析,因此在故障恢复之前要尽…...
ai数字人分身系统开发源码saas化
#数字人分身系统# #数字人系统源码# #ai数字人123 123# 云罗抖去推数字人分身系统是一款融合了形象克隆、声音克隆、AI数字人分身、AI智能剪辑、智能文案等各种AI技术一体化的短视频营销工具,其核心功能优势主要体现在以下几方面: 真实度高…...
DeepSeek免费部署到WPS或Office
部署到WPS - 通过OfficeAI插件接入: - 准备工作:安装最新版本的WPS Office软件;访问DeepSeek官网,点击右上角的“API开放平台”,登录账号(若无账号需先注册),登录成功后,…...
vue2和vue3插槽slot最通俗易懂的区别理解
在 Vue 的组件通信中,slot(插槽)的编译优化是一个重要的性能提升点。以下是 Vue2 和 Vue3 在 slot 处理上的差异及优化原理,用更直观的方式解释: Vue2 的 Slot 更新机制 想象一个父子组件场景: 父组件&am…...
生成式人工智能:技术革命与应用图景
(这文章有些地方看不懂很正常,因为有太多生词,需要对 计算机/人工智能 研究至深的人才能看懂,遇到不会的地方用浏览器搜索或跳过) 引言 2023年被称我们为"生成式AI元年",以GPT-4、DALL-E 3、Stable Diffusi…...
关于Dest1ny:我的创作纪念日
Dest1ny 因为这是csdn任务,我就稍微“写”了一下! 如果大家真的有什么想聊的或者想一起学习的,欢迎在评论区或者私信中与我讨论! 2025想说的话 我就把我想说的写在前面! 不用对未来焦虑,不要觉得自己走…...
AI学习记录 - 最简单的专家模型 MOE
代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的, linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层(active function 设…...
【C++内存管理】—— 策略、陷阱及应对之道
欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创…...
分布式版本控制系统---git
Git:从基础到进阶的全面指南 Git 是一个分布式版本控制系统,广泛应用于软件开发中,用于跟踪文件的更改、支持团队协作以及管理项目代码。通过 Git,开发者可以在本地拥有完整的项目历史记录,进行离线开发,并…...
pg_sql关于时间的函数
1、时间戳和日期之间的相互转换 时间戳转日期(时间戳为数值类型,若为字符型需进行转换) # 保留到秒:2025-10-02 04:46:40 (字符型转换数值型) select to_timestamp(1759351600::bigint)# 保留到日&#x…...
【Kafka】Windows下安装Kafka(全面)
目录 1.前提条件 2.下载 3.安装 4.环境变量配置 5.验证 1.前提条件 参考版本:zookeeper为3.6.4 kafka版本为3.5.1 1.先安装zookeeper: 【Zookeeper】Windows下安装Zookeeper(全面)-CSDN博客https://blog.csdn.net/…...
【Qt】:概述(下载安装、认识 QT Creator)
🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 介绍 🦋 什么是 QT🦋 QT 发展史🦋 Qt版本🦋 QT 优点 一:🔥 搭建Qt开发环境 ǹ…...
Netty源码解析之异步处理(二):盛赞Promise中的集合设计
前言 在阅读Netty源码的过程中,我越来越相信一句话:“Netty的源码非常好,质量极高,是Java中质量最高的开源项目之一”。如果认真研究,会有一种遍地黄金的感觉。 本篇文件我将记录一下鄙人在Promise的实现类DefaultPr…...
Spring Boot 的约定优于配置,你的理解是什么?
“约定优于配置” 是 Spring Boot 极为重要的设计理念,它极大地简化了 Spring 应用的开发流程,下面从多个方面详细解释这一理念: 减少配置复杂性 传统开发的痛点 在传统的 Spring 开发里,配置工作相当繁琐。以配置 Spring MVC …...
图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介
1.Skia —— 2D 图形库 Skia 是一个 2D 图形库,它的作用是为开发者提供一个高层次的绘图接口,方便他们进行 2D 图形渲染(比如绘制文本、形状、图像等)。Skia 本身不直接管理 GPU 或进行底层的渲染工作,而是通过 底层图…...
git使用,注意空格
第一节 安装完成后,找个目录用于存储,打开目录右击选择git bash here 命令1 姓名 回车 git config --global user.name "li" 命令2 邮箱 回车 git config --global user.email "888163.com" 命令3 初始化新仓库,下载克隆 回…...
以用户为中心,汽车 HMI 界面设计的创新之道
在汽车智能化飞速发展的当下,汽车 HMI(人机交互界面)成为连接人与车的关键桥梁。如何打造出优秀的 HMI 界面?答案是以用户为中心,探索创新之道。 用户需求是汽车 HMI 界面设计的指南针。在设计前期,深入调…...
CentOS安装Docker,Ubuntu安装Docker,Docker解决方案
文章目录 CentOS7安装DockerUbuntu修改Docker镜像源docker设置容器自动启动启动时加--restartalways如果已经过运行的项目docker compose设置容器自启动 docker file修改时区docker在容器执行命令简单粗暴的办法安装curl docker compose命令安装docker compose Docker WEB 图形…...
c#中“事件-event”的经典示例与理解
在C#编程语言中,事件(Event)是一个非常重要的概念,它提供了一种松耦合的方式,让对象间能够通知彼此,而无需直接联系。事件的使用可以让我们的代码更加灵活、可扩展且易于维护。 事件可以视作委托的实例&…...
git bash在github的库中上传或更新本地文件
一、将本地文件上传到 GitHub 仓库 1. 创建 GitHub 仓库 如果你还没有在 GitHub 上创建仓库,首先需要创建一个新的仓库: 登录到 GitHub。点击右上角的 按钮,选择 New repository。给你的仓库起个名字,并选择 Public 或 Privat…...
【编程实践】vscode+pyside6环境部署
1 PySide6简介 PySide6是Qt for Python的官方版本,支持Qt6,提供Python访问Qt框架的接口。优点包括官方支持、LGPL许可,便于商业应用,与Qt6同步更新,支持最新特性。缺点是相比PyQt5,社区资源较少。未来发展…...
vue 文件下载(导出)excel的方法
目前有一个到处功能的需求,这是我用过DeepSeek生成的导出(下载)excel的一个方法。 1.excel的文件名是后端生成的,放在了响应头那里。 2.这里也可以自己制定文件名。 3.axios用的是原生的axios,不要用处理过的ÿ…...
服务器延迟给视频网站造成的影响
在数字化时代中,网络视频已经成为人们日常娱乐和获取信息的重要平台,网络视频的流畅性会影响着用户的体验度,那么,当服务器出现延迟会对视频网站造成哪些影响呢?本文就来共同了解一下吧! 当所使用的服务器由…...
django上传文件
1、settings.py配置 # 静态文件配置 STATIC_URL /static/ STATICFILES_DIRS [BASE_DIR /static, ]上传文件 # 定义一个视图函数,该函数接收一个 request 参数 from django.shortcuts import render # 必备引入 import json from django.views.decorators.http i…...
Mysql数据库
一.数据定义语言DDL 一.概述 DDL用于定义和管理数据库的结构 DDL关键字:1.CREATE; 2.ALTER; 3.DROP 二.SQL命名规定和规范 1.标识符命名规则 2.标识符命名规范 三.库管理 1. CREATE DATABASE 数据库名; 2. CREATE DATABASE IF NOT EXISTS 数据库名; 3. CREATE…...
机器学习 - 大数定律、可能近似正确学习理论
一、大数定律: 大数定律是概率论中的一个基本定理,其核心思想是:当独立重复的随机试验次数足够大时,样本的平均值会趋近于该随机变量的期望值。下面从直观和数学两个角度来说明这一概念: 1. 直观理解 重复试验的稳定…...