8 边界


目标:将外来代码干净利落地整合进自己的代码中

使用第三方代码

Map<Sensor> sensors = new HashMap<>();
...
Sensor s = sensors.get(sensorId);
public class Sensors {
	// sensors 用户不必关心是否使用了泛型 那将是实现细节才关心的
	private Map sensors = new HashMap();

	public Sensor getById(String id) {
		return (Sensor)sensors.get(id);
	}
}

Map 的使用应该是上述的方式 但并不建议总是以这种方式封装 Map 的使用
建议不要将在边界接口(如上述 Map 接口)直接在系统中传递(避免从公共 API 中返回边界接口 或 将边界接口作为参数传递给公共 API)
原因:如果不稍加注意 生态内代码调用API 处会出现大量的不整洁代码 在专门的类中进行转化再使用 只在一出进行不整洁转化 不要到处调用到处需要转化
解决:如果使用边界接口 就把它保留在类或亲近类中 将不整洁代码封装起来 不要让这种不整洁到处出现

如何浏览和学习边界

学习性测试:不学习第三方代码 不整合第三方代码 不在生产代码中试验新东西 而是编写测试来遍览和理解第三方代码
如在应用中那样调用第三方代码 通过核对试验来检测自己对那个 API 的理解程度 测试聚焦于想从 API 得到的东西

学习性测试示例

  1. 阅读介绍文档
  2. 编写用例
  3. 调试(搜索——阅读——测试)

学习性测试的好处

  • 无成本 只付出最少必要精力 总要有一系列与生产代码中调用方式一致的输出测试来支持整洁的边界
  • 随时测试兼容 如第三方程序包版本更新 即可运行学习性测试 看是否兼容
  • 精确试验

使用尚不存在的代码

事先定义自己使用的接口 在我们的控制之下 有助于保持客户代码更可读 且集中完成它该完成的工作
等三方 API 出来后 再使用适配器跨接 封装与 API 的互动 提供一个当 API 发生变动时唯一需要改动的地方
边界解耦

整洁的边界

目的:当三方有变动时可以减少修改点
边界代码需要清晰的分隔 定义了期望的测试 避免因过多了解三方代码特定信息而产生依赖(解耦

通过代码少数几处引用第三方边界位置来管理三方边界 在边界两边推动内部一致

  • 类转换:像对待 Map 那样封装
  • 接口转换:使用 Adapter 模式转换三方接口
内容概要:本文档介绍了基于3D FDTD(时域有限差分)方法在MATLAB平台上对微带线馈电的矩形天线进行仿真分析的技术方案,重点在于模拟超MATLAB基于3D FDTD的微带线馈矩形天线分析[用于模拟超宽带脉冲通过线馈矩形天线的传播,以计算微带结构的回波损耗参数]宽带脉冲信号通过天线结构的传播过程,并计算微带结构的回波损耗参数(S11),以评估天线的匹配性能和辐射特性。该方法通过建立三维电磁场模型,精确求解麦克斯韦方程组,适用于高频电磁仿真,能够有效分析天线在宽频带内的响应特性。文档还提及该资源属于一个涵盖多个科研方向的综合性MATLAB仿真资源包,涉及通信、信号处理、电力系统、机器学习等多个领域。; 适合人群:具备电磁场与微波技术基础知识,熟悉MATLAB编程及数值仿真的高校研究生、科研人员及通信工程领域技术人员。; 使用场景及目标:① 掌握3D FDTD方法在天线仿真中的具体实现流程;② 分析微带天线的回波损耗特性,优化天线设计参数以提升宽带匹配性能;③ 学习复杂电磁问题的数值建模与仿真技巧,拓展在射频与无线通信领域的研究能力。; 阅读建议:建议读者结合电磁理论基础,仔细理解FDTD算法的离散化过程和边界条件设置,运行并调试提供的MATLAB代码,通过调整天线几何尺寸和材料参数观察回波损耗曲线的变化,从而深入掌握仿真原理与工程应用方法。
### YOLOv8 边界框检测方法及实现 YOLOv8 是一种先进的实时目标检测框架,在边界框检测方面表现出色。为了执行边界框检测,首先需要加载预训练模型并准备输入数据。 通过 `ultralytics` 库可以轻松加载官方提供的 YOLOv8 模型: ```python from ultralytics import YOLO model = YOLO("yolov8n.pt") # 加载官方的Detect模型[^1] ``` 完成模型加载后,可以通过调用 `predict` 方法来进行预测操作。此过程会自动处理图像预处理、推理计算以及结果解析等工作: ```python results = model.predict(source='image.jpg', save=True, imgsz=640, conf=0.7) ``` 上述代码片段中: - `source`: 输入源,支持文件路径、目录、URL 或摄像头设备编号。 - `save`: 是否保存可视化后的检测结果,默认不保存。 - `imgsz`: 推理时使用的图片尺寸,默认为640像素。 - `conf`: 置信度阈值,低于该值的目标将被过滤掉。 对于每个检测到的对象,YOLOv8 提供了详细的边界框信息,包括位置坐标 (x,y,w,h),类别标签和置信分数等属性。这些信息存储于返回对象的结果列表内,可通过遍历获取具体细节: ```python for result in results: boxes = result.boxes.cpu().numpy() for box in boxes: r = box.xyxy[0].astype(int) # 获取边框左上角(xmin, ymin) 和右下角(xmax, ymax) 坐标 class_id = int(box.cls[0]) # 类别ID score = float(box.conf[0]) # 置信度得分 print(f'Object detected at {r} with confidence {score:.2f}, classified as ID:{class_id}') ``` 此外,如果应用场景涉及到旋转矩形或其他复杂形状,则可能需要用到扩展功能或自定义模块来增强原有架构的能力[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气呢杰哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值