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

VectorBT量化入门系列:第二章 VectorBT核心功能与数据处理

VectorBT量化入门系列:第二章 VectorBT核心功能与数据处理

本教程专为中高级开发者设计,系统讲解VectorBT技术在量化交易中的应用。通过结合Tushare数据源和TA-Lib技术指标,深度探索策略开发、回测优化与风险评估的核心方法。从数据获取到策略部署,全面提升量化交易能力,助力开发者构建高效、稳健的交易系统。
文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。适合量化新手建立系统认知,为策略开发打下基础。

VectorBT

学习对象

  • 中高级水平的开发者和数据分析师
  • 具备 Python 编程基础和一定的数据分析能力
  • 对量化交易和金融数据处理有一定了解
  • 熟悉 A 股市场,了解 Tushare 数据源和 TA-Lib 技术指标

教程目标

  • 系统学习 VectorBT 技术,掌握其在量化交易中的应用
  • 熟练使用 Tushare 数据源获取 A 股市场数据,并使用 Parquet 文件存储
  • 掌握基于 VectorBT 的策略开发、回测和性能评估流程
  • 学会使用 TA-Lib 计算技术指标,并将其应用于交易策略
  • 理解并实现多因子策略、机器学习策略等高级策略
  • 掌握策略优化、风险管理以及策略组合的方法
  • 能够独立构建和评估量化交易策略,并部署到生产环境

教程目录

第一章 VectorBT基础与环境搭建

1.1 VectorBT简介与应用场景
1.2 环境搭建与依赖安装
1.3 数据源与Tushare集成
1.4 数据存储与Parquet文件格式

第二章:VectorBT核心功能与数据处理

2.1 数据加载与预处理
2.2 时间序列数据处理
2.3 技术指标计算与TA-Lib集成
2.4 数据可视化与探索性分析

第三章:VectorBT策略回测基础

3.1 策略定义与实现
3.2 回测流程与关键参数
3.3 性能评估指标与解读
3.4 策略优化与参数调整

第四章:高级策略开发与优化

4.1 多因子策略开发
4.2 机器学习策略集成
4.3 风险管理与交易成本模拟
4.4 策略组合与资产配置

第五章:VectorBT性能评估与分析

5.1 性能评估框架
5.2 统计指标与回测报告
5.3 敏感性分析与压力测试
5.4 策略对比与选择标准

第六章:VectorBT实战案例

6.1 基于MACD的动量策略
6.2 基于RSI的均值回归策略
6.3 多因子选股策略
6.4 机器学习预测策略

第七章:VectorBT扩展与最佳实践

7.1 自定义指标与策略
7.2 高效回测与并行计算
7.3 代码优化与性能提升
7.4 生产环境部署与监控

第二章 VectorBT核心功能与数据处理

本章将深入讲解VectorBT的核心功能,包括数据加载与预处理、时间序列处理、技术指标计算以及数据可视化。通过本章的学习,你将掌握VectorBT在数据处理方面的应用。

2.1 数据加载与预处理

在量化交易中,数据是策略开发的基础。VectorBT提供了强大的工具来加载和处理数据。我们将结合Tushare和Parquet文件格式,完成数据的加载与预处理。

2.1.1 数据加载

我们已经学会了如何从Tushare获取数据并存储为Parquet文件。现在,我们将使用VectorBT加载这些数据。

import pandas as pddef load_data_from_parquet(file_path: str) -> pd.DataFrame:"""从Parquet文件加载数据。:param file_path: 输入文件路径:return: 加载的DataFrame"""return pd.read_parquet(file_path)# 示例:加载贵州茅台的数据
data = load_data_from_parquet("./data/600519.SH.parquet")
print(data.tail())

输出:

               open     high      low    close       vol
trade_date                                              
2024-12-25  1538.80  1538.80  1526.10  1530.00  17123.39
2024-12-26  1534.00  1538.78  1523.00  1527.79  18286.51
2024-12-27  1528.90  1536.00  1519.50  1528.97  20759.32
2024-12-30  1533.97  1543.96  1525.00  1525.00  25129.82
2024-12-31  1525.40  1545.00  1522.01  1524.00  39354.45

2.1.2 数据预处理

在加载数据后,通常需要进行预处理,包括处理缺失值、标准化数据等。

def preprocess_data(df: pd.DataFrame) -> pd.DataFrame:"""数据预处理。:param df: 输入的DataFrame:return: 预处理后的DataFrame"""# 处理缺失值df = df.fillna(method="ffill")  # 用前一个非缺失值填充# 标准化数据(可选)# df = (df - df.mean()) / df.std()return df# 示例:预处理数据
data = preprocess_data(data)
print(data.isnull().sum())

输出:

open     0
high     0
low      0
close    0
vol      0
dtype: int64

2.2 时间序列数据处理

时间序列数据是量化交易的核心。VectorBT提供了丰富的工具来处理时间序列数据。

2.2.1 数据对齐

在多资产策略中,不同资产的时间序列可能不完全对齐。VectorBT可以自动对齐数据。

def align_data(df1: pd.DataFrame, df2: pd.DataFrame
) -> tuple[pd.DataFrame, pd.DataFrame]:"""对齐两个时间序列数据。:param df1: 第一个时间序列数据:param df2: 第二个时间序列数据:return: 对齐后的两个DataFrame"""# 找到两个数据的共同索引common_index = df1.index.intersection(df2.index)# 对齐数据df1_aligned = df1.loc[common_index]df2_aligned = df2.loc[common_index]return df1_aligned, df2_aligned# 示例:对齐两个股票的数据
data1 = load_data_from_parquet("./data/600519.SH.parquet")  # 贵州茅台
data2 = load_data_from_parquet("./data/000858.SZ.parquet")  # 五粮液
data1_aligned, data2_aligned = align_data(data1, data2)
print(data1_aligned.tail())
print(data2_aligned.tail())

输出:

               open     high      low    close       vol
trade_date                                              
2024-12-25  1538.80  1538.80  1526.10  1530.00  17123.39
2024-12-26  1534.00  1538.78  1523.00  1527.79  18286.51
2024-12-27  1528.90  1536.00  1519.50  1528.97  20759.32
2024-12-30  1533.97  1543.96  1525.00  1525.00  25129.82
2024-12-31  1525.40  1545.00  1522.01  1524.00  39354.45open    high     low   close        vol
trade_date                                           
2024-12-25  143.48  143.88  142.58  143.08   96139.52
2024-12-26  143.12  143.23  141.85  142.49  104768.25
2024-12-27  142.60  142.95  141.57  142.52  134450.59
2024-12-30  142.02  143.17  141.00  141.21  163671.80
2024-12-31  141.22  143.60  140.01  140.04  245218.67

2.2.2 滚动窗口计算

滚动窗口计算是时间序列分析中的常见操作,用于计算移动平均线等指标。

def calculate_rolling_mean(df: pd.DataFrame, window: int = 20) -> pd.DataFrame:"""计算滚动均值。:param df: 输入的DataFrame:param window: 滚动窗口大小:return: 包含滚动均值的DataFrame"""df["rolling_mean"] = df["close"].rolling(window=window).mean()return df# 示例:计算20日均线
data = calculate_rolling_mean(data, window=20)
print(data[["close", "rolling_mean"]].tail())

输出:

             close  rolling_mean
trade_date                      
2024-12-25  143.08      145.8465
2024-12-26  142.49      145.7710
2024-12-27  142.52      145.5585
2024-12-30  141.21      145.2490
2024-12-31  140.04      144.9015

2.3 技术指标计算与TA-Lib集成

VectorBT支持与TA-Lib集成,用于计算各种技术指标。我们将展示如何使用TA-Lib计算常用指标。

2.3.1 计算移动平均线

import talibdef calculate_moving_averages(df: pd.DataFrame, fast_window: int = 10, slow_window: int = 30
) -> pd.DataFrame:"""计算快线和慢线的移动平均线。:param df: 输入的DataFrame:param fast_window: 快线窗口大小:param slow_window: 慢线窗口大小:return: 包含移动平均线的DataFrame"""df["fast_ma"] = talib.SMA(df["close"], timeperiod=fast_window)df["slow_ma"] = talib.SMA(df["close"], timeperiod=slow_window)return df# 示例:计算10日和30日均线
data = calculate_moving_averages(data, fast_window=10, slow_window=30)
print(data[["close", "fast_ma", "slow_ma"]].tail())

输出:

             close  fast_ma     slow_ma
trade_date                             
2024-12-25  143.08  145.031  146.637667
2024-12-26  142.49  144.098  146.271000
2024-12-27  142.52  143.546  145.978667
2024-12-30  141.21  143.208  145.708000
2024-12-31  140.04  142.723  145.427667

2.3.2 计算RSI指标

def calculate_rsi(df: pd.DataFrame, timeperiod: int = 14) -> pd.DataFrame:"""计算RSI指标。:param df: 输入的DataFrame:param timeperiod: RSI周期:return: 包含RSI指标的DataFrame"""df["rsi"] = talib.RSI(df["close"], timeperiod=timeperiod)return df# 示例:计算14日RSI
data = calculate_rsi(data, timeperiod=14)
print(data[["close", "rsi"]].tail())
             close        rsi
trade_date                   
2024-12-25  143.08  43.149944
2024-12-26  142.49  41.925951
2024-12-27  142.52  42.016017
2024-12-30  141.21  39.160030
2024-12-31  140.04  36.756888

2.4 数据可视化与探索性分析

数据可视化是理解数据的重要工具。VectorBT提供了简洁的可视化工具,帮助我们快速分析数据。

2.4.1 绘制价格与指标

import plotly.graph_objects as go
from plotly.subplots import make_subplotsdef plot_price_with_indicators(df: pd.DataFrame, title: str = "Price and Indicators"
) -> None:"""使用Plotly绘制价格与指标。:param df: 输入的DataFrame:param title: 图表标题"""# 创建子图fig = make_subplots(rows=1, cols=1)# 绘制收盘价fig.add_scatter(x=df.index,y=df["close"],mode="lines",name="Close Price",line=dict(color="blue"),row=1,col=1,)# 绘制快速移动平均线fig.add_scatter(x=df.index,y=df["fast_ma"],mode="lines",name="Fast MA",line=dict(color="orange"),row=1,col=1,)# 绘制慢速移动平均线fig.add_scatter(x=df.index,y=df["slow_ma"],mode="lines",name="Slow MA",line=dict(color="green"),row=1,col=1,)# 设置图表标题和轴标签fig.update_layout(title=title, xaxis_title="Date", yaxis_title="Price", template="vbt_dark")# 显示图表fig.show()# 示例:绘制价格与移动平均线
plot_price_with_indicators(data)

输出:

plot_price_with_indicators

2.4.2 绘制RSI指标

def plot_rsi(df: pd.DataFrame, title: str = "RSI Indicator") -> None:"""使用Plotly绘制RSI指标。:param df: 输入的DataFrame:param title: 图表标题"""# 创建子图fig = make_subplots(rows=1, cols=1)# 绘制RSI指标fig.add_scatter(x=df.index,y=df["rsi"],mode="lines",name="RSI",line=dict(color="blue"),row=1,col=1,)# 添加超买和超卖水平线fig.add_hline(y=70,line=dict(color="red", dash="dash"),annotation_text="Overbought",annotation_position="top right",row=1,col=1,)fig.add_hline(y=30,line=dict(color="green", dash="dash"),annotation_text="Oversold",annotation_position="bottom right",row=1,col=1,)# 设置图表标题和轴标签fig.update_layout(title=title, xaxis_title="Date", yaxis_title="RSI", template="vbt_dark")# 设置Y轴范围fig.update_yaxes(range=[0, 100], row=1, col=1)# 显示图表fig.show()# 示例:绘制RSI指标
plot_rsi(data)

输出:

plot_rsi

总结

通过本章,你已经掌握了以下内容:

  1. 数据加载与预处理:从Parquet文件加载数据并进行预处理。
  2. 时间序列处理:对齐数据、计算滚动窗口指标。
  3. 技术指标计算:使用TA-Lib计算移动平均线和RSI指标。
  4. 数据可视化:绘制价格与指标、RSI指标。

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

相关文章:

VectorBT量化入门系列:第二章 VectorBT核心功能与数据处理

VectorBT量化入门系列:第二章 VectorBT核心功能与数据处理 本教程专为中高级开发者设计,系统讲解VectorBT技术在量化交易中的应用。通过结合Tushare数据源和TA-Lib技术指标,深度探索策略开发、回测优化与风险评估的核心方法。从数据获取到策略…...

Spring Boot 配置文件加载优先级全解析

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot 配置文件加载优先级全解析 Spring Boot 的配置文件加载机制是开发者管理不同环境配置的核心功能之一。其通过外部化配置(Externaliz…...

System V 信号量:控制进程间共享资源的访问

System V 信号量:控制进程间共享资源的访问 在多进程操作系统中,当多个进程需要共享资源时,必须确保对资源的访问是有序的,以避免竞争条件(Race Condition)和数据不一致性问题。System V 信号量&#xff0…...

海运货代系统哪家好?能解决了哪些常见管理难题?

随着跨境电商的迅速发展,货代行业在全球供应链中扮演着越来越重要的角色。随着市场需求的多样化和国际运输环境的复杂化,货代企业面临的挑战也愈发复杂。为了应对这些挑战,数字化管理工具成为货代行业不可或缺的一部分。如今先进的海运货代系…...

预测性维护+智能优化:RK3568的储能双保险

在碳中和目标推动下,储能行业正经历前所未有的发展机遇。作为储能系统的核心组件,储能柜的智能化水平直接影响着整个系统的效率和安全性。RK3568智慧边缘控制器凭借其强大的计算能力、丰富的接口和高效的能源管理特性,正在成为工商储能柜的&q…...

蓝桥20257-元宵分配

#include <iostream> #include <bits/stdc.h> using namespace std; const int N1e910; typedef long long LL; int main() {// 请在此输入您的代码//将强其中的一碗全部倒进另一个中&#xff0c;将所有汤圆排序&#xff0c;最后选择前&#xff08;N/2&#xff09;…...

How to connect a mobile phone to your computer?

How to connect a mobile phone to your computer? 1. Background /ˈbkɡraʊnd/2. How to connect a mobile phone to your computer?References 1. Background /ˈbkɡraʊnd/ Let me introduce the background first. Today we will talk about this topic: How to conn…...

【力扣刷题实战】全排列II

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a;全排列II 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C&#xff09; 兄弟们共勉 &#xff01;&#xff01;&#xff01; 每篇前言 博客主页&#xff1a;小卡…...

题目练习之map的奇妙使用

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...

Excel 日期值转换问题解析

目录 问题原因 解决方案 方法1&#xff1a;使用 DateTime.FromOADate 转换 方法2&#xff1a;处理可能为字符串的情况 方法3&#xff1a;使用 ExcelDataReader 时的处理 额外提示 当你在 Excel 单元格中看到 2024/12/1&#xff0c;但 C# 读取到 45627 时&#xff0c;这是…...

Linux--文件系统

ok&#xff0c;上次我们提到了硬件和inode&#xff0c;这次我们继续学习文件系统 ext2文件系统 所有的准备⼯作都已经做完&#xff0c;是时候认识下文件系统了。我们想要在硬盘上存储文件&#xff0c;必须先把硬盘格式化为某种格式的文件系统&#xff0c;才能存储文件。文件系…...

2025 年福建交安安全员考试:结合本省交通特点备考​

福建地处东南沿海&#xff0c;交通建设具有独特特点&#xff0c;这对交安安全员考试备考意义重大。在桥梁建设方面&#xff0c;由于面临复杂的海洋环境&#xff0c;桥梁的防腐、防台风等安全措施成为重点。考生在学习桥梁施工安全知识时&#xff0c;要特别关注福建本地跨海大桥…...

【项目管理】第6章 信息管理概论 --知识点整理

项目管理 相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff5e;-CSDN博客 &#xff08;一&#xff09;知识总览 项目管理知识域 知识点&#xff1a; &#xff08;项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域&#xff09; 对应&…...

python-leetcode 66.寻找旋转排序数组中的最小值

题目&#xff1a; 已知一个长度为n的数组&#xff0c;预先按照升序排列&#xff0c;经由1到n次旋转后&#xff0c;得到输入数组&#xff0c;例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2]若…...

WinMerge下载及使用教程(附安装包)

文章目录 一、WinMerge安装步骤1.WinMerge下载&#xff1a;2.解压&#xff1a;3.启动&#xff1a; 二、WinMerge使用步骤1.添加文件或文件夹2.查看差异3.格式选择 WinMerge v2.16.36 是一款免费开源的文件与文件夹比较、合并工具&#xff0c;能帮您快速找出差异&#xff0c;提高…...

Codeforces Round 1011 (Div. 2)

Dashboard - Codeforces Round 1011 (Div. 2) - Codeforces Problem - B - Codeforces 题目大意&#xff1a; 给你一个数组&#xff0c;你可以用一段子序列中没有出现的最小非负整数,替换数组中的组序列&#xff0c;经过若干操作&#xff0c;让数组变为长度为1&#xff0c;值…...

深度学习实战105-利用LSTM+Attention模型做生产车间中的铝合金生产时的合格率的预测应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战105-利用LSTM+Attention模型做生产车间中的铝合金生产时的合格率的预测应用。 本项目利用LSTM+Attention模型对铝合金生产合格率进行预测,不仅在理论上具有创新性和可行性,而且在实际应用中也具有重要的价值和广阔的应用前…...

苹果内购支付 Java 接口

支付流程&#xff0c;APP支付成功后 前端调用后端接口&#xff0c;后端接口将前端支付成功后拿到的凭据传给苹果服务器检查&#xff0c;如果接口返回成功了&#xff0c;就视为支付。 代码&#xff0c;productId就是苹果开发者后台提前设置好的 产品id public CommonResult<S…...

Scrapy 是什么?Python 强大的爬虫框架详解

1. Scrapy 简介 Scrapy 是一个用 Python 编写的开源 网络爬虫框架&#xff0c;用于高效地从网站提取结构化数据。它提供了完整的爬虫开发工具&#xff0c;包括请求管理、数据解析、存储和异常处理等功能&#xff0c;适用于数据挖掘、监测和自动化测试等场景。 Scrapy 的核心特…...

一种用于基于扩散磁共振成像(MRI)的微观结构估计的外梯度与噪声调谐自适应迭代网络|文献速递-深度学习医疗AI最新文献

Title 题目 An extragradient and noise-tuning adaptive iterative network for diffusionMRI-based microstructural estimation 一种用于基于扩散磁共振成像&#xff08;MRI&#xff09;的微观结构估计的外梯度与噪声调谐自适应迭代网络 Background 背景 2.1. Advanced…...

需求的图形化分析-状态转换图

实时系统和过程控制应用程序可以在任何给定的时间内以有限的状态存在。当满足所定义的标准时&#xff0c;状态就会发生改变&#xff0c;例如在特定条件下&#xff0c;接收到一个特定的输入激励。这样的系统是有限状态机的例子。此外&#xff0c;许多业务对象&#xff08;如销售…...

3月AI论文精选十篇

1. Feature-Level Insights into Artificial Text Detection with Sparse Autoencoders[1] 核心贡献&#xff1a;通过稀疏自编码器揭示AI生成文本的检测特征&#xff0c;提出基于特征分布的鉴别方法。研究发现&#xff0c;AI文本在稀疏编码空间中呈现独特的"高频低幅"…...

【android bluetooth 框架分析 01】【关键线程 2】【bt_stack_manager_thread线程介绍】

1. bt_stack_manager_thread bt_stack_manager_thread 是蓝牙协议栈中的核心调度线程&#xff0c;负责串行化处理协议栈的生命周期事件&#xff0c;包括初始化、启动、关闭与清理操作。它确保这些状态切换在同一线程中按顺序执行&#xff0c;避免竞态和资源冲突。作为蓝牙栈的…...

GEO, TCGA 等将被禁用?!这40个公开数据库可能要小心使用了

GEO, TCGA 等将被禁用&#xff1f;&#xff01;这40个公开数据库可能要小心使用了 最近NIH公共数据库开始对中国禁用的消息闹得风风火火&#xff1a; 你认为研究者上传到 GEO 数据库上的数据会被禁用吗&#xff1f; 单选 会&#xff0c;毕竟占用存储资源 不会&#xff0c;不…...

matlab安装python API 出现Invalid version: ‘R2022a‘,

打开 setup.py 文件&#xff0c;找到设置版本号的部分 将 versionR2022a 修改为符合 Python 版本号规范的格式&#xff0c;例如 version2022.1 保存 setup.py 文件...

【ROS 通信】Services 服务通信

【ROS】Service 服务通信 前言前置操作创建一个 tutorial 功能包定义服务接口修改 CMakeLists.txt 文件修改 find_package修改 add_service_files修改 generate_messages修改 catkin_packagefind_package 和 catkin_package 修改 package.xml 文件构建 服务通信的 Python 实现服…...

25.4.8学习总结

javaFX实现倒计时 核心概念 Timeline: Timeline 是JavaFX动画API的核心类&#xff0c;用于创建动画。它可以按照指定的时间间隔&#xff08;Duration&#xff09;触发事件&#xff08;KeyFrame&#xff09;。 可以将其视为一个定时器&#xff0c;每隔一段时间执行一些操作。 …...

Android audio(6)-audiopolicyservice介绍

AudioPolicyService 是策略的制定者&#xff0c;比如某种 Stream 类型不同设备的音量&#xff08;index/DB&#xff09;是多少、某种 Stream 类型的音频数据流对应什么设备等等。而 AudioFlinger 则是策略的执行者&#xff0c;例如具体如何与音频设备通信&#xff0c;维护现有系…...

【区块链安全 | 第三十八篇】合约审计之获取私有数据(二)

文章目录 前言漏洞代码代码审计攻击步骤修复/开发建议审计思路 前言 在【区块链安全 | 第三十七篇】合约审计之获取私有数据&#xff08;一&#xff09;中&#xff0c;介绍了私有数据、访问私有数据实例、Solidity 中的数据存储方式等知识&#xff0c;本文通过分析具体合约代码…...

muduo:运行起来

Muduo 概述 Muduo 是一个用 C 编写的高性能网络库&#xff0c;由陈硕开发&#xff0c;主要用于开发 Linux 环境下的高性能网络应用程序。以下从几个方面对其进行详细介绍&#xff1a; 特点 事件驱动与非阻塞 I/O&#xff1a;Muduo 基于 Reactor 模式实现&#xff0c;使用了 …...

算法篇(八)【递归】

一、了解递归 1. 什么是递归&#xff1f; 递归就是自己调用自己 递归的概念解释起来就短短的几句话&#xff0c;但是写起来总是无从下手 &#xff0c;但是首先要相信&#xff0c;在学过了数据结构 -- 树 之后 &#xff0c; 其实就已经具备了一定的递归思想&#xff0c;接下来的…...

Linux 学习笔记(4):cd 与 pwd 命令的深度解析与实战应用(期末、期中复习必备)

前言 一、cd 命令&#xff1a;切换工作目录的利器 1.命令来源与基本语法 2.命令使用示例 3.相对路径与绝对路径的使用 二、pwd 命令&#xff1a;清晰定位当前工作目录 1.命令来源与基本语法 2.命令使用示例 三、结语 前言 在 Linux 系统的操作中&#xff0c;对工作目录的…...

眨眼睛查看密码工具类

“眨眼睛查看密码”工具类实现思路&#xff1a; 一、核心功能 实现点击眼睛图标切换密码明文/星号显示&#xff0c;提升表单输入体验。包含以下关键功能&#xff1a; • 初始状态&#xff1a;密码框显示为星号&#xff0c;闭眼图标可见。 • 点击闭眼图标&#xff1a;切换为明…...

【嵌入式系统设计师】知识点:第9章 嵌入式系统安全性基础知识

提示:“软考通关秘籍” 专栏围绕软考展开,全面涵盖了如嵌入式系统设计师、数据库系统工程师、信息系统管理工程师等多个软考方向的知识点。从计算机体系结构、存储系统等基础知识,到程序语言概述、算法、数据库技术(包括关系数据库、非关系型数据库、SQL 语言、数据仓库等)…...

find指令中使用正则表达式

linux查找命令能结合正则表达式吗 find命令要使用正则表达式需要结合-regex参数 另&#xff0c;-type参数可以指定查找类型(f为文件&#xff0c;d为文件夹) rootlocalhost:~/regular_expression# ls -alh 总计 8.0K drwxr-xr-x. 5 root root 66 4月 8日 16:26 . dr-xr-…...

【RH124】第六章 管理本地用户和组

系列文章目录 第一章 红帽企业Linux入门 第二章 访问命令行 第三章 从命令行管理文件 第五章 创建、查看文本文件 第六章 管理本地用户和组 文章目录 系列文章目录前言一、用户和组1、用户2、组 二、获取超级用户访问权限1、root用户2、切换用户账户3、sudo配置 三、管理本地用…...

Linux学习笔记——中断

中断 硬中断和软中断的定义与区别硬中断&#xff08;Hardware Interrupt&#xff09;软中断&#xff08;Software Interrupt&#xff09; 硬中断与软中断的区别总结上半部和下半部机制详解为什么要分为上半部和下半部&#xff1f;上半部下半部 下半部的三种实现机制Linux中断响…...

Linux 进程间通信:信号机制

Linux 进程间通信&#xff1a;信号机制 在多进程操作系统中&#xff0c;进程之间的通信至关重要&#xff0c;尤其是在Linux系统中&#xff0c;信号&#xff08;Signal&#xff09;作为一种特殊的进程间通信方式&#xff0c;广泛用于进程之间的协调和控制。信号可以看作是操作系…...

计算机控制系统:arduino控制无源滤波器播放音乐

1 电脑播放简单音节 播放哆瑞咪发嗦啦西 在音频处理领域&#xff0c;声音合成是通过计算机算法模拟人类声音的一种技术。具体来说&#xff0c;模拟哆瑞咪发嗦啦西音节需要声卡先接收基本音符的信号&#xff0c;然后通过数字信号处理技术&#xff0c;将该信号转换为模拟声音输出…...

FTP协议和win server2022安装ftp

FTP协议简介 FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09;是一种用于在网络上的计算机之间传输文件的标准网络协议。它被广泛应用于服务器与客户端之间的文件上传、下载以及管理操作。FTP支持多种文件类型和结构&#xff0c;并提供了相对简单的…...

UNet 改进(4):融合Ghost Module的轻量化分割网络

引言 在计算机视觉领域,U-Net因其优秀的性能在图像分割任务中广受欢迎。 随着模型复杂度的增加,计算资源和内存消耗也大幅上升。 本文将介绍一种改进的U-Net架构,通过引入Ghost Module来实现模型的轻量化,同时保持分割性能。 代码概述 这个实现构建了一个基于U-Net架构…...

香港VPS服务器如何优化CPU和内存使用率?

# 香港VPS服务器CPU与内存优化全攻略 在香港VPS服务器上优化CPU和内存使用率是提升性能、降低成本的关键。以下是经过验证的优化策略&#xff0c;涵盖从系统配置到应用层调优的全方位方案。 ## 一、系统级优化 ### 1. 内核参数调优 **调整swappiness值**&#xff08;减少交…...

简单-快速-高效——模块化解析controlnet网络结构

资源 ControlNet论文&#xff1a;Adding Conditional Control to Text-to-Image Diffusion Models 官方项目&#xff1a;lllyasviel/ControlNet: Let us control diffusion models ControlNet 1.1项目地址&#xff1a;lllyasviel/ControlNet-v1-1-nightly diffusers框架的Co…...

C语言:字符串处理函数strstr分析

在 C 语言中&#xff0c;strstr 函数用于查找一个字符串中是否存在另一个字符串。它的主要功能是搜索指定的子字符串&#xff0c;并返回该子字符串在目标字符串中第一次出现的位置的指针。如果没有找到子字符串&#xff0c;则返回 NULL。 详细说明&#xff1a; 头文件&#xf…...

跨境企业应对美国加税:策略突围与破局之道

在全球经济一体化的浪潮中&#xff0c;跨境企业的业务发展与国际关系、贸易政策紧密相连。美国作为全球重要的经济体&#xff0c;其加税行为犹如一场突如其来的风暴&#xff0c;给众多跨境企业的运营带来了巨大冲击与挑战。面对这一严峻形势&#xff0c;跨境企业若想在波涛汹涌…...

Rust 是如何层层防错的

一、Rust 的多层防错机制 &#x1f9f1; 第一层&#xff1a;Rust语言自带的“编译时护盾” —— 错误连运行都跑不起来 错误类型Rust 怎么发现的&#xff1f;工具/机制举个例子✅ 语法缺陷写错了代码格式或语法Rust Analyzer&#xff08;智能补全&#xff09;少写了分号、括号…...

一种反激变换器的设计思路(01)

反激式转换器具有低成本且易于构建的优势&#xff0c;常被用作功率较低设备和电器的主要电源。其中固定开关频率&#xff08;FF&#xff09;和可变开关频率&#xff08;QR&#xff09;是两种基本的操作开关模式。本案例中&#xff0c;输入电压&#xff08;Vin&#xff09;为17V…...

Streamlit性能优化:缓存与状态管理实战

目录 &#x1f4cc; 核心特性 &#x1f4cc; 运行原理 &#xff08;1&#xff09;全脚本执行 &#xff08;2&#xff09;差异更新 &#x1f4cc; 缓存机制 ❓为什么使用缓存&#xff1f; 使用st.cache_data的优化方案 缓存适用场景 使用st.session_state的优化方案 &…...

楼宇自控系统凭何成为建筑稳定、高效、安全运行的关键

在现代建筑领域&#xff0c;随着建筑规模的不断扩大和功能的日益复杂&#xff0c;建筑的稳定、高效、安全运行成为了至关重要的课题。楼宇自控系统犹如建筑的“智慧大脑”&#xff0c;凭借其卓越的功能和技术&#xff0c;在这三个关键方面发挥着不可替代的作用&#xff0c;成为…...

【学习自用】配置文件中的配置项

server.port服务器端口&#xff0c;常被用于指定应用程序运行时所监听的端口号spring.datasource.url用于配置数据源的数据库连接URLspring.datasource.username用于指定连接数据库的用户名spring.datasource.password用于配置数据源时设置数据库连接密码的属性mybatis.mapper-…...