iOS观察者模式学习(如果钲鼓突然间敲起?)

YOLO26算法水面与液体识别+训练好的模型+393张数据集+pyqt可视化界面.zip 附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 52 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.8528** mAP50-95 | 0.3441 Precision | 0.7729 Recall | 0.8354 train/box_loss | 1.5367 train/cls_loss | 1.0228 val/box_loss | 1.6809 val/cls_loss | 1.1758 【训练过程分析】 我这次训练了52个周期,模型在训练初期确实收敛速度很快,前20个周期mAP50从0.74逐步提升至0.82,这说明模型开始适应数据集,学习到一些关键特征。但到第30个周期后,提升速度逐渐放缓,到了40个周期时,mAP50达到0.85,这个阶段的曲线走势有些像磨砂玻璃,平滑且不规则,后期更是趋于平缓,表明模型可能已经达到最优解,再继续训练可能会有少量提升但代价较大。整体而言,从loss曲线来看,训练集的box_loss和cls_loss在52个周期内分别从1.80和1.25降到1.54和1.02,下降曲线较为稳定,但到了后期,这两项指标下降幅度逐渐减缓,尤其cls_loss下降至1.10左右后趋于稳定,这可能是模型对训练数据已有了较强的泛化能力,但也提示我们分类的稳定性可能还欠些火候。 至于验证集的表现,box_lo... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载
先来读几句余光中老先生的诗吧。

秦俑

作者: 余光中 

  ——临潼出土战士陶俑 

铠甲未解,双手犹紧紧地握住

我看不见的弓箭或长矛

如果钲鼓突然间敲起

你会立刻转身吗,立刻

向两千年前的沙场奔去

去加入一行行一列列的同袍?

如果你突然睁眼,威武闪动

胡髭翘着骁悍与不驯

吃惊的观众该如何走避?

幸好,你仍是紧闭着双眼,似乎

已惯于长年阴间的幽暗

乍一下子怎能就曝光?

如果你突然开口,浓厚的秦腔

又兼古调,谁能够听得清楚?

隔了悠悠这时光的河岸

不知有汉,更无论后来

你说你的咸阳吗,我呢说我的西安事变

谁能说得清长安的棋局?

而无论你的箭怎样强劲

再也射不进桃花源了

问今世是何世吗,我不能瞒你

始皇的帝国,车同轨,书同文

威武的黑旗从长城飘扬到交址

只传到二世,便留下了你,战士

留下满坑满谷的陶俑

严整的纪律,浩荡六千兵骑

岂曰无衣

与子同袍

王于兴师

修我戈矛

慷慨的歌声里,追随着祖龙

统统都入了地下,不料才叁?

外面不再是姓嬴的天下

不再姓嬴,从此我们却姓秦

秦哪秦哪,番邦叫我们

秦哪秦哪,黄河清过了几次?

秦哪秦哪,哈雷回头了几回?

黑漆漆禁闭了两千年后

约好了,你们在各地出土

在博物馆中重整队伍

眉目栩栩,肃静无哗的神情

为一个失踪的帝国作证

而喧嚷的观众啊,我们

一转眼也都会转入地下

要等到哪年啊哪月啊才出土

啊不能,我们是血肉之身

转眼就朽去,像你们陪葬的贵人

只留下不朽的你们,六千兵马

潼关已陷,唉,咸阳不守

阿房宫的火灾谁来抢救? 只留下

再也回不去了的你们,成了

隔代的人质,永远的俘虏

叁缄其口岂止十二尊金人?

始作俑者谁说无后呢,你们正是

最尊贵的后人,不跟始皇帝遁入过去

却跟徐福的六千男女

奉派向未来探讨长生

其中,注红字的诗句与小陈今天要与大家探讨的“观察者模式”有关。

在软件系统中,一个对象的状态改变可能会使得许多对象的状态发生改变。观察者模式是处理这类问题的常用方法。观察者模式(Observer pattern)又叫发布/订阅(public/subcribe)模式。

在余老先生的这首诗中,

铮鼓是信息的发布者。

秦俑是信息的订阅者。

我们可以这样用Objective-C实现观察者模式。

一、创建Objective-C protocol:

1.Observer.h观察者协议(接口)

//  Observer.h
#import <Foundation/Foundation.h>
@protocol Observer

@required
//观察者观察到现象时所做的事。
-(void)update;

@end

2.Subject.h通知主题协议(接口)

//  Subject.h
@class Observer;
@protocol Subject

@required
//增加观察者
-(void)attach:(Observer*) theObserver;
//移除观察者
-(void)detach:(Observer*) theObserver;
//通知观察者
-(void)notifyObservers;

@end

注:接口的使用并不是必要的;接口可以起到点“多继承”的作用,集“万千功能于一身”;类是对对象的抽象,接口是对行为的抽象;对于行为出格的对象,可以使用接口。比如说,一般的狗不拿耗子,而非一般的狗拿耗子。在这里,非一般的狗 = 实现了拿耗子接口的一般的狗。

二、创建实现Objective-C protocol的类:

1.TerracottaArmy类(观察者,秦俑类)

//  TerracottaArmy.h
#import <Foundation/Foundation.h>
#import "Observer.h"
//实现了Observer protocol
@interface TerracottaArmy : NSObject<Observer>

@end


//  TerracottaArmy.m
#import "TerracottaArmy.h"

@implementation TerracottaArmy

-(void)update
{
    NSLog(@"Yes sir!立刻转身,立刻向两千年前的沙场奔去,去加入一行行一列列的同袍。");
}

@end


2.Drum类(通知主题,钲鼓类)

//  Drum.h
#import <Foundation/Foundation.h>
#import "Subject.h"
@class Observer;
//实现了Subject protocol
@interface Drum : NSObject<Subject>
@property (nonatomic,strong)NSMutableArray *observers;
+(Drum*)sharedInstance;
@end


//  Drum.m
#import "Drum.h"
@implementation Drum
@synthesize observers;
static  Drum* instance = nil;
+ (Drum*)sharedInstance{
    
    @synchronized(self){
        if(instance == nil){
            instance = [[super allocWithZone:NULL] init];
        }
    }
    return instance;
}

+ (id) allocWithZone:(NSZone *)zone {
    return [self sharedInstance];
}

- (id) copyWithZone:(NSZone*)zone {
    return self;
}

-(void)attach:(Observer*) theObserver
{
    [self.observers addObject:theObserver];
}
-(void)detach:(Observer*) theObserver
{
    [self.observers removeObject:theObserver];
}
-(void)notifyObservers
{
    NSLog(@"钲鼓响起");
    for(id obs in self.observers)
    {
        [obs update];
    }
}

@end

注:Drum只需要一个实例,所以采用了单例模式来实现。


三、做实验
编写JJViewController的viewDidLoad方法:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"实验1");
    //实例化观察者:秦俑1、秦俑2、秦俑3
    Observer* terracottaArmy1 = [[TerracottaArmy alloc]init];
    Observer* terracottaArmy2 = [[TerracottaArmy alloc]init];
    Observer* terracottaArmy3 = [[TerracottaArmy alloc]init];
    
    //实例化通知主题:钲鼓
    Drum *drum = [Drum sharedInstance];
    drum.observers = [[NSMutableArray alloc] init];
    
    //铮鼓增加订阅者:秦俑1、秦俑2、秦俑3
    [drum attach:terracottaArmy1];
    [drum attach:terracottaArmy2];
    [drum attach:terracottaArmy3];
    
    //钲鼓通知所有已注册的订阅者
    [drum notifyObservers];
    
    NSLog(@"实验2");
    //钲鼓删除订阅者秦俑1
    [drum detach:terracottaArmy1];
    //钲鼓再次通知所有已注册的订阅者
    [drum notifyObservers];
}

实验结果:


参考了:关东升《iOS开发指南 从零基础到App Store上架》p184& 程杰《大话设计模式》p354


        
C#西门子上位机与PLC通讯++S7协议 支持S7-200,S7-300,S7-1200,S7-1500+使用技术C#+S7net 立即下载

相关推荐

MATLAB模拟6自由度无人机检查,具备干扰补偿、裂纹检测和自主复检功能。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

iOS面试总结

1:设计模式:并不是一种新技术,而是一种编码经验,使用比如Java中的接口,iPhone中的协议,继承关系等基本手段,用比较成熟的逻辑去处理某一种类型的事情,总结成为一种固定的模式 MVC设计模式:模型-数据的存储和处理  视图--前台呈现给用户的界面显示 控制器---业务逻辑的控制   代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用 单例模式

yishabeier152的专栏 496

AI大模型医学影像诊断智能识别应用方案.pptx

AI大模型医学影像诊断智能识别应用方案.pptx

如何卸载Xcode

step1:下载安装AppDelete后,打开AppDelete step2:[前往]->[应用程序]后,把Xcode图标拖进AppDelete的界面 step3 : 点击AppDelete中的删除按钮 step4:在mac终端执行su指令 (这时可能需要密码,如果还没有设置过密码的话,可以执行sudo pass root,来修改su 密码) step5:  在终端下进入.Trash目录

ilikeprograming的专栏 4652

智能驾驶智慧交通行业智算中心(AIDC)建设规划方案.pptx

智能驾驶智慧交通行业智算中心(AIDC)建设规划方案.pptx

LLC谐振变换器恒压恒流双竞争闭环控制simulink仿真(附说明文档)

内容概要:本资源是一套面向电力电子与智能控制领域的综合性科研仿真资料合集,核心聚焦于LLC谐振变换器的恒压恒流双竞争闭环控制策略设计与Simulink建模仿真实现,涵盖半桥LLC、双向全桥LLC等拓扑结构的调频闭环仿真,并提供详尽的说明文档与PPT辅助材料。资源体系不仅深入呈现LLC变换器的动态响应与控制逻辑,还扩展至双有源桥(DAB)变换器的软开关协同优化、最小应力控制、EPS调制策略及新扩展移相角优化等前沿技术,同时集成三相PWM整流器在电网不平衡条件下的功率平衡控制、VOC+SVPWM双闭环控制等典型应用场景。此外,资源包涵盖状态估计(如EKF、UKF、PF)、微电网经济调度、卡尔曼滤波融合、神经网络控制、PID优化、储能系统管理等多个交叉方向,特别强调对顶级EI期刊研究成果的高精度复现,旨在帮助科研人员快速掌握先进控制算法的核心思想与仿真实现方法。; 适合人群:电气工程、自动化、电力电子、新能源科学与工程等相关专业的硕士博士研究生、高校科研人员,以及从事新能源变换器、智能电网、电动汽车、微电网系统研发的工程技术人员。; 使用场景及目标:① 深入理解LLC与DAB变换器的闭环控制机理,掌握恒压恒流切换、软开关实现与损耗优化方法;② 利用Simulink平台构建复杂电力电子系统模型,开展动态性能分析与控制器参数整定;③ 复现高水平期刊论文中的先进控制策略,提升科研创新能力与论文发表竞争力;④ 支持毕业设计、科研课题、项目申报及工程原型开发中的仿真验证环节。; 阅读建议:建议结合提供的完整资源目录循序渐进学习,优先研读标注“顶级EI复现”的案例以获取权威方法参考,配合MATLAB/Simulink动手搭建模型,重点关注控制框图设计、调制逻辑实现与仿真结果对比,深入理解算法背后的物理意义与数学推导过程。

我的苹果开发学习笔记

好链接: iOS 7 Xcode 5 最初级小教程, 人生中第一个App诞生了.: http://www.macx.cn/thread-2104805-1-1.html eseedo:《让不懂编程的人爱上iPhone开发》系列教程1-iOS7版: http://www.cocoachina.com/applenews/devnews/2013/0916/7001.html 我后来在网上收

ilikeprograming的专栏 2021

概率神经网络的分类预测-基于PNN的变压器故障诊断(Matlab代码实现)

内容概要:本文系统阐述了基于概率神经网络(PNN)的变压器故障诊断方法,结合Matlab代码实现分类预测。通过提取变压器运行过程中的关键特征参数,构建PNN模型以实现对正常状态与典型故障状态(如绕组短路、铁芯故障等)的高效分类识别。文章深入剖析了PNN的网络结构、概率密度估计原理、训练机制及分类决策过程,并通过仿真实验验证了该方法在故障诊断任务中具备较高的准确率与鲁棒性,展现了其在电力系统状态监测与智能运维中的良好应用前景。; 适合人群:具备一定机器学习理论基础和Matlab编程能力的电气工程、自动化、智能电网等相关领域的研究生、科研人员以及从事电力设备状态监测与故障诊断工作的工程技术人员。; 使用场景及目标:①实现变压器早期故障的智能化诊断与预警,提升电力系统运行安全性;②为基于神经网络的工业设备故障分类任务提供可复现的算法实现范例与技术验证平台; 阅读建议:建议读者结合文中提供的Matlab代码,动手复现实验流程,深入理解PNN在实际分类问题中的参数配置、训练策略、性能评估方法,并鼓励将该方法迁移至其他电力设备或机电系统的故障诊断场景中进行拓展研究与优化改进。

我对Objective-C中的.h、.m、@property、@synthesize的理解

Objective-C语法快速参考

ilikeprograming的专栏 1750

优快云首页 发布文章 优快云同步助手 多无人机面向城市空中交通的多无人机路径规划研究(Matlab代码实现) 37 100 摘要:会在推荐、列表等场景外露,帮助读者快速了解内容,支持

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,系统阐述了该领域的核心挑战与关键技术。文章首先定义了多无人机路径规划的问题,明确了包括飞行安全、避障、协同效率在内的多项约束条件与性能指标。随后,重点介绍了三大类路径规划方法:基于改进RRT算法和图论的全局路径规划方法,用于构建初始可行路径;基于动态风险场的模型预测控制和动态窗口法(DWA)的动态避障方法,以应对环境中的突发障碍;以及多无人机协同规划策略和分布式协同控制算法构成的局部协同调整方法,确保多机间的飞行安全与任务协同。研究通过搭建Matlab仿真实验平台,设计了多种复杂城市飞行场景,对所提方法进行了全面的仿真验证与结果对比分析,展示了各方法在不同场景下的有效性与优劣。; 适合人群:具备一定自动化、计算机或航空航天领域基础知识,从事无人机、智能交通、路径规划等相关方向研究的研发人员和研究生。; 使用场景及目标:①为城市空中交通管理系统(UATM)的设计与开发提供理论基础和技术参考;②应用于物流配送、城市巡检、应急救援等多无人机协同任务的路径规划算法设计与仿真验证;③作为相关领域科研工作的技术参考资料,推动多智能体协同决策与控制技术的发展。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,通过复现仿真结果加深对各类算法原理与实现细节的理解。在学习过程中,应重点关注全局规划与局部避障的结合机制,以及多机协同策略中的冲突消解逻辑。

无刷直流电机BLDC转速电流双闭环+无位置传感器控制仿真【仿真+详解说明报告+参考文献】

内容概要:本文详细介绍了一套针对无刷直流电机(BLDC)的Simulink仿真资源包,核心内容涵盖转速电流双闭环控制与无位置传感器控制技术,重点采用滑模观测器(SMO)实现对转子位置与速度的精确估算,避免了物理位置传感器带来的成本与可靠性问题。资源包提供了多个高质量仿真模型,包括基于模糊PID与传统PID控制策略的对比分析、无感控制结合滑模观测器与双闭环PI控制的综合系统等,全面展示不同控制算法在动态响应、抗干扰能力及稳态精度方面的性能差异。所有模型均基于Matlab/Simulink平台构建,配套详尽的技术说明文档与参考文献,深入解析控制结构设计、观测器原理、参数整定方法及系统稳定性分析,适用于电机驱动系统的研究、教学演示与工程验证。; 适合人群:面向电气工程、自动化、控制科学与工程及相关专业的本科生、研究生、科研人员和工程技术人员,尤其适合从事电机控制、电力电子与运动控制系统研究的专业人士,具备自动控制理论基础和Matlab/Simulink基本操作能力者更易上手。; 使用场景及目标:① 深入学习并掌握无刷直流电机双闭环调速系统的工作原理与无位置传感器控制的关键技术;② 对比研究模糊PID与传统PID在电机控制中的动态性能与鲁棒性差异;③ 开展滑模观测器在非线性系统状态估计中的建模与仿真研究;④ 支持课程设计、毕业设计、科研项目申报及学术论文复现等实际应用场景。; 阅读建议:建议用户结合提供的详解说明报告,逐步运行各仿真模型,重点关注控制器参数调节过程、滑模观测器的设计细节及其收敛性表现,深入分析系统启动、负载突变、转速切换等工况下的响应特性,鼓励在此基础上进行控制算法改进、引入新型观测器或拓展至其他电机类型进行创新性研究。

iOS Delegate学习(送花ABC,一个悲伤的故事)

参考文章: http://leopard168.blog.163.com/blog/static/168471844201307112149221/

ilikeprograming的专栏 1168

【顶级EI复现】基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法(Simulink仿真实现)

内容概要:本文提出了一种基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法,旨在实现高效能、低损耗的电力变换控制。通过构建包含软开关约束与电流应力目标的优化模型,结合KKT最优性条件进行数学推导,对变换器的工作模态进行分段解析处理,精确求解出满足零电压开通(ZVS)且电流有效值最小的最优工作点。在此基础上设计了闭环控制系统,有效提升了变换器在全功率范围内的运行效率与动态响应性能。文中详细阐述了控制策略的理论推导过程、优化求解算法实现及Simulink仿真实验验证,充分展示了该方法在协同优化软开关范围与器件应力方面的优越性。; 适合人群:从事电力电子与电力传动、新能源发电系统、电动汽车及微电网等相关领域的科研人员与工程技术人员,具备一定的电路理论、最优控制理论与仿真建模基础。; 使用场景及目标:①用于高效率双有源桥变换器的先进控制策略研究与设计;②为解决传统移相控制中软开关范围受限与功率器件电流应力高的问题提供优化思路;③适用于车载充电机、直流配电系统、可再生能源并网等对高功率密度与高效率有严苛要求的应用场景。; 阅读建议:建议结合Simulink仿真模型深入理解控制算法的具体实现流程,重点关注KKT条件在非线性约束优化中的应用逻辑以及分段解析策略的设计思想,同时可通过对比传统单移相控制(SPS)或双重移相控制(DPS)方法,直观体会本方法在效率提升与应力抑制方面的综合优势。

ASIHTTPRequest学习笔记

在框架安装和配置时,我参考了这两篇博文 http://blog.youkuaiyun.com/tonny_guan/article/details/8736818 http://blog.youkuaiyun.com/ryantang03/article/details/7856348

ilikeprograming的专栏 560

无人机【扩展卡尔曼滤波器从IMU和GPS数据计算无人机的姿态】使用不变扩展卡尔曼滤波器对微型无人机状态估计进行传感器融合(Matlab代码实现)

内容概要:本文系统介绍了基于不变扩展卡尔曼滤波器(Invariant Extended Kalman Filter, IEKF)的微型无人机状态估计方法,重点实现IMU与GPS数据的传感器融合,以精确估计无人机的姿态、位置和速度等关键状态信息。相较于传统EKF,IEKF充分利用系统内在的几何结构特性,具有更强的数值稳定性和更优的误差收敛性能,能够有效抑制非线性系统中的估计漂移问题。文章详细阐述了IEKF的理论推导过程,包括状态预测、协方差更新与观测校正环节,并提供了完整的Matlab代码实现,便于读者复现算法并深入理解其工作机制。该方法显著提升了无人机在复杂动态环境下的导航精度与鲁棒性,适用于对高可靠性状态估计有较高要求的无人系统应用。; 适合人群:具备控制理论、非线性滤波、惯性导航或机器人状态估计基础,从事无人机导航、自主系统开发及相关研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解IEKF在非线性系统状态估计中的优势及其相对于传统EKF的改进机制;②掌握IMU与GPS多传感器融合的基本架构与实现流程;③通过Matlab代码实践完成从理论建模到算法仿真的全过程,为构建高性能飞控系统或开展先进滤波算法研究奠定技术基础。; 阅读建议:建议结合非线性系统估计与李群理论背景知识进行学习,重点关注IEKF的状态演化模型设计与误差协方差更新逻辑,务必动手运行并调试所提供的Matlab代码,通过仿真实验对比不同工况下的滤波性能,从而深化对算法本质的理解与应用能力。

数学文化赏析MOOC笔记【2023】

深圳大学UOOC课程《数学文化赏析》课程笔记

simplenthpower的博客 1748

iOS JSON解析学习

参考文章 http://blog.163.com/sunshinesun_9/blog/static/225855712009517112921195/

ilikeprograming的专栏 449

spoon工具的常用基础操作

先创建一个作业,这个作业流程,包括进行设置变量转换,查询结果输出转换,方便后续循环。整个流程写完后,执行作业5_执行整个流程,成功后,可以在数据库查看结果。,新建一个转换,excel表输入然后复制记录到结果,保存转换文件。这三个用户下 都有一张emp表 分别是 三个部门的用户信息。,新建一个数据库连接,变量命名用户名和密码。成功执行后,可以到保存的excel位置进行查看。emp表输入,可以进行预览查看数据有没有过来。输出到一直excel表,运行结果输出。,新建一个转换,拖拽。

qq_43583887的博客 5831

UITableView笔记

http://blog.youkuaiyun.com/monicaios/article/details/17724401

ilikeprograming的专栏 427

基于PLC的茶叶揉捻机自动控制系统设计【附代码】

茶叶揉捻是初茶加工过程中的一道关键工序,通过揉捻可以使鲜茶叶成条、碎茶及叶组织细胞破损等。影响茶叶成条率、碎茶率和叶组织细胞破损的主要因素包括揉捻时间、压力和揉捻桶转速。为了提高茶叶品质的稳定性和减轻工人的劳动强度,本文提出了一种基于PLC自动控制技术的茶叶揉捻机控制系统设计。📊 PLC自动化设计 | 毕业设计指导 | 工业自动化解决方案。✅ 具体问题可以私信或查看文章底部二维码。✅ 感恩科研路上每一位志同道合的伙伴!

lagougongzuoshi的博客 1341
上一篇: 设计模式学习笔记
下一篇: I,Android;我的安卓开发学习笔记
ilikeprograming
博客等级 码龄14年 46粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值