python爬虫复习
requests模块
-
爬虫的分类
- 通用爬虫:将一整张页面进行数据采集
- 聚焦爬虫:可以将页面中局部或指定的数据进行采集
- 聚焦爬虫是需要建立在通用的基础上来实现
- 功能爬虫:基于selenium实现的浏览器自动化的操作
- 分布式爬虫:使用分布式机群可以对一组资源进行联合且分布的爬取
- 增量式爬虫:监测网站数据更新的情况,以便爬取到网站最新更新出来的数据
-
反爬机制,反反爬策略
-
robots协议:君子协议。
-
requests模块是用来模拟浏览器发请求,因此可以基于requests模块实现爬虫的数据采集相关操作。
- 注意:如果爬虫程序采集不到我们想要的数据,唯一的原因:爬虫程序模拟浏览器的力度不够!
- 模拟力度重点体现在哪里?
- 请求头:
- User-Agent:请求载体的身份标识
- Cookie
- refere
- 其他
- 请求参数
- 重点关注动态变化的请求参数
- 如何检测请求参数是否动态变化的?
- 基于抓包工具多尝试抓取几次该数据包,检测不同时刻抓取数据包中的请求参数是否有变动。
- 如何检测请求参数是否动态变化的?
- 重点关注动态变化的请求参数
- 请求头:
- 模拟力度重点体现在哪里?
- 注意:如果爬虫程序采集不到我们想要的数据,唯一的原因:爬虫程序模拟浏览器的力度不够!
-
requests模块中常用的两个方法:
-
get:发起get请求
- 重要的方法参数:
- url:发起请求的url
- headers:请求头的伪装
- params:请求参数
- proxies:指定代理
- 重要的方法参数:
-
post:发起post请求
-
url
-
headers
-
data:请求参数。如果抓包工具中的请求参数为键值对,则使用data参数
-
name:deng password:123456
-
-
json:如果抓包工具中的请求参数为字符串形式的键值对,则使用json参数
-
"{'name':'deng','password':'123456'}"
-
-
proxies
-
-
-
动态加载数据
- 有哪些方式可以实现动态加载数据?
- 通过ajax请求生成动态加载的数据(常见)
- 通过js生成动态加载的数据
- 如何获取js生成的动态加载数据?(极为少见)
- 逆向。
- 如何获取js生成的动态加载数据?(极为少见)
- 在对一个陌生的网站进行数据爬取前,首先做什么?
- 检测你想要爬取的数据是否为动态加载数据?
- 如何检测?
- 基于抓包工具进行局部搜索,如果搜索不到则说明数据是动态加载的。
- 如何获取动态加载数据?
- 基于抓包工具进行全局搜索!
- 如何检测?
- 问题:如果基于抓包工具进行全局搜索,发现没有搜索到,说明说明?
- 说明该组数据被加密了。那就需要逆向操作。
- 检测你想要爬取的数据是否为动态加载数据?
- 有哪些方式可以实现动态加载数据?
数据解析
-
数据解析的作用是什么?
- 是为了实现聚焦爬虫!
-
如何实现数据解析呢?
- Bs4,xpath,正则
-
数据解析的通用原理是什么?
- 1.实现标签定位
- 2.提取定位到标签中的数据
-
bs4实现数据解析的流程:
-
1.实例化一个BeautifulSoup对象,然后把即将被解析的html页面加载到该对象中。
-
2.调用BeautifulSoup对象相关的属性和方法进行标签定位和数据提取
-
常见的属性或方法有哪些?
- find(属性定位),find_all(属性定位),select(选择器定位)
- text,string:获取定位到标签中的数据值
-
需求:想要将页面中的一组指定标签的html代码获取,如何实现?
-
<html><div>hello bobo</div> #如何可以解析到该一整行数据(包含标签的数据) </html>
-
直接使用bs4定位到div标签,然后进行打印输出即可!
-
-
-
xpath实现数据解析的流程:
- xpath表达式进行标签定位和数据提取
- 注意:
- 如果xpath表达式中存在tbody标签,则无法实现标签定位和数据提取
- 直接将tbody从xpath表达式中删除即可
- //div/a/tbody/span/text()
- //div/a//span/text()
- 直接将tbody从xpath表达式中删除即可
- 可以在xpath表达式中使用|符号,来增加xpath表达式的通用性。
- //div | //span/div :|左右两侧的某一个xpath表达式生效,即可进行标签定位
- 如果xpath表达式中存在tbody标签,则无法实现标签定位和数据提取
requests高级
- cookie
- 处理cookie的方式
- 手动处理:将抓包工具中的cookie写在headers中即可
- 自动处理:使用session对象。该对象在进行请求发送的过程中,如果产生了cookie,则会自动将cookie存储到该对象中。
- 注意:Session对象处理cookie不是万能。
- 辅助方式:通过selenium实时获取cookie,然后将cookie写到requests程序的headers中(稳妥)
- 处理cookie的方式
- 代理:
- 代理服务器的作用:可以转发请求和响应。
- 可以使用get或者post方法的proxies实现代理操作。
- 注意:get(proxies={‘http’:‘ip:port’}) or get(proxies={‘http://’:‘ip:port’})
- 代理的类型:http和https
- 代理的匿名度:透明,匿名,高匿
- 验证码
- 将验证码下载到本地,基于相关的打码平台进行识别即可!
- 模拟登录
- 有些网站数据,是需要登录后在可以查看的,因此需要进行程序的模拟登录。
selenium
-
不同的浏览器是需要使用不同的驱动程序!!!
-
基于浏览器自动化的模块。
-
常见操作:
- 请求操作:get
- 交互操作:
- click,send_keys…
- 标签定位操作
- find系列的函数
- 获取页面源码:page_source
- cookie:获取cookie
- 无头浏览器:没有可视化界面的浏览器
- 动作链:ActionChains
- 内部封装了很多比较复杂的动作。
- 规避检测的方法
- 较新的规避检测的方法去哪里找?
- GitHub,百度(效率低)
- 较新的规避检测的方法去哪里找?
-
在爬虫中,为什么需要使用selenium?(selenium和爬虫之间的关联是什么)
- selenium可以便捷的获取动态加载/加密数据(可见即可得)
- 实现便捷的模拟登录
- 缺点:效率较低,无法很好的使用异步操作。
异步操作
- 多线程
- 推荐大家使用线程池(Pool)
- 重要函数map:
- map(callback,alist):可以将alist列表中的每一个元素以此传递给callback这个回调函数的参数,然后会异步的调用callback函数完成相关任务操作。
- callback调用的次数完全取决于alist元素的个数。
- map(callback,alist):可以将alist列表中的每一个元素以此传递给callback这个回调函数的参数,然后会异步的调用callback函数完成相关任务操作。
- 协程(重点)
- 特殊的函数
- 被ascyc关键字修饰的函数定义,该函数就是一个特殊的函数
- 特殊之处:
- 该函数被调用会函数内部的函数体语句不会被立即执行
- 函数调用后会返回一个协程对象。
- 协程
- 协程对象 == 特殊的函数 == 一组指定形式的操作
- 协程对象 == 一组指定形式的操作
- 任务对象
- 高级的协程对象,高级之处就在于可以给任务对象绑定一个回调函数。
- 任务对象协程对象一组指定形式的操作
- 任务对象==一组指定形式的操作
- 绑定回调函数:
- 可以使用add_done_callback函数给任务对象绑定一个回调函数,记住:回调函数是在任务对象表示的这组操作执行完毕后,才可以执行回调函数的相关操作!
- 回调函数的重点:
- 回调函数只可以有一个参数,该参数表示的是就是当前的任务对象。
- 任务对象.result():result方法返回的就是特殊函数内部的返回值!
- 在爬虫中,一般情况下,任务对象的回调函数使用来进行数据解析或者持久化存储!
- 高级的协程对象,高级之处就在于可以给任务对象绑定一个回调函数。
- 事件循环
- loop这个事件循环对象,可以当做是一个容器,该容器内部存放一个或者多个任务对象。如果一个或者多个任务对象放置在了loop这个容器中,当loop启动,则其内部存放的任务对象就可以被异步的执行了!
- 注意:在特殊函数内部,不可以出现不支持异步模块的代码,否则会中断整个协程的异步效果。
- 因此在协程异步环节中,不可以使用requests,使用aiohttp这个支持异步的网络请求模块进行请求发送!
- req = aiohttp.ClinetSession() 创建请求对象
- response = req.get/post()进行请求发送
- response.text()返回字符串形式的响应数据,response.read()返回二进制形式的响应数据,response.json()返回json格式的响应数据。
- 因此在协程异步环节中,不可以使用requests,使用aiohttp这个支持异步的网络请求模块进行请求发送!
- 特殊的函数
scrapy
-
数据解析机制:
- 通常使用xpath进行数据解析,只不过,必须让xpath结合这extract()或者extract_first()进行联合解析!
-
持久化存储
- 基于终端指令的持久化存储
- 只可以将parse方法的返回值存储到指定后缀的文本文件中
- 指令:scrapy crawl spiderName -o filePath
- 基于管道的持久化存储
- 在爬虫文件中进行数据解析
- 将解析到的数据存储封装到item类型的对象中
- 将item对象通过yield关键字提交给管道
- 在管道中调用process_item进行item对象的接收,且可以将接收到的数据存储到任意的平台中。
- 在配置文件中开启管道机制。
- 注意:
- process_item方法调用次数取决于爬虫文件向管道提交item的次数。
- 如果将二进制形式的数据进行持久化存储如何操作?
- 基于ImagesPipeLine该管道类实现二进制数据的持久化存储!
- 在爬虫文件中,只需要将多媒体文件的路径和名字封装到item中,提交给ImagesPipeLine管道类即可。
- 基于ImagesPipeLine该管道类实现二进制数据的持久化存储!
- 基于终端指令的持久化存储
-
手动请求发送:
- 可以将url放置在start_urls这个列表中,该列表会对其内部的url发起get请求
- 手动发起请求:
- yield scrapy.Request():发起get请求
- yield scrapy.FormRequest():发起post请求
-
请求传参:
- 作用:可以实现深度爬取(爬取的数据没有存在于同一张页面中)
- 如何实现:
- Yield scrapy.Request(url,callback,meta):meta是一个字典,meta可以将自身传递给callback这个回调函数。
- 在回调函数中,可以通过response.meta获取传递过来的meta字典
-
中间件:
- 作用:拦截到所有的请求和响应
- 常用的功能:
- 设置请求代理(常用)
- cookie设置
-
全站数据爬取(将所有页码对应页面的数据进行爬取)
- CrawlSpider技术
- 可以创建一个基于CrawlSpider的爬虫类
- scrapy genspider -t crawl spiderName www.xxx.com
- 链接提取器LinkExtractor(rule=‘正则’):
- 可以根据正则匹配的要求在页面中提取指定的链接(url)
- 规则解析器Rule(link,callback,follow=True):
- Rule可以将链接提取器提取到的链接进行请求发送,然后根据指定规则(callback)对请求到的数据进行数据解析
- 发现:链接提取器提取到链接的个数就是callback这个回调函数调用的次数。
- 可以创建一个基于CrawlSpider的爬虫类
- CrawlSpider技术
-
分布式:
- 编码流程:
- 导包:在爬虫文件中导入RedisCrawlSpider
- 将爬虫类的父类修改为RedisCrawlSpider
- 将start_urls替换成redis_key属性(调度器队列的名称)
- 数据解析解析和item提交管道操作
- settings中配置可以被共享的管道类和调度器类即可
- settings配置redis数据库的访问接口
- 配置redis数据库的配置文件(redis.window.conf)
- 取消127.0.0.1的默认绑定
- 取消保护模式:protected mode = no
- 启动redis的服务端和客户端
- 启动scrapy的分布式项目
- 将起始的url扔入到redis-key表示的调度器队列中即可
- 编码流程:
-
增量式
- 核心:去重
- 如何去重?
- 使用一个记录表
- 记录表需要具备两个功能:1.可以去重 2.可以持久化存储
- 因此使用redis的set充当记录表
- 使用一个记录表
- 如何去重?
- 数据指纹:
- 记录表中通常存储的是数据指纹
- 数据指纹:爬取到的数据的唯一标识
- 使用数据的md5值
- 详情页的url
- 核心:去重
web逆向
- 什么叫做逆向?
- 将js代码改写成python代码,这个过程就是逆向。
- 为什么要把js代码改写成python代码?
- 网站中,有些数据是通过js代码生成的,因此,需要将生成该数据的js代码运行,获取运行结果,该结果就是我们要爬取的数据。
- 如何将js代码改写成python代码?
- 手动改写:不选择
- 自动改写:PyExceJs模块实现基于python代码执行js代码
- 逆向通产用来处理什么样的问题?
- 处理动态变化的请求参数
- 破解加密的响应数据
- 处理动态变化的cookie值(终极武器)
相关文章:
python爬虫复习
requests模块 爬虫的分类 通用爬虫:将一整张页面进行数据采集聚焦爬虫:可以将页面中局部或指定的数据进行采集 聚焦爬虫是需要建立在通用的基础上来实现 功能爬虫:基于selenium实现的浏览器自动化的操作分布式爬虫:使用分布式机群…...
深入解析主流数据库体系架构:从关系型到云原生
数据库是现代信息系统的核心组件,其体系架构设计直接影响性能、扩展性和可靠性。本文将从传统关系型数据库到新兴云原生数据库,系统解析主流数据库的架构特点及适用场景。 目录 一、关系型数据库(RDBMS)架构 典型代表&…...
2026《数据结构》考研复习笔记四(第一章)
绪论 前言时间复杂度分析 前言 由于先前笔者花费约一周时间将王道《数据结构》知识点大致过了一遍,圈画下来疑难知识点,有了大致的知识框架,现在的任务就是将知识点逐个理解透彻,并将leetcode刷题与课后刷题相结合。因此此后的过…...
Mysql insert一条数据的详细过程
以下是MySQL在接收到INSERT语句后存储数据的详细过程解析,结合存储引擎(以InnoDB为例)和物理存储机制分步说明。 一、SQL解析与事务启动 1.语法解析 MySQL首先解析INSERT语句,验证字段是否存在、数据类型是否匹配、约束…...
流水灯右移程序(STC89C52单片机)
#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; void main() { unsigned int i 0; //定义循环变量i,用于软件延时 unsigned char cnt 0; //定义计数变量cnt,用…...
AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B专属管家大模型
环境: AI-Sphere-Butler WSL2 英伟达4070ti 12G Win10 Ubuntu22.04 Qwen2.-1.5B/3B Llama factory llama.cpp 问题描述: AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B管家大模型 解决方案: 一、准备数据集我这…...
智能体团队 (Agent Team)
概述 智能体团队是一种多智能体协作模式,它将多个智能体组织成一个团队,共同解决复杂任务。与智能体监督模式不同,智能体团队中的成员通常具有平等的地位,通过相互交流和协作来达成目标。这种模式特别适合需要多种观点或多领域专…...
AI日报 - 2025年04月19日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI与Google模型在复杂推理上展现潜力,但距AGI仍有距离;因果AI被视为关键路径。 模型如o3解决复杂迷宫,o4-mini通过棋盘测试,但专家预测AGI仍需30年。 ▎…...
【实战中提升自己】内网安全部署之dot1x部署 本地与集成AD域的主流方式(附带MAC认证)
1 dot1x部署【用户名密码认证,也可以解决私接无线AP等功能】 说明:如果一个网络需要通过用户名认证才能访问内网,而认证失败只能访问外网与服务器,可以部署dot1x功能。它能实现的效果是,当内部用户输入正常的…...
算法—合并排序—js(场景:大数据且需稳定性)
合并排序基本思想(稳定且高效) 将数组递归拆分为最小单元,合并两个有序数组。 特点: 时间复杂度:O(n log n) 空间复杂度:O(n) 稳定排序 // 合并排序-分解 function mergeSort(arr) {if (arr.length < …...
绝对路径与相对路径
绝对路径和相对路径是在计算机系统中用于定位文件或目录的两种方式,以下是具体介绍: 绝对路径 • 定义:是从文件系统的根目录开始到目标文件或目录的完整路径,它包含了从根目录到目标位置的所有目录和子目录信息,具有…...
RabbitMQ,添加用户时,出现Erlang cookie不一致,导致添加用户失败的问题解决
1. 问题现象 RabbitMQ 添加用户,出现以下报错 ./rabbitmgctl add user admin admin666*2. 问题原因和解决方法 安装的 RabbitMQ 里的 Erlang cookie,和 Erlang 环境的 cookie 不一致导致的 解决方法:将 Erlang 环境的 cookie ,…...
阿拉丁神灯-第16届蓝桥第4次STEMA测评Scratch真题第2题
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥真题,这是Scratch蓝桥真题解析第219讲。 第16届蓝桥第4次STEMA测评已于2025年1月12日落下帷幕,编程题一共有5题(初级组只有前4道编…...
常用的验证验证 onnxruntime-gpu安装的命令
#工作记录 我们经常会遇到明明安装了onnxruntime-gpu或onnxruntime后,无法正常使用的情况。 一、强制重新安装 onnxruntime-gpu 及其依赖 # 强制重新安装 onnxruntime-gpu 及其依赖 pip install --force-reinstall --no-cache-dir onnxruntime-gpu1.18.0 --extra…...
docker配置skywalking 监控springcloud应用
在使用 Docker 配置 SkyWalking 监控 Spring Cloud 应用时,主要分为以下几个步骤: 1. 准备工作 确保你的开发环境已经安装了 Docker 和 Docker Compose。准备好 Spring Cloud 应用代码,并确保它支持 SkyWalking 的探针(Agent&…...
HBase安装与基本操作指南
## 1. 安装准备 首先确保您的系统已经安装了以下组件: - Java JDK 8或更高版本 - Hadoop(HBase可以运行在独立模式下,但建议配合Hadoop使用) ## 2. 下载与安装HBase ```bash # 下载HBase(以2.4.12版本为例) wget https://downloads.apache.org/hbase/2.4.12/hbase-2…...
【Linux】Rhcsa复习5
一、Linux文件系统权限 1、文件的一般权限 文件权限针对三类对象进行定义: owner 属主,缩写u group 属组, 缩写g other 其他,缩写o 每个文件针对每类访问者定义了三种主要权限: r:read 读 w&…...
C++11特性补充
目录 lambda表达式 定义 捕捉的方式 可变模板参数 递归函数方式展开参数包 数组展开参数包 移动构造和移动赋值 包装器 绑定bind 智能指针 RAII auto_ptr unique_ptr shared_ptr 循环引用 weak_ptr 补充 总结 特殊类的设计 不能被拷贝的类 只能在堆上创建…...
缓存 --- Redis性能瓶颈和大Key问题
缓存 --- Redis性能瓶颈和大Key问题 内存瓶颈网络瓶颈CPU 瓶颈持久化瓶颈大key问题优化方案 Redis 是一个高性能的内存数据库,但在实际使用中,可能会在内存、网络、CPU、持久化、大键值对等方面遇到性能瓶颈。下面从这些方面详细分析 Redis 的性能瓶颈&a…...
css3新特性第三章(文本属性)
一、文本属性 文本阴影文本换行文本溢出文本修饰文本描边 1.1 文本阴影 在 CSS3 中,我们可以使用 text-shadow 属性给文本添加阴影。 语法: text-shadow: h-shadow v-shadow blur color; 值描述h-shadow必需写,水平阴影的位置。允许负值。…...
Redis 缓存—处理高并发问题
Redis的布隆过滤器、单线程架构、双写一致性、比较穿透、击穿及雪崩、缓存更新方案及分布式锁。 1 布隆过滤器 是一种高效的概率型数据结构,用于判断元素是否存在。主要用于防止缓存穿透,通过拦截不存在的数据查询,避免击穿数据库。 原理&…...
嵌入式芯片中的 SRAM 内容细讲
什么是 RAM? RAM 指的是“随机存取”,意思是存储单元都可以在相同的时间内被读写,和“顺序访问”(如磁带)相对。 RAM 不等于 DRAM,而是一类统称,包括 SRAM 和 DRAM 两种主要类型。 静态随机存…...
实操基于MCP驱动的 Agentic RAG:智能调度向量召回或者网络检索
我们展示了一个由 MCP 驱动的 Agentic RAG,它会搜索向量数据库,当然如果有需要他会自行进行网络搜索。 为了构建这个系统,我们将使用以下工具: 博查搜索 用于大规模抓取网络数据。作为Faiss向量数据库。Cursor 作为 MCP 客户端。…...
位运算---总结
位运算 基础 1. & 运算符 : 有 0 就是 0 2. | 运算符 : 有 1 就是 1 3. ^ 运算符 : 相同为0 相异为1 and 无进位相加位运算的优选级 不用在意优先级,能加括号就加括号给一个数 n ,确定它的二进制位中第 x 位是 0 还是 1? 规定: 题中所说的第x位指:int 在32位机器下4个…...
从0开始搭建一套工具函数库,发布npm,支持commonjs模块es模块和script引入使用
文章目录 文章目标技术选型工程搭建1. 初始化项目2. 安装开发依赖3. 项目结构4. 配置文件tsconfig.json.eslintrc.jseslint.config.prettierrc.jsrollup.config.cjs创建 .gitignore文件 设置 Git 钩子创建示例工具函数8. 版本管理和发布9 工具函数测试方案1. 安装测试依赖2. 配…...
精通 Spring Cache + Redis:避坑指南与最佳实践
Spring Cache 以其优雅的注解方式,极大地简化了 Java 应用中缓存逻辑的实现。结合高性能的内存数据库 Redis,我们可以轻松构建出响应迅速、扩展性强的应用程序。然而,在享受便捷的同时,一些常见的“坑”和被忽视的最佳实践可能会悄…...
DSP28335入门学习——第一节:工程项目创建
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.20 DSP28335开发板学习——第一节:工程项目创建 前言开发板说明引用解答…...
Docker Registry(镜像仓库)
官方架构 Docker 使用客户端 - 服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker 镜像来创建。 Docker 仓库(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hu…...
通过Dify快速搭建本地AI智能体开发平台
1. 安装Docker Desktop 访问 Docker官网 点击Download Docker Desktop,直接按照官方要求来就可以。 # 这串命令就像魔法咒语,在黑色窗口(命令提示符)里输入就能检查安装是否成功 docker --version2.安装dify 3.运行 Ollama 大…...
计算机视觉与深度学习 | Transformer原理,公式,代码,应用
Transformer 详解 Transformer 是 Google 在 2017 年提出的基于自注意力机制的深度学习模型,彻底改变了序列建模的范式,解决了 RNN 和 LSTM 在长距离依赖和并行计算上的局限性。以下是其原理、公式、代码和应用的详细解析。 一、原理 核心架构 Transformer 由 编码器(Encod…...
skywalking agent 关联docker镜像
Apache SkyWalking 提供了多种方式来部署和使用 SkyWalking Agent,包括在 Docker 容器中运行的应用。虽然 SkyWalking Agent 本身不是一个独立的 Docker 镜像,但你可以通过几种方式将 SkyWalking Agent 集成到你的 Docker 应用中。 方式一:手…...
【中间件】nginx将请求负载均衡转发给网关,网关再将请求转发给对应服务
一、场景 前端将请求发送给nginx,nginx将请求再转发给网关,网关再将请求转发至对应服务。由于网关会部署在多台服务器上,因此nginx需要负载均衡给网关发请求。nginx所有配置均参照官方文档nginx开发文档,可参考负载均衡板块内容 二…...
Milvus(1):什么是 Milvus
Milvus 由 Zilliz 开发,并很快捐赠给了 Linux 基金会下的 LF AI & Data 基金会,现已成为世界领先的开源向量数据库项目之一。它采用 Apache 2.0 许可发布,大多数贡献者都是高性能计算(HPC)领域的专家,擅…...
第十六节:高频开放题-React与Vue设计哲学差异
响应式原理(Proxy vs 虚拟DOM) 组合式API vs Hooks React 与 Vue 设计哲学差异深度解析 一、响应式原理的底层实现差异 1. Vue 的响应式模型(Proxy/数据劫持) Vue 的响应式系统通过 数据劫持 实现自动依赖追踪: • …...
【Hot100】 240. 搜索二维矩阵 II
目录 引言搜索二维矩阵 II我的解题贪心求解解题思路详解搜索策略(以从右上角开始为例)为什么这种方法有效? 完整代码实现复杂度分析示例演示 🙋♂️ 作者:海码007📜 专栏:算法专栏Ὂ…...
每日面试实录·携程·社招·JAVA
📍面试公司:携程 👜面试岗位:后端开发工程师(社招) 🕐面试时长:约 50 分钟 🔄面试轮次:第 1 轮技术面 ✨面试整体节奏: 这场携程的社招 Java 一面…...
Oracle--用户管理
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 用户管理在 Oracle 数据库中至关重要。一个服务器通常只运行一个 Oracle 实例,而一个 Oracle 用户代表一个用户群,他们通过该用…...
20.3 使用技巧5
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 20.3.8 CellContentClick事件 当增加新按钮列或者超链接列后,按钮或者超链接,会发现,按钮或者超链…...
Kubernetes相关的名词解释Metrics Server组件(7)
什么是Metrics Server? Metrics Server 是 Kubernetes 集群中的一个关键组件,主要用于资源监控和自动扩缩容。 kubernetes 从1.8版本开始不再集成cadvisor,也废弃了heapster,使用metrics server来提供metrics。那么...... 什么…...
17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--SonarQube部署与配置
在将孢子记账系统从单体架构转向微服务架构的过程中,代码质量的管理变得尤为重要。随着项目规模的扩大和团队协作的深入,我们需要一个强大的工具来帮助我们持续监控和改进代码质量。我们首选SonarQube,它能够帮助我们识别代码中的潜在问题、技…...
计算机是如何看待数据的?
一、计算机如何“看待”数据? 物理层本质: 计算机的所有数据最终以二进制(0和1)在电路中表示(高电平1,低电平0)。 无论你用何种进制描述数据(如十六进制 0xA1 或十进制 161…...
25.4.20学习总结
如何使用listView组件来做聊天界面 1. 什么是CellFactory? 在JavaFX中,控件(比如ListView、TableView等)用Cell来显示每一条数据。 Cell:代表这个单元格(即每个列表项)中显示的内容和样式。 …...
SpringBoot3集成ES8.15实现余额监控
1. gradle依赖新增 implementation org.springframework.boot:spring-boot-starter-data-elasticsearch implementation co.elastic.clients:elasticsearch-java:8.15.02. application.yml配置 spring:elasticsearch:uris: http://localhost:9200username: elasticpassword: …...
STM32基础教程——串口收发
目录 前言 字长设置 编辑 停止位 起始位侦测 波特率 1. UART波特率的基本原理 2. 为什么需要先除以分频因子(USARTDIV)? (1)PCLK频率太高 (2)分频因子的作用 3. 为什么还需要再除以…...
Matlab 步进电机传递函数模糊pid
1、内容简介 Matlab 210-步进电机传递函数模糊pid 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
unordered_map、unordered_set详解
深入理解C中的 unordered_map 和 unordered_set 在C标准库中,unordered_map 和 unordered_set 是两个基于哈希表(Hash Table)实现的高效容器。它们以O(1)的平均时间复杂度实现快速查找、插入和删除操作,特别适合需要高频…...
详解trl中的GRPOTrainer和GRPOConfig
引言 在大型语言模型(LLM)的强化学习微调领域, Group Relative Policy Optimization (GRPO) 算法因其高效性和资源友好性受到广泛关注。Hugging Face的 TRL (Transformer Reinforcement Learning) 库通过GRPOTrainer和GRPOConfig提供了该算法的开箱即用实现。本文将深入解析…...
【C++】多态 - 从虚函数到动态绑定的核心原理
📌 个人主页: 孙同学_ 🔧 文章专栏:C 💡 关注我,分享经验,助你少走弯路 文章目录 1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.1.1实现多态还有两个必须重要条件:2.1.2 虚…...
项目预期管理:超越甘特图,实现客户价值交付
引言 在项目管理实践中,许多项目经理习惯于将注意力集中在甘特图的进度条上,关注任务是否按时完成、里程碑是否达成。然而,这种以计划管理为中心的方法往往忽略了项目管理的核心目标:满足客户预期,交付真正的价值。项…...
FISCO 2.0 安装部署WeBASE与区块链浏览器(环境搭建)
FISCO BCOS 2.0 安装部署WeBASE与区块链浏览器-对应的官网地址: WeBASE平台:https://webasedoc.readthedocs.io/zh-cn/latest/docs/WeBASE/install.html 区块链浏览器:https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/br…...