标签: stream

字符串流定界符

我正在解析一个 CSV 文件,该文件具有已知的string,int,int,double.

我正在编写一个逐行解析 CSV 文件的函数。我正在尝试设计它,使其看起来像这样:

void foo(const string& csvline){
  std::stringstream csvStream(csvline);
  std::string s; int i1; int i2; double d;
  csvline >> s;
  csvline >> i1;
  csvline >> i2;
  csvline >> d;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法对 CSV 文件执行此操作?

我知道如果它们之间用空格分隔,那么这将是开箱即用的。但是对于 CSV 文件(或任意分隔符)呢?

c++ string parsing stream

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

当它是广播流时如何防止丢弃事件?

我想防止颤动在没有小部件正在监听时丢弃广播流事件。因为我想在其他页面路由中听这个。

我有如下所示的块对象。

class UserBloc extends Object {
    final _user = StreamController<UserModel>.broadcast();
    final _uid = StreamController<String>.broadcast();

    Stream<UserModel> get user => _user.stream;
    Stream<String> get uid => _uid.stream;

    Function(UserModel) get setUser => _user.sink.add;
    Function(String) get setUID => _uid.sink.add;
Run Code Online (Sandbox Code Playgroud)

我正在我的子页面路由中收听这些流

StreamBuilder(
    stream: userBloc.user,
    builder: (context, snapshot) {
    print(snapshot.connectionState);
    print(snapshot.data);
    return Text('hi');
    },
),
Run Code Online (Sandbox Code Playgroud)

它无需使用广播流即可工作。然而,当我改为广播时,运气不佳。

问题是广播流在没有人监听时丢弃事件,但我想在弹出其他 MaterialPage 时开始监听。

使用广播流,当我开始收听时,流中的数据始终为空。

我怎样才能实现这个目标?

broadcast stream flutter

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

Koa中如何发送生成的文件

我需要制作一个包含用户内容的 pdf 文件并将其发回。我选择了 pdfmake,因为这样可以制作表格。我使用Koa .js;

router.post('/pdf', koaBody(), async ctx => {
      const doc = printer.createPdfKitDocument(myFunctionGeneratePDFBody(ctx.request.body));
      doc.pipe(ctx.res, { end: false });
      doc.end();
      ctx.res.writeHead(200, {
        'Content-Type': 'application/pdf',
        "Content-Disposition": "attachment; filename=document.pdf",
      });
      ctx.res.end();
    });
Run Code Online (Sandbox Code Playgroud)

并得到一个错误

Error [ERR_STREAM_WRITE_AFTER_END]: write after end
        at write_ (_http_outgoing.js:572:17)
        at ServerResponse.write (_http_outgoing.js:567:10)
        at PDFDocument.ondata (_stream_readable.js:666:20)
        at PDFDocument.emit (events.js:182:13)
        at PDFDocument.EventEmitter.emit (domain.js:442:20)
        at PDFDocument.Readable.read (_stream_readable.js:486:10)
        at flow (_stream_readable.js:922:34)
        at resume_ (_stream_readable.js:904:3)
        at process._tickCallback (internal/process/next_tick.js:63:19)
Run Code Online (Sandbox Code Playgroud)

但保存在中间文件中并发送其工作......

router.post('/pdf', koaBody(), async ctx => {
  await new Promise((resolve, reject) => {
    const …
Run Code Online (Sandbox Code Playgroud)

javascript pdf stream koa

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

Document Stream snapshot.hasData 返回 true 但没有数据,如何解决此问题?

我正在从 Firestore 传输文档快照,但当数据库中没有任何内容时,snapshot.hasData 返回 true。当尝试从快照中检索值时,这会导致我的代码失败。

我该如何解决?

我尝试打印 snapshot.Data 刚刚得到一个 Documentsnapshot 实例。还考虑过向流提供初始数据,但我不知道如何提供空的 DocumentSnapshot 数据类型。

如果我手动将记录插入到 firestore,它工作正常。

StreamBuilder<DocumentSnapshot>(

          stream: Firestore.instance.collection('UserDetails').document(widget.uid).snapshots(),
          builder: (context, snapshot){

            if(snapshot.hasError){
              widget._err = snapshot.error;
            } else if (snapshot.connectionState == ConnectionState.waiting){
              widget._loadingUserInfo = true;
            } else if (snapshot.hasData){
              nameController.text = snapshot.data['name'];
              ageController.text = snapshot.data['age'];
              introController.text = snapshot.data['intro'];
              widget._loadingUserInfo = false;
            }
)
Run Code Online (Sandbox Code Playgroud)

我正在尝试从 Firestore 获取用户值以填充其表单(如果存在值或用户存在)。

现在它失败了。

stream firebase flutter google-cloud-firestore

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

当其他软件打开文件进行写入时,读取 Node.js 中的文件

情况: 1. 一个应用程序(不是 Node.js)将数据写入某个文件,大小未知 2. Node.js 应该通过管道传输该文件的内容,直到第一个应用程序打开该文件进行写入。

是否可以?

stream node.js

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

在上传文件或在网络上写入文件之前查找流的内容长度

我正在读取文件,对其进行压缩和加密,然后在网络上上传/写入。但我需要知道最终流的内容长度(通过读取、压缩、加密后返回的流)才能发出发布请求。

let zlib = zlib.createGzip(),
   encrypt = crypto.cipherIV(....),
    input = fs.createReadStream('file.jpg');
function zipAndEncrypt(){
   let stream = readStream.pipe( zlib).pipe( encrypt );
   let options = {
     "stream_length":0,
     headers: { "content-type": 'image/jpeg',
                "content-length": '123456', // need to get this length 
          .....
     }
    }

// post the stream
needle( 'post', url, stream, options )
   .then( resp => { console.log( "file length", resp.body.length);})
   .catch( err => {})
}
Run Code Online (Sandbox Code Playgroud)

如果我在标题中输入正确的内容长度(在这种情况下我知道长度),上面的代码就可以工作。所以我需要找到流的长度。

到目前为止,我通过以下方式达到了长度:

  let chunk = [], conLength;
  stream.on( 'data', ( data ) => {
            chunk.push( data ); …
Run Code Online (Sandbox Code Playgroud)

javascript pipeline stream node.js needle.js

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

如何在 .cpp 文件中而不是在标头中为私有类成员定义友元运算符 &lt;&lt; ?

这段代码编译失败:

class P {
//public:
  class C {
  friend std::ostream& operator<<(std::ostream &os, const C &c);
  };
};


std::ostream& operator<<(std::ostream &os, const P::C &c) {
  return os;
}

Run Code Online (Sandbox Code Playgroud)

错误:

test.cpp:12:53: error: 'C' is a private member of 'P'
std::ostream& operator<<(std::ostream &os, const P::C &c) {
                                                    ^
test.cpp:6:9: note: implicitly declared private here
  class C {
        ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

取消注释public:会使该代码能够编译。它显然可以转移到班级本身。

operator<<但是在 cpp 文件中为私有成员类定义此类的正确方法是什么?

c++ operator-overloading stream friend inner-classes

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

如何增加Wildfly中的最大连接数、流和线程数?

我正在构建一个通知系统,允许客户端连接到网络服务器,然后收到服务器端事件的通知。我目前使用 Wildfly 16.0 独立版(在 Windows 上)作为 Web 服务器。我使用下面的示例代码得到了服务器端事件。

@GET
@Path("register")
@Produces("text/event-stream")
public void subscribe(@Context SseEventSink sseEventSink,
                      @HeaderParam(HttpHeaders.LAST_EVENT_ID_HEADER)) {

    while (true) {

        OutboundSseEvent sseEvent = this.eventBuilder
                .data("some data")
                .reconnectDelay(3000)
                .build();
        CompletionStage<?> cs = sseEventSink.send(sseEvent);

        cs.whenComplete((x, y) -> {
            System.out.println("Completed " + x);
            if (y != null) y.printStackTrace();
        });


        Thread.sleep(5 * 1000);

    }
    sseEventSink.close();
}
Run Code Online (Sandbox Code Playgroud)

该解决方案适用于最多 120 个连接的客户端,服务器负载最小,之后无法建立新连接。

我使用 ApacheBench 2.3 版进行测试。

    ab -A 123:123 -c 120 -n 120 http://127.0.0.1:8080/
Run Code Online (Sandbox Code Playgroud)

如果我的并发连接数超过 120 个,其他人就无法连接。在我看来,存在活动连接或流或线程限制。如果一个用户断开连接,另一个用户可以连接。我尝试在standalone.xml 中的http-listener 上设置最大连接数。这没有效果。我只是简单地为我能找到的每个连接/线程/池选项添加一个零。仍然没有改变。

接下来去哪里看?

java connection jboss stream wildfly

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

在 Dart 中合并 Firestore 的单独查询流

我正在 Flutter 中实现一个 Todo 应用程序。我需要在客户端中合并双重查询,以便在 Firestore 中执行 OR 请求。

一方面,我有以下执行双重查询的代码。

Future<Stream> combineStreams() async {
  Stream stream1 = todoCollection
      .where("owners", arrayContains: userId)
      .snapshots()
      .map((snapshot) {
    return snapshot.documents
        .map((doc) => Todo.fromEntity(TodoEntity.fromSnapshot(doc)))
        .toList();
  });
  Stream stream2 = todoCollection
      .where("contributors", arrayContains: userId)
      .snapshots()
      .map((snapshot) {
    return snapshot.documents
        .map((doc) => Todo.fromEntity(TodoEntity.fromSnapshot(doc)))
        .toList();
  });

  return StreamZip(([stream1, stream2])).asBroadcastStream();
}
Run Code Online (Sandbox Code Playgroud)

另一方面,我有以下代码将使用 Bloc 模式执行视图更新。

Stream<TodosState> _mapLoadTodosToState(LoadTodos event) async* {

    _todosSubscription?.cancel();

    var res = await _todosRepository.todos(event.userId);

    _todosSubscription = res.listen(
          (todos) {
        dispatch(
           TodosUpdated(todos));
      },
    );

  }
Run Code Online (Sandbox Code Playgroud)

我有以下错误。

flutter: Instance of …
Run Code Online (Sandbox Code Playgroud)

asynchronous future stream dart flutter

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

Flutter:如何仅传输 firestore 文档中的一个字段?

您如何(或者是否有可能)仅流式传输 Firestore 文档中的一个字段。我只想为一个键值(即列表)传输数据?例如:

DocumentSnapshot {
    'firstname':'Joe',
    'lastname':'Smith',
    'friendsList': [one@one.com, two@two.com, three@three.com]
}
Run Code Online (Sandbox Code Playgroud)

我可以仅流式传输“friendsList”字段还是必须提取整个 DocumentSnapshot ?

stream flutter google-cloud-firestore

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