当前位置: 首页 > news >正文

【Python爬虫】简单介绍2

目录

四、网页数据的加载方式

4.1 数据直接放在请求响应结果中

4.2 数据在异步请求响应结果中

五、爬虫 - 反爬虫 - 反反爬虫

5.1 反爬虫

5.2 反反爬虫

六、风险

6.1 合法性与合规性的重要性

6.2 违规使用爬虫面临的法律风险示例

6.3 合法合规使用爬虫的建议


四、网页数据的加载方式

4.1 数据直接放在请求响应结果中

当网页采用传统的服务器端渲染(SSR)模式时,服务器会在处理请求时生成完整的 HTML 页面,其中包含了所有需要展示的数据。客户端(浏览器)只需接收并解析这个完整的 HTML 页面,就能显示出完整的内容。

爬虫向这类网页发送请求后,响应内容中就直接包含了所需的数据。这种方式下数据获取较为简单直接,只需发送一次请求,然后从响应的 HTML 内容中解析出所需数据即可。

如果网站的页面结构发生变化,爬虫的解析规则可能需要相应调整,否则可能无法正确获取数据。

4.2 数据在异步请求响应结果中

现代网页为了提升用户体验,常采用异步加载(AJAX)技术

在这种模式下,网页的初始 HTML 页面可能只包含一些基本的框架结构,而部分数据(如商品列表、评论信息等)会在页面加载完成后,通过 JavaScript 代码向服务器发送额外的异步请求来获取。这些异步请求通常返回 JSON、XML 等格式的数据,然后由 JavaScript 将这些数据动态地插入到页面中。

这种方式可以实现页面的局部更新,提升用户体验,同时减轻服务器的压力。

对于爬虫来说,直接获取异步请求的数据可以避免解析复杂的 HTML 结构,提高数据获取的效率。但是异步请求的 URL、请求参数和请求头信息可能比较复杂,需要通过浏览器开发者工具进行分析和提取。此外,一些网站可能会对异步请求进行加密、签名等处理,增加了数据获取的难度。

、爬虫 - 反爬虫 - 反反爬虫

5.1 反爬虫

定义

随着爬虫应用越来越广泛,部分网站为了保护自身的数据安全、维护服务器正常运行以及保障用户的正常访问体验,会采取一系列措施来阻止爬虫的访问,这些措施统称为反爬虫机制。比如,一些新闻网站不希望自己的内容被竞争对手或其他未经授权的第三方无节制地抓取,便设置反爬虫机制防止数据被恶意爬取。

常见反爬虫手段

  • 限制 IP 访问频率:监测同一 IP 地址在单位时间内的访问次数。若超过设定阈值,就限制该 IP 继续访问,因为正常用户在短时间内不会频繁请求网页。例如,某网站规定同一 IP 每分钟最多访问 10 次页面,超过这个次数就封禁该 IP 几分钟或者直接拒绝访问。

  • 用户验证机制:如设置验证码,要求用户输入正确的验证码才能继续访问页面。爬虫很难自动识别并准确输入验证码,这样就能有效阻止大量自动化的爬虫请求。像一些论坛登录、热门票务预订网站在检测到异常访问时会弹出验证码要求验证。

  • 检测请求头信息:分析请求头中的字段(如 User-Agent、Referer 等),正常浏览器发起的请求,其请求头各字段有特定的格式和规律,而爬虫若没有进行合理设置,容易被识别出来。例如,正常浏览器的 User-Agent 会表明浏览器类型及版本等信息,如果爬虫的请求头中 User-Agent 字段不符合常见格式,网站就可能拒绝访问。

  • 动态加载数据:采用 Ajax 等技术异步加载页面内容,使得网页内容不是一次性全部返回,而是根据用户的操作(如滚动页面、点击按钮等)动态加载,这样爬虫如果只是简单获取初始页面的 HTML 代码,就无法获取到全部需要的数据,增加了爬虫获取完整数据的难度。

5.2 反反爬虫

定义

当爬虫开发者遇到目标网站的反爬虫机制时,为了使爬虫能够继续正常工作,获取到想要的数据,会采取一些针对性的应对策略和技术手段,这些手段统称为反反爬虫。它是爬虫与反爬虫之间的一种博弈,旨在突破反爬虫限制,合法合规地完成数据抓取任务。

常见反反爬虫手段

  • 使用代理 IP:通过代理服务器来发送请求,隐藏真实 IP 地址,避免因单个 IP 访问频率过高被封禁。市面上有很多代理 IP 服务提供商,也可以自行搭建代理池,让爬虫轮流使用不同的代理 IP 访问目标网站。例如,每隔一段时间就更换一个代理 IP 向网站发送请求,使网站难以通过 IP 来限制爬虫访问。

  • 设置合理请求头:模拟真实浏览器的请求头信息,将爬虫的请求伪装成正常用户的请求。例如,设置合适的 User-Agent 字段,使其与常见浏览器的 User-Agent 相似,还可以添加如 Referer、Accept 等其他必要字段,让请求看起来更 “自然”,降低被识别为爬虫的概率。

  • 处理验证码:针对有验证码的情况,可以采用人工打码(效率较低但准确率高,适用于少量验证情况)、使用第三方验证码识别服务(有一定成本且识别准确率不一定能保证完全准确)或者通过分析验证码的生成规律,采用图像识别等技术(技术难度较高,但对于一些简单验证码可行)来尝试解决验证码问题,从而突破验证机制继续访问网页。

  • 模拟用户行为:对于动态加载数据的页面,通过分析页面加载的逻辑,利用工具(如 Selenium 可以驱动浏览器自动化操作)模拟真实用户的操作,如滚动页面、点击按钮等,使页面完整加载数据后再进行抓取,确保能获取到全部需要的数据。

六、风险

6.1 合法性与合规性的重要性

在互联网环境中,数据是一种重要的资产,许多网站投入大量资源来收集、整理和维护这些数据,而这些数据的使用权限往往是受到限制的。虽然爬虫技术本身是一种中性的工具,能够帮助人们高效地获取网络上公开的信息,但如果使用不当,就可能侵犯他人权益或违反法律法规。

一方面,从法律层面来看,不同国家和地区都有相关法律来规范网络数据的获取和使用行为。例如,我国的《中华人民共和国网络安全法》《中华人民共和国刑法》等法律法规中,对于非法获取计算机信息系统数据等行为有着明确的界定和处罚规定。如果未经授权通过爬虫手段大量抓取网站的数据,尤其是涉及到商业秘密、用户隐私等敏感信息,就可能触犯这些法律条款,面临相应的法律制裁,包括罚款、拘留甚至更严重的刑事处罚。

另一方面,各个网站通常也会制定自身的使用条款和服务协议,明确规定了用户(包括通过程序访问的用户,也就是爬虫开发者)能否抓取其网站内容以及在何种条件下可以抓取。这些使用条款一般会在网站的底部设置链接供用户查看,比如常见的要求有禁止未经许可的批量下载、限制用于商业目的的数据抓取等。即使某些数据在网页上是公开可见的,但如果违反了网站的使用条款去进行爬取,网站运营方有权采取法律措施来维护自身权益,比如向爬虫开发者发送警告函、提起民事诉讼要求赔偿损失等。

6.2 违规使用爬虫面临的法律风险示例

  • 侵犯商业秘密:假如一家企业通过爬虫绕过某竞争对手网站的防护机制,非法获取对方尚未公开的新产品研发计划、核心技术参数、客户资源清单等属于商业秘密范畴的数据,并用于自身的商业竞争中,这就构成了对商业秘密的侵犯。被侵权方一旦发现并收集证据,就可以依据相关法律追究侵权方的法律责任,侵权方可能需要承担巨额的经济赔偿责任,相关责任人还可能面临刑事处罚。

  • 侵犯用户隐私:有些网站包含大量用户的个人隐私信息,如社交平台上的用户联系方式、家庭住址、健康状况等敏感数据。若爬虫开发者违规爬取并不当使用、传播这些信息,不仅侵犯了用户的隐私权,也违反了法律规定。

  • 扰乱网站正常运营:如果爬虫频繁、大量地访问目标网站,无视网站的反爬虫机制,可能会导致网站服务器负载过高,影响正常用户的访问速度和体验,甚至造成网站瘫痪。这种情况下,网站运营方有权要求爬虫开发者承担相应的赔偿责任,并且相关行为也可能违反网络管理方面的法律法规。

6.3 合法合规使用爬虫的建议

为了避免法律风险,在进行爬虫相关活动时,开发者应当做到以下几点:

  • 明确授权情况:先查看目标网站是否提供了数据爬取的 API(应用程序编程接口),如果有,优先使用 API 来获取数据,这通常是经过网站授权且符合规范的方式。如果没有 API,尝试联系网站运营方,请求获得书面或明确的授权许可后再进行爬取操作。

  • 遵守网站条款:仔细阅读并严格遵守目标网站的使用条款和服务协议,按照规定的范围、方式、频率等来进行数据抓取,例如只抓取允许公开获取的内容,不超出规定的访问频率限制等。

  • 限定使用目的:确保爬虫获取的数据仅用于合法、正当的目的,比如个人学习研究、内部数据分析等非商业用途(如果网站明确禁止商业用途的话),避免将数据用于不正当竞争、非法盈利等违法违规的活动中。

总之,爬虫的使用必须建立在合法合规以及尊重网站运营方权益的基础之上,这样才能在发挥其数据获取优势的同时,避免给自己带来不必要的法律麻烦。

相关文章:

【Python爬虫】简单介绍2

目录 四、网页数据的加载方式 4.1 数据直接放在请求响应结果中 4.2 数据在异步请求响应结果中 五、爬虫 - 反爬虫 - 反反爬虫 5.1 反爬虫 5.2 反反爬虫 六、风险 6.1 合法性与合规性的重要性 6.2 违规使用爬虫面临的法律风险示例 6.3 合法合规使用爬虫的建议 四、网页…...

基于QtC++音乐播放器whisper语音转文字歌词解析

演示视频 github源码地址 gitee源码地址 通过网盘分享的文件:MySoftWare 链接: https://pan.baidu.com/s/1JdtZNoMcv7jXR_ELMuqZEg?pwd1yw6 提取码: 1yw6 –来自百度网盘超级会员v4的分享...

【QT】QT界面的美容院 -- QSS

一、背景介绍 🔥 在网页前端开发领域中,CSS 是一个至关重要的部分,描述了一个网页的 “样式”,从而起到对网页 美化 的作用。 所谓 样式 ,包括不限于大小、位置、颜色、背景、间距、字体等等。现在的网页很难找到没有…...

【AI】使用Huggingface模型实现文本内容摘要器

【AI】使用Huggingface模型实现文本内容摘要器 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 【AI】使用Huggingface模型实现文本内容摘要器什么是摘要器?摘要器的应用场景什么是…...

centOS 安装和配置docker

以下是在 CentOS 系统上安装和配置 Docker 的详细步骤: 一、安装 Docker 1. 卸载旧版本(如有) sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate …...

现在AI大模型能帮做数据分析吗?

实际上,有了AI大模型的支持才使得AI数据分析的功能得到更好地应用,比如小浣熊AI支持数据交互功能,只要你输入具体的数据分析要求,它就能自动帮你完成数据清洗、分析、可视化全流程,而且还能生成数据分析报告。 当然&a…...

qt中,父类中有Q_OBJECT,子类中还需要加Q_OBJECT吗

在 Qt 中,关于子类是否需要添加 Q_OBJECT 宏的问题,可以总结如下: 1. 需要添加 Q_OBJECT 的情况 如果子类满足以下任一条件,必须显式添加 Q_OBJECT 宏: 定义了新的信号或槽:即使父类已有 Q_OBJECT&#…...

vue2实现在屏幕中有一个小机器人可以随意移动

第一步:创建store目录结构 src/ ├── store/ │ ├── modules/ │ │ └── robot.js # 机器人专用状态模块 │ └── index.js # Vuex 主配置文件第二步:创建机器人状态模块 创建 src/store/modules/robot.js 文件&#xff…...

MCP协议实战指南:在VS Code中实现PostgreSQL到Excel的自动化迁移

作者:后端小肥肠 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 从PDF到精准答案:Coze助力RAGFlow框架提升数据召回率_提升ragflow-CSDN博客 CozeTreeMind实测:秒出ISO标准流程图…...

Before After:SQL整容级优化

首先说明这个优化有一定提升,但不是我所期望的 我接到一个涉及优化的SQL,具体内容实在太长。而且可能也不利于阅读。于是我脱敏以及简化一下。SQL中间大量的充斥着 (select 列名1 from t1 where t1.id t2.id ) A, (select 列名2 from t1 where t1.id …...

hash.

Redis 自身就是键值对结构 Redis 自身的键值对结构就是通过 哈希 的方式来组织的 哈希类型中的映射关系通常称为 field-value,用于区分 Redis 整体的键值对(key-value), 注意这里的 value 是指 field 对应的值,不是键…...

JMeter重要的是什么

重要特性 支持多种协议: JMeter支持对多种协议进行性能测试,包括HTTP、HTTPS、FTP、JDBC(数据库)、LDAP、JMS、SOAP、REST等。这使得它能够适应各种不同的测试场景。强大的负载模拟能力: JMeter能够模拟大量的虚拟用户…...

Java研学-Activiti7工作流(二)

三 Activiti7 搭建环境 1 开发环境 Jdk1.8或以上版本;Mysql 5及以上的版本;Tomcat8.5;IDEA;Activiti 7.0.0.SR1(流程设计器) 2 安装Activiti流程设计器 ① 在线安装:在Plugins中搜索actiBPM,然后点击Sear…...

鸿蒙开发-编译器使用

15.2编译器使用-目录详解 15.3 编辑器使用-切换工程模块 15.3 编辑器使用-多设备预览 15.1 编辑器使用-编辑中英文...

HTML5+CSS前端开发【保姆级教学】+图像标签附路径问题

引入: Hello!,各位编程猿们!我们知道在网页文档中合理地加入图像,会使文档变得更加生动活泼和引人入胜,而且看上去更加专业、更具有信息性且易于浏览。本期主要介绍图像标签以及超链接标签 一、设置图像标…...

快速启动 Rust + WebAssembly 项目

一、 模板一:wasm-pack-template 适合目标:构建一个 Rust 写的 WebAssembly npm 包 这是最常用、也是最官方推荐的起点模板。它提供了: Cargo.toml 配置好 WebAssembly 的 crate 类型(cdylib)已设置 wee_alloc 和 pan…...

Linux命令-vim编辑

用vi或vim命令进入vim编辑器。 基础: u -- 撤销上一次操作。 x -- 剪切当前光标所在处的字符。 yy -- 复制当前行。 dd -- 剪切当前行。 p -- 粘贴剪贴板内容到光标下方。 i -- 切换到输入模式,在光标当前位置开始输入文本。 :wq -- 保存并退出Vim 编辑器。…...

Windows单机模拟MySQL主从复制

这里写自定义目录标题 下载MySQL ZIP压缩包安装主库1、创建配置文件2、安装服务3、初始化数据库4、启动服务5、配置主库 安装从库1、配置ini文件2、安装服务3、初始化数据库4、启动服务5、配置从库6、验证从库状态 操作主库验证 下载MySQL ZIP压缩包 https://dev.mysql.com/do…...

【区块链+ 人才服务】广州理工学院区块链教学平台 | FISCO BCOS 应用案例

深圳市火链文化传播有限公司与广州理工学院合作,共同建设了“区块链教学平台”。该平台旨在探索区块链技术在教 育领域的应用,特别是在混合式教学模式中的创新实践。 “区块链教学平台”运用了区块链技术的核心优势,包括分布式、信息防篡改以…...

Java Stream深度解析 高阶技巧与性能优化实战

文章目录 一、Stream底层机制揭秘1.1 Stream流水线架构1.2 Spliterator探秘 二、自定义收集器高级实现2.1 实现高性能统计收集器2.2 多级分组优化技巧 三、并行流深度优化3.1 并行度控制策略3.2 工作窃取(Work-Stealing)优化 四、无限流与短路操作4.1 生成无限质数流4.2 短路操…...

【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(一)

本篇博客给大家带来的是多线程的知识点, . 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快乐顺便进步 1. 常…...

计算机视觉图像分割入门:阈值、区域生长与分水岭算法

计算机视觉图像分割入门:阈值、区域生长与分水岭算法 一、前言二、图像分割基础概念大揭秘​2.1 图像分割的定义​2.2 图像分割的目的与作用​2.3 图像分割的应用领域​三、阈值算法:最简单的图像分割法​3.1 原理剖析​3.2 手动阈值分割及代码示例​3.3 自动阈值分割方法及代…...

android​​弱网环境数据丢失解决方案(3万字长文)

在移动互联网时代,Android 应用已经成为人们日常生活中不可或缺的一部分。从社交媒体到在线购物,从移动办公到娱乐游戏,用户对应用的依赖程度与日俱增。然而,尽管网络基础设施在全球范围内得到了显著改善,弱网环境依然…...

设计模式:迪米特法则 - 最少依赖,实现高内聚低耦合

一、迪米特法则简介 迪米特法则(Law of Demeter,简称 LoD),也称为“最少知识法则”,核心思想是:一个对象应当对其他对象有最少的了解,仅与直接相关的对象交互。通过减少对象之间的耦合度&#…...

React 把一系列 state 更新加入队列

把一系列 state 更新加入队列 设置组件 state 会把一次重新渲染加入队列。但有时你可能会希望在下次渲染加入队列之前对 state 的值执行多次操作。为此,了解 React 如何批量更新 state 会很有帮助。 开发环境:Reacttsantd 学习内容 什么是“批处理”以…...

AntVG2可视化学习与开发笔记-React19(持续更新)

目录 开始工作 第一步:创建画布空间 第二步:获取画布空间并挂载AntVG2 第三步:进行画布设计配置与数据挂载 第四步:完整代码 实际效果如下 参数理解 一、scale 1. 归一化range:[0,1] 2.nice、domainMin 开始工作 第一…...

从PPT到DeepSeek开启信息可视化的全新之旅

在当今信息爆炸的时代,如何高效、生动地展示信息成为了个人与企业在沟通、汇报、推广等场景中面临的关键挑战。传统的演示工具,如PPT,虽然曾经是展示信息的主力军,但随着技术的发展和人们审美、交互需求的提升,其局限性…...

spark-sql学习内容总结

SparkSession 定义与功能‌:SparkSession是Spark SQL的入口,封装SparkContext,提供了创建DataFrame和执行SQL的能力。它实质上是SQLContext和HiveContext的组合,因此兼容这两者的API。 创建方式‌:在使用spark-shell…...

Spring-AI-alibaba 结构化输出

1、将模型响应转换为 ActorsFilms 对象实例&#xff1a; ActorsFilms package com.alibaba.cloud.ai.example.chat.openai.entity;import java.util.List;public record ActorsFilms(String actor, List<String> movies) { } GetMapping("/toBean")public Ac…...

ffmpeg实现视频转码

ffmpeg 实现视频转码 什么是视频编码 视频上传成功后需要对视频进行转码处理。 什么是视频编码&#xff1f; 查阅百度百科如下&#xff1a; 所谓视频编码方式就是指通过压缩技术&#xff0c;将原始视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解…...

【Java学习笔记】Java初级阶段代码规范

Java 初级阶段代码规范 1. 类、方法的注释&#xff0c;要以 javadoc 的方式来写。 2. 非 Java Doc 的注释&#xff0c;往往是给代码的维护者看的&#xff0c;着重告读者为什么这样写&#xff0c;如何修改&#xff0c;注重什么问题等 3. 使用 tab 操作&#xff0c;实现缩进&am…...

适应 AI 时代的软件开发流程:用 AI + TDD 构建可维护项目

🧠 适应 AI 时代的软件开发流程:用 AI + TDD 构建可维护项目 本文面向有系统开发经验的工程师,分享如何结合 Git 管理、AI 协作、YAML 驱动与 TDD 开发方式,高效构建一个可维护、可协作、可交付的嵌入式或通用工程项目。适合 BLE 模块、协议栈组件、物联网控制系统等项目落…...

EasyCVR视频汇聚系统:AIoT+视频智能分析赋能食品安全生产全流程监管

近年来,随着食品安全问题频发,消费者对食品加工企业的信任度逐渐下降,企业生产监管难度加大,市场监管也面临诸多挑战。在这样的背景下,食品加工企业迫切需要通过智能化手段提升生产管理水平,满足消费者和监管部门的要求,同时实现自身业绩的提升。 本文将结合EasyCVR与智…...

ASP.NET Core 性能优化:分布式缓存

文章目录 前言一、分布式缓存的核心概念作用&#xff1a;与内存缓存的区别&#xff1a; 二、ASP.NET Core 中的 IDistributedCache三、常用分布式缓存实现1&#xff09;Redis&#xff08;最常用&#xff09;2&#xff09;SQL Server3&#xff09;NCache&#xff08;企业级方案&…...

一款安全好用的企业即时通讯平台,支持统一门户

在数字化转型的浪潮中&#xff0c;企业面临着信息孤岛、系统分散、协作低效等诸多挑战。BeeWorks作为一款专为企业打造的数字化底座平台&#xff0c;凭借其强大的企业内部应用集成能力和单点登录功能&#xff0c;正在成为企业数字化转型的有力推手。 数字化底座平台&#xff1…...

C语言 栈 的 描述 和 详解

什么是栈&#xff1f; 栈是一种特殊的线性数据结构。 定义及特点 - 栈是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出&#xff08;Last In First Out&#xff0c;LIFO&#xff09;的原则存储数据&#xff0c;就像一个只能从顶部取放物品的箱子&#xff0c;…...

.NET MCP 示例

服务器端示例 基础服务器 以下是一个基础的 MCP 服务器示例&#xff0c;它使用标准输入输出&#xff08;stdio&#xff09;作为传输方式&#xff0c;并实现了一个简单的回显工具&#xff1a; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.H…...

【论文阅读】MOE奠基论文《Adaptive Mixtures of Local Experts》

《Adaptive Mixtures of Local Experts》 前言一、让协同学习竞争1.1 方案1.2 方案演变的由来 二、让竞争学习协同2.1 竞争学习2.2 竞争学习协同 三、案例验证3.1 任务背景3.2 实验结果3.3 后续工作 (Future Work) 前言 论文提出了一个基于多个分离网络的有监督学习方案,该方案…...

MATLAB中replace函数用法

目录 语法 说明 示例 替换字符串数组中的子字符串 替换匹配模式的子字符串 替换多个子字符串 replace函数的功能是查找并替换一个或多个子字符串。 语法 newStr replace(str,old,new) 说明 newStr replace(str,old,new) 将所有出现的子字符串 old 替换为 new。如果 …...

MATLAB基本数据类型

1. ‌数值类型‌ ‌整数类型‌&#xff1a; 有符号整数&#xff08;如 int8, int16, int32, int64&#xff09;和无符号整数&#xff08;如 uint8, uint16, uint32, uint64&#xff09;。 这些类型分别占用 1、2、4、8 个字节&#xff0c;表示不同范围的整数值。 ‌浮点数类…...

LeetCode 热题 100_单词拆分(86_139_中等_C++)(动态规划)

LeetCode 热题 100_单词拆分&#xff08;86_139&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;动态规划&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;动态规划&#xff09;&a…...

Spring Boot 集成spring-boot-starter-data-elasticsearch

第一步&#xff0c;添加Maven依赖 <!--es--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency> 第二步&#xff0c;配置yml spring:elastic…...

【Linux】Linux下的gcc/g++编译器与动静态库

目录 对程序的认知&&初识gcc逐步分析程序的编译步骤预编译【进行宏替换】gcc需要执行的指令 ⭐ 编译【C语言——>汇编语言】gcc要执行的指令⭐ 汇编【汇编语言——>可重定位目标二进制文件】gcc需要执行的指令 链接【生成可执行文件或库文件】gcc需要执行的指令 …...

从暴力到动态规划再到双指针:使用 Java 探索接雨水问题的不同解法

文章目录 一、问题描述二、暴力法&#xff08;Brute Force&#xff09;思路实现代码 三、动态规划法&#xff08;Dynamic Programming&#xff09;思路实现代码 四、双指针法&#xff08;Two Pointers&#xff09;思路实现代码 五、方法对比 在本文中&#xff0c;我们将探讨经典…...

CI/CD(十) Jenkins共享库与k8s集成

一、创建k8skey&#xff08;v1.28.2版本&#xff09; 1、查看k8s集群名称 rootk8s-master:~# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * kubernetes-adminkubernetes kubernetes kuber…...

5.Elasticsearch - Spring Data 框架

一、Kibana 介绍 Kibana 是一个免费且开放的用户界面&#xff0c;能够让你对 Elasticsearch 数据进行可视化&#xff0c;并让你在 Elastic Stack 中进行导航。你可以进行各种操作&#xff0c;从跟踪查询负载&#xff0c;到理解请求如何流经你的整个应用&#xff0c;都能轻松完…...

如何通过技术手段降低开发成本

通过技术手段降低开发成本的关键在于&#xff1a; 自动化工具的使用、优化开发流程、云计算资源的利用、开发技术栈的精简与创新、团队协作平台的高效管理。 其中&#xff0c;自动化工具的使用是最为有效的技术手段之一。自动化工具通过减少人工干预和重复性工作&#xff0c;大…...

java android持久化数据

1. SQLite 数据库&#xff08;Android 内置&#xff09; 1.1 创建数据库帮助类 public class DatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME "MyDatabase.db";private static final int DATABASE_VERSION 1;// 表名和列名…...

Chromium 134 编译指南 macOS篇:系统环境准备(一)

1. 引言 在当今浏览器领域&#xff0c;开源项目Chromium的地位举足轻重。作为众多现代浏览器的技术基础&#xff0c;Chromium不仅驱动着Google Chrome&#xff0c;还为Microsoft Edge、Opera等众多知名浏览器提供了核心引擎。对于热衷于浏览器技术研究&#xff0c;或希望开发自…...

性能优化-Spring参数配置、数据库连接参数配置、JVM调优

SpringBoot配置参数 server:tomcat:#线程池配置max-threads: 200 # 最大工作线程数&#xff08;建议&#xff1a;2~4倍CPU核心数&#xff0c;如16核设200-400&#xff09;min-spare-threads: 20 # 最小空闲线程&#xff08;应对突发流量&#xff0c;…...