小编mik*_*ney的帖子

当我在Perl中将文件读入内存时,为什么要耗尽这么多内存?

我有一个310MB大小的文本文件(未压缩).当使用PerlIO :: gzip打开文件并将其解压缩到内存中时,在perl内存不足之前,此文件很容易填充2GB的RAM.

该文件打开如下:

open FOO, "<:gzip", "file.gz" or die $!;
my @lines = <FOO>;
Run Code Online (Sandbox Code Playgroud)

显然,这是一种在perl中轻松打开gzip文件的超级便捷方式,但它占用了大量的空间!我的下一步是将文件解压缩到HD,将文件行读取到@lines,在@lines上操作,然后将其压缩.有没有人知道为什么打开压缩文件时消耗的内存超过7倍?有没有人有一个替代的想法,我怎么能解压缩这个gzip文件到内存而不占用大量的内存?

perl gzip

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

glColor3i只绘制黑色

为什么这只画黑色?

 glPushMatrix();
 // Check the current color
 glColor3i(255, 0, 255);
 GLint currentColor[4];
 glGetIntegerv(GL_CURRENT_COLOR, currentColor);
 //currentColor[0] = 254, 1 = 0, 2 = 254, 3 = doesn't matter

 glBegin(GL_QUADS);
 glLineWidth(1);
  glVertex2f(0, 0);
  glVertex2f(WINDOW_WIDTH * .1, 0);
  glVertex2f(WINDOW_WIDTH * .1, WINDOW_HEIGHT);
  glVertex2f(0, WINDOW_HEIGHT);
 glEnd();
 glPopMatrix();
Run Code Online (Sandbox Code Playgroud)

opengl xcode osx-snow-leopard

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

Bash命令行env vars

如果你这样做(在bash中):

ENV_ONE=1 ENV_TWO=2 command
Run Code Online (Sandbox Code Playgroud)

command将在其调用中接受并使用环境变量.但是,如果你这样做:

ENV_ONE=1 ENV_TWO=2 clear && command
Run Code Online (Sandbox Code Playgroud)

clear将使用命令行上设置的env变量,它们不会传递给命令.如果您想要执行以下操作,这是一个问题:

alias command='clear && command'
Run Code Online (Sandbox Code Playgroud)

我已经google了一下,在命令之前我找不到代表env变种的bash内置.我的问题是:如何将CLI声明的env vars传递给第二个命令?

linux macos bash shell

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

在有序选择中选择前 3 行

我有这样的表数据:

id,time,otherdata
a,1,fsdfas
a,2,fasdfag
a,3,fasdfas
a,7,asfdsaf
b,8,fasdf
a,8,asdfasd
a,9,afsadfa
b,10,fasdf
...
Run Code Online (Sandbox Code Playgroud)

所以本质上,我可以通过说以下内容按我想要的顺序选择所有数据:

select * from mytable ordered by id,time;
Run Code Online (Sandbox Code Playgroud)

所以我按照我想要的顺序获取所有记录,首先按 id 排序,然后按时间排序。但不是获取所有记录,我需要每个 id 的最新 3 次。

回答:

嗯,我想出了怎么做。我很惊讶它的速度有多快,因为我正在处理几百万行数据,大约需要 11 秒。我在 sql 脚本中编写了一个程序来执行此操作,这就是它的样子。-- 请注意,它不是获取最后 3 行,而是获取最后“n”行数据。

use my_database;

drop procedure if exists getLastN;
drop table if exists lastN;

-- Create a procedure that gets the last three records for each id
delimiter //
create procedure getLastN(n int)
begin
  # Declare cursor for data iterations, and variables for storage
  declare idData varchar(32); …
Run Code Online (Sandbox Code Playgroud)

mysql sql-order-by limit greatest-n-per-group

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

输入Haskell的同义词,给出类型错误

我正在尝试创建一个类似于此的类型同义词:

data Result = Either String [Token]
Run Code Online (Sandbox Code Playgroud)

我遇到了困难,因为当这段代码编译时,当我尝试用[Token]创建一个Result时,haskell抱怨

    Not in scope: data constructor `Result'
Run Code Online (Sandbox Code Playgroud)

如何使用有效的构造函数定义类型同义词?!

haskell types ghci

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