小编use*_*874的帖子

Filtering fields and sub-fields in Jackson

For some JSON:

{
  "id":123,
  "name":"Test",
  "sub_object":{
    "sub_field_1":1,
    "sub_field_2":2,
    "sub_field_array":[
      {
        "array_field_1":true,
        "array_field_2":false
      },
      {
        "array_field_1":false,
        "array_field_2":true
      }
    ],
    "sub_sub_object":{
      "field_1":"me",
      "field_2":"myself",
      "field_3":"i",
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

I want to apply a tree-like list of field names. This could probably be expressed in JSONPath:

root
  |-id
  |-sub_object
    |-sub_field_2
    |-sub_field_array
      |-array_field_1
    |-sub_sub_object
Run Code Online (Sandbox Code Playgroud)

Then I should get back something like:

{
  "id":123,
  "sub_object":{
    "sub_field_2":2,
    "sub_field_array":[
      {
        "array_field_1":true
      },
      {
        "array_field_1":false
      }
    ],
    "sub_sub_object":{
      "field_1":"me",
      "field_2":"myself",
      "field_3":"i",
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

The idea is that, …

serialization json field filter jackson

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

ImageIO已同步

我有一个用户上传图像的Web应用程序.我们通过ImageIO.read()验证图像数据,并在生成的BufferedImage上执行一些简单的转换,然后将其保存到磁盘.

在执行负载测试时,我们意识到当许多请求同时进入时,它们在ImageIO.read()调用中被阻止.深入挖掘,我们注意到JPEGImageReader是同步的,并且一次只创建一个BufferedImage.

还有其他人遇到过这个吗?我已经谷歌搜索了几天,并没有遇到有这个问题的另一个人,所以也许我做错了什么.我无法想出为什么会这样.对于某些内存泄漏问题,似乎无法为每个映像创建单独的读者和写入器,但这种解释对我来说似乎相当薄弱.

编辑:是一个性能工具,打破了这么长时间.我相信这是由于所有线程都在等待同步锁定,JPEGImageReader源码.

编辑:JAI库可以工作,除了OpenJDK已经删除了对它的关键部分的支持,明确地是JPEG编解码器.

解决方案:考虑到我花费大量时间寻找替代解决方案并且未能这样做,我最好的解决方案是根据请求异步处理图像.因此,当请求进入时,原始图像数据被存储为所谓的有效图像; 然后,请求线程之外的异步进程将一次处理一个图像.由于ImageIO库的同步性,尝试一次执行多个操作没有任何好处.考虑到库不是同步的,只能是低效的,可以并行处理图像.

虽然异步处理会增加一定程度的复杂性,但在修改图像方面可能是一个好主意.不起作用的是我们无法在每个请求中处理原始图像,这意味着我们的系统必须假设每个图像都是有效的图像数据.当异步处理器确实处理图像时,如果数据不好,可能会出现系统不一致的情况.

java synchronization javax.imageio

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