4 May的博客

尚未进行身份认证

暂无相关描述

等级
博文 352
排名 2k+

Java注解

java注解是Java提供的一种原程序中的元素关联任何信息和任何元数据的途径和方法。Java中常见的注解1、jdk自带注解JavaSE5内置了三种标准注解:@Override:表示当前的方法定义将要覆盖超类中的方法;@Deprecated:表示该方法已经过时了。当方法或类上有该注解时,说明该方法或类都已经过期不能再用,但不影响以前的项目使用,提醒你使用心得替代方法或类。如果程序员不小心...

2019-06-05 20:30:48

SpringMVC配置类WebMvcConfigurerAdapter学习总结

WebMvcConfigurerAdapter配置类是spring提供的一种配置方式,采用javabean的方式替代传统的基于xml的配置来对spring框架进行自定义的配置。因此,在springboot提倡的基于注解的配置&&采用约定大于配置的风格下,当需要进行自定义配置的时候,便可以继承WebMvcConfigurerAdapter这个抽象类,通过javabean来实现需要...

2019-06-05 18:54:02

Springboot对web应用的统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。SpringBoot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。默认情况下,SpringBoot为两种情况提供了不同的响应方式1、当浏览器发送请求头是Accept:text/html;SpringBoot默认会响应一个html文档内容,称作...

2019-06-05 18:40:18

使用fastjson提供的接口实现自定义的编解码器

FastJson中文API在项目开发中经常会遇到一些业务需要对某些数据进行特殊的定制化处理,fastjson为我们提供了接口可以用于实现自定义的编解码器来完成我们的业务要求。ObjectSerializer和ObjectDeserializer分别是fastjson的编码器和解码器接口。ObjectDeserializer接口源码:/***<p>Interfacere...

2019-05-29 19:25:08

使用HttpMessageConverter实现HTTP的序列化和反序列化

对象的序列化/反序列化大家应该都比较熟悉:序列化就是将object转化为可以传输的二进制,反序列化就是将二进制转化为程序内部的对象。序列化/反序列化主要体现在程序I/O这个过程中,包括网络I/O和磁盘I/O。那么什么是http序列化和反序列化呢?在使用springmvc/SpringBoot时,我们经常会这样写:@RequestMapping("/test")@ResponseBodypu...

2019-05-29 19:14:41

自定义Redis序列化工具

为什么用户需要自己创建一个redis配置类?SpringBoot提供了对Redis的自动配置功能,在RedisAutoConfiguration类中默认为我们配置了客户端连接(Lettuce和Jedis),以及数据操作模板(StringRedisTemplate和RedisTemplate),下列代码有一个@ConditionalOnMissingBean和@Bean的注解,@Condition...

2019-05-28 13:53:01

在springboot中使用springsecurity实现安全控制

我们在编写web应用时经常要对一些页面做安全控制,比如:对于没有访问权限的用户需要转到登录表单页面。要实现访问控制方法的多种多样,可以通过AOP、拦截器实现,也可以通过框架实现(如:Apacheshiro、springsecurity)。本文主要学习一下在springboot中使用springsecurity实现安全控制。定义控制层controller:@Controllerpubli...

2019-05-21 20:16:03

如何在项目启动时就执行某些操作

参考资料:如何在项目启动时就执行某些操作在实际的项目开发中经常会遇到一些需要在项目启动的时候进行初始化操作的需求,比如初始化线程池,配置某些对象的序列化和反序列化方式,加载黑名单白名单,加载权限应用,加载组织架构到缓存等等。这篇文章就来总结一下如何在项目初始化时进行一些资源操作。方法一:@PostConstruct方法//将黑名单从数据库中查询出来,并放到缓存中@Service("phon...

2019-05-21 19:49:17

自定义类型处理器的应用

问题描述:一个JSON字符串在转对象的时候报JSON解析异常的错误,我仔细看了一下错误堆栈,是枚举导致的数组越界问题。[{"fee":0,"amount":15,"orderNo":"9136104331757999","storeId":0,"bankCode":"","b...

2019-05-20 19:34:42

由防重复点击引发的幂等性问题思考

HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品使用约支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多...

2019-05-20 19:16:12

MyBatis自定义类型处理器 TypeHandler

在项目开发中经常会遇到一个问题:当我们在javabean中自定义了枚举类型或者其它某个类型,但是在数据库中存储时往往需要转换成数据库对应的类型,并且在从数据库中取出来时也需要将数据库类型转换为javabean中的对应类型。比如:javabean中字段类型为Date,数据库中存储的是varchar类型;javabean中字段类型是Enum,数据库中存储的是String或者Integer。因为有大...

2019-05-20 18:52:38

jdk1.8新特性(五)——Stream

转载自:https://mp.weixin.qq.com/s/adKZrOe6nFEmuADHijsAtA在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增、删、改、查、聚合、统计、过滤等操作。相比之下,关系型数据库中也同样有这些操作,但是在Java8之前,集合和数组的处理并不是很便捷。不过,这一问题在Java8中得到了改善,Java8API添加了一个新的抽象称为流...

2019-03-14 19:29:48

基于SLF4J MDC机制实现日志的链路追踪

request的inputStream和response的outputStream默认情况下是只能读一次,不可重复读;这就导致要获取请求体或者响应体信息时必须要声明包裹类wrapper;spring为此提供了两个对应的包裹类ContentCachingRequestWrapper和ContentCachingResponseWrapper使得这两个流信息可重复读;可以利用这两个类结合sp...

2019-03-12 12:08:16

jdk1.8新特性(四)——Optional

在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行一些防御式的检查,所以在代码中常常可见if(obj!=null)这样的判断。JDK1.8为我们提供了一个Optional类,Optional类能让我们省掉繁琐的非空的判断。Optional中的方法汇总使用示例:packagecom.example.jdknewuse;...

2019-02-21 20:20:03

Jdk1.8新特性(三)——方法引用::

Lambda表达式可以用来创建匿名方法,有时候使用lambda表达式仅仅是调用一个已存在的方法:Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2));在java8中,可以直接通过方法引用的来简写lambda表达式中已经存在的方法:Arrays.sort(stringsArray,String::compareTo...

2019-02-21 19:51:27

Jdk1.8新特性(二)——lambda表达式(参数列表)->{}和函数式接口@FunctionalInterface

Jdk1.8新增lambda表达式是为了简化代码,主要用于简化匿名实现类,为其提供一种更加简洁的写法。Lambda表达式在swift语言中被称为代码块,lambda表达式可以认为是一种特殊的接口,是匿名实现类的简写,该接口必须只有一个抽象方法。作用:1)简化匿名实现类的书写,实现接口抽象方法;2)作为函数中的参数来传递;语法结构:(参数类型参数名1,参数类型参数名2,……参数类型参...

2019-02-21 19:38:08

Jdk1.8新特性(一) 接口的default方法

Jdk1.8之前的接口中通常只声明方法的签名,方法的具体实现在子类中进行。Jdk1.8打破了这样的用法:接口中可以实现具体的方法体,只需要加上关键字static或者default修饰即可。1)使用static来修饰的称之为静态方法,静态方法通过接口名来调用;2)使用default来修饰的称之为默认方法,默认方法通过对象实例来调用;静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这...

2019-02-21 19:24:13

insert返回主键 — mybatis selectKey

日常项目开发中,经常会用到一个场景:在表中新增一条数据,需要得到该条数据的主键ID。如何不额外写一条查询语句来得到新增数据的主键ID呢?mybatis的selectKey实现了这个功能。mybatis的selectKey在不同数据库中的用法有点区别:oracle中的用法<insertid="insertUser"parameterClass="XXX.user">...

2019-02-13 00:29:12

当我谈跑步时我谈些什么——村上春树

1、痛楚难以避免,而磨难可以选择。2、心灵所受的伤,便是人为了某种自立性不得不支付给世界的代价。3、无论做什么事,一旦去做,我非得全力以赴不可,否则不得安心。4、“我们还安心,可以从头再来。”我对妻子说。她答道:“好。”5、年轻的时候姑且不论,人生中总有一个先后顺序,也就是如何安排时间和能量。到一定的年龄之前,如果不在心中制定好这样的规划,人生就会失去焦点,变的张弛失当。6、学校就是这样...

2019-02-12 22:42:08

读段永平的博客有感

1、知道错的绝不做2、发现错的立即改,不管多大的代价都是最小的代价。3、做对的事并把事情做对4、如何克服“因怕把事情做错而不敢做对的事情的恐惧?对对的事情有trulybelieve。5、做对的事情+把事情做对=复利ps:复利其实就是利滚利,即把上一期的本金和利息作为下一期的本金来计算利息。6、得到你想要的,珍惜你已经得到的。(巴菲特:getwhatyouwant,want...

2019-02-12 22:33:27
奖章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。