标签: stream

StandardOutput.ReadToEnd()挂起

我有一个经常使用外部程序并读取其输出的程序.它使用你通常的进程重定向输出很好地工作,但是当我尝试读取它时,由于某种原因,一个特定的参数会挂起,没有错误消息 - 没有例外,当它到达该行时它只是'停止'.我当然使用集中式函数来调用和读取程序的输出,这是:

public string ADBShell(string adbInput)
{
    try
    {
        //Create Empty values
        string result = string.Empty;
        string error = string.Empty;
        string output = string.Empty;
        System.Diagnostics.ProcessStartInfo procStartInfo 
            = new System.Diagnostics.ProcessStartInfo(toolPath + "adb.exe");

        procStartInfo.Arguments = adbInput;
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.RedirectStandardError = true;
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = true;
        procStartInfo.WorkingDirectory = toolPath;
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();
        // Get the output into a string
        proc.WaitForExit();
        result = proc.StandardOutput.ReadToEnd();
        error = proc.StandardError.ReadToEnd();  //Some ADB outputs use this
        if (result.Length …
Run Code Online (Sandbox Code Playgroud)

c# stream hang redirectstandardoutput

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

Nginx基于主机名的TCP转发

随着Nginx社区版本的TCP负载平衡的发布,我想混合使用OpenVPN和SSL传递数据.Nginx知道如何路由流量的唯一方法是通过他们的域名.

 vpn1.app.com ???? nginx at 10.0.0.1 ???? vpn1  at 10.0.0.3
 vpn2.app.com ??                      ??? vpn2  at 10.0.0.4
https.app.com ??                      ??? https at 10.0.0.5
Run Code Online (Sandbox Code Playgroud)

我已经看过TCP指南模块文档,但它似乎没有被很好地引用.如果有人能指出我正确的方向,我将不胜感激.

关于ServerFault的相关问题:反向代理可以使用带SSL的SNI通过吗?

tcp load-balancing virtualhost nginx stream

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

事件vs Streams vs Observables vs Async Iterators

目前,在JavaScript中处理一系列异步结果的唯一稳定方法是使用事件系统.但是,正在开发三种替代方案:

流:https
: //streams.spec.whatwg.org Observables:https:
//tc39.github.io/proposal-observable Async Iterators:https://tc39.github.io/proposal-async-iteration

每个事件和其他事件的差异和好处是什么?

这些中的任何一个是否打算取代事件?

iterator stream dom-events observable ecmascript-next

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

通过node.js使用HTML 5进行视频流传输

我正在尝试使用node.js设置一个支持将视频流式传输到HTML5视频标签的网络服务器.到目前为止,这是我的代码:

var range = request.headers.range;
var total = file.length;

var parts = range.replace(/bytes=/, "").split("-");
var partialstart = parts[0];
var partialend = parts[1];

var start = parseInt(partialstart, 10);
var end = partialend ? parseInt(partialend, 10) : total-1;

var chunksize = (end-start)+1;

response.writeHead(206, { "Content-Range": "bytes " + start + "-" + end + "/" + total, "Accept-Ranges": "bytes", "Content-Length": chunksize, "Content-Type": type });
response.end(file);
Run Code Online (Sandbox Code Playgroud)

其中"request"表示http请求,type是"application/ogg"或"video/ogg"(我已尝试过两者),"file"是从文件系统中读取的.ogv文件.以下是响应标头:

Content-Range   bytes 0-14270463/14270464
Accept-Ranges   bytes
Content-Length   14270464
Connection     keep-alive
Content-Type     video/ogg
Run Code Online (Sandbox Code Playgroud)

我已经检查了响应标头,这段代码看起来运行正常,但是有一些问题:

  1. 在本地网络上,视频的加载速度非常慢.据我所知,使用firebug检查响应,文件似乎以大约150 kb /秒的速度流式传输.
  2. 该视频根本不播放.即使我等待加载整个内容,HTML …

video html5 stream node.js

44
推荐指数
4
解决办法
6万
查看次数

如何在.Net Core中读/写文件?

在.Net Core中读/写文件的选项有哪些?

我正在开发我的第一个.Net Core应用程序并寻找 File.Read*/ File.Write*功能(System.IO来自.Net)替代品.

c# file stream .net-core

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

缓冲文件(用于更快的磁盘访问)

我正在处理大文件,直接写入磁盘很慢.因为文件很大,我无法在TMemoryStream中加载它.

TFileStream没有缓冲,所以我想知道是否有一个可以提供缓冲流的自定义库,或者我是否应该只依赖OS提供的缓冲.OS缓冲是否可靠?我的意思是如果缓存已满,可以从缓存中刷新旧文件(我的)以便为新文件腾出空间.

我的文件在GB范围内.它包含数百万条记录.不幸的是,记录不是固定大小.所以,我必须做数百万的读数(4到500字节之间).阅读(和写作)是顺序的.我不会上下跳进文件(我认为这是缓冲的理想选择).

最后,我必须将这样的文件写回磁盘(再次写入数百万的小写).


对David Heffernan赞不绝口!
David提供了一段很棒的代码,提供缓冲磁盘访问.
人们你必须拥有他的BufferedFileStream!这是黄金.并且不要忘记upvote.

谢谢大卫.

delphi io buffer file stream

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

Scala中的无限流

说我有一个功能,例如旧的最爱

def factorial(n:Int) = (BigInt(1) /: (1 to n)) (_*_)
Run Code Online (Sandbox Code Playgroud)

现在,我想找到的最大的价值n为它factorial(n)镶嵌在长.我可以

(1 to 100) takeWhile (factorial(_) <= Long.MaxValue) last
Run Code Online (Sandbox Code Playgroud)

这是有效的,但100是任意大数; 在左侧我真正想要的是一个无限的流,它会一直产生更高的数字,直到满足takeWhile条件.

我想出来了

val s = Stream.continually(1).zipWithIndex.map(p => p._1 + p._2)
Run Code Online (Sandbox Code Playgroud)

但有更好的方法吗?

(我也知道我可以递归地得到一个解决方案,但这不是我正在寻找的.)

scala stream

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

像Scala流一样处理SQL ResultSet

当我查询数据库并接收(仅向前,只读)ResultSet时,ResultSet就像一个数据库行列表.

我试图找到一些方法来像Scala一样对待这个ResultSet Stream.这将允许这样的操作的filter,map等等,而不是消耗大量的内存.

我实现了一个尾递归方法来提取单个项目,但是这要求所有项目同时在内存中,如果ResultSet非常大,则会出现问题:

// Iterate through the result set and gather all of the String values into a list
// then return that list
@tailrec
def loop(resultSet: ResultSet,
         accumulator: List[String] = List()): List[String] = {
  if (!resultSet.next) accumulator.reverse
  else {
    val value = resultSet.getString(1)
    loop(resultSet, value +: accumulator)
  }
}
Run Code Online (Sandbox Code Playgroud)

scala resultset stream

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

更改cin的分隔符(c ++)

我已经重定向"cin"来从文件流中读取cin.rdbug(inF.rdbug()) 当我使用提取操作符时,它会读取它直到它到达空格字符.

是否可以使用另一个分隔符?我在cplusplus.com上浏览了api,但没有找到任何东西.

c++ whitespace stream cin delimiter

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

你可以"流"图像到ffmpeg构建一个视频,而不是将它们保存到磁盘?

我最近的工作涉及以编程方式制作视频.在python中,典型的工作流程看起来像这样:

import subprocess, Image, ImageDraw

for i in range(frames_per_second * video_duration_seconds):
    img = createFrame(i)
    img.save("%07d.png" % i)

subprocess.call(["ffmpeg","-y","-r",str(frames_per_second),"-i", "%07d.png","-vcodec","mpeg4", "-qscale","5", "-r", str(frames_per_second), "video.avi"])
Run Code Online (Sandbox Code Playgroud)

此工作流程为视频中的每个帧创建一个图像并将其保存到磁盘.保存所有图像后,调用ffmpeg以构建来自所有图像的视频.

将图像保存到磁盘(而不是在内存中创建图像)会占用此处的大部分周期,并且似乎不需要.有没有办法执行相同的功能,但没有将图像保存到磁盘?因此,将调用ffmpeg并构建图像并在构造后立即将其提供给ffmpeg.

python ffmpeg image stream python-imaging-library

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