自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

转载 Spring入门(十四):Spring MVC控制器的2种测试方法

作为一名研发人员,不管你愿不愿意对自己的代码进行测试,都得承认测试对于研发质量保证的重要性,这也就是为什么每个公司的技术部都需要质量控制部的原因,因为越早的发现代码的bug,成本越低,比如说,Dev环境发现bug的成本要低于QA环境,QA环境发现bug的成本要低于Prod环境,Prod环境发现bug的成本最高,这也是每个研发人员最不愿意遇到但永远避不掉的现实。虽然不能完全避免,但我们可...

2019-09-26 16:27:00 237

转载 Spring入门(十三):Spring MVC常用注解讲解

在使用Spring MVC开发Web应用程序时,控制器Controller的开发非常重要,虽然说视图(JSP或者是Thymeleaf)也很重要,因为它才是直接呈现给用户的,不过由于现在前端越来越重要,很多公司都开始采用前后端分离的开发模式,所以我们暂时可以将精力放在开发控制器上。使用Spring MVC开发控制器主要使用以下7个注解:@Controller@RequestMapp...

2019-09-23 14:42:00 265

转载 Spring入门(十二):Spring MVC使用讲解

1. Spring MVC介绍提到MVC,参与过Web应用程序开发的同学都很熟悉,它是展现层(也可以理解成直接展现给用户的那一层)开发的一种架构模式,M全称是Model,指的是数据模型,V全称是View,指的是视图页面,如JSP、Thymeleaf等,C全称是Controller,指的是控制器,用来处理用户在客户端(浏览器)发起的请求。Spring MVC就是基于MVC模式实现,能够...

2019-09-20 10:47:00 187

转载 Spring入门(十一):Spring AOP使用进阶

在上篇博客中,我们了解了什么是AOP以及在Spring中如何使用AOP,本篇博客继续深入讲解下AOP的高级用法。1. 声明带参数的切点假设我们有一个接口CompactDisc和它的实现类BlankDisc:package chapter04.soundsystem;/** * 光盘 */public interface CompactDisc { void pla...

2019-08-28 11:12:00 201

转载 Spring入门(十):Spring AOP使用讲解

1. 什么是AOP?AOP是Aspect Oriented Programming的缩写,意思是:面向切面编程,它是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。可以认为AOP是对OOP(Object Oriented Programming 面向对象编程)的补充,主要使用在日志记录,性能统计,安全控制等场景,使用AOP可以使得业务逻辑各部分之间的耦合度降低,只专注...

2019-08-23 09:11:00 203

转载 Spring入门(九):运行时值注入

Spring提供了2种方式在运行时注入值:属性占位符(Property placeholder)Spring表达式语言(SpEL)1. 属性占位符1.1 注入外部的值1.1.1 使用Environment一般情况下,我们会将一些值放到配置文件中,等程序运行时再把值注入到一些字段上。假如,我们有一个test.properties配置文件,内容如下:book.author...

2019-08-16 09:10:00 237

转载 Spring入门(八):自动装配的歧义性

1. 什么是自动装配的歧义性?在Spring中,装配bean有以下3种方式:自动装配Java配置xml配置在这3种方式中,自动装配为我们带来了很大的便利,大大的降低了我们需要手动装配bean的代码量。不过,自动装配也不是万能的,因为仅有一个bean匹配条件时,Spring才能实现自动装配,如果出现不止1个bean匹配条件时,Spring就会不知道要装配哪个bean,抛出o...

2019-08-15 09:02:00 179

转载 Spring入门(七):Spring Profile使用讲解

1. 使用场景在日常的开发工作中,我们经常需要将程序部署到不同的环境,比如Dev开发环境,QA测试环境,Prod生产环境,这些环境下的一些配置肯定是不一样的,比如数据库配置,Redis配置,RabbitMQ配置。如果每次切换发布环境,都需要修改配置重新构建的话,那对程序员来说将是噩梦,针对这种场景,Spring提供了@Profile注解来实现按照不同的环境装配不同的bean,进而实现...

2019-08-14 09:44:00 264

转载 Spring入门(六):条件化的bean

1. 概念默认情况下,Spring中定义的bean在应用程序启动时会全部装配,不管当前运行的是哪个环境(Dev,QA或者Prod),也不管当前运行的是什么系统(Windows或者Linux),但有些使用场景下,我们可能需要条件化的装配某些bean,即当满足某一条件时,装配某些bean,当不满足某一条件时,就忽略掉某些bean。这个条件可以很简单,比如当某个jar包存在时,当存在某个环...

2019-08-13 09:40:00 250

转载 Java集合系列(四):HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法及区别

本篇博客主要讲解Map接口的4个实现类HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法以及四者之间的区别。注意:本文中代码使用的JDK版本为1.8.0_191值得注意的是,Map接口是独立的接口,并没有继承Collection接口(这里是重点,面试常问):public interface Map<K,V> { .......

2019-08-05 18:06:00 228

转载 Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及区别

本篇博客主要讲解Set接口的三个实现类HashSet、LinkedHashSet、TreeSet的使用方法以及三者之间的区别。注意:本文中代码使用的JDK版本为1.8.0_1911. HashSet使用HashSet是Set接口最常用的实现类,底层数据结构是哈希表,HashSet不保证元素的顺序但保证元素必须唯一。private transient HashMap<E,...

2019-08-01 13:58:00 291

转载 Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及区别

本篇博客主要讲解List接口的三个实现类ArrayList、LinkedList、Vector的使用方法以及三者之间的区别。注意:本文中代码使用的JDK版本为1.8.0_1911. ArrayList使用ArrayList是List接口最常用的实现类,内部通过数组来实现,因此它的优点是适合随机查找和遍历,缺点是不适合插入和删除。ArrayList类的代码声明如下所示:pub...

2019-07-29 18:13:00 164

转载 Java集合系列(一):集合的定义及分类

1. 集合的定义什么是集合呢?定义:集合是一个存放对象的引用的容器。在Java中,集合位于java.util包下。2. 集合和数组的区别(面试常问)提到容器,就会想起数组,那么集合和数组的区别是什么呢?(这里是重点,面试可能问的比较多)数组和集合都是Java中的容器数组的长度是固定的,集合的长度是可变的数组只能存储相同数据类型的数据,这里的数据类型可以是基本数据类型,也...

2019-07-26 17:06:00 758

转载 MyBatis从入门到精通(十四):在MyBatis中使用类型处理器

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解在MyBatis中如何使用类型处理器。1. 明确需求在设计之初,sys_role表的enabled字段有2个可选值,其中0 代表禁用,1代表启用,而且实体类中我们使用的是Interger类型:/** * 有效标志 ...

2019-07-24 15:10:00 217

转载 MyBatis从入门到精通(十三):使用discriminator鉴别器映射

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解鉴别器映射discriminator标签的简单用法。1. 明确需求在设计之初,sys_role表的enabled字段有2个可选值,其中1代表启用,0 代表禁用,当状态启用时就有对应的权限信息,当状态禁用时就没有对应的权限...

2019-07-19 11:50:00 125

转载 MyBatis从入门到精通(十二):使用collection标签实现嵌套查询

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解使用collection标签实现嵌套查询的方法。1. 需求升级在上篇博客中,我们实现了需求:根据用户id查询用户信息的同时获取用户拥有的角色。因为角色可以拥有多个权限,所以本篇博客我们升级需求为:根据用户id查询用户信...

2019-07-17 15:12:00 734

转载 MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解MyBatis中如何使用collection标签实现查询结果一对多映射。1. 使用collection标签需求:根据用户id查询用户信息的同时获取用户拥有的角色,一个用户可以拥有1个或多个角色。一般情况下,不建议直接修...

2019-07-16 11:59:00 160

转载 MyBatis从入门到精通(十):使用association标签实现嵌套查询

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解使用association标签实现嵌套查询的方法。1. 明确需求仍然延用上篇博客中的需求:根据用户id查询用户信息的同时获取该用户的角色信息(假设一个员工只能拥有一个角色)。在上篇博客中,我们分别使用了3种方式来实现这...

2019-07-12 13:13:00 490

转载 MyBatis从入门到精通(九):MyBatis高级结果映射之一对一映射

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解MyBatis中实现查询结果一对一映射的3种方式:使用别名实现自动映射使用resultMap配置使用resultMap的association标签配置1. 使用别名实现自动映射假设有这样1个需求:根据用户id查...

2019-07-11 14:32:00 106

转载 MyBatis从入门到精通(八):MyBatis动态Sql之foreach标签的用法

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解如何使用foreach标签生成动态的Sql,主要包含以下3个场景:foreach 实现in集合foreach 实现批量插入foreach 实现动态update1. foreach 实现in集合假设有这样1个需求...

2019-07-10 14:19:00 194

转载 MyBatis从入门到精通(七):MyBatis动态Sql之choose,where,set标签的用法

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解如何使用choose,where,set标签生成动态的Sql。1. choose 用法假设有这样1个需求:当参数id有值时优先使用id查询,当id没有值时就去判断用户名是否有值,如果有值就用用户名查询,如果没值,就使查询...

2019-07-09 14:14:00 360

转载 MyBatis从入门到精通(六):MyBatis动态Sql之if标签的用法

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!本篇博客主要讲解如何使用if标签生成动态的Sql,主要包含以下3个场景:根据查询条件实现动态查询根据参数值实现动态更新某些列根据参数值实现动态插入某些列1. 使用if标签实现动态查询假设有这样1个需求:根据用户的输入条件来查询...

2019-07-08 11:49:00 186

转载 MyBatis从入门到精通(五):MyBatis 注解方式的基本用法

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!1. @Select 注解1.1 使用Sql语句设置别名方式假设现在有个需求:根据id查询角色信息。使用注解方式该如何实现呢?首先,在接口SysRoleMappper中添加如下方法:@Select({"SELECT id,role_...

2019-07-05 09:40:00 233

转载 MyBatis从入门到精通(四):MyBatis XML方式的基本用法之增删改

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!1. insert用法1.1 简单的insert方法假如现在我们想新增一个用户,该如何操作呢?首先,在接口SysUserMapper中添加如下方法。/** * 新增用户 * * @param sysUser * @retur...

2019-07-04 10:04:00 192

转载 MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!1. 多表查询上篇博客中,我们示例的2个查询都是单表查询,但实际的业务场景肯定是需要多表查询的,比如现在有个需求:查询某个用户拥有的所有角色。这个需求要涉及到sys_user,sys_user_role,sys_role三张表,如何实现...

2019-07-03 09:49:00 161

转载 MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!1. 明确需求书中提到的需求是一个基于角色的权限控制需求(RBAC,即Role-Based Access Control),提到权限管理,相信大家都不陌生,因为大部分的系统都是需要权限管理的,我在上家公司负责的系统之一就是权限系统,设计思...

2019-07-02 09:38:00 369

转载 MyBatis从入门到精通(一):MyBatis入门

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸!1. MyBatis简介​ 2001年,Clinton Begin发起了一个名为iBATIS的开源项目,最初侧重于密码软件的研发,后来发展成为一款基于Java的持久层框架。​ 2004年,Clinton将iBATIS的名字和源码捐赠给了...

2019-06-28 17:41:00 437

转载 Spring入门(五):Spring中bean的作用域

1. Spring中bean的多种作用域在默认情况下,Spring应用上下文中所有的bean都是以单例(singleton)的形式创建的,即不管给定的一个bean被注入到其他bean多少次,每次所注入的都是同一个实例。Spring定义了多种作用域,可以基于这些作用域创建bean:单例(Singleton):在整个应用中,只创建bean的一个实例。原型(Prototype):每次...

2019-06-21 18:18:00 75

转载 Spring Boot入门(七):使用MyBatis访问MySql数据库(xml方式)

本系列博客带你一步一步的学习Spring Boot,如帮助到你,不胜荣幸,如有错误,欢迎指正!本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库(xml方式)的简单用法。本系列其它文章如下所示:Spring Boot入门(一):使用IDEA创建Spring Boot项目并使用yaml配置文件Spring Boot入门(二):使用Profile实...

2019-06-14 16:18:00 164

转载 Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)

本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正!本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法。1.前期准备假设你的机器已经安装好了MySql,我们先执行如下语句创建数据库和表:CREATE DATABASE springbootaction_db;create table aut...

2019-06-11 11:20:00 255

转载 Redis实战(一)Redis简介及环境安装(Windows)

提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗?什么是Redis?Redis能存储哪几种数据结构?Redis有几种持久化机制?它们的优缺点分别是什么?哪些场景需要使用Redis?什么是缓存雪崩,如何避免?什么是缓存穿透,如何避免?如果你都能回答...

2019-06-06 13:39:00 90

转载 RabbitMQ使用教程(五)如何保证队列里的消息99.99%被消费?

1. 前情回顾RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置RabbitMQ使用教程(三)如何保证消息99.99%被发送成功?RabbitMQ使用教程(四)如何通过持久化保证消息99.99%不丢失?截止目前,我们能够保证消息成功地被生产者发送到RabbitMQ服务器...

2019-05-31 09:22:00 104

转载 RabbitMQ使用教程(四)如何通过持久化保证消息99.99%不丢失?

1. 前情回顾RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置RabbitMQ使用教程(三)如何保证消息99.99%被发送成功?在上一篇博客中,我们讲解了如何通过RabbitMQ的生产者确认机制,保证消息尽可能的成功的发送到RabbitMQ服务器,这只是从源头降低了消息...

2019-05-30 10:14:00 139

转载 RabbitMQ使用教程(三)如何保证消息99.99%被发送成功?

1. 前情回顾RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置在以上两篇博客发布后不久,有细心的网友就评论,创建的队列和发送的消息,如果在没有启动消费者程序的时候,重启了RabbitMQ服务,队列和消息都丢失了。这就引出了一个非常重要的问题,也是面试中经常会问的:在使用...

2019-05-29 13:37:00 119

转载 RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置

上一篇博客 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 中,我们成功的安装好了RabbitMQ环境,并通过一个Java客户端示例了解了用生产者来发布消息,用消费者来消费消息。本篇博客主要讲解下RabbitMQ如何管理用户(新增/删除/修改密码),如何给用户设置角色,如何设置用户权限,接下来,我们一一讲解。1. 用户管理1.1 查看用户列表...

2019-05-24 16:04:00 484

转载 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例

你是否听说过或者使用过队列?你是否听说过或者使用过消息队列?你是否听说过或者使用过RabbitMQ?提到这几个词,用过的人,也许觉得很简单,没用过的人,也许觉得很复杂,至少在我没使用消息队列之前,听别人提到消息队列,都感觉很复杂,很高深。好了,言归正传,本篇博客我们就讲解下什么是消息队列,RabbitMQ环境的安装配置,最后通过一个Hello World示例了解下RabbitMQ...

2019-05-23 14:58:00 102

转载 Spring入门(四):使用Maven管理Spring项目

1. 为什么要使用Maven?之前我们新建的项目,项目所要依赖的第三方jar包都在项目的类路径下(通常为lib目录),如下所示:使用这种方式,我们无法知道第三方类库的依赖关系,比如导入一个特定的jar包时,可能此jar包还依赖于其他的jar包,其他的jar包又依赖于更多的jar包,这也是我们平常遇到的ClassNotFound异常的主要原因。为了解决这个问题,我们急需引入一个项目...

2019-05-20 16:19:00 238

转载 Java基础知识常见面试题汇总 第三篇

本篇博客讲解1个常见的面试题:Java中final finally finalize的区别。按我的个人理解,这个题目本身就问的有点问题,因为这3个关键字之间没啥关系,是相对独立的,我猜想这道题的初衷应该是想了解面试者对Java中final finally finalize的使用方法的掌握情况,只是因为3个关键字比较像,而成了现在网上流传的题目“Java中final finally fi...

2019-05-15 16:09:00 124

转载 Java基础知识常见面试题汇总 第二篇

1. JDK,JRE,JVM三者之间的联系和区别你是否考虑过我们写的xxx.java文件被谁编译,又被谁执行,又为什么能够跨平台运行?1.1 基本概念JVM:Java Virtual Machine,Java虚拟机。JVM并不能识别我们平时写的xxx.java文件,只能识别xxx.class文件,它能够将class文件中的字节码指令进行识别并调用操作系统上的API完成指定的动...

2019-05-13 16:56:00 119

转载 Java基础知识常见面试题汇总 第一篇

1. 前言参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后,一般都会让先做一份笔试题,然后公司会根据笔试题的回答结果,确定要不要继续此次面试,如果答的不好,有些公司可能会直接说“技术经理或者总监在忙,你先回去等通知吧”,有些公司可能会继续面试,了解下你的项目经验等情况。至少在工作的前5年甚至更久,面试一般不会跳过笔试题这个环节(大牛,个别公司除外),我自己也记不清...

2019-05-07 16:49:00 745

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除