python量化交易——金融数据管理最佳实践——使用qteasy大批量自动拉取金融数据

news2025/4/25 9:18:27

文章目录

  • 使用数据获取渠道自动填充数据
    • QTEASY数据拉取功能
    • 数据拉取接口`refill_data_source()`
    • 数据拉取API的功能特性
      • 多渠道拉取数据
      • 实现下载流量控制
      • 实现错误重试
      • 日志记录
      • 其他功能

qteasy是一个功能全面且易用的量化交易策略框架, Github地址在这里。使用它,能轻松地获取历史数据,创建交易策略并完成回测和优化,还能实盘运行。 项目文档在这里。

使用qteasy,您可以非常容易地在本地(本地电脑或者NAS服务器上)创建一个金融数据源,并自动从网上拉取大量金融数据保存在其中,以管理您的金融数据。这是一篇系列文章,前几篇文章的链接在这里:

  • 创建本地数据源
  • 管理本地数据源

这篇文章介绍如何自动从网络拉取金融数据。

使用数据获取渠道自动填充数据

前面介绍过DataSource对象的基本操作方法,但是在实际使用中,我们需要往DataSource对象中填充大量数据,如果使用前面章节介绍的DataSource.update_table_data()方法手动填充数据,这样的工作量是非常大的。

这里我们介绍如何使用数据获取渠道自动填充数据。

QTEASY数据拉取功能

QTEASY数据管理模块:

在这里插入图片描述

如上图所示,qteasy的数据功能分为三层,第一层包括多种数据下载接口,用于从网络数据提供商获取数据,这个过程称为DataFetching

数据拉取接口refill_data_source()

qteasy提供了一个自动化数据下载接口qteasy.refill_data_source(),可以从多个不同的网络数据提供商拉取多种金融数据,满足不同用户的使用习惯。qteasy提供的数据拉取API具备强大的多线程并行下载、数据分块下载、下载流量控制和错误延时重试功能,以适应不同数据供应商各种变态的流量限制,同时数据拉取API可以方便地定期自动运行完成数据批量下载任务,不用担心错过高频数据。

下面先用一个例子解释如何使用qteasy.refill_data_source()接口自动填充数据。我们先创建一个不含数据的DataSource对象,并向其中填充最基本的数据。

>>> import qteasy as qt
>>> ds = qt.DataSource()
# 检查数据源中是否有数据
>>> ds.overview()
Analyzing local data source tables... depending on size of tables, it may take a few minutes
[########################################]104/104-100.0%  A...zing completed!
Finished analyzing datasource: 
file://csv@qt_root/data/
3 table(s) out of 104 contain local data as summary below, to view complete list, print returned DataFrame
===============================tables with local data===============================
               Has_data Size_on_disk Record_count Record_start Record_end
table                                                                    
trade_calendar   True       1.8MB         70K          CFFEX        SZSE 
stock_basic      True       852KB          5K           None        None 
stock_daily      True      98.8MB        1.3M       20211112    20241231 

我们可以看到,DataSource对象中已经有了一些数据表,为了进行下面的测试,我们将首先删除trade_calendar以及stock_daily两张数据表中的数据,然后再使用数据拉取接口自动填充它们。

首先删除两张数据表,为了删除数据表,首先将数据源的allow_drop_table属性设置为True,然后再删除数据表。

>>> ds.allow_drop_table = True
>>> ds.drop_table_data('trade_calendar')
>>> ds.drop_table_data('stock_daily')
>>> ds.allow_drop_table = False
>>> overview = ds.overview()
Analyzing local data source tables... depending on size of tables, it may take a few minutes
[########################################]104/104-100.0%  A...zing completed!
Finished analyzing datasource: 
file://csv@qt_root/data/
1 table(s) out of 104 contain local data as summary below, to view complete list, print returned DataFrame
===============================tables with local data===============================
            Has_data Size_on_disk Record_count Record_start Record_end
table                                                                 
stock_basic   True       852KB         5K          None        None   

可以看到,trade_calendarstock_daily两张数据表中的数据已经被删除。

接下来,我们使用qteasy.refill_data_source()接口自动填充数据,代码很简单,只有一行,剩下的工作qteasy会自动完成。

>>> qt.refill_data_source(
        tables='stock_daily',  # 指定要填充的数据表:股票日K线数据
        channel='tushare',  # 指定数据下载渠道
        data_source=ds,  # 指定需要填充的数据源对象
        start_date='20210101',  # 指定数据下载的起始日期
        end_date='20211231',  # 指定数据下载的结束日期
)

Filling data source file://csv@qt_root/data/ ...
into 2 table(s) (parallely): {'stock_daily', 'trade_calendar'}
[########################################]243/243-100.0%  <stock_daily> 2398764 wrtn in about 16 sec                 
[########################################]7/7-100.0%  <trade_calendar> 70054 wrtn in about 1 sec                     
                    
Data refill completed! 2468818 rows written into 2/2 table(s)!

拉取并填充数据后,可以检查数据已经下载成功了:

>>> ds.read_table_data('stock_daily', shares='000001.SZ, 000002.SZ', start='20211111', end='20211131')

                       open   high    low  close  pre_close  change  pct_chg  \
ts_code   trade_date                                                           
000001.SZ 2021-11-11  17.35  18.43  17.32  18.35      17.40    0.95   5.4598   
          2021-11-12  18.31  18.63  18.11  18.27      18.35   -0.08  -0.4360   
          2021-11-15  18.35  18.63  18.20  18.43      18.27    0.16   0.8758   
          2021-11-16  18.36  18.54  18.17  18.22      18.43   -0.21  -1.1394   
          2021-11-17  18.15  18.30  17.98  18.11      18.22   -0.11  -0.6037   
          2021-11-18  18.09  18.12  17.73  17.80      18.11   -0.31  -1.7118   
          2021-11-19  17.80  18.24  17.70  18.15      17.80    0.35   1.9663   
          2021-11-22  18.03  18.25  17.90  18.12      18.15   -0.03  -0.1653   
          2021-11-23  18.11  18.35  17.68  17.88      18.12   -0.24  -1.3245   
          2021-11-24  17.77  17.95  17.66  17.87      17.88   -0.01  -0.0559   
          2021-11-25  17.74  17.79  17.63  17.68      17.87   -0.19  -1.0632   
          2021-11-26  17.62  17.67  17.52  17.58      17.68   -0.10  -0.5656   
          2021-11-29  17.41  17.57  17.36  17.51      17.58   -0.07  -0.3982   
          2021-11-30  17.54  17.68  17.35  17.44      17.51   -0.07  -0.3998   
000002.SZ 2021-11-11  18.95  20.84  18.89  20.79      18.98    1.81   9.5364   
          2021-11-12  20.50  20.50  19.41  19.76      20.79   -1.03  -4.9543   
          2021-11-15  19.56  19.59  19.12  19.40      19.76   -0.36  -1.8219   
          2021-11-16  19.29  19.57  19.21  19.24      19.40   -0.16  -0.8247   
          2021-11-17  19.23  19.53  19.09  19.46      19.24    0.22   1.1435   
          2021-11-18  19.35  19.40  18.98  19.09      19.46   -0.37  -1.9013   
          2021-11-19  19.01  20.28  18.92  19.90      19.09    0.81   4.2431   
          2021-11-22  19.90  19.95  19.19  19.22      19.90   -0.68  -3.4171   
          2021-11-23  19.19  19.44  19.10  19.24      19.22    0.02   0.1041   
          2021-11-24  19.12  19.38  19.00  19.30      19.24    0.06   0.3119   
          2021-11-25  19.22  19.35  19.07  19.22      19.30   -0.08  -0.4145   
          2021-11-26  19.15  19.15  18.95  18.99      19.22   -0.23  -1.1967   
          2021-11-29  18.75  18.87  18.35  18.46      18.99   -0.53  -2.7909   
          2021-11-30  18.44  18.66  18.16  18.26      18.46   -0.20  -1.0834   

                             vol       amount  
ts_code   trade_date                           
000001.SZ 2021-11-11  2084729.00  3752413.858  
          2021-11-12   957546.46  1753072.716  
          2021-11-15   655089.99  1203764.095  
          2021-11-16   601110.48  1099113.409  
          2021-11-17   664640.38  1203859.180  
          2021-11-18   799843.77  1430058.311  
          2021-11-19   786371.56  1414506.380  
          2021-11-22   738617.80  1337768.172  
          2021-11-23  1235977.96  2213817.590  
          2021-11-24   741310.84  1316774.397  
          2021-11-25   603532.70  1068221.304  
          2021-11-26   694499.88  1219937.312  
          2021-11-29   512594.71   895105.981  
          2021-11-30   733616.06  1280384.552  
000002.SZ 2021-11-11  3151015.76  6352746.112  
          2021-11-12  2065924.12  4100076.111  
          2021-11-15   959331.52  1852352.374  
          2021-11-16   593989.40  1149085.955  
          2021-11-17   623749.71  1205064.294  
          2021-11-18   609995.75  1168010.581  
          2021-11-19  1308293.09  2570652.947  
          2021-11-22   877584.30  1697701.639  
          2021-11-23   563435.65  1083646.252  
          2021-11-24   827366.98  1587246.249  
          2021-11-25   518123.06   995473.890  
          2021-11-26   504023.33   959331.064  
          2021-11-29   718595.81  1334479.867  
          2021-11-30   713092.22  1305310.857

数据拉取API的功能特性

分析数据拉取的过程,我们可以看到,qteasy自动完成了下面的工作:

  • 自动查找依赖表 —— 虽然我们只指定了stock_daily数据表,但是qteasy自动检测到trade_calendar数据表也是空的,且stock_daily表依赖交易日历表,所以也自动填充了trade_calendar数据表。
  • 下载进度可视化 —— qteasy提供了下载进度可视化,可以看到每个数据分块的下载进度,以及总体下载进度,过程中可以显示剩余时间,方便用户查看数据下载的情况。
  • 大数据量自动分块 —— 上面的代码下载了2021年全年所有股票的日K线数据,这些数据量共有239万行,不管从任何数据渠道,这么大量的数据都不可能一次性下载下来,因此,qteasy自动将数据分块,每一块只有一天的数据,可以看到整年的数据被分成了243块,数据分块下载显著降低了每次网络申请的数据量,提高成功率且降低了被阻断的风险。
  • 多线程并行下载 —— 实行数据分块下载后,qteasy自动使用多线程并行下载,加快数据下载速度,243个数据分块并行下载总共耗时仅16秒。

有了上面这些特性,qteasy的数据拉取功能可以满足几乎所有用户的数据获取需求,不管是下载大量数据,还是下载高频数据,qteasy都能提供高效的数据下载服务。

当然,除了上面提到的这些特性之外,qteasy还提供了更多的功能特性,以针对下载过程中出现的各种状况,这些功能特性我们在后面会逐步介绍:

  • 多渠道下载 —— qteasy提供了多种数据下载渠道,很多数据表可以从多个不同的渠道下载,而且随着版本更新,数据拉取渠道也在不断增加。
  • 流量控制 —— 有些数据渠道对数据下载有流量限制,qteasy提供了流量控制功能,可以限制数据下载的速度,即下载一定分块数量的数据后,可以暂停一段时间,例如每下载300个分块的数据,就暂停一分钟,避免被数据渠道封禁。
  • 错误重试 —— 有些数据渠道下载数据时,可能会出现网络错误,qteasy提供了错误重试功能,可以在下载失败后,自动重试下载,如果重试不成功,会延长重试等待时间再试,直到下载成功或超过重试次数并报错。
  • 日志记录 —— qteasy提供了数据下载日志记录功能,可以记录每次数据下载的详细信息,包括下载的数据量、下载的时间、下载的速度等,方便用户查看数据下载的情况。

多渠道拉取数据

qteasy提供了多种数据下载渠道,很多数据表可以从多个不同的渠道下载,而且随着版本更新,数据拉取渠道也在不断增加。

refill_data_source()接口的channel参数可以指定数据下载渠道,如果不指定,qteasy会自动选择一个默认的数据下载渠道tushare,但是用户也可以手动指定数据下载渠道,例如 :

下面的代码尝试从eastmoney数据渠道下载stock_daily数据表从2025年最初两个月的日K线数据:

>>> qt.refill_data_source(
        tables='stock_daily', 
        channel='eastmoney',   # 指定数据下载渠道为东方财经
        data_source=ds, 
        start_date='20250101', 
        end_date='20250301',
)

Filling data source file://csv@qt_root/data/ ...
into 2 table(s) (parallely): {'stock_daily', 'stock_basic'}
[########################################]11078/11078-100.0%  <stock_daily> 131264304 wrtn in about 17 min           
[----------------------------------------]0/1-0.0%  <stock_basic> can't be fetched from channel:eastmoney!
          
Data refill completed! 131264304 rows written into 1/2 table(s)!

验证一下数据是否下载成功:

>>> ds.read_table_data('stock_daily', shares='000001.SZ, 000002.SZ', start='20250101', end='20250103')

                       open   high    low  close  pre_close  change  pct_chg  \
ts_code   trade_date                                                           
000001.SZ 2025-01-13  11.25  11.26  11.08  11.20      11.30   -0.10  -0.8850   
          2025-01-14  11.20  11.40  11.19  11.38      11.20    0.18   1.6071   
          2025-01-15  11.38  11.58  11.36  11.48      11.38    0.10   0.8787   
          2025-01-16  11.55  11.59  11.47  11.57      11.48    0.09   0.7840   
          2025-01-17  11.53  11.55  11.42  11.45      11.57   -0.12  -1.0372   
          2025-01-20  11.50  11.52  11.40  11.42      11.45   -0.03  -0.2620   
          2025-01-21  11.45  11.45  11.32  11.33      11.42   -0.09  -0.7881   
          2025-01-22  11.32  11.33  11.08  11.09      11.33   -0.24  -2.1183   
          2025-01-23  11.17  11.40  11.17  11.32      11.09    0.23   2.0739   
          2025-01-24  11.32  11.39  11.22  11.34      11.32    0.02   0.1767   
          2025-01-27  11.38  11.55  11.38  11.47      11.34    0.13   1.1464   
000002.SZ 2025-01-13   6.60   6.77   6.55   6.76       6.69    0.07   1.0463   
          2025-01-14   6.76   6.93   6.75   6.91       6.76    0.15   2.2189   
          2025-01-15   6.88   6.96   6.79   6.86       6.91   -0.05  -0.7236   
          2025-01-16   6.90   7.07   6.84   6.88       6.86    0.02   0.2915   
          2025-01-17   6.58   6.65   6.45   6.63       6.88   -0.25  -3.6337   
          2025-01-20   6.60   6.94   6.48   6.85       6.63    0.22   3.3183   
          2025-01-21   6.84   7.54   6.82   7.36       6.85    0.51   7.4453   
          2025-01-22   7.27   7.36   6.98   7.02       7.36   -0.34  -4.6196   
          2025-01-23   7.15   7.70   7.08   7.36       7.02    0.34   4.8433   
          2025-01-24   7.33   7.54   7.21   7.39       7.36    0.03   0.4076   
          2025-01-27   7.38   7.56   7.22   7.27       7.39   -0.12  -1.6238   

                            vol       amount  
ts_code   trade_date                          
000001.SZ 2025-01-13   934966.0  1044904.416  
          2025-01-14   824629.0   934467.766  
          2025-01-15  1031631.0  1185403.653  
          2025-01-16   872964.0  1007689.274  
          2025-01-17   689765.0   791230.419  
          2025-01-20   832029.0   953092.179  
          2025-01-21   902069.0  1024879.174  
          2025-01-22  1347129.0  1504818.607  
          2025-01-23  1514920.0  1715172.472  
          2025-01-24   944944.0  1069899.088  
          2025-01-27  1151935.0  1324270.607  
000002.SZ 2025-01-13   911147.0   611005.036  
          2025-01-14  1116454.0   765177.082  
          2025-01-15   887294.0   608363.557  
          2025-01-16  1110545.0   771648.218  
          2025-01-17  3620283.0  2369977.993  
          2025-01-20  2988167.0  2009728.944  
          2025-01-21  5849397.0  4290640.172  
          2025-01-22  3448728.0  2457396.391  
          2025-01-23  4416581.0  3245710.622  
          2025-01-24  2555024.0  1885566.128  
          2025-01-27  2151753.0  1580357.769  

数据下载显然也是成功的。分析上面的下载过程,可以发现几个特点:

  • 不同渠道下载的数据格式是相同的,这是qteasy的设计原则,不同的数据下载渠道下载的数据会经历相同的清洗过程,这样用户可以方便地切换不同的数据下载渠道,而不用担心数据格式不同导致的数据处理问题。
  • 不同的渠道下载分块方式不同,导致下载速度不同,eastmoney数据渠道下载速度较慢,需要约17分钟才能下载完成。这是由于不同下载渠道的特殊限制决定的。
  • 不同渠道的下载可以下载的数据表也不同,有些数据表无法通过某些渠道下载,可能是因为权限限制或者其他因素导致的,如果某个数据表无法下载,qteasy会自动跳过这个数据表,不会影响其他数据表的下载。

因此,用户需要根据自身的情况选择不同的渠道拉取数据。

实现下载流量控制

qteasyrefill_data_source提供了流量控制功能,可以限制数据下载的速度,即下载一定分块数量的数据后,可以暂停一段时间,例如每下载300个分块的数据,就暂停一分钟,避免被数据渠道封禁。

这个功能通过refill_data_source()接口的download_batch_sizedownload_batch_interval两个参数实现:

  • download_batch_size参数指定每次下载的数据分块数量,如果设置为300,则在下载300个数据分块后,会暂停一段时间。
  • download_batch_interval参数指定每次下载数据分块后的暂停时间,默认为0,即不暂停。

下面的代码演示了如何使用download_batch_sizedownload_batch_interval参数实现下载流量控制:

>>> qt.refill_data_source(
        tables='stock_daily',
        channel='tushare',
        data_source=ds, 
        start_date='20250101', 
        end_date='20250301', 
        download_batch_size=300,  # 每次下载300个数据分块
        download_batch_interval=60,  # 每次下载300个数据分块后暂停60秒
)

如果是用流量控制,当然下载时间会变长,但是对于某些数据渠道,这是必须的,否则可能会被封禁或报错导致下载失败。

实现错误重试

需要注意的是,数据下载过程中出错,qteasy会自动重试下载,重试机制如下:

  • 第一次下载失败后重试之前会等待一段时间,默认等待时间为1.0秒
  • 每次重试失败后,等待时间都会增加,默认等待时间增加为2倍,即第一次等待1.0秒,第二次等待2.0秒,第三次等待4.0秒,以此类推。
  • 重试超过最大限额后停止重试并报错,默认情况下最多重复7次。

以上三个错误重试参数都是通过qteasy的配置文件在设定的,用户可以通过qt.config()接口查看或修改这些参数,也可以在qteasy的初始配置文件中修改这些参数。

  • hist_dnld_retry_cnt - 最大重试次数,默认为7次
  • hist_dnld_retry_wait - 第一次重试等待时间,默认为1.0秒
  • hist_dnld_backoff - 重试等待时间增加倍数,默认为2.0

关于如何修改配置文件,或者使用qteasy的初始配置文件,请参考qteasy的配置文件章节。

日志记录

qteasy提供了数据下载日志记录功能,可以记录每次数据下载的详细信息,包括下载的数据量、下载的时间、下载的速度等,方便用户查看数据下载的情况。

其他功能

qteasyrefill_data_source()接口还提供了其他一些功能,例如:

  • 限制下载数据的范围,可以通过start_dateend_date参数限制下载数据的时间范围,通过shares参数限制下载数据的股票范围。
  • 设置是否并行下载,可以通过parallel参数设置是否并行下载,如果设置为False,则会串行下载,否则会并行下载。
  • 设置是否下载依赖表,可以通过download_dependent参数设置是否下载依赖表,如果设置为False,则不会下载依赖表,否则会下载依赖表。
  • 设置是否强制更新交易日历表。

其他更多关于该接口的解释,请参见qteasy的API文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RoboBrain:从抽象到具体的机器人操作统一大脑模型

25年2月来自北大、北京智源、中科院自动化所等的论文“RoboBrain: A Unified Brain Model for Robotic Manipulation from Abstract to Concrete”。 目前的多模态大语言模型&#xff08;MLLM&#xff09; 缺少三项必备的机器人大脑能力&#xff1a;规划能力&#xff0c;将复杂…

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…

SQL_语法

1 数据库 1.1 新增 create database [if not exists] 数据库名; 1.2 删除 drop database [if exists] 数据库名; 1.3 查询 (1) 查看所有数据库 show databases; (2) 查看当前数据库下的所有表 show tables; 2 数据表 2.1 新增 (1) 创建表 create table [if not exists…

全面回顾复习——C++语法篇1(基于牛客网C++题库)

注&#xff1a;牛客网允许使用万能头文件#include<bits/stdc.h> 1、求类型长度——sizeof&#xff08;&#xff09;函数 2、将浮点数四舍五入——round&#xff08;&#xff09;函数——前面如果加上static_cast会更安全一些 在C语言中可以使用printf&#xff08;“.0l…

一、数据库 MySQL 基础学习 (上)

一、数据库的概念 DB 数据库&#xff08;database&#xff09;&#xff1a;存储数据的“仓库”&#xff0c;保存一系列有组织的数据 DBMS&#xff1a;数据库管理系统(Database Management System)。数据库是通过 DBMS 创建和操作的容器 创建的 DBMS&#xff1a; MySQL、Oracl…

基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程

一、Django项目初始化 1.创建Django项目 Django-admin startproject 项目名 2.安装 djangorestframework pip install djangorestframework 解释: Django REST Framework (DRF) 是基于 Django 框架的一个强大的 Web API 框架&#xff0c;提供了多种工具和库来构建 RESTf…

AutoGen学习笔记系列(七)Tutorial - Managing State

这篇文章瞄准的是AutoGen框架官方教程中的 Tutorial 章节中的 Managing State 小节&#xff0c;主要介绍了如何对Team内的状态管理&#xff0c;特别是如何 保存 与 加载 状态&#xff0c;这对于Agent系统而言非常重要。 官网链接&#xff1a;https://microsoft.github.io/auto…

Redis渐进式遍历数据库

目录 渐进式遍历 数据库 渐进式遍历 keys*可以一次性的把整个redis中所有key都获取到&#xff0c;这个操作是非常危险的&#xff0c;因为可能一下获取到太多的key&#xff0c;阻塞redis服务器。要想很好的获取到所有的key&#xff0c;又不想出现卡死的情况&#xff0c;就可以…

基于单片机的速度里程表设计(论文+源码)

1 系统方案 本次智能速度里程表的总体架构如图2-1所示&#xff0c;在硬件上包括了STC89C52单片机&#xff0c;电机&#xff0c;显示模块&#xff0c;报警模块&#xff0c;DS1302时钟模块&#xff0c;超速检测模块&#xff0c;按键等等。在软件设计功能的功能上&#xff0c;按下…

计算机毕业设计Python+Django+Vue3微博数据舆情分析平台 微博用户画像系统 微博舆情可视化(源码+ 文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echarts助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)

Dify部署参考&#xff1a;Dify Rag部署并集成在线Deepseek教程&#xff08;Windows、部署Rag、安装Ragan安装、安装Dify安装、安装ollama安装&#xff09; DifyDeepSeek - Excel数据一键可视化&#xff08;创建步骤案例&#xff09;-DSL工程文件&#xff08;可直接导入&#x…

安装与配置 STK-MATLAB 接口

STK版本为11.6 Matlab版本为R2018a STK 提供 Connect 和 Object Model (COM) 两种接口与 MATLAB 交互&#xff0c;推荐使用 COM接口进行二次开发。 确保安装了 STK&#xff0c;并且 MATLAB 可以访问 STK Object Model。 在 MATLAB 中运行&#xff1a; % 添加 STK COM 库&#…

计算机二级MS之PPT

声明&#xff1a;跟着大猫和小黑学习随便记下一些笔记供大家参考&#xff0c;二级考试之前将持续更新&#xff0c;希望大家二级都能轻轻松松过啦&#xff0c;过了二级的大神也可以在评论区留言给点建议&#xff0c;感谢大家&#xff01;&#xff01; 文章目录 考题难点1cm25px…

python中采用opencv作常规的图片处理的方法~~~

在python中&#xff0c;我们经常会需要对图片做灰度/二值化/模糊等处理&#xff0c;这时候opencv就是我们的好帮手了&#xff0c;下面我来介绍一下相关用法: 首先&#xff0c;需要安装opencv-python库: 然后&#xff0c;在你的代码中引用: import cv2 最后就是代码了&#x…

deepseek在pycharm 中的配置和简单应用

对于最常用的调试python脚本开发环境pycharm&#xff0c;如何接入deepseek是我们窥探ai代码编写的第一步&#xff0c;熟悉起来总没坏处。 1、官网安装pycharm社区版&#xff08;免费&#xff09;&#xff0c;如果需要安装专业版&#xff0c;需要另外找破解码。 2、安装Ollama…

Redis数据结构,渐进式遍历,数据库管理

1.Redis的其他数据结构 前面我们主要讲述了Redis中比较常用的集中数据结构String&#xff0c;List&#xff0c;Hash&#xff0c;Set&#xff0c;Zset&#xff0c;但这并不代表Redis只用这几种数据结构还有如Streams&#xff0c;Geospatial&#xff0c;Hyperloglog&#xff0c;…

【够用就好006】如何从零开发游戏上架steam面向AI编程的godot独立游戏制作实录001流程

记录工作实践 这是全新的系列&#xff0c;一直有个游戏制作梦 感谢AI时代&#xff0c;让这一切变得可行 长欢迎共同见证&#xff0c;期更新&#xff0c;欢迎保持关注&#xff0c;待到游戏上架那一天&#xff0c;一起玩 面向AI编程的godot独立游戏制作流程实录001 本期是第…

LNK2038 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”

vs2019中属性设置 报错&#xff1a; vs2019中属性设置为 报错&#xff1a; 设置为 报错&#xff1a; 设置为 报错&#xff1a; 原因&#xff1a;是由于ncnn和paddleLite的库同时使用会冲突。只能用其中之一。 后面部署降lite都换成了ncnn就可以了。 要么都用ncnn&a…

SpringBoot校园管理系统设计与实现

在现代校园管理中&#xff0c;一个高效、灵活的管理系统是不可或缺的。本文将详细介绍基于SpringBoot的校园管理系统的设计与实现&#xff0c;涵盖管理员、用户和院校管理员三大功能模块&#xff0c;以及系统的部署步骤和数据库配置。 管理员功能模块 管理员是系统的核心管理…

[QT]开发全解析:从概念到实战

文章目录 Qt 框架入门与应用开发指南一、Qt 框架概述1.1 什么是 Qt1.2 Qt 的发展史1.3 Qt 支持的平台1.4 Qt 版本1.5 Qt 的优点1.6 Qt 的应用场景1.7 Qt 的成功案例 二、Qt 的开发工具概述Qt CreatorVisual StudioEclipse 三、认识 Qt Creator3.1 Qt Creator 概览3.2 使用 Qt C…