fasterxml

Jackson Polymorphic Deserialization via field

a 夏天 提交于 2021-02-19 06:18:05
问题 let's say, i have a class public class A{ private UUID typeId; private B data; } public abstract class B{ private String a; } public class BChildOne extends B{ ... some variables } public class BChildTwo extends B{ ... some variables } type of class B is changing, according to A's typeId , so if typeId of A is "XXX", type of data field is BChildOne, and if typeId of A is "YYY", type of data field is BChildTwo. how can i achive that? so for i tried that; @JsonAutoDetect(fieldVisibility =

pytest学习笔记

若如初见. 提交于 2021-02-16 13:22:59
pytest 优于其他测试框架的地方: 1、简单的测试可以简单的写 2、复杂的测试也可以简单的写 3、测试的可读性强 4、易于上手 5、断言失败仅使用原生assert关键字,而不是self.assertEqual()或者self.assertLessThan() 6、pytest可以运行有unitest和nose编写的测试用例 pytest不依赖python的版本,python2和3都能安装最新版的pytest Tasks项目: tasks程序通过CLI交互,底层编码通过调用API实现 很久没有更新博客园,比较好听点的原因是由于项目比较忙,没有时间整理写脚本过程中的问题。实际上是由本人的“懒”,不想写。不写不记录慢慢的就导致了懒癌的形成,久而久之某些知识回了之后就忘记了,好了 废话不多说 记录下最近写代码过程中的一些问题 1、写接口脚本时候,为了实现活动榜单数据制造,需要写一个登录方法 从json返回值中取出token、uid(uid 用来造主播榜单 给不同的主播送礼,token 不同用户给同一个主播送礼,造用户排行榜的榜单)。礼用config文件存储,将多个token从接口中读出存放在list,然后写入config.txt文件中,用来后面送礼 接口读取数据。但是发下config只能存入字符串str,于是后面想一个个的读取就失败了。 如果使用如下方法直接转换成list 不能实现

JAR冲突问题的解决

心已入冬 提交于 2021-02-10 19:48:57
今天碰到群里小伙伴问,线上程序好像有多个不同版本的Netty包,怎么去看到底加载了哪一个? 在说如何看之前,先来说说,当你开始意识到项目里有多个不同版本的Jar包,都是因为遇到了这几个异常: 1、java.lang.NoSuchMethodException:自己代码中调用了某个方法,因为加载了其他版本的jar,这个版本正好没这个方法。 2、java.lang.NoClassDefFoundError:编译时候是好的,但是运行的时候,因为加载的jar版本问题,没有这个类。 3、java.lang.ClassNotFoundException:在动态加载某个Class的时候,因为要加载的jar不是正确的版本,而导致找不到这个类。 当你在本地运行ok,但到服务器上发现出现这些错误的时候,就要意识到很可能是jar冲突了(有相同依赖存在多个版本)。这个问题往往也会有这样的表现:多实例部署的时候,有的实例是好的,有的实例则不行。 查看加载的类和方法 根据之前分析的异常种类,我们可以去运行中的现场确认当前加载的问题。 这里我们可以使用阿里开源的Arthas工具,如果第一次用,那么按下面操作先安装再运行: curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 运行好之后

Jackson global settings to deserialise array to custom list implementation

て烟熏妆下的殇ゞ 提交于 2021-02-08 21:42:23
问题 By default, Jackson is using java.util.ArrayList to deserialise a JSON array. Instead of this, I want to use a custom implementation. For example, Guava ImmutableList if value is present, or Collection.emptyList() if JSON array is empty or null. I want to configure this globally for ObjectMapper . Is there an easy way to do this? PS: My Jackson version is 2.9.7 回答1: General solution is to use custom module. You can define classes you would like to use for collections. For Guava there is a

Map an array of JSON objects to a java.util.Map and vice versa

﹥>﹥吖頭↗ 提交于 2021-02-07 12:02:32
问题 The question is how to map an array of JSON objects to a java.util.Map where each key would be some specified property of an object and the value is the object itself. JSON: {"items": [{"field1": 1, "field2": "Hello"}, {"field1": 2, "field2":"World"}]} Java POJO: public class Storage { private Map<Integer, Item> items; } public class Item { private Integer field1; private String field2; } So is there a some way to specify to ObjectMapper that it should use field1 property of each JSON object

Apache Druid 远程代码执行漏洞分析(CVE-2021-25646)

感情迁移 提交于 2021-02-06 10:25:35
作者:Skay@QAX A-TEAM 原文链接: https://mp.weixin.qq.com/s/m7WLwJX-566WQ29Tuv7dtg 一、调试环境 https://archive.apache.org/dist/druid/0.20.1/ 这里尝试了几种常规的调试方法都不行,然后看到conf目录下存在jvm.config,一搜好多,因为我们的启动脚本为start-micro-quickstart,所以最后范围锁定在这几个 一开始踩了一个坑,D:\java\druid\druid run\apache-druid-0.20.0\conf\druid\single-server\micro-quickstart\router\runtime.properties 中我看到了8888端口,这恰恰也是我们的web服务端口,下意识就改了这个jvm.config 某些断点可以停住,但是我们漏洞出发点并不行,后来经过Smi1e师傅的提示,需要我改错了 在此感谢~ 二、漏洞分析 往上分析文章就只有阿里发出的,拿出上学的时候做阅读理解的本事,使劲看吧.... 1.定位JavaScriptDimFIlter 阿里爸爸文章一开始就提出了利用的关键类JavaScriptDimFilter,反思一下,因为对Java相关的JavaScript知识储备几乎是0

springMvc+swagger整合例子

↘锁芯ラ 提交于 2021-02-02 05:00:18
  Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API与接口方法,参数等保存同步,大大减少了接口开发人员的工作量.这个例子是我本地运行正常的,完整demo在文章最后。   第一步:在pom.xml引入相关jar < dependency > < groupId > io.springfox </ groupId > < artifactId > springfox-swagger2 </ artifactId > < version > 2.4.0 </ version > </ dependency > < dependency > < groupId > io.springfox </ groupId > < artifactId > springfox-swagger-ui </ artifactId > < version > 2.4.0 </ version > </ dependency > < dependency > < groupId > com.fasterxml.jackson.core </ groupId > < artifactId > jackson-core </

Jackson替换fastjson

我们两清 提交于 2021-01-14 06:31:09
为什么要替换fastjson 工程里大量使用了fastjson作为序列化和反序列化框架,甚至ORM在处理部分字段也依赖fastjson进行序列化和反序列化。那么作为大量使用的基础框架,为什么还要进行替换呢? 原因有以下几点: fastjson太过于侧重性能,对于部分高级特性支持不够,而且部分自定义特性完全偏离了json和js规范导致和其他框架不兼容; fastjson文档缺失较多,部分Feature甚至没有文档,而且代码缺少注释较为晦涩; fastjson的CVE bug监测较弱,很多CVE数据库网站上有关fastjson的CVE寥寥无几,例如近期的AutoType导致的高危漏洞,虽然和Jackson的PolymorphicDeserialization是同样的bug,但是CVE网站上几乎没有fastjson的bug报告。 框架选型 参考 mvnrepository json libraries ,根据流行度排序后前十名框架: jackson2(com.fasterxml.jackson) gson org.json jackson1(com.codehuas.jackson) fastjson cheshire json-simple jackson1是已经过时的框架,因此可以忽略,cheshire和json-simple排名尚且不如fastjson,也忽略,剩余jackson2

Springboot的异常处理与自定义异常

守給你的承諾、 提交于 2020-12-12 18:47:19
园友们好,元旦很快就到来了,提前祝各位园友们元旦快乐,今天给大家分享一个工作中必用一个知识点,就是使用枚举构建自定义异常并应用于springboot的异常处理器。开始之前我先把这个案例的结构大致说明一下: 1、使用idea创建一个springboot的Gradle/Maven项目,引入web模块即可(由于案例的重点是异常处理,所以跳过其他操作)。 2、创建一个javabean,用来接收前台的参数。 3、创建一个枚举、封装异常的错误码等信息。 4、创建一个自定义异常类继承RuntimeException。 5、创建一个controller,用来处理用户请求。 6、创建一个springboot的异常处理类。 7、运行项目,测试。 OK、接下来就进入正题,先来第一步,创建项目(创建项目的过程就不需要一一演示了吧,^_^),下面是创建项目之后的Gradle项目中build.gradle中的依赖: 1 dependencies { 2 implementation('org.springframework.boot:spring-boot-starter-web' ) 3 testImplementation('org.springframework.boot:spring-boot-starter-test' ) 4 } 如果各位读者是maven项目的话,pom

springboot xss防护

↘锁芯ラ 提交于 2020-12-04 17:50:18
概述   XSS(Cross Site Script)全称跨站脚本攻击,为了跟CSS区分开来,所以变成了XSS。它允许恶意代码植入到正常的页面中,盗取正常用户的账号密码,诱使用户访问恶意的网站。 攻击   实施XSS攻击必须具备两个条件 向web页面注入恶意代码。 这些恶意代码能够被浏览器执行。 看一个简单的demo,更能清晰的了解什么XSS攻击 @RequestMapping(value = "/demo11",method = RequestMethod.GET) public String demo11(@RequestParam String name,@RequestParam int age) { return name; } 我们输入访问地址 127.0.0.1:8080/demo11?name=<script>alert("正在发动xss攻击")</script><a href="http://www.baidu.com">澳门皇家赌场上线了<a>&age=11 点击诱惑连接 这就是一个简单的反射性XSS攻击,也叫非持久性XSS,将非法代码提交到服务器,服务器解析并响应,而响应中包含XSS代码,最后浏览器解析并执行。另一种XSS攻击也叫持久型XSS,将XSS代码发送到服务器,如果没有后台效验,直接给存上了,在回显时,会从服务起解析加载出来,浏览器发现XSS代码