Swift_Singleton

本文详细介绍了Swift中单例设计模式的多种实现方式,包括最简单的写法、使用GCD处理线程安全问题的方法、利用let变量简化写法等,并指出了各自的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例设计模式

开发项目的时候,有时候需要很多工具类,这时候单例的使用就尤为重要。在OC中,单例的写法想必大家很清晰了,在这里给大家介绍下Swift中几种单例的写法:

最简单的写法
static var instance: DBHelper? = nil
static func sharedInstance() -> DBHelper {

    if instance == nil {
        instance = DBHelper()
    }

    return instance!
}

这种写法的缺陷在于,没有处理线程安全的问题


使用GCD
static var sharedInstance: DBHelper {

    struct Static {
        static var onceToken : dispatch_once_t = 0
        static var instance : DBHelper? = nil
    }

    dispatch_once(&Static.onceToken) {
        Static.instance = DBHelper()
    }

    return Static.instance!
}

使用GCD可以帮助我们处理线程安全的问题,但缺陷在于写法太麻烦


使用let变量简单的写法
class var sharedInstance: DBHelper {

    struct Static {
        static let instance: DBHelper = DBHelper()
    }

    return Static.instance
}

使用常量来实现单例对象,虽然没有问题,但是写法还不够简洁


最方便的写法
private static let instance = DBHelper()
class var sharedInstance: DBHelper {

    return instance
}

最吊在这里,如果没有特殊的去求,这种写法足够了,也非常的方便


功能设计 ​ 系统功能模块较为简单,主要功能就是**新增人脸****人脸搜索**两个功能,其中新增人脸使用页面上传压缩包批量上传两个方式,压缩包上传时文件名称为用户名,下面主要说明人脸搜索的功能流程 ##### Milvues ​ 在介绍前需要说明一下Mulvus ​ Milvus 向量数据库能够帮助用户轻松应对海量非结构化数据(图片 / 视频 / 语音 / 文本)检索。单节点 Milvus 可以在秒内完成十亿级的向量搜索 ​ 因此虹软的SDK只能提取向量及对比的功能,在大规模人脸识别中,需要搜索引擎对于人脸数据进行初步筛选到一个较小的范围后在利用虹软的SDK进行测试,值得一提的是,博主多次测试后Milvues返回的匹配率足以满足人脸匹配的要求,Milvus的安装部署使用文档参考 https://milvus.io/cn/docs/v2.0.x ​ **特别说明的是**虹软提取的数组是一个经过归一后的1032长度的byte数组,我们需要对数组进行转换,去除前8位的版本号,并将1024长度的byte转为256长度的float向量,这部分可以利用Arrays提供的方法进行转换,代码中也有相应的工具类 ##### 人脸上传(单张) ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
Azure Open AI Embedding是一种嵌入模型,通过使用Azure平台上的开放AI服务,可以将文本转换为高维向量表示。这种嵌入模型可以用于自然语言处理、推荐系统等领域,帮助我们更好地理解处理文本数据。在使用Azure Open AI Embedding时,我们可以利用Azure的强大计算资源高效的API接口,快速获取到所需的文本嵌入表示。 Milvus本地向量数据库是一种针对大规模向量数据的高性能数据库。它提供了快速的向量相似度搜索存储功能,可以高效地应用于图像识别、人脸识别、文本检索等领域。在搭建Milvus本地向量数据库的单例安装使用时,我们可以通过简单的配置管理,快速部署本地向量检索系统,并且能够自由定制化自己的向量索引。 对于私有模型的应用,可以将Azure Open AI Embedding模型Milvus本地向量数据库结合起来。首先,可以使用Azure Open AI Embedding模型将文本数据转换为向量表示,然后将这些向量存储到Milvus本地向量数据库中进行索引检索。这样可以实现自己的定制化文本嵌入表示快速的向量相似度搜索。同时,我们也可以通过对Milvus本地向量数据库进行单例安装私有化部署,更好地保护自己的数据模型隐私。这样的集成应用可以帮助我们更好地理解处理大规模文本数据,并且能够高效地进行相似度搜索检索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值