6. 马科维茨资产组合模型+政策意图AI金融智能体(DeepSeek-V3)增强方案(理论+Python实战)

目录

    • 0. 承前
    • 1. 幻方量化 & DeepSeek
      • 1.1 What is 幻方量化
      • 1.2 What is DeepSeek
    • 2. 重写AI金融智能体函数
    • 3. 汇总代码
    • 4. 反思
      • 4.1 不足之处
      • 4.2 提升思路
    • 5. 启后

0. 承前

本篇博文是对上一篇文章,链接:
5. 马科维茨资产组合模型+政策意图AI金融智能体(Qwen-Max)增强方案(理论+Python实战)
AI金融智能体更改为幻方量化DeepSeek-V3的尝试。

本文与上一篇文章唯一区别之处在于上文中的get_ai_weights函数,如果需要整体金融工程的思路流程,可以在上文直接跳转,本文中会直接给出修改地方,与能够直接运行的汇总代码。

本文主旨:

  • 用文章向大家展示低耦合开发的优点,如本文与上一篇文章的转换只需要重写一个函数即可;
  • 使用实际代码,向大家展示最常用的AI金融智能体接口:openai、dashcode;

如果想更加全面清晰地了解金融资产组合模型进化论的体系架构,可参考:
0. 金融资产组合模型进化全图鉴

1. 幻方量化 & DeepSeek

1.1 What is 幻方量化

幻方量化(High-Flyer Quant)是中国领先的量化投资机构之一,成立于2008年,专注于利用人工智能(AI)和机器学习技术进行量化投资。其名称“幻方”源自古代数学中的幻方矩阵,象征着数学与科学的逻辑魅力。幻方量化的核心业务是通过大数据分析、深度学习模型和强大的计算能力,开发量化交易策略,为投资者提供资产管理服务。

1.2 What is DeepSeek

  • 低成本训练:DeepSeek通过创新的算法和硬件优化,大幅降低了模型训练成本。例如,其最新模型DeepSeek-V3的训练成本仅为557万美元,远低于OpenAI等巨头的数十亿美元投入。

  • 创新架构:DeepSeek采用了MLA(多头潜在注意力机制)和DeepSeekMoE(混合专家模型)等创新架构,显著提升了模型的训练效率和推理性能。

  • 高性能表现:DeepSeek-V3在多项基准测试中表现优异,尤其在数学推理、代码生成和中文处理能力上超越了众多开源和闭源模型,甚至与GPT-4等顶尖模型媲美。

2. 重写AI金融智能体函数

登录DeepSeek官网获取 api,并使用OpenAI格式的对话函数。代码实现:

def get_ai_weights(character, policy_info, updated_result, api_key):# 定义发送对话内容messages = [{'role': 'system', 'content': character},{'role': 'user', 'content': policy_info},{'role': 'user', 'content': json.dumps(updated_result, ensure_ascii=False)}]client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")response = client.chat.completions.create(model="deepseek-chat",messages=messages,stream=False)# 提取content内容content = response.choices[0].message.content# 将JSON字符串转换为Python字典portfolio_weights = json.loads(content)# 对AI输出结果进行归一化weights_sum = sum(portfolio_weights.values())portfolio_weights = {key: value/weights_sum for key, value in portfolio_weights.items()}# 将字典中的值修改为6位小数portfolio_weights = {k: round(v, 6) for k, v in portfolio_weights.items()}return portfolio_weights

3. 汇总代码

import tushare as ts
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
from scipy.optimize import minimize
import backtrader as bt
import statsmodels.api as sm
import os
import json
import dashscope# 参数集##############################################################################
ts.set_token('token')
pro = ts.pro_api()
industry = '银行'
end_date = '20240101'
years = 5   # 数据时长
risk_free_rate = 0.03  # 无风险利率参数
top_holdings = 10      # 持仓数量参数
index_code = '000300.SH'  # 市场指数代码参数
api_key='sk-api_key'	# DeepSeek-V3 APIcharacter = f'''
你是一名专业的金融数据与政策分析师,擅长解读金融市场动态和政策导向,并据此调整资产组合的权重分布,以优化投资策略。你的主要任务是对给定的资产组合进行权重调整,确保:
1. 权重之和精确为1;
2. 每个资产调整后的权重只能在原有基础上增减最多10%;
3. 每个资产调整完毕后,如果权重之和不等于1,则归一化使权重之和精确为1;
4. 数据对应的日期是{end_date},在思考过程中,切勿根据该日期之后的信息进行思考。
5. 输出的数据格式需与输入保持一致,仅提供数据而不做额外解释;当你接收到具体的资产组合及其权重时,请根据最新的金融数据和政策信息对其进行合理调整。
'''# 通过工作流获取的政策信息
policy_info = '''
| 日期 | 政策简述 |
|------|----------|
| 2023-12-29 | 央行发布《关于优化商业银行存款利率监管有关事项的通知》,取消定期存款利率浮动上限,允许银行自主协调存贷款利率 |
| 2023-11-17 | 央行、银保监会联合发布《关于做好当前商业银行房地产贷款投放管理的通知》,优化房地产信贷政策,支持刚性和改善性住房需求 |
| 2023-09-25 | 银保监会发布《关于进一步加强银行业金融机构流动性风险管理的通知》,要求银行加强流动性风险管理,完善风险监测预警机制 |
| 2023-08-31 | 央行、银保监会宣布下调全国首套住房贷款利率下限,各地可自主决定下调幅度,二套房贷款利率政策与首套相同 |
| 2023-07-21 | 十四届全国人大常委会第四次会议表决通过《中华人民共和国金融稳定法》,建立健全金融风险防范化解制度体系 |
'''
# 参数集##############################################################################def get_industry_stocks(industry):"""获取指定行业的股票列表"""df = pro.stock_basic(fields=["ts_code", "name", "industry"])industry_stocks = df[df["industry"]==industry].copy()industry_stocks.sort_values(by='ts_code', inplace=True)industry_stocks.reset_index(drop=True, inplace=True)return industry_stocks['ts_code'].tolist()def get_data(code_list, end_date, years):"""获取指定行业名称的历史收盘价数据"""ts_code_list = code_listend_date_dt = datetime.strptime(end_date, '%Y%m%d')start_date_dt = end_date_dt - timedelta(days=years*365)start_date = start_date_dt.strftime('%Y%m%d')all_data = []for stock in ts_code_list:df = pro.daily(ts_code=stock, start_date=start_date, end_date=end_date)all_data.append(df)combined_df = pd.concat(all_data).sort_values(by=['ts_code', 'trade_date'])combined_df.reset_index(drop=True, inplace=True)combined_df.rename(columns={'trade_date': 'date'}, inplace=True)return combined_dfdef get_market_data(index_code='000300.SH', start_date=None, end_date=None):"""获取市场指数数据用于计算贝塔"""df_market = pro.index_daily(ts_code=index_code,start_date=start_date,end_date=end_date,fields=['trade_date', 'close'])df_market['date'] = pd.to_datetime(df_market['trade_date'])df_market.set_index('date', inplace=True)df_market = df_market.sort_index()monthly_last_close = df_market['close'].resample('M').last()monthly_log_returns = np.log(monthly_last_close).diff().dropna()return monthly_log_returnsdef get_factor_data(stock_codes, start_date=None, end_date=None):"""获取指定股票的因子数据(市值和PB)"""all_factor_data = []for stock in stock_codes:try:df = pro.daily_basic(ts_code=stock,start_date=start_date,end_date=end_date,fields=['ts_code', 'trade_date', 'total_mv', 'pb'])all_factor_data.append(df)except Exception as e:print(f"获取股票 {stock} 的因子数据失败: {str(e)}")continuefactor_data = pd.concat(all_factor_data, ignore_index=True)factor_data['trade_date'] = pd.to_datetime(factor_data['trade_date'])return factor_datadef get_fina_data(stock_codes, start_date=None, end_date=None):"""获取指定股票的财务指标数据(ROE和资产增长率)"""all_fina_data = []for stock in stock_codes:try:df = pro.fina_indicator(ts_code=stock,start_date=start_date,end_date=end_date,fields=['ts_code', 'end_date', 'roe_dt', 'assets_yoy', 'update_flag'])all_fina_data.append(df)except Exception as e:print(f"获取股票 {stock} 的财务数据失败: {str(e)}")continue# 合并数据fina_data = pd.concat(all_fina_data, ignore_index=True)# 处理update_flag,保留最新数据fina_data = (fina_data.groupby(['ts_code', 'end_date']).agg({'roe_dt': 'first','assets_yoy': 'first','update_flag': 'max'}).reset_index())# 将end_date转换为datetimefina_data['end_date'] = pd.to_datetime(fina_data['end_date'])# 创建季度到月度的映射monthly_data = []for _, row in fina_data.iterrows():quarter_end = row['end_date']if quarter_end.month == 3:  # Q1months = [quarter_end + pd.DateOffset(months=i) for i in range(1, 4)]elif quarter_end.month == 6:  # Q2months = [quarter_end + pd.DateOffset(months=i) for i in range(1, 4)]elif quarter_end.month == 9:  # Q3months = [quarter_end + pd.DateOffset(months=i) for i in range(1, 4)]else:  # Q4months = [quarter_end + pd.DateOffset(months=i) for i in range(1, 4)]for month in months:monthly_data.append({'ts_code': row['ts_code'],'trade_date': month,'roe_dt': row['roe_dt'],'assets_yoy': row['assets_yoy']})monthly_df = pd.DataFrame(monthly_data)return monthly_dfdef calculate_monthly_log_returns(df):"""计算每月的对数收益率"""df['date'] = pd.to_datetime(df['date'])monthly_last_close = df.groupby(['ts_code', pd.Grouper(key='date', freq='M')])['close'].last().unstack(level=-1)monthly_log_returns = np.log(monthly_last_close).diff().dropna()return monthly_log_returns.Tdef calculate_expected_returns(monthly_log_returns):"""使用Fama-French五因子模型计算各股票的预期收益率"""start_date = monthly_log_returns.index.min().strftime('%Y%m%d')end_date = monthly_log_returns.index.max().strftime('%Y%m%d')# 获取财务数据时,将start_date往前推一个季度,以确保有完整的季度数据fina_start_date = (datetime.strptime(start_date, '%Y%m%d') - timedelta(days=90)).strftime('%Y%m%d')# 获取市场收益率market_returns = get_market_data(index_code, start_date, end_date)# 获取股票的市值和PB数据stock_data = get_factor_data(monthly_log_returns.columns.tolist(),start_date,end_date)# 获取财务指标数据,使用提前的start_datefina_data = get_fina_data(monthly_log_returns.columns.tolist(),fina_start_date,end_date)# 确保所有数据的日期对齐aligned_dates = monthly_log_returns.index.intersection(market_returns.index)market_returns = market_returns[aligned_dates]stock_returns = monthly_log_returns.loc[aligned_dates].copy()  # 使用copy()避免SettingWithCopyWarningdef calculate_size_factor(date):date_data = stock_data[stock_data['trade_date'].dt.to_period('M') == date.to_period('M')]median_mv = date_data['total_mv'].median()small_returns = stock_returns.loc[date, date_data[date_data['total_mv'] <= median_mv]['ts_code']]big_returns = stock_returns.loc[date, date_data[date_data['total_mv'] > median_mv]['ts_code']]return small_returns.mean() - big_returns.mean()def calculate_value_factor(date):date_data = stock_data[stock_data['trade_date'].dt.to_period('M') == date.to_period('M')]# 创建date_data的副本并计算bm_ratiodate_data = date_data.copy()date_data.loc[:, 'bm_ratio'] = 1 / date_data['pb']median_bm = date_data['bm_ratio'].median()high_returns = stock_returns.loc[date, date_data[date_data['bm_ratio'] > median_bm]['ts_code']]low_returns = stock_returns.loc[date, date_data[date_data['bm_ratio'] <= median_bm]['ts_code']]return high_returns.mean() - low_returns.mean()def calculate_profitability_factor(date):date_data = fina_data[fina_data['trade_date'].dt.to_period('M') == date.to_period('M')]median_roe = date_data['roe_dt'].median()robust_returns = stock_returns.loc[date, date_data[date_data['roe_dt'] > median_roe]['ts_code']]weak_returns = stock_returns.loc[date, date_data[date_data['roe_dt'] <= median_roe]['ts_code']]return robust_returns.mean() - weak_returns.mean()def calculate_investment_factor(date):date_data = fina_data[fina_data['trade_date'].dt.to_period('M') == date.to_period('M')]median_growth = date_data['assets_yoy'].median()conservative_returns = stock_returns.loc[date, date_data[date_data['assets_yoy'] <= median_growth]['ts_code']]aggressive_returns = stock_returns.loc[date, date_data[date_data['assets_yoy'] > median_growth]['ts_code']]return conservative_returns.mean() - aggressive_returns.mean()# 计算每个月的因子收益smb_factor = pd.Series([calculate_size_factor(date) for date in aligned_dates], index=aligned_dates)hml_factor = pd.Series([calculate_value_factor(date) for date in aligned_dates], index=aligned_dates)rmw_factor = pd.Series([calculate_profitability_factor(date) for date in aligned_dates], index=aligned_dates)cma_factor = pd.Series([calculate_investment_factor(date) for date in aligned_dates], index=aligned_dates)# 使用OLS回归计算每个股票的因子载荷factor_loadings = {}for stock in stock_returns.columns:X = sm.add_constant(pd.concat([market_returns - risk_free_rate,smb_factor,hml_factor,rmw_factor,cma_factor], axis=1))y = stock_returns[stock] - risk_free_ratemodel = sm.OLS(y, X).fit()factor_loadings[stock] = model.params[1:]# 计算因子风险溢价market_premium = market_returns.mean() - risk_free_ratesmb_premium = smb_factor.mean()hml_premium = hml_factor.mean()rmw_premium = rmw_factor.mean()cma_premium = cma_factor.mean()# 使用FF5模型计算预期收益率expected_returns = pd.Series({stock: (risk_free_rate +loadings.iloc[0] * market_premium +loadings.iloc[1] * smb_premium +loadings.iloc[2] * hml_premium +loadings.iloc[3] * rmw_premium +loadings.iloc[4] * cma_premium)for stock, loadings in factor_loadings.items()})return expected_returnsdef calculate_covariance_matrix(monthly_log_returns):"""计算收益率协方差矩阵"""return monthly_log_returns.cov()def portfolio_performance(weights, mean_returns, cov_matrix):"""计算投资组合的表现"""returns = np.sum(mean_returns * weights)std_dev = np.sqrt(np.dot(weights.T, np.dot(cov_matrix, weights)))return returns, std_devdef negative_sharpe_ratio(weights, mean_returns, cov_matrix, risk_free_rate):"""计算负夏普比率"""p_ret, p_std = portfolio_performance(weights, mean_returns, cov_matrix)sharpe_ratio = (p_ret - risk_free_rate) / p_stdreturn -sharpe_ratiodef max_sharpe_ratio(mean_returns, cov_matrix, risk_free_rate):"""计算最大夏普比率的投资组合权重"""num_assets = len(mean_returns)args = (mean_returns, cov_matrix, risk_free_rate)constraints = ({'type': 'eq', 'fun': lambda x: np.sum(x) - 1})bounds = tuple((0, 1) for asset in range(num_assets))result = minimize(negative_sharpe_ratio, num_assets*[1./num_assets], args=args,method='SLSQP', bounds=bounds, constraints=constraints)return result.xdef calculate_top_holdings_weights(optimal_weights, monthly_log_returns_columns, top_n):"""计算前N大持仓的权重占比"""result_dict = {asset: weight for asset, weight in zip(monthly_log_returns_columns, optimal_weights)}top_n_holdings = sorted(result_dict.items(), key=lambda item: item[1], reverse=True)[:top_n]top_n_sum = sum(value for _, value in top_n_holdings)updated_result = {key: value / top_n_sum for key, value in top_n_holdings}return updated_resultdef get_ai_weights(character, policy_info, updated_result, api_key):# 定义发送对话内容messages = [{'role': 'system', 'content': character},{'role': 'user', 'content': policy_info},{'role': 'user', 'content': json.dumps(updated_result, ensure_ascii=False)}]client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")response = client.chat.completions.create(model="deepseek-chat",messages=messages,stream=False)# 提取content内容content = response.choices[0].message.content# 将JSON字符串转换为Python字典portfolio_weights = json.loads(content)# 对AI输出结果进行归一化weights_sum = sum(portfolio_weights.values())portfolio_weights = {key: value/weights_sum for key, value in portfolio_weights.items()}# 将字典中的值修改为6位小数portfolio_weights = {k: round(v, 6) for k, v in portfolio_weights.items()}return portfolio_weightsdef main():# 获取数据code_list = get_industry_stocks(industry)df = get_data(code_list, end_date, years)# 计算每月的对数收益率monthly_log_returns = calculate_monthly_log_returns(df)# 使用FF5模型计算预期收益率mean_returns = calculate_expected_returns(monthly_log_returns)# 计算收益率协方差矩阵cov_matrix = calculate_covariance_matrix(monthly_log_returns)# 优化权重optimal_weights = max_sharpe_ratio(mean_returns, cov_matrix, risk_free_rate)# 计算前N大持仓权重updated_result = calculate_top_holdings_weights(optimal_weights,monthly_log_returns.columns,top_holdings)# 计算AI调仓后的持仓权重updated_result = get_ai_weights(character, policy_info, updated_result, api_key)# 打印更新后的资产占比print(f"\n{end_date}最优资产前{top_holdings}占比:")print(updated_result)if __name__ == "__main__":main()

运行结果:

AI金融智能(DeepSeek-V3)体调仓后权重:

{'601398.SH': 0.166525, '601328.SH': 0.165165, '600919.SH': 0.134011, '600036.SH': 0.112955, '601169.SH': 0.092157, 
'600016.SH': 0.086663, '601166.SH': 0.084316, '601288.SH': 0.062868, '600908.SH': 0.053454, '600926.SH': 0.041885}

与Qwen-Max进行对比:

股票代码股票占比(Qwen-Max)股票占比(DeepSeek-V3)
601398.SH0.1630250.166525
601328.SH0.1616230.165165
600919.SH0.1292520.134011
600036.SH0.1073720.112955
601169.SH0.0957640.092157
600016.SH0.0900460.086663
601166.SH0.0876060.084316
601288.SH0.0653230.062868
600908.SH0.0555410.053454
600926.SH0.0444490.041885

DeepSeek-V3相较于Qwen-Max,通过保守的风格调整资产权重,降低高波动性资产的占比,保持重点资产的较高权重,展现出较低的风险偏好和对稳健收益的追求。它注重分散化投资和长期价值,旨在实现投资组合的稳定增长,适合寻求风险控制与稳定回报的投资者。

其他尝试:或许我们能够直接在人设提示词工程,让AI金融智能体更加趋向于高波动&高收益。

4. 反思

4.1 不足之处

  1. 政策信息获取:获取政策信息方案仍为半手动
  2. AI逻辑缜密度:AI可能未能完全按照提示词工程执行

4.2 提升思路

  1. 更换提示词工程
  2. 工作流接入金融工程内部,实现真正全自动

5. 启后

  • 优化,使用深度研报,增加AI获取数据量:,可参考下一篇文章:
    7. 马科维茨资产组合模型+金融研报AI长文本智能体(Qwen-Long)增强方案(理论+Python实战)

  • 量化回测实现,可参考下一篇文章:
    pass

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】事务

前言&#xff1a; 对比MySQL事务:【MySQL篇】事务的认识以及四大特性-CSDN博客 弱化的原子性: redis 没有 "回滚机制". 只能做到这些操作 "批量执行". 不能做到 "一个失败就恢复到初始状态". 不保证一致性: 不涉及 "约束". 也没有…

深度学习|表示学习|卷积神经网络|通道 channel 是什么?|05

如是我闻&#xff1a; 在卷积神经网络&#xff08;CNN&#xff09;中&#xff0c;channel&#xff08;通道&#xff09; 是指输入或输出数据的深度维度&#xff0c;通常用来表示输入或输出的特征类型。 通道的含义 输入通道&#xff08;Input Channels&#xff09;&#xff1a;…

K8S 集群搭建和访问 Kubernetes 仪表板(Dashboard)

一、环境准备 服务器要求&#xff1a; 最小硬件配置&#xff1a;2核CPU、4G内存、30G硬盘。 服务器可以访问外网。 软件环境&#xff1a; 操作系统&#xff1a;Anolis OS 7.9 Docker&#xff1a;19.03.9版本 Kubernetes&#xff1a;v1.18.0版本 内核版本&#xff1a;5.4.203-…

网络(三) 协议

目录 1. IP协议; 2. 以太网协议; 3. DNS协议, ICMP协议, NAT技术. 1. IP协议: 1.1 介绍: 网际互连协议, 网络层是进行数据真正传输的一层, 进行数据从一个主机传输到另一个主机. 网络层可以将数据主机进行传送, 那么传输层保证数据可靠性, 一起就是TCP/IP协议. 路径选择: 确…

用Python绘制一只懒羊羊

目录 一、准备工作 二、Turtle库简介 三、绘制懒羊羊的步骤 1. 导入Turtle库并设置画布 2. 绘制头部 3. 绘制眼睛 4. 绘制嘴巴 5. 绘制身体 6. 绘制四肢 7. 完成绘制 五、运行代码与结果展示 六、总结 在这个趣味盎然的技术实践中,我们将使用Python和Turtle图形…

【C语言】预处理详解

他们想要逃避工作的压迫&#xff0c;却又被功绩社会深植的价值观绑架。 预定义符号 1. C语言设置了⼀些预定义符号&#xff0c;可以直接使用&#xff0c;预定义符号也是在预处理期间处理的。 1 __FILE__ //进⾏编译的源⽂件 2 __LINE__ //⽂件当前的⾏号 3 __DATE__ //⽂件被编…

探秘差分数组:算法星河中闪耀的区间掌控之星

本篇鸡汤&#xff1a;夜深人静&#xff0c;正是你追梦的时刻。熬过这段孤独&#xff0c;未来会因你而闪亮&#xff01; 探索新知&#xff0c;点亮智慧&#xff01;关注我&#xff0c;一起成长&#xff0c;点赞收藏不迷路&#xff01; 欢迎拜访&…

Ubuntu环境 nginx 源码 编译安装

ubuntu 终端 使用 wget 下载源码 sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz解压刚下载的源码压缩包 nginx-1.24.0.tar.gz sudo tar -zxvf nginx-1.24.0.tar.gz 解压完成 产生 nginx-1.24.0 目录 进入该目录 cd ./nginx-1.24.0 目录下有一个可执行文件 con…

linux如何修改密码,要在CentOS 7系统中修改密码

要在CentOS 7系统中修改密码&#xff0c;你可以按照以下步骤操作&#xff1a; 步骤 1: 登录到系统 在登录提示符 localhost login: 后输入你的用户名。输入密码并按回车键。 步骤 2: 修改密码 登录后&#xff0c;使用 passwd 命令来修改密码&#xff1a; passwd 系统会提…

C# volatile 使用详解

总目录 前言 在多线程编程中&#xff0c;确保线程之间的正确同步和可见性是一个关键挑战。C# 提供了多种机制来处理这些挑战&#xff0c;其中之一就是 volatile 关键字。它用于指示编译器和运行时环境不要对特定变量进行某些优化&#xff0c;以保证该变量的读写操作是线程安全…

[Unity 热更方案] 使用Addressable进行打包管理, 使用AssetBundle进行包的加载管理.70%跟练

在正常的开发过程中我们经常遇到一些关于热更的方案,有一些已有的方案供我们选择,但是实机情况往往不尽如人意,各有优缺点. 现在我们同样有一个热更的需求,但是要求打包简单,加载过程可查,防止出现一些资源和流程的问题. 下面介绍我在项目中使用的方案. 打包方面使用Addressabl…

Flink运行时架构

一、系统架构 1&#xff09;作业管理器&#xff08;JobManager&#xff09; JobManager是一个Flink集群中任务管理和调度的核心&#xff0c;是控制应用执行的主进程。也就是说&#xff0c;每个应用都应该被唯一的JobManager所控制执行。 JobManger又包含3个不同的组件。 &am…

在 Windows 11 中为 SMB 3.x 文件共享协议提供 RDMA 支持

注&#xff1a;机翻&#xff0c;未校。 Enable SMB Direct in Windows 11 在 Windows 11 中启用 SMB Direct Provides RDMA support for the SMB 3.x file sharing protocol 为 SMB 3.x 文件共享协议提供 RDMA 支持 Vigneshwaran Vijayakumar November 3, 2024 Last Updat…

用AI生成PPT,办公效率提升新方式

用AI生成PPT&#xff0c;办公效率提升新方式&#xff01;在快节奏的时代&#xff0c;如何优雅应对高效办公的挑战&#xff1f; 或许你也有这样的经历&#xff1a;开会前临时被要求制作PPT&#xff0c;一阵头大&#xff0c;却只能硬着头皮上。科技的发展为我们带来了更智能的解…

单片机-STM32 IIC通信(OLED屏幕)(十一)

一、屏幕的分类 1、LED屏幕&#xff1a; 由无数个发光的LED灯珠按照一定的顺序排列而成&#xff0c;当需要显示内容的时候&#xff0c;点亮相关的LED灯即可&#xff0c;市场占有率很高&#xff0c;主要是用于户外&#xff0c;广告屏幕&#xff0c;成本低。 LED屏是一种用发光…

ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件

介绍 .NET 6.0 已经发布&#xff0c;ASP.NET Core 6.0 也已发布。其中有不少变化让很多人感到困惑。例如&#xff0c;“谁动了我的奶酪”&#xff0c;它在哪里Startup.cs&#xff1f;在这篇文章中&#xff0c;我将深入研究这个问题&#xff0c;看看它移动到了哪里以及其他变化。…

【嵌入式开发】stm32 st-link 烧录

使用 ST-Link 烧录 STM32 的程序可以通过多种工具实现&#xff0c;例如 STM32CubeProgrammer、Keil、IAR、以及 OpenOCD。以下是通用的步骤说明&#xff1a; 准备工作 硬件准备 确保 ST-Link 调试器与 STM32 芯片引脚正确连接&#xff1a; SWDIO (SWD 数据线) 接至 STM32 的 SW…

仿 RabbitMQ 的消息队列3(实战项目)

七. 消息存储设计 上一篇博客已经将消息统计文件的读写代码实现了&#xff0c;下一步我们将实现创建队列文件和目录。 实现创建队列文件和目录 初始化 0\t0 这样的初始值. //创建队列对应的文件和目录&#xff1a;public void createQueueFile(String queueName) throws IO…

【STM32HAL-----GPIO】

1. 什么是GPIO&#xff1f;&#xff08;了解&#xff09; 2. STM32 GPIO简介 2.1. GPIO特点 2.2. GPIO电气特性 2.3. GPIO引脚分布图 IO引脚分布特点&#xff1a;按组存在、组数视芯片而定、每组最多16个IO引脚。 3. IO端口基本结构介绍 4. GPIO八种工作模式 4.1. 输入浮空 特…

Midjourney基础-常用修饰词+权重的用法大全

用好修饰词很关键 Midjourney要用除了掌握好提示词的写法&#xff0c;按照上一篇《做Midjourney最好图文教程-提示词公式以及高级参数讲解》画面主体 场景氛围 主体行为 构图方式 艺术风格 图像质量。 要画出有质感的内容我们必须要掌握好“修饰词”&#xff0c;这些修饰…