我想提供正确的下载版本.我的版本是:
使用User Agent字段检测Linux很容易; 但是有可能可靠地判断Windows是32位还是64位?
用户可能正在使用奇怪的浏览器 - IE和Firefox很常见,我们可能在某处有Opera用户; 也许是Chrome用户.我知道64位Windows 7附带32位和64位版本的IE,我想将它们发送到我下载的64位版本.
(编辑补充:我知道我应该提供所有选项,我会.但是人们不会阅读选项.所以我希望默认提供正确的下载,以提高可用性.当然,虽然这很有帮助如果我做对了,如果我弄错的话,这是非常无益的.从目前为止的答案来看,这看起来并不是一种可行的方法.
我有以下代码:
var str = "0x4000000000000000"; //4611686018427387904 decimal
var val = parseInt(str);
alert(val);
Run Code Online (Sandbox Code Playgroud)
我得到这个值:" 4611686018427388000",这是0x4000000000000060
我想知道JavaScript是否错误处理64位整数还是我做错了什么?
可能重复:
Visual Studio"任何CPU"目标
我注意到在VS中编译C#代码时,通常有编译32/64位系统的选项,还有一个用于编译任何cpu的选项.
这两个选项有什么区别?选择任何CPU只能编译为中间字节代码,而第一个选项编译为机器代码(这听起来不太可能)?或者是其他东西?
在我们的生产机器上运行一个简单的Java程序,我注意到这个程序占用了更多的10G virt.我知道虚拟内存不是那么相关,但至少我想了解为什么需要它.
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
try {
Thread.sleep(10000);
} catch(InterruptedException e) {
/* ignored */
}
}
}
Run Code Online (Sandbox Code Playgroud)
top当我运行那个小程序时,这是什么意思:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18764 myuser 20 0 10.2g 20m 8128 S 1.7 0.1 0:00.05 java
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?
uname -a说:
Linux m4fxhpsrm1dg 2.6.32-358.18.1.el6.x86_64 #1 SMP Fri Aug 2 17:04:38 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
在较旧的32bit-linux机器上,同一程序仅消耗大约1G的virt.旧机器有4GB RAM,新机器有32GB.
如何判断我的应用程序(在Visual Studio 2008中作为任何CPU编译)是作为32位还是64位应用程序运行?
如何在我的系统上安装SciPy?
对于NumPy部分(SciPy依赖),实际上有64位Windows的安装程序:numpy-1.3.0.win-amd64-py2.6.msi(直接下载URL,2310144字节).
运行SciPy superpack安装程序会在对话框中显示以下消息:
无法安装.需要Python 2.6版,这在注册表中找不到.
我已经安装了Python 2.6.2(并在其中安装了一个有效的Django),但我不知道任何注册表故事.
注册表项似乎已经存在:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Python]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Help]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Help\Main Python Documentation]
@="D:\\Python262\\Doc\\python262.chm"
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath]
@="D:\\Python262\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\InstallPath\InstallGroup]
@="Python 2.6"
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\Modules]
[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.6\PythonPath]
@="D:\\Python262\\Lib;D:\\Python262\\DLLs;D:\\Python262\\Lib\\lib-tk"
Run Code Online (Sandbox Code Playgroud)
到目前为止我做了什么:
步骤1
下载NumPy superpack安装程序numpy-1.3.0rc2-win32-superpack-python2.6.exe(直接下载URL,4782592字节).运行此安装程序会产生相同的消息,"无法安装.需要Python版本2.6,这在注册表中找不到.". 更新:实际上NumPy的安装程序有效 - 请参阅问题的开头.
第2步
试图以另一种方式安装NumPy.下载了zip包numpy-1.3.0rc2.zip(直接下载URL,2404011字节),以正常方式将zip文件解压缩到临时目录,D:\ temp7 \numpy-1.3.0rc2(其中setup.py和README) .txt是).然后我打开了一个命令行窗口,然后:
d:
cd D:\temp7\numpy-1.3.0rc2
setup.py install
Run Code Online (Sandbox Code Playgroud)
这运行了很长时间,还包括使用cl.exe(Visual Studio的一部分).这是一个近5000行长的 成绩单(230 KB).
这似乎有效.我现在可以用Python做到这一点:
import numpy as np
np.random.random(10)
Run Code Online (Sandbox Code Playgroud)
结果如下:
array([ 0.35667511, 0.56099423, 0.38423629, 0.09733172, 0.81560421,
0.18813222, 0.10566666, 0.84968066, 0.79472597, 0.30997724])
Run Code Online (Sandbox Code Playgroud)
第3步
下载了SciPy superpack安装程序,scipy-0.7.1rc3- win32-superpack-python2.6.exe(直接下载URL,45597175字节).运行此安装程序会导致在开头列出消息
第4步 …
我知道在visual studio 2010中没有64位版本.vs2012有64位版本吗?
信不信由你,我的安装程序太旧了,它没有选择检测64位版本的Windows.
是否有Windows DLL调用或(甚至更好)一个环境变量,可以为Windows XP和Windows Vista提供该信息?
一种可能的解决方
我看到维基百科声称64位版本的Windows XP和Windows Vista都有一个独特的环境变量:%ProgramW6432%所以我猜测在32位Windows上它是空的.
此变量指向Program Files目录,该目录存储Windows和其他所有已安装的程序.英语系统的默认设置是C:\Program Files.在64位版本的Windows(XP,2003,Vista)中,还有%ProgramFiles(x86)%默认值C:\Program Files (x86)和%ProgramW6432%默认值C:\Program Files.在%ProgramFiles%本身取决于请求该环境变量中的进程是否为本身的32位或64位(这是由Windows的上-Windows 64位重定向引起的).
我真的需要帮助,因为我失去了纠正问题的希望.
我正在使用Office Communications Server 64位库.我在项目中使用了3个dll,Microsoft.Rtc.Collaboration.dll,Microsoft.Rtc.Internal.Media.dll和SIPEPS.dll.我不确定Microsoft.Rtc.Collaboration,但Internal.Media和SIPEPS都是x64.在GAC程序集列表中,Rtc.Collaboration显示处理器Arhitecture下的MSIL,其他显示AMD64.
我的项目编译没有错误与这些引用,但在运行时我收到错误:
无法加载文件或程序集"Microsoft.Rtc.Internal.Media"或其依赖项之一.尝试加载格式不正确的程序.
我尝试使用CPU设置为任何CPU来编译项目,但没有任何变化.在x64和x86设置下,我收到此错误.
任何帮助表示赞赏.
更新:下面是程序集绑定日志.
=== Pre-bind state information ===
LOG: User = CONTOSO\elodie
LOG: DisplayName = Microsoft.Rtc.Internal.Media
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Microsoft.Rtc.Internal.Media | Domain ID: 9
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the …Run Code Online (Sandbox Code Playgroud) 我正在研究memcache协议的实现,在某些点上,它使用64位整数值.这些值必须以"网络字节顺序"存储.
我希望有一些uint64_t htonll(uint64_t value)功能可以进行更改,但不幸的是,如果它存在,我找不到它.
所以我有1或2个问题:
我想到了一个基本的实现,但我不知道如何在编译时检查字节序以使代码可移植.所以你的帮助非常受欢迎;)
谢谢.
这是我写的最终解决方案,感谢Brian的解决方案.
uint64_t htonll(uint64_t value)
{
// The answer is 42
static const int num = 42;
// Check the endianness
if (*reinterpret_cast<const char*>(&num) == num)
{
const uint32_t high_part = htonl(static_cast<uint32_t>(value >> 32));
const uint32_t low_part = htonl(static_cast<uint32_t>(value & 0xFFFFFFFFLL));
return (static_cast<uint64_t>(low_part) << 32) | high_part;
} else
{
return value;
}
}
Run Code Online (Sandbox Code Playgroud) 64-bit ×10
javascript ×2
windows ×2
.net ×1
32-bit ×1
32bit-64bit ×1
anycpu ×1
assemblies ×1
batch-file ×1
c# ×1
c++ ×1
endianness ×1
htonl ×1
integer ×1
java ×1
jvm ×1
numbers ×1
numpy ×1
portability ×1
python ×1
scipy ×1
user-agent ×1