finish

ASP.NET实现大文件上传和下载

时光总嘲笑我的痴心妄想 提交于 2020-03-18 10:32:23
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- (void

setResult()的调用时机

╄→гoц情女王★ 提交于 2020-03-08 17:11:40
  今天遇到这样一个问题,我在Activity- A 中用startActivityForResult()方法启动了Activity -B ,并且在 B 中通过setResult () 方法给 A 返回值,由于某些原因不能在setResult()之后立刻调用finish()函数,只能通过用户按Back键自己退出到 A 。按理说从 B 退出回到Aactivity- A 过程中, A 中的 onActivityResult () 应该被调用, 可是通过log发现,整个操作过程中 onActivityResult() 始终没有被调用。 前后研究了半天才发现 是 setResult() 的调用时机不对造成的,因为在我是在 B 的onStop() 函数中调用setResult()函数的,这个时候的seResult是没有任何意义的,因为已经错过了 A onActivityResult() 的调用时机。   因为在 B 退回 A 过程中,执行过程是   B---onPause    A---onActivityResult   A---onRestart   A---onStart   A---onResume   B---onStop   B---onDestroy   从上面过程可以看出,首先是 B 处于Pause 状态,然后等待 A 执行 onRestart——> onStart ——

网页文件分片上传,断点续传

╄→尐↘猪︶ㄣ 提交于 2020-02-25 18:22:37
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- (void

Python pycharm learning code text record(3)

五迷三道 提交于 2020-02-14 07:36:30
Python pycharm learning code text record (3) 文章编号:Python学【2020】003号 日期:2020-02-13 customer = { "name" : "Jhon Smith" , "age" : 30 , "is_verified" : True } customer [ "name" ] = "Jack Smith" print ( customer [ "name" ] ) print out Jack Smith dictionary.字典基础注释 customer = { "name" : "Jhon Smith" , "age" : 30 , "is_verified" : True } customer [ "birthdate" ] = " Jan 1 1980 " print ( customer [ "birthdate" ] ) print out Jan 1 1980 phone = input ( "phone:" ) digits_mapping = { "1" : "one" , "2" : "two" , "3" : "three" , "4" : "four" } output = "" for ch in phone : output += digits_mapping . get ( ch

银行家算法

…衆ロ難τιáo~ 提交于 2020-01-22 10:06:12
在了解银行家算法之前,我们先了解一下 死锁 的概念和它的相关知识。 死锁 概念 :多个进程相互等待,互不相让,导致所有进程无限期等待。 死锁分为 资源死锁 和 通信死锁 。 资源死锁 :每个进程都在等待其他进程释放资源。资源死锁时最常见的死锁类型。 通信死锁 :由于信息丢失,导致通信双方互相等待对方发送消息。一般可以设置超时时间来解决。 资源死锁条件 1) 互斥条件 :一个进程不能被两个以上的进程同时占有。 2) 占有和等待 :已经得到某个资源的进程可以申请新的资源。 3) 不可抢占条件 :已经分配给一个进程的资源不能被强制性抢占,他只能被占有它的进程显式释放。 4) 环路等待 :死锁发生时,系统中一定有两个及两个以上的进程形成一条环路。 死锁处理 1)忽略问题。 2)检测死锁并恢复 3)避免死锁 4)防止死锁发生 今天我们要说的就是死锁避免的策略— 银行家算法 银行家算法是最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态的申请资源,但系统在进行资源分配之前,应该先计算此次分配资源的安全性,若果分配不会导致系统进入不安全状态,则分配,否则等待。 先说一下算法中需要的数据结构: 1.可利用资源向量 Available :他是一个一维数组。其中的每一个元素代表一类可利用的资源数目。它的数值会根据资源的分配和回收发生改变。比如Available[i]=k

网页文件分片上传,断点续传

泄露秘密 提交于 2020-01-16 01:53:34
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- (void

Web文件分片上传,断点续传

老子叫甜甜 提交于 2020-01-15 15:04:57
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- (void

Web文件分片上传,断点续传

╄→尐↘猪︶ㄣ 提交于 2020-01-15 12:46:35
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- ( void

如何分发大文件、文件夹传输解决方案

跟風遠走 提交于 2020-01-02 21:09:02
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- (void

STL vector简单理解

a 夏天 提交于 2019-12-19 09:40:10
最近在知乎上看到一个回答: https://www.zhihu.com/question/49995099 怎样读《二十四史》。重点在于苏轼有个读书的方法,“ 每书数过,一意求之 ”。读书要带着目的读,有所取舍,反复多次,才得到的多。 我一想,写代码看这些技术书也是啊。一次只看一个侧重点,反复多次。而不是每次都从头看,这样效率低下,学不到东西。 工作中经常使用vector,具体细节并未了解。通常情况下,如果长度固定的数据结构会使用数组,长度不定则使用vector。 最近又翻看了《STL源码剖析》,发现以前看不懂的地方可以看懂了。这次看源码剖析,就看vector。 首先需要有一个整体的概念。所谓vector,是一个动态的数组。使用的时候不需要像数组一样关心长度(但是同样有越界)。 使用[]操作符,同样需要考虑越界。不需要关心长度指的是往里面增加元素时,push_back时vector会动态增加。 数组和vector都是 连续的内存空间 。区别在于数组配置了就不能改变,需要变大,需要另外申请空间,把数据从原来的地方搬到新的地方。 这些工作需要用户(程序员)自己做。而vector不需要,它封装了这些操作。vector有很多实现版本。核心难点在于空间满载时,扩充空间时的三个操作, 申请新空间--数据迁移--释放旧空间 简单看一下vector有哪些内容: // simple vector