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

动态多因子策略

策略其核心思想是通过多种技术指标的结合,动态调整交易信号,以实现更精准的市场进出和风险管理。

 

交易逻辑思路

1. 初始化与数据更新:

   - 在每个Bar的开盘时,更新当日的最高价、最低价和收盘价。

   - 计算短期和长期的移动平均线(MA)以及布林带的上轨、中轨和下轨。

 

2. 高低点突破判断:

   - 通过比较当前价格与前一个Bar的价格,判断是否出现高点突破(DT)或低点突破(KT)。

   - 进一步判断这些突破是否发生在移动平均线之上或之下。

 

3. 布林带计算:

   - 使用不同周期的布林带来捕捉价格波动的范围和趋势。

   - 布林带的上轨和下轨分别表示价格的高点和低点,中间线则表示价格的平均水平。

 

4. MACD指标计算:

   - 计算不同周期的MACD值及其平均值,以及MACD差值。

   - 通过MACD差值的正负来判断市场的多空趋势。

 

5. 入场条件判断:

   - 结合MACD差值、高低点突破和布林带的位置,判断多头和空头的入场条件。

   - 入场时需要满足特定的时间窗口和价格条件,以确保交易信号的有效性。

 

6. 出场条件判断:

   - 设定跟踪止损机制,根据价格波动动态调整止损位。

   - 当价格触及止损位或满足特定条件时,执行出场操作。

 

7. 过滤集合竞价:

   - 在集合竞价期间,忽略交易信号,以避免因市场不稳定性导致的误操作。

 

策略特点

1. 多因子结合:

   - 策略结合了移动平均线、布林带和MACD等多种技术指标,通过多因子的综合分析,提高交易信号的准确性和可靠性。

 

2. 动态调整:

   - 根据市场情况动态调整布林带和MACD的计算参数,以适应不同市场环境下的交易需求。

 

3. 风险管理:

   - 设定明确的入场和出场条件,结合跟踪止损机制,有效控制风险,保护投资收益。

 

4. 时间窗口限制:

   - 仅在特定的开仓时间和截止时间内进行交易,避免在非交易时段产生不必要的交易信号。

 

5. 过滤机制:

   - 通过过滤集合竞价和不满足条件的时间段,减少噪音干扰,提高策略的执行效率。

 

该策略通过多因子的综合分析和动态调整,旨在实现更精准的市场进出和风险管理,适用于多种市场环境下的交易需求。

策略思维导图:

 

 

 

//------------------------------------------------------------------------

// 简称: MyStrategy

// 名称: 动态多因子策略

// 类别: 公式应用

// 类型: 用户应用

// 输出:

//------------------------------------------------------------------------

 

Params

    Numeric p_param1(1.3); // 系数

    Numeric p_param2(0.7); // 系数

    Numeric Length(127);   // 布林轨周期

    Numeric Length1(7);    // 布林轨周期

    Numeric TrailingStart(200); // 跟踪止损启动点

    Numeric TrailingStop(25);   // 跟踪止损幅度

    Numeric tradBegin(900);     // 开仓时间

    Numeric tradEnd(2330);      // 开仓截止时间

    Numeric FastLength(4);      // 快速均线周期

    Numeric SlowLength(8);      // 慢速均线周期

    Numeric MACDLength(3);      // MACD 均线周期

    Numeric Offset(2);          // 布林轨偏移

    Numeric Offset1(2);         // 布林轨偏移

    Numeric OffsetPoint(2);     // 偏移点数

 

Vars

    Numeric p_dParam1(2);       // 周期

    Numeric p_dParam2(4);       // 周期

    Series<Numeric> MA1;        // 均线1

    Series<Numeric> MA2;        // 均线2

    Series<Numeric> MA3;        // 均线3

    Series<Bool> DT;            // 高点突破标志

    Series<Bool> KT;            // 低点突破标志

    Series<Bool> DT1;           // 高点突破标志1

    Series<Bool> KT1;           // 低点突破标志1

    Series<Bool> DT2;           // 高点突破标志2

    Series<Bool> KT2;           // 低点突破标志2

    Series<Bool> DT3;           // 高点突破标志3

    Series<Bool> KT3;           // 低点突破标志3

    Series<Bool> Condition1;    // 条件1

    Series<Bool> Condition2;    // 条件2

    Series<Bool> Condition3;    // 条件3

    Series<Bool> Condition4;    // 条件4

    Series<Numeric> UpLine;     // 上轨

    Series<Numeric> DownLine;   // 下轨

    Series<Numeric> MidLine;    // 中间线

    Series<Numeric> Band;       // 布林带宽度

    Series<Numeric> UpLine1;    // 上轨1

    Series<Numeric> DownLine1;  // 下轨1

    Series<Numeric> MidLine1;   // 中间线1

    Series<Numeric> Band1;      // 布林带宽度1

    Numeric MyExitPrice;        // 出场价格

    Series<Numeric> MACDValue1; // MACD值1

    Series<Numeric> MACDValue3; // MACD值3

    Series<Numeric> MACDValue5; // MACD值5

    Series<Numeric> MACDValue15; // MACD值15

    Series<Numeric> MACDValue30; // MACD值30

    Series<Numeric> AvgMACD1;   // MACD均线1

    Series<Numeric> AvgMACD3;   // MACD均线3

    Series<Numeric> AvgMACD5;   // MACD均线5

    Series<Numeric> AvgMACD15;  // MACD均线15

    Series<Numeric> AvgMACD30;  // MACD均线30

    Series<Numeric> MACDDiff1;  // MACD差值1

    Series<Numeric> MACDDiff3;  // MACD差值3

    Series<Numeric> MACDDiff5;  // MACD差值5

    Series<Numeric> MACDDiff15; // MACD差值15

    Series<Numeric> MACDDiff30; // MACD差值30

    Series<Bool> LongEntryCon;  // 多头入场条件

    Series<Bool> ShortEntryCon; // 空头入场条件

    Series<Bool> LongExitCon;   // 多头出场条件

    Series<Bool> ShortExitCon;  // 空头出场条件

    Numeric m_buyRange;         // 买入范围

    Numeric m_sellRange;        // 卖出范围

    Numeric m_upper;            // 上轨

    Numeric m_lower;            // 下轨

    Numeric m_minPoint;         // 最小变动点

    Numeric m_offset;           // 偏移

    Series<Numeric> m_barCnt;   // 当前Bar计数

    Series<Numeric> m_dayHigh;  // 当日高点

    Series<Numeric> m_dayLow;   // 当日低点

    Series<Numeric> m_dayClose; // 当日收盘价

    Numeric m_highest;          // 最高价

    Numeric m_lowest;           // 最低价

    Numeric m_closeHigh;        // 收盘高点

    Numeric m_closeLow;         // 收盘低点

    Numeric i;                  // 循环变量

    Numeric n;                  // 临时变量

    Series<Numeric> HighestAfterEntry; // 多头盈利峰值价

    Series<Numeric> LowestAfterEntry;  // 空头盈利峰值价

    Numeric StopLine;           // 止损线

    Series<Bool> bOut;          // 出场标志

    Numeric MyPrice;            // 我的价格

    Series<Numeric> ATRDD;      // ATR吊灯止损

 

Events

    OnBar(ArrayRef<Integer> indexs)

    {

        // 初始化变量

        If(CurrentBar == 0 || Date != Date[1])

        {

            m_barCnt = 1;

            m_dayHigh = High;

            m_dayLow = Low;

        }

        Else

        {

            m_barCnt = m_barCnt + 1;

            If(High > m_dayHigh)

                m_dayHigh = High;

            If(Low < m_dayLow)

                m_dayLow = Low;

        }

        m_dayClose = Close;

 

        // 计算均线

        MA1 = AverageFC((High + Low + Close) / 3, MACDLength);

        MA2 = AverageFC((High + Low + Close) / 3, FastLength);

        MA3 = AverageFC((High + Low + Close) / 3, SlowLength);

 

        // 判断高低点突破

        DT = High > High[1];

        KT = Low < Low[1];

        DT1 = High > MA1;

        KT1 = Low < MA1;

        DT2 = MA1 > MA2;

        KT2 = MA1 < MA2;

        DT3 = MA2 > MA3;

        KT3 = MA2 < MA3;

 

        // 计算布林带

        MidLine = AverageFC(Close, Length);

        Band = StandardDev(Close, Length, 2);

        UpLine = MidLine + Offset * Band;

        DownLine = MidLine - Offset * Band;

 

        MidLine1 = AverageFC(Close, Length - Length1);

        Band1 = StandardDev(Close, Length - Length1, 2);

        UpLine1 = MidLine1 + Offset1 * Band1;

        DownLine1 = MidLine1 - Offset1 * Band1;

 

        // 判断条件

        Condition1 = UpLine1[1] < UpLine[1];

        Condition2 = DownLine1[1] > DownLine[1];

        Condition3 = UpLine1[1] > UpLine[1];

        Condition4 = DownLine1[1] < DownLine[1];

 

        // 计算MACD

        MACDValue1 = XAverage((Low + High + Close) / 3, FastLength) - XAverage((Low + High + Close) / 3, SlowLength);

        AvgMACD1 = XAverage(MACDValue1, MACDLength);

        MACDDiff1 = MACDValue1 - AvgMACD1;

 

        MACDValue3 = MinsXAverage(3, (Low + High + Close) / 3, FastLength) - MinsXAverage(3, (Low + High + Close) / 3, SlowLength);

        AvgMACD3 = MinsXAverage(3, MACDValue3, MACDLength);

        MACDDiff3 = MACDValue3 - AvgMACD3;

 

        MACDValue5 = MinsXAverage(5, (Low + High + Close) / 3, FastLength) - MinsXAverage(5, (Low + High + Close) / 3, SlowLength);

        AvgMACD5 = MinsXAverage(5, MACDValue5, MACDLength);

        MACDDiff5 = MACDValue5 - AvgMACD5;

 

        MACDValue15 = MinsXAverage(8, (Low + High + Close) / 3, FastLength) - MinsXAverage(8, (Low + High + Close) / 3, SlowLength);

        AvgMACD15 = MinsXAverage(8, MACDValue15, MACDLength);

        MACDDiff15 = MACDValue15 - AvgMACD15;

 

        MACDValue30 = MinsXAverage(35, (Low + High + Close) / 3, FastLength) - MinsXAverage(35, (Low + High + Close) / 3, SlowLength);

        AvgMACD30 = MinsXAverage(35, MACDValue30, MACDLength);

        MACDDiff30 = MACDValue30 - AvgMACD30;

 

        // 判断入场条件

        LongEntryCon = MACDDiff1 > 0 && MACDDiff3 > 0 && MACDDiff5 > 0 && MACDDiff15 > 0 && MACDDiff30 > 0;

        ShortEntryCon = MACDDiff1 < 0 && MACDDiff3 < 0 && MACDDiff5 < 0 && MACDDiff15 < 0 && MACDDiff30 < 0;

        LongExitCon = MACDDiff15 < 0;

        ShortExitCon = MACDDiff15 > 0;

 

        // 过滤集合竞价

        If(BarStatus == 2 && Time == 0.090000 && High == Low) return; // 集合竞价过滤1

        If(BarStatus == 2 && Time == 0.090000 && CurrentTime < 0.090000) return; // 集合竞价过滤2

 

        // 计算买入和卖出范围

        For i = 1 To p_dParam1

        {

            If(i == 1)

            {

                n = m_barCnt;

                m_highest = m_dayHigh[n];

                m_lowest = m_dayLow[n];

                m_closeHigh = m_dayClose[n];

                m_closeLow = m_dayClose[n];

            }

            Else

            {

                n = n + m_barCnt[n];

            }

            If(m_dayHigh[n] > m_highest) m_highest = m_dayHigh[n];

            If(m_dayLow[n] < m_lowest) m_lowest = m_dayLow[n];

            If(m_dayClose[n] > m_closeHigh) m_closeHigh = m_dayClose[n];

            If(m_dayClose[n] < m_closeLow) m_closeLow = m_dayClose[n];

        }

        m_buyRange = Max(m_highest - m_closeLow, m_closeHigh - m_lowest);

 

        For i = 1 To p_dParam2

        {

            If(i == 1)

            {

                n = m_barCnt;

                m_highest = m_dayHigh[n];

                m_lowest = m_dayLow[n];

                m_closeHigh = m_dayClose[n];

                m_closeLow = m_dayClose[n];

            }

            Else

            {

                n = n + m_barCnt[n];

            }

            If(m_dayHigh[n] > m_highest) m_highest = m_dayHigh[n];

            If(m_dayLow[n] < m_lowest) m_lowest = m_dayLow[n];

            If(m_dayClose[n] > m_closeHigh) m_closeHigh = m_dayClose[n];

            If(m_dayClose[n] < m_closeLow) m_closeLow = m_dayClose[n];

        }

        m_sellRange = Max(m_highest - m_closeLow, m_closeHigh - m_lowest);

 

        // 计算上下轨

        m_upper = OpenD(0) + m_buyRange * p_param1;

        m_lower = OpenD(0) - m_sellRange * p_param2;

        m_minPoint = PriceScale * MinMove;

 

        // 开仓逻辑

        If(MarketPosition != 1 && Time >= 0.0001 * tradBegin And Time <= tradEnd * 0.0001 And Condition2[1] And Open > MidLine[1])

        {

            If(High >= m_upper AND LongEntryCon[1] And DT1[1] And DT2[1] And DT3[1])

            {

                Buy(0, Max(Open, m_upper));

                Return;

            }

        }

 

        If(MarketPosition != 1 && Time >= 0.0001 * tradBegin And Time <= tradEnd * 0.0001 And Condition3[1] And Open > MidLine[1])

        {

            If(High >= m_upper)

            {

                Buy(0, Max(Open, m_upper));

                Return;

            }

        }

 

        If(MarketPosition != -1 && Time >= 0.0001 * tradBegin And Time <= tradEnd * 0.0001 And Condition1[1] And Open < MidLine[1])

        {

            If(Low <= m_lower AND ShortEntryCon[1] And KT1[1] And KT2[1] And KT3[1])

            {

                SellShort(0, Min(Open, m_lower));

                Return;

            }

        }

 

        If(MarketPosition != -1 && Time >= 0.0001 * tradBegin And Time <= tradEnd * 0.0001 And Condition4[1] And Open < MidLine[1])

        {

            If(Low <= m_lower)

            {

                SellShort(0, Min(Open, m_lower));

                Return;

            }

        }

 

        // 跟踪止损逻辑

        If(BarsSinceEntry == 1)

        {

            HighestAfterEntry = AvgEntryPrice;

            LowestAfterEntry = AvgEntryPrice;

        }

        Else If(BarsSinceEntry > 1)

        {

            HighestAfterEntry = Max(HighestAfterEntry[1], High[1]);

            LowestAfterEntry = Min(LowestAfterEntry[1], Low[1]);

        }

        Else

        {

            HighestAfterEntry = HighestAfterEntry[1];

            LowestAfterEntry = LowestAfterEntry[1];

        }

 

        If(MarketPosition == 1 And BarsSinceEntry > 0)

        {

            If(Close[1] <= EntryPrice - EntryPrice * TrailingStop / 1000)

            {

                Sell(0, Open);

                PlotString("Mark", "止损", Low, White);

            }

        }

 

        If(MarketPosition == -1 And BarsSinceEntry > 0)

        {

            If(Close[1] >= EntryPrice + EntryPrice * TrailingStop / 1000)

            {

                BuyToCover(0, Open);

                PlotString("Mark", "止损", Low, White);

            }

        }

 

        If(MarketPosition == 1 And BarsSinceEntry > 0 And HighestAfterEntry >= EntryPrice * (1 + TrailingStart / 1000))

        {

            If(Low <= HighestAfterEntry[1] - EntryPrice * TrailingStop / 1000)

            {

                MyPrice = HighestAfterEntry[1] - EntryPrice * TrailingStop / 1000;

                If(Open < MyPrice) MyPrice = Open;

                Sell(0, MyPrice);

                bOut = True;

            }

        }

 

        If(MarketPosition == -1 And BarsSinceEntry > 0 And LowestAfterEntry <= EntryPrice * (1 - TrailingStart / 1000))

        {

            If(High >= LowestAfterEntry[1] + EntryPrice * TrailingStop / 1000)

            {

                MyPrice = LowestAfterEntry[1] + EntryPrice * TrailingStop / 1000;

                If(Open > MyPrice) MyPrice = Open;

                BuyToCover(0, MyPrice);

                bOut = True;

            }

        }

    }

//------------------------------------------------------------------------

// 编译版本 GS2024.10.21

// 版权所有 TradeBlazer Software 2003-2025

// 更改声明 TradeBlazer Software保留对TradeBlazer平台每一版本的TradeBlazer公式修改和重写的权利

//------------------------------------------------------------------------

相关文章:

动态多因子策略

策略其核心思想是通过多种技术指标的结合&#xff0c;动态调整交易信号&#xff0c;以实现更精准的市场进出和风险管理。 交易逻辑思路 1. 初始化与数据更新&#xff1a; - 在每个Bar的开盘时&#xff0c;更新当日的最高价、最低价和收盘价。 - 计算短期和长期的移动平均线&…...

STC32G12K128实战:串口通信

STC32G12K128芯片写一个按键通过串口1发送字符串的程序。首先&#xff0c;确认芯片的串口1配置。STC32G系列通常使用UART1&#xff0c;相关的寄存器是P_SW1来选择引脚。默认情况下&#xff0c;UART1的TX是P3.1。 接下来是设置定时器作为波特率发生器。通常用定时器2&#xff0c…...

基于javaweb的SpringBoot高校图书馆座位预约系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

一种资源有限单片机处理cJSON数据的方法

一般单片机处理cJSON格式的数据都直接使用cJSON库&#xff0c;但对于Ram较小的单片机&#xff0c;由于资源有限&#xff0c;这并不合适&#xff0c;但我们可以根据cJSON数据的特定格式&#xff0c;使用土方法&#xff0c;直接对字符进行查找裁剪即可 //截取字符串str中字符a与…...

【2025版】Spring Boot面试题

文章目录 1. Spring, Spring MVC, SpringBoot是什么关系&#xff1f;2. 谈一谈对Spring IoC的理解3. Component 和 Bean 的区别&#xff1f;4. Autowired 和 Resource 的区别&#xff1f;5. 注入Bean的方法有哪些&#xff1f;6. 为什么Spring 官方推荐构造函数注入&#xff1f;…...

C++——类和对象(1)

文章目录 一、前言二、类和对象上2.1 类的定义2.1.1 定义格式一2.1.2 定义格式二2.1.3 注意点 2.2 访问限定符2.2.1 访问限定符的用法 2.3 类域2.4 类的实例化2.4.1 实例化的概念2.4.2 实例化具体举例2.4.3类的实例化对象大小 2.5 this指针2.5.1 this指针的概念2.5.6 this指针的…...

【行为型之观察者模式】游戏开发实战——Unity事件驱动架构的核心实现策略

文章目录 &#x1f3af; 观察者模式&#xff08;Observer Pattern&#xff09;深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码&#xff08;玩家血量监控系统&#xff09;1. 定义观察者接口与主题基类2. 实现具体主题&#xff08;玩家血量&#xff09;3. 实现…...

Java基础语法之数组

数组 一、认识数组 1.什么是数组 数组就是一个容器&#xff0c;用来存一批同种类型的数据。 举例 20, 10, 80, 60, 90 int[] arr {20, 10, 80, 60, 90};张三, 李四, 王五 String[] names {"张三", "李四", "王五"};2.为什么要使用数组 假设…...

Vue3学习(组合式API——计算属性computed详解)

目录 一、计算属性computed。 Vue官方提供的案例。(普通写法与计算属性写法) 使用计算属性computed重构——>简化描述响应式状态的复杂逻辑。 &#xff08;1&#xff09;计算属性computed小案例。 <1>需求说明。&#xff08;筛选原数组——>得新数组&#xff09; &…...

高海拔和远距离的人员识别:面部、体型和步态的融合

大家读完就觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 我们解决了在无约束环境中进行全身人体识别的问题。这个问题出现在诸如IARPA高空和远距离生物识别与身份识别&#xff08;BRIAR&#xff09;计划等监视场景中&#xff0c;其中生物识别数据是在长…...

《P2345 [USACO04OPEN] MooFest G》

题目背景 P5094 [USACO04OPEN] MooFest G 加强版 题目描述 约翰的 n 头奶牛每年都会参加“哞哞大会”。 哞哞大会是奶牛界的盛事。集会上的活动很多&#xff0c;比如堆干草&#xff0c;跨栅栏&#xff0c;摸牛仔的屁股等等。 它们参加活动时会聚在一起&#xff0c;第 i 头…...

浅浅学:DoIP工作流程及基于DoIP的诊断/刷写工具

注&#xff1a;阅读本文需要对UDS及BootLoader有一定了解&#xff0c;基础内容不做赘述。 在汽车"新四化"浪潮的推动下&#xff0c;智能座舱、自动驾驶、车路协同等创新技术正加速重构行业格局。随着车载ECU数量突破百个量级&#xff0c;软件代码量呈指数级增长——…...

首个专业AI设计Agent发布-Lovart

Lovart是什么 Lovart 是为设计师打造的世界上首个专业设计 Agent。Lovart 能像专业设计师一样思考和执行设计任务&#xff0c;提供高水平的设计方案。基于自然语言交互&#xff0c;用户能快速调整布局、颜色和构图。Lovart 支持从创意拆解到专业交付的全链路设计&#xff0c;单…...

二叉树(中序遍历)

嘿&#xff0c;欢迎来到小巫blog&#xff01;小巫又来啦&#xff01;看到你对二叉树中序遍历这道题有点困惑&#xff0c;别担心&#xff0c;我会一步步带你搞定它&#xff01;这道题是树的基础题目&#xff0c;掌握了它&#xff0c;你对树的遍历就会有很深的理解。我相信&#…...

Ubuntu 系统默认已安装 python,此处只需添加一个超链接即可

步骤 1&#xff1a;确认 Python 3 的安装路径 查看当前 Python 3 的路径&#xff1a; which python3 输出类似&#xff1a; /usr/bin/python3 步骤 2&#xff1a;创建符号链接 使用 ln -s 创建符号链接&#xff0c;将 python 指向 python3&#xff1a; sudo ln -s /usr/b…...

AcroForm JavaScript Promise 对象应用示例: 异步加载PDF文件

这段代码演示了在Adobe Acrobat DC Pro 的 JavaScript 环境中如何使用 Promise 对象处理异步操作。具体功能是&#xff1a; 定义了一个loadFile函数&#xff0c;模拟异步加载PDF文件的操作使用Promise对象封装异步操作&#xff0c;提供成功(resolve)和失败(reject)两种状态通过…...

LeetCode 热题 100 114. 二叉树展开为链表

LeetCode 热题 100 | 114. 二叉树展开为链表 大家好&#xff0c;今天我们来解决一道经典的二叉树问题——二叉树展开为链表。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求将二叉树展开为一个单链表&#xff0c;展开后的单链表应该与二叉树的先序遍历顺序相同。 问题…...

DML和DQL

1. 设置MySQL的储存引擎 上一章的附录里已经将ini设置好了&#xff0c;不用再次设置 2. DML语句 插入单数据记录 插入多数据记录 将查询结果插入新表 更新数据 删除数据 注意&#xff1a;delete删除只会删除数据&#xff0c;不会重置表的现有逻辑&#xff0c;truncate会重置表逻…...

多线程与线程互斥

我们初步学习完线程之后&#xff0c;就要来试着写一写多线程了。在写之前&#xff0c;我们需要继续来学习一个线程接口——叫做线程分离。 默认情况下&#xff0c;新创建的线程是joinable的&#xff0c;线程退出后&#xff0c;需要对其进行pthread_join操作&#xff0c;否则无法…...

BMS工具箱用来执行贝叶斯模型平均(BMA)计算模块

贝叶斯模型平均&#xff08;Bayesian Model Averaging&#xff0c;BMA&#xff09;是一种用于处理模型不确定性的统计方法&#xff0c;通过结合多个模型的预测结果来提高预测的准确性和鲁棒性。在 MATLAB 中&#xff0c;可以使用专门的工具箱&#xff08;如 BMS 工具箱&#xf…...

Java死锁排查:线上救火实战指南

想象一下&#xff0c;你正在值班&#xff0c;突然监控告警红成一片&#xff0c;用户反馈雪花般飘来&#xff1a;“系统卡死了&#xff01;用不了了&#xff01;” —— 这很可能就是Java应用遭遇了“死锁”这个大魔王。这时候&#xff0c;你就是救火队长&#xff0c;首要任务不…...

第十九次博客打卡

今天学习的内容是Java中的常见循环。 在 Java 中&#xff0c;常见的循环结构主要有以下几种&#xff1a;for 循环、while 循环、do-while 循环以及增强型 for 循环&#xff08;也称为 for-each 循环&#xff09;。 1. for 循环 for 循环是一种非常灵活的循环结构&#xff0c…...

智能体制作学习笔记1——智能体

01 智能体_哔哩哔哩_bilibili 大语言模型可以理解成一个很厉害的人。 但是要完成一些特定的工作&#xff0c;除了大语言模型&#xff0c;还需要一些工具和业务流程&#xff0c;这样才能自动化帮我们完成特定的工作&#xff0c;这个就叫做智能体。 突然发现放视频的时候出现了…...

Python常见问题

文章目录 1.python有哪些数据类型2.python中的元组和列表的区别是什么&#xff1f;3.python中的break、continue、pass代表什么意思&#xff1f;4.如何在python中生成一个随机数&#xff1f;5.Python有哪些常见的内置函数&#xff1f;6.请用自己最擅长的编程语言&#xff0c;将…...

小程序 存存上下滑动的页面

推荐阅读文档&#xff1a; Vue3组合式API之getCurrentInstance详解 - 且行且思 - 博客园Vue2中&#xff0c;可以通过this来获取当前组件实例&#xff1b; Vue3中&#xff0c;在setup中无法通过this获取组件实例&#xff0c;console.log(this)打印出来的值是undefined。 在Vue3…...

更换git位置并在pycharm中重新配置

更新 PyCharm 中的 Git 路径 更新 PyCharm 终端的 Shell 路径 检查环境变量 确保系统环境变量中的 Path 包含了新的 Git 安装路径 &#xff0c;如果使用unins0000自动卸载就不会有旧路径。...

AI世界的崩塌:当人类思考枯竭引发数据生态链断裂

AI世界的崩塌&#xff1a;当人类思考枯竭引发数据生态链断裂 ——论过度依赖AI创作对技术进化的反噬 一、数据生态的恶性循环&#xff1a;AI的“自噬危机” 当前AI模型的训练依赖于人类创造的原始数据——书籍、论文、艺术作品、社交媒体动态等。据统计&#xff0c;2025年全球…...

OkHttp连接池

&#x1f9f0; 调整连接池的核心参数 ✅ 最大空闲连接数&#xff08;maxIdleConnections&#xff09;&#xff1a; 含义&#xff1a;连接池中最多保留的空闲连接数量。默认值&#xff1a;5建议值&#xff1a;10~50&#xff08;视并发量而定&#xff09; ✅ 连接保持时间&…...

哈希表的实现01

文章目录 哈希表的实现01哈希概念直接定址法哈希冲突负载因子将关键字转换为整数 哈希函数除法散列法&#xff1a;乘法散列法&#xff08;了解&#xff09;全域散列法&#xff08;了解&#xff09; 处理哈希冲突&#xff08;开放定址法&#xff09;线性探测&#xff1a;二次探测…...

学习日志06 java

还有四天要去比赛了&#xff0c;能赢吗&#xff1f;逼自己一把。。。&#xff01;&#xff01;加油&#xff01; 1 对比一下java重写还是不重写tostring的区别 1. 不重写 toString() 的情况 java class Point {private int x;private int y;public Point(int x, int y) {th…...

spring中的@MapperScan注解详解

一、核心功能与作用 MapperScan是Spring与MyBatis框架集成时用于批量扫描Mapper接口的核心注解&#xff0c;其主要功能包括&#xff1a; 自动注册Mapper接口 通过指定包路径&#xff0c;Spring会自动扫描该路径下的所有Mapper接口&#xff0c;并将其注册为Spring Bean&#x…...

PYTHON训练营DAY25

BUG与报错 一、try else try:# 可能会引发异常的代码 except ExceptionType: # 最好指定具体的异常类型&#xff0c;例如 ZeroDivisionError, FileNotFoundError# 当 try 块中发生 ExceptionType 类型的异常时执行的代码 except: # 不推荐&#xff1a;捕获所有类型的异常&…...

视频图像压缩领域中 DCT 的 DC 系数和 AC 系数详解

引言 在数字图像与视频压缩领域&#xff0c;离散余弦变换&#xff08;Discrete Cosine Transform, DCT&#xff09;凭借其卓越的能量集中特性&#xff0c;成为JPEG、MPEG等国际标准的核心技术。DCT通过将空域信号映射到频域&#xff0c;分离出DC系数&#xff08;直流分量&…...

YOLO v1:目标检测领域的革命性突破

引言 在计算机视觉领域&#xff0c;目标检测一直是一个核心任务&#xff0c;它不仅要识别图像中的物体类别&#xff0c;还要确定物体的精确位置。传统目标检测方法如R-CNN系列虽然准确率高&#xff0c;但计算复杂度高、速度慢。2016年&#xff0c;Joseph Redmon等人提出的YOLO…...

AI智能体 | 使用Coze一键制作“假如书籍会说话”视频,18个作品狂吸17.6万粉,读书博主新标杆!(附保姆级教程)

目录 一、整体工作流设计 二、制作工作流 2.1 开始节点 2.2 大模型_生成对话文案 2.3 代码_字幕切割 2.4 画板_对话背景 2.5 循环_对话语音01 2.5.1 选择器_2 2.5.2 语音合成02 2.5.3 语音合成03 2.5.4 变量聚合_1 2.5.5 视频合成01 2.6 循环_3 2.6.1 选择器_3 …...

HVV蓝队实战面试题

HVV蓝队实战&#xff0c;防守筹备之“部署蜜罐捕获横向扫描行为”。 蜜罐通过模拟内网脆弱服务&#xff08;如SMB、SSH、数据库端口&#xff09;&#xff0c;诱捕攻击者突破边界后的横向探测行为。 通过监测高频端口扫描、非常规协议请求及非授权IP段遍历&#xff0c;结合多源…...

正则表达式(二)-高级应用_谨慎使用

没事建议别瞎用正则表达式,能让后端处理好的数据,尽量后端处理好,减少前端对数据的处理,保证数据原始的完整性,减少前端耗能。(其实就是懒╮(╯▽╰)╭) 1. 分组捕获 分组捕获用于提取匹配的子字符串,使用 () 定义分组。 示例:提取日期中的年、月、日 (\d{4})-(\d{2…...

在K8S集群中部署EFK日志收集

目录 引言环境准备安装自定义资源部署ElasticsearchMaster 节点与 Data 节点的区别生产优化建议安装好以后测试ES是否正常部署Fluentd测试filebeat是否正常推送日志部署Kibana获取账号密码&#xff0c;账号是&#xff1a;elastic集群测试 引言 系统版本为 Centos7.9内核版本为…...

解决常见数据库问题:保障数据安全与稳定的全方位指南

本文结合行业最佳实践与前沿技术&#xff0c;系统性总结数据库运维中的核心问题与解决方案&#xff0c;助力开发者构建高可靠、高性能的数据服务&#xff09; 一、性能优化&#xff1a;从SQL到架构的全面调优 性能问题是数据库运维中最常见的挑战&#xff0c;直接影响用户体验…...

武汉科技大学人工智能与演化计算实验室许志伟课题组参加2025中国膜计算论坛

武汉科技大学人工智能与演化计算实验室许志伟课题组参加2025中国膜计算论坛 2025年5月9日至11日&#xff0c;第五届中国膜计算论坛&#xff08;CWMC 2025&#xff09;在成都信息工程大学隆重召开。会议由 国际膜计算学会&#xff08;IMCS&#xff09; 主办&#xff0c;汇聚了来…...

Femap许可硬件绑定

在电磁仿真领域&#xff0c;Femap软件因其卓越的性能和广泛的应用场景而备受用户青睐。为了确保软件的安全与稳定运行&#xff0c;Femap提供了许可硬件绑定的功能。本文将详细介绍Femap许可硬件绑定的概念和优势&#xff0c;帮助您了解并充分利用这一功能&#xff0c;确保软件在…...

构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践

一、建造者模式的本质与核心价值 在面向对象的软件设计中&#xff0c;创建复杂对象一直是一个需要精心处理的问题。当一个对象的构建需要多个步骤&#xff0c;并且这些步骤具有不同的组合方式时&#xff0c;传统的构造函数方式会显得力不从心。建造者模式&#xff08;Builder …...

vim启动的时候,执行gg

在 Vim 编辑器中&#xff0c;gg 命令是一个非常有用的命令&#xff0c;它可以将光标快速移动到当前窗口的顶部&#xff08;即第一行&#xff09;。如果你想在 Vim 启动时自动执行 gg 命令&#xff0c;有几种方法可以实现这一点&#xff1a; 方法 1&#xff1a;使用 Vim 的启动…...

【SSL部署与优化​】​​HTTP/2与HTTPS的协同效应

HTTP/2与HTTPS的协同效应&#xff1a;为何HTTP/2强制要求TLS 1.2&#xff1f; HTTP/2是HTTP协议的现代升级版&#xff0c;旨在通过多路复用、头部压缩等技术提升性能。然而&#xff0c;HTTP/2的设计与部署与HTTPS&#xff08;TLS加密&#xff09;紧密相关&#xff0c;甚至强制…...

JavaScript篇:揭秘函数式与命令式编程的思维碰撞

大家好&#xff0c;我是江城开朗的豌豆&#xff0c;一名拥有6年以上前端开发经验的工程师。我精通HTML、CSS、JavaScript等基础前端技术&#xff0c;并深入掌握Vue、React、Uniapp、Flutter等主流框架&#xff0c;能够高效解决各类前端开发问题。在我的技术栈中&#xff0c;除了…...

ubuntu24.04上安装NVIDIA driver+CUDA+cuDNN+Anaconda+Pytorch

一、NVIDIA driver 使用Ubuntu系统的&#xff1a;软件和更新——>附加驱动&#xff0c;安装NVIDIA驱动。 二、CUDA 安装命令&#xff1a;sudo apt install nvidia-cuda-toolkit 三、cuDNN cuDNN 9.10.0 Downloads | NVIDIA Developer 四、Anaconda Download Anaconda Di…...

vue3基础学习(上) [简单标签] (vscode)

目录 1. Vue简介 2. 创建Vue应用 2.1 下载JS文件 2.2 引用JS文件 2.3 调用Vue方法​编辑 2.4 运行一下试试: 2.5 代码如下 3.模块化开发模式 3.1 Live Server插件 3.2 运行 4. 常用的标签 4.1 reactive 4.1.1 运行结果 4.1.2 代码: 4.2 ref 4.2.1 运行结果 4.2.2…...

.Net HttpClient 使用代理功能

HttpClient 使用代理功能 实际开发中&#xff0c;HttpClient 通过代理访问目标服务器是常见的需求。 本文将全面介绍如何在 .NET 中配置 HttpClient 使用代理&#xff08;Proxy&#xff09;功能&#xff0c;包括基础使用方式、代码示例、以及与依赖注入结合的最佳实践。 注意…...

深入理解Java适配器模式:从接口兼容到设计哲学

引言&#xff1a;接口不兼容的困局 在软件开发中&#xff0c;我们经常遇到这样的场景&#xff1a; 旧系统有一个「RS232串口设备」&#xff08;仅支持sendByRS232(String data)方法&#xff09;&#xff0c;新系统需要通过「USB接口」&#xff08;要求sendByUSB(String data)…...

非异步信号安全函数

这个程序演示了如何使用sigaction来捕获和处理信号&#xff08;特别是SIGINT&#xff0c;即CtrlC&#xff09;。以下是关键点和潜在问题的分析&#xff1a; 程序功能 信号捕获&#xff1a;注册自定义处理函数handler来捕获信号2&#xff08;SIGINT&#xff0c;通常由CtrlC触发…...