小编Jak*_*ube的帖子

Java中字节数组的内存使用情况

对于启发式预计算表,我需要一个包含1504935936个条目的字节数组.这应该需要大约1.5 GB的内存.

public class Main{
    public static void main(String[] args){
        byte[] arr = new byte[1504935936];
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我有一个"OutOfMemoryError:Java堆空间"-Exception,如果我给程序2 GB的RAM

java -Xmx2048M Main
Run Code Online (Sandbox Code Playgroud)

java -Xmx2153M Main
Run Code Online (Sandbox Code Playgroud)

有用.为什么需要那么多内存?

java memory arrays ram

11
推荐指数
2
解决办法
7933
查看次数

使用gitpython获取更改的文件

我想获得当前git-repo的已更改文件列表.这些文件通常在Changes not staged for commit:调用时列出git status.

到目前为止,我已设法连接到存储库,将其拉出并显示所有未跟踪的文件:

from git import Repo
repo = Repo(pk_repo_path)
o = self.repo.remotes.origin
o.pull()[0]
print(repo.untracked_files)
Run Code Online (Sandbox Code Playgroud)

但现在我想显示所有有变化的文件(未提交).任何人都能把我推向正确的方向吗?我查看repo了一段时间的方法和实验的名称,但我找不到正确的解决方案.

显然我可以调用repo.git.status和解析文件,但这根本不优雅.必须有更好的东西.


编辑:现在我考虑一下.更有用的是一个函数,它告诉我单个文件的状态.喜欢:

print(repo.get_status(path_to_file))
>>untracked
print(repo.get_status(path_to_another_file))
>>not staged
Run Code Online (Sandbox Code Playgroud)

python gitpython

9
推荐指数
2
解决办法
8864
查看次数

找到2D点云的内圆/椭圆

我有一堆2D点.你可以在左边的图片上看到它们.它们形成一些带有几个兔子耳朵的戒指.我的目标是找到大的内循环/椭圆,你可以在右侧看到.

在此输入图像描述 在此输入图像描述

什么样的算法对这种情况有用.

我尝试了RANSAC算法的一种变体(取5个随机点,形成一个椭圆,确定一个分数并重复).我以某种方式设计了评分函数,椭圆内部的点得到了很多负点,并且在外面指向,但非常接近得到很多积极点.但结果并不乐观.算法找到了环,但我得到了一些环的随机椭圆,而不是我想要的大内椭圆.

那里有什么好的策略吗?

algorithm geometry point computational-geometry point-clouds

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

在pyparsing中区分匹配

我想用pyparsing解析一些单词和一些数字.简单吧.

from pyparsing import *

A = Word(nums).setResultsName('A')
B = Word(alphas).setResultsName('B')
expr = OneOrMore(A | B)

result = expr.parseString("123 abc 456 7 d")
print result
Run Code Online (Sandbox Code Playgroud)

上面的代码打印出来['123', 'abc', '456', '7', 'd'].一切顺利.现在我想用这些解析的值做一些工作.对于这项任务,我需要知道它们是否匹配AB.有没有办法区分这两者.

我在一些研究后发现的唯一的东西就是班级的items方法ParseResults.但它只返回[('A', '7'), ('B', 'd')],只有最后两场比赛.

我的计划/目标如下:

for elem in result:
    if elem.is_of_type('A'):
        # do stuff
    elif elem.is_of_type('B'):
        # do something else
Run Code Online (Sandbox Code Playgroud)

我如何区分AB

python parsing pyparsing python-2.7

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

在pyparsing期间改变字符串

在我的pyparsing代码中,我有以下表达式:

exp1 = Literal("foo") + Suppress(Literal("="))  + Word(alphanums+'_-')
exp2 = Literal("foo") + Suppress(Literal("!=")) + Word(alphanums+'_-')
exp = Optional(exp1) & Optional(exp2)
Run Code Online (Sandbox Code Playgroud)

我想将exp2中的foo更改为bar,以便我可以在已解析的数据中区分=和!=.这可能吗?

python pyparsing python-2.7

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

压缩数字数组

我有一个大数组(~400.000.000 个条目),其中的整数为 {0, 1, ..., 8}。所以我每个条目需要 4 位。大约 200 MB。

目前我使用字节数组并在每个条目中保存 2 个数字。

我想知道,如果有一个好的方法,来压缩这个数组。我做了一个快速的研究,找到了像 Huffmann 或 LZW 这样的算法。但这些算法都是为了压缩数据,将压缩后的数据发送给某人并解压。

我只想有一个表,内存空间较少,这样我就可以将它加载到 RAM 中。200MB 的桌子很容易装下,但我正在考虑更大的桌子。

重要的是,我仍然能够确定某些位置的值。

有小费吗?


更多信息:我只是做了一些实验,结果发现平均 2.14 个连续数字具有相同的值。有 1 个零,154 个一,10373 个二,385990 个三,8146188 个四,85008968 个五,265638366 个六,70791576 个七和 80 个八。所以超过一半的数字是6s。

我只需要一个快速的 getValue(idx) 函数,setValue(idx, value) 并不重要。

java compression arrays performance

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

没有重复三角形传输的相同网格的多个图像

我使用OpenGL,GLEW和GLFW拍摄同一网格的多个图像.网格(三角形)在每次拍摄中都不会改变,只会改变ModelViewMatrix.

这是我的主循环的重要代码:

for (int i = 0; i < number_of_images; i++) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    /* set GL_MODELVIEW matrix depending on i */
    glBegin(GL_TRIANGLES);
    for (Triangle &t : mesh) {
        for (Point &p : t) {
            glVertex3f(p.x, p.y, p.z);
        }
    }
    glReadPixels(/*...*/) // get picture and store it somewhere
    glfwSwapBuffers();
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我为每个要拍摄的镜头设置/传输三角形顶点.有没有解决方案,我只需要转移一次?我的网格非常大,所以这种转移需要相当长的时间.

c++ opengl glfw

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

概念“边做边做”循环

我经常需要做一个做而做的循环。目前,我实现了这样的概念:

Instructions part 1 (for instance: read data)
while(Condition){
    Instructions part 2 (save data)
    Instructions part 1 (read next data)
}
Run Code Online (Sandbox Code Playgroud)

我必须写两次第1部分,这很丑。有可能摆脱重复吗?我想到这样的概念:

do{
    Instructions part 1
} while (Condition) do {
    Instructions part 2 
}
Run Code Online (Sandbox Code Playgroud)

c++ loops while-loop

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