精华内容
下载资源
问答
  • 图片下载队列控制器 ------ 原因 ------ 1、对于需显示图片的TableView,为了避免快速滑动时同时下载太多图片,需可控制同时下载的数量。 2、经常都有多个页面需要这样的功能,所以做了一个统一控制图片下载数量的类...
  • <div><p>希望增加上传和下载队列查看功能</p><p>该提问来源于开源项目:willnewii/qiniuClient</p></div>
  • 照片多选,下载队列,进度显示
  • 自PS5发布以来,许多PS5用户反映遇到了下载队列bug,这导致PS5游戏陷入「排队等待下载」或「下载错误」的情况,两者都会提示玩家检查下载菜单,但下载菜单里什么都没有。今日索尼为所有遇到问题的玩家提供了解决办法...

      自PS5发布以来,许多PS5用户反映遇到了下载队列bug,这导致PS5游戏陷入「排队等待下载」或「下载错误」的情况,两者都会提示玩家检查下载菜单,但下载菜单里什么都没有。今日索尼为所有遇到问题的玩家提供了解决办法。一起来看看ps5下载队列错误怎么办?索尼提供解决PS5下载bug的方法

    ps5下载队列错误怎么办?索尼提供解决PS5下载bug的方法

      以前,下载队列错误的唯一已知解决方案是完全恢复出厂设置,但是这使用户不得不重新下载其所有软件。周四,PlayStation的支持帐户提供了一种解决该问题的方法,不需要恢复出厂设置。

      ps5下载队列错误解决办法:以安全模式启动其PS5主机,之后选择重建其数据库。重新启动后,下载队列问题应该就能够得到解决。

    各位看官,以上就是游综宅给大家带来的关于ps5下载队列错误怎么办?索尼提供解决PS5下载bug的方法的全部内容啦!如果您想了解更多海内外手游攻略主机游戏资讯二次元资讯。欢迎关注(游综宅手游网)哦!

    展开全文
  • 主要为大家详细介绍了Java语言实现简单FTP软件,FTP上传下载队列窗口的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 用NSOperation写下载队列   说明 1. 支持缓存机制 2. 图片都是在主线程中加载 3. 文件名用了md5加密 *这东西被人写烂了,但大伙如果对NSOperation不熟悉的话,可以看看本人的实现.   ...

    用NSOperation写下载队列

     

    说明

    1. 支持缓存机制

    2. 图片都是在主线程中加载

    3. 文件名用了md5加密

    *这东西被人写烂了,但大伙如果对NSOperation不熟悉的话,可以看看本人的实现.

     

    源码

    https://github.com/YouXianMing/NSOperationExample

    复制代码
    //
    //  ImageDownloadOperation.h
    //  NSOperationDownloadImage
    //
    //  Created by YouXianMing on 15/9/7.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    @class ImageDownloadOperation;
    
    @protocol ImageDownloadOperationDelegate <NSObject>
    
    @required
    - (void)imageDownloadOperation:(ImageDownloadOperation *)operation data:(NSData *)data;
    
    @end
    
    @interface ImageDownloadOperation : NSOperation {
        
        BOOL  _executing;
        BOOL  _finished;
    }
    
    /**
     *  代理
     */
    @property (nonatomic, weak)   id <ImageDownloadOperationDelegate> delegate;
    
    /**
     *  图片地址
     */
    @property (nonatomic, strong) NSString *imageUrlString;
    
    /**
     *  便利构造器
     *
     *  @param urlString 图片地址
     *  @param delegate  代理
     *
     *  @return 实例对象
     */
    + (instancetype)operationWithImageUrlString:(NSString *)urlString
                                       delegate:(id <ImageDownloadOperationDelegate>)delegate;
    
    @end
    复制代码
    复制代码
    //
    //  ImageDownloadOperation.m
    //  NSOperationDownloadImage
    //
    //  Created by YouXianMing on 15/9/7.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import "ImageDownloadOperation.h"
    #import <CommonCrypto/CommonDigest.h>
    
    @interface ImageDownloadOperation ()
    
    @property (nonatomic, strong) NSURLConnection *connection;
    @property (nonatomic, strong) NSString        *md5String;
    @property (nonatomic, strong) NSString        *filePathString;
    
    @end
    
    @implementation ImageDownloadOperation
    
    - (void)main {
        
        // 验证图片地址是否为空
        if (_imageUrlString.length <= 0) {
            
            [self delegateEventWithData:nil];
            [self completeOperation];
            
            return;
        }
        
        // 生成文件路径
        self.md5String      = [self MD5HashWithString:_imageUrlString];
        self.filePathString = [self pathWithFileName:self.md5String];
        
        // 文件如果存在则直接读取
        BOOL exist = [[NSFileManager defaultManager] fileExistsAtPath:self.filePathString isDirectory:nil];
        if (exist) {
            
            [self delegateEventWithData:[NSData dataWithContentsOfFile:self.filePathString]];
            [self completeOperation];
            
            return;
        }
        
        NSURL        *url     = [NSURL URLWithString:_imageUrlString];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        self.connection       = [NSURLConnection connectionWithRequest:request delegate:self];
        
        // 让线程不结束
        do {
            
            @autoreleasepool {
                
                [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
                
                if (self.isCancelled) {
                    
                    [self completeOperation];
                }
            }
            
        } while (self.isExecuting && self.isFinished == NO);
    }
    
    #pragma mark - 网络代理
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    
    }
    
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        
        [self writeData:data toPath:self.filePathString];
        [self delegateEventWithData:data];
    }
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
        
        [self completeOperation];
    }
    
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
        
        [self delegateEventWithData:nil];
        [self completeOperation];
    }
    
    #pragma mark - 
    + (instancetype)operationWithImageUrlString:(NSString *)urlString
                                       delegate:(id <ImageDownloadOperationDelegate>)delegate {
    
        ImageDownloadOperation *operation = [[ImageDownloadOperation alloc] init];
        operation.delegate                = delegate;
        operation.imageUrlString          = urlString;
        
        return operation;
    }
    
    #pragma mark -
    - (void)completeOperation {
        
        [self willChangeValueForKey:@"isFinished"];
        [self willChangeValueForKey:@"isExecuting"];
        _executing = NO;
        _finished  = YES;
        [self didChangeValueForKey:@"isExecuting"];
        [self didChangeValueForKey:@"isFinished"];
    }
    
    - (void)start {
        
        if ([self isCancelled]) {
            
            [self willChangeValueForKey:@"isFinished"];
            _finished = YES;
            [self didChangeValueForKey:@"isFinished"];
            
            return;
        }
        
        [self willChangeValueForKey:@"isExecuting"];
        [NSThread detachNewThreadSelector:@selector(main) toTarget:self withObject:nil];
        _executing = YES;
        [self didChangeValueForKey:@"isExecuting"];
    }
    
    - (BOOL)isExecuting {
        
        return _executing;
    }
    
    - (BOOL)isFinished {
        
        return _finished;
    }
    
    - (BOOL)isConcurrent {
        
        return YES;
    }
    
    #pragma mark -
    - (NSString *)MD5HashWithString:(NSString *)string {
        
        CC_MD5_CTX md5;
        
        CC_MD5_Init(&md5);
        CC_MD5_Update(&md5, [string UTF8String], (CC_LONG) [string length]);
        
        unsigned char digest[CC_MD5_DIGEST_LENGTH];
        CC_MD5_Final(digest, &md5);
        
        NSString *s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
                       digest[0],  digest[1],
                       digest[2],  digest[3],
                       digest[4],  digest[5],
                       digest[6],  digest[7],
                       digest[8],  digest[9],
                       digest[10], digest[11],
                       digest[12], digest[13],
                       digest[14], digest[15]];
        
        return s;
    }
    
    - (NSString *)pathWithFileName:(NSString *)name {
    
        NSString *path = [NSString stringWithFormat:@"/Documents/%@", name];
        return [NSHomeDirectory() stringByAppendingPathComponent:path];
    }
    
    - (void)delegateEventWithData:(NSData *)data {
        
        if (_delegate && [_delegate respondsToSelector:@selector(imageDownloadOperation:data:)]) {
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                [_delegate imageDownloadOperation:self data:data];
            });
        }
    }
    
    - (void)writeData:(NSData *)data toPath:(NSString *)path {
    
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            
            [data writeToFile:path atomically:YES];
        });
    }
    
    @end
    复制代码

     

    细节

    展开全文
  • 下载队列类DownloadQueue代表具有优先级的下载队列,该类的存储下载请求的数组链表专门按一定的优先级来存储下载请求的。该类的类图如下。 下载队列类DownloadQueue各个字段的含义说明如下: public static int ...

    下载队列类DownloadQueue代表具有优先级的下载队列,该类的存储下载请求的数组链表专门按一定的优先级来存储下载请求的。该类的类图如下。

     

    下载队列类DownloadQueue各个字段的含义说明如下:

    public static int MaxQueueLength = 200;//最大队列长度

    public static int MaxConcurrentDownloads = 2;//最大当前下载长度

    private ArrayList m_requests = new ArrayList();//存储下载请求的数组链表

    private ArrayList m_activeDownloads = new ArrayList();//存储活动下载请求的数组链表

    protected virtual void ServiceDownloadQueue()虚方法当线程可用时下载

    public virtual void Add(DownloadRequest newRequest) 虚方法添加一个下载请求到队列,调用虚方法ServiceDownloadQueue()开始真正的文件下载

    public virtual void Clear(object owner) 虚方法清空具有指定拥有者的所有下载请求,调用虚方法ServiceDownloadQueue()开始真正的文件下载

    protected virtual DownloadRequest GetNextDownloadRequest()虚方法取回下一个下载请求(找到下一个可下载的文件)

    public virtual void Remove( DownloadRequest request) 虚方法从下载队列数组链表中移除指定的下载请求,调用虚方法ServiceDownloadQueue()开始真正的文件下载

    internal void OnComplete( DownloadRequest request)是下载完成时的回调的内部方法,调用虚方法ServiceDownloadQueue()开始下一个文件下载。该方法被DownloadRequest.cs文件中的public virtual void OnComplete()方法调用

    转载于:https://www.cnblogs.com/rainbow70626/p/4555430.html

    展开全文
  • spring定时器,定时走下载队列进行文件上传下载同时对文件进行MD5校验
    package cn.com.ebidding.impl.outer.trading;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;
    import java.net.URLDecoder;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    import java.util.Vector;
    
    import org.apache.commons.io.IOUtils;
    import org.net.plat4j.common.utils.AppConfig;
    import org.net.plat4j.common.utils.FileUtil;
    import org.net.plat4j.sr.core.utils.LogHelper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import cn.com.ebidding.api.outer.trading.ITradingPlatformFile;
    import cn.com.ebidding.web.mapper.PTradingfileinfoMapper;
    import cn.com.ebidding.web.model.PTradingfileinfo;
    
    @Service("ITradingPlatformFile")
    public class TradingPlatformFileService implements ITradingPlatformFile {
    
    	public final static boolean DEBUG = true;// 调试用
    	@SuppressWarnings("unused")
    	private static int BUFFER_SIZE = 8096;// 缓冲区大小
    	@SuppressWarnings("rawtypes")
    	private Vector vPTradingfileinfo = new Vector();// 下载信息
    
    	private static final LogHelper log = new LogHelper(TradingPlatformFileService.class);
    	
    	@Autowired
    	private PTradingfileinfoMapper mapper;
    	
    	/**
    	 * 构造方法
    	 */
    	public TradingPlatformFileService() {
    		log.info("*********************************** 进入交易平台附件下载 ***********************************");
    	}
    
    	/**
    	 * 清除下载列表
    	 */
    	public void resetList() {
    		log.info("清除下载列表");
    		vPTradingfileinfo.clear();
    	}
    
    	/**
    	 * 增加下载列表项
    	 *
    	 * @param url
    	 *            String
    	 * @param filename
    	 *            String
    	 */
    	@SuppressWarnings("unchecked")
    	public void addItem(PTradingfileinfo pTradingfileinfo) {
    		log.info("添加下载列表:" + pTradingfileinfo.getFileurl() + "   fileVeriCode:" + pTradingfileinfo.getFilevericode());
    		vPTradingfileinfo.add(pTradingfileinfo);
    	}
    
    	public String getFileName(String urlStr){
    		String fileName = null;
    		try {
    			URL url = new URL(urlStr);
    	        URLConnection uc = url.openConnection();
    	        fileName = uc.getHeaderField("Content-Disposition");
    	        fileName = new String(fileName.getBytes("ISO-8859-1"), "GBK");
    	        fileName = URLDecoder.decode(fileName.substring(fileName.indexOf("filename=")+9),"UTF-8");
    	        log.info("文件名为:" + fileName + "  大小" + (uc.getContentLength()/1024)+"KB");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return fileName;
    	}
    
    	/**
    	 * 将HTTP资源另存为文件并进行MD5校验
    	 * @param urlStr
    	 * @param fileName
    	 * @throws IOException
    	 */
    	public void getTradingPlatFormFile() throws Exception {
    		
    		// 根据列表下载资源
    		if(vPTradingfileinfo != null && vPTradingfileinfo.size()>0){
    			for(int i=0; i<vPTradingfileinfo.size(); i++){
    				PTradingfileinfo trading = (PTradingfileinfo) vPTradingfileinfo.get(i);
    				trading.setId(trading.getId());
    				String urlStr = trading.getFileurl();
    				String fileName = getFileName(urlStr);
    				String tradingMD5Str = trading.getFilevericode();
    				String savePath = AppConfig.getProperty("Location_Default_Dir") + FileUtil.separator + "TradingPlat";
    				if(!"".equals(urlStr)){
    					InputStream inputStream = null;
    					FileOutputStream fos = null;
    					HttpURLConnection connection = null;
    					try {
    						trading.setIsDeleted("0");
    						trading.setUpdateTime(new Date());
    						trading.setDownstattime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));
    						URL url = new URL(urlStr);
    						connection = (HttpURLConnection) url.openConnection();
    						inputStream = connection.getInputStream();
    						
    						File saveDir = new File(savePath);
    						if (!saveDir.exists()) {
    							saveDir.mkdirs();
    						}
    						
    						File file = new File(saveDir + File.separator + fileName);
    						fos = new FileOutputStream(file);
    						IOUtils.copy(inputStream, fos);
    						
    						// 对文件进行MD5校验
    						String md5Str = MD5Builder.getMD5(file);
    						if(md5Str.equals(tradingMD5Str)){
    							trading.setIscheck("0");
    							log.info("文件名为:" + urlStr + "/" + fileName + "  MD5校验成功");
    						} else {
    							trading.setIscheck("1");
    							log.info("文件名为:" + urlStr + "/" + fileName + "  MD5校验失败");
    						}
    						
    						//执行文件上传     0-可下载 1-下载成功 2-下载失败
    						try {
    							String fileId = FileUtil.uploadTempFile(2665l, file).getId();
    							if(fileId != null){
    								trading.setIssuccess("1");
    								trading.setFileid(fileId);
    								trading.setDowneedtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));
    								mapper.updateByPrimaryKeySelective(trading);
    								log.info("文件:" + url + "/" + fileName + "   下载成功");
    							} else {
    								trading.setIssuccess("2");
    								trading.setDowneedtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));
    								mapper.updateByPrimaryKeySelective(trading);
    								log.info("文件:" + url + "/" + fileName + "   下载失败");
    							}
    						} catch (Exception e) {
    							e.printStackTrace();
    							trading.setIssuccess("2");
    							trading.setDownremarks(getLogInfo(e));
    							trading.setDowneedtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));
    							mapper.updateByPrimaryKeySelective(trading);
    						}
    						
    					} catch (Exception e) {
    						e.printStackTrace();
    						trading.setIssuccess("2");
    						trading.setDownremarks(getLogInfo(e));
    						trading.setDowneedtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));
    						mapper.updateByPrimaryKeySelective(trading);
    					} finally{
    						IOUtils.closeQuietly(inputStream);
    						IOUtils.closeQuietly(fos);
    						connection.disconnect(); 
    					}
    				}
    			} 
    			// 清除下载队列
    			resetList();
    		}
    	}
    	
    	/***
    	 * 补全异常信息
    	 * @param e
    	 * @return
    	 */
    	public static String getLogInfo(Exception e){
    		StringWriter sw = new StringWriter(); 
            e.printStackTrace(new PrintWriter(sw, true)); 
    		return sw.toString();
    	}
    	
    	@Override
    	public void downTradingPlatformFile() {
    		List<PTradingfileinfo> list = new ArrayList<PTradingfileinfo>();
    		if(belongCalendar()){
    			list = mapper.queryTradingPlatFileBusy();
    		} else {
    			list = mapper.queryTradingPlatFileIdle();
    		}
    		try {
    			if(list != null && list.size()>0){
    				for(int i=0; i<list.size(); i++){
    					addItem(list.get(i));
    				}
    				// 开始下载
    				getTradingPlatFormFile();
    			} else {
    				log.info("*********************************** 交易平台暂无附件可下载 ***********************************");
    			}
    		} catch (Exception err) {
    			err.printStackTrace();
    		}
    	}
    	
    	/**
    	 * 判断不同时间段执行不同的下载任务
    	 * @return
    	 */
    	public static boolean belongCalendar() {
    		boolean result = false;
    		try {
    			//设置日期格式
    			SimpleDateFormat df = new SimpleDateFormat("HH:mm");
    			// 当前时间
    	        Calendar date = Calendar.getInstance();
    	        date.setTime(df.parse(df.format(new Date())));
    	        // 开始时间
    	        Calendar begin = Calendar.getInstance();
    	        begin.setTime(df.parse("6:00"));
    	        // 结束时间
    	        Calendar end = Calendar.getInstance();
    	        end.setTime(df.parse("23:00"));
    	        if (date.after(begin) && date.before(end)) {
    	        	result = true;
    	        } else {
    	        	result = false;
    	        }
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return result;
        }
    }
    

    展开全文
  • 在项目中经常会遇到文件的批量上传、下载等基本操作。这时候就需要将任务放到一个队列中,然后循环在子线程中执行任务。所以,这里来介绍一下该场景的框架设计,如何在子线程中执行耗时任务队列。 二、代码 #ifndef ...
  • 与ASIHttpRequest都是同一个第三方库: ...将request添加到队列中,可以为request打上tag用来区别不同的下载任务。 _myQueue.delegate = self 设置代理 [_myQueue setRequestDidFinishSelector:@selector
  • 会出现加入下载队列时0速度0进度却不作任何提示的现象。 <h1></h1> 另外一个问题就是如果获取到的资源的缩略图为以下形式时(传说中的8秒警告视频),能否在加入下载队列试图下载该资源时给出提示...
  • 1、首先看一下队列窗口的界面   2、看一下上传队列窗口的界面   3、看一下下载队列窗口的界面   4.队列窗口的实现 package com.oyp.ftp.panel.
  • 汗今天自己作了一个队列下载的单例类。目的就是解决并发的问题和使用Loader的易用性。 原理是,生成了一个类的单例,在全局使用。单例中包括一个Timer时间轮训,一个array的下载URL列表,一个加载顺序的策略...
  • 为了管理以及队列操作,JGDownloadAcceleration 提供了一个 NSOperationQueue 的子类(JGOperationQueue),专门用来处理网络线程,活动指示器,以及程序后台任务。 Q.  How does the download acceleration...
  • ios异步中实现按序下载队列

    千次阅读 2017-09-01 14:59:59
    //取队列中有没有数据,如果没有,则Sleep __block NSDictionary *dic; dispatch_barrier_sync(wself .barrierQueue , ^{ if ([wself .arrTask count] > 0 ){ dic = wself .arrTask [ 0 ]; [wself ....
  • https://www.cnblogs.com/lonelyxmas/p/4413637.html
  • 3、是否需要维护一个任务队列下载文件 解决方案: 详见文章:断点续传 https://www.jianshu.com/p/2b82db0a5181 断点续传可以不分段,也可以分段,分段其实是为了多线程并行下载,那肯定就需要任务队列了。 具体...
  • package l.test1.queue.nio; import java.io.File; public interface Task { public String getNetWorkPath(); public String getName(); /** * * @param file */ public void success(File file);
  • Android 下载任务队列实现-Kotlin

    千次阅读 2019-09-09 13:40:48
    下载队列在Android中可以说是非常常见了,常见的做法是将下载任务放到服务中,创建线程任务队列,对其进行处理,这样子问题也有很多,比如常见的线程安全之类的。并且考虑到线程创建和关闭对资源的消耗,我们还要...
  • 打开IDM下载器,单击菜单中的“队列”,可以看到在左侧有2个主要队列:下载队列和同步队列,如图1。 图 1:队列按钮 大家还可以创建任意数量的附加队列。 选中“队列”,单击右键,选择“创建新队列”,如图2。 ...
  • ASIHTTPRequest是一个很常见的网络请求开源框架,虽然博主声明已经不更新,但目前来看...ASINetworkQueue是下载队列,里面添加很多的单独的ASIHTTPRequest下载任务,可以更好的管理多个下载请求。 这里记录ASIHTTPRe
  • kafka队列下载

    2017-08-25 10:31:09
    kafka_2.12-0.11.0.0

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,825
精华内容 2,330
关键字:

下载队列