我有一个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文件到内存而不占用大量的内存?
为什么这只画黑色?
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) 如果你这样做(在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传递给第二个命令?
我有这样的表数据:
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) 我正在尝试创建一个类似于此的类型同义词:
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)
如何使用有效的构造函数定义类型同义词?!