利用temp文件实现原子操作

简介: 在网络中有一张图片叫做test.jpg,它的大小为2M 我们一边下载一边往本地保存,不幸的是在下载到一半的时候设备断电了。这就造成一个悲剧:本地存在一个损坏的test.jpg 在加载图片的时候,我们常用的操作步骤是: 1 判断图片是否存在 2 加载图片 不幸的是,第一步的结果是该图片存在;但在第二步加载图片的时候失败了因为被损坏的图片是不能显示的。
在网络中有一张图片叫做test.jpg,它的大小为2M

我们一边下载一边往本地保存,不幸的是在下载到一半的时候设备断电了。这就造成一个悲剧:本地存在一个损坏的test.jpg
在加载图片的时候,我们常用的操作步骤是:
1 判断图片是否存在
2 加载图片

不幸的是,第一步的结果是该图片存在;但在第二步加载图片的时候失败了因为被损坏的图片是不能显示的。

所以我们要防止图片的损坏。
其中的一种方法可以这样:
下载时将图片存为test.temp至本地,当下载完成后才将其名称改为test.jpg
这样可实现近似的原子操作,避免加载破损的图片

在此只是以图片举例,其他文件操作也可如此实现
相关文章
|
4月前
|
编译器 C++
02头文件的冲突导致,清除缓冲区失败之cin.ignore() 问题
输入任意多个整数, 把这些数据保存到文件data.txt中. 如果在输入的过程中, 输入错误, 则提示用户重新输入. 指导用户输入结束(按ctrl + z) [每行最多保存4个整数] 可能遇到的 cin.ignore();问题
46 0
|
11月前
|
安全 算法 Java
CAS是"Compare and Swap"(比较并交换)
CAS是"Compare and Swap"(比较并交换)的缩写,是一种多线程同步的原子操作。它基于硬件的原子性保证,用于解决并发环境下的数据竞争和线程安全问题。
78 0
|
4月前
|
安全 Java 程序员
【JavaEE】CAS(Compare And Swap)操作
【JavaEE】CAS(Compare And Swap)操作
|
12月前
|
PHP
PHP 循环的中断和中断层数的含义(continue、break)
PHP 循环的中断和中断层数的含义(continue、break)
55 0
|
人工智能 移动开发 安全
【Java基础】CAS (Compare And Swap) 操作
CAS其实就是Compare And Swap的一个缩写,顾名思义就是比较并交换,其实就是把当前值与你预期的值进行一个比较,是一种用于在多线程环境下实现同步功能的机制。
|
算法 容器
常用拷贝和替换算法 copy() replace() replace_if() swap()
常用拷贝和替换算法 copy() replace() replace_if() swap()
常用拷贝和替换算法 copy() replace() replace_if() swap()
|
存储 算法 Java
并发和Read-copy update(RCU)
并发和Read-copy update(RCU)
并发和Read-copy update(RCU)
|
NoSQL 关系型数据库 MySQL
如何查找到底是谁执行了FTWL导致Waiting for global read lock
在MySQL · 特性分析 · 到底是谁执行了FTWL中 文章中,分析了为何出现大量Waiting for global read lock的连接。但是实际操作起来很多gdb版本不支持pset操作,而且连接过多,导致不可能手动打印每一个THD的state,所以笔者写了一个gdb的脚本供大家使用: 首先,先保存下面脚本到/tmp/getlockconn MySQL8.
2641 0
LeetCode 138:复制带随机指针的链表 Copy List with Random Pointer
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深拷贝。 A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
836 0