美文网首页
ios 如何设计一个安全的数据或者数据容器

ios 如何设计一个安全的数据或者数据容器

作者: iOS_YS_李 | 来源:发表于2022-03-30 00:22 被阅读0次

如何设计一个安全数组

首先我们要知道数组有哪些不安全

1.数组为空

2.数组越界

3.数组一边执行删除一边执行添加

4.多线程访问,修改数组

5.数组排序后的同等元素下标index错乱

6.数组的遍历时候通过下标移除崩溃

7数组指定的元素类型但是被其他开发者引入了其他类型

一、首先1.2.7我们可以单独对数组进行判断,也可以在自己自定义的数组类内部进行判断

比如:

-(id)objectAtIndex_zmm:(NSUInteger)index

{

    if(self.count == 0){

        return nil;

    }

    if(index >= self.count){

        return nil;

    }

    return[self objectAtIndex:index];

}

二、指定的数组为NSMutableArray array通过isKandof判断,不符合类型直接返回,禁止其他操作

三、数组一边执行删除一边执行添加 可以单独对数组进行加锁,一个线程维护一个任务

内部也可以封装一个runloop,实时监控该数组被那个线程使用的线程状态,如果线程状态没有取消或者完成,正在执行,则退出新的操作

四  数组排序后的同等元素下标index错乱 使用稳定的排序算法,堆排序快速排序希尔排序直接选择排序是不稳定的排序算法,而冒泡排序直接插入排序折半插入排序归并排序是稳定的排序算法。

其次我们在声明数组的时候,如果确定只有单个线程去访问该数组,那么可以使用nonatomic来修饰,但是不确定或者知道可能有多个线程来访问的话,那么使用atomic来修饰,但是同时我们知道atomic是实现了一个互旋锁,而锁机制虽然能做到一个线程去处理一个事物,但是对性能上则出现了损耗。

所以,我们能否在NSMutableArray内部去处理一下多线程访问的东西呢

这里就是数组的内部设计

首先我们有必要先了解一下GCD的栅栏函数以及用法

https://www.jianshu.com/p/e4d5b26b6a36

五 最重要的是如何在数组内部设计一组安全接口来进行多线程的访问

https://www.jianshu.com/p/4195209e4d8e

思想就是对于引发值的改变的行为,让一个任务执行完,在递交给其他任务,这样每个任务维护的都是自己想要的结果。

相关文章

  • ios 如何设计一个安全的数据或者数据容器

    如何设计一个安全数组 首先我们要知道数组有哪些不安全 1.数组为空 2.数组越界 3.数组一边执行删除一边执行添加...

  • Docker容器的数据卷

    数据卷 数据卷是经过特殊设计的目录,可以绕过联合文件 UFS,为一个或者多个容器提供访问。设计目的: 在于数据的永...

  • 数据卷

    数据卷概念 宿主机的一个目录或者文件 数据卷作用 1、容器数据持久化2、客户端和容器数据交换3、容器间数据交换 数...

  • docker学习(八)docker容器的数据管理

    数据管理 数据卷 定义: 数据卷使经过特殊设计的目录,可以绕过联合文件系统,为一个或多个容器提供服务。数据卷设计的...

  • 『中级篇』数据持久化之Data Volume(34)

    有些容器会自动产生一些数据,为了不让数据随着container的消失而消失,保证数据的安全性。例如:数据库容器,数...

  • 同步容器的应用

    启动若干线程,并行访问同一个容器中的数据。保证获取容器中数据时没有数据错误,且线程安全。如:售票,秒杀等业务。 方...

  • iOS Object—c 面试基础复习整理 一

    iOS开发需要扎实的计算机基础知识,包括基础的算法和数据结构,常用设计模式,网络通信协议,数据安全;其次要求iOS...

  • 【现学现忘Docker基础】— 27.数据卷容器

    1、数据卷容器的说明 (1)什么是数据卷容器 一个容器中已经创建好的数据卷,其它容器通过这个容器实现数据共享。那么...

  • Docker 学习笔记(二):容器数据的基本管理

    在使用 Docker 过程中,往往需要能查看容器产生的数据,或者将容器产生的数据进行备份,甚至容器与容器之间也可能...

  • SQLite

    什么是SQLite数据库特色:①轻量级②独立③隔离④跨平台⑤多语言接口⑥安全性如何和数据库打交道①如何设计数据库与...

网友评论

      本文标题:ios 如何设计一个安全的数据或者数据容器

      本文链接:https://www.haomeiwen.com/subject/jscijrtx.html