风控业务——评分模型
本文主要讲述了金融机构风控模型的重要性及其应用。首先,开头概述了风控模型的整体建模流程,包括特征工程和建模方法。接着,本文强调了贷前、贷中、贷后三个阶段中风控模型的应用,如信用评分、行为评分和催收评分。同时还提到了信贷产品的基本形式和用户资质评估的重要性。最后,本文总结了贷前、贷中、贷后三个阶段中模型与策略的互动,以及模型在信用评估中的关键作用。
建模流程
风控模型是金融机构全链条的最后一道关卡,主要关注信贷产品的风险评估。而建模流程包括特征工程、建模方法、模型监控等步骤。
模型定位:ABC
信贷产品常见模型包括申请评分卡(A卡)、行为评分卡(B卡)和催收评分卡(C卡)。ABC卡是风控模型的核心,分别对应申请评分卡、行为评分卡和催收评分卡,此外风控模型还包括反欺诈、运营和催收修复等模块。
A贷前准入
贷前流程是金融信贷业务中的关键环节,它决定了是否向用户提供贷款以及贷款的额度和利率。贷前流程包括用户注册、填写四要素、授信定价和审批阶段。
- 授信定价:授信定价是金融机构根据用户的信用状况、风险水平、市场条件等因素,决定给予用户的贷款额度、利率和费用等条件的过程。这一阶段涉及对用户的信用评估和对相关风险的定价,以确保金融机构在提供贷款服务的同时,能够覆盖潜在风险并获得合理收益。
- 步骤包括: 客户风险评估, 市场条件分析, 产品特性考量
- 审批阶段是贷前流程的核心环节,它决定了用户的贷款申请是否通过以及贷款的额度和利率等条件。审批阶段涉及多个步骤和工具,包括信用卡评估、反欺诈、人工审核和模型提供的申请评分卡等。
- 信用卡评估:模型根据信用评分卡出的分数档位决定是否通过申请。
- 人工审核
- 反欺诈
- 申请评分卡
B贷中管理
贷中管理是金融信贷业务中的一个重要环节,它涵盖了首次用信后的账户管理和再次借款的审批。在这个过程中,行为评分卡(B卡)发挥着至关重要的作用,它根据用户的信用行为来动态调整额度或决定是否拒绝借款。信用卡形式则是定期审查信用并调整额度。
首次用信后的账户管理: 在用户首次使用信贷产品(如贷款、信用卡等)后,金融机构会对其账户进行持续的管理和监控。这包括跟踪用户的还款情况、消费习惯、信用记录等,以确保用户能够按时还款并维护良好的信用状况。
再次借款的审批: 当用户需要再次借款时,金融机构会重新评估其信用状况和还款能力。这通常涉及对用户的个人信息、收入状况、负债情况等进行审核,并参考其历史借款和还款记录。
动态评估信用行为: 行为评分卡是一种基于用户历史行为数据的评分模型,它能够动态地评估用户的信用行为和风险状况。通过分析用户的消费行为、还款记录、负债压力等,行为评分卡能够预测用户未来的逾期风险。
调整额度或拒绝借款: 根据行为评分卡的评估结果,金融机构可以灵活地调整用户的信用额度或决定是否拒绝其借款申请。对于低风险、高信用的用户,金融机构可能会提高其信用额度,以满足其更高的消费需求;而对于高风险、低信用的用户,金融机构可能会降低其信用额度或拒绝其借款申请,以降低潜在的风险。
- 信用卡形式的贷中管理
- 定期审查信用:对于信用卡用户,金融机构会定期进行信用审查,以评估其信用状况和还款能力。这通常涉及对用户的消费记录、还款记录、负债情况等进行综合分析。
- 调整额度:根据信用审查的结果,金融机构会相应地调整用户的信用卡额度。对于信用状况良好的用户,金融机构可能会提高其信用卡额度,以鼓励其更多的消费和还款行为;而对于信用状况不佳的用户,金融机构可能会降低其信用卡额度或采取其他风险管理措施。
C贷后催收
贷后催收流程包括早期预警、早期催收和委外处理三个阶段,而催收评分卡则根据用户的逾期情况排序,优先处理高风险用户,以实现精准催收和风险管理。
- 排序优先级:催收评分卡根据用户的逾期情况(如逾期天数、逾期金额、历史还款记录等)进行评分,从而确定用户的催收优先级。高风险用户(即逾期情况严重、还款意愿低的用户)会被优先处理,以确保资金安全和减少损失。
- 精准催收:通过催收评分卡,金融机构能够更精准地识别出不同风险等级的用户,并采取相应的催收策略。这有助于提高催收效率,降低催收成本,并改善用户体验。
贷后催收流程:
- 早期预警:当用户逾期一两天时,系统会进行提醒(remind),通知用户进行还款。此阶段主要解决用户可能因不知晓还款方式或操作障碍导致的逾期问题。
- 早期催收:针对忘记还款的用户,进行进一步的提醒和催收。此阶段主要解决用户因疏忽大意或短暂遗忘导致的逾期问题。
- 委外处理:对于存在严重还款问题的用户,如疫情期间资金周转困难等,且内部团队无法联系到用户更多联系方式时,会委托外部催收机构进行处理。外部机构凭借其广泛的资源和经验,能够更有效地联系到用户并尝试解决还款问题。
模型构建流程
数据来源与使用
数据分为内部数据和外部数据,内部数据包括自有数据和设备数据。外部数据包括授权类数据、第三方数据服务等。
- 内部数据
- 自有数据:这些数据有助于金融机构了解客户的身份背景、财务状况和交易习惯,从而评估客户的信用状况和潜在风险。
- 手机设备数据:设备数据可以用于辅助验证客户身份,防止欺诈行为,以及提高交易的安全性。
- 外部数据:
- 授权类数据:有助于金融机构更全面地了解客户的信用状况和财务状况,从而更准确地评估客户的贷款申请或信用卡申请。
- 第三方数据服务: 通过分析这些数据,金融机构可以更深入地了解客户的生活方式和消费习惯,从而为客户提供更个性化的金融产品和服务。
- KYC(Know Your Customer)即了解你的客户,是一种在金融服务中验证客户身份、适合性,以及评估与该客户维持商业关系所带来的风险的指导方案。在KYC过程中,数据的收集和分析是至关重要的环节,这些数据既包括内部数据,也包括外部数据。
建模步骤与准备
建模准备包括明确需求、特征构造、模型设计和实验、训练和评估、模型交付和监控。
明确需求: 明确需求包括确定产品类型和目标人群
- 风控产品:小微企业贷款、消费信贷、现金贷
- 小微企业贷款:小微企业贷款的风控环节较为复杂,除了评估企业的信用状况(如经营历史、财务报表等)外,还需考虑企业的欺诈风险、行业风险及经营稳定性。在反欺诈方面,会重点监控企业账户是否被盗用或存在虚假申请等行为。同时,设备数据(如企业使用的电脑、手机等设备信息)也可能被用于辅助风控决策。
- 消费信贷:消费信贷主要面向个人用户,风控环节包括评估用户的信用状况(如征信记录、收入情况等)、欺诈风险(如账户盗用、虚假交易等)以及交易异常行为。在数据收集方面,会考虑用户的设备数据(如手机APP安装列表、设备指纹等),但需注意不同操作系统(如安卓和iOS)在数据获取上的差异。此外,消费信贷还可能涉及用户响应模型,用于预测用户对营销活动的响应情况,以优化拉新和留存策略。
- 现金贷:现金贷的风控相对简单,主要侧重于收集和分析用户的个人数据,以评估其信用状况和欺诈风险。由于现金贷通常不涉及具体的消费场景或商品,因此其风控模型可能更加侧重于用户的整体信用状况和还款能力。在数据收集方面,现金贷公司可能会利用公开场合可获取的数据(如手机设备数据、GPS地址等),但需注意数据合规性和隐私保护问题。同时,现金贷的风控策略可能更加灵活,以适应不同用户群体的需求和风险特征。
- 建模人群定位:申请新客、优质老客和入催人群。
- 申请新客定位:基本信息、信用记录、消费行为、渠道来源
- 优质老客定位:历史交易记录、产品使用情况、价值贡献、忠诚度
- 入催人群定位:逾期天数、还款意愿、风险等级
标签设计: 好坏用户定义根据逾期天数和产品类型确定。
定义原则: 根据产品定义标签(消费贷 、现金贷 、人维度信用) 保证数据充足时尽可能的缩短表现期。
样本选择需考虑样本量和坏人浓度,一般最少样本需要3000总样本和200坏样本,而分数段一般分10份,每份里用户数最少30人,每份占总体比例不小于2%。
样本设计: 样本设计包括训练集、验证集、测试集和OOT(out of sample)集合,格式:(总人数,坏人比例)
- 训练集:用于模型训练
- 测试集:按照逾期率分层抽样,保持标签同分布。 测试集用于评估模型效果
- 验证集:辅助模型调优,数据总量少的时候,可以没有验证集。
- OOT集合按照数件划分,不保持标签同分布,用于独立测试,模拟线上效果。
特征工程
在特征构建过程中,需要充分理解数据,考虑数据的实际情况和场景,以确保生成的特征是有效和准确的。但在特征构建过程中容易存在几个常见的误区。
误区一:拿到数据即做特征。有的人认为数据准确无误,但实际上数据可能存在噪音或异常点。
- 数据获取错误
- 数据存储错误
- 数据更新错误
误区二:原始数据没问题则特征没问题。特征生成逻辑可能存在问题,如性别特征的归一化问题。
- 特征生成逻辑错误
- 生成的特征效果很差
误区三:模型性能不好就换模型。忽视数据和特征构造方法的问题,导致模型效果不佳。
机器学习模型的性能不仅取决于选择的算法和参数,更依赖于输入变量是否正确且稳定。
数据调研
1.明确可用数据:申请用户数据可用,借贷和催收数据不可用。
eg.申请评分卡人群特征不应使用贷后信息
2.数据质量检查:空值率、零值率、取值范围合理性、特殊格式处理。
3.数据逻辑梳理:数据获取和存储过程中可能出现的错误,如Spark操作中的盘块转换问题。
特征构建:RFM
根据RFM维度设计特征框架:R:近期情况 F:频率 M:价值
例如:GPS
特征构造方法
1.用户静态信息特征:姓名、性别、年龄等不常变化的信息。
2.用户时间截面特征:当前时间点的统计信息,如GMV、银行存款。
3.用户时间序列特征:过去一段时间的平均值和变化趋势,如GPS数据量、银行流水。
4.记录型特征:用户行为记录,如登录信息、购买记录。
5.向量型特征:以变量名、事件、类别、时间为维度构造的特征。
特征筛选的方法: 特征筛选是模型构建的重要步骤,旨在选择对模型预测有重要影响的特征。
- 星座特征法:利用星座特征作为无用的特征尺度,筛选出排名靠后的特征。
- BRUTA法:通过随机置换原有特征的值,评估特征的重要性。
- 方差膨胀系数(VIF):衡量特征之间的相关性,VIF越大,特征之间的线性关系越强。
statsmodels.stats.outliers_influence.variance_inflation_factor
- 前后向筛选:逐步添加或剔除特征,选择对模型预测增益最大的特征。
特征评估
1.区分度: 特征将用户分成好用户和坏用户的能力。
2.稳定性: 特征在不同时间点的性能一致性。
3.覆盖度: 特征覆盖的用户群体比例,覆盖度低的特征效果不佳。
特征评价指标
1. 分箱: 离散型和连续型特征的分箱方法,降低异常值影响,提高解释性。
- 数据分箱的原因:
- 降低异常值影响
- 单独处理空值
- 提高可解释性
- 注意问题
- 分箱个数不应过多或过少,二到五个箱体较为合适,评分阶段可能分为十个箱体。
- 单调性:常识上单调的特征强制单调结果较好。
- 分箱方法:无监督学习(等频分、等距分、卡方分箱),有监督学习(Chi Merge、Best KS、Decision Tree、Mono Binning:)等。
- 卡方分箱:将数据按等频或等距分箱后,计算卡方值,将卡方值较小的两个相邻箱体合并使得不同箱体的好坏样本比例区别放大,容易获得高信息价值IV。即计算卡方值,合并卡方值较小的箱体,直到卡方值最小值大于搜索阈值或箱体数小于阈值。
2. WOE编码: log(pgood/pbad),表示用户的好坏风险状况。
信息价值(IV):衡量特征区分度,IV值大于0.02表示特征区分度较好。
WOE越大风险越小,WOE越小风险越大
3. IV: 衡量好坏样本分布差异大小(IV值越大,分布差异越大,区分能力越强)
4. PSI: 衡量不同时间段内同一特征的分布差异(PSI值越大,不同时间段分布差异越大,稳定性越差),使用PSI指标,计算实际分布与预期分布的差异。
稳定性标准:PSI小于0.1表示特征稳定。
5. 单特征评估: 特征质量:零值率,空值率,特征分布,不同分箱上好坏用户占比
特征性能:
- 特征区分能力:IV(Information Value)
- 特征稳定度:PSl(Population Stability Index)
建模方法
模型构建分为三个主要部分:实验设计、模型训练和模型评估。
实验设计
实验设计包括目标设定和人群选择,旨在验证模型的有效性。
- 实验设计的目的是验证模型能否解决实际问题。
- 设计包括人群定义、训练集、验证集和测试集的划分。
- 实验设计需针对具体目标进行,确保模型的针对性。
模型训练
训练阶段主要使用逻辑回归模型,该模型在线性回归基础上套用了逻辑函数,常用的Python包(statsmodel/sklearn)
1.逻辑回归是一种常用的分类模型,通过线性回归输出结果后应用逻辑函数。
2.模型输出结果为0到1之间的概率值,表示用户为好或坏的概率。
3.逻辑回归在信贷评分卡中广泛应用,因其稳定性和可靠性。
需要注意的是,评估模型常用手段包括计算特征的重要性且模型构建最好能够具有可解释性。在使用sklearn或xgboost等包时,特征重要性可以通过包提供的函数来计算。
shap.summary_plot(shap_values, df_sub, plot _type="bar" )
shap.summary_plot(shap_values, df_xtrain)
特征重要性可以通过下部点summary plot来可视化,该图显示了每个特征在不同WOE值上的分布情况。通过观察特征在不同WOE值上的堆积比例,可以评估特征的重要性。
分数转换与分数映射
评分转换的目的是将模型输出的零到一之间的概率值转换成信用评分,便于业务理解和决策,常用的评分转换方法是乘以一个步长(PDO)并加上基准分,根据好坏用户比例调整评分。
- PDO( Point of Double Odds)定义为好坏用户比例的对数乘以50,表示好坏用户比例每翻一倍,评分增加50分。
示例:
用户初始分 300(Base Score BS)
好用户的概率是坏用户概率的2倍 +50分
好用户的概率是坏用户概率的4倍 +100分
好用户的概率是坏用户概率的8倍 +150分
50称作 Point of Double Odds (PDO)
- 通过调整PDO和基准分,可以映射到300到950分的评分范围内。
- 评分转换后的分布图可以展示不同分数区间内的逾期率,评估模型的效果。
样本不均衡问题
- 样本不均衡问题在信贷模型中常见,表现为好用户数量远多于坏用户。
- 不能直接使用零点五作为切分点,需要采用其他方式进行切分。
解决方法:
- 过采样和欠采样是解决样本不均衡的方法,通过对少数类样本进行重复采样或丢弃多数类样本来平衡数据。
- 调整模型切分点,使用小于零点五的值进行预测。
- 给予坏用户更高权重,在训练过程中强调少数类样本的重要性。
- 使用Focal Loss等优化函数,通过调整损失函数的权重来关注少数类样本。
生存者偏差问题
生存者偏差问题是由于模型只应用于准入用户,而拒绝样本未被观察,导致模型偏差。准入用户与申请用户存在差异,准入用户的特征可能无法代表整体申请用户群体。
以偏盖全:拿自己看到的样本去推测总体,而忽略了未观察到的样本情况
解决方法:
拒绝推断是一种尝试解决生存者偏差问题的方法,通过利用准入样本中的好坏用户样本训练模型。拒绝推断的模型能够更好地泛化到申请用户群体,但实际效果难以评估,同时拒绝推断的推广和应用面临挑战,还包括模型效果难以证明和业务逻辑上的困难。
模型评价指标
评估阶段采用混淆矩阵、AUC和KS等指标来评估模型的区分度和稳定性。
1.评估模型时主要关注区分度和稳定性。
2.区分度通过混淆矩阵、AUC和KS等指标进行评估。
3.稳定性采用PSI(稳定性指数)进行评估。
模型区分能力——混淆矩阵
混淆矩阵用于描述模型预测结果与实际结果之间的对应关系。矩阵中的元素包括真正例(TP)、假正例(FP)、真负例(TN)和假负例(FN)。混淆矩阵可用于计算精度(Precision)、召回率(Recall)和F1分数等指标。
ROC曲线和AUC
AUC反应了模型输出的概率对好坏用户的排序能力在几何意义上为ROC曲线下的面积。ROC曲线以TPR(真正率)和FPR(假正率)为坐标绘制。AUC是ROC曲线下的面积,表示模型区分好坏用户的能力。AUC值越大,模型的区分度越好。
- AUC =1 完美分类器
- 0.5<AUC<1 优于随机预测
- AUC=0.5 与随机预测的效果一致
- AUC<0.5 和标签反相关,可以转换为1-AUC
- GINI=2AUC-1
KS指标
KS指标反映模型区分度的最大值,即KS反应了好坏用户的分布的最大的差别。KS值越大,模型的区分度越好。KS最大值通常出现在高分段,确保线上模型性能稳定。
公式:KS=max (TPR-FPR)
KS指标刻画了这两者的最大值,我们可以这么简单粗暴的认为
- AUC反应了模型区分度的平均状况
- ROC曲线是对TPR和FPR的数值对的记录
- KS反应了模型区分度的最佳状况
模型运营
模型运营是模型成功的重要环节,忽视运营可能导致模型效果不佳,因为运营能够提供模型反馈,指导模型改进方向。
模型交付
模型交付时需提供完善的文档和报告,包括特征报告和模型报告。
- 特征报告应包含特征需求、任务列表、时间、资源包、类ER图、样本设计、特征框架、周报、交互说明和总结。特征报告中的类ER图、样本设计和特征框架是确保特征质量的关键内容。
- 模型报告应包含模型设计、样本设计、实验设计、模型训练流程、周报、开发进度和结果、讨论和改进意见。
模型审批和通知:每版模型需经过业务方或负责人审批,确保模型的质量和安全性。
- 模型交付后需通知业务方,确认模型已交付。
- 线上部署时需通知业务方,确保模型顺利部署。
模型交付完整步骤:
- 提交特征和模型报表
- 离线结果质量复核(无缺失,无重复,存储位置正确,文件名规范)
- 保存模型文件,确定版本号,提交时间
- 老板审批
- 通知业务方(三次握手)
- 线上部署
- 线上案例调研
- 线上持续监控
模型部署
- MECE法则:所有人都有分没有人打两次分
- 确保线上打分和离线打分完全一致
- 记录线上批量打分总耗时 &实时打分耗时
- 日志+灾备
模型监控
前端监控包括特征稳定性和模型稳定性,通过统计分布的变化来评估模型的稳定性。后端监控包括特征区分度和模型区分度,通过统计坏账率和通过率来评估模型的区分度。监控报表分为前端监控和后端监控,前端监控预测模型的后续表现,后端监控实际评估模型的区分能力。
分数区分度:
分数稳定性:
相关文章:
风控业务——评分模型
本文主要讲述了金融机构风控模型的重要性及其应用。首先,开头概述了风控模型的整体建模流程,包括特征工程和建模方法。接着,本文强调了贷前、贷中、贷后三个阶段中风控模型的应用,如信用评分、行为评分和催收评分。同时还提到了信…...
jupyter notebook练手项目:线性回归——学习时间与成绩的关系
线性回归——学习时间与学习成绩的关系 第1步:导入工具库 pandas——数据分析库,提供了数据结构(如DataFrame和Series)和数据操作方法,方便对数据集进行读取、清洗、转换等操作。 matplotlib——绘图库,p…...
DDD - 微服务设计与领域驱动设计实战(上)_统一建模语言及事件风暴会议
文章目录 Pre概述业务流程需求分析的困境统一语言建模事件风暴会议什么是事件风暴(Event Storming)事件风暴会议 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对…...
《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统
目录 基于 ESKF 的松耦合 LIO 系统 1 坐标系说明 2 松耦合 LIO 系统的运动和观测方程 3 松耦合 LIO 系统的数据准备 3.1 CloudConvert 类 3.2 MessageSync 类 4 松耦合 LIO 系统的主要流程 4.1 IMU 静止初始化 4.2 ESKF 之 运动过程——使用 IMU 预测 4.3 使用 IMU 预测位姿进…...
day07_Spark SQL
文章目录 day07_Spark SQL课程笔记一、今日课程内容二、Spark SQL函数定义(掌握)1、窗口函数2、自定义函数背景2.1 回顾函数分类标准:SQL最开始是_内置函数&自定义函数_两种 2.2 自定义函数背景 3、Spark原生自定义UDF函数3.1 自定义函数流程&#x…...
【LC】2270. 分割数组的方案数
题目描述: 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 如果以下描述为真,那么 nums 在下标 i 处有一个 合法的分割 : 前 i 1 个元素的和 大于等于 剩下的 n - i - 1 个元素的和。下标 i 的右边 至少有一个 元素,也就是…...
Docker 容器通信的网络模式详解
Docker 的网络模式是容器化技术中非常重要的一部分,它决定了容器之间以及容器与外部世界如何通信。Docker 提供了多种网络模式,每种模式都有其特定的使用场景和优势。本文将深入探讨 Docker 的网络模式,包括桥接模式、主机模式、覆盖网络模式…...
Apache和PHP:构建动态网站的黄金组合
在当今的互联网世界,网站已经成为了企业、个人和机构展示自己、与用户互动的重要平台。而在这些动态网站的背后,Apache和PHP无疑是最受开发者青睐的技术组合之一。这一组合提供了高效、灵活且可扩展的解决方案,帮助您快速搭建出强大的网站&am…...
一个简单的html5导航页面
一个简单的 HTML5 导航页面的示例代码: html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><ti…...
积木仪表盘 出现 “没有权限,请联系管理员分配权限“ 解决方法
目录 前言1. 问题所示2. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 原先写过报表的错误!但错误解决方式不一样:jmreport测试数据库出现 权限不足,此功能需要分配角色 解决方法 1. 问题所示 出现 没有权限,请联系管理员分配权限 的…...
C++语言的循环实现
C语言中的循环实现 引言 在程序设计中,循环是一个至关重要的概念。它允许我们在满足某种条件时重复执行某段代码,从而实现复杂的逻辑和算法。C作为一种强大的编程语言,提供了多种循环结构来满足不同的需求。本文将深入探讨C中的循环实现&am…...
高级java每日一道面试题-2025年01月13日-框架篇[Spring篇]-Spring 是怎么解决循环依赖的?
如果有遗漏,评论区告诉我进行补充 面试官: Spring 是怎么解决循环依赖的? 我回答: 在Java高级面试中,Spring框架如何解决循环依赖是一个重要且常见的问题。以下是对Spring解决循环依赖的详细解释: 循环依赖的定义与类型 循环依赖是指两个或多个Bea…...
.Net Core Record 类型
public class Person { public string id {get;init;} public string code {get;init;} public string name {get;init;} } //Person 属性不可单独赋值,相当于使用record定义 public record Person string id,string code,string name) //record类…...
GitLab CI/CD使用runner实现自动化部署前端Vue2 后端.Net 7 Zr.Admin项目
1、查看gitlab版本 建议安装的runner版本和gitlab保持一致 2、查找runner 执行 yum list gitlab-runner --showduplicates | sort -r 找到符合gitlab版本的runner,我这里选择 14.9.1版本 如果执行出现找不到下载源,添加官方仓库 执行 curl -L &quo…...
重邮+数字信号处理实验七:用 MATLAB 设计 IIR 数字滤波器
一、实验目的 1 、加深对窗函数法设计 FIR 数字滤波器的基本原理的理解。 2 、学习用 Matlab 语言的窗函数法编写设计 FIR 数字滤波器的程序。 3 、了解 Matlab 语言有关窗函数法设计 FIR 数字滤波器的常用函数用法。 4 、掌握 FIR 滤波器的快速卷积实现原理。…...
CES 2025:INAIR 推出“另类”AR电脑,重新定义移动计算体验
在2025年国际消费类电子产品展览会(CES)上,INAIR公司凭借其创新的AR电脑产品吸引了众多目光。这款设备不仅融合了增强现实(AR)技术与传统个人电脑的功能,还通过独特的设计理念为用户带来了前所未有的移动计算体验。本文将详细介绍INAIR AR电脑的特点、技术创新及其对未来…...
了解 ASP.NET Core 中的中间件
在 .NET Core 中,中间件(Middleware) 是处理 HTTP 请求和响应的核心组件。它们被组织成一个请求处理管道,每个中间件都可以在请求到达最终处理程序之前或之后执行操作。中间件可以用于实现各种功能,如身份验证、路由、…...
数据结构与算法之链表: LeetCode 234. 回文链表 (Ts版)
回文链表 https://leetcode.cn/problems/palindrome-linked-list/description/ 描述 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表如果是,返回 true ;否则,返回 false 示例 1 输入:head [1,2,2,1]…...
DVWA靶场CSRF漏洞通关教程及源码审计
目录标题 CSRFlow源码审计 medium源码审计 high源码审计 impossible源码审计 CSRF low 先修改密码 看到地址栏 复制在另一个网页打开 成功登录 源码审计 没有任何过滤措施,很危险,并且采用了不安全的md5加密 <?phpif( isset( $_GET[ Change ] )…...
支持Google Analytics快捷添加的CMS:费用与部署形式详解
CMS 的费用和部署形式是选择平台的重要参考因素,不同的业务需求需要不同的解决方案。本文将从费用和部署形式两个角度,详细分析支持 Google Analytics 快捷集成的 CMS 和工具,帮助您更好地了解这些平台的特点。 1. BigCommerce 费用ÿ…...
Kibana操作ES基础
废话少说,开干!!!!!!!!!!!!截图更清晰,复制在下面 #库操作#创建索引【相当于数据库的库】 PUT /first_index#获…...
如何在Ubuntu上安装和配置Git
版本控制系统(VCS)是软件开发过程中不可或缺的工具之一,它帮助开发者跟踪代码变更、协作开发以及管理不同版本的项目。Git作为当前最流行的分布式版本控制系统,因其高效性和灵活性而广受青睐。本文将指导你如何在Ubuntu操作系统上…...
基于springboot+vue+微信小程序的宠物领养系统
基于springbootvue微信小程序的宠物领养系统 一、介绍 本项目利用SpringBoot、Vue和微信小程序技术,构建了一个宠物领养系统。 本系统的设计分为两个层面,分别为管理层面与用户层面,也就是管理者与用户,管理权限与用户权限是不…...
HTB:Driver[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用smbclient尝…...
Require:利用MySQL binlog实现闪回操作
1,闪回原理 【binlog】MySQL binlog以event的形式,记录了MySQL server从启用binlog以来所有的变更信息,能够帮助重现这之间的所有变化。MySQL引入binlog主要有两个目的:一是为了主从复制;二是某些备份还原操作后需要重…...
黑马linux笔记(03)在Linux上部署各类软件 MySQL5.7/8.0 Tomcat(JDK) Nginx RabbitMQ
文章目录 实战章节:在Linux上部署各类软件tar -zxvf各个选项的含义 为什么学习各类软件在Linux上的部署 一 MySQL数据库管理系统安装部署【简单】MySQL5.7版本在CentOS系统安装MySQL8.0版本在CentOS系统安装MySQL5.7版本在Ubuntu(WSL环境)系统…...
FFmpeg入门
在音视频处理领域,有一款神器级的工具横扫开发者圈,那就是 FFmpeg。它被誉为“音视频处理的瑞士军刀”,凭借强大的功能和开源的特性成为众多开发者和媒体从业者的首选。今天,我们就来聊聊 FFmpeg 的入门使用,带你轻松开…...
如何将 sqlserver 数据迁移到 mysql
文章目录 前言一、导出SQL Server 数据二、转换数据格式为MySQL兼容格式三、导入数据到MySQL数据库五、使用ETL工具六、通过 navicat 工具七、总结 前言 将 SQL Server 数据迁移到 MySQL 是一个常见的数据库迁移任务,通常涉及以下几个关键步骤:导出 SQL…...
【leetcode 13】哈希表 242.有效的字母异位词
原题链接 题解链接 一般哈希表都是用来快速判断一个元素是否出现集合里。 当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。 数组 set (集合) map(映射) 如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景…...
git - 用SSH方式迁出远端git库
文章目录 git - 用SSH方式迁出远端git库概述笔记以gitee为例产生RSA密钥对 备注githubEND git - 用SSH方式迁出远端git库 概述 最近一段时间,在网络没问题的情况下,用git方式直接迁出git库总是会失败。 失败都是在远端, 显示RPC错误。 但是git服务器端…...
21天学通C++——9.5复制构造函数
浅复制 复制类对象时只是单纯的复制所有的值,如指针只会复制指针的大小,而不会再开辟同一空间大小的内存,即两个指针指向同一片内存空间。 伪代码: class MyString { private:char*buffer; public:MyString(const char* initStri…...
GPT 系列论文精读:从 GPT-1 到 GPT-4
学习 & 参考资料 前置文章 Transformer 论文精读 机器学习 —— 李宏毅老师的 B 站搬运视频 自监督式学习(四) - GPT的野望[DLHLP 2020] 來自猎人暗黑大陆的模型 GPT-3 论文逐段精读 —— 沐神的论文精读合集 GPT,GPT-2,GPT-3 论文精读【论文精读】…...
【python】OpenCV—Local Translation Warps
文章目录 1、功能描述2、原理分析3、代码实现4、效果展示5、完整代码6、参考 1、功能描述 利用液化效果实现瘦脸美颜 交互式的液化效果原理来自 Gustafsson A. Interactive image warping[D]. , 1993. 2、原理分析 上面描述很清晰了,鼠标初始在 C,也即…...
elasticsearch集群部署
一、创建 elasticsearch-cluster 文件夹 创建 elasticsearch-7.6.2-cluster文件夹 修改服务es服务文件夹为node-001 修改config/elasticsearch.yml 配置文件 # Elasticsearch Configuration # # NOTE: Elasticsearch comes with reasonable defaults for most settings. # …...
python调用window库全屏截图生成bmp位图学习
import io import time import struct import ctypes s time.time() gdi32 ctypes.windll.gdi32 user32 ctypes.windll.user32# 定义常量 SM_CXSCREEN 0 SM_CYSCREEN 1# 缩放比例 zoom 1 screenWidth int(user32.GetSystemMetrics(SM_CXSCREEN) * zoom) screenHeight i…...
Wireshark使用
1.抓包过滤器--BPF语法 类型Type:主机(host)、网段(net)、端口(port) 方向Dir:源地址(src)、目标地址(dst) 协议Proto:各种…...
FLASK 上传文件
HTML form enctype"multipart/form-data" 编码类型说明application/x-www-form-urlencoded表单数据编码为名称/值对。 这是标准编码格式。multipart/form-data表单数据编码为消息,页面上每个控件都有单独的部分。text/plain表单数据以纯文本编码&#x…...
卷积神经网络
卷积神经网络 随着输入数据规模的增大,计算机视觉的处理难度也大幅增加。 64 64 3 64 \times 64 \times 3 64643 的图片特征向量维度为12288,而 1000 1000 3 1000 \times 1000 \times 3 100010003 的图片数据量达到了300万。随着数据维度的增加&am…...
SparrowRTOS系列:链表版本内核
前言 Sparrow RTOS是笔者之前写的一个极简性RTOS,初代版本只有400行,后面笔者又添加了消息队列、信号量、互斥锁三种IPC机制,使之成为一个较完整、堪用的内核,初代版本以简洁为主,使用数组和表作为任务挂载的抽象数据…...
【redis初阶】环境搭建
目录 一、Ubuntu 安装 redis 二、Centos7 安装 redis 三、Centos8 安装 redis 四、redis客户端介绍 redis学习🥳 一、Ubuntu 安装 redis 使用 apt 安装 apt install redis -y 查看redis版本 redis-server --version 支持远程连接…...
OpenCV相机标定与3D重建(54)解决透视 n 点问题(Perspective-n-Point, PnP)函数solvePnP()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 根据3D-2D点对应关系找到物体的姿态。 cv::solvePnP 是 OpenCV 库中的一个函数,用于解决透视 n 点问题(Perspective-n-Po…...
shell脚本回顾1
1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。 一、 ll /tmp/size.log &>/dev/null if [ $? -eq 0 ];then cat /tmp/size.log else touch /tmp/size.log echo date > /tmp/size.log fi二、 if …...
HarmonyOS命令行工具
作为一个从Android转过来的鸿蒙程序猿,在开发过程中不由自主地想使用类似adb命令的命令行工具去安装/卸载应用,往设备上推或者拉去文件,亦或是抓一些日志。但是发现在鸿蒙里边,华为把命令行工具分的很细,种类相当丰富 …...
V少JS基础班之第四弹
一、 前言 第四弹内容是操作符。 本章结束。第一个月的内容就完成了, 是一个节点。 下个月我们就要开始函数的学习了。 我们学习完函数之后。很多概念就可以跟大家补充说明了。 OK,那我们就开始本周的操作符学习 本系列为一周一更,计划历时6…...
从前端视角看设计模式之创建型模式篇
设计模式简介 "设计模式"源于GOF(四人帮)合著出版的《设计模式:可复用的面向对象软件元素》,该书第一次完整科普了软件开发中设计模式的概念,他们提出的设计模式主要是基于以下的面向对象设计原则ÿ…...
网络应用技术 实验七:实现无线局域网
一、实验简介 在 eNSP 中构建无线局域网,并实现全网移动终端互相通信。 二、实验目的 1 、理解无线局域网的工作原理; 2 、熟悉无线局域网的规划与构建过程; 3 、掌握无线局域网的配置方法; 三、实验学时 2 学时 四、实…...
Kotlin 循环语句详解
文章目录 循环类别for-in 循环区间整数区间示例1:正向遍历示例2:反向遍历 示例1:遍历数组示例2:遍历区间示例3:遍历字符串示例4:带索引遍历 while 循环示例:计算阶乘 do-while 循环示例…...
B+树的原理及实现
文章目录 B树的原理及实现一、引言二、B树的特性1、结构特点2、节点类型3、阶数 三、B树的Java实现1、节点实现2、B树操作2.1、搜索2.2、插入2.3、删除2.4、遍历 3、B树的Java实现示例 四、总结 B树的原理及实现 一、引言 B树是一种基于B树的树形数据结构,它在数据…...
ArkTS 基础语法:声明式 UI 描述与自定义组件
1. ArkTS 简介 ArkTS 是 HarmonyOS 应用开发中的一种编程语言,它结合了 TypeScript 的类型检查和声明式 UI 描述方式,帮助开发者更高效地构建用户界面。 2. 声明式 UI 描述 ArkTS 使用声明式语法来定义 UI 结构,通过组件、属性和事件配置实…...
list的模拟实现详解
文章目录 list的模拟实现list的迭代器begin()和end() list的模拟实现 #pragma once #include<iostream> #include<list>using namespace std;namespace wbc {// 类模版template<class T>struct list_node // 链表的节点{T _data;list_node<T>* _next;…...