小编Dev*_*vin的帖子

DateTime ISO 8601没有时区组件

我一直在为国际应用程序解析日期时间字符串.我遇到了一个解释问题,我似乎无法找到明确的答案. 是否应将没有时区组件的ISO 8601日期时间字符串视为本地时间?

每个维基百科(我不想根据我的业务决策):

如果没有给出具有时间表示的UTC关系信息,则假定时间是在本地时间.

但是,我无法通过ISO或任何其他普遍接受的事实来源找到支持文档.我发现的所有内容都谈到了如何处理当地时间的偏移(例如+/- 0500等).假设这些情况下的当地时间对我有很大帮助,因为我的用户可以为所有区域提交相同的日期,而无需计算每个区域的特定偏移量.

例如:

2012-01-01T00:00:00 # Convert to local
2012-01-01T00:00:00Z # Zulu/UTC...don't convert
Run Code Online (Sandbox Code Playgroud)

对于无时区的ISO 8601字符串,是否有既定的解释?

datetime localization iso8601

14
推荐指数
1
解决办法
6876
查看次数

在.net 4.0中运行ANTS探查器时出现System.Security.VerificationException

我一直在使用RedGate的ANTS Performance Profiler一段时间了.我们最近将我们的第三方dll(Telerik)更新为.net 4.0版本.当我们这样做时,我不再能够分析我们的代码,因为只要我点击Telerik控件,我就会得到:

System.Security.VerificationException:操作可能会破坏运行时的稳定性.

我与RedGate进行了交谈,他们告诉我,"基本上归功于微软及其对CASPOL的更改.ANTS具有更多功能,这些功能需要高权限,以便ANTS可以在运行环境中读取程序集中的元数据......"

他们的建议是以完全信任模式运行该过程.我怎么做?

我已经尝试对Assembly.cs文件进行调整,但由于问题似乎不是从我们的代码生成的,所以我在调整代码方面做的不多.

PS我们的应用程序是WPF/Winforms桌面应用程序.我通过更改web.config找到了Web应用程序的解决方案,但我似乎无法找到一个等效的解决方案(或者理解它是否存在).

security profiler full-trust .net-4.0 red-gate-ants

7
推荐指数
0
解决办法
554
查看次数

确定线程性能

在某些机器上,我的.Net应用程序在CPU使用率约为10%时闲置.我的第一个倾向是我的一个后台工作线程正在执行一些我不知道的指令,但我不知道如何通过线程隔离CPU使用(任务管理器只是告诉我我的进程使用x个线程[通常在30左右],而不是哪些线程占用CPU).

我知道,我编程可以通过迭代的线程中提到的这篇文章,但我不知道这是否会给我我需要的信息.是否有分析器(商业或其他)可以让我分析每个线程的CPU使用率?

c# performance multithreading cpu-usage

5
推荐指数
1
解决办法
384
查看次数

IOException与检查File.Exists?

(我搜索了类似的线程,找不到任何解决这个特定问题的东西,尽管有几个相似的例如这里这里.)

我正在评估我们的应用程序的性能,我注意到我们正在获得一些IOExceptions"找不到资源".我不确定它发生了多少次(很大程度上取决于用户如何使用该应用程序),但它至少有十几个左右.

我假设异常通常是性能昂贵,文件I/O调用也是如此File.Exists().我知道在尝试加载文件之前检查文件是否存在总是很好的做法.我的问题是,如果我检查这个特定文件是否存在,我会看到多少性能提升?(再次,忽略"你应该这样做",我只是想了解性能).

选项1:

try
{
    return (ResourceDictionary) Application.LoadComponent(uri);
}
catch (Exception)
{
    //If it's not there, don't do anything
}
Run Code Online (Sandbox Code Playgroud)

这不会产生额外的IO调用,但有时会抛出并吞噬异常.

选项2:

if(File.Exists(uri))
{
    return (ResourceDictionary) Application.LoadComponent(uri);
}
Run Code Online (Sandbox Code Playgroud)

c# wpf performance file-io exception-handling

5
推荐指数
1
解决办法
1804
查看次数

从使用块内返回一次性对象

在分析我的程序时,我注意到很多字节[]卡在内存中.我做了一些挖掘,发现大多数实例都是以某种方式创建的:

public byte[] CreateBytes(byte[] bytes)
{
    using (var start = new MemoryStream()) 
    {
        using (var memStr = new MemoryStream(bytes))
        {
            //do stuff
            return start.ToArray();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

返回的byte []然后传递给其他方法,并用于MemoryStream从另一个使用块中创建另一个方法:

using (var uncompressedStream = new MemoryStream(uncompressedData))
{
    using (var compressedStream = new MemoryStream())
    {
        //Do some compression
    }
}

myObject.Bytes = uncompressedData;
uncompressedData = null;

return myObject;
Run Code Online (Sandbox Code Playgroud)

(uncompressedData是从CreateBytes()返回的值).

我的问题是,byte []什么时候被清除? 我是否特别需要将其设置为null,如果是,那么在哪里?在第二个使用块后我不再需要它,但如果我只是说uncompressedData = null;我不确定是否会回收内存.

我会认为use语句CreateBytes(byte[] bytes)会处理掉字节,但是因为它返回了一个引用会推迟和/或放弃处理吗?

编辑:我添加了另一行代码.因为我将uncompressedBtyes存储在另一个对象中,所以将uncompressedData设置为null是没有意义的,并且byte []只要myObject(或者直到myObject.Bytes设置为null)就会生存,对吗?

c# memory-leaks memory-management using .net-4.0

3
推荐指数
1
解决办法
889
查看次数

Java删除一定大小的文件

我有一个Java工具,可生成100,000多个文件,我随后在我的流程的"第2步"中使用.由于"第2步"的性质,我不希望任何文件> 1MB.这是我用来删除这些文件的代码:

File[] files = root.listFiles();
for (File file : files) {
    if (file.isFile()) {
        if (file.length > 1048576) { //size of MB
            //delete the file
            file.delete();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当文件数量相对较小时,这工作正常.但是,当n> 100,000时,由于内存限制,对listFiles()的调用会导致系统崩溃.我知道你可以根据文件类型过滤结果,但有没有办法根据文件大小来做?或者,是否有另一种方法,我可以轻松地根据文件大小进行大批量删除,不会崩溃我的系统?

FWIW,我正在运行RedHat 6.

java file delete-file

1
推荐指数
1
解决办法
1562
查看次数

查找异常类型

如果我有以下代码:

try {
    //some offensive code     
} catch (Exception e) {
    String type = //get type of e
    Assert.fail(type + " thrown.");
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以得到Exception的类型,所以我可以输出:

NullReferenceException thrown.
InvalidOperationException thrown.
OutOfMemoryException thrown.
Run Code Online (Sandbox Code Playgroud)

等等?我知道我可以使用instanceOf()打开不同的类型,但这假设我期待一个特定的类型.

FWIW,我知道这个特定的代码块非常糟糕,并且违反了Eric Lippert建议的许多最佳实践.我只是好奇是否有办法在运行时确定异常类型.

java exception-handling exception

1
推荐指数
1
解决办法
205
查看次数

对HashSets集合进行排序

如果这是重复,我道歉,但我找不到任何具体回答这一特定问题的答案.

我有一个HashMap,其中包含一个与Set值配对的字符串键.我想根据集合的长度对地图中的值进行排序.考虑:

HashMap<String, Set<String>> myMap;
Run Code Online (Sandbox Code Playgroud)

包含:

{"A", {"Dukmerriot", "King", "Pumpkin"}}  
{"B", {"Steve"}}
{"C", {"Jib", "Jab", "John", "Julie"}}
{"D", {"Apple", "Amy", "Unicorn", "Charlie", "Raptor"}}
{"E", {}}
Run Code Online (Sandbox Code Playgroud)

我希望能够有效地获得列表{"D", "C", "A", "B", E"}(从最大到最小指定集合的​​顺序)myMap.

除了创建一个实现Set和覆盖compareTo方法的包装类之外,有没有办法根据它们的长度对一组集合进行排序?

编辑:我应该指定我不需要使用HashMap来维护这个集合.我可以使用TreeMap或其他东西,但我不确定这是否可能,因为Set没有实现Comparable.

java sorting hashmap

0
推荐指数
1
解决办法
1425
查看次数