GVKun编程网logo

cocoa – NSURLThumbnailDictionaryKey为本地文件为空(file does not contain dictionary)

3

对于想了解cocoa–NSURLThumbnailDictionaryKey为本地文件为空的读者,本文将提供新的信息,我们将详细介绍filedoesnotcontaindictionary,并且为您提

对于想了解cocoa – NSURLThumbnailDictionaryKey为本地文件为空的读者,本文将提供新的信息,我们将详细介绍file does not contain dictionary,并且为您提供关于.net Redis分布式锁,Dictionary,ConcurrentDictionary 介绍、.net 大数据量,查找 Where 优化(List 的 Contains 与 Dictionary 的 ContainsKey 的比较)、asp.net-mvc – Url.Action with RouteValueDictionary with Protocol、Azure CLI Dynaic Query Consumption Cost Data (az consumption usage list)的有价值信息。

本文目录一览:

cocoa – NSURLThumbnailDictionaryKey为本地文件为空(file does not contain dictionary)

cocoa – NSURLThumbnailDictionaryKey为本地文件为空(file does not contain dictionary)

我想得到一个我必须在我的应用程序中显示的文件的缩略图表示.我在这里使用NSURL:

NSDictionary *thumbnails = nil;
BOOL success = [fileURL getResourceValue:&thumbnails
                                          forKey:NSURLThumbnailDictionaryKey
                                           error: &error];

如果我连接到iCloud,这可以正常工作,URL是指向存储在iCloud中的文件的链接. fileURL类似于:

file:///Users/me/Library/Mobile%20Documents/BJXXglr9R3~com~myapp~icloud/FileStorage/contact-page%20copy.png

但是,如果我使用指向本地文件的NSURL使用相同的代码,则缩略图字典为空.

以下是此案例中URL的示例:

file:///Users/me/Library/Containers/com.mycompany.mymacapp/Data/Library/Application%20Support/com.mycompany.mymacapp/FileStorage/Bn4VaCncuaEJjLb.png-large.png

这个getResourceValue API是不是应该与本地存储的文件一起使用?或者我做错了什么?

解决方法

这是API的一部分.此外,在处理来自iCloud的文件时,您应该使用文件协调器:

[url startAccessingSecurityScopedResource];

NSFileCoordinator *coordinator = [[NSFileCoordinator alloc] init];
__block NSError *error;
[coordinator coordinateReadingItemAtURL:url options:0 error:&error byAccessor:^(NSURL *newURL) {
    [newURL getResourceValue:&image forKey:NSURLThumbnailDictionaryKey error:&error];
}];

[url stopAccessingSecurityScopedResource];

.net Redis分布式锁,Dictionary,ConcurrentDictionary 介绍

.net Redis分布式锁,Dictionary,ConcurrentDictionary 介绍

1、背景

在计算机世界里,对于锁大家并不陌生,在现代所有的语言中几乎都提供了语言级别锁的实现,为什么我们的程序有时候会这么依赖锁呢?这个问题还是要从计算机的发展说起,随着计算机硬件的不断升级,多核cpu,多线程,多通道等技术把计算机的计算速度大幅度提升,原来同一时间只能执行一条cpu指令的时代已经过去。随着多条cpu指令可以并行执行的原因,原来不曾出现的资源竞争随着出现,在程序中的体现就是随处可见的多线程环境。比如要更新数据库的一个信息,如果没有并发控制,多个线程同时操作的话,就会出现互相覆盖的现象发生。

锁要解决的就是资源竞争的问题,也就是要把执行的指令顺序化。

在互联网背景下,电商行业是普遍都是多线程执行,并发量大。比如下单秒杀抢购商品活动,属于高并发情况,库存的保证就尤其重要了,不能出现超卖现象。程序员所要做的事情就是需要单线程执行获取库存,再减库存操作,保证数据原子性。

在多台服务器中,锁就是重点。

2、应用

我们先来介绍下单线程下的情况,假设有个商品A,库存500件,假设每次购买1件,单价1元,这样就只有是500次下单时成功的,其他都不能下单。

2.1  Store商品存储-Dictionary

数据库不存在的情况下,用Dictionary来代替

 创建了Store后,主程序创建下单,单线程执行。

 执行结果:

 执行正常,4人不能下单。

改成多线程执行,直接出现超卖现象,其中用Task.Run 模拟多线程,其中Order(int i) i变量注意,不能直接填写i,异步中上下文不存在,因为主线程以及跑完了,再运行异步Task线程,这时变量已是最后一个被覆盖。

解决方案是重复赋值变量替换

 结果:

 500多的人都买了。

解决方案:

2.1.1  lock 加锁

lock很明显影响性能。

 

 执行结果:

 正常。

2.1.2  使用ConcurrentDictionary

ConcurrentDictionary 本身是线程安全的,源代码就是加了lock

 

 

 

 

 

 

 执行结果符合。

2.2 用Redis分布式锁

redis是单线程运行,所以适合。原理也很简单,运用redis以下指令

1、SETNX
SETNX key val:当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。
2、expire
expire key timeout:为key设置一个超时时间,单位为second,超过这个时间锁会自动释放,避免死锁。
3、delete
delete key:删除key
在使用Redis实现分布式锁的时候,主要就会使用到这三个命令。

原理如下:

1、先获取redis锁,设置一个随机字符串

 

 

 执行了805次,看下输出最后数量有没有小于0

 结果显示0,正确,没超卖

 

.net 大数据量,查找 Where 优化(List 的 Contains 与 Dictionary 的 ContainsKey 的比较)

.net 大数据量,查找 Where 优化(List 的 Contains 与 Dictionary 的 ContainsKey 的比较)

 最近优化一个 where 查询条件,查询时间很慢,改为用 Dictionary 就很快了。

 

 一、样例

 

假设:listPicsTemp 有 100w 条数据,pictures 有 1000w 条数据。

 

使用第 1 段代码执行超过 2 分钟。

var listPicsTemp = new List<string>();

pictures = pictures.AsParallel().Where(d => listPicsTemp.Contains(d.Pic)).ToList();

 

使用第 2 段代码执行十几毫秒。

var listPicsTemp = new List<string>();

var dicPicsTemp = listPicsTemp.Where(d => d != null).Distinct().ToDictionary(d => d);//使用Dictionary类型,速度快很多

pictures = pictures.AsParallel().Where(d => dicPicsTemp.ContainsKey(d.Pic)).ToList();

 

二、为什么 Dictionary 这么快呢?查看了一下微软官方文档。

 

下面截图来源:https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.dictionary-2?view=netframework-4.7.2

 

 

三、查看源码

 

List 的源码:https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,cf7f4095e4de7646

List 的 Contains,是循环 for 查找的。

 

Dictionary 的源码: https://referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs,bcd13bb775d408f1

Dictionary 的 ContainsKey,是通过 hash 查找的。

 

 

 四、小结:

1、Dictionary<TKey,TValue> 类实现为哈希表。ContainsKey () 内部是通过 Hash 查找实现的,查询的时间复杂度是 O (1)。所以,查询很快。(List 的 Contains 是通过 for 查找的)

2、Dictionary 不是线程安全的。(查看微软官方文档,确实能学到很多知识盲区。)

asp.net-mvc – Url.Action with RouteValueDictionary with Protocol

asp.net-mvc – Url.Action with RouteValueDictionary with Protocol

一直在看这个一段时间,感觉就像我只是笨蛋想要更多的眼睛.

我需要生成一个完整的URL(例如http://www.domain.com/controller/action?a=1\u0026amp;b=2),一般来说,我只需使用Url.Action就可以通过指定协议来完成此任务:

var url = Url.Action("Action","Controller",new { a = 1,b = 2 },"http");

我已经开始组合一个返回RouteValueDictionary的类,以使这些匿名对象消失.但是,我不能让它与帮手一起工作.

var x = Url.Action("Action",new RouteValueDictionary(new { a = 1,b = 2 }),"http");
// "http://127.0.0.1/Controller/Action?Count=2&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D",var y = Url.Action("Action","http");
// "http://127.0.0.1/Controller/Action?a=1&b=2"

任何指向一个facepalm的指针非常感谢:)

更新:

最好澄清一点,在上面的例子中,我需要让’X’变量工作正常,因为RouteValueDictionary是在代码的其他地方创建的.假设RouteValueDictionary是正确的.

我只是不明白为什么这个工作与匿名对象,但是包装在同一个对象中的同一个对象包裹在一个RouteValueDictionary中,使得帮助者变得怪异了.

解决方法

您正在使用的重载期望为您传递RouteValueDictionary的参数键入“object”.由于某种原因,这是导致问题,可能与.ToString()有关?使用一个接受RouteValueDictionary的重载,这应该工作.

要测试这个,添加一个hostName参数来选择如下所示的重载:

编辑

您可以在项目中使用此扩展,将您需要的重载添加到Url.Action.在内部,它将从请求中解析并添加hostName.

public static string Action
    (this UrlHelper helper,string action,string controller,RouteValueDictionary routeValues,string protocol)
{
     string hostName = helper.RequestContext.HttpContext.Request.Url.Host;
     return helper.Action(action,controller,routeValues,protocol,hostName);
}

Azure CLI Dynaic Query Consumption Cost Data (az consumption usage list)

Azure CLI Dynaic Query Consumption Cost Data (az consumption usage list)

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

我们今天的关于cocoa – NSURLThumbnailDictionaryKey为本地文件为空file does not contain dictionary的分享就到这里,谢谢您的阅读,如果想了解更多关于.net Redis分布式锁,Dictionary,ConcurrentDictionary 介绍、.net 大数据量,查找 Where 优化(List 的 Contains 与 Dictionary 的 ContainsKey 的比较)、asp.net-mvc – Url.Action with RouteValueDictionary with Protocol、Azure CLI Dynaic Query Consumption Cost Data (az consumption usage list)的相关信息,可以在本站进行搜索。

本文标签: