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

第 5 篇:初试牛刀 - 简单的预测方法

第 5 篇:初试牛刀 - 简单的预测方法

经过前面四篇的学习,我们已经具备了处理时间序列数据的基本功:加载、可视化、分解以及处理平稳性。现在,激动人心的时刻到来了——我们要开始尝试预测 (Forecasting) 未来!

预测是时间序列分析最核心的应用之一。虽然存在很多复杂的预测模型,但万丈高楼平地起,一些看似简单的预测方法不仅容易理解和实现,有时效果还出奇地好,并且它们是理解更高级模型的重要基础。

本篇,我们将学习几种“入门级”的时间序列预测方法:

  1. 预测的基本概念: 区分训练与预测,划分数据集。
  2. 朴素预测 (Naive Forecast): 最简单的方法。
  3. 简单平均法 (Simple Average): 用历史平均值预测。
  4. 移动平均法 (Moving Average): 用近期历史平均值预测。
  5. (可选) 季节性朴素预测 (Seasonal Naive Forecast): 考虑季节性的朴素方法。

我们将用 Python 实现这些方法,并看看它们的预测效果如何。

预测的基本概念

在进行预测之前,我们需要明确两个基本概念:

  • 拟合 (In-sample Fit) vs. 预测 (Out-of-sample Forecast):

    • 拟合: 使用模型去“解释”或“匹配”我们已经拥有的历史数据。
    • 预测: 使用模型去推断我们尚未观测到未来数据点。这才是我们通常意义上的“预测”。
  • 训练集 (Training Set) vs. 测试集 (Test Set):

    • 为了评估模型的真实预测能力,我们不能用全部历史数据来构建模型,然后又用这些数据来评估。这就像考试前知道了所有答案。

    • 标准的做法是:将历史数据划分为两部分:

      • 训练集: 用于构建(或“训练”)我们的预测模型。模型只能看到这部分数据。
      • 测试集: 用于评估模型的预测效果。模型在训练阶段看不到这部分数据。我们将模型的预测结果与测试集的真实值进行比较。
    • 对于时间序列,通常是按时间顺序划分,较早的数据作为训练集,较晚的数据作为测试集。例如,用前 80% 的数据训练,后 20% 的数据测试。

最简单的预测模型

现在,让我们来认识几位简单但重要的“预测选手”。我们将继续使用之前的月度 CO2 数据(或你可以替换成自己的数据)。

import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns# --- 数据准备 ---
# 1. 加载数据
data = sm.datasets.co2.load_pandas().data
data['co2'].interpolate(inplace=True)
monthly_data = data.resample('M').mean()# 2. 划分训练集和测试集 (例如,最后 2 年作为测试集)
train_data = monthly_data[:-24] # 除去最后 24 个月
test_data = monthly_data[-24:]  # 最后 24 个月print(f"训练集范围: {train_data.index.min()} to {train_data.index.max()}")
print(f"测试集范围: {test_data.index.min()} to {test_data.index.max()}")# --- 可视化划分结果 (可选) ---
plt.figure(figsize=(12, 6))
plt.plot(train_data.index, train_data['co2'], label='Train Data')
plt.plot(test_data.index, test_data['co2'], label='Test Data (Actual)')
plt.title('CO2 Data: Train/Test Split')
plt.xlabel('Date')
plt.ylabel('CO2 Concentration')
plt.legend()
plt.show()

在这里插入图片描述
在这里插入图片描述

1. 朴素预测 (Naive Forecast)

  • 逻辑: 假设未来跟现在(最近的已知值)一样。预测下一期的值就等于训练集中最后一期的实际值。
    • Ŷ(t+1) = Y(t_last_train)
  • 优点: 极其简单,无需参数,是一个重要的基准 (Baseline) 模型(任何更复杂的模型都应该比它做得更好才有意义)。
  • 缺点: 无法捕捉趋势和季节性,对波动敏感。
  • 实现:
# 获取训练集最后一个值
last_train_value = train_data['co2'].iloc[-1]# 创建测试集长度的预测值,所有值都等于 last_train_value
naive_forecast = pd.Series([last_train_value] * len(test_data), index=test_data.index)print("\n朴素预测 (Naive Forecast):")
print(naive_forecast.head())

在这里插入图片描述

2. 简单平均法 (Simple Average)

  • 逻辑: 假设未来会和历史的平均水平一样。预测未来所有期的值都等于训练集中所有数据的平均值
    • Ŷ(t+k) = mean(Y_train) for all k > 0
  • 优点: 简单,考虑了所有历史信息。
  • 缺点: 忽略了时间序列的演变(趋势、季节性),对早期数据和近期数据给予同等权重。如果序列有明显趋势,效果通常很差。
  • 实现:
# 计算训练集平均值
train_mean = train_data['co2'].mean()# 创建测试集长度的预测值,所有值都等于 train_mean
simple_avg_forecast = pd.Series([train_mean] * len(test_data), index=test_data.index)print("\n简单平均法预测 (Simple Average Forecast):")
print(simple_avg_forecast.head())

在这里插入图片描述

3. 移动平均法 (Moving Average)

  • 逻辑: 只考虑最近的一段历史。预测下一期的值等于训练集中最近 N 个数据点的平均值。N 是需要我们指定的窗口大小 (Window Size)
    • Ŷ(t+1) = mean(Y(t), Y(t-1), ..., Y(t-N+1))
  • 优点: 比简单平均法更关注近期变化,能一定程度平滑短期波动。
  • 缺点: 无法很好地处理趋势和季节性。预测值对窗口大小 N 很敏感。它本质上是对近期水平的估计,不是趋势预测。严格来说,移动平均更多用于平滑数据或作为更复杂模型的组件,直接用于多步预测效果有限(通常只预测一步,或者假设未来多步都等于这个平均值)。
  • 实现 (预测未来所有期都等于最后窗口的平均值):
# 设置移动平均窗口大小 (例如,最近 12 个月)
window_size = 12# 计算训练集最后 N 个点的平均值
moving_avg = train_data['co2'].iloc[-window_size:].mean()# 创建测试集长度的预测值
moving_avg_forecast = pd.Series([moving_avg] * len(test_data), index=test_data.index)print(f"\n移动平均法预测 (Moving Average Forecast, N={window_size}):")
print(moving_avg_forecast.head())

在这里插入图片描述

4. (可选) 季节性朴素预测 (Seasonal Naive Forecast)

  • 逻辑: 假设下个季节/周期的同一时间点会和上个季节/周期一样。例如,预测明年 1 月的值等于今年 1 月的值。
    • Ŷ(t+k) = Y(t+k-s),其中 s 是季节周期长度 (e.g., 12 for monthly data with annual seasonality)。
  • 优点: 考虑了季节性,对于有强季节性模式的数据可能效果不错。也是一个重要的基准。
  • 缺点: 忽略了趋势和其他变化。
  • 实现 (需要访问训练集中更早的数据):
# 季节周期
seasonality = 12seasonal_naive_forecast_list = []
for i in range(len(test_data)):if i >= seasonality:# 使用测试集前一个季节周期的预测值seasonal_value = test_data['co2'].iloc[i - seasonality]else:# 不足一个周期,用训练集最后一个完整周期前的值seasonal_value = train_data['co2'].iloc[-seasonality + i]seasonal_naive_forecast_list.append(seasonal_value)seasonal_naive_forecast = pd.Series(seasonal_naive_forecast_list, index=test_data.index)print("\n季节性朴素预测 (Seasonal Naive Forecast):")
print(seasonal_naive_forecast.head())

在这里插入图片描述

可视化预测结果

光看数字不够直观,让我们把预测结果和测试集的真实值画在一起比较一下。

plt.figure(figsize=(14, 8))# 绘制训练数据
plt.plot(train_data.index, train_data['co2'], label='Train Data')# 绘制测试数据 (真实值)
plt.plot(test_data.index, test_data['co2'], label='Test Data (Actual)', color='black', linewidth=2)# 绘制各种预测结果
plt.plot(test_data.index, naive_forecast, label='Naive Forecast', linestyle='--')
plt.plot(test_data.index, simple_avg_forecast, label='Simple Average Forecast', linestyle='--')
plt.plot(test_data.index, moving_avg_forecast, label=f'Moving Average (N={window_size}) Forecast', linestyle='--')
plt.plot(test_data.index, seasonal_naive_forecast, label='Seasonal Naive Forecast', linestyle='--')# 添加标题和标签
plt.title('Comparison of Simple Forecast Methods')
plt.xlabel('Date')
plt.ylabel('CO2 Concentration')
plt.legend()
plt.tight_layout()
plt.show()

在这里插入图片描述

解读图形:

  • 观察每种预测方法(虚线)与测试集真实值(黑色实线)的接近程度。
  • 对于 CO2 数据(有明显趋势和季节性):
    • 朴素预测简单平均 显然跟不上趋势,预测线是平的。
    • 移动平均 (N=12) 也基本是平的,因为它只是最后12个月的平均,没有预测趋势。
    • 季节性朴素预测 捕捉到了季节波动,但没有捕捉到整体上升的趋势。
  • 这表明,对于具有明显趋势和/或季节性的数据,这些简单方法可能不足以做出准确预测。它们更多是作为后续更复杂模型的比较基准

小结

今天我们迈出了预测的第一步:

  • 理解了预测的目标是推断未来值,以及训练集/测试集划分的重要性。
  • 学习并实现了四种简单的预测方法:
    • 朴素预测 (Naive): Ŷ(t+1) = Y(t)
    • 简单平均法 (Simple Average): Ŷ(t+k) = mean(Y_train)
    • 移动平均法 (Moving Average): Ŷ(t+1) = mean(Y(t), ..., Y(t-N+1))
    • 季节性朴素预测 (Seasonal Naive): Ŷ(t+k) = Y(t+k-s)
  • 通过可视化比较了这些方法在测试集上的表现,并认识到它们作为基准模型的价值。

下一篇预告

我们已经做出了几种预测,但是怎么量化地评价哪个预测“更好”呢?光靠看图是不够严谨的。下一篇,我们将学习常用的预测评估指标 (Evaluation Metrics),如 MAE, MSE, RMSE 等,它们将帮助我们用数字来衡量预测的准确性。

准备好给你的预测打分了吗?敬请期待!


(尝试用你自己的时间序列数据跑一遍这些简单预测方法,看看哪个效果相对最好?窗口大小 N 对移动平均预测影响大吗?欢迎分享!)

相关文章:

第 5 篇:初试牛刀 - 简单的预测方法

第 5 篇:初试牛刀 - 简单的预测方法 经过前面四篇的学习,我们已经具备了处理时间序列数据的基本功:加载、可视化、分解以及处理平稳性。现在,激动人心的时刻到来了——我们要开始尝试预测 (Forecasting) 未来! 预测是…...

深度学习中的归一化技术:从原理到实战全解析

摘要:本文系统解析深度学习中的归一化技术,涵盖批量归一化(BN)、层归一化(LN)、实例归一化(IN)、组归一化(GN)等核心方法。通过数学原理、适用场景、优缺点对…...

流量抓取工具(wireshark)

协议 TCP/IP协议簇 网络接口层(没有特定的协议)PPPOE 物理层数据链路层 网络层: IP(v4/v6) ARP(地址解析协议) RARP ICMP(Internet控制报文协议) IGMP传输层:TCP(传输控制协议)UDP(用户数据报协议)应用层…...

【原创】Ubuntu20.04 安装 Isaac Gym 仿真器

Isaac Gym 是 NVIDIA 开发的一个基于GPU的机器人仿真平台。其高效的 GPU 加速能力和大规模并行仿真性能,成为强化学习训练和机器人控制研究的重要选择。 本文将介绍 Isaac Gym 的安装过程【简易】。 1.配置环境 Ubuntu20.04 安装 NVIDIA 显卡驱动 Ubuntu20.04 安…...

AI 速读 SpecReason:让思考又快又准!

在大模型推理的世界里,速度与精度往往难以兼得。但今天要介绍的这篇论文带来了名为SpecReason的创新系统,它打破常规,能让大模型推理既快速又准确,大幅提升性能。想知道它是如何做到的吗?快来一探究竟! 论…...

从“堆料竞赛”到“体验深耕”,X200 Ultra和X200s打响手机价值升维战

出品 | 何玺 排版 | 叶媛 vivo双旗舰来袭! 4月21日,vivo X系列春季新品发布会盛大开启,带来了一场科技与创新的盛宴。会上,消费者期待已久的X200 Ultra及X200s两款旗舰新品正式发布。 vivo两款旗舰新品发布后,其打破…...

Macbook IntelliJ IDEA终端无法运行mvn命令

一、背景 idea工具里执行Maven命令mvn package,报错提示 zsh: command not found: mvn。 macOS,默认使用的是zsh,环境变量通常配置在 ~/.zshrc 文件中。 而我之前一直是配置在~/.bash_profile文件中。 二、环境变量 vi ~/.zshrc设置MAVE…...

CentOS 7进入救援模式——VirtualBox虚拟机

​ 目录 1. 在`VirtualBox`环境下,开机按F12,进入`VirtualBox temporary boot device selection `界面,按`c`键,选中`CD-ROM `回车。2. 选中`Troubleshooting`(故障排除),进入`Troubleshooting`界面3. 接下来会显示救援模式菜单,通常选择`"1) Continue"`(除非您…...

AI软件栈:LLVM分析(六)

LLVM后端代码生成的关键步骤 文章目录 指令选择指令调度寄存器分配 指令选择 完成从基于LLVM IR的DAG转换为基于特定目标平台的DAG(注意,此时描述格式依然是DAG形态)基于TabGen完成指令重映射(典型的处理包括:指令拆散…...

【第十六届 蓝桥杯 省 C/Python A/Java C 登山】题解

题目链接:P12169 [蓝桥杯 2025 省 C/Python A/Java C] 登山 思路来源 一开始想的其实是记搜,但是发现还有先找更小的再找更大的这种路径,所以这样可能错过某些最优决策,这样不行。 于是我又想能不能从最大值出发往回搜&#xf…...

Github 热点项目 Jumpserver开源堡垒机让服务器管理效率翻倍

Jumpserver今日喜提160星,总星飙至2.6万!这个开源堡垒机有三大亮点:① 像哆啦A梦的口袋,支持多云服务器一站式管理;② 安全审计功能超硬核,操作记录随时可回放;③ 网页终端无需装插件&#xff0…...

5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命

点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 一、起源:USB标准与早期电力传输需求 1. USB的诞生背景 1996年,由英特尔、微软、IBM等公司组成的USB-IF(USB Implementers Forum)发布了…...

驱动开发硬核特训 · Day 16:字符设备驱动模型与实战注册流程

🎥 视频教程请关注 B 站:“嵌入式 Jerry” 一、为什么要学习字符设备驱动? 在 Linux 驱动开发中,字符设备(Character Device)驱动 是最基础也是最常见的一类驱动类型。很多设备(如 LED、按键、…...

外网如何连接内网中的mysql数据库服务器

一、MySQL 产品简介 mysql是一款数据库产品,它主要用于存储、管理和检索数据,对用户的数据进行存储管理 二、运维人员遇到的问题 当内网服务器部署好mysql数据库后,外网如何安全的访问数据库进行增删改查,是运维人员遇到的一个…...

你的大模型服务如何压测:首 Token 延迟、并发与 QPS

写在前面 大型语言模型(LLM)API,特别是遵循 OpenAI 规范的接口(无论是 OpenAI 官方、Azure OpenAI,还是 DeepSeek、Moonshot 等众多兼容服务),已成为驱动下一代 AI 应用的核心引擎。然而,随着应用规模的扩大和用户量的增长,仅仅关注模型的功能是不够的,API 的性能表…...

4月谷歌新政 | Google Play今年对“数据安全”的管控将全面升级!

大家好,我是牢鹅!每年的Q2季度是Google Play重要政策更新的时间节点,一般都伴随着重磅政策的更新,今年也不例外。4月10日,谷歌政策迎来2025年第二次更新,本次政策更新内容相较3月政策更新,不管是…...

第十四届蓝桥杯 2023 C/C++组 有奖问答

目录 题目: 题目描述: 题目链接: 思路: 核心思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: 蓝桥云课 有奖问答 思路&…...

【Redis】SpringDataRedis

Spring Data Redis 使得开发者能够更容易地与 Redis 数据库进行交互,并且支持不同的 Redis 客户端实现,如 Jedis 和 Lettuce。Spring Data Redis 会自动选择一个客户端,通常情况下,Spring Boot 默认使用 Lettuce 作为 Redis 客户端…...

XAttention

XAttention: Block Sparse Attention with Antidiagonal Scoring 革新Transformer推理的高效注意力机制资源​​ ​​论文链接​​:XAttention: Block Sparse Attention with Antidiagonal Scoring ​​代码开源​​:GitHub仓库 XAttention是韩松团队提…...

07.Python代码NumPy-排序sort,argsort,lexsort

07.Python代码NumPy-排序sort,argsort,lexsort 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是NumPy的使用语法。前后每一小节的内容是存在的有:学习and理解的关联性,希望…...

无人机飞控运行在stm32上的RTOS实时操作系统上,而不是linux这种非实时操作系统的必要性

飞控程序需要运行在STM32等微控制器(MCU)的实时操作系统(RTOS)而非Linux等非实时操作系统(如通用Linux内核),主要原因在于实时性、资源占用、硬件适配性以及系统可靠性等方面的实质性差异。以下…...

Leetcode - 周赛446

目录 一、3522. 执行指令后的得分二、3523. 非递减数组的最大长度三、3524. 求出数组的 X 值 I四、3525. 求出数组的 X 值 II 一、3522. 执行指令后的得分 题目链接 本题就是一道模拟题,代码如下: class Solution {public long calculateScore(String…...

Linux——系统安全及应用

目录 一:账号安全控制 1,基本安全措施 系统账号清理 密码安全控制 命令历史,自动注销 2,用户切换与提权 su命令的用法 PAM认证 3,sudo命令——提升执行权限 在配置文件/etc/sudoers中添加授权 通过sudo执行…...

随机面试--<二>

编译安装软件的流程 1-安装所需源代码 2-配置安装环境 3-进行相关设置 4-编译 5-安装 nginx安装新模块的流程 1-准备与原nginx版本相同的源码包,准备模块安装包 2-准备编译安装环境 3-配置参数 来源于nginx -V配置原模块 以及--add-module 增加模块 4-mak…...

LeetCode面试经典 150 题(Java题解)

一、数组、字符串 1、合并两个有序数组 从后往前比较,这样就不需要使用额外的空间 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int l mn-1, i m-1, j n-1;while(i > 0 && j > 0){if(nums1[i] > nums2[j])…...

【技术追踪】Differential Transformer(ICLR-2025)

Differential Transformer:大语言模型新架构, 提出了 differential attention mechanism,Transformer 又多了一个小 trick~ 论文:Differential Transformer 代码:https://github.com/microsoft/unilm/tree/master/Diff…...

报告系统状态的连续日期 mysql + pandas(连续值判断)

本题用到知识点:row_number(), union, date_sub(), to_timedelta()…… 目录 思路 pandas Mysql 思路 链接:报告系统状态的连续日期 思路: 判断连续性常用的一个方法,增量相同的两个列的差值是固定的。 让日期与行号 * 天数…...

【C++类和数据抽象】类的作用域

目录 一、类的作用域基本概念 1.1 什么是类的作用域 1.2 作用域层次体系 1.3 类作用域的特点 1.4 基本访问规则 二、访问控制三剑客 2.1 public:开放接口 2.2 private:数据封装 2.3 protected:继承通道 2.4 跨作用域访问示例 三…...

【区块链技术解析】从原理到实践的全链路指南

目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现(10个案例)案例1:创建简单区块链案例2:工作…...

LangGraph(一)——QuickStart样例中的第一步

目录 1. LangGraph简介2. 使用uv初始化项目3. 官网QuickStart——第一步:构建一个ChatBot(仅关注Graph的构建即可)3.1 配置大模型API_KEY3.2 初始化StateGraph3.3 添加chatbot node3.4 添加edges3.5 可视化StateGraph3.6 构建聊天循环 参考 1. LangGraph简介 LangGr…...

spring security +kotlin 实现oauth2.0 认证

基于OAuth 2.0的认证功能实现(Kotlin Spring Security) 以下是使用 AbstractAuthenticationProcessingFilter、AuthenticationProvider、AbstractAuthenticationToken 和 AuthenticationSuccessHandler 实现 OAuth 2.0 认证的完整代码设计。 1. 自定义…...

服务器监控软件推荐

以下是几款常用的服务器监控软件推荐,涵盖开源和商业方案,适用于不同规模和需求: 一、开源免费方案 Prometheus Grafana 特点:时序数据库 可视化仪表盘,支持多维度监控和告警。适用场景:云原生、Kubernet…...

在kali中安装AntSword(蚁剑)

步骤一、下载压缩包 源码:https://github.com/AntSwordProject/antSword,下载压缩包。 加载器:https://github.com/AntSwordProject/AntSword-Loader,根据系统选择压缩包(kali选择AntSword-Loader-v4.0.3-linux-x64&…...

【论文速递】2025年06周 (Robotics/Embodied AI/LLM)

目录 SMOLLM2:当Smol变得大 - 以数据为中心的小语言模型英文摘要中文摘要 OmniHuman-1:重新考虑一阶段的人类动画模型的扩展英文摘要中文摘要 S1:简单的测试时间缩放英文摘要中文摘要 直接对齐算法间的差异日渐模糊英文摘要中文摘要 VideoJAM…...

相机标定(输出相机内参和畸变参数)

相机标定 这里我用笔记本电脑自带的摄像头进行相机标定 仅作示例,实际工程中要用对应的摄像头进行标定 同时代码也要相应的修改,不过修改的主要是相机的初始化 粗略的说就是打开相机那部分要修改(依据实际情况相应修改) 最终的结果…...

Linux-编辑器的使用

实验三 Linux编辑器的使用 一、实验目的 学习使用vi编辑器建立、编辑和保存文本文件。 二、实验内容 1.进入和退出vi。 2.Vi不同工作模式的切换。 3.文本文件基本编辑(光标移动、文本输入、复制、移动、删除、查找、替换)。 4.文本文件的保存和备份。…...

Android开发中的复制和粘贴

Android 提供了一个强大的基于剪贴板的框架,用于复制和粘贴。它支持简单和复杂的数据类型,包括文本字符串、复杂数据结构、文本和二进制流数据,以及应用资源。简单的文本数据直接存储在剪贴板中,而复杂的数据则存储为引用&#xf…...

使用 inobounce 解决 iOS 皮筋效果导致的无法下拉刷新

使用 inobounce 解决 iOS 皮筋效果导致的无法下拉刷新 在移动端 H5 页面开发中,iOS 设备的“皮筋效果”(Rubber Band Effect)是一个常见的挑战。当用户在页面顶部下拉或底部上拉时,iOS 会触发整个页面的回弹效果,这不…...

特征选择与类不平衡处理

特征选择与类不平衡处理技术 一、特征选择方法 1. 过滤法(Filter Methods) 原理: 基于统计学方法或特征本身的分布特性独立于模型进行特征筛选,通过计算特征与目标变量的相关性或特征的发散性进行排序选择。 典型方法&#xf…...

24、ASP.NET⻚⾯之间传递值的⼏种⽅式

1. QueryString(查询字符串) 描述:通过 URL 参数传递数据,例如 Page2.aspx?id123。 适用场景:简单、非敏感数据,页面跳转时使用。 2. Session(会话) 描述:在服务器端…...

【扩展卡尔曼滤波器实际运用案例】

扩展卡尔曼滤波器 算法描述实际案例 算法描述 考虑离散时间非线性动态系统 { x k 1 f k ( x k , w k ) z k h k ( x k , v k ) \left\{\begin{matrix} x_{k1}f_{k}(x_k,w_k)\\ z_{k}h_{k}(x_k,v_k) \end{matrix}\right. {xk1​fk​(xk​,wk​)zk​hk​(xk​,vk​)​ 其中是…...

Centos9 安装 nginx 及配置

1. 安装nginx 安装依赖软件,安装之前可以看一下是否已经安装过以下软件,dnf list installed | grep zlib dnf install gcc-c dnf install zlib dnf install pcre pcre-devel dnf install openssl openssl-devel下载nginx,这里是下载到opt文…...

总结设计测试用例的万能公式

现在有⼀款产品,要求我们对“⻔锁”设计测试⽤例,假如你是测试⼈员,你会怎么设计呢? 1 常规思考逆向思维发散性思维 设计测试⽤例的原则⼆: 1.测试⽤例的编写不仅应当根据有效和预料到的输⼊情况,⽽且也…...

Android RK356X TVSettings USB调试开关

Android RK356X TVSettings USB调试开关 平台概述操作-打开USB调试实现源码补充说明 平台 RK3568 Android 11 概述 RK3568 是瑞芯微(Rockchip)推出的一款高性能处理器,支持 USB OTG(On-The-Go)和 USB Host 功能。US…...

python生成动态库在c++中调用

一.Windows下生成动态库.pyd 在setup.py的同目录下使用python setup.py build_ext --inplace 二.在vscode的c中使用.pyd文件(动态库) 1)配置python的环境 python -c "import sys; print(sys.executable)" #确定python安装位置 2…...

大模型数据味蕾论

大模型数据味蕾论 大模型的成长路径:从婴儿到专家预训练数据的"四维口味"模型从文本到模型:数据处理的关键步骤"大模型数据味蕾论"结语 AI大模型就像一位厨师,预训练数据就是这位厨师的味蕾。 没有经过训练的味蕾&#x…...

网络编程4

day4 一、Modbus 1.分类 (1).Modbus RTU: 运行在串口上的协议,采用二进制表现形式以及紧凑型数据结构,通信效率高,应用广泛。(2).Modbus ASCII: 运行在串口上的协议,采用ASCII码传输,并且利用特殊字符作为其字节的开始…...

neo4j-community-3.5.5-unix.tar.gz安装

从官网找了下包,哎,奈何访问不了github,那就找镜像吧,哎,也是不通。 # docker search neo4j Error response from daemon: Get "https://index.docker.io/v1/search?qneo4j&n25": dial tcp 202.160.128.40:443: i…...

高防IP能抵御哪些类型的网络攻击?

高防IP(High Defense IP)是一种专门针对网络攻击设计的防护服务,主要通过流量清洗、协议分析、行为检测等技术抵御多种网络攻击。以下是其能防御的主要攻击类型及原理: ​​一、常见防御的攻击类型​​ ​​DDoS攻击(分…...

动态监控进程

1.介绍: top和ps命令很相似,它们都是用来显示正在执行的进程,top和ps最大的不同之处,在于top在执行中可以更新正在执行的进程. 2.基本语法: top [选项] 选项说明 ⭐️僵死进程:内存没有释放,但是进程已经停止工作了,需要及时清理 交互操作说明 应用案…...