我试图做一个"展开" - (我认为),从一个初始值开始,重复应用一些函数,然后得到一个序列作为结果.
在这个例子中,我试图从1.0开始,将它乘以.80,并做4次,这样我最终得到一个数组= [| 1.0; 0.80; 0.64; 0.512 |]
VS 2010说我以无效的方式使用"i",并且闭包不能捕获可变值 - 所以这个函数不能编译.任何人都可以建议一个真正有效的干净方法吗?谢谢.
let expSeries seed fade n =
//take see and repeatedly multiply it by the fade factor n times...
let mutable i = 0;
let mutable weight = seed;
[| while(i < n) do
yield weight;
weight <- weight * fade |]
let testWeights = expSeries 1.0 0.80 4
Run Code Online (Sandbox Code Playgroud) 我的问题是,我似乎只能点击按钮一次,如果我多次点击它就像它已经死了.什么都不做.因此,如果我将文本设置为"Works",则单击它.为什么当我点击多次时它不会在值之间保持交替?
我有以下C#代码(我知道我使用了太多的命名空间,但请忽略它);
using System;
using System.Collections.Generic;
using System.Data;
using System.Web.Security;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "Click to test";
}
protected void Click(object sender, EventArgs e)
{
if (Label1.Text == "Works")
{
Label1.Text = "Try again";
}
else
{
Label1.Text = "Works";
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是ASPX代码;
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML …Run Code Online (Sandbox Code Playgroud) 在Java中,使用" 非法 "(如在IllegalArgumentException)与" 无效 "(如在javax.activity.InvalidActivityException)之间是否存在语义差异?
在赋值过程中,编写一个子类IllegalArgumentException来表示一系列无法标记的输入字符变得很有用,我想知道约定是否要使用InvalidTokenException或IllegalTokenException.
到目前为止,我能找到的唯一区别是,java.lang似乎更喜欢"非法",而javax.*更喜欢"无效".但是,还有java.security.InvalidParameterException一个子类IllegalArgumentException.
假设我有两个UUID实例:
uuid1 = UUID.randomUUID();
uuid2 = UUID.randomUUID();
Run Code Online (Sandbox Code Playgroud)
如果那两个比较uuid1小于uuid2ie,
uuid1.compareTo(uuid2) // -1
Run Code Online (Sandbox Code Playgroud)
他们的字符串表示是否总是比较以给出相同的结果,即,
uuid1.toString().compareTo(uuid2.toString()) // -1 ????
Run Code Online (Sandbox Code Playgroud) 从Eclipse插件中,我想运行一个Ant构建脚本。我还想通过在Eclipse控制台中显示它来向用户显示Ant输出。最后,我还想等待Ant构建完成,并捕获结果:构建成功还是失败?
我发现了三种从Eclipse运行Ant脚本的方法:
org.eclipse.ant.core.AntRunner,调用一些设置器,然后调用run()或run(IProgressMonitor)。结果要么是正常终止(表示成功),要么是CoreException IStatus包含BuildException(表示失败),否则是其他问题。但是,我在任何地方都看不到Ant输出。org.eclipse.ant.core.AntRunnerand调用run(Object),并传递一个String[]包含命令行参数的。结果是正常终止(指示成功)或InvocationTargetException(指示失败),否则其他地方出了问题。看来,Ant输出被发送到Eclipse的stdout了。在Eclipse本身中不可见。DebugPlugin.getDefault().getLaunchManager(),然后调用getLaunchConfigurationType(IAntLaunchConfigurationConstants.ID_ANT_BUILDER_LAUNCH_CONFIGURATION_TYPE),然后在set属性上将"org.eclipse.ui.externaltools.ATTR_LOCATION"构建文件名(属性设置DebugPlugin.ATTR_CAPTURE_OUTPUT为true),最后调用launch()。Ant输出显示在Eclipse控制台中,但是我不知道如何在我的代码中捕获构建结果(成功/失败)。或如何等待发射终止。有什么办法可以同时获得控制台输出和捕获结果?
为什么在JQuery中,组合框添加方法似乎不像传统的html组合框那样被识别:
http://viralpatel.net/blogs/demo/dynamic-combobox-listbox-dropdown-in-javascript.html
$.fn.equalHeight = function () {
var height = 0,
reset = $.browser.msie ? "1%" : "auto";
return this.css("height", reset).each(function () {
height = Math.max(height, this.offsetHeight);
}).css("height", height).each(function () {
var h = this.offsetHeight;
if (h > height) {
$(this).css("height", height - (h - height));
}
});
};
Run Code Online (Sandbox Code Playgroud)
..在Firefox中运行良好,甚至是糟糕的IE6,但不适用于Webkit(Safari,Chrome).我如何解决它?
非常感谢
当两个连接想要更新同一记录时,如何防止MySQL数据库中的竞争条件?
例如,连接1想要增加"尝试"计数器.而第二个连接想要做同样的事情.两个连接SELECT"尝试"计数,增加值,并且两次UPDATE"尝试"增加值.突然"尝试"只是"尝试+ 1"而不是"尝试+ 2",因为两个连接都获得相同的"尝试"并将其递增1.
如何解决这个问题呢?
让我简单介绍一下三色GC(如果有人读到它,从未听说过它); 如果你不在乎,跳过它并跳转到问题.
在三色GC中,物体具有三种可能的颜色中的一种; 白色,灰色和黑色.三色GC可描述如下:
所有物体最初都是白色的.
由于全局变量或堆栈变量引用它("根对象"),所有可到达的对象都是灰色的.
我们采用任何灰色物体,找到它对白色物体的所有参考,并将这些白色物体着色为灰色.然后我们将对象本身涂成黑色.
只要我们有灰色物体,我们就在第3步继续.
如果我们不再有灰色物体,则所有剩余的物体都是白色或黑色.
所有黑色物体都被证明是可以到达的,必须保持活力.所有白色对象都无法访问,可以删除.
到目前为止,这并不是太复杂......至少如果GC是StW(停止世界),这意味着它会在收集垃圾时暂停所有线程.如果它是并发的,则三色GC具有必须始终保持为真的不变量:
黑色物体不得指白色物体!
这对于StW GC自动成立,因为之前已经检查过每个黑色的物体,并且它指向的所有白色物体都是灰色的,因此黑色物体可能仅指其他黑色物体或灰色物体.
如果线程没有暂停,线程可以执行会破坏此不变量的代码.有几种方法可以防止这种情况:
捕获对指针的所有读取访问权限,并查看是否对白色对象进行了读取访问.如果是,立即将对象的颜色变为灰色.如果现在将对此对象的引用分配给黑色对象,则无关紧要,该对象不再是灰色而不是白色(此实现使用读取屏障)
捕获对指针的所有写访问权,并查看指定的对象是否为白色,并且指定的对象是否为黑色.如果是这样,请将白色物体着色为灰色.这是更明显的做事方式,但也需要更多的处理时间(此实现使用写屏障)
由于读取访问比写入访问更常见,即使第二种可能性涉及更多的处理时间,当屏障被击中时,它被称为不那么频繁而且是受欢迎的.像这样工作的GC称为"增量更新GC".
这两种技术都有其他选择,称为SatB(起点时的快照).考虑到在任何时候都没有必要坚持不变量这一事实,这种变化略有不同,因为只要GC知道这个白色物体曾经是黑色物体是否引用白色物体并不重要并且在当前GC循环期间仍然可以访问(或者因为仍然有灰色对象引用此白色对象,或者因为此白色对象的引用被放置到GC运行时也考虑的显式堆栈上用灰色物体).SatB收藏家在实践中更常使用,因为它们有一些优点,但恕我直言,它们更难实施.
我在这里指的是增量更新GC,它使用变量2:每当代码试图使黑色物体指向白色物体时,它立即将物体灰色着色.这样,在收集周期中不会错过这个对象.
关于三色GC的问题非常多.但有一点我不了解三色GC.假设我们有一个对象A,它由栈引用,它本身引用一个对象B.
stack -> A.ref -> B
Run Code Online (Sandbox Code Playgroud)
现在GC启动一个循环,停止线程,扫描堆栈并将A视为可直接访问,着色为灰色.一旦完成扫描整个堆栈,它再次取消线程并在步骤(3)开始处理.在它开始执行任何操作之前,它被抢占(可能发生)并且线程再次运行并执行以下代码:
localRef = A.ref; // localRef points to B
A.ref = NULL; // Now only the stack points to B
sleep(10000); // Sleep for the whole GC cycle
Run Code Online (Sandbox Code Playgroud)
由于没有违反不变量,B是白色的,但是没有被分配给黑色物体,B的颜色没有变化,它仍然是白色的.A不再引用B,因此在处理"灰色"A时,B不会改变其颜色,A将变为黑色.在周期结束时,B仍然是白色的,看起来像垃圾.但是,localRef指的是B,因此它不是垃圾.
我是对的,三色GC必须扫描每个线程的堆栈两次吗?一旦开始,识别根对象(变为灰色)并在删除白色对象之前再次识别,因为堆栈可能会引用这些对象,即使没有其他对象再引用它们.到目前为止,我没有看到过关于扫描堆栈两次的任何关于算法的描述.他们都只是说,当使用并发时,重要的是始终强制执行不变量,否则会丢失可达对象.但据我所知,这还不够.必须将堆栈视为单个大对象,并且一旦扫描,"堆栈为黑色",堆栈的每次ref更新都必须使对象变为灰色.
如果确实如此,使用增量更新可能比我最初想象的更棘手,并且有一些性能缺陷,因为堆栈更改是最常见的.
我正在学习JSON,但我发现你可以将所谓的"哈希"放入JSON中吗?我在哪里可以找到哈希是什么?或者你能告诉我哈希是什么?另外,什么是hashmap?我有C++和C#的经验,我正在学习JS,Jquery和JSON.