标签: stream

序列化成json并作为流返回

如何将对象序列化为 json 并将其作为流返回?

我试过了:

        using (var stream = new MemoryStream())
        using (var streamWriter = new StreamWriter(stream))
        using (var jsonWriter = new JsonTextWriter(streamWriter))
        {
            var serializer = new JsonSerializer();
            serializer.Serialize(jsonWriter, obj);
            streamWriter.Flush();
            stream.Seek(0, SeekOrigin.Begin);
            return stream;
        }
Run Code Online (Sandbox Code Playgroud)

但流总是关闭的。

接下来我尝试过:

new MemoryStream(Convert.FromBase64String(JsonConvert.SerializeObject(obj)))
Run Code Online (Sandbox Code Playgroud)

但这不是注册为 base64 字符串,我觉得这种方法效率较低。

c# stream json.net

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

如何在 Rust 中使用“flatmap”流?

我有一个rusoto_core::ByteStream实现期货的Stream特征

let chunks = vec![b"1234".to_vec(), b"5678".to_vec()];
let stream = ByteStream::new(stream::iter_ok(chunks));
Run Code Online (Sandbox Code Playgroud)

我想将它传递给actix_web 的HttpResponseBuilder::streaming方法。

use actix_web::dev::HttpResponseBuilder; // 0.7.18
use rusoto_core::ByteStream; // 0.36.0

fn example(stream: ByteStream, builder: HttpResponseBuilder) {
    builder.streaming(stream);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,我收到以下错误:

let chunks = vec![b"1234".to_vec(), b"5678".to_vec()];
let stream = ByteStream::new(stream::iter_ok(chunks));
Run Code Online (Sandbox Code Playgroud)

我相信原因是streaming()期望 a S: Stream<Item = Bytes, Error>(ie, Item = Bytes) 但我ByteStreamItem = Vec<u8>. 我该如何解决?

我认为解决方案是flatmap我的,ByteStream但我找不到这样的流方法。

这是一个如何streaming()使用的示例:

let text = …
Run Code Online (Sandbox Code Playgroud)

stream rust rust-actix

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

如何在不将请求存储在临时文件中的情况下处理通过 HTTP 上传的大文件

我想向 golang 服务器提交一个带有大文件有效负载(最多几个 gbs)的 get 请求,而不是让它将多部分主体存储在文件系统上,然后将文件内容复制到缓冲区并转发它上,我想在请求的正文到达时将其转发到另一个服务(不存储任何内容)。这是一个修改后的(来自How can I receive an Uploaded file using a Golang net/http server?)非工作示例,用于发布请求:

func ReceiveFile(w http.ResponseWriter, r *http.Request) {
    var Buf bytes.Buffer
    file, header, err := r.FormFile("file")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    io.Copy(&Buf, file)
    // stream Buf to grpc server
    Buf.Reset()
    return
}
Run Code Online (Sandbox Code Playgroud)

http stream go

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

将两个 for 循环转换为 Java Stream?

我有以下嵌套的 for 循环,我想转换为使用流,因为我目前正在学习使用流,我该怎么做?

我在下面添加了我当前的尝试,但目前尚不完整。

Part part = getPart();
List<Machines> machines = new ArrayList<>();
List<String> identities = getMachineIdentities();
Set<MachinePart> machineParts = new HashSet<>();

    //create machines
    for (String identity : identities) {
               Machine machine = getMachine(identity);
               machines.add(machine);
           }

    //map to MachineParts
    for (Machine machines : machines) {
               MachinePart machinePart = MachinePartCreator.new(machines, part);
               machineParts.add(machinePart);
           }
Run Code Online (Sandbox Code Playgroud)

流尝试:

Set<MachinePart > machineParts = identities.stream()
    .map(identity-> ??? ).collectors.collect(Collectors.toSet()));
Run Code Online (Sandbox Code Playgroud)

java collections for-loop stream collectors

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

Akka流IOResult:如何检查错误?

我在 Scala 上使用 Akka Streams。

从 2.6.0 开始,不推荐使用 IOResult.status(状态始终设置为成功(完成)。从 2.6.0 开始。)。

请参阅https://doc.akka.io/japi/akka/current/akka/stream/IOResult.html#status()

如何检查错误?

顺便说一句,在我的测试中存在真正的错误,例如无效的文件名,状态具有失败(异常)值。

scala stream akka

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

没有运算符“&lt;&lt;”匹配但“&gt;&gt;”有效

我在 C++ 中遇到了“没有运算符“<<”匹配这些操作数”错误(在 fout << dog 处)的问题。这是我的代码的样子:

int FileRepository::addDog(const Dog& dog)
{
    if (this->findDog(dog.getName()) != -1)
        return -1; 
    std::ofstream fout;
    fout.open(this->fileName.c_str(), std::ios_base::app);
    fout << dog;
    fout.close();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
ostream& operator<<(ostream& outputStream, Dog& dog)
{
    outputStream << dog.name << ", " << dog.breed << ", " << dog.birthDate << ", " << dog.numberOfShots << ", " << dog.photo << ", " << '\n';
    return outputStream;
}
Run Code Online (Sandbox Code Playgroud)

我还导入了特定的头文件和库,并且“>>”运算符有效。

在这里它有效:

void FileRepository::writeVectorToFile(std::vector<Dog> vectorOfDogs)
{
    ofstream fout(this->fileName.c_str());
    for (Dog dog : vectorOfDogs)
        fout …
Run Code Online (Sandbox Code Playgroud)

c++ file-io stream

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

比较流

我需要检查给定的流是否是终端流。例如,使用*standard-output*I do (equal (synonym-stream-symbol *standard-output*) *terminal-io*),但它返回 nil。
这很奇怪,因为(synonym-stream-symbol *standard-output*)返回*terminal-io*.
有任何想法吗?感谢您的任何建议。

lisp common-lisp stream

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

在 c# api 中转发流

在我的服务中,我们需要获取另一个服务创建的 zip 文件并将其返回。

这是我的代码(代码已针对问题进行了简化):

[HttpGet("mediafiles/{id}")]
public async Task<IActionResult> DownloadMediaFiles(int id)
{
    var fileIds = _myProvider.GetFileIdsForEntityId(id); // result be like "1,2,3,4"

    using var httpClient = new HttpClient();
    var response = await httpClient.GetAsync($"http://file-service/bulk/{fileIds}");
    var stream = await response.Content.ReadAsStreamAsync();

    return File(stream, "application/octet-stream", "media_files.zip");
}
Run Code Online (Sandbox Code Playgroud)

使用id我可以收集创建fileIds字符串所需的信息并调用其他服务。

这是其他服务上的api(已针对问题简化了代码):

[HttpGet("bulk/{idList}")]
public async Task<IActionResult> DownloadBulk(string idList)
{
    var ids = string.IsNullOrEmpty(idList) ? new List<int>() : idList.Split(',').Select(x => Convert.ToInt32(x));

    using var memoryStream = new MemoryStream();
    using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
    { …
Run Code Online (Sandbox Code Playgroud)

c# api zip stream asp.net-core

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

没有映射器的java流收集器?

我想Collectors.summarizingInt用整数调用一个集合。到目前为止我看到的例子是在一个带有(比如)Employees 的 Set 上,然后被称为collect(Collecters.summorizingInt(Employee::getWage)). 对于裸整数 summorizingInt 需要一个参数,所以我可以这样做,collect(Collectors.summarizingInt((i) -> i))但提供一个自映射器感觉有点奇怪。

有替代品吗?

java stream summarize

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

使用流将数组转换为映射

我有一个整数列表, [1,2,3,4,5]我想在应用乘法函数 (*5) 后将其转换为映射,如下所示:

 {1 = 5, 2 = 10, 3 = 15, 4 = 20, 5 = 25}
Run Code Online (Sandbox Code Playgroud)

我能够使用流并使用 map 函数来执行乘法,但我对如何将结果转换为 map 感到困惑。

myList.stream().map(n -> n * 5).collect( ... )
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗。

java lambda stream

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