Tag: pipe

为什么堆栈溢出仍然是一个问题?

这个问题多年来让我感到迷惑,考虑到这个网站的名字,这是要问的地方。 为什么我们程序员仍然有这个StackOverflow问题? 为什么在每一种主要语言中,线程堆栈的内存都必须在创build线程时静态分配? 我将在C#/ Java的背景下讲,因为我使用它们最多,但这可能是一个更广泛的问题。 固定的堆栈大小会导致巨大的问题: 除非你确定recursion的深度很小,否则没有办法写一个recursionalgorithm。 recursionalgorithm的线性内存复杂度通常是不可接受的。 没有便宜的方法来开始新的线程。 你必须为堆栈分配巨大的内存块来说明线程的所有可能的用途。 即使不使用非常深的recursion,由于堆栈大小是一个任意的固定数字,您总会有堆栈空间不足的风险。 考虑到StackOverflow通常是不可恢复的,这是我眼中的一个大问题。 现在,如果dynamic调整堆栈大小,上述所有问题都将得到缓解,因为堆栈溢出只有在存在内存溢出时才可能发生。 但事实并非如此。 为什么? 现代CPU有没有一些基本的限制,会使它变得不可能/效率低下? 如果你考虑重新分配会带来的性能问题,那么应该是可以接受的,因为人们ArrayList使用像ArrayList这样的结构而不会受到太大的影响。 所以,问题是,我错过了什么, StackOverflow是不是一个问题,或者我错过了一些东西,有很多语言与dynamic堆栈,还是有一些很大的原因,这是不可能的/难以实现? 编辑:有人说,performance将是一个大问题,但考虑到这一点: 我们保持编译的代码不变。 堆栈访问保持不变,因此“通常情况下”的性能保持不变。 我们处理当代码尝试访问未分配的内存并启动我们的“重新分配”例程时发生的CPUexception。 重新分配将不会经常发生,因为<将您通常的ArrayList参数放在这里>。 应该在大多数保护模式CPU上工作而不会损失性能。 没有?

如果`malloc(0)`返回一个非空指针,我可以把它传递给`free`吗?

我一直在阅读关于在请求一个零大小的块时malloc行为的讨论。 我明白, malloc(0)的行为是实现定义的,它应该返回一个空指针, 或者一个非空指针,但我不应该访问。 (这是有道理的,因为不能保证它指向任何可用的内存。) 但是,如果得到这样一个不可访问的非空指针,我可以通过它以通常的方式来free它? 或者是非法的,因为我从malloc(0)得到的指针可能不指向一个实际分配的内存块? 具体来说,下面的代码是否有明确的行为: #include <stdio.h> #include <stdlib.h> int main() { int* x = (int*) malloc(0); if (x == NULL) { printf("Got NULL\n"); return 0; } else { printf("Got nonnull %p\n", x); } free(x); // is calling `free` here okay? }

如何pipe道input到Bash while循环,并在循环结束后保存variables

Bash允许使用: cat <(echo "$FILECONTENT") Bash也允许使用: while read i; do echo $i; done </etc/passwd while read i; do echo $i; done </etc/passwd 结合前面两个这个可以使用: echo $FILECONTENT | while read i; do echo $i; done echo $FILECONTENT | while read i; do echo $i; done 最后一个问题是,它创build子shell,并且在while循环结束variables之后, i不能再被访问。 我的问题是: 如何实现这样的事情: while read i; do echo $i; done <(echo "$FILECONTENT") […]

如何处理python中的破pipe(SIGPIPE)?

我用python编写了一个简单的multithreading游戏服务器,为每个客户端连接创build一个新的线程。 我发现,每隔一段时间,服务器将崩溃,因为pipe道损坏/ SIGPIPE错误。 我很确定,当程序试图向不再存在的客户端发送响应时,它正在发生。 什么是处理这个问题的好方法? 我的首选解决scheme将简单地closures到客户端的服务器端连接,继续前进,而不是退出整个程序。 PS: 这个问题/答案以通用的方式处理问题; 我应该如何具体解决它?

composer php:如何find一个包的确切版本?

假设我正在写一个图书馆A,这取决于另一个图书馆,monolog例如。 我想安装最新版本的monolog,所以我只是把它放在composer.json里面: { "require": { "monolog/monolog": "*.*.*" } } 然后我运行“$ php composer.phar install”。 我期待在composer.lock中find安装的版本,但它不在那里: { "hash": "d7bcc4fe544b4ef7561918a8fc6ce009", "packages": [ { "package": "monolog/monolog", "version": "dev-master", "source-reference": "2eb0c0978d290a1c45346a1955188929cb4e5db7" } ], "packages-dev": null, "aliases": [ ], "minimum-stability": "dev", "stability-flags": [ ] } 我需要的版本,因为我想我的图书馆绑定到一个特定的版本,例如:如果我发现版本是1.3.5,在我的composer.json我想这样的东西: "require": { "monolog/monolog": "1.3.*" } 有任何想法吗?

将用户添加到Jenkins的“允许用户注册”已禁用

我不希望新用户能够注册。 因此,在Jenkin的configuration中,我使用Jenkin自己的用户数据库禁用了“允许用户注册”。 但是,我现在怎么手动添加用户呢? 另外,有一个默认的pipe理员用户,我应该照顾?

什么是.sh文件?

所以我没有经验处理过多的文件types,我一直无法find什么.sh文件的很多信息。 这是我想要做的: 我正尝试下载地图数据集,这些地图数据集可以单独下载,也可以单独下载: http : //daymet.ornl.gov/gridded 为了一次下载一系列图块,他们说要下载他们的脚本,最终导致daymet-nc-retrieval.sh nc-retrieval.sh 那么,我应该怎么做这个代码呢? 网站不提供进一步的指示,假设用户知道如何处理它。 我猜你应该将代码粘贴到其他未提及的浏览器应用程序(在这种情况下使用Chrome或Firefox)? 它几乎看起来像是可以粘贴到Firefox / Greasemonkey,但不完全。 只是通过一个快速的谷歌文件types,我还没有能够得到正面或反面的。 我确信有一个关于如何处理这些文件的简单解释,但似乎埋在了大量的post中,人们已经假设你知道如何处理这些文件。 任何人只要简单地说一下,在使用代码实际实现代码之后,需要从一个方面做什么才能做到呢? 谢谢。

如何故意删除一个boost :: shared_ptr?

我有很多boost::shared_ptr<MyClass>对象,并在某些时候我故意要delete其中的一些来释放一些内存。 (我知道那时我将永远不需要指向MyClass对象了。)我该怎么做? 我猜你不能用我用get()得到的原始指针调用delete() get() 。 我在boost::shared_ptr看到了函数get_deleter(shared_ptr<T> const & p) ,但是我不确定如何使用它,并且它旁边的实验就是这样说的。 (我认为我有提升1.38。) 也许只是分配一个新的空的boost::shared_ptr的variables? 这应该扔掉旧的价值,并删除它。

本机代码和托pipe代码之间的区别?

例如,在查看GlowCode分析器网站时,它说: “GlowCode 6.2和x64configuration文件本机,托pipe和混合C ++,C#,.NET代码” 他们的意思是什么?

当我尝试使用iPad进行开发时发生未知错误

我试图在新iPad上testing我的应用程序,看看Retina支持是否正常工作。 像我用于开发的任何其他设备一样,我附加设备并按下“Use For Development”是XCode Organizer。 该过程开始,但几秒钟后进度栏消失,我收到此错误消息:“发生未知的错误” 我手动在设备部分注册了自己的UDID,configuration文件成功安装在设备上,但是组织者的iPad名称前面仍然有一个黄点,设备没有出现在iOS设备列表中(这样我就不能运行我的应用程序)。 我试过什么来到我的脑海里,但没有解决:( 有任何想法吗 ? 附加信息 : XCode版本:4.4.1 iOS SDK版本:5.1 最低部署目标:5.0 设备iOS版本:5.1.1(9B206) 设备types:第三代新iPad(Wifi + 4G) 基于Intel的Mac:采用2 x 2.26 GHz四核Intel Xeon的Mac Pro OS版本:OS X Mountain Lion 10.8(12A269)