避开Yahoo Finance反爬!用Alpha Vantage API轻松获取苹果股票10年数据(附完整Python代码)
从数据获取到模型部署构建一个面向未来的美股量化分析系统最近在尝试复现一些经典的Kaggle时间序列预测项目时很多朋友都遇到了一个共同的拦路虎数据源。那些几年前还能顺畅运行的yfinance脚本如今频繁遭遇请求限制数据获取变得异常困难。这不仅仅是技术上的小麻烦它直接关系到整个分析项目的起点是否稳固。对于量化交易初学者和数据分析师而言一个稳定、可靠的数据管道其重要性不亚于模型算法本身。今天我们不谈那些已经被“反爬”机制层层设防的免费公开接口而是转向一个更专业、更稳定的替代方案并在此基础上构建一套从数据获取、处理到LSTM模型预测的完整工作流。我们将以苹果公司AAPL的股票数据为例手把手带你搭建一个属于自己的、可扩展的金融数据分析系统。1. 构建稳健的金融数据管道告别不稳定源在数据科学和量化分析领域有一句老话垃圾进垃圾出。如果你的数据源头本身就不稳定、不完整那么后续无论构建多么精妙的模型其结论都可能是空中楼阁。过去许多教程和项目依赖雅虎财经等免费接口但随着这些平台对自动化请求的限制日益严格频繁的rate limiting和连接中断成了家常便饭。1.1 为什么选择Alpha Vantage作为核心数据源Alpha Vantage提供了一个相对友好且功能强大的免费层API。与一些完全开放的接口相比它通过API密钥进行管理这意味着请求更可控服务也相对稳定。其核心优势在于结构化数据返回的数据是标准的JSON或Pandas DataFrame格式包含开盘价、最高价、最低价、收盘价、成交量等关键字段无需复杂的HTML解析。历史数据完整免费层通常提供长达20年的日线历史数据对于大多数回溯测试和模型训练来说已经足够。明确的频率限制虽然免费API有每分钟/每日的调用次数限制但规则清晰便于我们在代码中设计合理的延时策略来规避。丰富的资产类别不仅覆盖美股还包括外汇、加密货币和大宗商品等为策略的多元化提供了可能。当然它也有其局限性。免费API不提供调整后收盘价这对于长期趋势分析来说是一个需要考虑的因素。公司行动如分红、拆股会影响股价的连续性调整后价格则消除了这些非市场因素的影响使得不同时期的价格更具可比性。对于学习和小型项目我们可以暂时使用收盘价但对于严肃的策略回测寻找或计算调整后价格是必要的一步。1.2 实战自动化获取与保存多只股票数据下面我们构建一个Python脚本用于批量获取并保存多只科技股的历史数据。这个脚本的核心是处理API限速并确保数据的持久化存储。首先你需要前往Alpha Vantage官网注册一个免费账户获取你的API密钥。# data_pipeline.py import os import time from datetime import datetime, timedelta import pandas as pd from alpha_vantage.timeseries import TimeSeries # 配置部分 API_KEY YOUR_ALPHA_VANTAGE_API_KEY # 请替换为你的实际密钥 SYMBOL_LIST [AAPL, MSFT, GOOGL, AMZN] # 目标股票代码列表 DATA_DIR ./stock_data # 数据保存目录 YEARS_OF_HISTORY 10 # 获取多少年的历史数据 # 创建数据目录 os.makedirs(DATA_DIR, exist_okTrue) # 初始化TimeSeries客户端 ts TimeSeries(keyAPI_KEY, output_formatpandas, indexing_typedate) print(f开始获取近{YEARS_OF_HISTORY}年股票数据...) start_date_cutoff datetime.now() - timedelta(days365 * YEARS_OF_HISTORY) for symbol in SYMBOL_LIST: file_path os.path.join(DATA_DIR, f{symbol}_daily.csv) # 检查文件是否已存在避免重复下载 if os.path.exists(file_path): print(f文件已存在跳过 {symbol}) continue print(f正在获取 {symbol} 的数据...) try: # 获取全量日线数据 data, meta_data ts.get_daily(symbolsymbol, outputsizefull) # 确保索引是日期时间类型并按日期排序 data.index pd.to_datetime(data.index) data data.sort_index() # 筛选指定年份之后的数据 data data[data.index start_date_cutoff] # 重命名列使其更易读 data.rename(columns{ 1. open: Open, 2. high: High, 3. low: Low, 4. close: Close, 5. volume: Volume }, inplaceTrue) # 保存到CSV data.to_csv(file_path) print(f成功保存 {symbol} 数据至 {file_path}共 {len(data)} 条记录。) except Exception as e: print(f获取 {symbol} 时出错: {e}) # 严格遵守API调用频率限制免费版建议间隔至少12秒 time.sleep(15) print(所有股票数据获取完成)注意将YOUR_ALPHA_VANTAGE_API_KEY替换为你自己的密钥。time.sleep(15)是遵守免费API每分钟5次调用限制的安全做法。如果你的需求更大可以考虑购买其付费套餐。运行这个脚本后你的./stock_data目录下会生成类似AAPL_daily.csv的文件。用Pandas打开看一眼数据结构清晰包含日期索引和OHLCV数据为下一步分析打下了坚实基础。2. 数据预处理为时间序列模型准备“食材”拿到原始数据只是第一步。金融时间序列数据通常存在噪声、非平稳性等问题直接喂给模型效果往往不佳。预处理的目标是将其转化为模型易于学习和理解的格式。2.1 关键预处理步骤解析我们以苹果公司AAPL的数据为例演示完整的预处理流程。# data_preprocessing.py import pandas as pd import numpy as np from sklearn.preprocessing import MinMaxScaler def load_and_preprocess(symbol, data_dir./stock_data): 加载并预处理单只股票数据 file_path f{data_dir}/{symbol}_daily.csv df pd.read_csv(file_path, index_col0, parse_datesTrue) # 1. 确保数据按日期排序 df df.sort_index() # 2. 选择我们关心的特征收盘价 # 注意这里使用的是未调整的收盘价(Close)。对于长期分析应考虑寻找调整后收盘价数据源。 df df[[Close]].copy() # 3. 处理缺失值金融数据周末休市但我们的CSV是日线通常无缺失 if df[Close].isnull().any(): # 前向填充或插值 df[Close].fillna(methodffill, inplaceTrue) # 4. 可视化原始数据可选但建议 import matplotlib.pyplot as plt plt.figure(figsize(12, 6)) plt.plot(df.index, df[Close], labelf{symbol} Close Price) plt.title(f{symbol} Historical Closing Price) plt.xlabel(Date) plt.ylabel(Price (USD)) plt.legend() plt.grid(True) plt.tight_layout() plt.savefig(f{symbol}_raw_price.png, dpi150) plt.close() return df # 执行预处理 symbol AAPL df_aapl load_and_preprocess(symbol) print(f数据时间范围: {df_aapl.index.min()} 到 {df_aapl.index.max()}) print(f数据总条数: {len(df_aapl)})接下来是最关键的一步为LSTM模型创建监督学习数据集。LSTM是循环神经网络的一种擅长处理序列数据。我们需要将时间序列数据构造成(样本数, 时间步长, 特征数)的格式。def create_sequences(data, sequence_length60): 将时间序列数据转换为LSTM所需的序列样本。 参数: data: 一维数组例如收盘价序列。 sequence_length: 用过去多少天的数据来预测下一天。 返回: X: 特征序列形状为 (n_samples, sequence_length, 1) y: 目标值形状为 (n_samples,) X, y [], [] for i in range(sequence_length, len(data)): X.append(data[i-sequence_length:i]) # 过去sequence_length天的数据 y.append(data[i]) # 第i天的数据我们要预测的 return np.array(X), np.array(y) # 数据归一化将价格缩放到0-1之间加速模型收敛 scaler MinMaxScaler(feature_range(0, 1)) scaled_prices scaler.fit_transform(df_aapl[[Close]]) # 创建序列 SEQ_LEN 60 # 使用过去60天的数据 X, y create_sequences(scaled_prices, SEQ_LEN) # 划分训练集和测试集 (例如95%训练5%测试) split_idx int(len(X) * 0.95) X_train, X_test X[:split_idx], X[split_idx:] y_train, y_test y[:split_idx], y[split_idx:] print(f训练集样本数: {X_train.shape[0]}) print(f测试集样本数: {X_test.shape[0]}) print(f每个样本的形状 (时间步长, 特征): {X_train.shape[1:]})至此数据已经准备好了。我们有了形状为(n_samples, 60, 1)的训练特征X_train和对应的目标值y_train。这个“60天预测下一天”的设定是时间序列预测中一个常见的滑动窗口方法。3. 构建与训练LSTM预测模型有了高质量的数据我们就可以构建模型了。这里我们使用PyTorch框架来实现一个多层LSTM网络。PyTorch的动态图机制使得模型构建和调试非常灵活。3.1 定义LSTM网络结构我们的模型将是一个相对标准的回归模型输入过去60天的价格序列输出对第61天价格的预测。# model_definition.py import torch import torch.nn as nn class StockPriceLSTM(nn.Module): def __init__(self, input_size1, hidden_size64, num_layers2, output_size1): super(StockPriceLSTM, self).__init__() self.hidden_size hidden_size self.num_layers num_layers # LSTM层 self.lstm nn.LSTM(input_size, hidden_size, num_layers, batch_firstTrue, dropout0.2) # Dropout层防止过拟合 self.dropout nn.Dropout(0.3) # 全连接输出层 self.linear nn.Linear(hidden_size, output_size) def forward(self, x): # 初始化隐藏状态和细胞状态 h0 torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(x.device) c0 torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(x.device) # LSTM前向传播 out, _ self.lstm(x, (h0, c0)) # 我们只取最后一个时间步的输出 out out[:, -1, :] # 应用Dropout out self.dropout(out) # 全连接层得到最终预测 out self.linear(out) return out这个模型结构有几个可调的超参数hidden_size: LSTM单元隐藏状态的维度决定了模型的容量。num_layers: 堆叠的LSTM层数增加深度可能捕捉更复杂的模式但也更容易过拟合。dropout: 随机丢弃部分神经元是防止模型在训练集上过拟合的有效正则化手段。3.2 模型训练与评估接下来我们将数据转换为PyTorch张量并开始训练循环。# model_training.py import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset # 检查GPU是否可用 device torch.device(cuda if torch.cuda.is_available() else cpu) print(f使用设备: {device}) # 将数据转换为PyTorch张量并移至设备 X_train_tensor torch.FloatTensor(X_train).to(device) y_train_tensor torch.FloatTensor(y_train).to(device) X_test_tensor torch.FloatTensor(X_test).to(device) y_test_tensor torch.FloatTensor(y_test).to(device) # 创建DataLoader方便批量训练 train_dataset TensorDataset(X_train_tensor, y_train_tensor) train_loader DataLoader(train_dataset, batch_size32, shuffleTrue) # 初始化模型、损失函数和优化器 model StockPriceLSTM().to(device) criterion nn.MSELoss() # 均方误差损失适用于回归问题 optimizer optim.Adam(model.parameters(), lr0.001) # 训练循环 num_epochs 200 train_losses [] test_losses [] for epoch in range(num_epochs): model.train() epoch_train_loss 0 for batch_X, batch_y in train_loader: optimizer.zero_grad() outputs model(batch_X) loss criterion(outputs, batch_y) loss.backward() # 梯度裁剪防止梯度爆炸在RNN中常见 torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm1.0) optimizer.step() epoch_train_loss loss.item() avg_train_loss epoch_train_loss / len(train_loader) train_losses.append(avg_train_loss) # 在测试集上评估 model.eval() with torch.no_grad(): test_outputs model(X_test_tensor) test_loss criterion(test_outputs, y_test_tensor) test_losses.append(test_loss.item()) if (epoch 1) % 20 0: print(fEpoch [{epoch1}/{num_epochs}], Train Loss: {avg_train_loss:.6f}, Test Loss: {test_loss.item():.6f}) print(训练完成)在训练过程中观察训练损失和测试损失的变化至关重要。理想情况下两者应同步下降并逐渐趋于平稳。如果训练损失持续下降而测试损失开始上升则是过拟合的典型信号此时需要增加Dropout比率、获取更多数据或使用更早停止的策略。4. 预测、可视化与系统化思考模型训练完成后我们不仅要看损失函数更要看它在实际价格曲线上的预测表现。4.1 生成预测并反归一化# prediction_and_visualization.py import matplotlib.pyplot as plt # 使用模型进行预测 model.eval() with torch.no_grad(): train_predict model(X_train_tensor).cpu().numpy() test_predict model(X_test_tensor).cpu().numpy() # 将归一化的预测值转换回原始价格区间 train_predict scaler.inverse_transform(train_predict) y_train_actual scaler.inverse_transform(y_train.reshape(-1, 1)) test_predict scaler.inverse_transform(test_predict) y_test_actual scaler.inverse_transform(y_test.reshape(-1, 1)) # 为预测值创建对应的时间索引 # 注意由于我们使用滑动窗口预测值的时间点比原始数据晚了SEQ_LEN天 train_predict_index df_aapl.index[SEQ_LEN:SEQ_LEN len(train_predict)] test_predict_index df_aapl.index[SEQ_LEN len(train_predict): SEQ_LEN len(train_predict) len(test_predict)] # 绘制结果 plt.figure(figsize(16, 8)) plt.plot(df_aapl.index, df_aapl[Close], labelActual Price, alpha0.7, colorgray) plt.plot(train_predict_index, train_predict, labelTrain Prediction, linewidth2) plt.plot(test_predict_index, test_predict, labelTest Prediction, linewidth2, colorred) plt.title(f{symbol} Stock Price Prediction using LSTM) plt.xlabel(Date) plt.ylabel(Close Price (USD)) plt.legend() plt.grid(True, alpha0.3) plt.tight_layout() plt.savefig(f{symbol}_lstm_prediction.png, dpi150) plt.show()这张图能直观地告诉我们模型学到了什么。如果测试集红色部分的预测曲线能大致跟随真实价格的波动趋势说明模型具备一定的泛化能力。但请务必清醒股价预测是金融领域最难的挑战之一受无数不可预测因素影响。我们的LSTM模型捕捉的更多是历史数据中的局部模式和趋势绝不能将其视为稳赚不赔的交易信号。4.2 超越单步预测尝试序列到序列Seq2Seq模型上面的模型是“单步预测”即用过去N天预测下一天。但有时我们想直接预测未来多天例如未来30天的走势。这就需要用到Seq2Seq结构的LSTM。其核心思想是使用一个编码器EncoderLSTM将输入序列压缩为一个上下文向量再用一个解码器DecoderLSTM根据该向量一步步生成输出序列。在股价预测中解码器每一步的输入可以是上一步的预测值自回归逐步推演出未来序列。# 简化的Seq2Seq模型思路代码框架 class Seq2SeqLSTM(nn.Module): def __init__(self, input_size1, hidden_size128, num_layers2, output_steps30): super().__init__() self.encoder nn.LSTM(input_size, hidden_size, num_layers, batch_firstTrue) self.decoder nn.LSTM(input_size, hidden_size, num_layers, batch_firstTrue) self.fc nn.Linear(hidden_size, 1) self.output_steps output_steps def forward(self, src): # src: [batch, seq_len, features] batch_size src.shape[0] # 编码 _, (hidden, cell) self.encoder(src) # 解码器初始输入例如源序列的最后一个值 decoder_input src[:, -1:, :] outputs [] for _ in range(self.output_steps): out, (hidden, cell) self.decoder(decoder_input, (hidden, cell)) pred self.fc(out[:, -1, :]) outputs.append(pred.unsqueeze(1)) # 将本次预测作为下一次解码的输入自回归 decoder_input pred.unsqueeze(1) return torch.cat(outputs, dim1)实现并训练Seq2Seq模型比单步预测更复杂需要精心设计损失函数如对输出序列的每个点计算损失和训练策略。但它能提供一个对未来一段时间走势的整体展望在场景分析中可能更有用。4.3 构建一个可维护的系统最后让我们跳出单次脚本的思维思考如何将这一切系统化。一个健壮的量化分析系统应该包含以下模块模块功能工具/技术建议数据获取层定时、稳定地从Alpha Vantage等API获取数据处理错误和重试。schedule库定时任务retrying库处理重试将数据存入SQLite或MinIO。数据存储层结构化存储原始数据和清洗后的数据便于快速查询和回溯。使用时序数据库如InfluxDB或关系型数据库如PostgreSQL。特征工程层计算技术指标RSI, MACD, 布林带等、波动率、移动平均线等衍生特征。使用ta(Technical Analysis)库或pandas自行计算。模型训练层组织训练代码管理超参数实验保存最佳模型。使用MLflow或Weights Biases跟踪实验用torch.save保存模型状态。预测服务层将训练好的模型封装为API接收新数据并返回预测结果。使用FastAPI或Flask构建轻量级API服务。监控与警报监控数据管道是否中断、模型预测是否出现大幅偏差概念漂移。使用Grafana看板结合邮件或Slack警报。例如一个简单的模型服务化脚本可能长这样# app.py (FastAPI示例) from fastapi import FastAPI import torch import numpy as np from pydantic import BaseModel from model_definition import StockPriceLSTM # 导入之前定义的模型 from data_preprocessing import scaler # 导入之前拟合好的归一化器 app FastAPI() model StockPriceLSTM() model.load_state_dict(torch.load(best_model.pth)) model.eval() class PredictionRequest(BaseModel): past_60_days_prices: list[float] # 过去60天的收盘价列表 app.post(/predict/) def predict_next_price(request: PredictionRequest): # 1. 预处理输入 prices_array np.array(request.past_60_days_prices).reshape(-1, 1) scaled_prices scaler.transform(prices_array) input_tensor torch.FloatTensor(scaled_prices).unsqueeze(0) # 增加batch维度 # 2. 预测 with torch.no_grad(): prediction_scaled model(input_tensor).numpy() # 3. 反归一化 next_price scaler.inverse_transform(prediction_scaled.reshape(-1, 1))[0, 0] return {predicted_next_close_price: round(float(next_price), 2)}这样一来你的前端或其他系统就可以通过HTTP请求轻松获取模型的预测结果整个分析流程就从一次性的脚本升级成了一个可重复使用、可扩展的微服务。走完这一整套流程你收获的不仅仅是一个能预测股价的LSTM模型更是一套应对金融数据获取挑战的工程化解决方案和系统化思维。从被动的“爬虫-反爬”对抗转向主动利用稳定的商业API从零散的Jupyter Notebook转向模块化、可维护的代码库。这才是应对快速变化的技术环境时真正有价值的能力提升。在实际项目中我通常会为数据管道设置独立的日志和监控确保任何一环出错都能第一时间知晓而不是等到模型训练失败时才回头检查。金融数据瞬息万变系统的可靠性永远是第一位的。

相关新闻

显示面板工程师必看:HDMI 1.4标准下1080p60的PCLK计算与VESA时序详解

显示面板工程师必看:HDMI 1.4标准下1080p60的PCLK计算与VESA时序详解

显示面板工程师必看:HDMI 1.4标准下1080p60的PCLK计算与VESA时序详解 在显示面板与驱动开发的世界里,像素时钟(PCLK)就像整个系统的心跳,每一次跳动都精确地指挥着数百万个像素的亮灭与色彩。对于从事LCD或OLED面板设计…

2026/7/7 1:04:45 阅读更多 →
DLSS 4全面升级:从光流加速到Transformer模型,一文看懂英伟达AI渲染进化史

DLSS 4全面升级:从光流加速到Transformer模型,一文看懂英伟达AI渲染进化史

DLSS 4全面升级:从光流加速到Transformer模型,一文看懂英伟达AI渲染进化史 如果你是一位游戏玩家,或者从事图形内容创作,那么过去几年里,一定对屏幕上那些由AI“无中生有”的像素感到过惊讶。从最初模糊的猜测&#xf…

2026/7/7 15:25:27 阅读更多 →
MATLAB实战:用Arnold变换给图片加个‘猫脸’特效(附完整加密解密代码)

MATLAB实战:用Arnold变换给图片加个‘猫脸’特效(附完整加密解密代码)

MATLAB实战:用Arnold变换给图片加个‘猫脸’特效(附完整加密解密代码) 如果你玩过拼图,或者小时候喜欢把照片剪碎了再拼回去,那你大概能理解图像置乱是怎么回事。不过,今天我们要聊的可不是手工活&#xff…

2026/7/5 1:21:11 阅读更多 →

最新新闻

工业级EEPROM与MCU的可靠数据存储方案

工业级EEPROM与MCU的可靠数据存储方案

1. 项目背景与核心需求在工业控制和嵌入式系统领域,数据存储的可靠性直接关系到整个系统的稳定性。M24256E这颗EEPROM芯片和TM4C1299NCZAD微控制器的组合,恰好能满足严苛环境下的数据持久化需求。我最近在一个风力发电监控项目中采用了这套方案&#xff…

2026/7/7 16:43:50 阅读更多 →
开源鸿蒙 PC 高校师资培训暨鸿蒙 PC 俱乐部启动|全国高校正式招募

开源鸿蒙 PC 高校师资培训暨鸿蒙 PC 俱乐部启动|全国高校正式招募

2024 年华为开源鸿蒙 PC 版本正式发布,国产独立桌面操作系统迎来全新格局!目前全国多数高校尚未开设鸿蒙 PC 相关课程,专业师资极度稀缺,行业缺口巨大。 全国高校开源鸿蒙 PC 师资公益培训重磅启动!本次培训面向全国高…

2026/7/7 16:43:50 阅读更多 →
Kruskal-Wallis 检验 4 大常见误区:从假设条件到事后检验的完整避坑指南

Kruskal-Wallis 检验 4 大常见误区:从假设条件到事后检验的完整避坑指南

Kruskal-Wallis 检验实战避坑指南:从中位数误解到事后检验的深度解析当你面对三组或更多非正态分布数据时,Kruskal-Wallis检验往往是首选的统计工具。但许多分析师在使用过程中,常常陷入一些看似简单却影响深远的误区。本文将带你深入剖析这些…

2026/7/7 16:43:50 阅读更多 →
告别限速烦恼:BaiduPCS-Web百度网盘高速下载终极指南

告别限速烦恼:BaiduPCS-Web百度网盘高速下载终极指南

告别限速烦恼:BaiduPCS-Web百度网盘高速下载终极指南 【免费下载链接】baidupcs-web 项目地址: https://gitcode.com/gh_mirrors/ba/baidupcs-web 还在为百度网盘下载速度慢如蜗牛而烦恼吗?当你急需下载重要文件,却发现进度条几乎不动…

2026/7/7 16:43:50 阅读更多 →
如何免费使用这款强大的AI图像增强工具:Real-ESRGAN-ncnn-vulkan终极完整指南

如何免费使用这款强大的AI图像增强工具:Real-ESRGAN-ncnn-vulkan终极完整指南

如何免费使用这款强大的AI图像增强工具:Real-ESRGAN-ncnn-vulkan终极完整指南 【免费下载链接】Real-ESRGAN-ncnn-vulkan NCNN implementation of Real-ESRGAN. Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration. 项目地址: h…

2026/7/7 16:37:49 阅读更多 →
使用 DevEco Studio 配置 Flutter 鸿蒙签名

使用 DevEco Studio 配置 Flutter 鸿蒙签名

签名是鸿蒙应用从开发到发布绕不开的一环。本文以 E-Brufen 的真实签名为例,详解完整的证书配置流程。 一、为什么需要签名? HarmonyOS 要求所有 HAP 包必须经过数字签名才能安装运行。签名体系包含四个关键文件: 文件扩展名用途密钥库.p12…

2026/7/7 16:37:49 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻