问题列表 - 第16898页

提高随机数据的"分辨率"

我一直在使用Ruby 的MPD前端,能够播放随机专辑.

album = all[(rand*all.length).floor]
Run Code Online (Sandbox Code Playgroud)

all图书馆中所有专辑的名称数组在哪里,选择要播放的专辑.

然而,我发现它比其他专辑更多地播放一些专辑,有时非常明显(我看到它连续两次播放同一专辑,不止一次,我的图书馆有几百张专辑,所以这应该是统计上的是非常不可能发生的),并在另一端,有很多的专辑从来没有得到发挥.

有什么方法可以获得更随机的数字吗?是否有一个实现更好的随机数算法的宝石?我需要换种子吗?

ruby random

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

如何限制python中活动线程的数量?

我是python的新手并且取得了一些进展threading- 我正在做一些音乐文件转换,并希望能够在我的机器上使用多个核心(每个核心一个活动的转换线程).

class EncodeThread(threading.Thread):
    # this is hacked together a bit, but should give you an idea
    def run(self):
        decode = subprocess.Popen(["flac","--decode","--stdout",self.src],
                            stdout=subprocess.PIPE)
        encode = subprocess.Popen(["lame","--quiet","-",self.dest],
                                stdin=decode.stdout)
        encode.communicate()

# some other code puts these threads with various src/dest pairs in a list

for proc in threads: # `threads` is my list of `threading.Thread` objects
    proc.start()
Run Code Online (Sandbox Code Playgroud)

一切正常,所有文件都被编码,勇敢!...但是,所有进程立即生成,但我只想一次运行两个(每个核心一个).一旦完成,我希望它继续到列表中的下一个,直到它完成,然后继续该程序.

我该怎么做呢?

(我查看了线程池和队列函数,但我找不到简单的答案.)

编辑:也许我应该添加我的每个线程subprocess.Popen用于运行单独的命令行解码器(flac)管道输出到stdout,它被送入命令行编码器(lame/mp3).

python multithreading

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

我如何理解读取内存障碍和易失性

某些语言提供的volatile修饰符被描述为在读取支持变量的内存之前执行"读取内存屏障".

读取存储器屏障通常被描述为一种方法,用于确保CPU在屏障之后执行读取之前执行读取之前所请求的读取.但是,使用此定义,似乎仍然可以读取过时值.换句话说,以特定顺序执行读取似乎并不意味着必须查询主存储器或其他CPU以确保读取的后续值实际上反映了读取屏障时系统中的最新值或随后写入阅读障碍.

因此,volatile是否真的保证读取最新值或者只是(喘气!)读取的值至少与屏障之前的读取一样是最新的?还是其他一些解释?这个答案有什么实际意义?

multithreading volatile memory-barriers

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

如何在Perl中打开()和关闭()STDERR?

问候 ,

我可以使用perl关闭STDERR;

close(STDERR)
Run Code Online (Sandbox Code Playgroud)

在执行一些逻辑后,我想再次打开它.我该怎么做?

我试过了

open(STDERR,">&STDERR");
Run Code Online (Sandbox Code Playgroud)

并没有奏效.

提前致谢.

perl stderr

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

提高C代码的性能

提高C代码性能的最不正统的方法是什么?这是无保留的!一切都包括将循环结构改为gotos,硬编码任何东西,以奇怪的方式使用案例陈述等.不要担心可维护性,可读性等.

ps这实用......而且我很清楚如何以合理的方式提高代码的性能(在优化之前改进算法,配置文件等)

c performance

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

在编程理论的实际应用中是否有任何好的资源?

任何人都可以推荐任何能够提供编程理论真实世界观的好材料吗?作为一名长期的专业软件工程师,我正在从我的角度讲述一名学生.当我说现实世界时,我的意思是"为什么我应该使用接口?这不符合DRY原则吗?它似乎是额外的不必要的元代码." (这是今天提出的另一个问题的含义.)这个学生班级的教授似乎没有明确的商业理由将它们用作"你使用它,所以你的应用程序的主要部分不依赖在特定实现中,您可以使用一个或多个组件 - 例如,可以更换或升级的数据存储而不会影响应用程序的其余部分,也可以插入外部设备的插件,当更好的应用程序出现时可以替换它们.

我注意到学生倾向于达到他们的CS课程的关键点,并开始在各种问答网站上询问他们为什么应该使用某种范式,他们了解什么和如何,但他们对于为什么这样做是无能为力的实际上很有用并且经历了其余的课程思考"好吧,那又怎么样?" 课程往往非常学术化,没有任何真实的世界背景.自己去过那里,我希望我在学校时有像StackOverflow这样的资源.

我希望这个问题能为学生提供一系列有用的阅读材料,这些材料将有助于为他们在课堂上或其他方面学习的各种编程范例和模式提供真实的世界背景,并帮助他们掌握某些模式的时间和原因应该在现实世界的情况下看待.

language-agnostic

13
推荐指数
1
解决办法
431
查看次数

检测实际的表格变化?

是否有现成的方法(可能在其中一个框架中)来检测表单是否与其原始值相比发生了变化

onchange事件不会发生,因为无论实际更改如何都会触发(例如,我可以勾选一个复选框,然后再关闭两个onchange事件).

最后一种方法是将每个元素的原始值存储在隐藏字段中,然后遍历每个元素.如果有更快的方法,我会很高兴听到它!

html javascript prototypejs

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

如何确定两个IPv6地址之间的相等性?

我有一个应用程序,允许管理员指定可以从中发出Web服务请求的有效IP地址.我只需获取配置的IP地址,并将它们与传入的请求进行比较.比较两个IPv4地址是微不足道的,我认为比较两个IPv6地址也是如此.

但是,当我注意到IPv6地址稍微复杂一点时,我的网络无知开始出现.我注意到的一个问题是,如果我查看机器上的IP地址(正在查看VMWare控制台显示的IP地址)与Web请求中的IP地址(HttpContext.Current.Request.UserHostAddress在.NET中),我注意到其中一个结束于%10和%11中的另一个:

  • ipconfig显示:fe80:8179:5576:c6d0:8b16%11
  • UserHostAddress显示:fe80 :: 8179:5576:c6d0:8b16%10

唯一的区别是%10和%11 - 给出了什么?

我还看到IPv6地址以"/"结尾,后跟2位数.在进行比较时,我应该忽略这些最后的3位数(如果存在)吗?如果是这样,我需要寻找的有效替代结局是什么?

-----------编辑-------------

以下是基于所提供答案的解决方案......

我只是存储一个"擦除"的IP地址,并将其与"擦除"的IP地址进行比较.在这里使用.NET是我擦除IP地址的方法.从性能角度来看并不是最好的,但它确实有效.我宁愿做一个比较,GetAddressBytes()但我正在使用一个Dictionary,我决定反对创建我自己的额外步骤ByteComparer.

IPAddress incomingIp = null;
bool ipAddressParsePassed = IPAddress.TryParse(userHostAddress, out incomingIp);
if (ipAddressParsePassed)
{
    IPAddress scrubbedIp = new IPAddress(incomingIp.GetAddressBytes());
    string scrubbedIpStr = scrubbedIp.ToString()
}
Run Code Online (Sandbox Code Playgroud)

ipv6

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

要创建多少个线程?

我现在正在学习如何编写mutithreaded程序,我有一个假设的问题,关于程序的最佳线程数.

我来描述两个场景.

第一种情况是我有一个容易多线程的程序,但每个线程将要做很多工作(每个线程的执行时间大约为几秒).

第二种情况是我有一个程序也很容易多线程,但每个线程的执行时间非常短,大​​约为毫秒.

在这些场景中的任何一个场景中,对程序进行多线程处理的最有效方法是什么?它是创建与我的系统内存允许的一样多的线程,还是在创建新线程之前等待线程完成,这样我在任何时候都只能运行4个工作线程的格言.

一方面,许多线程可能会遇到线程在线程之间切换的开销问题(根据我的理解,这不是一个如此严重的开销).另一方面,如果我限制运行的线程数,这意味着我将运行额外的检查条件并锁定和解锁计数器变量以跟踪运行的线程数,并在旧线程完成时创建新线程.

我可以看到,如果有很多小线程,最好简单地用尽可能多的线程重载我的系统,因为在线程完成运行之前不会有太多的线程切换.这将节省我不断跟踪线程数量的开销.

此外,如果只有几个大线程(少数,我的意思是大约一百个大线程),跟踪线程是有意义的,这样我们就可以保持线程处于最佳数量,这样就会有非常多的线程切换(因为开销会更大,因为我们可能会在单个线程完成之前多次切换).

那么这些假设对于每个案例都是正确的,还是存在一种在所有情况下都是正确的做事的普遍方式?

注意:这是假设一个多核心系统(现在,让我们忽略超线程)并让我们忽略与mutithreading相关的任何典型问题(假设所有线程都有私有写入位置,并且只能从公共位置读取,锁定和解锁只发生当递增或递减计数器的活动线程数时).

谢谢,

-Faken

c++ optimization multithreading

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

apache代理到tomcat保持活力混乱

我有一个apache 2.2服务器面前的tomcat 6服务器.在apache上使用mod_proxy_ajp来代理对tomcat的请求.相当标准的设置.

如果我需要为浏览器禁用keep-alive连接,我该怎么做?

我需要禁用保持活动的http请求,因为我怀疑我的一些用户的防火墙可能会丢弃一个随机导致问题的非活动保持连接.

apache和tomcat上有各种"keep alive"位和配置.

httpd.conf有"KeepAlive Off"(在我的情况下似乎没有什么区别)

你也可以在httpd.conf中设置ProxyPass,你可以有一个参数"keepalive",但是如果我的apache和tomcat之间有代理/防火墙,这只会有所帮助,这在我的情况下不存在并且不是问题.

Tomcat本身,http连接器具有"keepAliveTimeout"和"maxKeepAliveRequests",但这仅适用于http连接器.

tomcat ajp连接器也有一个"keepAliveTimeout",但是这是来自apache的ajp请求,不确定这是否应该/流向从浏览器到apache的真实HTTP请求.

最重要的是,还有HTTP1.0与HTTP1.1的区别.

所以它让人感到困惑....有人可以解释一下吗?

apache tomcat ajp keep-alive

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