Python与Java实现股票历史分时数据BOLL指标计算全攻略
做了这么多年技术我从一开始在日线级别上折腾均线和MACD到后来转向日内高频的布林带策略回测有一个很深的感触股票历史分时BOLL数据的获取是很多人量化入门时绕不过去的第一道坎。市面上讲BOLL计算的文章很多讲Python或Java单语言调接口的教程也不少但真正把“历史分时数据怎么拿”“两种主流语言怎么写”“拿到之后怎么算BOLL才算靠谱”串成一条完整链路的并不多。这篇文章就把我自己实际做过的方案完整拆开。核心围绕一个主题通过股票数据接口获取股票历史分时数据然后在Python、Java两种语言里分别实现BOLL指标计算并给出可直接参考的实例代码。适合正在做量化研究、或者想从日线级别往日内级别深挖的程序员阅读。我会把接口选型、数据清洗、指标计算的细节和踩坑记录全部放出来尽量让一个刚接触的人也能照着手写一遍。1. 研究历史分时BOLL之前先想明白这三个问题1.1 日线BOLL掩盖了日内波动节奏传统的布林带分析基本都在日线上做。中线是N日收盘价的移动平均上下轨是中线加减两倍标准差。这种做法在判断中期趋势时有它的价值但有个天然缺陷日内价格的波动节奏被平均掉了。举个例子一只股票日线收盘价平稳但当天早盘急拉、尾盘跳水日内其实走了两波极端的行情。日线BOLL完全反映不出这种变化。可很多短线策略的进出场点恰恰发生在分时级别比如开盘后的量价异动、盘中突破布林上轨瞬间的动能。想要捕捉这些信号就必须把数据粒度降到分钟级。历史分时BOLL做的事情很简单把日线级别的布林带计算逻辑套到每一天的分时价格序列上。这样每一分钟都能得到一个动态的中轨和上下轨策略可以在盘中实时判断股价处于什么位置也能在回测里模拟“假如我在上轨突破时买入会怎样”这类场景。1.2 分时窗口要按交易机制而不是按K线根数这里有个新手非常容易搞混的点日线BOLL的N通常取20因为20个交易日约等于一个月代表中期持仓周期。但分时BOLL的N不能随手取20得先想明白你想捕捉的是哪个级别的波动。一天分时数据如果是一分钟粒度大概有240根K线A股上午2小时、下午2小时4小时交易时间。如果N取20对应的就是20分钟级别的波动能反映盘中的短周期动能如果N取60对应的是一小时级别更偏向日内趋势。我在实际测试中常用的是场景窗口N倍数K效果日内短线超卖反弹202.0对5-15分钟级别的波动敏感日内波段跟踪602.0过滤早盘分时杂音偏趋势开盘剧烈波动筛选101.5收窄通道快速捕捉突破这个参数没有绝对标准。重点是逻辑自洽你定的N必须对应真实的时间跨度而不是随便抄一个日线的参数。1.3 历史分时的数据粒度比想象中更关键很多人在最初做的时候想着“先拿一天的数据试试看”。但真正进入回测阶段就会发现历史分时数据是按交易日组织的一天的粒度是1分钟还是5分钟直接决定后续计算BOLL的精度。1分钟数据一天约240条5分钟数据一天约48条。BOLL本身是移动窗口计算数据点越密集上下轨越平滑越连续。但也别急着觉得“1分钟最好”数据粒度越细接口请求压力和存储成本越大而且噪声也越明显。我的做法是先确定策略的最低持仓周期如果持仓周期在30分钟以上5分钟分时足够如果是T0级别的日内交易比如ETF、可转债股票目前是T1才考虑1分钟。想清楚这三点之后再去看数据接口和代码实现思路会顺很多。2. 数据从哪来接口选型与返回结构解析2.1 选接口先看三样东西字段完整性、限频策略、历史深度市面上的股票数据接口很多形态也各不相同。有需要付费申请的有社区维护的免费接口也有券商内部提供给量化系统的数据通道。不管哪一种拿到手之后第一件事就是确认三件事。第一字段是否含时间戳、价格、成交量。分时BOLL计算最少需要时间字段和价格字段。如果你还想做成交量加权的布林带很多进阶策略会这么玩那成交量字段也必须有。有些接口只返回5秒或1分钟收盘价没有成交量这种拿来做价格通道可以做量价配合就废了。第二限频是多少。历史分时数据有一个特点它是“按天切片的”。一次接口请求只能拿某一天的完整分时数据要拿一个月就得请求二十多次。如果接口限频是每分钟10次那循环请求时就得控制节奏否则很容易被临时封禁。这一点在写代码前必须先确认否则你写再好看的代码也会在拉数环节卡死。第三能回溯到多远。有些接口只有最近5个交易日的分时数据有些能到三年甚至更久。如果你做的是长周期回测、想覆盖牛熊两个阶段历史深度不够的话后面只能干瞪眼。选型时优先看这个指标。这里不推荐具体付费产品但接口返回的数据清洗逻辑是通用的。下面我以一个模拟的样例接口来演示接口地址和数据格式仿照常见数据服务商的设计{ code: 000001.SZ, date: 2024-01-15, data: [ {time: 09:31, price: 9.75, volume: 12345}, {time: 09:32, price: 9.76, volume: 9832} ] }在实际项目里你需要把接口地址、请求参数、鉴权方式换成你自己的。为了演示代码逻辑我统一用这个结构做解析。2.2 历史分时的两种返回形态与统一封装接触多了会发现历史分时接口的返回形态大致有两种。一种是上面这种“单日单票”模式每次请求返回指定股票、指定交易日全天的分时切片。另一种是“多日批量”模式一次请求返回某只股票近N天的全部分钟数据内部用date字段做分区。前者灵活、自由控制日期范围但请求次数多后者效率高但很多免费接口不支持长跨度批量拉取。我建议做一层统一的数据访问封装不管底层接口什么形态对外都暴露一个简洁的方法def fetch_minute_bars(symbol: str, start_date: str, end_date: str) - list: 返回按时间升序排列的分钟线列表每个元素含 date/time/price/volume pass这样做有一个直接好处后续换数据源的时候只改这个函数内部实现BOLL计算和策略逻辑完全不用动。很多人在项目一开始就跳过这层抽象结果中途想换一个字段更全的接口改动量堪比重写。3. Python实例从拉取分时数据到BOLL计算的完整链路3.1 环境准备只用三个库Python可以说是做量化研究最顺手的语言了生态里pandas和numpy几乎是标配。我的环境是Python 3.10依赖库就三个requests请求接口、pandas数据处理、numpy数学计算。pip install requests pandas numpy如果你本地还没有Python环境建议直接去官网下载安装包安装时勾选“Add Python to PATH”这样在终端里就能直接跑命令。装好之后验证一下版本python --version3.2 按交易日逐个拉取分时切片核心逻辑不复杂遍历交易日列表每次请求一天的数据组装成一个大列表。注意这里有一个实操细节如果接口限频严格每次请求之间最好加一个小的sleep比如0.2秒到0.5秒。不要觉得这是浪费时间被限频后重试的代价远高于主动等待。import time import requests import pandas as pd BASE_URL https://api.example-stock.com/v1/minute # 替换为实际接口地址 def fetch_daily_minutes(symbol: str, date: str) - pd.DataFrame: 拉取单日分时数据返回DataFrame列: time, price, volume params { symbol: symbol, date: date, interval: 1 # 1分钟粒度 } # 实际接入时需要在headers里带上鉴权信息比如token resp requests.get(BASE_URL, paramsparams, timeout10) resp.raise_for_status() payload resp.json() rows payload.get(data, []) return pd.DataFrame(rows) def fetch_history_minutes(symbol: str, dates: list) - pd.DataFrame: 遍历多个交易日组装成完整分时DataFrame frames [] for dt in dates: df fetch_daily_minutes(symbol, dt) if df is not None and not df.empty: df[date] dt frames.append(df) time.sleep(0.3) # 限频保护 return pd.concat(frames, ignore_indexTrue)这里有个小坑需要提醒不同接口返回的时间字段格式可能不一样。有的时区直接用字符串09:31有的返回Unix毫秒时间戳还有的带日期时间组合2024-01-15 09:31:00。我习惯统一成字符串时间再排序避免后续计算时因为类型不匹配报错。3.3 用rolling窗口正确计算布林带拿到分时数据后BOLL计算在pandas里非常简洁。核心是rolling窗口函数。但需要特别留意标准差的分母import numpy as np def calc_boll(df: pd.DataFrame, n: int 20, k: float 2.0) - pd.DataFrame: 计算分时BOLL指标 df必须包含price列且按时间升序排列 返回的DataFrame新增 mid/upper/lower 三列 result df.copy() result[mid] result[price].rolling(windown, min_periodsn).mean() # ddof0 表示除以N和大多数行情软件算法一致 result[std] result[price].rolling(windown, min_periodsn).std(ddof0) result[upper] result[mid] k * result[std] result[lower] result[mid] - k * result[std] return result关于ddof0这个参数我特别说明一下。统计学里的样本标准差通常用ddof1即分母是N-1。但国内主流行情软件计算BOLL时用的都是总体标准差也就是除以N。我做过了对比验证如果这里用了ddof1计算出的上下轨会和行情软件有肉眼可见的偏差。所以如果你希望你的计算结果和行情软件对得上必须用ddof0。3.4 串联主流程完整可运行代码把上面的函数串起来配合一个简单的交易日列表整个流程就很清晰了def main(): symbol 000001.SZ # 实际项目中交易日列表可以用交易日历接口生成也可以交易日历手工维护 dates [2024-01-10, 2024-01-11, 2024-01-12] # 第一步拉数 df fetch_history_minutes(symbol, dates) if df.empty: print(没有拉到任何数据检查接口参数) return # 第二步排序去重防止接口重复返回同一条数据 df df.sort_values([date, time]).drop_duplicates(subset[date, time]) # 第三步计算BOLL df calc_boll(df, n20, k2.0) # 第四步输出结果检查 print(df[[date, time, price, mid, upper, lower]].tail(10)) # 第五步落盘方便后续回测直接读取 df.to_csv(minute_boll_000001.csv, indexFalse, encodingutf-8-sig) if __name__ __main__: main()这里我用了5步拉取、清洗、计算、检查、落盘。很多新手写完计算就直接拿去用省略了排序去重这一步结果发现BOLL曲线在一天结束到第二天开始之间有“跳变”。因为跨日之后窗口里的价格换个了日期维度这是正常的但如果数据里有重复行或者乱序时间计算出的mid值会错得非常隐蔽。运行完上面代码你会得到一个包含date、time、price、mid、upper、lower列的CSV文件。后续做策略回测时每次判断“当前分时价格是否突破上轨”直接读取这几列做比较就行。4. Java实例面向工程化场景的实现思路4.1 从研究到生产Java的定位不一样可能有读者会问既然Python已经写得那么顺畅了为什么还要用Java再实现一遍这个问题我每次在项目评审里都会被问到。真实原因很务实Python适合做研究和策略验证Java适合做交易系统和定时任务。在实盘环境中Java的强类型约束、成熟的线程池体系、稳定的内存管理能大大降低长时间运行时的隐性风险。而历史分时数据的定时拉取、每日盘后批量计算BOLL、关系型数据库存储这一整套数据工程链路用Java来做我更踏实。所以这里的Java代码不是把Python翻译一遍而是按照“数据链路服务”的标准来写定阅数据对象、封装HTTP请求、计算指标、批量入库。4.2 数据对象定义与接口调用封装Java生态里我用的组合是JDK自带的java.net.http.HttpClient做HTTP请求配合Jackson做JSON解析。Maven依赖只需要一个dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-databind/artifactId version2.15.2/version /dependency先定义分时数据对象public class MinuteBar { private String time; // 09:31 private double price; // 当前分钟收盘价 private long volume; // 当前分钟成交量 public MinuteBar() {} public MinuteBar(String time, double price, long volume) { this.time time; this.price price; this.volume volume; } public String getTime() { return time; } public void setTime(String time) { this.time time; } public double getPrice() { return price; } public void setPrice(double price) { this.price price; } public long getVolume() { return volume; } public void setVolume(long volume) { this.volume volume; } }然后封装请求方法import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; import java.util.ArrayList; import java.util.List; public class StockDataClient { private static final String BASE_URL https://api.example-stock.com/v1/minute; private final HttpClient httpClient HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build(); private final ObjectMapper mapper new ObjectMapper(); public ListMinuteBar fetchDailyMinutes(String symbol, String date) throws Exception { String url BASE_URL ?symbol symbol date date interval1; HttpRequest request HttpRequest.newBuilder() .uri(URI.create(url)) .timeout(Duration.ofSeconds(10)) .header(Authorization, Bearer YOUR_TOKEN) // 替换为实际鉴权 .GET() .build(); HttpResponseString response httpClient.send(request, HttpResponse.BodyHandlers.ofString()); if (response.statusCode() ! 200) { throw new RuntimeException(接口请求失败状态码: response.statusCode()); } JsonNode root mapper.readTree(response.body()); JsonNode dataNode root.get(data); ListMinuteBar bars new ArrayList(); if (dataNode ! null dataNode.isArray()) { for (JsonNode node : dataNode) { MinuteBar bar new MinuteBar( node.get(time).asText(), node.get(price).asDouble(), node.get(volume).asLong() ); bars.add(bar); } } return bars; } }这段代码里的关键点在于解析JSON时如果字段缺失会直接抛异常而不是静默给默认值。在数据链路这种场景里快速失败比返回脏数据好处理得多。4.3 布林带计算与主流程串联分时BOLL在Java里的计算逻辑和Python完全一致只是手写均值、标准差import java.util.List; public class BollCalculator { public static BollResult calcBoll(ListMinuteBar bars, int n, double k) { int size bars.size(); if (size n) { throw new IllegalArgumentException(数据量不足无法计算窗口为 n 的BOLL); } // 取最近n根分时 ListMinuteBar window bars.subList(size - n, size); // 计算中轨均值 double sum 0.0; for (MinuteBar bar : window) { sum bar.getPrice(); } double mid sum / n; // 计算标准差除以N与行情软件一致 double varianceSum 0.0; for (MinuteBar bar : window) { double diff bar.getPrice() - mid; varianceSum diff * diff; } double std Math.sqrt(varianceSum / n); return new BollResult(mid, upperMid(mid, std, k), lower(mid, std, k)); } private static double upperMid(double mid, double std, double k) { return mid k * std; } private static double lower(double mid, double std, double k) { return mid - k * std; } public record BollResult(double mid, double upper, double lower) {} }主流程则是模拟一个每日定时任务import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MinuteBollJob { public static void main(String[] args) throws Exception { String symbol 000001.SZ; StockDataClient client new StockDataClient(); BollCalculator calculator new BollCalculator(); ListString dates List.of(2024-01-10, 2024-01-11, 2024-01-12); ListMinuteBar allBars new ArrayList(); for (String date : dates) { // 拉取单日分时累积到全量列表 ListMinuteBar dailyBars client.fetchDailyMinutes(symbol, date); allBars.addAll(dailyBars); Thread.sleep(300); // 限频保护 } // 按时间排序实际场景中接口返回可能乱序这里做一次保护 allBars.sort((a, b) - a.getTime().compareTo(b.getTime())); // 每根分时位置都计算一次BOLL int n 20; double k 2.0; ListBollCalculator.BollResult results new ArrayList(); for (int i n; i allBars.size(); i) { results.add(calculator.calcBoll(allBars.subList(0, i), n, k)); } // 这里可以接上dao层批量写入MySQL或者clickhouse // 也可以打印最近几条结果验证 int lastIdx results.size() - 1; System.out.println(最后一根分时的BOLL中轨: results.get(lastIdx).mid()); System.out.println(最后一根分时的BOLL上轨: results.get(lastIdx).upper()); System.out.println(最后一根分时的BOLL下轨: results.get(lastIdx).lower()); } }有人可能会觉得每次计算都重复遍历前n根数据效率也不差毕竟n只有20。但如果要做全量回测更优雅的做法是维护一个窗口队列每新来一根分时就移除最旧的一根这样均值、标准差都能增量更新。不过增量计算标准差的公式容易写错如果数据量不是几百万级我这个直接遍历的写法规避算错的风险更推荐参考。5. Python和Java这两种路线怎么选不是二选一而是分工5.1 开发效率和运行稳定性的真实对比同样的功能Python大概需要一个小时写完并调试完毕Java大概需要两到三个小时。差距主要来自强类型定义、异常处理、编译部署这一整个环节。对于探索性分析场景比如“先拉三天数据看看BOLL形态”Python优势明显。但Java的优势在长跑中体现。一个拉数程序挂着跑三个月每天自动执行、写库、记录日志。用Python写的话一旦遇到网络超时、内存占用上升、某个依赖库版本被误升级都有可能让整个任务静默失败。Java程序我部署成系统服务配合日志和监控长期运行的可靠性确实更好。这不是语言本身的优劣而是两种生态天然适合不同阶段。5.2 我的建议研究用Python生产用Java在量化场景里我见过太多团队在两种语言之间反复横跳最典型的错误是用Python写完策略就直接找个Java程序员翻译上生产然后两边结果对不上。正确的做法是先让Python做探索再让Java做固定流程最后做结果一致性验证。Python算出的BOLL数据存一份CSVJava算出的BOLL数据也存一份然后抽查几十个时间点差一个最小精度都不能放过。只有两边数值能对齐你才能相信生产环境的指标是忠实于研究结论的。5.3 其他语言参考思路除了Python和Java主力环境中还有用Go做数据采集的用C做极速行情处理的。它们的实现思路和Java版本基本一致组织分时数据列表、维护滑窗、计算均值和标准差。核心算法逻辑在这篇文章里已经涵盖换语言只是语法层面的翻译。这也是为什么我在设计数据结构时故意不引入任何过于依赖语言特性的东西保证逻辑可以无损迁移。6. 实测总结与反复踩过的坑6.1 坑一前复权数据在历史分时上的灾难性影响我在第一次做历史分时BOLL回测时踩过一个特别坑的问题某只股票在2024年3月进行了分红送股如果用前复权价格去算它2024年1月的分时BOLL前复权算法会把1月的价格统一等比缩小但成交量通常不做等比放大处理。这导致BOLL通道看起来好像没那么离谱可一旦策略在当前价格附近做比较通道位置会整体偏移。所以在做历史分时BOLL时我强烈建议优先选择不复权数据或者至少在接口层面明确请求参数里带上复权类型。因为分时BOLL的核心是日内和相邻交易日的相对位置比较复权处理对长期日线趋势更有意义对短周期日内波动反而引入了不确定性。如果你的接口不返回复权因子那请确保同一只股票的整个回测周期里复权口径完全一致。6.2 坑二开盘集合竞价和收盘集合竞价的数据污染A股开盘前还有集合竞价收盘前也有最后三分钟的集合竞价。很多分时接口会把集合竞价的价格当成某根一分钟K线的收盘价返回但这根K线在时间上可能只有15秒甚至更短的撮合时间波动率天然比正常分钟线大。计算BOLL时如果窗口里混入这种特殊K线上轨和下轨会被瞬间拉宽很多。而且更隐蔽的是不同接口对集合竞价的处理方式不一致有的返回有的不返回。我的处理方案是在拉取分时数据后就过滤掉09:30之前和15:00之后的记录开盘后第一根分时从09:31开始。这样所有日期、所有股票的数据口径一致BOLL曲线才具备可比性。6.3 坑三停牌和涨跌停期间的异常通道股票停牌当天没有分时数据这在遍历交易日列表时会导致某一天数据缺失。如果简单地把前后两个交易日的数据拼在一起BOLL窗口会“跨过”停牌期把停牌前的价格和复牌后的价格同时纳入窗口计算出的通道往往会失真因为中间隔了个时间断层。涨跌停的情况更微妙。股票在涨停板上封死时分时价格是一条水平直线标准差趋近于0BOLL上中下三轨会几乎重合。这在计算上不算错但如果你用“价格突破上轨”作为买入信号横盘的涨停板会让你在涨停位置触发大量虚假信号。建议在策略层面对这类状态专门做过滤而不是指望指标自己会规避。6.4 数据核对的小技巧最后分享一个实用性很强的小技巧。无论你是用Python还是Java拉数拿到BOLL计算结果之后请务必做一次“行情软件核对”随意挑一天分时数据打开主流行情软件找到同一天的分时页面把布林带参数设为一致比如20, 2对比几个关键时间点的上下轨数值。这个方法成本极低但能最快暴露问题。我见过很多项目代码写得很热闹结果因为接口数据本身有延迟或者字段对应错了指标算出来和真实行情完全不是一回事。只有在源头校验过后面的策略回测才是可信的。把日期、时间、价格、BOLL四件套整理好肉眼扫一遍比任何单元测试都来得直接。

相关新闻

用文言文跟 AI 讲价:caveman 的 wenyan 模式到底怎么玩?

用文言文跟 AI 讲价:caveman 的 wenyan 模式到底怎么玩?

用文言文跟 AI 讲价:caveman 的 wenyan 模式到底怎么玩? 【免费下载链接】caveman 🪨 why use many token when few token do trick. Viral skill proxy for coding agents that cuts 65% of tokens by talking like a caveman. 项目地址:…

2026/10/10 20:26:13 阅读更多 →
C++桥接模式变体实战:从std::function到pimpl

C++桥接模式变体实战:从std::function到pimpl

桥接模式大概是设计模式里最容易被“会了但没完全会”的一个。网上十篇教程里九篇用跨平台图形引擎举例,Shape抽象类配一个DrawingAPI实现接口,然后满屏幕的Circle、RedCircle、GreenCircle。例子没错,代码也能跑,但真到自己项目里…

2026/10/10 20:25:12 阅读更多 →
Java 从零开始:用 Spring Boot 创建你的第一个 MCP 服务并接入 TaoToken

Java 从零开始:用 Spring Boot 创建你的第一个 MCP 服务并接入 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 20:25:12 阅读更多 →

最新新闻

Python爬虫实战:抓取中国天气网七日预报并导出CSV

Python爬虫实战:抓取中国天气网七日预报并导出CSV

上周一个朋友问我说,他常跑的城市比较固定,能不能把未来一周的天气整理成一张表,出门前扫一眼就够。我说这需求听着就该交给爬虫来干。于是就有了这个项目:用 Python 爬虫抓中国天气网的七日预报页面,解析出全国城市的…

2026/10/10 21:14:02 阅读更多 →
融合Sin混沌与分段权值的改进阿基米德优化算法及Matlab实现

融合Sin混沌与分段权值的改进阿基米德优化算法及Matlab实现

做算法对比实验和模型超参数寻优时,最愁的不是没有优化器,而是手里拿着一个效果还不错的元启发式算法,却不知道该往哪个方向改。最近我在整理Matlab工具箱时,把阿基米德优化算法(AOA)做了两处针对性改造&am…

2026/10/10 21:14:02 阅读更多 →
无人机三维路径规划的Matlab实现:A星算法原理、代码与调试全解析

无人机三维路径规划的Matlab实现:A星算法原理、代码与调试全解析

A星算法、无人机、三维路径规划、Matlab,这四个词放在一起,基本就是这几年无人机方向毕设和工程预研里最常出现的组合之一。我自己用Matlab做这种基于栅格地图的路径规划也有几年了,代码从最早只能在二维小地图里跑通,一路改到能处…

2026/10/10 21:14:02 阅读更多 →
Java程序员面试必备:大厂真题核心考点与系统化备考方法论

Java程序员面试必备:大厂真题核心考点与系统化备考方法论

写在前面:我不是什么培训机构讲师,也没什么流量焦虑。前两年在阿里做后端研发,带过不少新人,也当过几轮面试官。后来出来折腾自己的项目,才意识到一个问题——Java面试题这东西,网上随便一搜好几万条&#…

2026/10/10 21:14:02 阅读更多 →
Spring Boot整合Quartz定时任务配置与集群实践

Spring Boot整合Quartz定时任务配置与集群实践

1. 项目概述1.1 核心需求解析Spring 整合 Quartz 做定时任务,算得上是 Java 后端面试和实际项目中都绕不开的一个经典组合了。网上讲这俩集成的教程一抓一大把,但不少都是直接把代码一贴、配置一摆就完事,根本没讲清楚 JobDetail、Trigger、S…

2026/10/10 21:14:01 阅读更多 →
Kubernetes Python 客户端 V1QueuingConfiguration 模型详解:API 优先级与公平调度(APF)排队参数实战指南

Kubernetes Python 客户端 V1QueuingConfiguration 模型详解:API 优先级与公平调度(APF)排队参数实战指南

后端云原生容器编排 【免费下载链接】python Official Python client library for kubernetes 项目地址: https://gitcode.com/gh_mirrors/python1/python 点击查看 免费下载 本指南围绕 Kubernetes 官方 Python 客户端(kubernetes)中由 Ope…

2026/10/10 21:13:01 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →