初级数据持久化

深入解析JESD204B Subclass 1中的SYSREF与LMFC同步机制 本文深入解析了JESD204B Subclass 1协议中的核心同步机制,重点阐述了SYSREF信号如何作为系统级参考,对齐所有设备内部的本地多帧时钟(LMFC),从而实现高速多通道数据采集系统中的确定性延迟。文章结合实战经验,详细说明了硬件设计、时序要点及软件配置流程,是解决多ADC芯片同步对齐问题的关键指南。 阅读详情

沙盒机制:

1.每一个APP安装到手机上(或者模拟器上) 都会自动生成三个文件夹 这三个文件夹叫沙盒 可以理解为这个APP的沙盒
2.每个APP的文件夹都是相对独立的 只能自己的应用去访问 不可以互相访问
3.文件夹中 存储的是 代码以外的 所有数据 例如图片素材 声音 视频 文档等 也就是说 咱们的持久化文件 或者说缓存文件 可以存储到文件夹中

打印沙盒的各个文件夹路径:

- (void)path
{
    /*

     每一次运行的时候 都是重新安装的过程 都会随机生成一个新的沙盒路径(名字是随机的)
     注意: 要获取的是当前的沙盒路径

     */

    // 打印沙盒路径
    NSString *appPath = NSHomeDirectory();
    NSLog(@"%@",appPath);

    // 获取Documents文件夹路径
    // 此文件夹可以被iTunes备份 可以保存一些用户的数据 及 缓存文件等

    // NSDocumentDirectory 要获取的文件夹路径
    // NSUserDomainMask 搜索的范围
    // YES 是否获得全路径
    NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSLog(@"%@",documents[0]);


    // 获取library路径
    // library文件夹可以被iTunes备份
    // Caches 主要存储系统缓存文件
    // Preferences 系统配置文件
    NSArray *library = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSLog(@"%@",library[0]);

    // 获取tmp路径
    // 主要存储临时文件
    // 当手机关机 或者说手机重新启动的时候 该文件夹的文件 会被删除
    // 有可能 不关机 不重启 也被删除
    NSString *tmp = NSTemporaryDirectory();
    NSLog(@"%@",tmp);

}

简单对象的写入:

// 系统的类实例出来的对象 叫简单对象
// 例如: 字符串 数组 字典 二进制对象(NSData)
// 如果要写入一个数组 或者 字典 等容器类对象
// 那么这个容器当中 也要保存是 简单对象才能写入
- (void)writeFile
{
    // 把字符串 存储到沙盒当中
    NSString *str = @"第一章 盘古开天";
    // xiaoshuo.txt
    // 拼接文件存储的路径
    NSString *filePath = [kDocuments stringByAppendingString:@"/xiaoshuo.txt"];
    NSLog(@"%@",filePath);

    // 进行简单对象的写入
    // atomically 保护写入的作用
    // 在写入过程中 出现意外情况 也可以写入成功
    [str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

    // 写入一个数组
    NSArray *array = @[@"徐阳", @"赵姐", @"张文", @"壮壮用"];
    // 获取写入的路径
    NSString *arrayPath = [kDocuments stringByAppendingString:@"/array"];
    // 写入
    [array writeToFile:arrayPath atomically:YES];
    NSLog(@"%@",arrayPath);

    // 写入一个字典
    NSDictionary *dic = @{@"name":@"wanglong", @"sex":@"nan"};
    NSString *dicPath = [kDocuments stringByAppendingString:@"/dic.plist"];
    [dic writeToFile:dicPath atomically:YES];
    NSLog(@"%@",dicPath);

    // 写入data数据
    NSString *dataStr = @"哈哈哈";
    NSData *data = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
    NSString *dataPath = [kDocuments stringByAppendingString:@"/data"];
    [data writeToFile:dataPath atomically:YES];
    NSLog(@"%@",dataPath);

    // data文件一般是存储图片的
    // UIImagePNGRepresentation 把图片转化成data类型
    NSData *imageData = UIImagePNGRepresentation([UIImage imageNamed:@"1"]);
    NSString *imagePath = [kDocuments stringByAppendingString:@"/data"];
    [imageData writeToFile:imagePath atomically:YES];
    NSLog(@"%@",imagePath);
}

读取数据:

- (void)readFile
{
    // 读取(按路径进行读取)
    NSArray *document = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *arrayPath = [document[0] stringByAppendingString:@"/array.plist"];

    // 从该路径进行读取
    NSArray *array = [NSArray arrayWithContentsOfFile:arrayPath];
    NSLog(@"%@",array);

    NSString *imagePath = [document[0] stringByAppendingString:@"/data"];
    NSData *data = [NSData dataWithContentsOfFile:imagePath];
    UIImage *image = [UIImage imageWithData:data];

}

对文件夹进行创建 移动 复制 删除操作:

// 创建文件夹方法
- (void)createFile
{
    // 1. 获取要创建文件夹的路径
    NSString *downLoadPath = [kDocuments stringByAppendingPathComponent:@"/DownLoad"];
    NSLog(@"%@",downLoadPath);

    // 2. 创建文件管理器
    // withIntermediateDirectories
    // 是否覆盖之前的文件 如果填NO 就是不覆盖
    // 不覆盖就相当于 创建文件夹失败
    NSFileManager *fileManager = [NSFileManager defaultManager];
   BOOL isCreate = [fileManager createDirectoryAtPath:downLoadPath withIntermediateDirectories:YES attributes:nil error:nil];
    // 打印是否创建成功
    NSLog(@"%d",isCreate);
}

// 移动文件夹
- (void)moveFile
{
    // 获取原路径
    NSString *oldPath = [kDocuments stringByAppendingPathComponent:@"/DownLoad"];

    // 获取新路径
    NSString *newPath = [kCaches stringByAppendingPathComponent:@"/DownLoad"];
    NSLog(@"%@",newPath);

    // 创建文件管理对象
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL isMove = [fileManager moveItemAtPath:oldPath toPath:newPath error:nil];
    NSLog(@"%d",isMove);

}

// 拷贝文件夹
- (void)copyFile
{
    // 原路径
    NSString *oldPath = [kCaches stringByAppendingPathComponent:@"/DownLoad"];
    // 新路径
    NSString *newPath = [kDocuments stringByAppendingPathComponent:@"/DownLoad"];
    NSLog(@"%@",newPath);

    NSFileManager *fileManager = [NSFileManager defaultManager];

    BOOL isCopy = [fileManager copyItemAtPath:oldPath toPath:newPath error:nil];

    NSLog(@"%d",isCopy);
}

// 删除文件夹
- (void)deleteFile
{

    NSString *cachesPath = [kCaches stringByAppendingPathComponent:@"/DownLoad"];

    NSLog(@"%@",cachesPath);

    NSFileManager *fileManager = [NSFileManager defaultManager];

    BOOL isRemove = [fileManager removeItemAtPath:cachesPath error:nil];

    NSLog(@"%d",isRemove);

}

// 判断文件夹是否存在
- (void)isExecutable
{
    NSString *documentsPath = [kDocuments stringByAppendingPathComponent:@"/DownLoad"];

    NSLog(@"%@",documentsPath);

    NSFileManager *fileManager = [NSFileManager defaultManager];

    BOOL isExecutable = [fileManager isExecutableFileAtPath:documentsPath];

    NSLog(@"%d",isExecutable);
}

数据的归档和反归档:

归档和反归档一般都用在复杂对象写入文件中

复杂对象写入步骤:

  1. 遵守一个协议 NSCoding (需要在写入的时候按照一定的规则进行写入 一定的编码格式去写入) 归档与反归档(序列与反序列)
  2. 重写(协议中)归档与反归档方法
  3. 创建一个复杂对象出来
  4. 创建一个归档对象
  5. 利用归档对象把复杂对象转化成data
  6. 把data写入文件 进行数据持久化

复杂类的属性归档与反归档:

// 归档方法
- (void)encodeWithCoder:(NSCoder *)aCoder
{
    // 按照一定的编码格式归档
    // 注意归档时候的key 要与 反归档时的一致
    [aCoder encodeObject:self.name forKey:@"name"];

    // 要选用与属性类型 一致的 编码方法
    [aCoder encodeInteger:self.age forKey:@"age"];

    // 一般统一使用对象类型的
    [aCoder encodeObject:self.imageData forKey:@"imageData"];


}

// 反归档方法
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self) {

        // 按照一定的编码格式 和 存储的key标识 取出被归档的对象(反归档)
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.age = [aDecoder decodeIntegerForKey:@"age"];
        self.imageData = [aDecoder decodeObjectForKey:@"imageData"];

    }

    return self;

}

将复杂类进行归档:

 // 复杂对象写入文件
    // 自己创建出来的类(例如 Student类)
    // 写入的核心思想:
    // 把复杂对象转化成 简单对象 进行写入
    // 一般转化成 NSData对象进行写入

    Student *student = [[Student alloc] init];
    student.name = @"王龙";
    student.age = 18;
    student.imageData = UIImagePNGRepresentation([UIImage imageNamed:@"1"]);

    // 创建一个可变data
    NSMutableData *data = [NSMutableData data];

    // 创建一个归档对象
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];

    // 将复杂对象 通过归档对象 转化成data
    [archiver encodeObject:student forKey:@"student"];

    // 完成归档
    [archiver finishEncoding];

    // 实际上 通过 归档对象 把 复杂对象 写入data中
    // 并且写入的标识 就是key
    // 归档 与 反归档 不是数据持久化
    // 只是把复杂对象 按照系统的编码格式 转化成data
    // 真正的数据持久化 还是 写入文件
//    NSLog(@"%@",data);

    // 获取路径
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

    // 拼接路径
    NSString *path = [documentsPath stringByAppendingPathComponent:@"/SaveStudent"];
    NSLog(@"%@",path);

    // 写入文件
    [data writeToFile:path atomically:YES];

    // 释放归档对象
    [archiver release];
    // 反归档
    // 从沙盒中 读取data数据
    NSData *dataNew = [NSData dataWithContentsOfFile:path];

    // 创建反归档对象
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:dataNew];

    // 利用反归档对象 反归档出复杂对象
    Student *stuNew = [unarchiver decodeObjectForKey:@"student"];

    // 完成反归档
    [unarchiver finishDecoding];

    UIImage *image = [UIImage imageWithData:stuNew.imageData];

    // 释放反归档对象
    [unarchiver release];
别再只盯着ADC了!手把手教你拆解HLW8032模块的隔离与非隔离采样电路(附BOM清单) 本文深入解析HLW8032模块的隔离与非隔离采样电路设计,提供工程化决策指南。从安全间距到PCB布局,再到误差分析和BOM清单优化,手把手教你避开常见陷阱,确保产品级设计的可靠性和精度。附实用校准策略和关键元器件选型建议,助力硬件开发者提升设计水平。 阅读详情

相关推荐

Paraview:Python Calculator Filter

python calculator过滤器 from paraview.simple import * connection = servermanager.Connect('localhost',11111) er = servermanager.sources.EnSightreader(CaseFileName='/.../data.case') er.PointArrays = ['x_velocity','1','y_velocity','1','z_velocity','1','cp','1']

haimianjie2012的专栏 3496

什么是数据持久化

1.什么是持久化? 孙卫琴写的《精通Hibernate:Java对象持久化技术详解》中解释如下:狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作。●     保存:把域对象永久保存到数据库。●     更新:更新数据库中域对象的状态。●     删除:从数据库中删除一个域对象。●     加载:根据特定的OID,把一个域

涛声依旧 读书笔记 595

Dify+firecrawl:一个超好用的网页转Markdown API,打造你的第一个能检索爬虫RAG知识库的聊天机器人

Firecrawl是一个超简单的API服务——你扔给它一个URL,它就能把整个网站(包括子页面!)的内容自动抓下来,并且转换成干净、易读的Markdown格式。不用配置网站的站点地图,不用写爬虫规则,API调一下,数据直接到手。接下来我们一起本地部署吧!

2501_91673550的博客 2992

第十八讲:初级数据持久化

待...

大可的博客 509

爱快路由(ikuai)多WAN口配置实战:提升网络带宽与稳定性

本文详细解析了爱快路由(ikuai)多WAN口配置的实战技巧,包括双线智能分流、毫秒级故障切换和带宽叠加利用等核心功能。通过七种配置方案和智能QoS策略,帮助企业提升网络带宽与稳定性,实现99.9%以上的高可用性。

weixin_30566063的博客 705

【STM32】从零构建串口IAP框架:BootLoader与App双向跳转实战解析

本文详细解析了STM32串口IAP框架的构建,重点阐述了BootLoader与App双向跳转的实战原理与实现步骤。内容涵盖Flash分区规划、中断向量表重定向、通信协议设计及固件升级流程,并针对跳转失败、程序跑飞等常见问题提供了解决方案,帮助开发者掌握产品级远程升级的核心技术。

wind6的博客 838

初级数据的持久化

一.沙盒机制 1.  每个应用程序位于文件系统的严格限制部分 2.  每个应用程序只能在为该程序创建的文件系统中读取文件 3.  每个应用程序在ios系统内都放在了统一的文件目录下 4.  沙盒路径的位置 1.  通过Finder查找程序沙盒相对路径 ~/Library/ApplicationSupport/iPhone Simulator 2.  通过代码查找程序沙盒相对路径

YaoAoYao的专栏 603

安装WSL过程中出现注册表编辑器无法重命名WSL。重命名项时出现错误的解决方案

本文主要介绍了安装WSL过程中出现注册表编辑器无法重命名WSL。重命名项时出现错误的解决方案,希望能对使用Windows WSL的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 9万+

[TwistedFate]初级数据持久化

初级数据持久化沙盒沙盒机制 每一个APP安装到手机上或者模拟器上, 都会自动生成三个文件夹 这三个文件夹叫沙盒 可以理解为这个APP的沙盒 每个APP的文件夹都是相对独立的 只能自己的应用去访问 不可以互相访问 文件夹中 存储的是 代码以外的 所有数据 例如(图片素材 声音 视频 文档等)也就是说 持久化文件(缓存文件)可以存储到 文件夹中 打开沙盒的各个文件夹路径- (void)path{

Do not just be a pragrammer 614

某音私信接口二进制解析

本文探讨了某音私信接口的二进制请求处理过程,重点分析了请求体中的非文本字符和混合编码结构。文章详细描述了编码过程,包括使用Protocol Buffers的序列化方法将结构化数据转换为字节流,并通过Uint8Array包装成二进制数组。作者展示了如何提取和补全s.encode方法,并将其转化为Base64字符串以便在Python中解码执行

码王吴彦祖的博客 903

教师模型与学生模型:知识蒸馏的核心概念

知识蒸馏,教师模型,学生模型,模型压缩,迁移学习,深度学习 1. 背景介绍 深度学习模型在图像识别、自然语言处理等领域取得了显著的成就,但其巨大的模型规模和高昂的计算成本限制了其在资源有限的设备上的部署。知识蒸馏(Knowledge Distillation)作为一种模型压缩技术,旨

AI架构师小马 2772

ios 数据持久化初级

刚刚学习的ios 数据持久化,当做笔记来整理一下:

云海飞翔lee的博客 464

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

iOS-初级数据持久化

1.数据持久化:就是数据的永久存储 2.数据持久化的本质:数据保存成文件,存储到程序中的沙盒中 那么沙盒构成部分是哪些呢???以下是它的构成部分: Document            存储用户数据,需要备份的信息 Library/Caches      存储缓存文件,程序专用的支持文件 Library/Preference  存储应用程序的偏好设置文件 .app

han919_的博客 373

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

iOS 初级数据持久化

原文转载自:点击打开链接 数据持久化 什么是数据持久化? 数据的永久存储 为什么要做数据持久化:;存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的 数据持久化的本质:数据保存成文件,存储到程序的沙盒中   一、沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件

Companion_1314的专栏 670

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

iOS UI 17 初级数据持久化

// //  Network.m //  UI - 15网络编程 // //  Created by dllo on 15/11/30. //  Copyright (c) 2015年 dllo. All rights reserved. // #import "Network.h" @implementation Netwo

揽月清风 474

数据持久化初级沙盒

#import @interface Phone : NSObject @property(strong,nonatomic) NSString *color; @property(strong,nonatomic) NSString *brand; @property(strong,nonatomic) NSString *price; @end

李聪的博客 520

浅聊初级数据持久化

第一部分:基本概念 数据持久化就是把你从网上获得的数据存储到自己的本地内存中;我们保存本地一般式分简单对象跟复杂对象的; 简单的对象是系统给的,例如数组跟字典,复杂的是自己写的,例如model; 说道储存就必须说一下沙盒机制; 沙盒机制是一种安全机制,防止其他应用程序来获得自己的数据;沙盒里面有四个文件夹 1.Bundle 2.Documents 3.Library 4.Tmp 1

zhangyuanyang12345的专栏 282

18 初级数据持久化

分享:利用Paros进行IOS应用抓包。 http://www.hackbase.com/article-1593-1.html 沙盒路径: /Users/xalo/Library/Developer/CoreSimulator/Devices/C8CD0833-63FB-4F3B-A05F-B1A0F23925C0/data/Containers/Data/Application/1422

康大亮学IOS 494

显卡代码43故障排查:HDMI无信号、驱动与硬件问题一次解决

Windows设备管理机制中,代码43是系统对硬件设备发出的通用异常提示,表示设备已被识别但无法正常启动。其背后本质是驱动与硬件之间的状态握手失败,图形处理器在通信异常时会被Windows显示驱动模型停用,进而导致HDMI、DP等输出端口全部无信号。这一故障常见于独立显卡、核显切换及外接显卡坞场景,容易让用户误判为显示器或线材损坏。理解代码43的触发原因,掌握驱动清理、PCIe电源管理调整、金手指维护和BIOS设置优化等排查方法,可大幅缩短修复时间。从概念原理到实操步骤,系统化梳理完整检修路径,覆盖从驱动重

weixin_34174105的博客 380

IOS 初级数据持久化-沙盒机制

什么是数据持久化?数据的永久存储 为什么要坐数据持久化:存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的 数据初九化的本质:数据保存成文件,存储到程序的沙河中 1.沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在IOS系统内都放在了统一的文件夹目录下 沙盒的本质就是一个文件夹,名字是随机分配的.

专栏 1363

UI 17 day 初级数据持久化

沙盒机制 数据持久化的本质就是把数据有内存写入本地(也就是硬盘)在ios中值将数据写入到沙盒文件夹下     沙盒机制,就是指的是采取沙盒文件夹的形式管理应用程序的本地文件,而且沙盒文件夹的名字是随机分配的,采用十六进制方法命名    获取沙盒文件夹路径    NSHomeDirectory()沙盒文件夹的主目录,在这个文件夹下存放着三个文件Documents libr

张乾坤 386

UI基础-初级数据持久化

沙盒机制 数据持久化

jt111666的博客 425

iOS中UI界面 初级数据持久化

所谓的数据持久化,包括缓存以及永久性存储的我们访问过,或一直保留其存在; 下面是UIViewController中,整个的解析过程:解析中用到了导航视图控制器; - (void)viewDidLoad {     [super viewDidLoad];     self.view.backgroundColor = [UIColor cyanColor];

yiral的博客 439
上一篇: Model类与ImageDownLoader
下一篇: 数据库
KnowMight
博客等级 码龄11年 1粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值