这不是一个真正的问题,因为我已经找到了答案,但仍然很有趣.
我一直认为哈希表是最快的关联容器,如果你正确散列.
但是,以下代码非常慢.它只执行大约100万次迭代,并且在Core 2 CPU上花费的时间超过2分钟.
代码执行以下操作:它维护todo需要处理的项目集合.在每次迭代中,它从该集合中获取一个项目(无关紧要哪个项目),删除它,如果未处理则处理它(可能添加更多项目进行处理),并重复此项直到没有要处理的项目.
罪魁祸首似乎是Dictionary.Keys.First()操作.
问题是为什么它变慢?
Stopwatch watch = new Stopwatch();
watch.Start();
HashSet<int> processed = new HashSet<int>();
Dictionary<int, int> todo = new Dictionary<int, int>();
todo.Add(1, 1);
int iterations = 0;
int limit = 500000;
while (todo.Count > 0)
{
iterations++;
var key = todo.Keys.First();
var value = todo[key];
todo.Remove(key);
if (!processed.Contains(key))
{
processed.Add(key);
// process item here
if (key < limit) { todo[key + 13] = value + 1; todo[key + 7] = value + 1; …Run Code Online (Sandbox Code Playgroud) 我想通过动画来模拟以下内容:
一个球在
垂直圆形环的最底部点以一定的速度开始并在其中保持滚动直到其速度允许.
为此,我想找到速度/ x/y与时间方程.
例如,如果球的质量:5Kg,圆环的半径= 10m,
球的初始速度是200m/s,它的速度和(x,y)位置
在5秒后是什么?
谢谢.
假设我们有一个带有一个子视图的视图控制器.子视图占据屏幕中心,四周边距为100 px.然后我们在子视图中添加一些小东西来点击.我们只使用子视图来利用新帧(子视图中的x = 0,y = 0实际上是父视图中的100,100).
然后,假设我们在子视图后面有一些东西,比如菜单.我希望用户能够在子视图中选择任何"小东西",但如果没有任何东西,我希望触摸通过它(因为背景是清晰的)到它后面的按钮.
我怎样才能做到这一点?它看起来像touchesBegan,但按钮不起作用.
我知道在客户端上不可能用来自其他域的内容填充DIV.但是,我已经使用了Google Feeds代码,它将其他域中的信息提取到DIV(无iframe),而无需借助服务器端代码,因此我假设它是可行的.谢谢.
假设我有一个名为CustomerId的列的表.该表的实例示例如下:
CustomerId
14
12
11
204
14
204
Run Code Online (Sandbox Code Playgroud)
我想写一个计算客户ID出现次数的查询.最后,我希望得到这样的结果:
CustomerId NumberOfOccurences
14 2
12 1
11 1
204 2
14 1
Run Code Online (Sandbox Code Playgroud)
我想不出办法做到这一点.
在我的Grails应用程序中,我有几个简单的安全过滤器(请注意它只是一个原型,而不是商业应用程序:
securityCheckFilter(controller:'overview', invert:true) {
before = {
if(!session?.gaSession?.gaUser) {
flash.message = "You are not authorised to see this page. Please login."
redirect(controller:'overview',action:'login')
return false
}
return true
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着,除了处理登录/注册的控制器"概述"之外,所有其他控制器都需要身份验证.问题是我想实现这个典型的流程:
(1)用户尝试保护url (2)重定向登录(3)成功登录(4)重定向到url
在我的代码中它一直工作到第3点,但我错过了4.
任何提示?
尝试在XSLT中实现C#扩展函数时收到以下错误.
不支持具有CLR类型"Char []"的扩展函数参数或返回值.**
码:
<xsl:variable name="stringList">
<xsl:value-of select="extension:GetList('AAA BBB CCC', ' ')"/>
</xsl:variable>
<msxsl:script language="C#" implements-prefix="extension">
<![CDATA[
public string[] GetList(string str, char[] delimiter)
{
...
...
return str.Split(delimiter, StringSplitOptions.None);
}
]]>
</msxsl:script>
Run Code Online (Sandbox Code Playgroud)
有人可以解释这个错误信息以及如何通过它吗?
编辑:我需要一个解决方案仍然允许我实现拆分功能并使用返回的数组.
谢谢!
我的问题类似于这个如何跳过ActiveRecord回调?但是我使用Mongoid而不是AR,似乎在当前版本的Mongoid中尚未实现,所以我想知道应该是一个优雅的解决方案来实现它.(如有必要).
我非常喜欢Microsofts最新的语音识别(和SpeechSynthesis)产品.
http://msdn.microsoft.com/en-us/library/ms554855.aspx
http://estellasays.blogspot.com/2009/04/speech-recognition-in-cnet.html
但是我觉得在使用语法时我有点受限.
不要误解我的语法,语法识别确切地指出了要注意的单词/短语,但是如果我希望它能够识别出一些我没有理解的东西呢?或者我想解析一个半预定命令名和半随机字的短语?
例如..
情景A - 我说"谷歌[漏油事件]",我希望它用括号中的搜索结果打开谷歌,这可能是任何东西.
场景B - 我说"找到[曼彻斯特]",我想让它在谷歌地图或任何其他未预先确定的地方搜索曼彻斯特
我希望它知道'谷歌'和'定位'是命令,它是参数之后的东西(可能是任何东西).
问题:有没有人知道如何混合使用预先确定的语法(语音识别应该识别的单词)和不在预定语法中的单词?
代码片段..
using System.Speech.Recognition;
...
...
SpeechRecognizer rec = new SpeechRecognizer();
rec.SpeechRecognized += rec_SpeechRecognized;
var c = new Choices();
c.Add("search");
var gb = new GrammarBuilder(c);
var g = new Grammar(gb);
rec.LoadGrammar(g);
rec.Enabled = true;
...
...
void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Text == "search")
{
string query = "How can I get a word not defined in Grammar recognised and passed into here!";
launchGoogle(query);
} …Run Code Online (Sandbox Code Playgroud)