小编Ped*_*ves的帖子

为什么malloc有时不起作用?

我正在将一个C项目从Linux移植到Windows.在Linux上它完全稳定.在Windows上,它大多数时候运行良好,但有时我遇到了分段错误.

我正在使用Microsoft Visual Studio 2010进行编译和调试,看起来有时我的malloc调用只是不分配内存,返回NULL.机器有空闲内存; 它已经通过该代码一千次,但它仍然发生在不同的位置.

就像我说的那样,它并不是一直发生在同一个地方; 它看起来像一个随机错误.

我在Windows上需要比在Linux上更小心吗?我能做错什么?

c windows malloc porting segmentation-fault

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

NTL上的"多项式对于FFT来说太大了"错误

我正在尝试使用NTL中的ZZ_pEX类来执行4096度的多项式的乘法运算.然而,它返回错误"Polynomial对于FFT来说太大了",我找不到让它工作的方法(甚至可以帮助NTL文档的东西),但幻灯片中的评论说它可以修复(不说怎么样!).

有人找到了解决方法吗?

c++ fft multiplication polynomial-math ntl

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

如何减少SQLite内存消耗?

我正在寻找在我的应用程序中减少SQLite3的内存消耗的方法.

在每次执行时,它都会创建具有以下模式的表:

(main TEXT NOT NULL PRIMARY KEY UNIQUE,count INTEGER DEFAULT 0)
Run Code Online (Sandbox Code Playgroud)

之后,数据库每秒充满50k操作.只写.

当一个项目已经存在时,它会使用更新查询更新"count"(我认为这称为UPSERT).这些是我的疑问:

INSERT OR IGNORE INTO table (main) VALUES (@SEQ);
UPDATE tables SET count=count+1 WHERE main = @SEQ;
Run Code Online (Sandbox Code Playgroud)

这样,每个事务有500万次操作,我可以非常快速地写入数据库.

我真的不关心这个问题的磁盘空间,但我有一个非常约束的RAM空间.因此,我不能浪费太多记忆.

使用sqlite3_user_memory()通知其执行期间内存消耗增长到近3GB.如果我通过sqlite3_soft_heap_limit64()将其限制为2GB,则当达到2GB时,数据库操作性能几乎降至零.

我不得不将缓存大小提高到1M(默认页面大小)以达到理想的性能.

我该怎么做才能减少内存消耗?

c sqlite performance memory-consumption

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

MongoDB中的自定义索引比较器

我正在使用由随机样本无法区分的概率加密元素组成的数据集.这样,相同数量的顺序加密导致不同的密文.然而,这些仍然可以通过应用SHA256等算法来比较两个密文的特殊函数进行比较.

我想将一个描述的密文列表添加到MongoDB数据库,并使用基于树的结构(即:AVL)对其进行索引.我不能简单地应用数据库的默认索引,因为如上所述,记录必须使用特殊函数进行比较.

示例:假设我有一个数据库db和一个由以下文档类型组成的集合c:

{
  "_id":ObjectId,
  "r":string
}
Run Code Online (Sandbox Code Playgroud)

另外,让F(int,string,string)成为以下函数:

F(h,l,r) = ( SHA256(l | r) + h ) % 3
Run Code Online (Sandbox Code Playgroud)

操作员在哪里 是标准的连接函数.

我想以有效的方式执行以下查询,例如在具有一些合适索引的集合中:

db.c.find( { F(h,l,r) :{ $eq: 0 } } )
Run Code Online (Sandbox Code Playgroud)

对于h和l任意选择但不是常数.即:假设我想找到满足F(h1,l1,r)的所有记录,对于某些对(h1,l1).后来,在另一个时刻,我想做同样的但是使用(h2,l2)使得h1!= h2和l1!= l2.h和l可以假设整数集合中的任何值.

我怎样才能做到这一点?

database indexing avl-tree mongodb

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

如何在Python扩展上处理uint8_t?

我想在我的C模块中传递一个函数的参数uint8_t的数组.

我找不到直接解析这个数组的方法,所以我将它解析为PyObject_t然后迭代为PyTuple_t对象.这样,我需要将此元组的每个元素PyObject_t转换为uint8_t.

一旦没有PyInt_FromUINT8_t函数或类似函数,我怎么能这样做呢?

python python-extensions uint8t

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

不同Android版本的图像渲染差异

我正在尝试使用Sencha Touch构建图库.我创建了一个容器对象,其hbox布局和宽度等于window.innerWidth.然后,我在里面添加三个容器.每个使用vbox布局,宽度等于window.innerWidth/3.

我在其中添加宽​​度等于CSS上设置的列宽和高度的图像为'auto'.

这是我的代码:

Ext.define('Oasis.view.ImgTest',{
extend: 'Ext.Container',
xtype:'mosaic',
config:{
    cls: 'gallery',
    layout: {
        type: 'hbox', // This is a column-based mosaic
        pack: 'center',
        align: 'start'
    },
    columnWidth: -1,//
    numCols: 3, // Number of columns
    lastColumnUsed: -1, // Last column where a image were added. -1 for none.
    autoInstanceColumns: false, // If true, instantiate each column on initialize method
    items:[],
    scrollable: {
        direction: 'vertical',
        directionLock : true
    }
},
initialize: function(){
    var me = this;

    me.setColumnWidth(window.innerWidth/me.getNumCols());

    Ext.Viewport.on('orientationchange', function(){
        // Updates columns …
Run Code Online (Sandbox Code Playgroud)

css html5 android image sencha-touch-2

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

在AWS Elastic Beanstalk上使用Pillow"解码器jpeg不可用"

我在AWS Elastic Beanstalk下处理Python上的jpeg文件时遇到了一些麻烦.

我在.ebextensions/python.config文件中有这个:

packages:
 yum:
  libjpeg-turbo-devel: []
  libpng-devel: []
  freetype-devel: []
...
Run Code Online (Sandbox Code Playgroud)

所以我相信我已经安装了libjpeg并且正在工作(我试过libjpeg-devel,但是yum找不到这个包).

另外,我在我的requirements.txt上有这个:

Pillow==2.5.1
...
Run Code Online (Sandbox Code Playgroud)

所以我相信我已经安装了Pillow并在我的环境中工作.

然后,因为我有Pillow和libjpeg,我正在尝试使用Python脚本中的PIL.Image进行一些工作并保存到文件中.像这样:

from PIL import Image

def resize_image(image,new_size,crop=False,correctOrientationSize=False):
  assert type(new_size) == dict
  assert new_size.has_key('width') and new_size.has_key('height')

  THUM_SIZE = [new_size['width'],new_size['height']]

  file_like = cStringIO.StringIO(base64.decodestring(image))
  thumbnail = Image.open(file_like)

  (width,height) = thumbnail.size
  if correctOrientationSize and height > width:
    THUM_SIZE.reverse()

  thumbnail.thumbnail(THUM_SIZE)

  if crop:
    # Recorta imagem
    thumbnail = crop_image(thumbnail)
  output = cStringIO.StringIO()
  thumbnail.save(output,format='jpeg')

return output.getvalue().encode('base64')
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在Elastic Beanstalk的实例上运行它时,异常"解码器jpeg不可用"时调用.save()方法.

如果我SSH到我的实例,它工作得很好,我已经尝试重建环境.

我究竟做错了什么?

更新:

正如所建议的那样,我再次连接到实例并通过pip(/ opt/python/run/venv/bin/pip)重新安装Pillow,而不是在我确定libjpeg-devel在Pillow之前的环境之前.

我跑了selftest.py并确认我支持jpeg.所以,在最后一次尝试中,我去了Elastic Beanstalk界面上的"重启App Server".有效.

谢谢你们.

python amazon-web-services python-imaging-library pillow amazon-elastic-beanstalk

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

如何在Microsoft Visual Studio 2010上配置Glib?

我正在尝试移植到Windows一个C项目写在Linux上工作.这是一个依赖CUDA和Glib图书馆的简单项目.

我相信最好的方法是使用Microsoft Visual Studio 2010进行编译,但我不知道如何将Glib链接到此项目.CUDA代码进展顺利,但每次调用Glib方法都会产生"未解析的外部符号"错误.

windows glib visual-studio-2010

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

如何在Linux上向后读取文件?

我知道我可以用来cat在Linux上从头到尾打印文件中的所有内容.有没有办法做到这一点(最后一行)?

linux cat

4
推荐指数
3
解决办法
9223
查看次数

如何解决sqlite3上的瓶颈?

我正在开发一个用 C 编写的项目,该项目生成近 350k 的序列并保存在 sqlite 数据库中。对于每个序列,我必须在表中插入(或忽略)一个字符串,并更新其他表中的一行。

我尝试了这个“指南”,但无法达到每秒超​​过 30k 操作。

我正在使用每个 1M 操作的事务(插入和更新)并且 PRAGMA synchronous=OFF

我有什么选择来解决这个瓶颈?

sqlite

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

为什么free()不会真正释放内存?

我正在做一些分配和释放内存的测试.这是我正在使用的代码:

#include <stdlib.h>
#include <stdio.h>

#define WAVE_SIZE 100000000

int main(int argc,char* argv[]){

    int i;
    int **p;

    printf("%d allocs...\n",WAVE_SIZE);

    // Malloc
    printf("Allocating memory...\n");
    p = (int**)malloc(WAVE_SIZE*sizeof(int*));
    for(i = 0;i < WAVE_SIZE;i++)
            p[i] = (int*)malloc(sizeof(int));

    // Break
    printf("Press a key to continue...\n");
    scanf("%*s");

    // Dealloc
    printf("Deallocating memory...\n");
    for(i = 0;i < WAVE_SIZE;i++)
            free(p[i]);             
    free(p);

    // Break
    printf("Press a key to continue...\n");
    scanf("%*s");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在休息期间,我检查过程使用的总内存,我看不到我的期望.

直到第一次暂停,我看到内存消耗增加.但是,在第二次暂停时我没有看到它被释放.

这是OS的事吗?如果我的机器负载很高,我没有空闲内存而另一个进程尝试分配会发生什么?

c malloc free

3
推荐指数
2
解决办法
1242
查看次数

"SQLITE Full"例外

我正在研究一个使用Xerial SQLite驱动程序在大型数据库上执行某些查询的Java程序.

当我发送查询

SELECT sequence,fieldOne,fieldTwo,pairs FROM events ORDER BY pairs DESC
Run Code Online (Sandbox Code Playgroud)

其中sequence是TEXT,fieldOne,fieldTwo以及对和整数.这需要一些时间并抛出此异常:

[SQLITE_FULL]插入失败,因为数据库已满(数据库或磁盘已满)

如果我添加一个限制约束,它就可以了.

怎么了?这不是插入查询,磁盘未满.

java sqlite

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