假设我创建了一个位图
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的内存使用,直到我的机器开始交换,它将无法清理.
我无法理解等深度直方图在查询优化中的作用.有人可以给我一些指向良好资源的指示或任何人都可以解释.我已经阅读了一些研究论文,但仍然无法说服我需要和使用等深度直方图.那么,有人可以用一个例子解释等深度直方图.
我们也可以合并直方图的桶,以便直方图变得足够小并且适合磁盘上的1页?
同等深度直方图中的桶边界是什么?
以下代码段
[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) ConcurrentHashMap并HashMap正在使用equals()/hashCode()关键实例。
几十年来,在很多情况下,我都错过了提供不同 equals/hashCode 实现的可能性。无法做到这一点意味着您要么必须使用排序映射,它允许您设置 a Comparator,但代价是 SortedMap 的性能特征较差,或者您必须使用不同的对象作为键,即通过创建键包装实例提供自己的 equals/hashCode 实现。
在后一种情况下,需要为每个键创建另一个对象,这对内存和性能有明显的影响。(在我目前看到的情况下,这意味着在高峰时间每秒创建数十万个额外的对象实例 - 这是性能最重要的地方。)
这看起来是一个微不足道且安全的更改,在需要的情况下具有巨大的性能优势。
.Net至少从 1.1 版本Dictionary开始就提供了这个功能。那么 Java 不这样做有什么好的技术原因吗?
我需要创建一个在IIS上运行并使用WCF Web Api播放的REST API.它似乎能够做我想要的一切,与普通的WCF或现已弃用的WCF入门套件形成鲜明对比.我还没有真正尝试过这些,但是conneg似乎很难或者不可能,这是一个交易破坏者,因为conneg是HTTP的许多正常设计的功能之一,因此,REST-on-HTTP,我打算完全利用我的优势.
问题:目前只有一个"预览4"版本(2011年4月),当MS期望发布它时,我找不到多少(除了今年或明年的印象) - 我应该使用它已经?
特别是因为源代码就在那里,我可以 - 最坏的情况 - 进入并自己修改和构建,使用经过良好测试的预览版本进行生产几乎是安全的.
更多细节:我想在本周开始创建原型,REST API将在几个月(今年)内停留在生产机器上.我希望API仍然可以改变一点,并且检查codeplex上的活动似乎正在积极开发中,但我可以将代码与这些更改一起更改.
我的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) 做的时候
(map f [0 1 2] [:0 :1])
Run Code Online (Sandbox Code Playgroud)
f 将被调用两次,参数为
是否有一种简单而有效的方法,即不产生更多的中间序列等,以便f使用以下参数为第一个集合的每个值调用?
在评论中编辑 @ fl00r的地址问题.
(count first-coll)无论第二个(或第三个或......)集合是否更长,触发此问题的实际用例都需要map始终正好工作.
现在游戏有点晚了,在接受了答案之后有些不公平,但是如果添加一个好的答案,只做了我特别要求的 - 映射(count first-coll)时间 - 我会接受.
通常我有一个包含深度嵌套结构的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条目.
人们正在使用哪些我不相称的东西?
一个月前,我向 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)
所以我想我可以一一关闭它,但是我怎么知道恢复是否完成呢?
当为相同类型注册两个处理程序但具有不同的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) 以下程序的输出是
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) 有没有办法做一些(Thread/sleep millis my-atom)如果my-atom在millis之前被改变就会醒来的事情?
或者我必须clojure.core.async使用频道代替手表?