当前位置: 首页 > news >正文

北京公司建网站一般需要多少钱网站做等保是按照什么定级别的

北京公司建网站一般需要多少钱,网站做等保是按照什么定级别的,已有备 网站新增网站,网站开发干嘛(redis) 文章目录 Redission 使用Jackson处理LocalDateTime的一些坑不支持jsr310的问题#xff08;浅坑#xff09;准备问题解决 读取 LocalDateTime类型的值的问题#xff08;深坑#xff09;准备问题解决 总结 Redission 使用Jackson处理LocalDateTime的一些坑 当我们想…(redis) 文章目录 Redission 使用Jackson处理LocalDateTime的一些坑不支持jsr310的问题浅坑准备问题解决 读取 LocalDateTime类型的值的问题深坑准备问题解决 总结 Redission 使用Jackson处理LocalDateTime的一些坑 当我们想要Redission 存取 LocalDateTime类型的值时会碰上一些坑有些坑很浅有些坑很深。 不支持jsr310的问题浅坑 准备 不做任何处理只是要求使用Jackson 来做序列号和反序列化的处理代码如下 配置RedissonClient 的代码 private RedissonClient getRedissonClient(){Config config new Config();config.useSingleServer().setAddress(redis://127.0.0.1:6379).setDatabase(30);JsonJacksonCodec jacksonCodec new JsonJacksonCodec();jacksonCodec.getObjectMapper().configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);config.setCodec(jacksonCodec);return Redisson.create(config);} 测试代码 Testpublic void testRedissonLocalDateTime(){LocalDateTime now LocalDateTime.now();RedissonClient redissonClient getRedissonClient();//默认编码器Java序列化和反序列化BucketRBucketLocalDateTime voRBucket redissonClient.getBucket(testLocalDateTime);voRBucket.set(now);System.out.println(voRBucket.get());} 测试结果 java.lang.IllegalArgumentException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type java.time.LocalDateTime not supported by default: add Module com.fasterxml.jackson.datatype:jackson-datatype-jsr310 to enable handling问题 发现这个问题了之后搜索一下关键词很容易找到解决方案。Jackson缺少了jsr310的注册所以补充这个就可以。 解决 修改配置RedissonClient 的代码增加支持支持jsr310如果没有引入对应依赖的需要增加对应依赖的引入。 private RedissonClient getRedissonClient(){Config config new Config();config.useSingleServer().setAddress(redis://47.96.74.163:6379).setDatabase(30);JsonJacksonCodec jacksonCodec new JsonJacksonCodec();jacksonCodec.getObjectMapper()//补充支持jsr310.registerModule(new JavaTimeModule()).configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);config.setCodec(jacksonCodec);return Redisson.create(config);}调整代码后测试非常顺利正确的存储了数据Redis上的数据也正确控制台上的数据也正确。代码可以生产使用了。 读取 LocalDateTime类型的值的问题深坑 准备 在上面的代码中我们通过System.out.println(voRBucket.get()); 代码读取了存储在LocalDateTime的值结果输出和我们预想的一样看Redis上的数据保存的值也是符合预期的。但当我们将读取的代码调整下的时候就会出现一个神奇的问题。 调整后测试代码如下: Testpublic void testRedissonLocalDateTime2(){LocalDateTime now LocalDateTime.now();RedissonClient redissonClient getRedissonClient();//默认编码器Java序列化和反序列化BucketRBucketLocalDateTime voRBucket redissonClient.getBucket(testLocalDateTime);voRBucket.set(now);System.out.println(voRBucket.get());//取出LocalDateTime 对象再输出LocalDateTime localDateTime voRBucket.get();System.out.println(localDateTime);}测试结果如下 java.lang.ClassCastException: java.lang.String cannot be cast to java.time.LocalDateTime问题 新增加的LocalDateTime localDateTime voRBucket.get(); 这行代码抛出异常了异常的内容很直白但处理却有点麻烦。因为我们肯定是支持了jsr310肯定是支持String 转LocalDateTime的而且我们也通过泛型告诉了它这里要转换成LocalDateTime但这里好像很傻它并不知道应该要做转换而只是用了Java的强转所以抛异常了。 但是为什么System.out.println(voRBucket.get()); 这里获取的时候没有抛异常呢都是get方法难道还能不一样 实际情况确实是不一样的之System.out.println(voRBucket.get()); 这个方法不会抛异常因为它压根就没做LocalDateTime转换因为System.out.println 调用的是Object 类型的参数方法String直接向上转型为Object 是不用调转换方法的因此不需要转换。 解决 因此我们需要明确告知Redisson 将返回的结果帮我转换成LocalDateTime对象因此我们获取Bucket的时候就得告知它我们Bucket的值得用什么Codec来转换。于是我们找到了TypedJsonJacksonCodec 这个Jackson 专用的Codec, 通过它构建一个Codec改进后代码如下 Testpublic void testRedissonLocalDateTime3(){LocalDateTime now LocalDateTime.now();RedissonClient redissonClient getRedissonClient();//使用指定的编码器BucketTypedJsonJacksonCodec localDateTimeCodec new TypedJsonJacksonCodec(new TypeReferenceLocalDateTime() {});RBucketLocalDateTime voRBucket redissonClient.getBucket(testLocalDateTime,localDateTimeCodec);voRBucket.set(now);System.out.println(voRBucket.get());}运行结果 java.lang.IllegalArgumentException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type java.time.LocalDateTime not supported by default: add Module com.fasterxml.jackson.datatype:jackson-datatype-jsr310 to enable handling这个问题又出现了这个时候可能会想配置RedissonClient 的时候不是已经加了jsr310的支持么为什么这里还有问题一切的问题很其实很清晰看下TypedJsonJacksonCodec 的构造方法就知道。 public TypedJsonJacksonCodec(TypeReference? valueTypeReference) {this(valueTypeReference, new ObjectMapper());}很明显这个构造方法默认new了一个新的ObjectMapper,而不是用我们之前配置的ObjectMapper。因此我们在构建TypedJsonJacksonCodec 时需要将配置的ObjectMapper也传入。最终解决问题的代码 Testpublic void testRedissonLocalDateTime4(){LocalDateTime now LocalDateTime.now();RedissonClient redissonClient getRedissonClient();//使用指定的编码器BucketJsonJacksonCodec jacksonCodec (JsonJacksonCodec)redissonClient.getConfig().getCodec();TypedJsonJacksonCodec localDateTimeCodec new TypedJsonJacksonCodec(new TypeReferenceLocalDateTime() {},jacksonCodec.getObjectMapper());RBucketLocalDateTime voRBucket redissonClient.getBucket(testLocalDateTime,localDateTimeCodec);voRBucket.set(now);System.out.println(voRBucket.get());}当然更好的写法是将TypedJsonJacksonCodec localDateTimeCodec的定义成静态的 private static final JsonJacksonCodec jacksonCodec new JsonJacksonCodec(JsonUtils.getRedisOm());private static final TypedJsonJacksonCodec localDateTimeValueCodeC new TypedJsonJacksonCodec(new TypeReferenceLocalDateTime() {},jacksonCodec.getObjectMapper()); 总结 其实这里最大坑就是我们平时会用System.out.println来验证我们预期但没有很容易忽视这个方法是被重载了多次的并且Jackson做序列化时对于泛型是不是指定一个接受的泛型类型就可以的必须得明确指定泛型的类型这个通常用TypeReference 这个接口的匿名类来处理。当没有指定泛型的类型时Jackson默认是转换成Object类型来处理的而对于System.out.println来说Object类型它会默认调用toString方法来输出而如果这个Object类型本身就是String强转过来的那么输出的就是String本身了。在这个问题里LocalDateTime 保存的字符串和我们取出来的字符串并输出的是一样的因此只看控制台输出它们是一样的。但如果我们用对象去接就会发现默认返回不是LocalDateTime类型的对象而是一个String对象。
http://www.huolong8.cn/news/265197/

相关文章:

  • 宿州集团网站建设网站制作方案要点
  • 常州有哪些做阿里巴巴网站的电子创意设计网站
  • 彩票网站代理怎么做网站后台信息管理怎么做
  • 自己做的网站能上传吗施工企业对下结算容易出现的问题
  • 兰州建设网站公司干煤棚网架公司
  • 网站建设优化规划书响水做网站
  • 电商网站设计工作内容东莞公司网站建设公司哪家好
  • 专用车网站建设价格网站页面统计代码是什么意思
  • 建设网站是否等于开展网络营销h5网站建设h
  • 广东网站建设专业公司哪家好珠海市建设工程交易网
  • wordpress怎样显示子类目郑州外语网站建站优化
  • 做跨国婚恋网站赚钱吗鸿邑科技 网站建设
  • 做地方网站论坛赚钱网站建设需要注意的
  • php网站开发实例报告wordpress连接微博专业版v4.1
  • 苏州关键词优化平台北京朝阳建站优化
  • 做游戏代练的网站易班网站的建设内容
  • 国外做油画的网站网站图片搜索技术哪里可以做
  • 网站策划培训北京网站开发企业
  • 网站做得好的公司wordpress文字居中
  • 网站怎么添加导航栏网站建设需求分析的实施
  • 公司网站建立的建议百度网页电脑版入口
  • 怎么建立一个网站能够与讯飞云对话大企业门户网站建设
  • .net 手机网站源码下载深圳杰恩创意设计有限公司网站
  • 怎么做vip电影网站超市的网站怎么建设
  • 南安网站定制网站建设比较好的公司
  • 沈阳专业网站制作公司长春二道网站建设
  • 某些网站dns解析失败wordpress mediawiki
  • 新乡网站建设哪家正规wordpress 对象存储插件
  • 做企业评价的有哪些网站自己做的网站上传
  • 做原创品牌服饰的网站ppt图片素材