小编voi*_*hos的帖子

为什么0乘以截断小数?

我最近发现了这段JavaScript代码:

Math.random() * 0x1000000 << 0
Run Code Online (Sandbox Code Playgroud)

我知道第一部分只是生成0到0x1000000(== 16777216)之间的随机数.

但第二部分似乎很奇怪.执行0位移位有什么意义?我不认为它会做任何事情.然而,经过进一步调查,我注意到0的偏移似乎截断了数字的小数部分.此外,无论是右移,左移,还是无符号右移,都无关紧要.

> 10.12345 << 0
10
> 10.12345 >> 0
10
> 10.12345 >>> 0
10
Run Code Online (Sandbox Code Playgroud)

我用Firefox和Chrome测试过,行为是一样的.那么,这个观察的原因是什么?它只是JavaScript的细微差别,还是也出现在其他语言中?我以为我理解了位移,但这令我感到困惑.

javascript numbers operators bit-shift bitwise-operators

20
推荐指数
3
解决办法
5713
查看次数

HTTP GET和POST语义和限制

本周早些时候,我不得不做一些感觉违反语义的事情.让我解释.

我正在制作一个简单的AJAX客户端应用程序,它向具有给定数量参数的服务发出请求.由于整个应用程序基本上是只读的,我认为使用HTTP GET是可行的方法.我必须传递的一些参数很简单(例如排序顺序或页码).

但是,其中一个必需的参数可能是可变长度的,这让我很担心.由于我编写了GET请求的查询字符串中的所有参数,因此在我看来,这为请求URL设置了(大约)2000个字符的不必要的上限.无论如何,我不喜欢看到500个字符长的请求URL.

因此,由于POST请求没有这样的限制,我决定切换.但这感觉不对.我的印象是POST表示数据的修改 - 但我将它用于简单的只读请求.

有一个更好的方法吗?要执行GET,有多个参数?我听说过一种方法 - 你自己对参数进行初步POST ,然后执行GET.但是,这种技术还有很多不足之处.

但是从这个具体案例来看,HTTP请求方法的真正语义和局限是什么?为什么GET不支持任何类型的参数有效载荷?使用URL中的查询字符串对我来说几乎感觉像是一个黑客.

http http-get http-post

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

"document.formName"未定义?

我有一个使用IIS Express在我的XP系统上本地运行的ASP.NET站点.在Windows服务器上运行该站点的实时版本.

在网页中,Javascript通常会使用样式在页面上引用表单document.formName,其中formName是表单的名称.据我所知,这是一个跨浏览器的方法,随着document.forms.formNamedocument.forms[0]等等.

在我的本地开发站点上,引用document.frm1(我知道,错误的命名实践)错误; 它是未定义的.另一方面,document.forms.frm1工作正常.奇怪的是,这不会发生在服务器上,尽管两个页面都是相同的代码.我用Firebug和IE8和Firefox 6进行了双重检查.

另一个奇怪的部分:使用Firebug进行检查,document.frm1未定义,但document.frmClose(另一种形式)存在!咦?

以前有人经历过吗?

javascript asp.net

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

关于封装的Code Complete的C++建议?

在Code Complete中的"Good Encapsulation"部分中,建议隐藏私有实现细节.C++中给出了一个例子.这个想法基本上是将接口与实现完全分开,即使在类级别也是如此.

class Employee {
public:
    ...
    Employee( ... );
    ...

    FullName GetName() const;
    String GetAddress() const;

private:
    EmployeeImplementation *m_implementation;
};
Run Code Online (Sandbox Code Playgroud)

这真的很好用吗?这不仅效率低下(这会带来什么样的性能损失?),但Code Complete("管理复杂性")的整个座右铭似乎已经被逆转 - 这不会增加复杂性吗?

c++ pimpl-idiom access-specifier code-complete

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

如何在Lua中汇总一个数字表?

Lua有内置sum()功能吗?我似乎无法找到一个,我几乎无处不在文档中.或许table.sum(),或类似的东西,遵循当前的约定.但由于我找不到它,我必须实现它:

function sum(t)
    local sum = 0
    for k,v in pairs(t) do
        sum = sum + v
    end

    return sum
end
Run Code Online (Sandbox Code Playgroud)

但是,实现这么简单的事情似乎很有趣.是否存在内置函数?

lua sum built-in

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

在对表执行操作之前检查表是否存在?

在搜索这个问题的答案时,我在StackOverflow上找到了这篇热门帖子.不幸的是,它并没有完全奏效.问题是:

有没有办法执行修改(例如INSERT)之前检查表(或另一个对象)的存在?前面提到的帖子暗示:

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'dbo' 
                 AND  TABLE_NAME = 'questionableTable'))
BEGIN
    INSERT INTO dbo.questionableTable VALUES ('success!');
END
Run Code Online (Sandbox Code Playgroud)

错误: Invalid object name 'dbo.questionableTable'.

这个问题是SQL Server在解析INSERT语句时失败,说明它dbo.questionableTable不存在.以前的INFORMATION_SCHEMA检查似乎不会影响它.

有没有办法写这种查询?特别是对于SQL Server.但是,如果存在这样的事情,我还希望看到其他数据库系统的类似操作.

这个问题背后的动机是因为我们有多个数据库,其中包含彼此表的子集.我想要的是有一个可以应用于所有数据库的脚本,并且只修改了那里存在的表(并且在执行时不会出错).

sql t-sql sql-server

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

如何在 Windows 上为 Mercurial 指定不同的编辑器?

每当 HG 需要提示提交消息或其他任何内容时,它都会打开记事本。这很烦人。我安装了Vim7.3,并尝试将EDITOR环境变量设置为指向gvim,但无济于事。

我正在使用 PowerShell,但我尝试在 PowerShell 和 cmd 中进行测试。他们都坚持使用记事本。

windows mercurial editor environment-variables

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

如何对Vim中的所有搜索结果执行命令?

理想情况下,它是以下变体:

:/somesearchstring/ norm! dd
Run Code Online (Sandbox Code Playgroud)

以上搜索字符串并执行正常模式命令(在这种情况下,删除该行).问题是,这只会在第一次出现搜索时执行命令.如何对搜索结果执行任意命令

vim

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

python while循环和for循环

1523到10503之间的奇数之和是多少?提示:写一个while循环来累积总和并打印它.然后复制并粘贴该总和.为了最大限度地学习,使用范围也可以使用for循环.

我尝试了什么.我需要将总和打印出来.我的答案给了我个人跑步.

i=1523
while i<10503:
    sum=0
    i=i+2
    sum=sum+i
    print(sum)


for i in range(1523,10503):
    print(i+2)
Run Code Online (Sandbox Code Playgroud)

python for-loop while-loop

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

JavasScript事件处理最佳实践?

定义JavaScript调用时,如下所示:

<input type="button" onclick="someJavaScriptFunction" />
Run Code Online (Sandbox Code Playgroud)

写实际通话的最佳方式是什么?我见过很多方法:

javascript:someJavascriptFunction();
Run Code Online (Sandbox Code Playgroud)

要么

justSomeJavaScriptFunction();
Run Code Online (Sandbox Code Playgroud)

要么

withoutTheSemicolon()
Run Code Online (Sandbox Code Playgroud)

任何方法都有任何好处或警告吗?我意识到addEventListener在某些情况下使用更灵活.

javascript javascript-events

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