我的问题可能听起来很基本,但我对杰克逊的writeValueAsString(String(也称为序列化,Java对象到字节流的转换也称为序列化。
谁能帮我理解;他们俩有什么不同?
我问这个问题的原因是,我陷入了一个调用 REST 服务的场景。REST 在 10 秒内使用 JSON 进行响应。但是,如果我在服务器端记录writeValueAsString(String(的时间,则几乎不需要一秒钟。
更新1:这就是我观察到的
上次登录调用的 REST 服务(返回集合(打印时间为 -->9:10:10 UTC。而且,数据同时开始在我的机器上流式传输 Git bash,因为我使用 curl 调用服务。
10 秒后,我的 Servlet 过滤器(拦截对 REST api uri 的请求(在 --> 9:10:20 UTC 打印出来,同时数据流在 Git bash(下载近 35Mb(停止。那么,这种行为的原因可能是什么?
如果杰克逊在序列化仍在打开时同时开始通过网络发送字节?
是杰克逊序列化速度慢还是网络带宽低?
请注意,我尝试仅使用 writeValueAsString(..( 运行序列化和反序列化/readValue(..( 操作,无需通过 junit 使用同一组数据进行任何网络调用,它们在一秒钟内执行。
谢谢
10 秒的服务器响应时间不仅仅是序列化时间,它还包括:
- 请求通过网络到达 REST 服务服务器的总时间
- REST 服务应用中的内部处理
- 通过网络到达应用程序的响应
- (此外,其他各个层所花费的时间,但为了简单起见,不包括它们(。
对于序列化 - 在此处添加来自@Lino的评论:
在计算中,序列化(或序列化(是将数据结构或对象状态转换为可以存储(例如,在文件或内存缓冲区中(或传输(例如,通过网络连接链接(并在以后(可能在不同的计算机环境中(重建的格式的过程
来源 : 维基百科