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

云函数采集架构:Serverless模式下的动态IP与冷启动优化

爬虫代理

在 Serverless 架构中使用云函数进行网页数据采集,不仅能大幅降低运维成本,还能根据任务负载动态扩展。然而,由于云函数的无状态特性及冷启动问题,加上目标网站对采集行为的反制措施(如 IP 限制、Cookie 校验等),开发者在实践中往往会遇到不少挑战。下面将通过一个问题解决型(Problem-Solution)的案例,分享如何利用代理 IP 技术以及一系列优化措施,在 Serverless 模式下实现高效的采集任务。


问题描述

在传统的采集应用中,我们往往部署在独立的服务器上,通过固定 IP 或预先配置的代理服务器进行采集。但在 Serverless 模式下,云函数实例动态创建,IP 地址往往不固定,而且每次调用可能发生冷启动延迟,导致任务响应速度不稳定。此外,目标网站(如网易云音乐)对异常访问的敏感检测机制使得使用固定 Header 信息(UserAgent、Cookie)成为必要条件。如果不采用动态 IP 切换和合理配置 Header,很容易陷入 IP 被封禁或数据采集失败的困境。


场景再现

设想这样一个场景:

  • 目标任务:采集网易云音乐中某个关键词下的歌曲信息,包括歌手、歌词以及用户评论。
  • 传统方式问题:使用固定 IP 直接发起请求,频繁访问引起目标网站反爬策略的警觉,最终导致 IP 被临时封禁。
  • Serverless 挑战:云函数实例可能长时间处于冷启动状态,新创建实例在首次调用时响应时间较长,且其 IP 信息难以保持稳定。

面对这样的问题,开发者尝试了多种方案:

  • 尝试 1:固定 IP 模式
    直接在云函数中使用固定的代理 IP 或裸 IP 访问目标网站,结果频繁触发目标网站的反爬策略。
  • 尝试 2:伪造 Header 模拟正常请求
    设置 UserAgent、Cookie 等请求头,部分程度上降低了被封禁的风险,但仍无法应对高频次请求。
  • 尝试 3:分布式调用与结果合并
    利用多个云函数实例协同工作,但因 IP 不稳定与冷启动问题,整体效果依然不理想。

解决方法

经过不断探索,我们结合以下优化方案构建了解决方案:

  1. 动态代理 IP:使用爬虫代理服务,将请求通过代理 IP 发起,避免单个 IP 被目标站长时间封禁。
  2. 请求头优化:在每次请求中合理配置 UserAgent 和 Cookie 信息,模拟真实用户行为。
  3. 冷启动预热策略:结合云函数的预热机制,尽量在任务开始前唤醒函数实例,减少冷启动延迟影响。
  4. 代码复用与容错设计:在代码中实现代理 IP 的动态更换和请求重试逻辑,确保在部分请求失败时依然能正常获取数据。

下面提供一个基于 Python 的示例代码,展示了如何调用网易云音乐的搜索接口,通过代理 IP 发起请求并解析返回的歌曲信息,同时进行歌词和评论的后续抓取。


示例代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-import requests
import json
import time# ------------------------------
# 配置部分:代理、请求头等参数
# ------------------------------# 代理IP配置(参考亿牛云爬虫代理信息 www.16yun.cn)
# 注意:以下信息仅为示例,请根据实际账号信息填写
PROXY_HOST = "proxy.16yun.cn"    # 亿牛云爬虫代理域名
PROXY_PORT = "8000"                   # 代理端口
PROXY_USER = "16YUN"          # 代理用户名
PROXY_PASS = "16IP"          # 代理密码# 拼接代理认证 URL
proxy_auth = f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
proxies = {"http": proxy_auth,"https": proxy_auth,
}# 设置请求头:UserAgent 和 Cookie(这里的 Cookie 示例仅供参考)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ''AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/108.0.0.0 Safari/537.36','Cookie': 'appver=2.0.2; os=pc; osver=Microsoft-Windows-10-Professional-build-19044-64bit;',
}# 云函数预热策略:在入口函数调用前可以先执行一次请求,减少冷启动时间(示例)
def prewarm():try:# 简单发起一个 GET 请求用于预热requests.get("https://music.163.com", headers=headers, proxies=proxies, timeout=5)print("预热成功!")except Exception as e:print("预热异常:", e)# ------------------------------
# 功能函数
# ------------------------------def search_music(keyword, limit=30):"""根据关键词搜索歌曲信息:param keyword: 搜索关键词:param limit: 返回结果数量限制:return: 搜索结果的 JSON 数据"""url = "https://music.163.com/api/search/get/"# 构建搜索参数data = {"s": keyword,"type": 1,      # 1 代表单曲搜索"offset": 0,"total": "true","limit": limit,}try:response = requests.post(url, headers=headers, data=data, proxies=proxies, timeout=10)response.encoding = 'utf-8'if response.status_code == 200:print("搜索请求成功!")return response.json()else:print("搜索请求失败,状态码:", response.status_code)except Exception as e:print("搜索请求异常:", e)return Nonedef get_lyric(song_id):"""获取指定歌曲的歌词信息:param song_id: 歌曲ID:return: 歌词数据(JSON 格式)"""url = f"https://music.163.com/api/song/lyric?os=pc&id={song_id}&lv=1&kv=1&tv=-1"try:response = requests.get(url, headers=headers, proxies=proxies, timeout=10)if response.status_code == 200:print(f"歌曲 {song_id} 的歌词请求成功!")return response.json()else:print(f"歌词请求失败,状态码: {response.status_code}")except Exception as e:print("歌词请求异常:", e)return Nonedef get_comments(song_id, limit=30):"""获取指定歌曲的评论信息:param song_id: 歌曲ID:param limit: 返回评论数量限制:return: 评论数据(JSON 格式)"""# 网易云音乐评论接口示例:R_SO_4_加歌曲IDurl = f"https://music.163.com/api/v1/resource/comments/R_SO_4_{song_id}?limit={limit}"try:response = requests.get(url, headers=headers, proxies=proxies, timeout=10)if response.status_code == 200:print(f"歌曲 {song_id} 的评论请求成功!")return response.json()else:print(f"评论请求失败,状态码: {response.status_code}")except Exception as e:print("评论请求异常:", e)return None# ------------------------------
# 云函数入口函数(示例)
# ------------------------------def main_handler(event, context):"""云函数入口:param event: 事件数据,包含搜索关键词等信息:param context: 云函数上下文信息:return: 任务执行结果"""# 预热云函数,降低冷启动影响prewarm()# 从事件中获取关键词,若未传入则默认"流行"keyword = event.get("keyword", "流行")print("开始搜索关键词:", keyword)# 调用搜索接口获取歌曲数据search_result = search_music(keyword)if not search_result:return {"status": "error", "message": "搜索失败"}songs = search_result.get("result", {}).get("songs", [])result_data = []for song in songs:song_id = song.get("id")song_name = song.get("name")singer_list = [artist.get("name") for artist in song.get("artists", [])]print(f"处理歌曲:{song_name} (ID: {song_id})")# 获取歌词lyric_data = get_lyric(song_id)# 获取评论comment_data = get_comments(song_id)result_data.append({"song_id": song_id,"song_name": song_name,"singers": singer_list,"lyrics": lyric_data.get("lrc", {}).get("lyric") if lyric_data else "","comments": comment_data.get("comments", []) if comment_data else []})# 控制请求频率,避免过快触发反爬策略time.sleep(1)# 最终返回采集的数据return {"status": "success","data": result_data}# ------------------------------
# 本地调试
# ------------------------------
if __name__ == "__main__":# 模拟云函数传入的事件数据test_event = {"keyword": "周杰伦"}result = main_handler(test_event, None)print(json.dumps(result, ensure_ascii=False, indent=4))

原理分析

  1. 动态代理 IP 技术
    代码中配置了代理服务器地址,通过爬虫代理服务实现 IP 动态切换。这样可以有效分散请求压力,降低单个 IP 被封禁的风险。对云函数这种每次实例可能不同的情况来说,结合高质量代理服务尤为重要。
  2. 请求头(UserAgent 与 Cookie)的作用
    针对网易云音乐这样的目标网站,合理设置请求头能够模拟真实用户的 HTTP 行为。UserAgent 帮助伪装浏览器请求,而 Cookie 则有助于维持会话状态,防止被目标网站快速识别为爬虫行为。
  3. 云函数冷启动优化策略
    通过预热(prewarm)机制在入口函数中提前发起一次简单请求,可以帮助云函数提前加载依赖,降低首次调用时的冷启动延时。此外,合理设置超时时间和重试逻辑也是在 Serverless 环境下提高爬虫稳定性的重要措施。
  4. 分布式采集与容错设计
    该方案在代码中可以扩展为分布式执行,结合任务队列和多实例并发调用,通过在每个实例中实现代理 IP 动态切换和请求重试策略,进一步保障数据采集的可靠性。

总结

本文介绍了如何在 Serverless 云函数环境中构建一个高效的采集系统,通过利用爬虫代理服务实现动态 IP 切换、合理配置请求头以及云函数预热策略来应对目标网站的反爬策略和冷启动问题。通过这个案例的分享,希望能给大家在构建 Serverless 采集架构时带来一些实用的经验和启发。

这种问题解决型的探索过程不仅是在技术上突破,更是一种从失败中不断总结经验、最终达到系统稳定性与性能兼顾的实践。

相关文章:

云函数采集架构:Serverless模式下的动态IP与冷启动优化

在 Serverless 架构中使用云函数进行网页数据采集,不仅能大幅降低运维成本,还能根据任务负载动态扩展。然而,由于云函数的无状态特性及冷启动问题,加上目标网站对采集行为的反制措施(如 IP 限制、Cookie 校验等&#x…...

UE5 设置物体的位置

UE的位置设置和untiy不同,UE的对象分为根物体和组件,他们的设置方法不同 对于蓝图根物体 可以直接当作Actor处理,设置它的世界位置 对于蓝图的组件 设置世界位置: 设置相对位置...

【adb】bat批处理+adb 自动亮屏,自动解锁屏幕,启动王者荣耀

准备adb 下载 需要确认是否安装了adb.exe文件,可以在: 任务管理器 -->详细信息–>找一下后台运行的adb 安装过anroid模拟器,也存在adb,例如:雷电安装目录 D:\leidian\LDPlayer9 单独下载adb 官方下载地址:[官方网址] 下载目录文件: 测试adb USB连接手机 首先在设置界…...

【计算机网络】3数据链路层①

这篇笔记专门讲数据链路层的功能。 2.功能 数据链路层的主要任务是让帧在一段链路上或一个网络中传输。 2.1.封装成帧(组帧) 解决的问题:①帧定界②帧同步③透明传输 实现组帧的方法通常有以下种。 2.1.1.字符计数法 原理:在每个帧开头,用一个定长计数字段来记录该…...

OSPF路由协议

OSPF(开放式最短路径优先) 1、回顾 rip:v1(广播发送、路由自动汇总,不支持可变长子网)v2(组播发送,默认不汇总路由,支持可变长子网)封装在UDP的520端口中&a…...

线代第二章矩阵第三、四课:矩阵乘法和方阵的幂

文章目录 矩阵的乘法矩阵的可交换方阵的幂 矩阵的乘法 (1)乘法的前提条件: 第一个矩阵的列数等于第二个矩阵的行数 (2)结果阵的形状: 结果矩阵的行数=第一个矩阵的行数 结果矩阵的列数=第二个矩阵的列数 乘法不满足交换律: &am…...

if constexpr

if constexpr if constexpr 是 C17 引入的一个强大的特性,它允许在编译时根据条件选择性地编译代码块。与普通的 if 语句不同,if constexpr 的条件必须是一个编译时可计算的常量表达式(constexpr 表达式)。如果条件为 true&#…...

JAVA程序实现mysql读写分离并在kubernetes中演示

1 概述 对数据进行读写分离,可以将读流量从主数据库中剥离出来,进一步降低读操作对写操作的影响。读写分离的实现可以有多种方式,例如通过proxySQL、mycat等中间件来实现,也可以在应用进程内实现。本文介绍JAVA程序通过spring框架…...

HarmontOS-ArkUI V2状态 !!语法糖 双向绑定

什么是双向绑定 双向绑定指的是在组件间数据的双向绑定。当一个值无论是在父组件还是子组件中改动都会在这两层中都更新界面。 回顾过往的“双向绑定”实现方式 靠@Event装饰回调函数 一般是对于@Param修饰的状态变量。当子组件发生某个动作的时候,调用某个父组件传递过来的…...

Linux驱动开发进阶(十)- I2C子系统BSP驱动

文章目录 1、前言2、I2C总线注册3、I2C设备注册4、I2C驱动注册总结 1、前言 学习参考书籍以及本文涉及的示例程序:李山文的《Linux驱动开发进阶》本文属于个人学习后的总结,不太具备教学功能。 2、I2C总线注册 和其它总线驱动一样,I2C驱动…...

Vue 3 路由配置使用与讲解

在现代前端开发中,单页应用(SPA)已成为主流趋势,Vue.js 作为一款优秀的 JavaScript 框架,在构建 SPA 方面表现出色。Vue Router 作为 Vue.js 官方的路由管理器,与 Vue.js 核心深度集成,极大地简…...

7系列fpga在线升级和跳转

一、常见跳转方式 1,一般FPGA只要上电,就会自动从外部flash的0地址加载程序。2,而我们所谓的在线式升级就是在flash0地址放一个程序(boot/golden image),然后在后面再放一个程序(app/update im…...

解决靶机分配的 IP 地址与 Kali 机器静态 IP 地址冲突的方法

在网络安全学习或渗透测试中,经常会遇到靶机和 Kali 机器处于同一网络环境的情况。如果靶机通过 DHCP 自动获取的 IP 地址与 Kali 机器手动设置的静态 IP 地址发生冲突,就会导致网络通信异常,例如无法正常 ping 通或访问目标。本文将详细介绍…...

LLM做逻辑推理题 - 飞机事件

题目: 有N架一样的飞机停靠在同一个机场,每架飞机都只有一个油箱,每箱油可使飞机绕地球飞半圈。注意:天空没有加油站,飞机之间只是可以相互加油。如果使某一架飞机平安地绕地球飞一圈,并安全地回到起飞时的机场&#x…...

【Netty4核心原理】【全系列文章目录】

文章目录 一、前言二、目录 一、前言 本系列虽说本意是作为 《Netty4 核心原理》一书的读书笔记,但在实际阅读记录过程中加入了大量个人阅读的理解和内容,因此对书中内容存在大量删改。 本系列内容基于 Netty 4.1.73.Final 版本,如下&#xf…...

SAP ECCS 标准报表 切换为EXCEL电子表格模式

在解决《SAP ECCS标准报表在报表中不存在特征CG细分期间 消息号 GK715报错分析》问题过程中通过DEBUG方式参照测试环境补录数据后,不再报GK715错误,此时用户要的很急,要出季报。要求先把数据导出供其分析出季报。 采用导出列表方式&#xff…...

开源推荐#6:可爱的临时邮箱服务

大家后,我是 jonssonyan。 我们的邮箱常常被各种推广邮件、验证码甚至垃圾邮件淹没。每次注册新服务或临时需要一个邮箱时,都担心自己的主邮箱地址被泄露或滥用?也许你用过一些公共的临时邮箱服务,但数据隐私和可控性总是让人不那…...

SpringBoot企业级开发之【用户模块-更新用户密码】

具体内容: 依旧是查看接口文档信息&#xff1a; 开发思路&#xff1a; 实操&#xff1a; 1.controller //更新用户密码PatchMapping("/updatePwd")public Result updatePwd(RequestBody Map<String,String> params) {//1.校验参数String oldPwdparams.get(…...

MyBatis-Plus 通过 ID 更新数据为NULL总结

在使用 MyBatis-Plus 通过 ID 更新数据时&#xff0c;若需将字段值设为 null&#xff0c;可参考以下解决方案&#xff1a; 方法一&#xff1a;使用 TableField 注解 在实体类字段上添加注解&#xff0c;指定更新策略为忽略非空检查&#xff1a; public class User {TableFie…...

SpringCloud Alibaba微服务工程搭建

前言 在讲微服务工程的搭建之前&#xff0c;我们先分析下为什么要使用微服务呢&#xff1f; 1、单体应用的痛点 维护困难&#xff1a;代码臃肿&#xff0c;牵一发而动全身。扩展性差&#xff1a;无法按需扩展特定功能&#xff0c;只能整体扩容。技术栈僵化&#xff1a;难以引…...

mobaXterm添加自定义内容按钮方法、mobaXterm宏的另一种使用方式、mobaxterm免输密码自动su到root用户

文章目录 说明添加自定义按钮内容方式完整流程说明root密码demo一键suroot 说明 就是给mobax添加secureCRT工具中的自定义按钮。 但发现mobax中的按钮其实是固定功能&#xff0c;并不能自定义编辑按钮内容。 添加自定义按钮内容方式 完整流程说明 虽然mobax不能直接像CRT那…...

04.Python代码NumPy-通过索引或切片来访问和修改

04.Python代码NumPy-通过索引或切片来访问和修改 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ python语法…...

继承:(开始C++的进阶)

我们今天来学习C的进阶&#xff1a; 面向对象三大特性&#xff1a;封装&#xff0c;继承&#xff0c;多态。 封装我们在前面已经学了&#xff0c;我们细细理解&#xff0c;我们的类的封装&#xff0c;迭代器的封装&#xff08;vector的迭代器可以是他的原生指针&#xff0c;li…...

【本地MinIO图床远程访问】Cpolar TCP隧道+PicGo插件,让MinIO图床一键触达

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言MinIO本地安装与配置cpolar 内网穿透PicGo 安装MinIO远程访问总结互动致谢参考目录…...

OpenCV数组的操作

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 这里的数组不是普通意义上的数组。核心模块Core专门提供了一些全局函数用于对数组&#xff08;矩阵&#xff09;进行操作。常用函数如表3-2所示。 3.2.1 寻找数组中最小值和最大值的位置&#xff08;minMaxL…...

python idea pycharm ModuleNotFoundError: No module named ‘bin‘

一、解决方案​​ ​​1.修正运行配置中的环境变量​​ 2.打开运行配置&#xff1a; 3.点击 IDEA 右上角配置下拉菜单 -> Edit Configurations。 4.选择 Django Server 配置&#xff08;或自定义的调试配置&#xff09;。 5.移除错误变量&#xff1a; 5.1在 Environment var…...

自动驾驶创建场景(just soso)

使用 ‌Driving Scenario Designer‌ 创建弯道驾驶场景并导出模型的详细步骤整理与补充说明&#xff1a; 步骤 1&#xff1a;打开应用程序‌ 启动 MATLAB‌在 MATLAB 命令窗口中输入以下命令&#xff0c;打开驾驶场景设计器&#xff1a;matlabCopy CodedrivingScenarioDesigne…...

大模型在轮状病毒肠炎预测及临床方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、轮状病毒肠炎概述 2.1 病毒特性与传播途径 2.2 临床症状与病理机制 2.3 流行病学特征 三、大模型技术原理及在医疗领域应用现状 3.1 大模型基本原理 3.2 医疗领域应用案例分析 3.3 大模型应用于轮状病毒…...

从 PyTorch 到 ONNX:深度学习模型导出全解析

在模型训练完毕后&#xff0c;我们通常希望将其部署到推理平台中&#xff0c;比如 TensorRT、ONNX Runtime 或移动端框架。而 ONNX&#xff08;Open Neural Network Exchange&#xff09;正是 PyTorch 与这些平台之间的桥梁。 本文将以一个图像去噪模型 SimpleDenoiser 为例&a…...

移动硬盘突然打不开紧急救援指南:从排查到完整恢复‌

突发状况的典型特征‌ 当移动硬盘突然打不开时&#xff0c;用户常会遇到多种异常表现&#xff1a;接入电脑后硬盘指示灯虽亮但无法识别、系统反复提示“设备未连接成功”或弹出“磁盘结构损坏”的警告。部分情况下&#xff0c;资源管理器中的盘符虽可见&#xff0c;但双击后显示…...

HarmonyOS学习 实验九:@State和@Prop装饰器的使用方法

HarmonyOS应用开发&#xff1a;父子组件状态管理实验报告 引言 在HarmonyOS应用开发领域&#xff0c;组件之间的状态管理是一个至关重要的概念。通过有效的状态管理&#xff0c;我们可以确保应用的数据流动清晰、可预测&#xff0c;从而提升应用的稳定性和可维护性。本次实验…...

lodash-es 详解

import { cloneDeep } from lodash-es 是使用 ​​ES Modules​​ 语法从 lodash-es 包中按需导入 cloneDeep 函数。这是现代前端开发中推荐的使用 Lodash 的方式&#xff1a; 1. lodash-es 是什么&#xff1f; 它是 Lodash 的 ​​ES Modules 版本​​&#xff08;普通 lodas…...

使用nvm install XXX 下载node版本时网络不好导致npm下载失败解决方案

若nvm install ***安装报错解决方案&#xff1a; 离线安装Node.js npm&#xff0c;可直接下载Node.js 14.21.3的完整离线包&#xff08;含npm&#xff09;&#xff1a; 访问 Node.js历史版本下载页&#xff1a;https://nodejs.org/download/release/v14.21.3/ 下载 node-v14.…...

VScode+OpenOCD+HTOS栈回溯在国产mcu芯片上完全调试

VScodeOpenOCDCmakeHTOS栈回溯在国产32芯片上完全调试 说实话用的都是HAL库开发的&#xff0c;flash链接文件用的都是stm32的&#xff0c;只能说国产芯片抄的基本完全一样了。具体芯片是什么就不介绍了&#xff0c;看过文章就能猜出来是哪家的了。代码开源在Gitee上了。https:…...

2025年最新版动漫短剧系统开发小程序app教程,源码部署上线

以下是动漫短剧系统开发上线的详细教程&#xff0c;包含从0到1的全流程&#xff1a; 一、需求分析&#xff08;关键&#xff1a;明确核心功能&#xff09; 核心功能清单&#xff1a; 用户端&#xff1a;短视频浏览、弹幕评论、收藏/点赞、创作者关注、付费订阅。创作者端&am…...

Java练习——day2(集合嵌套)

文章目录 练习1练习2练习3 练习1 给定一个字符串列表List words&#xff0c;统计每个单词出现的次数&#xff0c;并用Map<String, Integer>存储结果。 示例代码&#xff1a; import java.util.*;public class WordCount {public static void main(String[] args) {// 示…...

国产CPU处理器性能实测:龙芯/海光/兆芯/华颉VS英特尔和AMD!

最近后台总收到粉丝留言&#xff1a;"现在国产CPU到底行不行&#xff1f;想换电脑又怕国产的不够强"。今天咱们就掏心窝子聊聊这个话题——国产CPU处理器到底是"弯道超车"还是"贴牌组装"&#xff1f;性能真能和英特尔i5、AMD锐龙掰手腕吗&#x…...

Excel自定义函数取拼音首字母

1.启动Excel 2003&#xff08;其它版本请仿照操作&#xff09;&#xff0c;打开相应的工作表&#xff1b; 2.执行“工具 > 宏 > Visual Basic编辑器”命令&#xff08;或者直接按“AltF11”组合键&#xff09;&#xff0c;进入Visual Basic编辑状态&#xff1b; 3.执行“…...

Vue3 SSR生物启发架构:仿生渲染与DNA流式编码

一、神经元弹性调度网络 1.1 突触连接式渲染集群 1.2 生物能效对比表 调度模式能耗(kWh/万次)突触延迟容错阈值信息熵利用率轮询调度4.2220ms60%35%蚁群算法2.8150ms75%48%神经形态调度0.945ms93%82%DNA协进化调度0.312ms99.9%95% 二、DNA流式编码协议 2.1 四碱基序列转换器…...

git的上传流程

好久没使用git 命令上传远程仓库了。。。。。温习了一遍&#xff1b; 几个注意点--单个文件大小不能超过100M~~~ 一步步运行下面的命令&#xff1a; 进入要上传的文件夹内&#xff0c;点击git bash 最终 hbu的小伙伴~有需要nndl实验的可以自形下载哦...

C++学习记录:

今天我们来学习一门新的语言&#xff0c;也是C语言最著名的一个分支语言&#xff1a;C。 在C的学习中&#xff0c;我们主要学习的三大组成部分&#xff1a;语法、STL、数据结构。 C的介绍 C的历史可追溯至1979年&#xff0c;当时贝尔实验室的本贾尼斯特劳斯特卢普博士在面对复杂…...

MAC-批量任务并行处理​​实现

批量任务并行处理示例(基于Spring框架)​​ 以下是一个 ​​完整可运行​​ 的批量任务并行处理示例,包含 ​​任务拆分、异步执行、线程池管理、耗时 监控​​ 等核心功能,适用于数据清洗、文件处理、批量通知等场景。 ​​1. 线程池配置​​ @Configuration @EnableA…...

《电子类专业:通往科技未来的钥匙》

一、电子类专业全景概览 在当今科技飞速发展的时代,电子类专业无疑占据着现代科技体系中基础与核心的重要地位。从我们日常生活中不可或缺的智能手机、电脑,到推动社会进步的人工智能、大数据技术,再到探索宇宙奥秘的航天航空设备,电子类专业的身影无处不在。它就像一把万…...

全链路开源数据平台技术选型指南:六大实战工具链解析

在数字化转型加速的背景下&#xff0c;开源技术正重塑数据平台的技术格局。本文深度解析数据平台的全链路架构&#xff0c;精选六款兼具创新性与实用性的开源工具&#xff0c;涵盖数据编排、治理、实时计算、联邦查询等核心场景&#xff0c;为企业构建云原生数据架构提供可落地…...

大塔集团乔迁开新局 企业赋能贯全程

2025年4月15 日&#xff0c;在佛山市佛山大道北175号&#xff0c;大塔集团乔迁开业盛大启幕&#xff0c;业界目光聚焦于此。 点睛仪式 揭牌仪式 彩绸飘扬、嘉宾云集&#xff0c;现场气氛热烈非凡&#xff0c;这一标志性时刻&#xff0c;宣告着大塔集团正式踏上全新发展征程。 …...

Ubuntu系统下部署 NFS服务教程

Ubuntu系统下部署 NFS服务教程 一、NFS 服务简介二、环境准备三、服务器端配置1. 安装 NFS 服务端2. 创建共享目录3. 配置共享规则4. 生效配置并启动服务四、客户端配置1. 安装 NFS 客户端2. 创建本地挂载点3. 挂载远程目录4. 验证挂载状态5. 测试读写五、高级配置技巧1. 开机自…...

shell编程正则表达式与文本处理器

目录 基础正则表达式 扩展正则表达式 sed工具使用方法 awk 工具使用方法 前言 在 Shell 编程的世界里,正则表达式与文本处理器是两大不可或缺的利器。正则表达式(RegularExpression,简称 RE)作为一种强大的字符串匹配工具,能够通过特定的字符组合来描述和匹配一系列符合特…...

SparseDrive---论文阅读

纯视觉下的稀疏场景表示 算法动机&开创性思路 算法动机&#xff1a; 依赖于计算成本高昂的鸟瞰图&#xff08;BEV&#xff09;特征表示。预测和规划的设计过于直接&#xff0c;没有充分利用周围代理和自我车辆之间的高阶和双向交互。场景信息是在agent周围提取&#xff…...

YOLOV8 OBB 海思3516训练流程

YOLOV8 OBB 海思3516训练流程 目录 1、 下载带GPU版本的torch(可选) 1 2、 安装 ultralytics 2 3、 下载pycharm 社区版 2 4、安装pycharm 3 5、新建pycharm 工程 3 6、 添加conda 环境 4 7、 训练代码 5 9、配置Ymal 文件 6 10、修改网络结构 9 11、运行train.py 开始训练模…...

ThinkPHP框架接入Stripe支付

我的框架是ThinkPHP5.0&#xff0c;后台是fastadmin 1.安装composer包&#xff0c;包名是 stripe/stripe-php 2.下单代码 <?php namespace app\common\service; use app\common\controller\Api; use Stripe\Stripe; use Stripe\Checkout\Session; use think\Config;clas…...