当前位置: 首页 > news >正文

【量化交易笔记】17.多因子的线性回归模型策略

前言

上一篇介绍了 因子的评价和分析方法,让我知道如何判断该因子的作用,以及对最终结果的影响,其最大的问题,他只能评价和分析单因子,而对多个因子,不能直接加以评价。我们自然会想到,如果是多因子,他是如何影响结果,每个因子起的作用是怎么样的,这些因子哪几个比较重要,他们的次序是怎么样的,如果给定这些因子的权重,能否合成一个新的因子,这个新的因子,加以评价分析。

以上这两个问题,就是本篇和以后文章需要解决的问题。首先就因子的重要性来分析,取决于用什么模型来架构,如果是线性模型,那自然是因子的权重系数,即为该因子的系数(或斜率);如果是非线性模型,如树型模型,就可以直接取重要性排序系统来确定,如果是神经网络模型,就很难获取,解释性自然很差了。

本篇从线性回归模型来分析因子,其中线性回归的模型很多,一般线性回归、岭回归,Lasso回归、Rubust回归,最常用的就是一般线性回归。基本的思路:现以上证50为标的,以财务总资产、总负债 、净利润、年度收入增长、研发费用等因素作为因子,以市值为作目标,建立模型线性,最后以预测值与真实值的差值,进行排序,找到市值被低估最多股票作为选股的标的,进行回测。

获取数据

为了与之前的文章统一,本文仍使用聚宽平台的数据,

#导入jqdata的全部函数
from jqdata import *
#这回咱们就把选择上证50成分股做股票池
stocks = get_index_stocks('000016.XSHG')
#用query函数获取股票的代码
q = query(valuation.code,#还有市值valuation.market_cap,#净资产,用总资产减去总负债balance.total_assets - balance.total_liability,#再来一个资产负债率的倒数balance.total_assets/balance.total_liability,#把净利润也考虑进来income.net_profit,#还有年度收入增长indicator.inc_revenue_year_on_year,#研发费用balance.development_expenditure).filter(valuation.code.in_(stocks))
#将这些数据存入一个数据表中
df = get_fundamentals(q)
#给数据表指定每列的列名称
df.columns = ['code', 'mcap', 'na', '1/DA ratio', 'net income', 'growth', 'RD']
#检查一下是否成功
df.head()
-codemcapna1/DA rationet incomegrowthRD
0600028.XSHG6888.79249.762930e+111.8807516.749000e+09-4.61NaN
1600030.XSHG3734.77782.987667e+111.2116005.138545e+0923.74NaN
2600031.XSHG1617.87337.300160e+101.9223961.113674e+0912.33242669000.0
3600036.XSHG10612.51101.233475e+121.1129703.552000e+107.53NaN
4600048.XSHG1048.61083.450036e+111.3353001.544011e+09-21.62NaN

建模

把市值作为目标值,其他财务因子作为特征,用 0 来填充缺失值。

#把股票代码做成数据表的index
df.index = df['code'].values
#然后把原来代码这一列丢弃掉,防止它参与计算
df = df.drop('code', axis = 1)
#把除去市值之外的数据作为特征,赋值给X
X = df.drop('mcap', axis = 1)
#市值这一列作为目标值,赋值给y
y = df['mcap']
#用0来填补数据中的空值
X = X.fillna(0)
y = y.fillna(0)

训练并预测

#使用线性回归来拟合数据
reg = LinearRegression().fit(X,y)
#将模型预测值存入数据表
predict = pd.DataFrame(reg.predict(X), #保持和y相同的index,也就是股票的代码index = y.index,#设置一个列名,这个根据你个人爱好就好columns = ['predict_mcap'])
#检查是否成功
predict.head()
-predict_mcap
600028.XSHG4833.806993
600030.XSHG3125.629608
600031.XSHG2175.318676
600036.XSHG11034.704820
600048.XSHG2496.955008

查看模型参数

# (1) 各特征系数(对应 X.columns 的顺序)
print("特征系数:", reg.coef_)  # (2) 偏置项(截距)
print("偏置值:", reg.intercept_)  # 

特征系数: [1.6610656144885165e-09 359.032360682994 2.103156475641299e-07
-0.13441721290214032 5.958907500769328e-08]
偏置值: 1116.8298565517507

for feature, coef in zip(X.columns, reg.coef_):print(f"{feature}: {coef:.4f}")

na: 0.0000
1/DA ratio: 359.0324
net income: 0.0000
growth: -0.1344
RD: 0.0000

从上述数据来看,真正起作用的主要是 1/DA ratiogrowth 这两个因子

计算差值并排序

#使用真实的市值,减去模型预测的市值
diff = df['mcap'] - predict['predict_mcap']
#将两者的差存入一个数据表,index还是用股票的代码
diff = pd.DataFrame(diff, index = y.index, columns = ['diff'])
#将该数据表中的值,按生序进行排列
diff = diff.sort_values(by = 'diff', ascending = True)
#找到市值被低估最多的10只股票
diff.head(10)
-diff
600276.XSHG-3535.849409
601988.XSHG-3470.535336
601328.XSHG-3014.714514
601668.XSHG-2815.339172
601390.XSHG-2792.367126
601398.XSHG-2723.120877
601919.XSHG-2678.387472
600050.XSHG-2321.983808
601225.XSHG-2308.808637
601888.XSHG-1822.134836

结果分析

从上表可以看出,模型将计算出实际市值与预测市值,将这些差值最多的股票选出,进行买入持有,等这个差值变小了再卖出,基于这个思想,制定股票交易策略。
注:以上结果是基于现在(今天2025-04-26),也许你的结果与我不一样,因为get_fundamentals()函数默认获取的是当前日期的内容。你可以修改函数,将日期给写上,df = get_fundamentals(q, '2025-04-26') ,得以重现。

回测代码

这里给出的回测代码,主要是交易部分
以下是完整的回测代码,你可以复制后,放在策略中回测

# 导入函数库
from sklearn.linear_model import LinearRegression, Ridge
import numpy as np
import pandas as pd
from jqdata import *# 初始化函数,设定基准等等
def initialize(context):# 设定沪深300作为基准set_benchmark('000001.XSHG')# 开启动态复权模式(真实价格)set_option('use_real_price', True)# 输出内容到日志 log.info()log.info('初始函数开始运行且全局只运行一次')# 过滤掉order系列API产生的比error级别低的loglog.set_level('order', 'error')### 股票相关设定 #### 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱# set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')#定义初始日期为0 g.days =0 #每5天调仓一次g.refresh_rate = 5#最大持股的个数为10个 g.stocknum = 10## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)# 开盘前运行run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')# 开盘时运行run_daily(market_open, time='open', reference_security='000300.XSHG')# 收盘后运行run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')## 开盘前运行函数
def before_market_open(context):# 输出运行时间log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))# 给微信发送消息(添加模拟交易,并绑定微信生效)# send_message('美好的一天~')# 要操作的股票:平安银行(g.为全局变量)# g.security = '000001.XSHE'## 开盘时运行函数
def market_open(context):log.info('函数运行时间(market_open):'+str(context.current_dt.time()))#如果天数能够被5整除,#就运行我们在研究环境中写好的代码 if g.days % 5 == 0:#下面的代码是从研究环境中移植过来的#去掉了画图和查看表头的部分#此处就不逐行注释了stocks = get_index_stocks('000016.XSHG', date = None)q = query(valuation.code,#还有市值valuation.market_cap,#净资产,用总资产减去总负债balance.total_assets - balance.total_liability,#再来一个资产负债率的倒数balance.total_assets/balance.total_liability,#把净利润也考虑进来income.net_profit,#还有年度收入增长indicator.inc_revenue_year_on_year,balance.development_expenditure).filter(valuation.code.in_(stocks))df = get_fundamentals(q, date=None)df.columns = ['code', 'mcap', 'na', '1/DA ratio','net income', 'growth','RD']df.index = df.code.valuesdf = df.drop('code',axis = 1)df = df.fillna(0)X = df.drop('mcap', axis = 1)y = df['mcap']X = X.fillna(0)y = y.fillna(0)#下面是机器学习的部分reg = LinearRegression ()model = reg.fit(X,y)predict =pd.DataFrame(reg.predict(X),index = y.index,columns = ['predict_mcap'])diff = df['mcap'] - predict['predict_mcap']diff =pd.DataFrame(diff,index =y.index, columns = ['diff'])diff = diff.sort_values(by = 'diff', ascending = True)#下面是执行订单的部分#首先将把市值被低估最多的10只股票存入持仓列表stockset = list(diff.index[:10])#同时已经持有的股票,存入卖出的列表中sell_list = list(context.portfolio.positions.keys())#如果某只股票在卖出列表中for stock in sell_list:#同时又不在持仓列表中if stock not in stockset[:g.stocknum]:#就把这只股票卖出stock_sell = stock#卖出后该股票的持仓量为0,也就是直接清仓order_target_value(stock_sell, 0)#如果持仓的数量小于我们设置的最大持仓数if len(context.portfolio.positions) < g.stocknum:#我们就把剩余的现金,平均买入股票#例如持仓8只股票,剩余3万块现金#就买入2只列表中的股票,每只买入的金额上限为1.5万元num = g.stocknum - len(context.portfolio.positions)cash = context.portfolio.cash/numelse:cash =0num =0for stock in stockset[:g.stocknum]:if stock in sell_list:passelse:stock_buy = stockorder_target_value(stock_buy, cash)num = num - 1if num == 0:break#同时天数加1g.days += 1#如果天数不能被5整除else:#不执行交易,直接天数加1g.days = g.days +1## 收盘后运行函数
def after_market_close(context):log.info(str('函数运行时间(after_market_close):'+str(context.current_dt.time())))#得到当天所有成交记录trades = get_trades()for _trade in trades.values():log.info('成交记录:'+str(_trade))log.info('一天结束')log.info('##############################################################')

以上回测代码,没有删除原先模板的内容,主要内容可以查看market_open函数部分,特别是机器学习(线性回归)部分。

回测结果

回测结果

结论

  1. 从上图来看,回测区间从2024-01-01~至今,策略的各项指标还不对,基准选的是上证指数,标的是上证50的50支股票选出10支。
  2. 上述只选5个因子,但真正起作用的是只有两个因子, 你可以将其他不起作用的因子剔除,增加其他因子,以提高模型的有效性。
  3. 上述分析,没有将模型进行验证,在实际的过程中,是需要将数据集分为训练集和验证集,并加以验证,考虑到是线性模型,另外,反过来说,本文是预测结果与真实值的差,越大越好,这就带了两个问题,
    3.1 模型预测值与真实值越大越好,则说明模型越差越好,那训练还有意义吗;
    3.2 既然差值最大越好,则说该股票的市值越大越好,因此,这个模型必须是大市值,小市值根本上了排行榜;所以我在测试非50标的,效果是非常差的。
  4. 上述只是一个简单的思路,在实际的实践中,这个目标标签y不可能这样去实现,可能将目标的绝对值转化为相对值(比值),比如差值除以总市值成为比值,但同时在训练前,又没有差值,那样就不好弄,总之这个方法可以进一步探讨。

相关文章:

【量化交易笔记】17.多因子的线性回归模型策略

前言 上一篇介绍了 因子的评价和分析方法&#xff0c;让我知道如何判断该因子的作用&#xff0c;以及对最终结果的影响&#xff0c;其最大的问题&#xff0c;他只能评价和分析单因子&#xff0c;而对多个因子&#xff0c;不能直接加以评价。我们自然会想到&#xff0c;如果是多…...

五年经验Java开发如何破局创业

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息文章目录 五年经验Java开发如何破局创业一、创业方向筛选与优劣势分析**方向1:技术教育/在线课程开发****方向2:企业级技术服务外包****方向3:技…...

定制一款国密浏览器(11):SM2算法的椭圆曲线参数定义

在国密算法中,SM2 算法是最复杂的,不仅是算法本身比较复杂,其应用场景也复杂。不管 SM2 算法本身有多复杂,作为开发者,我们需要知道的是 SM2 算法是建立在椭圆曲线算法(ECC)之上。关于 SM2 算法和椭圆曲线算法之间的关系,参考我之前的一篇文章: 解读国密非对称加密算…...

RAG技术与应用---0426

大语言模型>3.10 课程中会用到python 工具箱&#xff1a; faiss,modelscope,langchain,langchain_community&#xff0c;PyPDF2 1&#xff09;大模型应用开发的三种模式 提示词没多少工作量&#xff0c;微调又花费时间费用&#xff0c;RAG是很多公司招聘用来对LLM进行应用…...

STM32的开发环境介绍

目录 STM32软件环境 Keil软件在线安装 其他软件环境安装 STM32开发的几种方式 STM32寄存器版本和库函数版本 标准外设库的作用&#xff1a; STM32软件环境 STM32 的集成开发环境&#xff08;IDE&#xff09;&#xff1a;编辑编译软件 常见的环境&#xff1a; (1)KEIL&a…...

【生成式AI】从原理到实践的创造性革命

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;文生图&#xff09; 三、性能对比测试方法论量化数据对比结果分析 四、最佳实践推荐方…...

Win下Pycharm运行/调试配置脚本形参执行替换Linux下终端执行,进行调试需要注意的

Linux下终端执行 python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpuWin下Pycharm运行/调试配置脚本形参执行 主要改红色两处 如果工作目录正确&#xff0c;脚本形参…...

Pytorch(无CPU搭建)+Jupyter

2024年最新最简洁深度学习环境配置&#xff1a;AnacondaPyTorch(CPU、GPU)VScodePycahrm_哔哩哔哩_bilibili 跟 PyCharm說再見, [VSCode] PythonJupyter 超牛逼的功能 ! 5分鐘大幅提升編碼效率~ 數據分析、AI大神必備_哔哩哔哩_bilibili...

类的高级特性与语法细节

static 静态关键字 Java中的static关键字用于修饰类的成员&#xff08;属性或方法&#xff09;&#xff0c;表示“静态”的含义&#xff0c;即属于类本身&#xff0c;而非某个对象。静态成员在内存中只有一份&#xff0c;在类加载时初始化&#xff0c;生命周期贯穿程序运行始终…...

基于 RAG 的 Text2SQL 全过程的 Python 实现详解,结合 LangChain 框架实现自然语言到 SQL 的转换

什么是RAG 一、核心流程&#xff1a;三阶段协同 RAG的核心流程分为检索&#xff08;Retrieval&#xff09;、增强&#xff08;Augmentation&#xff09;、生成&#xff08;Generation&#xff09;三个阶段&#xff0c;形成“检索→知识整合→生成”的闭环。 1. 检索&#xff…...

使用 OpenCV 进行视觉图片调整的几种常见方法

以下是使用 OpenCV 进行视觉图片调整的几种常见方法&#xff1a; 调整图片大小 指定目标尺寸&#xff1a;使用cv2.resize()函数&#xff0c;通过设定目标图像的宽度和高度来调整图片大小。例如&#xff0c;将图片调整为 200x200 像素&#xff1a; import cv2 image cv2.imre…...

【特殊场景应对9】视频简历的适用场景与风险分析

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…...

Dify 1.3.0 为 LLM 节点引入了结构化输出支持

Dify 1.3.0 为 LLM 节点引入了结构化输出支持 0. 引言1. 使用方法 0. 引言 Dify 1.3.0 开始&#xff0c;在 LLM 节点支持结构化输出&#xff1a;Dify 已经为 LLM 节点引入了结构化输出支持。这意味着您的语言模型现在可以返回整齐组织且易于处理的数据。后端实现由 Nov1c444 在…...

【Linux网络】HTTP协议全解析 - 从请求响应到方法与Header

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

JSP实现用户登录注册系统(三天内自动登录)

JSP实现用户登录注册系统 引言 在Web开发中&#xff0c;用户认证是最基础且核心的功能之一。本文基于JSP技术&#xff0c;实现了一个包含注册、登录、自动登录&#xff08;3天内&#xff09;、退出等功能的用户系统&#xff0c;并在过程中解决了Cookie字符错误、错误信息回显…...

大数据模型现状分析

大数据模型现状分析 一、引言 在当今数字化时代&#xff0c;数据以前所未有的速度增长&#xff0c;大数据已成为推动各行业发展的核心动力。大数据模型作为挖掘数据价值的关键工具&#xff0c;正受到广泛关注与深入研究。通过对海量、多样且高速产生的数据进行处理和分析&…...

代码随想录算法训练营第二十八天

LeetCode题目: 509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯2444. 统计定界子数组的数目(每日一题) 其他: 今日总结 往期打卡 动态规划解题步骤: 确定递推公式确定遍历顺序记忆化搜索(确定dp数组以及下标的含义与初始化值)递推优化与空间优化 509. 斐波那契数 跳转: 5…...

HTML与安全性:XSS、防御与最佳实践

HTML 与安全性&#xff1a;XSS、防御与最佳实践 前言 现代 Web 应用程序无处不在&#xff0c;而 HTML 作为其基础结构&#xff0c;承载着巨大的安全责任。跨站脚本攻击&#xff08;XSS&#xff09;仍然是 OWASP Top 10 安全威胁之一&#xff0c;对用户数据和网站完整性构成严…...

三维重建(二十)——思路整理与第一步的进行

文章目录 一、整体思路二、细分三、之前存在问题四、任务安排五、第一步——找到内参并选定一种5.1 train的RTK5.2 test的RTK5.3 各选择一个5.3.1 train-185.3.2 test-193一、整体思路 这部分主要是宏观的讲一下整体框架。 从gshell里面提取核心参数,放入py3d,渲染出图片,…...

判断 ONNX 模型是否支持 GPU

&#x1f50d; 判断 ONNX 模型是否支持 GPU 的几个关键点&#xff1a; ✅ 1. 检查模型支持的 Execution Provider 可以通过下面的代码打印出来当前模型使用了什么设备&#xff1a; 需要安装好&#xff1a;onnxruntime-gpu import onnxruntime as ort session ort.InferenceSe…...

CANFD技术在实时运动控制系统中的应用:协议解析、性能测试与未来发展趋势

摘要&#xff1a; 本文深入探讨了CANFD技术在实时运动控制系统中的应用。通过对传统CAN协议与CANFD协议的对比分析&#xff0c;详细阐述了CANFD在提升数据传输效率、增强系统实时性与稳定性方面的优势。文章结合具体测试案例&#xff0c;对CANFD总线的性能指标进行了全面评估&a…...

Java基础 4.26

1.访问修饰符细节 package com.logic.modifier;public class A {public int n1 100;protected int n2 200;int n3 300;private int n4 400;public void m1() {//在同一个类中 可以访问public protected 默认 private 修饰属性和方法System.out.println(n1 " " …...

山东大学离散数学第九章习题解析

参考教材&#xff1a;离散数学教程&#xff0c;徐秋亮 / 栾俊峰 / 卢雷 / 王慧 / 赵合计 编著&#xff0c;山东大学计算机科学与技术学院 注&#xff1a;该解析为个人所写&#xff0c;涵盖了 2022-2023-2 学期赵合计老师所布置的所有课本习题&#xff1b;由于学识、认识及经验…...

5G融合消息PaaS项目深度解析 - Java架构师面试实战

5G融合消息PaaS项目深度解析 - Java架构师面试实战 场景&#xff1a;互联网大厂Java求职者面试&#xff0c;面试官针对5G融合消息PaaS项目进行提问。 第一轮提问 面试官&#xff1a;马架构&#xff0c;请简要介绍5G融合消息PaaS平台的核心功能和应用场景。 马架构&#xff…...

React-Redux

1、安装 npm i redux react-redux reduxjs/toolkit 2、基础使用方式&#xff08;无 Toolkit&#xff09; &#xff08;1&#xff09;核心Api createStore&#xff1a;创建数据仓库&#xff1b;store.dispatch()&#xff1a;用于派发action&#xff0c;执行修改动作&#xf…...

Linux基础篇、第4章_03系统磁盘高级管理LVM 逻辑卷管理器

题目&#xff1a;系统磁盘高级管理LVM 逻辑卷管理器 版本号: 1.0,0 作者: 老王要学习 日期: 2025.04.26 适用环境: Centos7 文档说明 本文档聚焦于 Centos7 系统下的磁盘高级管理&#xff0c;围绕 LVM 逻辑卷管理器展开。详细介绍了物理卷、卷组和逻辑卷的创建、管理与删除操…...

代码随想录算法训练营Day36

力扣1049.最后一块石头的重量Ⅱ【medium】 力扣474.一和零【meidum】 一、力扣1049.最后一块石头的重量Ⅱ【medium】 题目链接&#xff1a;力扣1049.最后一块石头的重量Ⅱ 视频链接&#xff1a;代码随想录 1、思路 把这个问题转换成尽可能将 stones 分成两个等分子集&#xf…...

iperf网络性能测试

iperf 是一个网络性能测试工具&#xff0c;用于测量网络带宽、延迟、抖动等性能指标。它支持 TCP 和 UDP 协议&#xff0c;可以在客户端和服务器模式下运行&#xff0c;广泛用于网络性能评估和故障排查。 主要功能 带宽测试&#xff1a;测量网络的最大可用带宽。延迟测试&…...

基于 Nginx 的 WebSocket 反向代理实践

一、HTTP 协议升级机制回顾 Upgrade/Connection 报头 客户端发起 WebSocket 握手时&#xff0c;会在普通 HTTP 请求中加入Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: <随机值> Sec-WebSocket-Version: 13服务端若接受协议切换&#xff0c;会以 101 Swit…...

C++ 同步原语

同步原语&#xff08;Synchronization Primitives&#xff09;是操作系统和编程语言提供的基本工具&#xff0c;用于在多线程或并发环境中协调线程&#xff08;或进程&#xff09;之间的执行顺序&#xff0c;管理共享资源的访问&#xff0c;以避免数据竞争&#xff08;data rac…...

mmap详解

mmap详解 mmap基础概念mmap内存映射原理mmap相关函数调用mmap的使用细节mmap和常规文件操作的区别 mmap基础概念 mmap是一种内存映射文件的方法&#xff0c;即将一个文件或者其它对象映射到进程的地址空间&#xff0c;实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一…...

基于大模型底座重构司法信息系统

前置篇章&#xff1a;法律智能体所需的基础知识 构建一个高效的法律智能体&#xff0c;特别是在基于RAG&#xff08;Retrieval-Augmented Generation&#xff09;架构的背景下&#xff0c;需要融合多种学科和领域的知识。以下是对法律智能体开发和应用所需核心基础知识的简要介…...

如何判断你的PyTorch是GPU版还是CPU版?

如何判断你的PyTorch是GPU版还是CPU版&#xff1f; PyTorch作为当前最流行的深度学习框架之一&#xff0c;支持在CPU和GPU(NVIDIA CUDA)上运行。对于深度学习开发者来说&#xff0c;正确识别PyTorch版本至关重要&#xff0c;因为GPU版本可以带来10-100倍的性能提升。本文将全面…...

Leetcode刷题记录19——无重复字符的最长子串

题源&#xff1a;https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述&#xff1a; 思路一&#xff1a; 通过两个指针&#xff0c;第一个指针指向字串的开头&#xff0c;第二…...

SpringBoot程序的创建以及特点,配置文件,LogBack记录日志,配置过滤器、拦截器、全局异常

一、创建一个SpringBoot程序 在之前写过一篇如何创建SpringBoot程序&#xff0c;两种方式&#xff0c;方法1&#xff1a;通过maven创建SpringBoot项目 方法2&#xff1a;使用Spring Initialzr创建一个SpringBoot项目&#xff08;缺点&#xff1a;当创建项目时网络中断&#x…...

Ubuntu20.04 Ollama 配置相关

Ubuntu20.04 Ollama 配置相关 Ubuntu20.04 Ollama 配置相关ollama修改配置文件常用命令修改端口局域网访问 Ubuntu20.04 Ollama 配置相关 ollama修改配置文件常用命令 sudo gedit /etc/systemd/system/ollama.service systemctl daemon-reload systemctl restart ollama sys…...

python调用ffmpeg对截取视频片段,可批量处理

本文完全免费&#xff0c;非VIP文章&#xff0c;如果您发现需VIP可看全文&#xff0c;请邮箱联系我&#xff1a;openwebsitefoxmail.com 文章目录 python调用ffmpeg对截取视频片段&#xff0c;可批量处理用到的ffmpeg命令python调用bash指令的方法python处理代码准备函数python…...

【WLAN】华为无线AC双机热备负载分担—双链路热备份

配套实验拓扑可以下载学习交流&#xff1a;【WLAN】华为无线AC双机负载分担—双链路热备份 双链路备份的传统配置方式是在主、备AC上为AP指定对方AC的IP地址&#xff0c;并分别配置优先级&#xff0c;通过比较优先级的方式来确定主、备AC。为简化配置逻辑&#xff0c;新配置方式…...

学习笔记——《Java面向对象程序设计》-内部类、匿名类、异常类

参考教材&#xff1a; Java面向对象程序设计&#xff08;第3版&#xff09;微课视频版 清华大学出版社 1、内部类 类中可以有两种重要的成员&#xff1a;成员变量和方法。实际上Java还允许类可以有一种成员&#xff1a;内部类。 内部类可以使用其外嵌类中的成员变量&#x…...

BS架构与CS架构的对比分析:了解两种架构的不同特点与应用

目录 前言1. BS架构概述1.1 什么是BS架构&#xff1f;1.2 BS架构的主要特点 2. CS架构概述2.1 什么是CS架构&#xff1f;2.2 CS架构的主要特点 3. BS架构与CS架构的对比3.1 用户体验3.2 安全性3.3 适用场景 4. 结语 前言 在现代软件开发中&#xff0c;架构设计决定了应用的性能…...

ARM架构的微控制器总线矩阵优先级与配置

在 ARM 架构的微控制器中,总线矩阵的优先级与配置是确保多主设备(如 CPU、DMA 等)高效协同工作的关键。总线矩阵通过仲裁逻辑(Arbiter)管理主设备对共享资源的访问冲突,优先级配置直接影响系统的实时性、带宽利用率和任务响应速度。以下是总线矩阵优先级机制及配置的详细…...

高速系统设计理论基础

如前一章所述&#xff0c;在进行高速系统设计时&#xff0c;最重要的是要从基本理论出发&#xff0c;只有掌握了基本理论&#xff0c;然后才能谈到其他的设计技术和技巧。本章主要介绍微波电磁理论基础&#xff0c;及其在高速系统设计中的工程化分析方法和应用。通过对微波信号…...

Python-MCPServer开发

Python-MCPServer开发 使用FastMCP开发【SSE模式的MCPServer】&#xff0c;熟悉【McpServer编码过程】【McpServer调试方法】 1-核心知识点 1-熟悉【SSE模式的MCPServer】开发2-熟悉【stdio模式的MCPServer】开发3-熟悉【启动MCPServer】的三种方式 3.1-直接启动:python mcp_s…...

Springboot集成SSE实现消息推送+RabbitMQ解决集群环境下SSE通道跨节点事件推送问题

SSE连接介绍&#xff0c;SSE对比WebSocket Server-Sent Events (SSE) 是一种基于 HTTP 协议的轻量级实时通信技术&#xff0c;允许服务器向客户端推送数据。以下是 SSE 的主要特点&#xff1a; 单向通信&#xff1a;SSE 仅支持服务器向客户端推送数据&#xff0c;客户端不能通…...

Kettle学习

一、Kettle 简介 Kettle(现称为 Pentaho Data Integration)是一款开源ETL工具,支持从多种数据源抽取、转换和加载数据,广泛应用于数据仓库构建、数据迁移和清洗。其核心优势包括: 可视化操作:通过拖拽组件设计数据处理流程(转换和作业)。多数据源支持:数据库(MySQL/…...

科学养生,开启健康生活新方式

在快节奏的现代生活中&#xff0c;健康养生已成为人们关注的焦点。科学的养生方式不仅能增强体质&#xff0c;还能有效预防疾病&#xff0c;提升生活质量。​ 合理饮食是健康养生的基础。日常饮食应遵循均衡原则&#xff0c;保证蛋白质、碳水化合物、脂肪、维生素和矿物质的合…...

brew 安装openjdk查看其版本

使用brew&#xff08;如果你使用Homebrew安装&#xff09; 如果你通过Homebrew安装了OpenJDK&#xff0c;可以使用以下命令来查看安装的版本,&#xff1a; brew list --versions openjdk8 这将会列出所有通过Homebrew安装的OpenJDK版本及其版本号。 3. 查看/usr/libexec/ja…...

基于大模型对先天性幽门肥厚性狭窄预测及临床方案的研究报告

目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法与创新点 二、先天性幽门肥厚性狭窄概述 2.1 定义与发病机制 2.2 流行病学特征 2.3 病理与解剖特点 三、大模型预测原理及构建 3.1 大模型简介 3.2 数据收集与预处理 3.3 模型训练与优化 四、大…...

【开源】基于51单片机的温湿度检测报警系统

项目说明 该设计是一个简易的基于51单片机的温湿度检测报警系统&#xff0c;功能说明&#xff1a; 使用LCD1602实时显示当前的温湿度。读取DHT11的温湿度值&#xff0c;如果温度大于最大设定值&#xff0c;LED1亮&#xff0c;如果温度小于最小设定值&#xff0c;LED2亮。如果…...

2025年4月25日第一轮

1.作文 The increasing reliance on onlineshopping has brought both convince and challenge to consumsers.It is of great nesscity for poeple to adapt better strategies to cope with these challenges.Resons and concrete evidence to support my view are as fello…...