小编Nay*_*uki的帖子

有没有办法在32位计算机上执行64位程序?

只是一个简单的问题:有没有办法在32位机器上运行在64位Windows环境(使用mingw64)下编译的程序?我可以使用任何DLL或任何兼容层?

windows 64-bit 32-bit 32bit-64bit

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

"多个标记"是什么意思?

我试图以下列方式使用集合:

static Set<String> languages = new HashSet<String>();
languages.add("en");
languages.add("de");
Run Code Online (Sandbox Code Playgroud)

我收到Eclipse生成的以下错误消息:

> Multiple markers at this line
>   - Syntax error on token ""en"", delete this      token
>   - Syntax error on token(s), misplaced    construct(s)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我做错了什么.有人可以帮帮我吗?

java eclipse compiler-errors markers

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

证明这种语言是不可判定的

在下面的语言大号不可判定?

L = { M | M是图灵机描述,并且存在长度为k的输入x,使得M在最多k步之后停止}

我想是的但是我无法证明这一点.我试着想到减少停止问题.

turing-machines formal-languages

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

Thread.sleep()如何在内部工作

假设我有一个线程T并且它持有一个资源R.如果我在当前线程上调用Thread.sleep()即T,它会在进入睡眠之前释放资源R(让其他线程使用它) ?或者它将保留该资源,并且当它将唤醒它时将使用资源R并且在完成工作后它将释放它吗?

java concurrency multithreading

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

为什么我的Git存储库比工作目录大得多?

我刚刚创建了一个新的存储库并创建了初始提交.

工作目录为2 GB.但.git目录高达15 GB.

为什么只有一次提交的git存储库几乎是工作目录的8倍?

难道我做错了什么?有没有什么办法解决这一问题?

git

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

在Java和Python中实现XorShift相同

我想在Java,Python和JavaScript中实现XorShift PRNG.给定相同的种子,不同的实现必须生成完全相同的序列.到目前为止,我还没能做到这一点.

我在Java中的实现

在Java中使用以下XorShift PRNG实现(其中x是一个long字段):

public long randomLong() {
    x ^= (x << 21);
    x ^= (x >>> 35);
    x ^= (x << 4);
    return x;
}
Run Code Online (Sandbox Code Playgroud)

如果我播种x到1,前四个调用randomLong()将生成:

35651601
1130297953386881
-9204155794254196429
144132848981442561
Run Code Online (Sandbox Code Playgroud)

我在Python中的实现

无论有没有numpy我都尝试过.下面是使用numpy的版本.

def randomLong(self):
    self.x ^= np.left_shift(self.x, 21)
    self.x ^= np.right_shift(self.x, 35)
    self.x ^= np.left_shift(self.x, 4)
    return self.x
Run Code Online (Sandbox Code Playgroud)

使用相同的种子,Python函数将生成:

35651601
1130297953386881
-9204155787274874573 # different
143006948545953793   # different
Run Code Online (Sandbox Code Playgroud)

我的JavaScript实现

我还没有尝试过,因为JavaScript的唯一数字类型似乎是基于IEEE 754的双打,这开启了不同的蠕虫病毒.

我认为原因是什么

Java和Python有不同的数字类型.Java有32位和64位整数,而Python有很时髦的大型int.

看起来移位运算符具有不同的语义.例如,在Java中有逻辑和算术移位,而在Python中只有一种移位(逻辑?).

问题

我很高兴能得到一个答案,让我用这三种语言写一个PRNG,而且速度很快.它不一定非常好.我已经考虑将C libs实现移植到其他语言,虽然它不是很好.

  • 我可以修复上面的实现,以便它们工作吗?
  • 我应该切换到另一个更容易在prog.langs上实现的PRNG函数吗?

我已经读过有人建议使用Python的java.util.Random类的SO.我不想要这个,因为我也需要JavaScript中的函数,我不知道这个包存在于那里.

javascript python java random numpy

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

bug或功能:open和io.open不可互换

我一直以为open并且io.open可以互换.
显然不是,如果我相信这个片段:

import ctypes, io

class POINT(ctypes.Structure):
    _fields_ = [("x", ctypes.c_int),("y", ctypes.c_int)]
# THIS WORKS
with open("mypoints.bin", "wb") as f: 
    for i in range(10):
        p = POINT(i,10-i)
        print p.x, p.y
        f.write(p)
# THIS FAILS 
with io.open("mypoints.bin", "wb") as f:
    for i in range(10):
        p = POINT(i,10-i)
        print p.x, p.y
        f.write(p)

0 10
Traceback (most recent call last):
  File "D:\test.py", line 10, in <module>
    f.write(p)
  File "c:\Python26\lib\io.py", line 1070, in write
    self._write_buf.extend(b)
TypeError: 'POINT' object is not …
Run Code Online (Sandbox Code Playgroud)

python api file-io

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

Python CRC-32问题

我正在编写一个Python程序,用于从6 GB bz2文件的中间提取数据.bzip2文件由独立可解密的数据块组成,所以我只需要找到一个块(它们由魔术位分隔),然后在内存中创建一个临时的一块bzip2文件,最后将其传递给bz2.decompress函数.容易,不是吗?

bzip2 格式最后有一个文件的crc32校验和.没问题,binascii.crc32来救援.可是等等.要校验和的数据不一定以字节边界结束,而crc32函数在整数个字节上运行.

我的计划:在除最后一个字节之外的所有字节上使用binascii.crc32函数,然后使用我自己的函数来更新最后1-7位的计算crc.但是数小时的编码和测试让我感到困惑,我的困惑可以归结为这个问题:为什么crc32("\ x00")不是0x00000000?根据维基百科的文章,它应该不是吗?

你从0b00000000开始,用32 0填充,然后用0x04C11DB7进行多项式除法,直到前8位没有剩下的,这是立即的.你的最后32位是校验和,怎么能不是全零?

我搜索了Google的答案并查看了几个CRC-32实现的代码,却没有找到任何关于为什么会这样做的线索.

python crc32 bzip2

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

快速 DCT 变换

JPEG压缩过程中生成DCT系数的标准方程为DCT公式:

我知道这个实现很昂贵(慢),而且有更快的方法。这种生成 DCT 系数的更快方法是否有明确的公式?

compression algorithm jpeg image-processing dct

5
推荐指数
2
解决办法
4052
查看次数

位字节字和双字 - 何时在汇编中使用什么?

我正在尝试学习汇编(更像是在挣扎),并且遇到了字节、字、双字等数据类型。

真正让我困惑的是你什么时候知道使用一个而不是另一个。显然您想使用最保守的选项,但我怎么知道选择一个字节而不是一个字呢?例如 1 个字 = 16 位或 2 个字节。这是否意味着我可以在 1 个单词中放入 16 个字符?所以为了保存字母表,我需要声明 2 个单词?

寄存器(16 位、32 位和 64 位)也是如此。我知道您可以使用较小的寄存器,例如al和 ,ah而不是eax在操作较小尺寸的数据时。对于 16 位寄存器,您能否将比字大的数据类型移入其中,因为它是 16 位,因此可以容纳 16 位字?

围绕这整个概念我很困难。如果有人碰巧有我可以查看的任何好的资源或信息,那就太好了。干杯!

assembly byte bits cpu-registers

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