PowerBI企业运营分析——线性回归销售预测
PowerBI企业运营分析——线性回归销售预测
欢迎来到Powerbi小课堂,在竞争激烈的市场环境中,企业运营分析平台成为提升竞争力的核心工具。
该平台通过整合多源数据,实现关键指标的实时监控,从而迅速洞察业务动态,精准识别问题与潜在机遇。其可视化看板和智能预警功能,帮助管理者直观掌握运营动态,优化资源分配;而深度分析模块则能挖掘潜在趋势,支撑战略决策。无论是降本增效、风险规避,还是市场拓展,该平台均能提供坚实的数据基础,助力企业实现精细化运营,稳步迈向可持续发展之路。
本期课程我们依然将重点放到整合前期分散知识点,帮助您建立清晰的模板搭建思路,本节课程涵盖业绩预测模板制作,本节课程核心为线性回归算法,一起接受挑战吧。
图片
想要一份这样的可视化看板吗?想学吗?我教你呀!
图片
一、案例背景:
我司作为国内一家大型服装电商企业,业务范围涵盖男装、女装、童装和配饰。当前,我们正致力于开发企业运营分析系统,旨在通过技术手段实现业绩提升、指标监控、绩效考核、客户维护开发和企业发展预测,促进数据共享与流程优化,进而提升决策效率与运营效率,优化资源配置,强化风险控制,为企业的可持续发展注入动力。
二、设计思路:
借助财务、产品、客户分析及盈亏预测,精确把握企业发展脉络,构建科学合理的考核机制,同时有效控制变动成本,进而提升企业盈利能力。
(1)、准备基础数据
(2)、数据清洗
(3)、建立关系视图
(4)、个性美化设计
(5)、数据建模(度量值)
(6)、制作可视化报告
三、数据建模
辅助表建立 公式:
预测辅助表 = // 最小二乘法SELECTCOLUMNS( UNION(ADDCOLUMNS( GENERATESERIES( 2021 , 2024 ) , -- AC 部分"Type" , "AC"),ADDCOLUMNS( GENERATESERIES( 2025 , 2029 ) , -- FC 部分"Type" , "FC" )),"X" , [Value] , "Type" , [Type])
公式解析:
创建一个预测辅助表,结合了实际数据(AC)和预测数据(FC)
GENERATESERIES(2021, 2024) - 生成一个从2021到2024的序列(实际数据年份)
ADDCOLUMNS(..., "Type", "AC") - 为这些年份添加一个"Type"列,值为"AC"(表示实际数据)
GENERATESERIES(2025, 2029) - 生成一个从2025到2029的序列(预测数据年份)
ADDCOLUMNS(..., "Type", "FC") - 为这些年份添加一个"Type"列,值为"FC"(表示预测数据)
UNION(...) - 将实际数据部分和预测数据部分合并为一个表
SELECTCOLUMNS(...) - 选择并重命名列,最终输出两列:
"X"列:年份值(2021-2029)
"Type"列:标识是实际数据("AC")还是预测数据("FC")
公式:
销售金额-万元 = DIVIDE( [销售金额] , 10000 )销售利润-万元 = DIVIDE( [销售利润] , 10000 )
公式解析:
用于将销售数据从原始单位转换为以"万元"为单位的数值
公式:
预测销售金额 = VARX_Current = SELECTEDVALUE('预测辅助表'[X])VARAreaType = SELECTEDVALUE('预测辅助表'[Type])// 当前年份的实际值计算VARY_Current = CALCULATE([销售金额-万元],TREATAS({X_Current}, '日期表'[年份]))// 获取已知历史数据VARKnownData = FILTER(ADDCOLUMNS(CALCULATETABLE(VALUES('预测辅助表'[X]),'预测辅助表'[Type] = "AC",ALLSELECTED('预测辅助表')),"KnownY", CALCULATE([销售金额-万元],TREATAS({'预测辅助表'[X]}, '日期表'[年份]) )),NOT(ISBLANK('预测辅助表'[X])) && NOT(ISBLANK([KnownY])))// 线性回归计算VARCountItems = COUNTROWS(KnownData)VARSumX1 = SUMX(KnownData, '预测辅助表'[X])VARSumX2 = SUMX(KnownData, '预测辅助表'[X] ^ 2)VARSumY = SUMX(KnownData, [KnownY])VARSumXY = SUMX(KnownData, '预测辅助表'[X] * [KnownY])VARAvgX = AVERAGEX(KnownData, '预测辅助表'[X])VARAvgY = AVERAGEX(KnownData, [KnownY])VARSlope = DIVIDE(CountItems * SumXY - SumX1 * SumY,CountItems * SumX2 - SumX1 ^ 2)VARIntercept = AvgY - Slope * AvgX// 结果返回RETURNIF(AreaType = "AC",Y_Current,Intercept + Slope * X_Current)
公式解析:
该DAX公式用于计算销售金额的预测值,结合了当前实际值和基于历史数据的线性回归预测。主要逻辑如下:
如果是"AC"区域,直接返回当前年份的实际销售金额(历史数据)。
如果是其他区域,使用线性回归模型预测未来销售金额。
\2. 变量定义
(1) X_Current(当前年份值)
作用:获取当前筛选上下文中的年份值(如2020、2021等)。
SELECTEDVALUE:返回当前筛选器下的唯一值,如果有多值则返回空值。
(2) AreaType(区域类型)
作用:获取当前筛选上下文中的区域类型(如"AC"、"BD"等)。
用途:决定是返回实际值还是预测值。
- 1. 当前年份实际值计算(Y_Current)
作用:计算当前年份的实际销售金额。
CALCULATE:在特定筛选条件下计算度量值。
TREATAS:将X_Current(年份)转换为日期表的筛选器,确保正确匹配。
4.获取历史数据(KnownData)
分解步骤:
CALCULATETABLE(VALUES('预测辅助表'[X]), ...)
获取所有"AC"区域的年份值(X列)。
ALLSELECTED('预测辅助表'):保留外部筛选上下文,但强制Type = "AC"。
ADDCOLUMNS(..., "KnownY", ...)
为每一年份添加对应的实际销售金额列KnownY。
TREATAS({'预测辅助表'[X]}, '日期表'[年份]):确保年份匹配正确。
FILTER(..., NOT(ISBLANK(...)))
过滤掉X或KnownY为空的数据,确保回归计算的数据完整性。
- 1. 线性回归计算
(1) 计算回归统计量
CountItems = COUNTROWS(KnownData)
作用:计算用于回归分析的有效数据点数量
数学表示:n
重要性:影响回归系数的计算精度(数据点越多,回归越可靠)
用于后续所有分母计算
示例:如果有2018-2022共5年的数据,CountItems = 5
SumX1 = SUMX(KnownData, '预测辅助表'[X])
作用:计算所有X值(年份)的总和
数学表示:ΣX
计算方式:SumX1=X1+X2+...+Xn
示例:如果X值为[2018,2019,2020,2021,2022],则SumX1 = 10090
SumX2 = SUMX(KnownData, '预测辅助表'[X] ^ 2)
作用:计算所有X值的平方和
数学表示:ΣX²
计算方式:SumX2=X12+X22+...+Xn2
示例:继续上例,SumX2 = 2018² + 2019² + ... + 2022² = 4,072,724 + ... + 4,088,484
重要性:用于计算X的变异量(分母部分)
SumY = SUMX(KnownData, [KnownY])
作用:计算所有Y值(销售金额)的总和
数学表示:ΣY
计算方式:SumY=Y1+Y2+...+Yn
业务意义:历史销售总额,反映整体规模
SumXY = SUMX(KnownData, '预测辅助表'[X] * [KnownY])
作用:计算X与Y的乘积和
数学表示:ΣXY
计算方式:SumXY=X1Y1+X2Y2+...+Xn**Yn
重要性:分子部分的关键变量,反映X和Y的共同变化趋势
示例:如果2020年销售500万,则该项含2020 * 500
AvgX = AVERAGEX(KnownData, '预测辅助表'[X])
作用:计算X值的平均值
数学表示:X̄
计算方式:AvgX=nΣ/X
示例:(2018+2019+...+2022)/5 = 2020
AvgY = AVERAGEX(KnownData, [KnownY])
作用:计算Y值的平均值
数学表示:Ȳ
计算方式:AvgY=nΣ/Y
业务意义:历史平均销售水平
(2) 计算斜率(Slope)
公式:
图片
作用:计算回归线的斜率(每增加一年,销售金额的变化趋势)。
(3) 计算截距(Intercept)
公式:
图片
作用:计算回归线的截距(基准值)。
\6. 结果返回
逻辑:
如果AreaType = "AC",直接返回当前年份的实际销售金额(Y_Current)。
否则,使用回归方程 Y = Intercept + Slope * X 预测未来销售金额。
图片
公式:
预测销售利润 = VARX_Current = SELECTEDVALUE('预测辅助表'[X])VARAreaType = SELECTEDVALUE('预测辅助表'[Type])// 当前年份的实际利润计算VARY_Current = CALCULATE([销售利润-万元],TREATAS({X_Current}, '日期表'[年份]))// 获取已知历史利润数据(优化后的版本)VARKnownData = FILTER(ADDCOLUMNS(CALCULATETABLE(VALUES('预测辅助表'[X]),'预测辅助表'[Type] = "AC",ALLSELECTED('预测辅助表')),"KnownY", CALCULATE([销售利润-万元],TREATAS({'预测辅助表'[X]}, '日期表'[年份]) )),NOT(ISBLANK('预测辅助表'[X])) && NOT(ISBLANK([KnownY])))// 线性回归计算(优化计算效率)VARCountItems = COUNTROWS(KnownData)VARSumX1 = SUMX(KnownData, '预测辅助表'[X])VARSumX2 = SUMX(KnownData, '预测辅助表'[X] ^ 2)VARSumY = SUMX(KnownData, [KnownY])VARSumXY = SUMX(KnownData, '预测辅助表'[X] * [KnownY])VARAvgX = AVERAGEX(KnownData, '预测辅助表'[X])VARAvgY = AVERAGEX(KnownData, [KnownY])VARSlope = DIVIDE(CountItems * SumXY - SumX1 * SumY,CountItems * SumX2 - SumX1 ^ 2,0 // 添加默认值防止除零错误)VARIntercept = AvgY - Slope * AvgX// 结果返回(添加了错误处理)RETURNIF(AreaType = "AC",Y_Current,IF(ISBLANK(Slope) || ISBLANK(Intercept),BLANK(), // 如果无法计算回归参数则返回空白Intercept + Slope * X_Current ))
公式解析:
以上公式与预测销售金额的逻辑基本相同,但是做了部分优化,计算相对健壮
1.变量定义
X_Current:获取当前行的年份值(X轴值)
AreaType:获取当前行的类型("AC"表示实际值,"FC"表示预测值)
2.当前年份实际利润计算
计算当前年份的实际销售利润
TREATAS函数将X_Current的值转换为筛选上下文,应用于日期表的年份列
3.获取已知历史数据(优化版)
获取所有类型为"AC"(实际值)的历史数据
为每条记录添加对应的销售利润值(KnownY),过滤掉X或Y为空的记录
4.线性回归计算
4.1基础统计量计算
计算数据点数量、X总和、X平方和、Y总和、XY乘积和、X平均值、Y平均值
4.2斜率计算
使用最小二乘法计算回归线斜率
公式:斜率 = (nΣXY - ΣXΣY) / (nΣX² - (ΣX)²)
添加了除零保护(如果分母为零则返回0)
4.3截距计算
计算回归线截距
公式:截距 = Y平均值 - 斜率 * X平均值
5.结果返回(带错误处理)
如果当前行类型是"AC"(实际值),返回当前年份的实际利润
如果是预测值:
首先检查斜率或截距是否为空白(计算失败)
如果计算失败,返回空白
否则使用回归方程计算预测值:Y = 截距 + 斜率 * X
公式:
预测销售数量 = VARX_Current = SELECTEDVALUE('预测辅助表'[X])VARAreaType = SELECTEDVALUE('预测辅助表'[Type])// 当前年份的实际销售数量VARY_Current = CALCULATE([销售数量],TREATAS({X_Current}, '日期表'[年份]))// 获取已知历史销售数据VARKnownData = FILTER(SUMMARIZE(CALCULATETABLE('预测辅助表','预测辅助表'[Type] = "AC",ALLSELECTED('预测辅助表')),'预测辅助表'[X],"KnownY", CALCULATE([销售数量],TREATAS({'预测辅助表'[X]}, '日期表'[年份]) )),NOT(ISBLANK('预测辅助表'[X])) && NOT(ISBLANK([KnownY])))// 计算回归参数VARCountItems = COUNTROWS(KnownData)VARSumX1 = SUMX(KnownData, '预测辅助表'[X])VARSumX2 = SUMX(KnownData, '预测辅助表'[X] ^ 2)VARSumY = SUMX(KnownData, [KnownY])VARSumXY = SUMX(KnownData, '预测辅助表'[X] * [KnownY])VARSlope = IF(CountItems >= 2,DIVIDE(CountItems * SumXY - SumX1 * SumY,CountItems * SumX2 - SumX1 ^ 2, 0), 0)VARIntercept = IF(CountItems >= 2,AVERAGEX(KnownData, [KnownY]) - Slope * AVERAGEX(KnownData, '预测辅助表'[X]), 0)// 计算预测值VARPredictedValue = IF(AreaType = "AC",_Current,MAX(0, Intercept + Slope * X_Current) // 确保预测值不小于0)RETURNPredictedValue
公式解析:
\1. 变量定义
I_Current:获取当前行的年份值(X轴值)
AreaType:获取当前行的类型("AC"表示实际值,"FC"表示预测值)
2.当前年份实际销售数量计算
计算当前年份的实际销售数量
TREATAS函数将X_Current的值转换为筛选上下文,应用于日期表的年份列
3.获取已知历史数据
获取所有类型为"AC"(实际值)的历史数据
使用SUMMARIZE创建包含年份和对应销售数量的表
过滤掉X或Y为空的记录
4.线性回归计算
4.1 基础统计量计算
计算数据点数量、X总和、X平方和、Y总和、XY乘积和
4.2 斜率计算(带数据量检查)
使用最小二乘法计算回归线斜率
添加数据点数量检查(至少需要2个点才能计算斜率)
4.3 截距计算(带数据量检查)
计算回归线截距
同样添加数据点数量检查
5.预测值计算与返回
如果当前行类型是"AC"(实际值),返回当前年份的实际销售数量
如果是预测值:
使用回归方程计算预测值:Y = 截距 + 斜率 * X
使用MAX(0,...)确保预测值不小于0(销售数量不能为负)
返回最终结果
公式:
销售金额2025年 = VARA = CALCULATETABLE( ADDCOLUMNS(SUMMARIZE( ALLSELECTED( '预测辅助表' ) , '预测辅助表'[X] ) ,"T[FCFC]" , [预测销售金额] ), ALL( '日期表') )VARB = MAXX( FILTER( A , [X] = 2025 ) , T[FCFC] )RETURNB
销售利润2025年 = VARA = CALCULATETABLE( ADDCOLUMNS(SUMMARIZE( ALLSELECTED( '预测辅助表' ) , '预测辅助表'[X] ) ,"T[FCFC]" , [预测销售利润] ), ALL( '日期表') )VARB = MAXX( FILTER( A , [X] = 2025 ) , T[FCFC] )RETURNB
销售数量2025年 = VARA = CALCULATETABLE( ADDCOLUMNS(SUMMARIZE( ALLSELECTED( '预测辅助表' ) , '预测辅助表'[X] ) ,"T[FCFC]" , [预测销售数量] ), ALL( '日期表') )VARB = MAXX( FILTER( A , [X] = 2025 ) , T[FCFC] )RETURNB
公式解析:
以销售数量2025年为例
1.创建包含所有年份和预测值的表(变量A)
SUMMARIZE(ALLSELECTED('预测辅助表'), '预测辅助表'[X]):创建一个包含所有选定年份值的单列表
ADDCOLUMNS:为这个表添加一个新列"T[FCFC]",其值为[预测销售数量]度量值
CALCULATETABLE与ALL('日期表'):确保计算时不考虑日期表上的任何筛选器影响
2.筛选出2025年的数据并获取预测值(变量B)
FILTER(A, [X] = 2025):从上表A中筛选出2025年的行
MAXX:从筛选结果中提取最大的预测值(如果有多条记录)
3.返回结果
返回变量B的值,即2025年的预测销售数量
公式:
销售金额-增长预测 = [销售金额2025年] - [销售金额-万元]
销售利润-增长预测 = [销售利润2025年] - [销售利润-万元]
销售数量-增长预测 = [销售数量2025年] - [销售数量]
公式解析:计算预测值与当前值的差额
公式解析:
SELECTEDVALUE('预测辅助表'[Type])
获取当前上下文中'预测辅助表'[Type]字段的值
SELECTEDVALUE函数返回当列中只有一个唯一值时的该值
条件判断(IF函数)
判断Type字段的值是否为"AC"
如果是"AC",返回红色("#FF0000")
如果不是"AC"(即其他值,如"FC"),返回绿色("#00FF00")
公式:销售金额-增长预测 = [销售金额2025年] - [销售金额-万元]销售利润-增长预测 = [销售利润2025年] - [销售利润-万元]销售数量-增长预测 = [销售数量2025年] - [销售数量]
四、可视化报告制作
1、业绩概览制作
首先,配置报表页面的格式选项,选定画布背景,并上传预先设计好的素材文件。
第二步:插入一个图像,AI机器人图标,点开操作功能,给此图像添加登录页书签。
接着,添加一个卡片图表,并将度量值中的日历字段拖放到切片器控件中。
第四步:插入七个书签按钮,输入数据中心、产品维度、客户开发、业绩分析、地域分析、业绩考核、表格维度,并给书签按钮添加我们设计好的图标。
然后,插入一个形状元素,作为之前创建的视觉对象的背景装饰。
第六步:插入四个切片器,将维度-销售人员表销售经理、销售人员拖入字段中,将维度-产品表类别、子类别拖入字段中,将维度-省份大区表地区、省份拖入字段中,将维度-客户表行业、职业拖入字段中。
第七步:插入四个矩阵图,行分别拖入维度-销售人员表销售经理、销售人员拖入字段中,维度-产品表类别、子类别拖入字段中,维度-省份大区表地区、省份拖入字段中,维度-客户表行业、职业字段,值拖入度量值销售数量(重命名为2024年销量)、销售数量2025年(重命名为2025年销量)、销售数量-增长预测(重命名为销量增长预测)、销售金额-万元(重命名为2024年业绩)、销售金额2025年(重命名为2025年业绩)、销售金额-增长预测(重命名为业绩增长预测)、销售利润-万元(重命名为2024年利润)、销售利润2025年(重命名为2025年利润)、销售利润-增长预测(重命名为利润增长预测),打开视觉对象筛选器,将年份维度表年份字段用于视觉对象筛选器,筛选类型选择高级筛选器,显示值等于2024,应用此筛选器,将四个矩阵图叠放备用。
第八步:插入四个空白按钮,形状选择剪裁选项卡,右上角,文本分别输入客户维度预测、地域维度预测、地域维度预测和销售维度预测,再插入两个空白按钮,形状选择药丸,文本分别输入打开筛选、关闭筛选,以上按钮备用。
第九步:创建三个簇状柱形图,将预测辅助表的X字段拖至X轴,再将预测销售数量、预测销售金额、预测销售利润三个度量值分别拖至Y轴。接着,配置视觉对象格式,启用数据标签,并设置列的颜色,采用度量值预测KPI的颜色进行动态配色。
第十步:在视图选项卡中启用选择功能,选中新建的按钮控件和切片器,通过右键操作将它们分组并重命名为‘指标切换组’。随后,选中四个矩阵图,同样通过右键操作分组并重命名为‘预测矩阵’。
第十一步:在视图选项卡中启用书签功能,对‘指标切换组’进行配置,隐藏所有切片器并关闭筛选按钮;对‘预测矩阵’进行配置,隐藏除‘行业职业矩阵’外的所有预测矩阵。然后,添加一个书签并重命名为‘客户行业矩阵’。重复上述隐藏和显示矩阵图的步骤,依次添加‘产品类别矩阵’、‘地区省份矩阵’、‘销售人员矩阵’三个书签。最后,再插入一个书签并重命名为‘关闭筛选器’。
第十二步:视图选项卡,打开书签功能,指标切换组隐藏所有剪裁选项卡按钮控件和打开筛选按钮,显示所有切片器和关闭筛选按钮,再插入一个书签,重命名为打开筛选器,选中新建的书签,右键选择分组,重命名为页内切换业绩预测,点击以上按钮控件,打开操作功能,将对应书签连接到按钮控件。
第十三步:如图美化界面
第十四步:进入视图窗口,启用书签功能,并为当前页面创建一个书签。
第十五步:在数据中心页面,找到并点击标有'业绩预测'的按钮,进入操作界面,选择类型为'书签',然后将之前创建的书签添加到该按钮上。
好的,今天的讲解就到这里。后期课程也会逐渐增加难度,精彩内容,敬请期待。
相关文章:

PowerBI企业运营分析——线性回归销售预测
PowerBI企业运营分析——线性回归销售预测 欢迎来到Powerbi小课堂,在竞争激烈的市场环境中,企业运营分析平台成为提升竞争力的核心工具。 该平台通过整合多源数据,实现关键指标的实时监控,从而迅速洞察业务动态,精准…...
大模型运维过程中常见的一些操作
1. 模型部署与环境配置 基础设施准备:部署 GPU 集群、TPU 等专用硬件,配置分布式计算环境(如 Kubernetes)。推理服务搭建:使用 Triton Inference Server、TensorFlow Serving 等框架部署模型,优化批处理和…...
C# 关于闭包与多线程结合使用
开头先看一篇文章:【转】编写高质量代码改善C#程序的157个建议——建议75:警惕线程不会立即启动 - 指间的徘徊 - 博客园d 摘抄: static int _id 0; static void Main() { for (int i 0; i < 10; i, _id) { Thread t new Thread…...

LangFuse:开源LLM工程平台的革新实践
文章目录 一 架构设计与技术栈二 增强型监控能力三 提示词工程支持(新增)四 性能优化实践五 LangFuse部署(docker)和代码集成5.1 LangFuse平台部署5.2 LangFuse代码集成和检测体验 一 架构设计与技术栈 LangFuse采用模块化架构设…...

新视角!经济学顶刊QJE用文本分析探究新技术扩散
美国圣路易斯联邦储备银行Aakash Kalyani、美国斯坦福大学与国家经济研究局Nicholas Bloom、英国伦敦商学院Marcela Carvalho和其合作者们共同研究的“The Diffusion of New Technologies(新技术的扩散)”在顶刊The Quarterly Journal of Economics中发表…...
微信小程序返回上一页监听
本文实现的是微信小程序在返回上一页时获取通知并自定义业务。 最简单的实现: 使用 wx.enableAlertBeforeUnload() 优点:快速接入 缺点:手势不能识别、无法自定义弹窗内容(仅询问) 方法二: page-conta…...

5月31日day41打卡
简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 → Batch…...
“粽”览全局:分布式系统架构与实践深度解析(端午特别版)
第一部分:引言——技术世界的“端午”第二部分:分布式系统概述——粽子节点初探第三部分:核心技术详解——技术“粽子”大解构 粽叶篇:通信协议糯米篇:一致性算法馅料篇:任务调度与计算包扎篇:系…...

STM32G4 电机外设篇(一) GPIO+UART
目录 一、STM32G4 电机外设篇(一) GPIOUART1 GPIO1.1 STM32CUBEMX 配置以及Keil代码1.2 代码和实验现象 2 UART2.1 STM32CUBEMX 配置以及Keil代码2.2 代码和实验现象 附学习参考网址欢迎大家有问题评论交流 (* ^ ω ^) 一、STM32G4 电机外设篇࿰…...
代理IP在云计算中的应用:技术演进与场景实践
一、技术融合的必然性:代理IP与云计算的协同效应 在数字化转型的浪潮中,云计算已成为企业IT架构的核心底座,而代理IP技术则作为网络访问的关键基础设施,两者在技术演进路径上呈现出深度融合的趋势。云计算的弹性资源池与代理IP的…...

Lua 的速度为什么比 Python 快
Lua 的执行速度通常比 Python 快,主要原因在于其解释器设计轻量、虚拟机效率高、内存管理策略更为精简,以及语言本身对动态特性的控制较严。其中,Lua 使用了 register-based 的虚拟机架构,而 Python(CPython࿰…...

【iOS】方法交换
方法交换 method-swizzling是什么相关API方法交换的风险method-swizzling使用过程中的一次性问题在当前类中进行方法交换类方法的方法交换 方法交换的应用 method-swizzling是什么 method-swizzling的含义是方法交换,他的主要作用是在运行的时候将一个方法的实现替…...
跑步相关术语解释
老婆一直问我PB是啥意思,写个文章解释下。 1. 成绩类 PB (Personal Best):个人最好成绩,指在特定距离(如10K、全马)中的最快完赛时间 。PW (Personal Worst)࿱…...

数据结构:线性表的基本操作与链式表达
个人主页 文章专栏 成名之作——赛博算命之梅花易数的Java实现 陆续回三中,忘回漏回滴滴~感谢各位大佬的支持 一.线性表的定义和基本操作 1.1定义 线性表是具有相同数据类型的n个数据元素的有序数列,n为表长 第一个元素叫表头元素,除了他…...

C++:设计模式--工厂模式
更多内容:XiaoJ的知识星球 目录 1.简单工厂模式1.1 简单工厂1.2 实现步骤1.3 实现代码1.4 优缺点 2.工厂模式2.1 工厂模式2.2 实现步骤2.3 实现代码2.4 优缺点 3.抽象工厂模式3.1 抽象工厂模式3.2 实现步骤3.3 实现代码3.4 优缺点 1.简单工厂模式 . 1.1 简单工厂 …...
【前端优化】使用speed-measure-webpack-plugin分析前端运行、打包耗时,优化项目
记录下 项目安装speed-measure-webpack-plugin 打包分析: 修改vue.config.js文件 speed-measure-webpack-plugin进行构建速度分析,需要包裹整个 configureWebpack 配置 const originalConfig {publicPath: /,assetsDir: assets,parallel: true,devS…...

国产化Excel处理组件Spire.XLS教程:如何使用 C# 将 Excel(XLS 或 XLSX)文件转换为 PDF
Excel 是常见的数据处理与呈现工具,但直接共享 Excel 文件可能面临格式错乱、兼容性不足或数据泄露的风险。为了保证文档在不同平台和终端上的稳定展示,开发者常常需要将 Excel 文件转换为 PDF 格式。 本文将详细介绍如何使用 C#和.NET Excel 库——Spi…...

B3623 枚举排列(递归实现排列型枚举)
B3623 枚举排列(递归实现排列型枚举) - 洛谷 题目描述 今有 n 名学生,要从中选出 k 人排成一列拍照。 请按字典序输出所有可能的排列方式。 输入格式 仅一行,两个正整数 n,k。 输出格式 若干行,每行 k 个正整数…...
vue-08(使用slot进行灵活的组件渲染)
使用slot进行灵活的组件渲染 作用域slot是 Vue.js 中的一种强大机制,它允许父组件自定义子组件内容的呈现。与仅向下传递数据的常规 props 不同,作用域 slot 为父级提供了一个模板,然后子级可以填充数据。这提供了高度的灵活性和可重用性&am…...

Fine Pruned Tiled Light Lists(精细删减的分块光照列表)
概括 在这篇文章, 我将介绍一种Tiled Light 变体,主要针对AMD Graphics Core Next(GCN)架构进行优化,我们的方法应用于游戏 古墓丽影:崛起 中,特别是我们在通过光列表生成和阴影贴图渲染之间交错进行异步计…...
2025-5-29-C++ 学习 字符串(3)
字符串 2025-5-29-C 学习 字符串(3)P3741 小果的键盘题目背景题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 输入输出样例 #2输入 #2输出 #2 输入输出样例 #3输入 #3输出 #3 输入输出样例 #4输入 #4输出 #4 输入输出样例 #5输入 #5输出 #5 说明…...

openresty+lua+redis把非正常访问的域名加入黑名单
一、验证lua geoIp2是否缺少依赖 1、执行命令 /usr/local/openresty/bin/opm get anjia0532/lua-resty-maxminddb 执行安装命令报错,缺少Digest/MD5依赖 2、Digest/MD5依赖 yum -y install perl-Digest-MD5 GeoIP2 lua库依赖动态库安装,lua库依赖libmaxminddb实…...

使用Mathematica绘制随机多项式的根
使用ListPlot和NSolve直接绘制: (*返回系数为r和s之间整数的n次随机多项式*) eq[n_, r_, s_] : RandomInteger[{r, s}, {n}] . Array[Power[x, # - 1] &, n] (*返回给定随机多项式的根所对应的笛卡尔坐标*) sol[n_, r_, s_] : {Re[#], Im[#]} & / (x /.…...

IEEE PRMVAI 2025 WS 26:计算机视觉前沿 Workshop 来袭!
宝子们,搞计算机视觉和深度学习的看过来啦!🎉 2025 年 IEEE 第三届模式识别、机器视觉和人工智能国际会议里,Workshop 26 简直是科研宝藏地! 这次 Workshop 聚焦 “Deep learning - based low - level models for comp…...

360浏览器设置主题
设置默认主题: 1.右上角有个皮肤按钮 进来后,右边有个回复默认皮肤按钮。 换成彩色皮肤后,找按钮不太好找了。...

最卸载器——Geek Uninstaller 使用指南
Geek Uninstaller 是一款轻量级的第三方卸载工具,专为 Windows 系统设计,提供比系统默认卸载器更彻底的应用清除能力。它体积小、绿色免安装,使用起来简单直观,但功能却不含糊。 一、为什么要用 Geek Uninstaller? Wi…...
leetcode216.组合总和III:回溯算法中多条件约束下的状态管理
一、题目深度解析与组合约束条件 题目描述 找出所有相加之和为n的k个数的组合,且满足以下条件: 每个数只能使用一次(范围为1到9)所有数字均为唯一的正整数组合中的数字按升序排列 例如,当k3,n9时&#…...

应急响应靶机-web3-知攻善防实验室
题目: 1.攻击者的两个IP地址 2.攻击者隐藏用户名称 3.三个攻击者留下的flag 密码:yj123456 解题: 1.攻击者的两个IP地址 一个可能是远程,D盾,404.php,192.168.75.129 找到远程连接相关的英文,1149代表远程连接成功…...

【基于SpringBoot的图书购买系统】Redis中的数据以分页的形式展示:从配置到前后端交互的完整实现
引言 在当今互联网应用开发中,高性能和高并发已经成为系统设计的核心考量因素。Redis作为一款高性能的内存数据库,以其快速的读写速度、丰富的数据结构和灵活的扩展性,成为解决系统缓存、高并发访问等场景的首选技术之一。在图书管理系统中&…...

Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP 服务器是基于模型上下文协议(Model Context Protocol, MCP)的 Jupyter 环境扩展组件,它能够实现大型语言模型与实时编码会话的无缝集成。该服务器通过标准化的协议接口,使 AI 模型能够安全地访问和操作 Jupyter 的核心…...