小编Toa*_*oad的帖子

是增量后memcached中更新的到期时间?

在memcached中放入值时,可以设置到期时间.

但是,当您递增值时,您不能(至少不是来自PHP)设置新的到期时间.

我的问题:到期时间是否会重新增加到它的初始值?还是它没变?或者是否有另一种方法来重新生成到期时间?

memcache文档对此都很模糊,以及PHP文档

memcached increment

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

erlangs递归函数不仅仅是一个goto?

只是想直截了当.考虑这个Erlang代码的例子:

 test() ->
      receive
          {From, whatever} ->
                %% do something
               test();
          {From, somethingelse} ->
               %% do something else
               test();
 end.
Run Code Online (Sandbox Code Playgroud)

是不是test()调用,只是一个转到?

我问这个是因为在C中我们了解到,如果你进行函数调用,返回位置总是放在堆栈上.我无法想象这里的Erlang一定是这种情况,因为这会导致堆栈溢出.

基本的.我们有两种不同的调用函数的方法:goto和gosub.goto刚刚把程序流引导到其他地方,gosub记得你来自哪里,所以你可以回来.

考虑到这种思维方式,我可以更容易地看一下erlang的递归,因为如果我只读:test()作为goto,那么根本就没有问题.

因此我的问题:不是erlang只是使用goto而不是记住堆栈上的返回地址?

编辑:

只是为了澄清我的观点:

我知道goto可以用在某些语言中来跳过这个地方.但是,只是suupose而不是someFunction()你也可以这样做:在第一个例子中返回流返回的一些函数(),在第二个例子中,流程只在someFunction中继续并且永远不会返回.

所以我们通过跳转到方法起点来限制正常的GOTO行为.

如果你这样看,那么erlang递归函数调用看起来就像一个goto.

(在我看来,goto是一个函数调用,无法返回你来自的地方).这正是erlang示例中正在发生的事情.

erlang recursion tail-recursion goto

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

如何使用Objective-C中的块进行结构化编程

当使用返回块的方法时,它们可以非常方便.但是,当你必须将它们中的一些串在一起时,它会很快变得混乱

例如,您必须连续调用4个URL:

[remoteAPIWithURL:url1 success:^(int status){
    [remoteAPIWithURL:url2 success:^(int status){
        [remoteAPIWithURL:url3 success:^(int status){
            [remoteAPIWithURL:url2 success:^(int status){
            //succes!!!
            }];
        }];
    }];
}];
Run Code Online (Sandbox Code Playgroud)

因此,对于每次迭代,我都会更深入一级,我甚至还没有处理嵌套块中的错误.

当存在实际循环时,它会变得更糟.例如,假设我想以100个块的形式上传文件:

- (void) continueUploadWithBlockNr:(int)blockNr
{
    if(blocknr>=100) 
    {
    //success!!!
    }
    [remoteAPIUploadFile:file withBlockNr:blockNr success:^(int status)
    {
        [self continueUploadWithBlockNr:blockNr];
    }];
}
Run Code Online (Sandbox Code Playgroud)

这感觉非常不直观,并且非常快速地变得非常难以理解.

在.Net中,他们使用async和await关键字解决了所有这些问题,基本上将这些延续展开为一个看似同步的流程.

Objective C中的最佳实践是什么?

lambda continuations objective-c structured-programming objective-c-blocks

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

在同一个套接字上可以进行多少异步套接字请求?

当我在套接字上调用BeginSend时,我传递一个委托,当发送数据时,该代理将被调用(由不同的线程).

如果我在第一次调用BeginSend而第一次尚未"回调"时会发生什么?

发送数据的正确行为是什么?做BeginSend,并在回调时做EndSend并开始另一个发送?或者让多个BeginSends同时工作真的很明智吗?

这是MSDN上的BeginSend页面,它没有给出这个问题的答案:BeginSend msdn

.net sockets multithreading asynchronous

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

简单的rtsp广播示例源

我想使用rtsp/rtp广播我的程序的屏幕(不是静态屏幕),因为这样一部手机(至少是最近的手机)可以查看流.

我正在寻找一个简单的示例程序,它采用我提供的帧,用编解码器对其进行编码,然后将其(使用rtsp)发送到任何连接的客户端.

我看过网络,到目前为止我能找到的都是完全成熟的开源媒体服务器(如darwin),这些服务器太复杂了,无法用作示例

任何帮助赞赏!

[R

ps发送jpegs到手机真的不是一个选择,因为这是非标准的,并且需要安装移动应用程序来解释'流'.

ps2 C,C++或C#会好的.

c# c++ video rtp rtsp

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

.net中异步调用和异步io调用之间的区别

使用委托我可以异步调用任何函数.从我理解的文档中,这是通过为线程池排队工作项来完成的.

人们也可以对IO函数进行异步调用(比如从套接字,文件,网页等中读取).我想(但我不确定)这不会在线程池中产生一个工作项.只有在获得结果(或错误)之后,才会从线程池中的新线程调用回调.

这个假设是否正确?或者是一个异步IO调用,也只是生成了一些线程?如果是这种情况,异步调用如何比自己生成线程(使用线程池)和阻塞更好?

另外:在任何给定时间可以处理多少个异步调用?如果使用了线程池,我想你想要多少.但是在IO异步调用的情况下,是否有限制?是这样,你怎么知道限制是什么?

.net c# delegates asynchronous

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

如何为iPhone创建一个32RGBA格式的CVPixelBuffer?

在尝试创建32位RGBA CVPixelBuffer时,我经常会遇到错误.

最值得注意的是错误-6680,这意味着:"缓冲区不支持指定的像素格式."

这是代码片段:(宽度和高度指定为256*256)

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
//                         [NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey,
//                         [NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey,
//                         [NSNumber numberWithBool:YES], kCVPixelBufferOpenGLCompatibilityKey,
                         nil];
CVPixelBufferRef pxbuffer = NULL;
CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault, WIDTH,
                                      HEIGHT, kCVPixelFormatType_32RGBA, (CFDictionaryRef) options, 
                                      &pxbuffer);
NSParameterAssert(status == kCVReturnSuccess && pxbuffer != NULL);
Run Code Online (Sandbox Code Playgroud)

任何人都可以暗示我做错了什么吗?

iphone rendering opengl-es framebuffer

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

如何明确清空频道?

简短的版本:有没有办法清空go通道而不重新创建它,或循环通过它?

原因是:我使用两个通道来发送和接收数据,我还有一个额外的通道来表示需要重新连接.

现在,当传输重置/重新连接时,我想"清空"额外的通道,以确保没有任何延迟的其他重置请求,这将导致该事件再次重新连接.

go channels

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

提升asio和c ++ 11是一个很好的匹配吗?

我的客户希望我制作一个高性能,可靠的服务器,通过套接字接收数据流.他希望它是用c ++编写的

已经有一段时间我正在做c ++全职工作,所以我一直在阅读.对于c ++中的网络来说,Asio似乎是一个不错的选择,而c ++ 11似乎是一个很棒的新版本的c ++,具有很多新功能.

我的问题:是否可以可靠地使用它们?是否有意义?我应该避免像lambdas这样的某些c ++ 11功能吗?

c++ sockets boost-asio c++11

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

我将如何在打字稿中声明一个'猴子补丁'原型

我正在从谷歌为webgl-utils.js创建一个d.ts文件

我有一个问题,其中一个最后一行,全局对象中的方法是'猴子修补'(我认为这是正确的术语)

问题行如下:

 /**
  * Provides requestAnimationFrame in a cross browser way.
  */
 window.requestAnimFrame = (function() {
   return window.requestAnimationFrame ||
          window.webkitRequestAnimationFrame ||
          window.mozRequestAnimationFrame ||
          window.oRequestAnimationFrame ||
          window.msRequestAnimationFrame ||
          function(/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {
            window.setTimeout(callback, 1000/60);
          };
 })();
Run Code Online (Sandbox Code Playgroud)

我如何在我的打字稿文件中声明这一点,以便在使用该函数时不会出现编译错误:

 function tick()
 {
      requestAnimFrame(tick);
      drawScene();
 }
Run Code Online (Sandbox Code Playgroud)

我现在尝试过:

 interface window
 {
      requestAnimFrame(): any;
 }
Run Code Online (Sandbox Code Playgroud)

但这不会消除错误:

 The name 'requestAnimFrame' does not exist in the current scope
Run Code Online (Sandbox Code Playgroud)

javascript declaration typescript

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