标签: stream

Java 中的流序列化

在 C++ 中,我创建了一个名为 Serializer 的类。我想复制 Java 中的功能。以下是序列化器的工作原理。

Serializer s;
s.writeString(myString); // automatically converted to Big-Endian unicode string with length prepended.
s.writeInt(myInt); // automatically converted to Big-Endian integer (swizzled if necessary)
s.writeObject(myObject); // which implements the Serializable interface
    {
        s.writeInt(myObjectId); // internally, it writes the data that I want to serialize.
        ...
    }

ZlibCompressor.compress(s); // 's' is compressed
    {
        bytes = s.getBytes(); // internally, it gets bytes, ...
        compressFunc(bytes); // compress them
        s.overwrite(bytes); // and overwrites
    }

AESCipher.encrypt(s); // similarly, 's' …
Run Code Online (Sandbox Code Playgroud)

c++ java serialization stream

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

从数据流中获取字符串

我通过 .NET 3.5 应用程序访问 API,到目前为止我的代码如下所示:

Dim strLink As String = "http://www.google.co.uk"

Dim request As WebRequest = System.Net.WebRequest.Create("http://random-web-api/controller/id")

Dim response As WebResponse = request.GetResponse()

If CType(response,HttpWebResponse).StatusCode = HttpStatusCode.OK Then

    Dim dataStream As Stream = response.GetResponseStream()

    ' How do I get the String from the Stream? 

    response.Close()
End If
Run Code Online (Sandbox Code Playgroud)

我能够调用 API,并获得 OK 状态,但我不知道如何将我的转换为VB 中的ResponseStreama ?String

vb.net stream asp.net-web-api

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

Perl 套接字从网络流中解析数据包

我试图找到一种使用 perl 解析数据流的正确方法。我已经阅读了许多示例、文档和问题,但找不到基本上如何从数据流中剪切“包”并处理它。情况如下: - 从某个 IP 到 IP 和端口的数据流 - 流包含一些乱码,然后在 和 之间包含一些内容,其中的数据以分号分隔

到目前为止,我的尝试是让 Socket 侦听端口并处理 $data var:

#!/usr/bin/perl
    use IO::Socket::INET;
    # auto-flush on socket
    $| = 1;

# creating a listening socket
my $socket = new IO::Socket::INET (
    LocalHost => '127.0.0.1',
    LocalPort => '7070',
    Proto => 'tcp',
    Listen => 5,
    Reuse => 1
);
die "cannot create socket $!\n" unless $socket;
print "server waiting for client connection on port 7070 \n";

while(1)
{
    # waiting for a new client …
Run Code Online (Sandbox Code Playgroud)

sockets perl parsing stream

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

Java 8 的 Files.lines():很长的行的性能问题

Java 8 的流 API 非常方便并受到欢迎。对于文件 I/O,我发现提供了两个 API 来生成流输出:Files.lines(path)、 和bufferedReader.lines();

不过,我没有找到提供用于读取文件的固定大小缓冲区流的流 API。

我担心的是:如果文件的行很长,例如4GB只有一行的文件,这些基于行的 API 是否效率很低?

基于行的读取器至少需要4GB内存来保留该行。与固定大小的缓冲区读取器 ( fileInputStream.read(byte[] b, int off, int len)) 相比,固定大小的缓冲区读取器最多占用内存的缓冲区大小。

如果上述担忧成立,是否有任何更高效的文件 i/o API Stream API?

java io stream

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

setbuf() - printf() 和 write()

这是我在 Stackoverflow 上迈出的第一步!

所以,我试图使用setbuf()重定向stdoutchar buffer[BUFSIZ]. 当我使用时它工作得很好printf(),但当我使用系统调用时它根本不起作用write()

这是代码示例:

#include <stdio.h>
#include <unistd.h>

int     main(void)
{
    char    buffer[BUFSIZ];

    freopen("/dev/null", "a", stdout);
    setbuf(stdout, buffer);
    printf("This works\n");
    write(stdout->_file, "This doesn't.\n", 14);
    fflush(stdout);
    freopen("/dev/tty", "a", stdout);
    printf("Buffer content :\n%s", buffer);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

缓冲区内容:
这有效

你知道为什么吗?因为现在我不知道这是如何工作的,我将通过管道将标准输出传输到标准输入,然后读取结果 - 我认为这不是最干净的方法。

谢谢你,祝你有美好的一天 !

c buffer file-descriptor stream

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

如何限制从nodejs http模块上的其余服务器传入的块的大小?

我正在使用 Node.js 请求模块向 Node.js 请求休息服务器。如果传入数据大小超出允许的限制,我想取消流。这样做的目的是确保我的网络没有被锁定。

我的代码示例如下;

var http = require("http");

async function httpRequest({
  host,
  method,
  port,
  path
} = params, data) {
  if (method.toUpperCase() === "GET") {
    let query = "";
    data = JSON.parse(data);

    for (var key in data) {
      if (data.hasOwnProperty(key)) {
        let value = data[key];
        console.log(key + " -> " + value);
        query = query
          .concat("&")
          .concat(key)
          .concat("=")
          .concat(value);
      }
    }
    if (query) {
      query = "?".concat(query.substring(1));
    }
    path = encodeURI(path.concat(query));
    console.log("path : " + path);
  }
  var …
Run Code Online (Sandbox Code Playgroud)

javascript stream node.js node-https

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

为什么 BinaryReader.ReadDecimal() 返回错误值?

我将数据类型值存储到文件中然后使用它,但得到了错误的结果。我需要做什么才能得到正确的结果?

        BinaryWriter bw = new BinaryWriter(file.OpenWrite());
        string str = "Lalisa";
        int num = 10;
        decimal dec = 2;
        bw.Write(str);
        bw.Write(num);
        bw.Write(dec);
        bw.Close();

        BinaryReader br = new BinaryReader(file.OpenRead());
        Console.WriteLine(br.ReadString()); 
        Console.WriteLine(br.ReadInt16());
        Console.WriteLine(br.ReadDecimal());
        br.Close();

        /*
         output:
         Lalisa
         10
         131072
         */
Run Code Online (Sandbox Code Playgroud)

写入器输出

作者制作的文件

注意* 我正在使用 FileInfo 类作为流。这样做的目的是为了学习,我并不是想解决一个项目的问题。

c# stream

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

如何使用 java 8 按“名称”对对象进行分组?

我有DTO一些属性,例如idnamedesc等。

它的所有属性都有 getter 和 setter。

我从服务中得到一个Page<MyDto>,我需要根据属性对 DTO 进行分组name

首先,我使用转换Page<MyDto>为。List<MyDto>page.getContent

我需要通过使用对其进行分组来将其转换ListMap<String, Object> (不是Map<String,String>namesJava8

我找到了一些例子,但它们没有解决我的问题。

如何将MyDto列表分组到地图中?

其中键是名称 ( String),值是Array<MyDto>每个名称的一个。

例如:

If `List<MyDto>` is : 
[
{"id":1, "name":"albert", "desc":"science"},
{"id":2, "name":"george", "desc":"econ"},
{"id":3, "name":"christ", "desc":"math"},
{"id":4, "name":"george", "desc":"literature"} // george repeats twice
]
Run Code Online (Sandbox Code Playgroud)

输出Map应该是:

{

"george":

[
{"id":2, "name":"george", "desc":"econ"},
{"id":4, "name":"george", …
Run Code Online (Sandbox Code Playgroud)

java hashmap stream java-8 java-stream

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

尝试重载 &lt;&lt; 运算符时出错

在尝试重载 << 运算符时,我无法编译以下代码。任何人都可以指出出了什么问题吗?

#include <iostream>

std::ostream& operator<<(std::ostream& i, int n)
{
    return i;
}

int main()
{
    std::cout << 5 << std::endl;
    std::cin.get();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading stream c++11

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

字符串列表到整数列表列表

嘿,所以我有像“1,2,3”这样的字符串列表,我想获得整数列表我知道如何将一个字符串映射到整数列表,但我正在努力制作列表列表。

到目前为止,我想出了:

   List<String> lines = getLines(s);
        List<List<Integer>> nestedList=lines.stream()
                .map((z->Arrays.stream(z.split(","))
                        .map(Integer::parseInt)
                        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

java stream

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