基于Python的量化交易实盘部署与风险管理指南
基于Python的量化交易实盘部署与风险管理指南
一、模拟交易与参数优化
1.1 券商API接入与模拟交易
在量化交易落地前,模拟交易是策略验证的“安全沙箱”,其核心价值在于用零成本环境暴露策略缺陷。以股票市场为例,同花顺与通达信模拟盘接口覆盖A股全品种行情与交易功能,但接口特性存在显著差异:
- 同花顺采用HTTP轮询获取行情,适合低频策略测试,认证流程需通过MD5加密密码与时间戳生成签名,确保请求合法性;
- 通达信提供WebSocket实时行情推送,延迟低至50ms,适合高频策略验证,需通过IP白名单+Token双重认证。
代码示例中,auth_ths
函数演示了同花顺的签名算法,而WebSocket连接实现了实时行情的无阻塞接收,为策略实时计算提供数据源。
数字货币领域,Binance Testnet是最佳实践平台,其与主网完全一致的API接口支持现货、杠杆、永续合约全场景模拟。通过base_url
参数切换至测试网,配合CCXT库统一多交易所接口,可实现策略的跨平台迁移测试。示例中市价单下单逻辑需注意:测试网的USDT通常为虚拟资产,需提前通过Faucet获取测试资金,避免实盘API密钥误用。
Python对接同花顺模拟盘
import requests
import hashlib
import time# API认证(示例代码)
def auth_ths(username, password):timestamp = str(int(time.time()))sign = hashlib.md5(f"{password}{timestamp}".encode()).hexdigest()headers = {"User-Agent": "THS-SDK-Python"}response = requests.post(url="https://simtrade.ths.com/api/auth",json={"username": username, "timestamp": timestamp, "sign": sign},headers=headers)return response.json()["access_token"]# 获取实时行情(WebSocket示例)
import websocket
def on_message(ws, message):print(f"行情数据: {message}")ws = websocket.WebSocketApp("wss://simquote.ths.com/ws",on_message=on_message
)
ws.run_forever()
数字货币模拟交易(Binance Testnet)
from binance.spot import Spotclient = Spot(api_key="YOUR_API_KEY",api_secret="YOUR_SECRET_KEY",base_url="https://testnet.binance.vision"
)# 市价单示例
order = client.new_order(symbol="BTCUSDT",side="BUY",type="MARKET",quantity=0.001
)
print(f"订单ID: {order['orderId']}")
1.2 参数调优实战
参数优化是策略的“基因编辑”,核心目标是在历史数据中寻找收益与风险的帕累托最优解。
- 网格搜索:通过Dask并行计算框架,将多因子模型的参数组合(如双均线策略的短周期/长周期)分配至多个计算节点并行回测。示例中使用Backtrader框架的
analyzers.SharpeRatio
评估策略效能,相比单线程计算效率提升400%,但需注意时间序列数据的非独立性,需采用滚动窗口交叉验证避免过拟合。 - 遗传算法:借鉴生物进化理论,将交易参数(如止盈止损阈值、仓位比例)编码为“染色体”,通过选择、交叉、变异操作迭代优化。DEAP库提供的
eaSimple
算法示例中,适应度函数以策略收益为优化目标,配合锦标赛选择(selTournament
)提升种群质量,适用于多参数非线性优化场景,如数字货币套利策略的跨交易所价差阈值寻优。
网格搜索优化(使用Dask并行计算)
import dask
from dask.distributed import Client
from backtrader import analyzersclient = Client(n_workers=4) # 启动4个并行进程@dask.delayed
def backtest(params):cerebro = bt.Cerebro()cerebro.addstrategy(MyStrategy, period=params['period'])cerebro.addanalyzer(analyzers.SharpeRatio, _name='sharpe')results = cerebro.run()return results[0].analyzers.sharpe.get_analysis()# 参数空间
params_grid = {'period': range(10, 50, 5)}
results = []
for params in params_grid:results.append(backtest(params))# 计算最优参数
sharpe_ratios = dask.compute(*results)
optimal_params = params_grid[np.argmax(sharpe_ratios)]
遗传算法优化(DEAP库示例)
import random
from deap import base, creator, tools# 定义适应度函数
def evaluate(individual):threshold, position = individualreturn (calculate_profit(threshold, position),) # 最大化收益creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)toolbox = base.Toolbox()
toolbox.register("attr_float", random.uniform, 0.1, 0.5) # 参数范围
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_float, n=2)
toolbox.register("evaluate", evaluate)
toolbox.register("mate", tools.cxBlend, alpha=0.5)
toolbox.register("mutate", tools.mutGaussian, mu=0, sigma=0.1, indpb=0.2)
toolbox.register("select", tools.selTournament, tournsize=3)pop = toolbox.population(n=50)
hof = tools.HallOfFame(1)
stats = tools.Statistics(lambda ind: ind.fitness.values)
stats.register("max", np.max)result, log = algorithms.eaSimple(pop, toolbox, cxpb=0.5, mutpb=0.2, ngen=40, stats=stats, halloffame=hof, verbose=True)
二、实盘交易系统搭建
2.1 订单执行与API安全
实盘交易的核心是“精准执行”,而API安全是第一道防线:
- 华泰证券OAuth2.0:采用标准OAuth2.0授权码模式,需引导用户在券商APP完成授权,获取包含时效性的Access Token。示例中
fetch_token
流程需注意重定向URI的合规性,生产环境需部署HTTPS服务器处理回调,防止Token泄露。订单请求时,需对价格、数量进行合规校验(如A股最小1手=100股),避免废单。 - 币安HMAC-SHA256:通过密钥对请求参数签名,确保数据完整性与不可抵赖性。签名算法中,时间戳需与交易所服务器对齐(误差<1000ms),否则会被拒绝;同时需限制API权限(如仅开放现货交易),避免杠杆/合约等高风险操作误触。
华泰证券API签名(OAuth2.0)
import requests
from requests_oauthlib import OAuth2Sessionclient_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_SECRET"
redirect_uri = "https://localhost/callback"oauth = OAuth2Session(client_id, redirect_uri=redirect_uri)
authorization_url, _ = oauth.authorization_url("https://api.htsc.com/oauth/authorize")# 获取授权码后交换Token
token = oauth.fetch_token("https://api.htsc.com/oauth/token",client_secret=client_secret,authorization_response=redirect_response
)# 下单请求示例
order_params = {"symbol": "600519.SH","price": 1900.0,"quantity": 100,"side": "BUY"
}
response = oauth.post("https://api.htsc.com/trade/order", json=order_params)
币安API签名(HMAC-SHA256)
import hmac
import hashlib
import urllib.parsedef sign_request(secret, params):query_string = urllib.parse.urlencode(params)signature = hmac.new(secret.encode(), query_string.encode(), hashlib.sha256).hexdigest()return signatureparams = {"symbol": "BTCUSDT","side": "SELL","type": "LIMIT","quantity": 0.1,"timestamp": int(time.time() * 1000)
}
params["signature"] = sign_request("API_SECRET", params)
2.2 低延迟优化技巧
在高频交易场景中,1ms的延迟优势可能决定策略的盈亏边界:
- Cython加速:将核心计算逻辑(如订单簿深度处理、实时指标计算)从Python迁移至Cython,通过静态类型声明(
cdef
关键字)消除动态类型开销。示例中process_order
函数通过禁用边界检查(@cython.boundscheck(False)
),将循环效率提升至接近C语言水平,适合处理百万级数据的实时计算。 - Redis缓存:利用内存数据库缓存实时行情与账户信息,降低数据库IO延迟。键名设计采用“模块:对象:标识”规范(如
market:BTCUSDT:depth
),过期时间根据数据更新频率设置(如1分钟级行情数据),配合Pipeline批量操作,可将单次查询延迟从10ms降至1ms以下。
Cython加速核心逻辑
# 文件名: fast_order.pyx
cimport cython@cython.boundscheck(False)
@cython.wraparound(False)
def process_order(double[:] prices, double[:] volumes, int window_size):cdef int n = prices.shape[0]cdef double total = 0.0cdef int i, jfor i in range(n - window_size + 1):total = 0.0for j in range(window_size):total += prices[i + j] * volumes[i + j]# ...订单处理逻辑return total
Redis缓存行情数据
import redis
import jsonr = redis.Redis(host='localhost', port=6379, db=0)def cache_market_data(symbol, data):r.set(f"market:{symbol}", json.dumps(data), ex=60) # 过期时间60秒def get_cached_data(symbol):data = r.get(f"market:{symbol}")return json.loads(data) if data else None
三、风险管理体系实现
3.1 动态仓位管理
仓位管理是风险控制的“调节器”,需平衡胜率、盈亏比与市场环境:
- 凯利公式:核心思想是最大化对数收益,公式推导基于伯努利试验模型。实际应用中需修正交易成本(如印花税、滑点),示例中
cost_rate
参数代表单次交易成本占本金比例,当成本过高时(如外汇EA策略的高杠杆点差),最优仓位可能从50%骤降至20%。 - ATR动态调整:平均真实波动幅度(ATR)反映市场活跃程度,20日周期ATR通常能捕捉中期波动率。当ATR突破历史均值1.5倍时(如财报公布、黑天鹅事件),主动减仓30%可避免波动放大导致的保证金不足风险,尤其适用于数字货币合约交易的逐仓模式。
凯利公式实现
def kelly_criterion(win_prob, win_loss_ratio, cost_rate=0.001):""":param win_prob: 胜率:param win_loss_ratio: 盈亏比(平均盈利/平均亏损):param cost_rate: 交易成本占比"""f = (win_prob * (win_loss_ratio + 1) - 1) / win_loss_ratioreturn max(0, f * (1 - cost_rate)) # 考虑交易成本# 示例:胜率55%,盈亏比1.5,成本0.1%
position = kelly_criterion(0.55, 1.5, 0.001)
print(f"建议仓位: {position*100:.1f}%")
ATR动态调整仓位
import pandas as pddef calculate_atr(df, period=20):high_low = df['high'] - df['low']high_close = np.abs(df['high'] - df['close'].shift())low_close = np.abs(df['low'] - df['close'].shift())tr = pd.concat([high_low, high_close, low_close], axis=1).max(axis=1)return tr.rolling(period).mean()# 当ATR超过历史均值1.5倍时减仓
current_atr = calculate_atr(df).iloc[-1]
historical_mean = calculate_atr(df).mean()
if current_atr > 1.5 * historical_mean:adjust_position(current_position * 0.7)
3.2 风险控制策略
风险控制的本质是“截断亏损,让利润奔跑”:
- 跟踪止损:通过
TrailingStop
类动态更新止损位,结合ATR确定止损距离(如3倍ATR),既保留趋势行情的盈利空间,又锁定部分利润。当价格创新高时,止损位同步上移,确保即使行情反转,也能以较高价位平仓。 - 协方差矩阵:用于衡量多策略间的风险相关性,理想组合需包含负相关策略(如趋势策略与反转策略)。PCA分析可提取主成分(如“市场因子”“流动性因子”),帮助识别组合中的冗余策略,示例中解释方差比超过80%时,可认为前两个主成分已覆盖主要风险来源。
跟踪止损实现
class TrailingStop:def __init__(self, atr_period=14, multiplier=3):self.highest_price = -np.infself.multiplier = multiplierself.atr = calculate_atr(df, atr_period)def update(self, current_price):self.highest_price = max(self.highest_price, current_price)stop_loss_price = self.highest_price - self.atr.iloc[-1] * self.multiplierreturn current_price < stop_loss_price# 使用示例
trailing_stop = TrailingStop()
for price in live_prices:if trailing_stop.update(price):print("触发止损!")exit_position()
协方差矩阵风险分散
import numpy as np
from sklearn.decomposition import PCA# 计算策略收益协方差
returns = np.array([strategy1_returns, strategy2_returns, strategy3_returns])
cov_matrix = np.cov(returns)# PCA降维分析
pca = PCA(n_components=2)
principal_components = pca.fit_transform(returns.T)
print("解释方差比:", pca.explained_variance_ratio_)
四、扩展技术栈应用
4.1 深度学习风险预测
传统波动率模型(如GARCH)难以捕捉非线性市场特征,LSTM神经网络提供新解法:
- 模型输入为30天历史波动率序列,通过门控机制记忆长期依赖关系,输出层采用sigmoid激活函数预测次日波动率是否超过阈值(如2%)。训练数据需标准化(Z-score),并按8:2划分训练集与测试集,避免未来信息泄露。实际应用中,可将预测结果作为仓位调整的触发条件(如高波动率时降低50%仓位)。
LSTM波动率预测
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense# 构建LSTM模型
model = Sequential([LSTM(50, input_shape=(30, 1)), # 30天历史数据Dense(1, activation='sigmoid') # 预测波动率是否超过阈值
])
model.compile(optimizer='adam', loss='binary_crossentropy')# 训练数据预处理
lookback = 30
X, y = [], []
for i in range(lookback, len(volatility)):X.append(volatility[i-lookback:i])y.append(1 if volatility[i] > threshold else 0)
X = np.array(X).reshape(-1, lookback, 1)
y = np.array(y)
model.fit(X, y, epochs=10)
4.2 区块链交易审计
区块链的不可篡改特性为监管合规提供技术保障:
- Solidity智能合约示例中,
Trade
结构体记录交易三要素(交易者、品种、数量),每次交易触发logTrade
函数时,数据永久上链并生成事件日志。审计人员可通过区块浏览器验证交易链,确保实盘操作与策略逻辑的一致性,满足SEC等监管机构的审计要求。
智能合约日志记录(Solidity示例)
pragma solidity ^0.8.0;contract TradeAudit {struct Trade {address trader;string symbol;uint256 amount;uint256 timestamp;}Trade[] public trades;event TradeLogged(address indexed trader, string symbol, uint256 amount);function logTrade(string memory _symbol, uint256 _amount) public {trades.push(Trade(msg.sender, _symbol, _amount, block.timestamp));emit TradeLogged(msg.sender, _symbol, _amount);}
}
五、总结
量化交易系统的落地是技术与艺术的结合,本文通过代码实现与原理剖析,构建了从模拟到实盘的完整链路:
- 安全层:API签名、权限控制、密钥管理保障交易安全;
- 效率层:并行计算、硬件加速、内存缓存提升系统性能;
- 风控层:凯利公式、ATR、协方差矩阵构建动态防护网;
- 创新层:深度学习、区块链技术应对复杂市场挑战。
实际开发中,需建立全链路监控体系:在API调用处添加重试机制(如3次HTTP500错误后暂停交易),关键函数嵌入耗时统计(time.perf_counter()
),并通过Prometheus+Grafana实时监控订单执行延迟、仓位变化率等指标。记住,完美的策略不存在,但健壮的系统能让策略在风暴中存活——这正是风险管理的终极目标。
相关文章:
基于Python的量化交易实盘部署与风险管理指南
基于Python的量化交易实盘部署与风险管理指南 一、模拟交易与参数优化 1.1 券商API接入与模拟交易 在量化交易落地前,模拟交易是策略验证的“安全沙箱”,其核心价值在于用零成本环境暴露策略缺陷。以股票市场为例,同花顺与通达信模拟盘接口…...
MySQL 入门大全:数据类型
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
WPF Datagrid 数据加载和性能
这篇文章并非讨论 WPF Datagrid 的性能数据,而只是简单介绍一下为了使其性能良好,你需要注意哪些方面。我不太想使用性能分析器来展示实际数据,而是尽可能地使用了 Stopwatch 类。这篇文章不会深入探讨处理海量数据的技术,例如分页…...
商城小程序源码介绍
今天要为大家介绍一款基于ThinkPHP、FastAdmin以及UniApp开发的商城小程序源码,这款源码在设计和功能上都有不俗的表现,非常适合想要搭建线上商城的开发者。 该源码采用了ThinkPHP作为后端框架,利用其强大的性能和灵活性,保障了系…...
【大模型】OpenManus 项目深度解析:构建通用 AI Agent的开源框架
OpenManus 项目深度解析:构建通用 AI Agent的开源框架 一、项目概述项目特点 二、项目运行方式与执行步骤(一)环境准备方法 1:使用 conda方法 2:使用 uv(推荐) (二)配置&…...
数据科学和机器学习的“看家兵器”——pandas模块 之一
目录 pandas 模块介绍 4.1 pandas 数据结构 一、课程目标 二、Series 对象介绍 三、DataFrame 对象介绍 四、Series 和 DataFrame 在具体应用中的注意事项 (一)Series 注意事项 (二)DataFrame 注意事项 五、实战案例 案例 1:学生成绩分析 案例 2:销售数据分析 案例 3:股…...
Linux服务之lvs集群与dr模式部署
目录 一.lvs相关概述 1.lvs集群的工作模式 2.lvs调度算法 3.ipvsadm工具 二.DR模式部署 一.lvs相关概述 1.lvs集群的工作模式 lvs-nat:修改请求报文的目标IP,多目标IP的DNAT lvs-dr:操纵封装新的MAC地址(直接路由)lvs-tu…...
LVS负载均衡群集和keepalive
目录 一. 集群概述 1.1 集群的定义 1.2 集群的分类 1. 高可用集群 HA 2. 高性能运输群集 HPC 3.负载均衡群集 LB 4. 分布式存储集群 二. LVS概述 2.1 LVS的定义 2.2 LVS的工作原理 2.3 LVS 的三种工作模式 2.4 LVS 三种工作模式的对比 2.5 LVS 调度算法 1. 静态…...
MCU裸机程序如何移植到RTOS?
目录 1、裸机编程 2、实时操作系统 3、移植裸机程序到RTOS的步骤 步骤1:分析裸机代码 步骤2:选择并设置RTOS环境 步骤3:设计任务架构 步骤4:实现任务间通信 步骤5:处理硬件交互 步骤6:测试和调试 …...
从入门到精通:阿里云/腾讯云服务器深度优化实践
在当今数字化浪潮中,云计算已成为企业IT基础设施的核心选择。作为国内云计算领域的两大头部厂商,阿里云与腾讯云凭借各自的技术积累和生态优势,持续吸引着不同行业用户的关注。本文将带您从基础配置到高级优化,全面掌握阿里云/腾讯…...
机器学习基础课程-5-课程实验
5.1 实验介绍 实验背景 在这个项目中,您将使用1994年美国人口普查收集的数据,选用几个监督学习算法以准确地建模被调查者的收入。然后,您将根据初步结果从中选择出最佳的候选算法,并进一步优化该算法以最好地建模这些数据。你的目…...
生成对抗网络(Generative Adversarial Networks ,GAN)
生成对抗网络是深度学习领域最具革命性的生成模型之一。 一 GAN框架 1.1组成 构造生成器(G)与判别器(D)进行动态对抗,实现数据的无监督生成。 G(造假者):接收噪声 ,…...
Linux——CMake的快速入门上手和保姆级使用介绍、一键执行shell脚本
目录 一、前言 二、CMake简介 三、CMake与其他常见的构建、编译工具的联系 四、CMake入门 1、CMake的使用注意事项 2、基本的概念和术语 3、CMake常用的预定义变量 4、CMakeLists.txt文件的基本结构 五、上手实操 1、示例 编辑 2、一个正式的工程构建 2.1基本构…...
GAN简读
Abstract 我们提出了一个通过同时训练两个模型的对抗过程来评估生成模型的新框架:一个生成模型 G G G用来捕捉数据特征,还有一个用于估计这个样本是来自训练样本还是 G G G的概率的判别模型 D D D, G G G的训练过程是最大化 D D D犯错的概率。这个框架就相当于一个minimax tw…...
Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能
Jsp技术入门指南【十四】实现基于MySQLJDBCJSP数据库验证的登录界面与登录跳转功能 前言第一步:加入驱动包与Maven第二步、创建并导入web库第三步、连接本地数据库的java代码核心代码讲解 第四步、创建数据库第五步、导入并修改JSP登录文件 前言 在之前的博客中&am…...
【漫话机器学习系列】259.神经网络参数的初始化(Initialization Of Neural Network Parameters)
神经网络参数初始化详解 在构建神经网络时,参数的初始化虽然只是一个开端步骤,但它对网络最终的训练效果和收敛速度有着至关重要的影响。本文将结合一张手绘风格图,深入浅出地讲解神经网络初始化的背景、方法及其数学依据,帮助大…...
如何设置FFmpeg实现对高分辨率视频进行转码
使用FFmpeg进行高分辨率视频转码的步骤如下:首先,确保FFmpeg支持GPU加速,通过命令ffmpeg -hwaccels检查CUDA支持。接着,下载样本视频进行测试,例如使用wget命令获取Blender基金会的样本视频。然后,使用FFmp…...
2025tg最新免费社工库机器人
中情局社工库 https://t.me/ZhongQingJuSGKBOT?start07c662145624d195aa098f0d39e6451d 小孩哥社工库 http://t.me/xiaohaigeSGK1_bot?startWGGVVrMgQiBslNE 冰墩墩个户机器人 t.me/bingdundung… 维基百科社工库 https://t.me/WikiSGKBot?start0b9d27c2e91b AI社工库…...
ps向pl传数据axi-4-lite
定义一个axi-4-lite ip,引出管脚 可以看到,ip的地址是这个 因为在定义axi-4-lite ip的时候定义了4个寄存器,其中只把第2个引出来,所以只需要往第2个写数据就可 即只有 (u32)(0x800000004) angle; 这个是有效的 这时pl就可以收到angle的值…...
scikit-learn在无监督学习算法的应用
哈喽,我是我不是小upper~ 前几天,写了一篇对scikit-learn在监督学习算法的应用详解,今天来说说关于sklearn在无监督算法方面的案例。 稍微接触过机器学习的朋友就知道,无监督学习是在没有标签的数据上进行训练的。其主要目的可能…...
聊聊JetCache的缓存构建
序 本文主要研究一下JetCache的缓存构建 invokeWithCached com/alicp/jetcache/anno/method/CacheHandler.java private static Object invokeWithCached(CacheInvokeContext context)throws Throwable {CacheInvokeConfig cic context.getCacheInvokeConfig();CachedAnnoC…...
【ios越狱包安装失败?uniapp导出ipa文件如何安装到苹果手机】苹果IOS直接安装IPA文件
问题场景: 提示:ipa是用于苹果设备安装的软件包资源 设备:iphone 13(未越狱) 安装包类型:ipa包 调试工具:hbuilderx 问题描述 提要:ios包无法安装 uniapp导出ios包无法安装 相信有小伙伴跟我一样&…...
浅析 Golang 内存管理
文章目录 浅析 Golang 内存管理栈(Stack)堆(Heap)堆 vs. 栈内存逃逸分析内存逃逸产生的原因避免内存逃逸的手段 内存泄露常见的内存泄露场景如何避免内存泄露?总结 浅析 Golang 内存管理 在 Golang 当中,堆…...
仿射变换 与 透视变换
仿射变换 与 透视变换 几种变换之间的关系 1、缩放 Rescale 1)变换矩阵 缩放变换矩阵,形为 : , 其中: 、 为 x轴 和 y轴的缩放因子,即 宽高的缩放因子 图像中的每一个像素点 (x, y),经过矩阵…...
Vue.js---嵌套的effect与effect栈
4.3嵌套的effect与effect栈 1、嵌套的effect effect是可以发生嵌套的 01 effect(function effectFn1() { 02 effect(function effectFn2() { /* ... */ }) 03 /* ... */ 04 })有这么一段代码: 01 // 原始数据 02 const data { foo: true, bar: true } 03 /…...
jQuery知识框架
一、jQuery 基础 核心概念 $ 或 jQuery:全局函数,用于选择元素或创建DOM对象。 链式调用:多数方法返回jQuery对象,支持连续操作。 文档就绪事件: $(document).ready(function() { /* 代码 */ }); // 简写 $(function…...
【Java学习笔记】hashCode方法
hashCode方法 注意:C要大写 作用:返回对象的哈希码值(可以当作是地址,真实的地址在 Java 虚拟机上),支持此方法是为了提高哈希表的性能 底层实现:实际上,由Object类定义的hashCod…...
[思维模式-37]:什么是事?什么是物?什么事物?如何通过数学的方法阐述事物?
一、基本概念 1、事(Event) “事”通常指的是人类在社会生活中的各种活动、行为、事件或情况,具有动态性和过程性,强调的是一种变化、发展或相互作用的流程。 特点 动态性:“事”往往涉及一系列的动作、变化和发展过程。例如&a…...
STM32-USART串口通信(9)
一、通信接口介绍 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统。 当STM32想要实现一些功能,但是需要外挂一些其他模块才能实现,这就需要在两个设备之间连接上一根或多跟通信线,通过通信线路发送或者接…...
【内网渗透】——NTML以及Hash Relay
【内网渗透】——NTLM以及Hash Relay 文章目录 【内网渗透】——NTLM以及Hash Relay[toc]前情提要1.NTML网络认证机制1.1NTML协议1.2NET NTMLv21.3NTML的认证方式1.4NTLM hash的生成方法: 2.PTH(pass the hash)2.1原理2.2漏洞原理2.3实验环境2.4攻击过程…...
速查 Linux 常用指令 II
目录 一、网络管理命令1. 查看和配置网络设备:ifconfig1)重启网络命令2)重启网卡命令 2. 查看与设置路由:route3. 追踪网络路由:traceroute4. 查看端口信息和使用情况1)netstat 命令2)lsof 命令…...
基于 GPUGEEK平台进行vLLM环境部署DeepSeek-R1-70B
选择 GPUGEEK 平台的原因 算力资源丰富:GPUGEEK 提供多样且高性能的 GPU 资源,像英伟达高端 GPU 。DeepSeek - R1 - 70B 模型推理计算量巨大,需要强大算力支持,该平台能满足其对计算资源的高要求,保障推理高效运行。便…...
深入理解ThingsBoard的Actor模型
1、ThingsBoard系统中定义了哪些Actor ✅ ThingsBoard Actor 创建机制与作用对照表: Actor 类型 何时创建 由谁创建 是否缓存 作用描述 SystemActor 系统启动时 DefaultActorService / ActorSystem ✅ 是 ★ ThingsBoard 平台服务级别管理器:负责创建所有的Actor AppActor...
虚幻引擎5-Unreal Engine笔记之Qt与UE中的Meta和Property
虚幻引擎5-Unreal Engine笔记之Qt与UE中的Meta和Property code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Qt与UE中的Meta和Property1.Qt 中的 Meta(元对象系统)1.1 主要功能1.2 如何实现1.2.1 例子1.2.2 访问 meta 信息 2.UE5 中的 Metaÿ…...
技术中台-核心技术介绍(微服务、云原生、DevOps等)
在企业数字化中台建设中,技术中台是支撑业务中台、数据中台及其他上层应用的底层技术基础设施,其核心目标是提供标准化、可复用的技术能力,降低业务开发门槛,提升系统稳定性与扩展性。技术中台的技术栈需覆盖从开发、运维到治理的…...
attention_weights = torch.ones_like(prompt_embedding[:, :, 0]):切片操作获取第二维度,第三维度
attention_weights = torch.ones_like(prompt_embedding[:, :, 0]):切片操作获取第1 维度,第二维度 attention_weights = torch.ones_like(prompt_embedding[:, :, 0]) 这行代码的作用是创建一个与 prompt_embedding[:, :, 0] 形状相同且所有元素都为 1 的张量,它用于初始化…...
2025年中国DevOps工具选型指南:主流平台能力横向对比
在数字化转型纵深发展的2025年,中国企业的DevOps工具选型呈现多元化态势。本文从技术架构、合规适配、生态整合三个维度,对Gitee、阿里云效(云效DevOps)、GitLab CE(中国版)三大主流平台进行客观对比分析&a…...
国产ETL数据集成软件和Informatica 相比如何
数据集成领域Informatica名号可谓无人不知无人不晓。作为国际知名的ETL工具,凭借其强大的功能和多年的市场积累,赢得了众多企业的信赖。然而,随着国内企业数字化转型的加速以及对数据安全、成本控制和本地化服务的需求日益增长,国…...
FFMPEG 与 mp4
1. FFmpeg 中的 start_time 与 time_base start_time 流的起始时间戳(单位:time_base),表示第一帧的呈现时间(Presentation Time)。通常用于同步多个流(如音频和视频)。 time_base …...
在RAG中 如何提高向量搜索的准确性?
在RAG(Retrieval-Augmented Generation)系统中,提高向量搜索的准确性需要从数据预处理、模型选择、算法优化和后处理等多个维度进行综合改进。以下是具体策略的详细分析: 一、优化数据质量与预处理 1. 数据清洗与结构化 去噪与规范化:去除停用词、拼写纠错、统一大小写和…...
Python调用SQLite及pandas相关API详解
前言 SQLite是一个轻量级的嵌入式关系数据库,它不需要独立的服务器进程,将数据存储在单一的磁盘文件中。Python内置了sqlite3模块,使得我们可以非常方便地操作SQLite数据库。同时,pandas作为Python数据分析的重要工具,…...
【Java学习笔记】finalize方法
finalize 方法 说明:实际开发中很少或者几乎不会重写finalize方法,更多的是应对面试考点 说明 (1)当对象被回收时,系统会自动调用该对象的 finalize 方法。子类可以重写该方法,做一些额外的资源释放操作&…...
MySQL之基础索引
目录 引言 1、创建索引 2、索引的原理 2、索引的类型 3、索引的使用 1.添加索引 2.删除索引 3.删除主键索引 4.修改索引 5.查询索引 引言 当一个数据库里面的数据特别多,比如800万,光是创建插入数据就要十几分钟,我们查询一条信息也…...
MCU程序加密保护(二)ID 验证法 加密与解密
STM32 微控制器内部具有一个 96 位全球唯一的 CPU ID,不可更改。开发者可利用此 ID 实现芯片绑定和程序加密,增强软件安全性。 ID 验证法就是利用这个 UID,对每颗芯片的身份进行识别和绑定,从而防止程序被复制。 实现方式…...
SparkSQL的基本使用
SparkSQL 是 Apache Spark 的一个模块,用于处理结构化数据。它提供了一个高性能、分布式的 SQL 查询引擎,可以轻松处理各种数据源,包括结构化数据、半结构化数据和非结构化数据12。 SparkSQL 的特点 易整合:SparkSQL 无缝整合了…...
QListWedget控件使用指南
QListWedget公共函数 函数签名功能描述QListWidget(QWidget *parent nullptr)构造函数,创建一个QListWidget对象,可指定父部件(默认为nullptr)。virtual ~QListWidget()虚析构函数,释放QListWidget对象及其资源。voi…...
primitive创建图像物体
本节我们学习使用entity来创建物体 我们以矩形为例,在输入矩形的四个点后运行程序 //使用entity创建矩形var rectangle viewer.entities.add({rectangle: {coordinates:Cesium.Rectangle.fromDegrees(//西边的经度90,//南边维度20,//东边经度110,//北边维度30 ),material:Ces…...
MySQL 服务器配置和管理(上)
MySQL 服务器简介 通常所说的 MySQL 服务器指的是mysqld(daemon 守护进程)程序,当运⾏mysqld后对外提供MySQL 服务,这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容,包括: • 服务器⽀持的启动选项。可以在命令⾏和…...
跨区域智能电网负荷预测:基于 PaddleFL 的创新探索
跨区域智能电网负荷预测:基于 PaddleFL 的创新探索 摘要: 本文聚焦跨区域智能电网负荷预测,提出基于 PaddleFL 框架的联邦学习方法,整合多地区智能电网数据,实现数据隐私保护下的高精度预测,为电网调度优化提供依据,推动智能电网发展。 一、引言 在当今社会,电力作为经…...
Java 重试机制详解
文章目录 1. 重试机制基础1.1 什么是重试机制1.2 重试机制的关键要素1.3 适合重试的场景2. 基础重试实现2.1 简单循环重试2.2 带延迟的重试2.3 指数退避策略2.4 添加随机抖动2.5 使用递归实现重试2.6 可重试异常过滤3. 常用重试库介绍3.1 Spring Retry3.1.1 依赖配置3.1.2 编程…...