我需要在a上绘制动态叠加层QImage.叠加的组成部分用XML定义,并解析QHash<QString, QPicture>为QString是名称的位置(例如"十字准线"),并且QPicture是独立于分辨率的绘图.然后,我在运行时确定的位置处绘制叠加的组件.
示例:我的QHash中有10张图片,构成了HUD中的每个可能元素.在特定的视频帧期间,我需要在图像的不同位置绘制其中的6个.在下一帧期间,某些事情发生了变化,现在我只需要绘制其中的4个,但其中2个位置已经改变.
现在我的问题是:如果我想快速完成这个,我应该重新定义我的QHash QHash<int, QPicture>并枚举键来抵消字符串比较造成的开销; 或者这些比较不会对绩效产生很大影响?我可以很容易地转换为整数键,因为XML解析器和叠加组合器是完全独立的类; 但我想在整个应用程序中使用一致的数据结构.
我是否应该克服我对一致性和可重用性的渴望,以提高性能?如果我这样做会非常重要吗?
有没有类似于Ncurses的C++库,但对于Windows?似乎没有Ncurses的端口,我需要一个非常好的显示系统.
有什么建议?跨平台是一个加号.
首先,对标题感到抱歉 - 我无法弄清楚那个短而清晰的标题.
这是问题:我有一个列表List<MyClass> list,我总是添加新创建的实例MyClass,如下所示:list.Add(new MyClass()).我不以任何其他方式添加元素.
但是,然后我遍历列表foreach并发现有一些空条目.也就是说,以下代码:
foreach (MyClass entry in list)
if (entry == null)
throw new Exception("null entry!");
Run Code Online (Sandbox Code Playgroud)
有时会抛出异常.我应该指出,这些list.Add(new MyClass())是从同时运行的不同线程执行的.我能想到的唯一考虑null条目的是并发访问.List<>毕竟,这不是线程安全的.虽然我仍然觉得奇怪的是它最终包含空条目,而不是在订购时不提供任何保证.
你能想到其他任何原因吗?
此外,我不关心添加项目的顺序,我不希望调用线程阻止等待添加其项目.如果同步确实是问题,你能推荐一种简单的方法来Add异步调用该方法,即创建一个委托,在我的线程继续运行其代码时处理它吗?我知道我可以创建一个代表Add并调用BeginInvoke它.这看起来合适吗?
谢谢.
编辑:一个基于凯文的建议的简单解决方案:
public class AsynchronousList<T> : List<T> {
private AddDelegate addDelegate;
public delegate void AddDelegate(T item);
public AsynchronousList() {
addDelegate = new AddDelegate(this.AddBlocking);
}
public void AddAsynchronous(T item) {
addDelegate.BeginInvoke(item, null, null);
}
private void …Run Code Online (Sandbox Code Playgroud) 我在PHP应用程序中使用了几个关联数组,我使用PHP文档来评论我的源代码.我从来没有真正为数组中的数组指定注释,但现在我需要这样做而不知道如何.
$array = array('id' => 'test', 'class' => 'tester', 'options' => array('option1' => 1, 'option2' => 2))
Run Code Online (Sandbox Code Playgroud)
如何以正确的方式@var和@param评论对此数组进行注释?我可以这样做,但我不知道这是否正确:
@param string $array['id']
@param string $array['class']
@param int $array['options']['option1']
Run Code Online (Sandbox Code Playgroud)
但是如何为这@var部分做到这一点?
我有一个python脚本,可以通过gconf将桌面壁纸正确设置为给定文件夹中的随机图片.
然后我在我的crontab中有以下条目
* * * * * python /home/bolster/bin/change-background.py
并且syslog正确报告执行情况
Apr 26 14:11:01 bolster-desktop CRON[9751]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:12:01 bolster-desktop CRON[9836]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:13:01 bolster-desktop CRON[9860]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:14:01 bolster-desktop CRON[9905]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:15:01 bolster-desktop CRON[9948]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:16:01 bolster-desktop CRON[9983]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Run Code Online (Sandbox Code Playgroud)
但没有任何桌面变化,任何想法?
我如何拥有一个带有FileField的表单,其中上传的文件将不会被保存,而是其文本内容将被提取和显示?
独立Java应用程序是否有"最佳"或更受欢迎的数据库?我目前正在手工编写,但我想知道通常做什么,如果有什么常见的事情.
更新:谈论小应用程序(可能会增长,但现在很小)
我正在使用.NET创建一个人工生命程序,我正在使用C#在Singleton中定义的伪随机类.我的想法是,如果我在整个应用程序中使用相同的随机数生成器,我只能保存种子,然后从种子重新加载以重新计算某个有趣的运行.
public sealed class RandomNumberGenerator : Random
{
private static readonly RandomNumberGenerator instance = new RandomNumberGenerator();
RandomNumberGenerator()
{
}
public static RandomNumberGenerator Instance
{
get
{
return instance;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还想要一个可以给我两个不同随机数的方法.
public static Tuple<int, int> TwoDifferentRandomNumbers(this Random rnd, int minValue, int maxValue)
{
if (minValue >= maxValue)
throw new ArgumentOutOfRangeException("maxValue", "maxValue must be greater than minValue");
if (minValue + 1 == maxValue)
return Tuple.Create<int, int>(minValue, maxValue);
int rnd1 = rnd.Next(minValue, maxValue);
int rnd2 = rnd.Next(minValue, maxValue);
while (rnd1 == …Run Code Online (Sandbox Code Playgroud) 我有一个.NET服务,它处理后台线程上的队列,并从队列中的项目以非常高的速率发送大量的小电子邮件(如果可能的话,每秒100条消息).目前,我使用,SmtpClient.Send()但我担心它可能会妨碍性能.
每次调用Send()都会经历一个完整的循环,打开套接字,执行SMTP会话(HELO,MAIL FROM,RCPT TO,DATA)并关闭套接字.在伪代码中:
for each message {
open socket
send HELO
send MAIL FROM
send RCPT TO
send DATA
send QUIT
close socket
}
Run Code Online (Sandbox Code Playgroud)
(编辑:这句话SmtpClient.Send()实际上是假的,正如我在答案中解释的那样.)
我认为以下伪代码将更加优化:
open socket
send HELO
for each message {
send MAIL FROM
send RCPT TO
send DATA
}
send QUIT
close socket
Run Code Online (Sandbox Code Playgroud)
我是否应该关注SmtpClient.Send()高速发送电子邮件时的表现?我有哪些优化性能的选择?