利用temp文件实现原子操作

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

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

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

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

在此只是以图片举例,其他文件操作也可如此实现
相关文章
|
7月前
|
编译器 C++
02头文件的冲突导致,清除缓冲区失败之cin.ignore() 问题
输入任意多个整数, 把这些数据保存到文件data.txt中. 如果在输入的过程中, 输入错误, 则提示用户重新输入. 指导用户输入结束(按ctrl + z) [每行最多保存4个整数] 可能遇到的 cin.ignore();问题
63 0
|
4月前
|
安全 Java API
Java多线程编程:使用Atomic类实现原子操作
在Java多线程环境中,共享资源的并发访问可能导致数据不一致。传统的同步机制如`synchronized`关键字或显式锁虽能保障数据一致性,但在高并发场景下可能导致线程阻塞和性能下降。为此,Java提供了`java.util.concurrent.atomic`包下的原子类,利用底层硬件的原子操作确保变量更新的原子性,实现无锁线程安全。
39 0
|
6月前
|
C语言
C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)
C语言进阶——文件的读写(文件使用方式、文件的顺序读写、常用函数、fprintf、fscanf)
48 0
解决线程安全问题的方式三:Lock锁 ---JDK5.0新增
解决线程安全问题的方式三:Lock锁 ---JDK5.0新增
35 0
|
7月前
|
安全 C++
C++ std::thread::detch函数之遇坑记录
调用thread::detch后,程序有可能会在当前调用函数执行完之后才去构造实参对象
90 0
C++ std::thread::detch函数之遇坑记录
|
PHP C语言
PHP的fclose($file);写在finally 块里面和写在普通代码里面的区别是什么?底层原理是什么?
PHP的fclose($file);写在finally 块里面和写在普通代码里面的区别是什么?底层原理是什么?
|
SQL Oracle 关系型数据库
[20180222]V$LOCK视图显示大量TX锁.txt
[20180222]V$LOCK视图显示大量TX锁.txt --//一般应用程序许多情况下一个TX锁,对应一个TM锁(一般DML都是单表,然后提交).生产系统存在大量的有TX锁,而没有TM锁.
1092 0