小编Mr.*_*ama的帖子

/ dev/random非常慢?

一些背景信息:我希望在Red Hat服务器上运行脚本以从/ dev/random读取一些数据,并使用Perl unpack()命令将其转换为十六进制字符串以供以后使用(基准数据库操作).我在/ dev/random上运行了一些"head -1",它似乎工作正常,但在调用它几次后,它就会有点挂起.几分钟后,它最终会输出一小段文字,然后完成.

我切换到/ dev/urandom(我真的不想,它更慢,我不需要那种随机性)并且它在前两次或三次调用时工作正常,然后它也开始挂起.我想知道它是否是轰炸它的"头部"命令,所以我尝试使用Perl做一些简单的I/O,它也悬挂着.作为最后的努力,我使用"dd"命令将一些信息直接转储到文件而不是终端.我所要求的只是1mb的数据,但在我杀死它之前花了3分钟才得到~400字节.

我检查了进程列表,CPU和内存基本没有动过.究竟是什么原因可能会导致/ dev/random这样废弃,以及我可以做些什么来防止/修复它?

编辑:谢谢你的帮助!似乎我随机和随机混淆了.我现在已经启动并运行了该脚本.看起来我今天学到了新东西.:)

linux terminal

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

模式涉及美元符号($)时正则表达式失败

在匹配涉及美元符号的子模式时,我遇到了一些问题.例如,考虑以下文本块:

Regular Price: $20.50       Final Price: $15.20
Regular Price: $18.99       Final Price: $2.25
Regular Price: $11.22       Final Price: $33.44
Regular Price: $55.66       Final Price: $77.88
Run Code Online (Sandbox Code Playgroud)

我试图将常规/最终价格集与以下正则表达式匹配,但它根本不起作用(根本没有匹配):
preg_match_all("/Regular Price: \$(\d+\.\d{2}).*Final Price: \$(\d+\.\d{2})/U", $data, $matches);

我逃过了美元符号,所以给出了什么?

php regex

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

总结多个GROUP BY

假设我有一个表格,census其中包含以下信息:

COUNTRY     PROVINCE    CITY        POPULATION
==============================================
USA         California  Sacramento  1234
USA         California  SanFran     4321
USA         Texas       Houston     1111
USA         Texas       Dallas      2222
Canada      Ontario     Ottawa      3333
Canada      Manitoba    Winnipeg    4444
Run Code Online (Sandbox Code Playgroud)

我正在国家/省级建立一份报告,它给了我以下内容:

SELECT country, province, SUM(population)
FROM census
GROUP BY country, province;

COUNTRY     PROVINCE    SUM(POPULATION)
=======================================
USA         California  5555
USA         Texas       3333
Canada      Ontario     3333
Canada      Manitoba    4444
Run Code Online (Sandbox Code Playgroud)

我希望报告中包含"总体摘要"行,以便最终结果如下所示:

COUNTRY     PROVINCE    SUM(POPULATION)
=======================================
USA         California   5555
USA         Texas        3333
Canada      Ontario      3333
Canada      Manitoba     4444
TOTAL                   16665
Run Code Online (Sandbox Code Playgroud)

我很熟悉ROLLUP …

sql oracle group-by rollup grouping-sets

17
推荐指数
2
解决办法
4647
查看次数

C++ Eigen初始化静态矩阵

是否可以在头文件中初始化静态特征矩阵4d?我想将它用作全局变量.

我想做一些事情:

static Eigen::Matrix4d foo = Eigen::Matrix4d(1, 2 ... 16);
Run Code Online (Sandbox Code Playgroud)

或类似于矢量:

static Eigen::Matrix4d foo = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; 
Run Code Online (Sandbox Code Playgroud)

这是特征矩阵文档的链接.我似乎无法从那里找到如何做到这一点.

c++ eigen

15
推荐指数
3
解决办法
7419
查看次数

在函数内执行传递的别名?

背景:

我正在尝试创建一个在设定的时间间隔内运行命令的函数,因为我无法访问"监视"程序.简化为最基本的,我正在尝试编写的函数runit() { $1; }.

什么有效:

当我传递非别名的东西时,这工作正常和花花公子.例如,runit "ls -l"工作正常.我从ls -l命令中获得了完整的输出.

什么行不通:

当我传给别名时,问题就开始了.例如,设置alias ll="ls -l"然后调用runit "ll"将导致-bash: ll: command not found.

我尝试过的事情:

当我对别名进行硬编码时runit() { ll; },它工作得很好并且给了我期望的东西.


我觉得我可能会忽视某些东西,但我无法将手指放在它上面.
为什么硬编码别名工作正常,但将其传递给函数会失败?
有没有办法完成我想要做的事情?

bash

14
推荐指数
2
解决办法
2525
查看次数

使用split(//,$ str,$ limit)返回尾随空元素,与文档相矛盾

我正在尝试将split字符串放入其组件字符中.
为此,我总是split(//, $str)按照文档的建议使用:

但是,这:
print join(':', split(//, 'abc')), "\n";
使用空字符串匹配作为分隔符来生成输出a:b:c; 因此,空字符串可用于将EXPR分割成其组成字符的列表.

在我的脚本中,我需要一个前N个字符第一个length($str) - 1字符的数组,以较少者为准.为此,我使用split(//, $str, $n + 1)并丢弃最后一个元素.

理论上这应该有效.如果LIMIT小于字符串长度,则将所有额外字符分组到最后丢弃的元素中.如果LIMIT大于字符串长度,则最后一个元素是丢弃的最后一个字符.

这是我遇到一些问题的地方.

文件说:

......以及每一个:
print join(':', split(//, 'abc', 3)), "\n";
print join(':', split(//, 'abc', 4)), "\n";
产生输出a:b:c.

但这不是我得到的结果.如果LIMIT大于字符的数目越大,所得到的数组总是以结束恰好一个空白元件(演示):

print join(':', split(//, 'abc',  1)), "\n";    # abc
print join(':', split(//, 'abc',  2)), "\n";    # a:bc
print join(':', split(//, 'abc',  3)), "\n";    # a:b:c …
Run Code Online (Sandbox Code Playgroud)

arrays perl

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

拓扑排序与分组

好的,所以在拓扑排序中,取决于输入数据,通常有多个正确的解决方案,可以对图形进行"处理",以便所有依赖关系都在"依赖"它们的节点之前.但是,我正在寻找一个稍微不同的答案:

假设以下数据: a -> bc -> d(a必须在之前b,c必须在之前d).
只有这两个限制,我们有多种候选方案:( ,,a b c d 等).但是,我正在寻找创建一种"分组"这些节点的方法,以便在处理组之后,下一组中的所有条目都会依赖它们的依赖关系.对于上面假设的数据,我会寻找像这样的分组.在每个组内,只要组1 在处理组2 中的任何一个之前完成,那么处理节点的顺序(在之前或之前等,反之亦然)并不重要.a c d bc a b d(a, c) (b, d)acbd(a, c)(b, d)

唯一额外的问题是每个节点应该尽可能在最早的组中.考虑以下:
a -> b -> c
d -> e -> f
x -> y

分组方案在(a, d) (b, e, x) (c, f, y)技术上是正确的,因为x在之前y,更优化的解决方案是(a, d, x) (b, e, …

php c++ java graph-theory graph

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

ksh88将单引号更改为heredocs内的双引号?

我似乎遇到了一个特定于ksh88的问题,它将单引号改为双引号,但仅在涉及heredocs和命令替换的某些情况下.

这是一个例子:

#!/bin/ksh

# This example works correctly
echo "Example 1:"
cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF
echo


# This example is broken
echo "Example 2:"
var=$(cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF)
echo "${var}"
echo


# This example works correctly
echo "Example 3:"
var=`cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF`
echo "${var}"
echo
Run Code Online (Sandbox Code Playgroud)

这是输出(请注意示例2的不同之处):

Example 1:
The 'quick' brown fox "jumped" over the …
Run Code Online (Sandbox Code Playgroud)

shell aix ksh

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

字符串连接错误

我遇到了语法错误.我接受这是一个语法错误,但我有点好奇为什么它是一个语法错误.

这完全符合您的预期:

(0..9).each { |n| puts n.to_s + "^2 = " + (n**2).to_s }
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

(0..9).each { |n| puts n.to_s +"^2 = "+ (n**2).to_s }
Run Code Online (Sandbox Code Playgroud)

错误:

NoMethodError: undefined method '+@' for "^2 = ":String
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我可以在任何地方移动第二个加号,Ruby似乎没有任何问题,但如果第一个碰巧触及双引号,我会收到语法错误.

为什么会发生这种情况?

ruby operators syntax-error

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

将std :: string转换为大写:主要性能差异?

所以我正在玩一些代码,并希望看到将std :: string转换为大写的哪种方法效率最高.我认为两者在性能方面会有些相似,但我非常错误.现在我想找出原因.

转换字符串的第一种方法如下:对于字符串中的每个字符(保存长度,从0到长度迭代),如果它在'a'和'z'之间,则将其移位以使其在'A'之间和'Z'代替.

第二种方法的工作原理如下:对于字符串中的每个字符(从0开始,一直持续到我们点击空终止符),在toupper()函数中应用构建.

这是代码:

#include <iostream>
#include <string>

inline std::string ToUpper_Reg(std::string str)
{
    for (int pos = 0, sz = str.length(); pos < sz; ++pos)
    {
        if (str[pos] >= 'a' && str[pos] <= 'z') { str[pos] += ('A' - 'a'); }
    }

    return str;
}

inline std::string ToUpper_Alt(std::string str)
{
    for (int pos = 0; str[pos] != '\0'; ++pos) { str[pos] = toupper(str[pos]); }

    return str;
}


int main()
{
    std::string test = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_+=-`'{}[]\\|\";:<>,./?";

    for (size_t i …
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

c++ ×3

php ×2

aix ×1

arrays ×1

bash ×1

eigen ×1

graph ×1

graph-theory ×1

group-by ×1

grouping-sets ×1

java ×1

ksh ×1

linux ×1

operators ×1

oracle ×1

perl ×1

regex ×1

rollup ×1

ruby ×1

shell ×1

sql ×1

syntax-error ×1

terminal ×1