小编Eug*_*sky的帖子

为什么我没有内存泄漏.Dispose()我.save()的位图到MemoryStream?

假设我创建了一个位图

Bitmap bitmap = new Bitmap(320, 200);
Run Code Online (Sandbox Code Playgroud)

当我把它写到某个流(在我的情况下,它是一个HttpResponseStream,由HttpListenerResponse给出),一切都很好:

bitmap.Save(stream, ImageFormat.Png);
Run Code Online (Sandbox Code Playgroud)

我不需要bitmap.Dispose(),位图使用的资源将自动清理.直接将Png写入不可搜索的流的问题是,它可能导致GDI +中发生一般错误,当我在Azure上尝试我的Asp应用程序时发生这种情况.这就是我的代码现在的样子:

using (MemoryStream ms = new MemoryStream())
{
  bitmap.Save(ms, ImageFormat.Png);
  ms.WriteTo(stream);
}
Run Code Online (Sandbox Code Playgroud)

现在除非我之后使用bitmap.Dispose(),否则会泄漏.

重新提出问题以获得更具体的答案: 为什么这种位图内存的泄漏似乎取决于我将其保存到哪种类型的流?

更新: 正如我在评论中被问到我是否确定它是泄密.在压力测试中反复调用上面的内容,我的w3wp进程将进入gig和gig的内存使用,直到我的机器开始交换,它将无法清理.

.net c# memorystream bitmap

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

数据库中的等深度直方图的例子?

我无法理解等深度直方图在查询优化中的作用.有人可以给我一些指向良好资源的指示或任何人都可以解释.我已经阅读了一些研究论文,但仍然无法说服我需要和使用等深度直方图.那么,有人可以用一个例子解释等深度直方图.

我们也可以合并直方图的桶,以便直方图变得足够小并且适合磁盘上的1页?

同等深度直方图中的桶边界是什么?

database

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

尽管timeBeginPeriod(1),为什么最小Threading.Timer间隔15ms

以下代码段

    [DllImport("winmm.dll", EntryPoint = "timeBeginPeriod")]
    public static extern uint TimeBeginPeriod(uint uMilliseconds);

    static void Main(string[] args)
    {
        if (TimeBeginPeriod(1) != 0)
            Console.WriteLine("TimeBeginPeriod failed!");

        Console.WriteLine("Sleep");
        Stopwatch sw = Stopwatch.StartNew();
        for (int i = 0; i < 10; i++)
        {
            Thread.Sleep(1);
            Console.WriteLine(sw.ElapsedTicks * 1000d / Stopwatch.Frequency);
            sw.Restart();
        }

        Console.WriteLine("Threading.Timer");
        sw = null;
        System.Threading.Timer t = null;
        int n = 0;

        t = new Timer(state =>
        {
            if (sw == null)
                sw = Stopwatch.StartNew();
            else
            {
                Console.WriteLine(sw.ElapsedTicks * 1000d / Stopwatch.Frequency);
                n++;
                sw.Restart();
            } …
Run Code Online (Sandbox Code Playgroud)

.net sleep timer

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

Java 的哈希映射不允许自定义 equals/hashCode 有充分的理由吗?

ConcurrentHashMapHashMap正在使用equals()/hashCode()关键实例。

几十年来,在很多情况下,我都错过了提供不同 equals/hashCode 实现的可能性。无法做到这一点意味着您要么必须使用排序映射,它允许您设置 a Comparator,但代价是 SortedMap 的性能特征较差,或者您必须使用不同的对象作为键,即通过创建键包装实例提供自己的 equals/hashCode 实现。

在后一种情况下,需要为每个键创建另一个对象,这对内存和性能有明显的影响。(在我目前看到的情况下,这意味着在高峰时间每秒创建数十万个额外的对象实例 - 这是性能最重要的地方。)

这看起来是一个微不足道且安全的更改,在需要的情况下具有巨大的性能优势。

.Net至少从 1.1 版本Dictionary开始就提供了这个功能。那么 Java 不这样做有什么好的技术原因吗?

java hashmap concurrenthashmap

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

如果我想在IIS中执行REST,我现在应该去WCF Web Api吗?

我需要创建一个在IIS上运行并使用WCF Web Api播放的REST API.它似乎能够做我想要的一切,与普通的WCF现已弃用的WCF入门套件形成鲜明对比.我还没有真正尝试过这些,但是conneg似乎很难或者不可能,这是一个交易破坏者,因为conneg是HTTP的许多正常设计的功能之一,因此,REST-on-HTTP,我打算完全利用我的优势.

问题:目前只有一个"预览4"版本(2011年4月),当MS期望发布它时,我找不到多少(除了今年或明年的印象) - 我应该使用它已经

特别是因为源代码就在那里,我可以 - 最坏的情况 - 进入并自己修改和构建,使用经过良好测试的预览版本进行生产几乎是安全的.

更多细节:我想在本周开始创建原型,REST API将在几个月(今年)内停留在生产机器上.我希望API仍然可以改变一点,并且检查codeplex上的活动似乎正在积极开发中,但我可以将代码与这些更改一起更改.

iis rest wcf wcf-web-api

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

从 jar-with-dependencies 构建的 jar 中排除文件

我的pom.xml包含以下内容来创建具有所有依赖项的项目的 jar。
现在我有一个src/main/resources运行应用程序所必需的属性文件(我想从 IDE 开始使用它),但我不想将其发送到创建的 jar 文件中,因为设置是单独维护的。

问题:如何获取包含所有依赖项的文件,但排除这些属性文件?

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <id>make-jar</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>x.Main</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

java maven maven-assembly-plugin

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

使(映射f c1 c2)映射(计数c1)次,即使c2具有较少的元素

做的时候

(map f [0 1 2] [:0 :1])
Run Code Online (Sandbox Code Playgroud)

f 将被调用两次,参数为

  • 0:0
  • 1:1

是否有一种简单而有效的方法,即不产生更多的中间序列等,以便f使用以下参数为第一个集合的每个值调用?

  • 0:0
  • 1:1
  • 2零

在评论中编辑 @ fl00r的地址问题.

(count first-coll)无论第二个(或第三个或......)集合是否更长,触发此问题的实际用例都需要map始终正好工作.

现在游戏有点晚了,在接受了答案之后有些不公平,但是如果添加一个好的答案,只做了我特别要求的 - 映射(count first-coll)时间 - 我会接受.

clojure

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

从swap和vswap等函数中返回一些东西

通常我有一个包含深度嵌套结构的volatile或atom,如下所示:

{ :deeply { :nested { ... } } }
Run Code Online (Sandbox Code Playgroud)

swap!返回完整,更新的结构.但相反,我有时会想要返回其他信息(比如一种"差异",其中包含我所改变的信息,特别是在我改变多项内容的情况下).

我想到的一件事是为此定义另一个volatile变量,并存储我想从swap!volatile变量中返回的信息以供以后使用.

这当然会奏效,但我想知道是否有一些我不知道的更具惯用性和功能性的东西.

另一种功能性的方式是将深层结构的布局改为类似的

{:state { :deeply { :nested { ... } } } :diff nil }
Run Code Online (Sandbox Code Playgroud)

我把深层结构放入:state条目,最近的差异进入:diff条目.

人们正在使用哪些我不相称的东西?

clojure

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

如何缩小 pulsar BookKeeper 集群

问题

一个月前,我向 pulsar 添加了 2 个 bookie,但我意识到这是浪费资源。我怎样才能将博彩公司从 7 个减少到 3 个。

我的努力

通过 bookkeeper 的文档,我发现当 bookie 崩溃时,自动恢复会将 BookKeeper 集群中的所有分类帐恢复为完全复制。但如果我一次合上四本书,我想有些账本可能会永远丢失。

bookkeeper-server/bin/bookkeeper shell recover \
zk1.example.com:2181 \ # IP and port for ZooKeeper
192.168.1.10:3181      # IP and port for the failed bookie
Run Code Online (Sandbox Code Playgroud)

所以我想我可以一一关闭它,但是我怎么知道恢复是否完成呢?

apache-pulsar

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

OpenRasta:Uri似乎与处理程序选择无关

当为相同类型注册两个处理程序但具有不同的URI时,处理程序选择算法似乎在确定要使用哪个处理程序时检查uri.

如果你运行下面的程序,你会发现只会调用HandlerOne(两次).如果我调用"/ one"或"/ two"并不重要,后者应该由HandlerTwo处理.

我做错了什么还是要在OpenRasta中解决这个问题?(我用的是2.0.3.0 btw)

class Program
{
    static void Main(string[] args)
    {
        using (InMemoryHost host = new InMemoryHost(new Configuration()))
        {
            host.ProcessRequest(new InMemoryRequest
            {
                HttpMethod = "GET",
                Uri = new Uri("http://x/one")
            });
            host.ProcessRequest(new InMemoryRequest
            {
                HttpMethod = "GET",
                Uri = new Uri("http://x/two")
            });
        }
    }
}
class Configuration : IConfigurationSource
{
    public void Configure()
    {
        using (OpenRastaConfiguration.Manual)
        {
            ResourceSpace.Has.ResourcesOfType(typeof(object))
                .AtUri("/one").HandledBy(typeof(HandlerOne));
            ResourceSpace.Has.ResourcesOfType(typeof(object))
                .AtUri("/two").HandledBy(typeof(HandlerTwo));
        }
    }
}
class HandlerOne
{
    public object Get() { return "returned from HandlerOne.Get"; }
}
class …
Run Code Online (Sandbox Code Playgroud)

openrasta

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

C++迭代器难题

以下程序的输出是

1: foo strlen: 3
2:  strlen: 0
3: foo strlen: 3
4: foo strlen: 3
5:  strlen: 0
6:  strlen: 0
Run Code Online (Sandbox Code Playgroud)

我不明白

  • 为什么1打印字符串,但2不打印
  • 三个循环之间的区别是什么

来源:

#include "stdafx.h"
#include <map>
#include <string>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    map<string, string> m;
    m["foo"] = "bar";

    const char * s;

    for(map<string, string>::iterator it = m.begin(); it != m.end(); it++)
    {
        pair<string, string> kvPair = *it;
        s = kvPair.first.c_str();
        printf("1: %s strlen: %d\n", s, strlen(s));
        break; …
Run Code Online (Sandbox Code Playgroud)

c++ iterator

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

等待原子更改超时

有没有办法做一些(Thread/sleep millis my-atom)如果my-atom在millis之前被改变就会醒来的事情?

或者我必须clojure.core.async使用频道代替手表?

clojure

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