Python爬虫基础
本篇内容中,我们主要分享一些爬虫的前置知识,主要知识点有:
- 爬虫的概念和作用
- 爬虫的流程【重要】
- http相关的复习
- http和https概念和区别
- 浏览器访问一个网址的过程
- 爬虫中常用的请求头、响应头
- 常见的响应状态码
- 浏览器自带开发者工具的使用
爬虫概述
知识点:
- 了解 爬虫的概念
- 了解 爬虫的分类
- 掌握 爬虫的流程
1. 爬虫的概念
网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
- 原则上,只要是浏览器(客户端)能做的事情,爬虫都能做。
- 爬虫只能获取到浏览器(客户端)所展示出来的数据。
简而言之:爬虫就是模拟浏览器,发送请求,获取响应。
2. 爬虫的作用
- 12306抢票
- 给喜欢的明星点赞、投票
- 新闻聚合网站: 百度新闻
- 搜索引擎
- 抓取微博评论(机器学习舆情分析)
- 抓取招聘网站的招聘数据(数据分析、挖掘)
3. 爬虫的分类
3.1 根据被爬取的网站数量,可以分为:
- 通用爬虫:通常指的是搜索引擎爬虫。
- 聚焦爬虫:针对某一网站或者某一类网站数据,如 12306 抢票。
3.2 根据是否以获取数据为目的,可以分为:
- 功能性爬虫,给你喜欢的明星投票、点赞
- 数据增量爬虫,比如招聘信息
3.3 根据 url 地址和对应的页面内容是否改变,数据增量爬虫可以分为:
- 基于 url 地址变化、内容也随之变化的数据增量爬虫
- url 地址不变、内容变化的数据增量爬虫
4. 爬虫的流程
爬虫流程如下图所示:
- 向起始的 url 地址发送请求,并获取响应数据(需要 http 协议)。
- 对响应进行提取。
- 如果提取 url,则继续发送请求获取响应。
- 如果提取数据,将数据进行保存。
总结
爬虫的概念: 模拟浏览器(客户端)发送网络请求,获取响应,只要是浏览器(客户端)能做的事,爬虫都能做。
爬虫的分类: 通用爬虫、聚焦爬虫。
爬虫的流程:
- 对起始页 url 地址发送请求,并获取到响应。
- 解析响应数据。
- 如果解析的是新的 url 地址,则继续发送请求、获取响应。
- 如果解析的是数据,则将数据进行保存
HTTP 与 HTTPS 协议
知识点:
- 了解 Http 的概念
- 掌握 Http 请求的过程
- 了解 用户访问网页背后发生了什么
- 掌握 Http 请求的格式
- 掌握 Http 响应格式
- 掌握 Http 常见请求头
- 掌握 Http 常见的响应状态码
1. HTTP 以及 HTTPS 的概念和区别
- HTTP:超文本传输协议,默认端口号是 80。
- 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件。
- 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容。
- HTTPS:HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议,默认端口号:443。
- SSL 对传输的内容(超文本,也就是请求体或响应体)进行加密。
HTTPS比HTTP更安全,但是性能更低
2. HTTP 请求过程
2.1 HTTP 单次请求过程
2.2 浏览器请求过程
- 浏览器通过域名解析服务器(DNS)获取IP地址
- 浏览器先向IP发起请求,并获取响应
- 在返回的响应内容(html)中,可能会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
- 浏览器每获取一个响应就对展示出的结果进行添加(加载),js、css等内容可能会修改页面的内容,js也可以重新发送请求,获取响应
- 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
2.3 注意
但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等)
浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,是因为爬虫不具备渲染的能力(当然后续课程中我们会借助其它工具或包来帮助爬虫对响应内容进行渲染)
- 浏览器最终展示的结果是由多个url地址分别发送的多次请求对应的多次响应共同渲染的结果
- 所以在爬虫中,需要以发送请求的一个url地址对应的响应为准来进行数据的提取
3. url 地址的格式
https://news.baidu.com/http://www.chinanews.com/gn/shipin/cns-d/2021/06-30/news893297.shtmlhttps://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E4%BC%A0%E6%99%BA&fenlei=256&rsv_pq=a022b40d0004b304&rsv_t=2694IiGer%2F3sERQbCKrfdfhb3mxsAJMY5glCVPCKnYM8CXsrv9o65b3YEiU&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_sug3=7&rsv_sug1=9&rsv_sug7=100&rsv_btype=i&inputT=16193&rsv_sug4=16194http://mp-meiduo-python.itheima.net/
4. HTTP 请求报文格式
请求报文有四部分组成: 请求行、请求头、空行(回车符+换行符)、请求体
请求方式
- 根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
- HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
- HTTP1.1 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
请求方式 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
注意:上面四种请求方式中,GET 请求时不能携带请求体
常见请求头
请求头 | 作用 |
---|---|
Cookie | Cookie状态保持数据 |
User-Agent | 浏览器名称和信息 |
Referer | 页面跳转处 |
Host | 主机和端口号 |
Connection | 连接类型 |
Accept | 指定客户端能够接收的内容类型 |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型 |
X-requested-with:XMLHttpRequest | ajax请求 |
5. HTTP 响应报文格式
响应报文有四部分组成: 响应行、响应头、空行(回车符+换行符)、响应体(响应数据)
响应头 | 作用 |
---|---|
Location | 这个头配合302状态码使用,告诉用户端找谁。 |
Set-Cookie | 设置和页面关联的Cookie |
Content-Type | 服务器通过这个头,回送数据的类型 |
Server | 服务器通过这个头,告诉浏览器服务器的类型 |
Content-Length | 服务器通过这个头,告诉浏览器回送数据的长度。 |
Connection | 服务器通过这个头,响应完是保持链接还是关闭链接。 |
6. 常见的响应状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP 状态码的英文为 HTTP Status Code。
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP 状态码共分为5种类型
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
常见的服务器响应状态码:
状态码 | 描述信息 |
---|---|
200 | 请求成功 |
302 | 跳转,重定向,新的url地址会在响应头Location中给出 |
403 | 资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限) |
404 | 找不到页面 |
500 | 服务器内部错误 |
503 | 服务器由于维护或者负载过重未能应答,在响应中可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码 |
7. 状态保持机制
HTTP 协议无状态性
HTTP 协议是一个无状态的协议,所谓的无状态,就是指客户端和 Web 服务器每次请求-响应的过程都是独立的,下一次的请求-响应不知道上一次的请求-响应所做的操作。
A(客户端):你吃饭了吗?
B(服务器):我吃过了
A(客户端):你吃饭了吗?
B(服务器):我吃过了
A(客户端):你吃饭了吗?
B(服务器):我吃过了
...
但是在我们实际的 Web 应用程序开发中,经常需要实现一些有状态的操作,比如:记住用户名、记住用户的登录状态等。要实现这些有状态的操作,常见的解决方案有两种:cookie机制
和 session机制
。
Cookie 机制
Cookie,有时也称 Cookies,指的是由服务端生成,保存在客户端的一种数据存储形式。服务器可以利用 Cookie 包含信息的任意性来筛选并经常性维护这些信息,以判断在 HTTP 传输中的状态。
过程图示:
特点说明:
-
Cookie 数据保存在客户端,以 key/value 形式进行存储,value大小有限制(最大为4kb),数据相对来说不安全
-
Cookie 是基于域名安全的,所属不同域名的 Cookie 是不能互相访问的
-
Cookie 是自动传递的,当浏览器访问一个域名时,会自动将这个域名所属的 Cookie 数据传递给对应的 Web 服务器
注意:Cookie 数据通过 Cookie 请求头进行携带,通过 Set-Cookie 响应头进行设置
应用案例:
Session 机制
Session,是一种会话控制方式。由服务端创建,并且保存在服务端的数据存储形式。Session 最典型应用:
记住登录用户状态
过程图示:
特点说明:
1)Session 数据保存的服务端,以key/value的形式进行存储,相对 Cookie 来说更加安全,可以存储一些敏感数据
2)Session 依赖于 Cookie,每个客户端对应的 Session 信息的标识,保存在客户端存储的 Cookie 中
3)每次客户端发送请求时,将 Session 信息标识的 Cookie 传递给对应的服务器,服务器就可以根据该标识取到对应客户端的 Session 数据
应用案例:
总结
- http: 超文本传输协议,默认端口号是 80。
- https:超文本传输协议 + SSL(安全套接字层),默认端口是 443
- 浏览器请求过程:用户输入网址 --> DNS 域名解析服务器,将域名解析为真是IP --> 浏览器拿到服务器真实 IP,去请求 --> 服务器接收到请求,处理请求,构造响应数据,返回 --> 浏览器接收到服务器响应数据,渲染,展示。
- url 地址的格式:协议://域名:端口号/资源路径/?数据#锚点
- HTTP 请求报文:
- 请求报文有四部分组成: 请求行、请求体、空行(回车符+换行符)、请求正文
- 常见请求头:
- cookie
- User-Agent
- Referer
- HTTP 响应报文:
- 响应报文有四部分组成: 响应行、响应体、空行(回车符+换行符)、响应主体(响应数据)
- 常见的响应头
- Location
- Set-Cookie
- 常见的响应状态码:200、302、403、404、500、503
- 状态保存机制:Cookie 和 Session
浏览器开发者工具(重点)
知识点
- 了解 如何打开浏览器开发者工具
- 了解 浏览器开发者工具菜单功能
- 了解 新建隐身窗口的目的
- 了解 Network 如何抓包
1.浏览器开发者工具介绍:
浏览器开发者工具就是给专业的Web应用和网站开发人员使用的工具,作用在于:
- 帮助开发人员对网页进行布局,比如HTML+CSS
- 帮助前端工程师更好的调试脚本(JavaScript、jQuery)代码
- 还可以使用该工具查看网页加载过程,获取网页请求(这个过程也叫做抓包)等
打开浏览器开发者工具的方式:
- 快捷键: F12
- 快捷键: Ctrl + Shift +I
- 直接使用鼠标在页面上 右键,选择检查
2.功能菜单
Chrome开发者工具最常用的四个功能模块:元素(Elements)、控制台(Console)、源代码(Sources)、网络(Network)。
- 元素(Elements):用于查看或修改HTML元素的属性、CSS属性、监听事件、断点等。css可以即时修改,即时显示。大大方便了开发者调试页面
- 控制台(Console):控制台一般用于执行一次性代码,查看JavaScript对象,查看调试日志信息或异常信息。还可以当作Javascript API查看用。例如我想查看console都有哪些方法和属性,我可以直接在Console中输入“console”并执行。
- 源代码(Sources):该页面用于查看页面的HTML文件源代码、JavaScript源代码、CSS源代码,此外最重要的是可以调试JavaScript源代码,可以给JS代码添加断点等。
- 网络(Network):网络页面主要用于查看header等与网络连接相关的信息。
3.浏览器无痕浏览模式:
查看第一次请求某个地址时,请求保存中包含的信息和响应时包含的信息。
浏览器中直接打开网站,会自动带上之前网站时保存的cookie,但是在爬虫中首次获取页面是没有携带cookie的,这种情况如何解决呢?
使用无痕窗口,首次打开网站,不会带上cookie,能够观察页面的获取情况,包括对方服务器如何设置cookie在本地。
相关文章:
Python爬虫基础
本篇内容中,我们主要分享一些爬虫的前置知识,主要知识点有: 爬虫的概念和作用爬虫的流程【重要】http相关的复习 http和https概念和区别浏览器访问一个网址的过程爬虫中常用的请求头、响应头常见的响应状态码 浏览器自带开发者工具的使用 爬…...
飞帆控件:on_post_get 接口配置
在网页中写一个接口是很基础的要求。 今天我们介绍一个工具,不用写代码,配置即可。 先上链接: on_post_gethttps://fvi.cn/798来看看控件的配置: 使用这个控件,在网页中写 post/get 接口可以告别代码。或许能做到初…...
C++笔试题(金山科技新未来训练营):
题目分布: 17道单选(每题3分)3道多选题(全对3分,部分对1分)2道编程题(每一道20分)。 不过题目太多,就记得一部分了: 单选题: static变量的初始…...
Selenium-Java版(css表达式)
css表达式 前言 根据 tag名、id、class 选择元素 tag名 #id .class 选择子元素和后代元素 定义 语法 根据属性选择 验证CSS Selector 组选择 按次序选择子节点 父元素的第n个子节点 父元素的倒数第n个子节点 父元素的第几个某类型的子节点 父元素的…...
19. 结合Selenium和YAML对页面实例化PO对象改造
19. 结合Selenium和YAML对页面实例化PO对象改造 一、架构升级核心思路 1.1 改造核心目标 # 原始PO模式:显式定义元素定位 username (id, ctl00_MainContent_username)# 改造后PO模式:动态属性访问 self.username.send_keys(Tester) # 自动触发元素定…...
MySQL——5、基本查询
表的增删改查 1、Create1.1、单行数据全列插入1.2、多行数据指定列插入1.3、插入否则更新1.4、替换 2、Retrieve2.1、select列2.2、where条件2.3、结果排序2.4、筛选分页结果 3、Update4、Delete4.1、删除数据4.2、截断表 5、插入查询结果6、聚合函数7、group by子句的使用8、实…...
ngx_http_referer_module 模块概述
一、使用场景 防盗链 仅允许本站或特定域名的页面直接引用图片、视频等资源,拒绝第三方网站直接嵌入。流量控制 阻止来自社交媒体、搜索引擎或未知来源的大量自动化抓取。安全审计 简易记录并过滤可疑 Referer,以减少非法请求。 注意 Referer 头可被伪造…...
Go语言--语法基础5--基本数据类型--类型转换
Go 编程语言中 if 条件语句的语法如下: 1、基本形式 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则 不执行。 package main import "fmt" …...
用golang实现二叉搜索树(BST)
目录 一、概念、性质二、二叉搜索树的实现1. 结构2. 查找3. 插入4. 删除5. 中序遍历 中序前驱/后继结点 一、概念、性质 二叉搜索树(Binary Search Tree),简写BST,又称为二叉查找树 它满足: 空树是一颗二叉搜索树对…...
基于FPGA的电子万年历系统开发,包含各模块testbench
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于FPGA的电子万年历系统开发,包含各模块testbench。主要包含以下核心模块: 时钟控制模块:提供系统基准时钟和计时功能。 日历计算模块:…...
上位机知识篇---Web
文章目录 前言 前言 本文简单介绍了Web。...
2025 ISCC 练武赛Pwn-wp(含附件)
前言 去年个人赛报名了忘记打了(笑), 所以这应该算是我第一次参加ISCC, 体验也是非常非常非常非常的cha(第四声)!!! 主办方也是非常幽默,pwn和web都是公用容器,那web最后都被当成玩具玩坏了 下面是这次练武题的pwn所有附件 通过网盘分享的文件…...
LeetCode Hot100刷题——除自身以外数组的乘积
238. 除自身以外数组的乘积 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&a…...
IDEA - Windows IDEA 代码块展开与折叠(基础折叠操作、高级折叠操作)
一、基础折叠操作 折叠当前代码块:Ctrl - # 操作方式按下 【Ctrl】 键,再按下 【-】 键展开当前代码块:Ctrl # 操作方式按下 【Ctrl】 键,再按下 【】 键折叠所有代码块:Ctrl Shift - # 操作方式按下 【Ctrl】…...
javaSE.Map
Map存储映射关系。键值对。key-value 左边值映射着右边的值,左边相当于钥匙,开到右边的门获取得到信息。 get👇put 是否存在该key👇containsKey() map.values👇 entrySet👇 entrySet()获取map中所有的键…...
Python Requests库完全指南:从入门到精通
引言 在Python的生态系统中,requests库以其简洁优雅的API设计和强大的功能,成为HTTP请求处理领域的标杆工具。无论是数据爬虫开发、API接口调用,还是自动化测试场景,requests都能将复杂的网络交互简化为几行可读性极高的代码。相…...
1.QPushBotton 以及 对象树
目录 1. 创建第一个Qt程序 1.1 初始化设置 🍐 选择存储位置 🍊 Kit 🍋 类信息 🍌 项目管理 1.2 代码 🍉 main.cpp 🍇widget.h 🍓 widget.cpp 1.3 .pro文件 🍈 常见模块…...
GO语言语法---For循环、break、continue
文章目录 1. 基本for循环(类似其他语言的while)2. 经典for循环(初始化;条件;后续操作)3. 无限循环4. 使用break和continue5 . 带标签的循环(可用于break/continue指定循环)1、break带标签2、continue带标签…...
网络编程-select(二)
一、I/O多路复用 1、为什么要多路复用 之前开启多线程能实时接收数据,并且也不是一次性连接服务。但毕竟是一请求一连接,每有一个客户端向服务端发起请求,就会创建一个线程,当请求达到上千上万,就会创建上千上万的线…...
2025年PMP 学习十九 第12章 项目采购管理
2025年PMP 学习十九 第12章 项目采购管理 序号过程过程组1规划采购管理规划2实施采购执行3控制采购监控4合同管理- 文章目录 2025年PMP 学习十九 第12章 项目采购管理12 项目采购管理建立战略合作伙伴关系的意义:细化采购步骤 12.1 规划采购管理1. **定义与作用**2…...
10.11 LangGraph多角色Agent开发实战:生产级AI系统架构与性能优化全解析
LangGraph 项目:High-level API for Multi-actor Agents 关键词:LangGraph 多角色 Agent, 状态管理, 持久化机制, 工作流编排, 生产级 AI 系统 1. LangGraph 设计哲学与架构演进 LangGraph 是 LangChain 生态中首个面向 多角色协作 Agent 的高阶 API 框架,其核心设计思想可…...
计算机网络概要
⽹络相关基础知识 协议 两设备之间使⽤光电信号传输信息数据 要想传递不同信息 那么⼆者ᳵ就需要约定好的数据格式 层 封装 继承 多态是计算机的性质 它们⽀持了软硬件分层的实现 同层协议可以ᳵ接通信 同层协议ᳵ不直接通信 是各⾃调⽤下层提供的结构能⼒完成通信 分层…...
Visual Studio已更新为17.14+集成deepseek实现高效编程
01 Visual Studio 2022 v17.14。 此更新侧重于全面提供出色的开发人员体验,侧重于稳定性和安全性以及 AI 改进。 02 GPT-4o代码完成模式 我们非常高兴地宣布,新的 GPT-4o Copilot 代码完成模型现已在 Visual Studio 17.14 中为 GitHub Copilot 用户…...
axios的基本使用
1. Axios概述 Axios 是一个基于 Promise 的 HTTP 客户端库,专为浏览器和 Node.js 设计,用来发送AJAX请求。可以通过npm install -g axios安装axios库。Axios有以下特征: 跨平台兼容性:同一套代码可运行于浏览器和 Node.js。在浏…...
【第三十六周】LoRA 微调方法
LoRA 摘要Abstract文章信息引言方法LoRA的原理LoRA在Transformer中的应用补充其他细节 实验与分析LoRA的使用论文实验结果分析 总结 摘要 本篇博客介绍了LoRA(Low-Rank Adaptation),这是一种面向大规模预训练语言模型的参数高效微调方法&…...
fcQCA模糊集定性比较分析法-学习笔记
模糊集定性比较分析(fsQCA,Fuzzy-set Qualitative Comparative Analysis) 是一种结合了定性和定量元素的研究方法,用于分析中小样本数据中的复杂因果关系。 1. 理解基础概念 QCA的核心思想: 基于集合论和布尔代数&a…...
基于WebRTC的实时语音对话系统:从语音识别到AI回复
基于WebRTC的实时语音对话系统:从语音识别到AI回复 在当今数字化时代,实时语音交互已成为人机界面的重要组成部分。本文将深入探讨一个基于WebRTC技术的实时语音对话系统,该系统集成了语音识别(ASR)、大语言模型(LLM)和语音合成(TTS)技术&am…...
Text2SQL:自助式数据报表开发---0517
Text2SQL技术 早期阶段:依赖于人工编写的规则模板来匹配自然语言和SQL语句之间的对应关系 机器学习阶段:采用序列到序列模型等机器学习方法来学习自然语言与SQL之间的关系 LLM阶段:借助LLM强大的语言理解和代码生成能力,利用提示…...
关于 Web 漏洞原理与利用:1. SQL 注入(SQLi)
一、原理: 拼接 SQL 语句导致注入 SQL 注入的根本原因是:开发者将用户的输入和 SQL 语句直接拼接在一起,没有任何过滤或校验,最终被数据库“当作语句”执行了。 这就像是我们给数据库写了一封信,结果攻击者在我们的…...
【NLP 75、如何通过API调用智谱大模型】
事事忘记,事事等待,事事自愈 —— 25.5.18 一、调用智谱大模型 zhipuai.model_api.invoke():调用智谱 AI 的大模型(如 ChatGLM)进行文本生成或推理,支持同步请求。 参数列表 参数名类型是否必需默认值说…...
【RabbitMQ】 RabbitMQ高级特性(二)
文章目录 一、重试机制1.1、重试配置1.2、配置交换机&队列1.3、发送消息1.4、消费消息1.5、运行程序1.6、 手动确认 二、TTL2.1、设置消息的TTL2.2、设置队列的TTL2.3、两者区别 三 、死信队列6.1 死信的概念3.2 代码示例3.2.1、声明队列和交换机3.2.2、正常队列绑定死信交…...
EMQX开源版安装指南:Linux/Windows全攻略
EMQX开源版安装教程-linux/windows 因最近自己需要使用MQTT,需要搭建一个MQTT服务器,所以想到了很久以前用到的EMQX。但是当时的EMQX使用的是开源版的,在官网可以直接下载。而现在再次打开官网时发现怎么也找不大开源版本了,所以…...
MySQL 数据库备份与还原
作者:IvanCodes 日期:2025年5月18日 专栏:MySQL教程 思维导图 备份 (Backup) 与 冗余 (Redundancy) 的核心区别: 🎯 备份是指创建数据的副本并将其存储在不同位置或介质,主要目的是在发生数据丢失、损坏或逻辑错误时进…...
【数据结构】2-3-4 单链表的建立
数据结构知识点合集 尾插法建立单链表 建立链表时总是将新节点插入到链表的尾部,将新插入的节点作为链表的尾节点 /*尾插法建立链表L*/ LinkList List_TailInsert(LinkList &L) { int x; /*建立头节点*/ L (LNode *)malloc(sizeof(LNode)); /*…...
JVM如何处理多线程内存抢占问题
目录 1、堆内存结构 2、运行时数据 3、内存分配机制 3.1、堆内存结构 3.2、内存分配方式 1、指针碰撞 2、空闲列表 4、jvm内存抢占方案 4.1、TLAB 4.2、CAS 4.3、锁优化 4.4、逃逸分析与栈上分配 5、问题 5.1、内存分配竞争导致性能下降 5.2、伪共享(…...
猫番阅读APP:丰富资源,优质体验,满足你的阅读需求
猫番阅读APP是一款专为书籍爱好者设计的移动阅读应用,致力于提供丰富的阅读体验和多样化的书籍资源。它不仅涵盖了小说、非虚构、杂志等多个领域的电子书,还提供了个性化推荐、书架管理、离线下载等功能,满足不同读者的阅读需求。无论是通勤路…...
Redis 学习笔记 4:优惠券秒杀
Redis 学习笔记 4:优惠券秒杀 本文基于前文的黑马点评项目进行学习。 Redis 生成全局唯一ID 整个全局唯一 ID 的结构如下: 这里的时间戳是当前时间基于某一个基准时间(项目开始前的某个时间点)的时间戳。序列号是依赖 Redis 生…...
C++学习:六个月从基础到就业——C++17:if/switch初始化语句
C学习:六个月从基础到就业——C17:if/switch初始化语句 本文是我C学习之旅系列的第四十六篇技术文章,也是第三阶段"现代C特性"的第八篇,主要介绍C17引入的if和switch语句的初始化表达式特性。查看完整系列目录了解更多内…...
C++跨平台开发经验与解决方案
在当今软件开发领域,跨平台开发已成为一个重要的需求。C作为一种强大的系统级编程语言,在跨平台开发中扮演着重要角色。本文将分享在实际项目中的跨平台开发经验和解决方案。 1. 构建系统选择 CMake的优势 跨平台兼容性好 支持多种编译器和IDE 强大…...
RabbitMQ 工作模式(上)
前言 在 RabbitMQ 中,一共有七种工作模式,我们也可以打开官网了解: 本章我们先介绍前三种工作模式 (Simple)简单模式 P:producer 生产者,负责发送消息 C:consumer 消费者&#x…...
为什么需要加密机服务?
前言 大家好,我是老马。 以前我自己在写工具的时候,都是直接自己实现就完事了。 但是在大公司,或者说随着合规监管的要求,自己随手写的加解密之类的,严格说是不合规的。 作为一家技术性公司,特别是金融…...
【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章:多路转接epoll,实现echoserver 至此,Linux与…...
c/c++的findcontours崩溃解决方案
解决 Windows 平台 OpenCV findContours 崩溃:一种更稳定的方法 许多在 Windows 平台上使用 OpenCV 的开发者可能会在使用 findContours 函数时,遇到令人头疼的程序崩溃问题。尽管网络上流传着多种解决方案,但它们并非总能根治此问题。 当时…...
机器学习 Day18 Support Vector Machine ——最优美的机器学习算法
1.问题导入: 2.SVM定义和一些最优化理论 2.1SVM中的定义 2.1.1 定义 SVM 定义:SVM(Support Vector Machine,支持向量机)核心是寻找超平面将样本分成两类且间隔最大 。它功能多样,可用于线性或非线性分类…...
npm与pnpm--为什么推荐pnpm
包管理器中 npm是最经典的,但大家都任意忽略一个更优质的管理器:pnpm 1. 核心区别 特性npmpnpm依赖存储方式扁平化结构(可能重复依赖)硬链接 符号链接(共享依赖,节省空间)安装速度较慢&#…...
ollama调用千问2.5-vl视频图片UI界面小程序分享
1、问题描述: ollama调用千问2.5-vl视频图片内容,通常用命令行工具不方便,于是做了一个python UI界面与大家分享。需要提前安装ollama,并下载千问qwen2.5vl:7b 模型,在ollama官网即可下载。 (8G-6G 显卡可…...
济南国网数字化培训班学习笔记-第三组-1-电力通信传输网认知
电力通信传输网认知 电力通信基本情况 传输介质 传输介质类型(导引与非导引) 导引传输介质,如电缆、光纤; 非导引传输介质,如无线电波; 传输介质的选择影响信号传输质量 信号传输模式(单工…...
Kubernetes控制平面组件:Kubelet详解(六):pod sandbox(pause)容器
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
51单片机,两路倒计时,LCD1602 ,Proteus仿真
初始上电 默认2路都是0分钟的倒计时 8个按键 4个一组 一组控制一路倒计时 4个 按键:加 减 开始或者暂停 复位到0分钟相当于停止 针对第一路倒计时 4个 按键2:加 减 开始或者暂停 复位到0分钟相当于停止 针对第2路倒计时 哪一路到了0后蜂鸣器响 对应LED点亮 main.c 文件实现了…...
MySQL之储存引擎和视图
一、储存引擎 基本介绍: 1、MySQL的表类型由储存引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory等。 2、MySQL数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG_MYISAN、MYISAM、InnoBDB。 3、这六种又分…...