javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

流-更改cin的分隔符(C ++)

我已将“ cin”重定向为从文件流中读取cin.rdbug(inF.rdbug())当我使用提取运算符时,它会一直读取直到到达空白字符。

是否可以使用其他定界符? 我通过cplusplus.com中的api,但没有找到任何东西。

trans by 2020-08-11T22:01:52Z

将SQL ResultSet视为Scala流

当我查询数据库并收到(仅转发,只读)ResultSet时,ResultSet的作用类似于数据库行的列表。

我正在尝试找到一种将此ResultSet像Scala Stream一样对待的方法。这将允许诸如filtermap之类的操作,而不会消耗大量的RAM。

我实现了尾递归方法来提取单个项目,但这要求所有项目都同时在内存中,如果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)
  }
}
trans by 2020-08-10T09:42:54Z

您可以将图像“流式传输”到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"])

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

将映像保存到磁盘(而不是在内存中创建映像)会占用这里的大部分周期,并且似乎没有必要。 有什么方法可以执行相同的功能,但不将图像保存到磁盘吗? 因此,将调用ffmpeg,然后将图像构建并在构建后立即将其馈送到ffmpeg。

trans by 2020-08-10T08:13:31Z

基于主机名的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

我看了一下TCP指南和模块文档,但是它似乎没有被很好地引用。 如果有人能指出我正确的方向,我将不胜感激。

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

trans by 2020-08-08T19:53:09Z

CodeGo.net>如何在.Net Core中读取/写入文件?

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

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

trans by 2020-08-07T01:49:09Z

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

我正在处理大文件,并且直接写入磁盘速度很慢。 由于文件很大,因此无法将其加载到TMemoryStream中。

TFileStream没有缓冲,所以我想知道是否有一个可以提供缓冲流的自定义库,还是我应该仅依靠OS提供的缓冲。 操作系统缓冲可靠吗? 我的意思是,如果缓存已满,则可能会从缓存中清除旧文件(我的文件),以便为新文件腾出空间。

我的文件在GB范围内。 它包含数百万条记录。 不幸的是,记录不是固定大小的。 因此,我必须进行数百万次读取(4到500字节之间)。 阅读(和写作)是连续的。 我不会上下跳入文件(我认为这是缓冲的理想选择)。

最后,我必须将此类文件写回到磁盘(再次进行数百万次小写操作)。


对大卫·赫弗南(David Heffernan)表示赞赏!
David提供了很棒的一段代码,提供了对磁盘的缓冲访问。
您必须拥有的人BufferedFileStream! 是金。 并且不要忘记投票。
谢谢大卫。

   Speed tests:
     Input file: 317MB.SFF
     Delphi stream: 9.84sec
     David's stream: 2.05sec
     ______________________________________

   More tests:
     Input file: input2_700MB.txt
     Lines: 19 millions
     Compiler optimization: ON
     I/O check: On
     FastMM: release mode
     **HDD**   

     Reading: **linear** (ReadLine) (PS: multiply time with 10)      
      We see clear performance drop at 8KB. Recommended 16 or 32KB
        Time: 618 ms  Cache size: 64KB.
        Time: 622 ms  Cache size: 128KB.
        Time: 622 ms  Cache size: 24KB.
        Time: 622 ms  Cache size: 32KB.
        Time: 622 ms  Cache size: 64KB.
        Time: 624 ms  Cache size: 256KB.
        Time: 625 ms  Cache size: 18KB.
        Time: 626 ms  Cache size: 26KB.
        Time: 626 ms  Cache size: 1024KB.
        Time: 626 ms  Cache size: 16KB.
        Time: 628 ms  Cache size: 42KB.
        Time: 644 ms  Cache size: 8KB.      <--- no difference until 8K
        Time: 664 ms  Cache size: 4KB.
        Time: 705 ms  Cache size: 2KB.
        Time: 791 ms  Cache size: 1KB.
        Time: 795 ms  Cache size: 1KB.

      **SSD**
      We see a small improvement as we go towards higher buffers. Recommended 16 or 32KB
        Time: 610 ms  Cache size: 128KB.
        Time: 611 ms  Cache size: 256KB.
        Time: 614 ms  Cache size: 32KB.
        Time: 623 ms  Cache size: 16KB.
        Time: 625 ms  Cache size: 66KB.
        Time: 639 ms  Cache size: 8KB.       <--- definitively not good with 8K
        Time: 660 ms  Cache size: 4KB.
     ______

     Reading: **Random** (ReadInteger) (100000 reads)
     SSD
       Time: 064 ms. Cache size: 1KB.   Count: 100000.  RAM: 13.27 MB         <-- probably the best buffer size for ReadInteger is 4bytes!
       Time: 067 ms. Cache size: 2KB.   Count: 100000.  RAM: 13.27 MB
       Time: 080 ms. Cache size: 4KB.   Count: 100000.  RAM: 13.27 MB
       Time: 098 ms. Cache size: 8KB.   Count: 100000.  RAM: 13.27 MB
       Time: 140 ms. Cache size: 16KB.  Count: 100000.  RAM: 13.27 MB
       Time: 213 ms. Cache size: 32KB.  Count: 100000.  RAM: 13.27 MB
       Time: 360 ms. Cache size: 64KB.  Count: 100000.  RAM: 13.27 MB
       Conclusion: don't use it for "random" reading   
trans by 2020-07-31T02:09:26Z

事件,流,可观察对象,异步迭代器

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

信息流:[https://streams.spec.whatwg.org]
可观察到的:[https://tc39.github.io/proposal-observable]
异步迭代器:[https://tc39.github.io/proposal-async-iteration]

每个事件与其他事件相比有什么区别和好处?

这些中的任何一个是否打算替换事件?

trans by 2020-07-29T06:11:01Z

无限流

说我有一个功能,例如旧的收藏夹

def factorial(n:Int) = (BigInt(1) /: (1 to n)) (_*_)

现在我想找到29796214255161190190的最大值,其中factorial(n)适合于Long。 我可以

(1 to 100) takeWhile (factorial(_) <= Long.MaxValue) last

可以,但是100是任意大数; 我真正想要的是无限的数据流,它会不断生成更高的数字,直到满足2979621425516116119040条件为止。

我想出了

val s = Stream.continually(1).zipWithIndex.map(p => p._1 + p._2)

但是有更好的方法吗?

(我也知道我可以递归获得解决方案,但这不是我想要的。)

trans by 2020-07-23T20:43:23Z

html5-通过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);

其中“ request”代表http请求,类型是“ 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

我已经检查了响应头,并且此代码似乎运行良好,但是存在两个问题:

  1. 该视频在本地网络上的加载速度似乎非常慢。 据我所知,使用Firebug检查响应,该文件似乎以约150 kb / sec的速度流传输。
  2. 该视频完全无法播放。 即使我等待整个加载,HTML 5视频标签也只会显示一个大的“ x”,而不是firefox中的电影。

是否有人对我可以通过node.js进行视频流传输有什么想法?

谢谢!
克里斯

trans by 2020-07-23T09:30:28Z

C ++:什么是流

我听说过流,更具体地说是文件流。

那是什么

它在内存中是否有位置?

它包含数据吗?

仅仅是文件和对象之间的连接吗?

任何帮助,将不胜感激

trans by 2020-07-22T00:52:57Z

从流创建Zip文件并下载我

我有一个DataTable,我想将其转换为xml,然后使用DotNetZip将其压缩。 最终用户可以通过Asp.Net网页下载它。我的代码在下面

    dt.TableName = "Declaration";

    MemoryStream stream = new MemoryStream();
    dt.WriteXml(stream);

    ZipFile zipFile = new ZipFile();
    zipFile.AddEntry("Report.xml", "", stream);
    Response.ClearContent();
    Response.ClearHeaders();
    Response.AppendHeader("content-disposition", "attachment; filename=Report.zip");

    zipFile.Save(Response.OutputStream);
    //Response.Write(zipstream);
    zipFile.Dispose();

zip文件中的xml文件为空。

trans by 2020-07-11T14:49:55Z

C#-StandardOutput.ReadToEnd()挂起

这个问题已经在这里有了答案:

  • ProcessStartInfo挂在“ WaitForExit”上吗? 为什么? 21个答案

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

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 > 1)
        {
            output += result;
        }
        if (error.Length > 1)
        {
            output += error;
        }
        Return output;
    }
    catch (Exception objException)
    {
        throw objException;
    }
}

挂起的行是result = proc.StandardOutput.ReadToEnd();,但同样,并非每次,仅在发送特定参数(“启动服务器”)时才会发生。 其他所有参数都可以正常工作-读取并返回值。它的挂起方式也很奇怪。 它不会冻结或发出任何错误,它只是停止处理。 就像是一个“返回”命令一样,除了它甚至没有返回到调用函数之外,它只是在界面仍处于运行状态时停止所有操作。有人经历过吗? 有人知道我应该尝试什么吗? 我假设它在流本身中是意外的,但是有没有办法我可以处理/忽略它以便它仍然可以读取它?

trans by 2020-07-09T22:09:38Z

C#中出现错误“此流不支持查找操作”

我正在尝试使用byte流从URL获取图像。 但我收到此错误消息:

此流不支持查找操作。

这是我的代码:

byte[] b;
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
WebResponse myResp = myReq.GetResponse();

Stream stream = myResp.GetResponseStream();
int i;
using (BinaryReader br = new BinaryReader(stream))
{
    i = (int)(stream.Length);
    b = br.ReadBytes(i); // (500000);
}
myResp.Close();
return b;

我在做错人吗?

trans by 2020-06-26T03:57:07Z

python-二进制流中的open和io.BytesIO之间的区别

我正在学习在Python中使用流的知识,并且我注意到IO文档说以下内容:

创建二进制流的最简单方法是使用open()在模式字符串中使用'b':

f

内存中的二进制流也可以作为BytesIO对象使用:

f

openBytesIO定义的fBytesIO定义的f有什么区别。换句话说,什么是“内存二进制流”,它与open有什么不同?

trans by 2020-02-18T13:20:16Z

输入-Android-将输入流存储在fi中

我正在从URL检索XML提要,然后对其进行解析。 我还需要将其存储在手机内部,以便在没有互联网连接时可以解析已保存的选项,而不是实时选项。

我面临的问题是我可以创建url对象,使用getInputStream来获取内容,但不会让我保存它。

URL url = null;
InputStream inputStreamReader = null;
XmlPullParser xpp = null;

url = new URL("http://*********");
inputStreamReader = getInputStream(url);

ObjectOutput out = new ObjectOutputStream(new FileOutputStream(new File(getCacheDir(),"")+"cacheFileAppeal.srl"));

//--------------------------------------------------------
//This line is where it is erroring.
//--------------------------------------------------------
out.writeObject( inputStreamReader );
//--------------------------------------------------------
out.close();

关于如何保存输入流的任何想法,以便以后可以加载。

干杯

trans by 2020-02-16T02:48:35Z

日志记录-我应该将消息记录到stderr还是stdout?

我有一个正在编写的程序,希望为此编写一个自定义的日志记录功能(例如诊断,通知,警告,错误)。

我应该使用stdout还是stderr流来执行此操作? 它是一种解释器,用户可以要求它打印输出。

编辑:请停止向我推荐日志记录框架:(

trans by 2020-02-14T18:47:52Z

java-为什么Files.lines(和类似的Streams)没有自动关闭?

Stream的Javadoc状态:

流具有BaseStream.close()方法并实现AutoCloseable,但是实际上几乎所有流实例在使用后实际上都不需要关闭。 通常,只有源是IO通道的流(例如,由Files.lines(Path,Charset)返回的流)才需要关闭。 大多数流都由集合,数组或生成函数支持,而无需特殊的资源管理。 (如果流确实需要关闭,则可以在try-with-resources语句中将其声明为资源。)

因此,绝大多数情况下,人们可以像Files.lines那样使用单行流,但是对于Files.lines和其他资源支持的流,则必须使用try-with-resources语句,否则会泄漏资源。

这使我感到容易出错且不必要。 由于Streams只能被迭代一次,因此在我看来,没有这样的情况,即Files.lines的输出不应在被迭代后立即关闭,因此实现应仅在任何终端的末尾隐式调用close。 操作。 我错了吗?

trans by 2020-02-14T11:35:31Z

java-在流中搜索字符串的有效方法

假设有一个文本流(或Java中的Reader),我想检查一个特定的字符串。 文本流可能非常大,因此,一旦找到搜索字符串,我想返回true,并且还尝试避免将整个输入存储在内存中。

天真的,我可能会尝试执行以下操作(在Java中):

public boolean streamContainsString(Reader reader, String searchString) throws IOException {
    char[] buffer = new char[1024];
    int numCharsRead;
    while((numCharsRead = reader.read(buffer)) > 0) {
        if ((new String(buffer, 0, numCharsRead)).indexOf(searchString) >= 0)
            return true;
    }
    return false;
}

当然,如果它出现在1k缓冲区的边界上,则无法检测到给定的搜索字符串:

搜索文本:“ stackoverflow”
流缓冲区1:“ abc .........堆栈”
流缓冲区2:“溢出....... xyz”

如何修改此代码,以便它可以跨缓冲区边界正确找到给定的搜索字符串,而又不会将整个流加载到内存中?

编辑:请注意,在流中搜索字符串时,我们试图最小化从流中读取的次数(以避免网络/磁盘中的延迟),并使内存使用率保持恒定,而不管流中的数据量如何。 字符串匹配算法的实际效率是次要的,但是显然,找到使用这些算法中效率更高的一种的解决方案将是一个不错的选择。

trans by 2020-02-08T03:00:54Z

stream-Node.js中的Streams3是什么,它与Streams2有何不同?

我经常听说Streams2和旧流,但是Streams3是什么? 托尔斯滕·洛伦兹(Thorsten Lorenz)在本次演讲中提到了这一点。

我在哪里可以读到它,Streams2和Streams3有什么区别。

在Google上进行搜索时,我还看到它在Node 0.11.5的Changelog中提到,

流:简化流式,被动数据侦听(流3)(isaacs)

trans by 2020-02-04T10:20:26Z

CodeGo.net>写StringBuilder流

将StringBuilder写入System.IO.Stream的最佳方法是什么?

我目前正在做:

StringBuilder message = new StringBuilder("All your base");
message.Append(" are belong to us");

System.IO.MemoryStream stream = new System.IO.MemoryStream();
System.Text.ASCIIEncoding encoding = new ASCIIEncoding();
stream.Write(encoder.GetBytes(message.ToString()), 0, message.Length);
trans by 2020-02-02T18:29:57Z

1 2 3 4 5 下一页 共5页