Java中AutoCloseable接口与try-with-resources语句自动释放资源 程序需要使用各种资源,例如数据库连接,IO流,通常做法是在finally代码块中编写释放资源的代码。从JDK1.7以后,提供了自动释放资源的方法
Java 建造者(Builder)设计模式 使用场景与分析当一个类的构造方法需要多个参数,并且只有部分是必选的,其它是可选的,此时可以考虑使用建造者模式。传统方案一:重载构造方法在类中重载多个构造方法,根据使用场景进行选择性传参。弊端:难以阅读,每次实例化对象时需要仔细查看各个构造方法参数上的区别,并且如果两个参数类型相同,参数传混了还不会报错,难以检查。传统方案二:JavaBean模式提供空参的构造方法,调用多次set方法进行初始化。弊端:代码冗余,需要写多行set方法。建造者(Builder)模式建造者模式不提供公开
springboot Java MySQL 日期格式转换 Java类型Date,MySQL类型date@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd")private Date birthday; //生日Java类型Date,MySQL类型datetime@JsonFormat(shape = JsonFormat.Shape.STRING, pat
spring java枚举转json 方便前端取值 以User类为例,User类中有个枚举类型的性别属性,如果不对其进行处理,转json时会使用枚举类的toString方法,这时给前端的是个字符串而不是json对象,前端很难取出值。未处理前:"gender":"GenderEnum.FEMALE(code=2, gender=女)"解决方法:使用jackson提供的注解 @JsonFormat,将其写在要转换的枚举类上@JsonFormat(shape = JsonFormat.Shape.OBJECT)@AllArgsConstructor
mybatis 常用注解用法简介 @Insert写法:@Insert(“SQL语句”)使用在接口方法上@Update写法:@Update(“SQL语句”)使用在接口方法上@Delete写法:@Delete(“SQL语句”)使用在接口方法上@Select写法:@Select(“SQL语句”)使用在接口方法上@Result写法:@Result(column = “oid”,property = “id”)使用在@Results注解中,定义列名和变量名的映射关系,代替了<id>标签和<result&g
spring aop 注解用法简介 @Aspect写在类上,无参数,标识该类是一个切面类。注意要在配置文件中配置aop自动代理<aop:aspectj-autoproxy/>@Before写法:@Before(“execution(返回值 包名.类名.方法名(参数列表))”)用于配置前置通知。指定增强的方法在切入点方法之前执行,在@Around之后。@AfterReturning写法:@AfterReturning(切面表达式)用于配置后置通知。指定增强的方法在切入点方法之后执行,在@Around之前。@Aro
maven创建的webapp项目不解析EL表达式的解决方案 原因是maven默认生成的web-app版本为2.3,不支持EL表达式修改web.xml文件<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp
Spring MVC 常用注解用法简介 @RunWith写法:@RunWith(SpringJUnit4ClassRunner.class)使用在测试类上,spring集成junit@ContextConfiguration写法:注解配置类的:@ContextConfiguration(classes = {配置类1.class , 配置类2.class})配置文件的:@ContextConfiguration(value = {“classpath:applicationContext.xml”})使用在测试类上,加载spring容
Spring MVC 解决请求参数乱码问题 在web.xml文件中添加一个spring的字符编码过滤器<!--配置全局过滤的 filter 设置请求参数编码 UTF-8--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
排序算法---归并排序 递归实现(Java) 归并排序 递归实现 Java版C/C++版本递归拆分再合并/** * @param nums 整个待排序数组 * @param start 当前要处理的数组区间起始下标 * @param len 当前要处理的区间长度 */ private static void mergeSort(int[] nums, int start, int len) { if (len <= 1) return; //只有1个元素就不用分割
Spring 常用注解用法简介 @Component 写法:@Component(“该bean的id”)组件的意思,使用在类上用于实例化Bean。@Controller 写法:@Controller(“该bean的id”)使用在web层类上用于实例化Bean,本质和@Component一样,易于识别是web层。@Service 写法:@Service(“该bean的id”)使用在service层类上用于实例化Bean,本质和@Component一样,易于识别是service层。@Repository 写法:@Repos
排序算法---堆排序(Java) 在完全二叉树中,结点i的左孩子为2i,右孩子为2i+1,双亲为i/2取整。由于数组是从0开始,下标计算变为:left = parent*2+1right = parent*2+2parent = (child-1)/2以下为递增排序(构造小顶堆),若要递减排序则调整 heapAdjust 方法中的大于小于号public class HeapSortTest { public static void main(String[] args) { int[] arr = new
Java 使用反射的基本步骤及示例 一、获取Class对象方法1:通过Class类的静态方法 forName()Class<?> myclass = Class.forName("packageName.Student");方法2:通过类名.classClass<Student> myclass = Student.class;方法3:通过对象.getClass()Student student = new Student();Class<? extends Student> myclas