目标检测算法——YOLOv5/v7/v8改进结合涨点Trick之Wise-IoU(超越CIOU/SIOU)

超越CIOU/SIOU | Wise-IoU助力YOLO强势涨点!!!
论文题目:Wise-IoU: Bounding Box Regression Loss with Dynamic Focusing Mechanism
论文链接:https://arxiv.org/abs/2301.10051

近年来的研究大多假设训练数据中的示例有较高的质量,致力于强化边界框损失的拟合能力。但注意到目标检测训练集中含有低质量示例,如果一味地强化边界框对低质量示例的回归,显然会危害模型检测性能的提升。
Focal-EIoU v1 被提出以解决这个问题,但由于其聚焦机制是静态的,并未充分挖掘非单调聚焦机制的潜能。基于这个观点,作者提出了动态非单调的聚焦机制,设计了 Wise-IoU (WIoU)。动态非单调聚焦机制使用“离群度”替代 IoU 对锚框进行质量评估,并提供了明智的梯度增益分配策略。该策略在降低高质量锚框的竞争力的同时,也减小了低质量示例产生的有害梯度。这使得 WIoU 可以聚焦于普通质量的锚框,并提高检测器的整体性能。将WIoU应用于最先进的单级检测器 YOLOv7 时,在 MS-COCO 数据集上的 AP-75 从 53.03% 提升到 54.50%。
一、 Wise-IoU相关代码

import mathimport torchclass IoU_Cal:''' pred, target: x0,y0,x1,y1monotonous: {None: originTrue: monotonic FMFalse: non-monotonic FM}momentum: The momentum of running mean (This can be set by the function <momentum_estimation>)'''iou_mean = 1.monotonous = Falsemomentum = 1 - pow(0.05, 1 / (890 * 34))_is_train = True@classmethoddef momentum_estimation(cls, n, t):''' n: Number of batches per training epocht: The epoch when mAP's ascension slowed significantly'''time_to_real = n * tcls.momentum = 1 - pow(0.05, 1 / time_to_real)return cls.momentumdef __init__(self, pred, target):self.pred, self.target = pred, targetself._fget = {# x,y,w,h'pred_xy': lambda: (self.pred[..., :2] + self.pred[..., 2: 4]) / 2,'pred_wh': lambda: self.pred[..., 2: 4] - self.pred[..., :2],'target_xy': lambda: (self.target[..., :2] + self.target[..., 2: 4]) / 2,'target_wh': lambda: self.target[..., 2: 4] - self.target[..., :2],# x0,y0,x1,y1'min_coord': lambda: torch.minimum(self.pred[..., :4], self.target[..., :4]),'max_coord': lambda: torch.maximum(self.pred[..., :4], self.target[..., :4]),# The overlapping region'wh_inter': lambda: torch.relu(self.min_coord[..., 2: 4] - self.max_coord[..., :2]),'s_inter': lambda: torch.prod(self.wh_inter, dim=-1),# The area covered's_union': lambda: torch.prod(self.pred_wh, dim=-1) +torch.prod(self.target_wh, dim=-1) - self.s_inter,# The smallest enclosing box'wh_box': lambda: self.max_coord[..., 2: 4] - self.min_coord[..., :2],'s_box': lambda: torch.prod(self.wh_box, dim=-1),'l2_box': lambda: torch.square(self.wh_box).sum(dim=-1),# The central points' connection of the bounding boxes'd_center': lambda: self.pred_xy - self.target_xy,'l2_center': lambda: torch.square(self.d_center).sum(dim=-1),# IoU'iou': lambda: 1 - self.s_inter / self.s_union}self._update(self)def __setitem__(self, key, value):self._fget[key] = valuedef __getattr__(self, item):if callable(self._fget[item]):self._fget[item] = self._fget[item]()return self._fget[item]@classmethoddef train(cls):cls._is_train = True@classmethoddef eval(cls):cls._is_train = False@classmethoddef _update(cls, self):if cls._is_train: cls.iou_mean = (1 - cls.momentum) * cls.iou_mean + \cls.momentum * self.iou.detach().mean().item()def _scaled_loss(self, loss, alpha=1.9, delta=3):if isinstance(self.monotonous, bool):beta = self.iou.detach() / self.iou_meanif self.monotonous:loss *= beta.sqrt()else:divisor = delta * torch.pow(alpha, beta - delta)loss *= beta / divisorreturn loss@classmethoddef IoU(cls, pred, target, self=None):self = self if self else cls(pred, target)return self.iou@classmethoddef WIoU(cls, pred, target, self=None):self = self if self else cls(pred, target)dist = torch.exp(self.l2_center / self.l2_box.detach())return self._scaled_loss(dist * self.iou)@classmethoddef EIoU(cls, pred, target, self=None):self = self if self else cls(pred, target)penalty = self.l2_center / self.l2_box.detach() \+ torch.square(self.d_center / self.wh_box).sum(dim=-1)return self._scaled_loss(self.iou + penalty)@classmethoddef GIoU(cls, pred, target, self=None):self = self if self else cls(pred, target)return self._scaled_loss(self.iou + (self.s_box - self.s_union) / self.s_box)@classmethoddef DIoU(cls, pred, target, self=None):self = self if self else cls(pred, target)return self._scaled_loss(self.iou + self.l2_center / self.l2_box)@classmethoddef CIoU(cls, pred, target, eps=1e-4, self=None):self = self if self else cls(pred, target)v = 4 / math.pi ** 2 * \(torch.atan(self.pred_wh[..., 0] / (self.pred_wh[..., 1] + eps)) -torch.atan(self.target_wh[..., 0] / (self.target_wh[..., 1] + eps))) ** 2alpha = v / (self.iou + v)return self._scaled_loss(self.iou + self.l2_center / self.l2_box + alpha.detach() * v)@classmethoddef SIoU(cls, pred, target, theta=4, self=None):self = self if self else cls(pred, target)# Angle Costangle = torch.arcsin(torch.abs(self.d_center).min(dim=-1)[0] / (self.l2_center.sqrt() + 1e-4))angle = torch.sin(2 * angle) - 2# Dist Costdist = angle[..., None] * torch.square(self.d_center / self.wh_box)dist = 2 - torch.exp(dist[..., 0]) - torch.exp(dist[..., 1])# Shape Costd_shape = torch.abs(self.pred_wh - self.target_wh)big_shape = torch.maximum(self.pred_wh, self.target_wh)w_shape = 1 - torch.exp(- d_shape[..., 0] / big_shape[..., 0])h_shape = 1 - torch.exp(- d_shape[..., 1] / big_shape[..., 1])shape = w_shape ** theta + h_shape ** thetareturn self._scaled_loss(self.iou + (dist + shape) / 2)
二、实验对比结果


🚀🏆🍀【算法创新&算法训练&论文投稿】相关链接👇👇👇
✨【YOLO创新算法尝新系列】✨
🏂 美团出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)
🏂 官方正品 | Ultralytics YOLOv8算法来啦(尖端SOTA模型)
🏂 改进YOLOv5/YOLOv7——魔改YOLOv5/YOLOv7提升检测精度(涨点必备)
————————————🌴【重磅干货来袭】🎄————————————
🚀一、主干网络改进(持续更新中)🎄🎈
1.目标检测算法——YOLOv5/YOLOv7改进之结合ConvNeXt结构(纯卷积|超越Swin)
2.目标检测算法——YOLOv5/YOLOv7改进之结合MobileOne结构(高性能骨干|仅需1ms)
3.目标检测算法——YOLOv5/YOLOv7改进之结合Swin Transformer V2(涨点神器)
4.目标检测算法——YOLOv5/YOLOv7改进结合BotNet(Transformer)
5.目标检测算法——YOLOv5/YOLOv7改进之GSConv+Slim Neck(优化成本)
6.目标检测算法——YOLOv5/YOLOv7改进结合新神经网络算子Involution(CVPR 2021)
7.目标检测算法——YOLOv7改进|增加小目标检测层
8.目标检测算法——YOLOv5改进|增加小目标检测层
🌴 持续更新中……
🚀二、轻量化网络(持续更新中)🎄🎈
1.目标检测算法——YOLOv5/YOLOv7改进之结合RepVGG(速度飙升)
2.目标检测算法——YOLOv5/YOLOv7改进之结合PP-LCNet(轻量级CPU网络)
3.目标检测算法——YOLOv5/YOLOv7改进之结合轻量化网络MobileNetV3(降参提速)
4.目标检测算法——YOLOv5/YOLOv7改进|结合轻量型网络ShuffleNetV2
5.目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块
🌴 持续更新中……
🚀三、注意力机制(持续更新中)🎄🎈
1.目标检测算法——YOLOv5改进之结合CBAM注意力机制
2.目标检测算法——YOLOv7改进之结合CBAM注意力机制
3.目标检测算法——YOLOv5/YOLOv7之结合CA注意力机制
4.目标检测算法——YOLOv5/YOLOv7改进之结合ECA注意力机制
5.目标检测算法——YOLOv5/YOLOv7改进之结合NAMAttention(提升涨点)
6.目标检测算法——YOLOv5/YOLOv7改进之结合GAMAttention
7.目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)
8.目标检测算法——YOLOv5/YOLOv7改进之结合Criss-Cross Attention
9.目标检测算法——YOLOv5/YOLOv7改进之结合SOCA(单幅图像超分辨率)
🌴 持续更新中……
🚀四、检测头部改进(持续更新中)🎄🎈
1.魔改YOLOv5/v7高阶版(魔法搭配+创新组合)——改进之结合解耦头Decoupled_Detect
2.目标检测算法——YOLOv5/YOLOv7改进结合涨点Trick之ASFF(自适应空间特征融合)
🌴 持续更新中……
🚀五、空间金字塔池化(持续更新中)🎄🎈
1.目标检测算法——YOLOv5/YOLOv7改进之结合ASPP(空洞空间卷积池化金字塔)
2.目标检测算法——YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)
🌴 持续更新中……
🚀六、损失函数及NMS改进(持续更新中)🎄🎈
1.目标检测算法——YOLOv5/YOLOv7改进|将IOU Loss替换为EIOU Loss
2.目标检测算法——助力涨点 | YOLOv5改进结合Alpha-IoU
3.目标检测算法——YOLOv5/YOLOv7改进之结合SIoU
4.目标检测算法——YOLOv5将NMS替换为DIoU-NMS
🌴 持续更新中……
🚀七、其他创新改进项目(持续更新中)🎄🎈
1.手把手教你搭建属于自己的PyQt5-YOLOv5目标检测平台(保姆级教程)
2.YOLO算法改进之结合GradCAM可视化热力图(附详细教程)
3.目标检测算法——YOLOv5/YOLOv7改进之结合SPD-Conv(低分辨率图像和小目标涨点明显)
4.目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数
5.目标检测算法——YOLOv5/YOLOv7改进之结合BiFPN
🌴 持续更新中……
🚀八、算法训练相关项目(持续更新中)🎄🎈
1.目标检测算法——YOLOv7训练自己的数据集(保姆级教程)
2.人工智能前沿——玩转OpenAI语音机器人ChatGPT(中文版)
3.深度学习之语义分割算法(入门学习)
4.知识经验分享——YOLOv5-6.0训练出错及解决方法(RuntimeError)
5.目标检测算法——将xml格式转换为YOLOv5格式txt
6.目标检测算法——YOLOv5/YOLOv7如何改变bbox检测框的粗细大小
7.人工智能前沿——6款AI绘画生成工具
8.YOLOv5结合人体姿态估计
9.超越YOLOv5,0.7M超轻量,又好又快(PP-YOLOE&PP-PicoDet)
10.目标检测算法——收藏|小目标检测的定义(一)
11.目标检测算法——收藏|小目标检测难点分析(二)
12.目标检测算法——收藏|小目标检测解决方案(三)
🌴 持续更新中……
🚀九、数据资源相关项目(持续更新中)🎄🎈
1.目标检测算法——小目标检测相关数据集(附下载链接)
2.目标检测算法——3D公共数据集汇总(附下载链接)
3.目标检测算法——3D公共数据集汇总 2(附下载链接)
4.目标检测算法——行人检测&人群计数数据集汇总(附下载链接)
5.目标检测算法——遥感影像数据集资源汇总(附下载链接)
6.目标检测算法——自动驾驶开源数据集汇总(附下载链接)
7.目标检测算法——自动驾驶开源数据集汇总 2(附下载链接)
8.目标检测算法——图像分类开源数据集汇总(附下载链接)
9.目标检测算法——医学图像开源数据集汇总(附下载链接)
10.目标检测算法——工业缺陷数据集汇总1(附下载链接)
11.目标检测算法——工业缺陷数据集汇总2(附下载链接)
12.目标检测算法——垃圾分类数据集汇总(附下载链接)
13.目标检测算法——人脸识别数据集汇总(附下载链接)
14.目标检测算法——安全帽识别数据集(附下载链接)
15.目标检测算法——人体姿态估计数据集汇总(附下载链接)
16.目标检测算法——人体姿态估计数据集汇总 2(附下载链接)
17.目标检测算法——车辆牌照识别数据集汇总(附下载链接)
18.目标检测算法——车辆牌照识别数据集汇总 2(附下载链接)
19.收藏 | 机器学习公共数据集集锦(附下载链接)
20.目标检测算法——图像分割数据集汇总(附下载链接)
21.目标检测算法——图像分割数据集汇总 2(附下载链接)
22.收藏 | 自然语言处理(NLP)数据集汇总(附下载链接)
23.自然语言处理(NLP)数据集汇总 2(附下载链接)
24.自然语言处理(NLP)数据集汇总 3(附下载链接)
25.自然语言处理(NLP)数据集汇总 4(附下载链接)
26.目标检测算法——关键点检测数据集汇总(附下载链接)
27.目标检测算法——图像去雾开源数据集汇总(速速收藏)
🌴 持续更新中……
🚀十、论文投稿相关项目(持续更新中)🎄🎈
1.论文投稿指南——收藏|SCI论文投稿注意事项(提高命中率)
2.论文投稿指南——收藏|SCI论文怎么投?(Accepted)
3.论文投稿指南——收藏|SCI写作投稿发表全流程
4.论文投稿指南——收藏|如何选择SCI期刊(含选刊必备神器)
5.论文投稿指南——SCI选刊
6.论文投稿指南——SCI投稿各阶段邮件模板
7.人工智能前沿——深度学习热门领域(确定选题及研究方向)
8.人工智能前沿——2022年最流行的十大AI技术
9.人工智能前沿——未来AI技术的五大应用领域
10.人工智能前沿——无人自动驾驶技术
11.人工智能前沿——AI技术在医疗领域的应用
12.人工智能前沿——随需应变的未来大脑
13.目标检测算法——深度学习知识简要普及
14.目标检测算法——10种深度学习框架介绍
15.目标检测算法——为什么我选择PyTorch?
16.知识经验分享——超全激活函数解析(数学原理+优缺点)
17.知识经验分享——卷积神经网络(CNN)
18.海带软件分享——Office 2021全家桶安装教程(附报错解决方法)
19.海带软件分享——日常办公学习软件分享(收藏)
20.论文投稿指南——计算机视觉 (Computer Vision) 顶会归纳
21.论文投稿指南——中文核心期刊
22.论文投稿指南——计算机领域核心期刊
23.论文投稿指南——中文核心期刊推荐(计算机技术)
24.论文投稿指南——中文核心期刊推荐(计算机技术2)
25.论文投稿指南——中文核心期刊推荐(计算机技术3)
26.论文投稿指南——中文核心期刊推荐(电子、通信技术)
27.论文投稿指南——中文核心期刊推荐(电子、通信技术2)
28.论文投稿指南——中文核心期刊推荐(电子、通信技术3)
29.论文投稿指南——中文核心期刊推荐(机械、仪表工业)
30.论文投稿指南——中文核心期刊推荐(机械、仪表工业2)
31.论文投稿指南——中文核心期刊推荐(机械、仪表工业3)
32.论文投稿指南——中国(中文EI)期刊推荐(第1期)
33.论文投稿指南——中国(中文EI)期刊推荐(第2期)
34.论文投稿指南——中国(中文EI)期刊推荐(第3期)
35.论文投稿指南——中国(中文EI)期刊推荐(第4期)
36.论文投稿指南——中国(中文EI)期刊推荐(第5期)
37.论文投稿指南——中国(中文EI)期刊推荐(第6期)
38.论文投稿指南——中国(中文EI)期刊推荐(第7期)
39.论文投稿指南——中国(中文EI)期刊推荐(第8期)
40.【1】SCI易中期刊推荐——计算机方向(中科院3区)
41.【2】SCI易中期刊推荐——遥感图像领域(中科院2区)
42.【3】SCI易中期刊推荐——人工智能领域(中科院1区)
43.【4】SCI易中期刊推荐——神经科学研究(中科院4区)
44.【5】SCI易中期刊推荐——计算机科学(中科院2区)
45.【6】SCI易中期刊推荐——人工智能&神经科学&机器人学(中科院3区)
46.【7】SCI易中期刊推荐——计算机 | 人工智能(中科院4区)
47.【8】SCI易中期刊推荐——图像处理领域(中科院4区)
48.【9】SCI易中期刊推荐——工程技术-计算机:软件工程(中科院4区)
49.【10】SCI易中期刊推荐——工程技术-计算机:人工智能(中科院2区)
50.【11】SCI易中期刊推荐——计算机方向(中科院4区)
51.【12】SCI易中期刊推荐——计算机信息系统(中科院4区)
🌴 持续更新中……
关于YOLO算法改进&论文投稿可关注并留言博主的CSDN/QQ
>>>一起交流!互相学习!共同进步!<<<
相关文章:
目标检测算法——YOLOv5/v7/v8改进结合涨点Trick之Wise-IoU(超越CIOU/SIOU)
超越CIOU/SIOU | Wise-IoU助力YOLO强势涨点!!! 论文题目:Wise-IoU: Bounding Box Regression Loss with Dynamic Focusing Mechanism 论文链接:https://arxiv.org/abs/2301.10051 近年来的研究大多假设训练数据中的…...
【蓝桥杯选拔赛真题39】python输出数字组合 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析
目录 python输出数字组合 一、题目要求 1、编程实现 2、输入输出...
网络安全工程师做什么?
网络安全很复杂。数字化转型、远程工作和不断变化的威胁形势需要不同的工具和不同的技能组合。 系统必须到位以保护端点、身份和无边界网络边界。负责处理这种复杂安全基础设施的工作角色是网络安全工程师。 简而言之,网络安全工程师是负责设计和实施组织安全系…...
总结:K8S运维常用命令
一、部署./kubectl apply -f biz-healing-pod.yaml 二、查看部署的资源1、podkubectl get pod -A:获取所有pod没有IP?用-o wide参数看详细信息:./kubectl get pod -n deepflow -o wide2、service查看hubble-manager命名空间下有哪些service/d…...
你是真的“C”——进行动态内存分配库函数的使用详解
你是真的“C”——申请动态空间库函数的使用详解😎前言🙌一、为什么需要动态内存分配?💞free 函数😘malloc 库函数😘calloc 库函数😘realloc 库函数😘总结撒花💞…...
Python|蓝桥杯进阶第五卷——数论
欢迎交流学习~~ 专栏: 蓝桥杯Python组刷题日寄 蓝桥杯进阶系列: 🏆 Python | 蓝桥杯进阶第一卷——字符串 🔎 Python | 蓝桥杯进阶第二卷——贪心 💝 Python | 蓝桥杯进阶第三卷——动态规划 ✈️ Python | 蓝桥杯进阶…...
用Python实现单例模式
什么是单例模式单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象…...
交叉编译说明:工具链安装和环境变量配置
目录 一 简单了解交叉编译 ① 什么是交叉编译 ② 为什么需要交叉编译 ③ 宿主机和目标机 二 搭建交叉编译工作环境 ① 安装工具链 ② 配置环境变量 ● 配置临时环境变量 ● 配置永久环境变量 三 交叉编译宿主机和目标机 ● 宿主机编译生成的可执行文件下载到目…...
文件上传的多种利用方式
文件上传的多种利用方式 文件上传漏洞除了可以通过绕过检测进行webshell的上传之外,还有多种其它的漏洞可以进行测试。 XSS漏洞 文件名造成的XSS 当上传任何文件时,文件名肯定是会反显示在网页上,可以使用 XSS Payload做文件名尝试将其上传到…...
盘一盘C++的类型描述符(二)
先序文章请看 盘一盘C的类型描述符(一) 稍微组合一下的复杂类型 数组指针类型的数组类型 数组的指针类型我们已经了解了,那么,以这种类型作为元素的数组类型怎么搞? using type int (*)[3]; // 元素类型是数组指针…...
慎投,Frontiers这本期刊显示on hold中
什么是“On Hold”? 该期刊因为质量问题正在被进行重新评估;在重新评估过程中,不会检索新发表的文章。该期刊因为质量问题正在被进行重新评估;在重新评估过程中,不会检索新发表的文章。根据选择标准,在最严…...
Winform控件开发(21)——ProgressBar(史上最全)
一、属性 1、Name 用于获取控件对象 2、Anchor 锚定控件对于父控件的位置 3、BackColor 背景色 4、ContextMenuStrip 关联的上下文菜单 5、Cursor 鼠标移动到控件上显示的光标 6、Dock 停靠在父控件的位置 7、Enabled 是否启动该控件,false时事件都不能触发 8、…...
校招失败后,在外包公司熬了 2 年终于进了字节跳动,竭尽全力....
其实两年前校招的时候就往字节投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上学到了特别…...
UniApp + SpringBoot 实现接入支付宝支付功能和退款功能
一、支付宝开放平台设置 注册支付宝支付功能需要个体工商户或企业才可以!需要有营业执照才能去申请哦! 1、登录到控制台 进入支付宝开放平台 控制台 2、开发设置 3、产品绑定APP支付 如果没有绑定APP支付就会报商家订单参数异常,请重新发起…...
初识进程
文章目录一、进程的概念1. 进程是什么及进程的管理2. Linux 下的 pcb3. 系统调用接口 getpid 和 getppid4. 系统调用接口 fork一、进程的概念 1. 进程是什么及进程的管理 在 Linux下 ./binaryfile 运行一个程序或者在 Windows下双击运行一个程序时,程序就变成了一个…...
SOAP传输协议
一.HTTP传输协议 超文本传输协议(HyperText Transfer Protocol,缩写:HTTP),它是基于请求-响应的模式协议,客户端发出请求,服务器端给出响应并返回请求内容。方法如下,HTTP传输协议常…...
<Linux>进程控制
进程控制 文章目录进程控制一、进程创建1.fork函数认识2.写时拷贝3.fork常规用法4.fork调用失败的原因二、进程终止1.进程退出场景2.进程退出码3.进程退出的方式三、进程等待1.进程等待是什么?2.进程等待的必要性3.进程等待的方法3.1.wait函数3.2.waitpid函数4.如何…...
有手就行 -- 搭建图床(PicGo+腾讯云)
🍳作者:贤蛋大眼萌,一名很普通但不想普通的程序媛\color{#FF0000}{贤蛋 大眼萌 ,一名很普通但不想普通的程序媛}贤蛋大眼萌,一名很普通但不想普通的程序媛🤳 🙊语录:多一些不为什么的…...
“蓝桥杯”递推和递归(一)——取数位
1. 算法简介 递推和递归虽然叫法不同,但它们的基本思想是一致的,在很多程序中,这两种算法可以通用,不同的是递推法效率更高,递归法更方便阅读。 (1)递推法 递推法是一种重要的数学方法&#…...
蓝桥杯·3月份刷题集训Day02
本篇博客旨在记录自已打卡蓝桥杯3月份刷题集训,同时会有自己的思路及代码解答希望可以给小伙伴一些帮助。本人也是算法小白,水平有限,如果文章中有什么错误之处,希望小伙伴们可以在评论区指出来,共勉💪。 文…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
