小编qod*_*nja的帖子

从mysql表中快速选择随机ID,包含数百万条非连续记录

我环顾四周,似乎没有任何简单的方法来做到这一点.几乎看起来只是抓住一部分记录并在代码中进行所有随机化(perl)更容易.我在网上看到的方法看起来更像是数十万,但肯定不是数百万.

我正在使用的表有600万条记录(并且正在增长),ID会自动递增,但并不总是存储在表中(非无间隙).

我已经尝试过推荐的LIMIT 1查询,但查询需要永远运行 - 考虑到记录中存在空白,有没有快速的方法来执行此操作?我不能只采取最大值并随机化范围.

更新:

我的一个想法可能是获取最大值,根据最大值随机化一个限制,然后从random_limit_1到random_limit_2获取10个记录的范围,然后获取在该范围内找到的第一个记录.

或者,如果我知道最大值,有没有办法我可以选择说出表的第5条记录,而不必知道它是哪个ID.然后抓住该记录的id.

更新:

这个查询有点快 - ish.仍然不够快= /

SELECT t.id FROM table t JOIN (SELECT(FLOOR(max(id) * rand())) as maxid FROM table) as tt on t.id >= tt.maxid LIMIT 1
Run Code Online (Sandbox Code Playgroud)

mysql random recordset

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

如何通过(web)按钮单击重新启动Apache?

我正在玩我的虚拟机和我正在开发的代码要求我每次都重新启动apache以捕获更改.我认为只要有一个书签,或链接或按钮点击我可以运行来做这件事会很好.有关如何在CentOS 5开发虚拟机上使用PHP实现此目的的任何想法?

php apache restart

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

timediff大于2分钟

我正在尝试编写一个查询,我可以消除不到2分钟的timediff.我尝试了以下的变体,没有返回任何结果

 timediff(sessions.producer_on,sessions.producer_off)>'00:02:00'
Run Code Online (Sandbox Code Playgroud)

timediff没有>工作正常并返回所有结果 - 我遇到了> 00:02:00条件的困难.任何人都可以帮忙 - 非常感谢

mysql

7
推荐指数
3
解决办法
9734
查看次数

如何设置可由同一基类(Perl/Moose)的所有子类访问的静态变量?

由于Perl/Moose在调用子类BUILD函数之前总是调用基类的BUILD函数,因此每次实例化子类时都会有一个新的基类实例.

如何创建可供所有子类使用的静态变量,或者如何创建静态基类或抽象类?(这种做法有意义吗?)

我正在尝试创建一个变量,该变量动态启用或禁用在基类中运行时定义但可从子类访问的函数的某些功能.

所以,如果我做了类似的事情

my obj = My::childObject_1->new( 'use_my_var' => 1 );
Run Code Online (Sandbox Code Playgroud)

它也是如此

my obj2 = My::childObject_2->new();
my obj3 = My::childObject_3->new();
Run Code Online (Sandbox Code Playgroud)

无需专门定义该变量.除非

my obj4 = My::childObject_2->new( use_my_var' => 0 ); 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,对于所有子类,从那一点起它将是假的,因为它们都是

extends My::BaseObject
Run Code Online (Sandbox Code Playgroud)

另外,是否有描述此行为的设计模式?

(注意:我在共享系统上,所以我无法安装MooseX - 或者至少我无法弄清楚如何在我的用户目录中设置本地PERL5LIB模块安装= /所以只有Moose解决方案现在有帮助!)

oop perl static moose

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

在JSP中,有没有办法在PHP中查看特定范围内的所有可用变量?

或者更好的是如何在jsp中转储给定范围内的所有变量?

(在php中,您可以使用函数调用来查看所有可用的系统,全局和用户定义的变量和函数...)

jsp jstl

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

为什么子类不继承其父类的常量?

所以我开始关注我的Moosey业务,我认为在我使用数字的地方使用常数可能会很好,以便明确这些数字的含义或以后更改

所以在父类中我添加了标准的'use constant'

package Parent;
    use constant {
        NO_LEVEL => 0,
        MY_LEVEL => 1,
        YOUR_LEVEL => 2,
    };

package Child;
extends 'Parent';

#just to demonstrate that child can or cannot access the constant
sub printMyLevel{
 print MY_LEVEL;
}
Run Code Online (Sandbox Code Playgroud)

但是子类不知道父级中设置的常量!卫生署!

我猜我必须做一些Moose魔法才能让它正常工作,或完全不同.我在这个问题上的搜索没有拉出任何结果= /

oop perl inheritance constants moose

6
推荐指数
3
解决办法
2512
查看次数

为什么bash使用单引号和双引号?

我有一个Bash的情况,我以前从未遇到过,也不知道如何解决.我在Alpine Linux(Docker Container)上安装了bash,出于某种原因,带引号的环境变量按字面翻译.

MY_PATH="/home/my/path"

> cd $MY_PATH

结果

bash: cd: "/home/my/path": No such file or directory


> echo $MY_PATH

结果

"/home/my/path"


现在如果你在没有引号的情况下尝试它就可以了

MY_PATH=/home/my/path

> cd $MY_PATH

结果

bash-4.4# (路径改变了)


> echo $MY_PATH

结果

/home/my/path


我之前从未见过这个,因为我希望bash能够吞噬外部引号,甚至不确定在尝试解决这个问题时要搜索什么.

为了完全符合这种情况,请允许我指出:

  1. 使用Docker和Alpine(3.8)图像
  2. 在Alpine上安装Bash 4,通常默认为灰壳

更新

这开始看起来像一个码头工人问题.我正在使用Docker Compose中env_file将环境变量推送到容器,它看起来像是字面上复制引号" => \".

感谢@ bishop的评论尝试 od -x

container.env

#!/usr/bin/env bash
MY_PATH="/home/my/path"
Run Code Online (Sandbox Code Playgroud)

然后在Alpine 3.8集装箱内运行 env

MY_PATH="/home/my/path"

更新2

看起来周围有一个关闭bug.但显然似乎并不固定.是因为我是宇宙中唯一还在使用Docker Toolbox的人吗?

bash environment-variables docker docker-compose

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

如何使用cscript.exe获取WSH脚本的STDIN输入?

我正在尝试使用WSH代替DOS/Batch文件.

感谢您的投入!

wsh

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

当使用jQuery的getScript()函数时,我在带注释的行上出现"格式不正确"的错误

我的猜测是,在src文件需要XML友好的,但当然没有JS文件是因为它是用各种非XML标准的实体.

getScript()可能需要一个XML文件= /

有什么想法吗?

    if(is_def(pObj)){
      $.getScript(pObj.src,function(){
            pObj.stat = STATUS_OK;
            $a.dequeue(pObj);         
      });

    }
Run Code Online (Sandbox Code Playgroud)

我也在我的桌面上开发这个,而不是使用任何服务器

jquery getscript

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

如何将正则表达式字符串替换值($ 1,$ 2等)映射到哈希?

my (@keys,@values) = ($text =~ /\{IS\:([a-zA-Z0-9_-]+)\}(.*)\{\\IS\:([a-zA-Z0-9_-]+)\}/g);
Run Code Online (Sandbox Code Playgroud)

应该匹配这样的字符串

{IS:cow}moo{\IS:cow}
{IS:cow}moo{\IS:cow}    
{IS:dog}bark{\IS:dog}
{IS:dog}meow{\IS:dog} #probably not a dog
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,除了所有的$ 1,$ 2和$ 3值被转储到@keys ..所以我想弄清楚如何让这些家伙成为$ 1 => $ 2对的漂亮哈希......

对于完整的上下文,我真正想做的是让regex表达式返回一个看起来像的数据结构(并附加一个计数,找到键的次数)

{ 
  cow_1 => moo,
  cow_2 => moo,
  dog_1 => bark,
  dog_2 => meow,
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用map {}函数来完成Regex?这样的事可能吗?

my %datahash = map { ( $1 eq $3 ) ? { $1 => $2 } : undef } @{ regex...};
Run Code Online (Sandbox Code Playgroud)

$ 1等于$ 3以确保其匹配标记(不需要递归检查这些标记不嵌套),如果是这样,则使用$ 1作为键,$ 2作为值;

然后,对于这些key =>值对中的每一个,我想要替换

{IS:cow}moo{\IS:cow}
{IS:cow}moo{\IS:cow}   
Run Code Online (Sandbox Code Playgroud)

{cow_1}
{cow_2}
Run Code Online (Sandbox Code Playgroud)

然后,如果$ cachedData {cow}为true,则所有cow_*将替换为%datahash中的键...

regex perl hash map

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