自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TUTsmile的博客

个人学习心得笔记,希望与大家共同学习,指出我的问题

  • 博客(103)
  • 资源 (3)

转载 Spring Boot学习笔记(二十一)Spring boot 数据校验 @Validated、@Valid用法详解

文章目录约束注解(大多为 `javax.validation.constraints` 下的注解)启用校验使用消息示例进阶总结后端数据校验(JSR303/JSR-349、javax validation、hibernate validation、spring validation)后端数据校验如:请求参数不能为null、数值至少为5、email参数符合邮箱地址规则等,通常涉及到上述几种工具,其区别:JSR303/JSR-349、javax validation:JSR303是一项标准、JSR-349

2020-08-27 14:52:05 46

原创 Spring Boot学习笔记(二十)拦截器设计、开发、多拦截器的顺序讲解

1. 拦截器的设计所有的拦截器都需要继承HandlerInterceptor接口,该接口源码如下public interface HandlerInterceptor { /** * 在请求处理之前进行调用(Controller方法调用之前) */ default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Ex

2020-08-26 13:54:10 45

原创 Spring Boot学习笔记(十九)使用@RestControllerAdvice 统一返回信息格式,统一处理错误返回给前端的信息

参考Spring Boot @RestControllerAdvice 统一异常处理、@RestControllerAdvice构造统一返回值格式和统一异常处理、SpringBoot 使用 beforeBodyWrite 实现统一的接口返回类型1.创建好我们的统一返回格式//这些是lombok的注解@Data@NoArgsConstructor @AllArgsConstructorpublic class CommonResponse<T> { private boolea

2020-08-25 16:58:00 233

原创 Spring Boot学习笔记(十八)如何使用@NotBlank进行空校验,以及@NotBlank 与 @Valid 搭配无效的解决办法

我们的Controller如下所示import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;@RestControllerpublic

2020-08-24 19:49:34 191

原创 2020.8.19 解决Spring boot 中 使用redis进行缓存时乱码的问题

关于springboot 中使用 redis缓存的详细介绍,可以看我的文章:Spring Boot学习笔记(十七)整合 mysql、mybatis-plus 使用redis进行缓存解决办法很简单,添加一个配置文件即可,文件路径没有什么要求,因为 spring boot是根据 @Configuration 注解来进行配置重点的代码是:RedisSerializer.string()、RedisSerializer.json()@Configurationpublic class RedisCon

2020-08-19 17:32:17 45

原创 Spring Boot学习笔记(十七)整合 mysql、mybatis-plus 使用redis进行缓存(带工程源码)

文章目录1. 给springboot 工程添加pom依赖2. 在application中进行配置3. 启用缓存机制4. 开发缓存注解4.1 编写实体类SpringBootUser4.2 编写mybatis-plus相关文件4.3 编写调用方法1. 给springboot 工程添加pom依赖 <dependency> <groupId>mysql</groupId> <artifactId>mys

2020-08-19 17:23:53 83

原创 用cmd解决 spring boot项目启动报错:Web server failed to start. Port 8080 was already in use.

文章目录方法二:修改spring boot项目所监听的端口常见报错:Description:Web server failed to start. Port 8080 was already in use.Action:Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.Process finished with

2020-08-19 11:34:47 166

原创 element-ui tabs隐藏某个标签(v-show不起作用的解决方法)

文章目录解决方法v-show 为什么不起作用呢解决方法直接展示代码,代码如下所示<template> <div id="app"> <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane v-for="(item, index) in elTabs" :key="index" :label="item.label" :name="item.name"&gt

2020-08-19 10:33:08 247 1

原创 Java进阶学习笔记(十二)Java8重要特性stream详解

https://www.cnblogs.com/wuhenzhidu/p/10740091.html

2020-08-18 10:53:15 27

原创 Spring Boot学习笔记(十六)@Autowired和使用 new()区别

1.使用上的区别大家在使用@Autowired注解的时候,肯定会有疑惑,这个地方我使用@Autowired注入,和我使用new,这种写法的作用有什么区别呢?最重要的一点,使用new创建的对象,无法调用Spring容器内的实例。即 new出来的对象无法调用@Autowired注入的Spring Bean,否则报空指针异常,@Autowired注入Spring Bean,则当前类必须也是Spring Bean才能调用它,不能用new xxx()来获得对象,这种方式获得的对象无法调用@Autowired注

2020-08-13 16:06:27 141

转载 Spring Boot学习笔记(十五)mybatis(二)mybatis常用增删改查xml

我们利用以下sql,准备好我们的数据库-- 若有则删除DROP DATABASE IF EXISTS `blog_db`;-- 创建数据库CREATE DATABASE `blog_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 用户表CREATE TABLE `blog_db`.`user` ( `id` BIGINT NOT NULL AUTO_INCREMENT , `name` VARCHAR(45) NOT

2020-08-02 17:16:00 38

原创 Spring Boot学习笔记(十四)mybatis(一)使用IDEA 整合SpringBoot + mybatis详细流程(有工程源码)

发现一个教程:乐天笔记Mybatis (https://www.letianbiji.com/mybatis/),个人感觉很不错,他使用gradle搭建的SpringBoot,由于公司用maven搭建工程,所以此处我做了maven工程的SpringBoot和Mybatis整合

2020-07-30 11:34:57 58

原创 Spring Boot学习笔记(十三)事务(二)Spring boot事务使用(@Transactional声明式、编程式)

文章目录一、Spring boot 声明式使用(@Transactional)声明式事务配置参考注解事务@Transactional个人使用Spring Boot学习笔记(十一)SpringBoot 整合 jdbcTemplate(附带工程源码)的工程进行展示一、Spring boot 声明式使用(@Transactional)声明式事务配置参考事物配置中有哪些属性可以配置?以下只是简单的使用参考(详细解释可见 什么是事务?事务的概念解释)事务的传播性:@Transactional(propa

2020-07-29 19:42:03 50

转载 Spring Boot学习笔记(十二)事务(一) 什么是事务?事务的概念解释

本文转自有关Spring事务,看这一篇就足够了,仅进行了些许修改文章目录Spring事务传播机制事务的特性Spring事务的配置方式1. 编程式事务管理(手动实现回滚)2. 声明式事务管理(注解实现)事务的传播机制事务的隔离级别只读事务超时回滚规则Spring声明式事务配置参考本文将按照声明式事务的五个特性进行介绍:事务传播机制事务隔离机制只读事务超时回滚规则Spring事务传播机制事务的特性原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要

2020-07-29 17:24:04 41

原创 Spring Boot学习笔记(十一)SpringBoot 整合 jdbcTemplate(附带工程源码)

为了方便学习,我们直接创建一个新的Spring Boot工程,勾选web的Spring web、Sql的Spring Data JDBC、Spring MySql Driver即可Spring boot 工程后,添加以下依赖:

2020-07-29 15:04:31 41

原创 Spring Boot学习笔记(十)AOP底层原理(JDK动态代理)以及术语、以及应用(Aspect)

一、底层实现原理(JDK动态代理)AOP的底层实践是使用了java.lang.reflect.Proxy的newProxyInstance方法有三个参数:loader:class 加载器,你在某个类下使用Proxy.newProxyInstance,就使用该类的class加载器。interfaces:接口数组h :invocationHandler 即增强方法的处理方式根据这几个参数,我们开始编写我们的代码。首先是接口,代码如下public interface UserDao {

2020-07-28 20:27:03 71

原创 Spring Boot学习笔记(九)@Controller 注解的简单使用

需要一点Ajax或者Axios可以更好的理解此篇文章我们创建了Spring boot 的web项目之后,就需要用@Controller,直接上代码:一、示例代码,快速上手@Controllerpublic class HelloWorldController {// 请求的映射地址 @RequestMapping("/helloWorld")// @ResponseBody注释 会将 返回的东西会直接放入body中 @ResponseBody public

2020-07-28 20:25:51 20

原创 Java进阶学习笔记(十一)胎教级别的依赖注入(DI)和控制反转(IOC)思想讲解

参考轻松理解 Java开发中的依赖注入(DI)和控制反转(IOC)、Java:控制反转(IoC)与依赖注入(DI)、依赖注入Dependency Injection-依赖注入详解一、依赖注入依赖注入是一个常见的专业名词,但是较难理解。我觉得这个是因为依赖注入这个思想,其实就藏在面对对象的编程中。就好像每个人都会吃饭,但有一天突然要你科学解释,什么叫做咀嚼,你肯定也会不知所措。所以个人感觉可以解释为:注入依赖对象。1、什么叫注入有些人对于注入不太理解。用一个简单的例子来解释一下我们有个Task类

2020-07-24 19:40:52 49

转载 Java进阶学习笔记(十)Serializable 序列化和反序列化,serialVersionUID的意义

基本抄 Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个 Serializable 接口,也就是为啥要序列化c,serialVersionUID 这个的值到底是在怎么设置的,有什么用。有的是1L,有的是一长串数字,迷惑ing。我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题。在处理这个问题之前,你要

2020-07-23 20:50:23 47

原创 Java进阶学习笔记(九) 多线程编程(六)原子访问、AtomicInteger

一、原子操作的概念原子操作就是最小的,不可再次拆分的操作,也就是即不可中断的操作,比如赋值操作int i = 5;比如 i++ 这个行为,事实上是有3个原子性操作组成的。步骤 1. 取 i 的值步骤 2. i + 1步骤 3. 把新的值赋予i这三个步骤,每一步都是一个原子操作,但是合在一起,就不是原子操作。就不是线程安全的。换句话说,一个线程在步骤1 取i 的值结束后,还没有来得及进行步骤2,另一个线程也可以取 i的值了。这也是分析同步问题产生的原因 中的原理。i++ ,i–, i = i

2020-07-23 20:06:40 31

转载 Java进阶学习笔记(八) 多线程编程(五)LOCK对象

文章目录LOCK对象1、 使用Lock实现同步效果2、tryLock3、线程交互4、总结Lock和synchronized的区别LOCK对象1、 使用Lock实现同步效果示例Lock是一个接口,为了使用一个Lock对象,需要用到newLock lock = new ReentrantLock();与 synchronized (someObject) 类似的,lock()方法,表示当前线程占用lock对象,一旦占用,其他线程就不能占用了。与 synchronized 不同的是,一旦synch

2020-07-23 19:32:35 22

原创 Java进阶学习笔记(七) 多线程编程(四)线程池详解

参考Howj、易百教程、Java线程池全面解析、Java线程池使用详解、Java线程池详解不明白欢迎评论区留言讨论,共同学习。文章目录一、何为线程池二、使用基本线程池1、线程池类ThreadPoolExecutor简要讲解2、workQueue工作队列类型参数详解2.1 例子一:使用直接提交策略,也即SynchronousQueue。2.2 例子二:使用无界队列策略,即LinkedBlockingQueue2.3 例子三:有界队列,使用ArrayBlockingQueue。3、handler 拒绝策略详

2020-07-23 15:54:16 36

原创 Java进阶学习笔记(六) 多线程编程(三)死锁、线程间的交互(wait、notify和notifyAll)

将会学习、讨论https://how2j.cn/k/thread/thread-deadlock/356.htmlhttps://how2j.cn/k/thread/thread-wait-notify/358.html

2020-07-22 23:33:29 49

原创 Java进阶学习笔记(四) 多线程编程(一)线程状态简介、启动线程、线程方法

本文参考HOW2J教程、菜鸟教程添加链接描述文章目录一、线程状态简介二、启动线程1、继承线程类2、实现Runnable接口3、匿名类三、线程方法1、sleep2、join3、线程优先级4、暂停5、守护进程一、线程状态简介新建状态:使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。就绪状态:当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线

2020-07-22 15:06:53 27

原创 Java进阶学习笔记(一)全网最详细的 forEach、Lambda表达式、双冒号操作符(方法引用)、函数式接口笔记,大量实例

先直接贴上使用方法以下三种代码执行效果相同for (Object n : list) { System.out.println(n); }list.forEach(n -> System.out.println(n));list.forEach(System.out::println);一、Lambda表达式例子// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3

2020-07-22 14:32:42 62

原创 Java进阶学习笔记(三) 反射教程详细笔记

主要参考HOW2J发射机制系列教程、Java 反射 -超详细讲解(附源码)一、反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。或许有人奇怪,我在编写代码时,也能够获取这个类的所有属性和方法,为何需要反射呢?我们在编写代码的时候,是在编译前获取对象,而反射是在程序运行时获取对象。结论: 运行时获取对象用的应用场景: 之后学习切面的时候,

2020-07-22 09:34:01 27

原创 Java进阶学习笔记(二)泛型方法<T>T 与 T不同点

结论<T> T 方法可以接受任意类型参数,T 在初始化(new)的时候已经限定了T的类型,只能接受对应类型的参数说明定义的泛型如下所示public class GenericsHolder<T> { private T data; /** * 这个<T> T 可以传入任何类型 * 参数T * 第一个 表示是泛型 * 第二个 表示返回的是T类型的数据 * 第三个 限制参数

2020-07-21 16:02:08 79

原创 Spring Boot学习笔记(八)spring中如何使用监听器(Listener)监听事件,完整例子

完整介绍spring 监听的三部分,有完整的代码展示

2020-07-21 13:52:33 62

原创 Java进阶学习笔记(五) 多线程编程(二)线程同步安全问题:synchronized的作用与应用、线程安全的类

1. synchronizedsynchronized用于并发编程中,可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块2. 锁方法先通过runnable实现一个简单的多线程,用synchronized修饰increase我们的目标是通过两个线程,使用 i++,让 i 增长至20000public class SynchronizedTest implements Runnable { static int i = 0; public synchronized voi

2020-07-20 16:45:53 56

原创 Spring Boot学习笔记(七)Spring 中 InitializingBean 作用(如何在项目初始化时对常用数据进行缓存)

一、InitializingBean 的作用InitializingBean作为一个接口,只有一个需要重写的方法@Compomentspublic class LearnClass implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { System.out.println("成功调用afterPropertiesSet"); }}Sp

2020-07-20 15:46:44 68

原创 SLF4J快速上手、isDebugEnabled有何作用

学习 官方文档 的过程中开始一、项目起步 HelloWorld public static void main(String[] args) { //输入类名 Logger logOne = LoggerFactory.getLogger(LearnApplication.class); logOne.info("helo world"); //输入String Logger logTwo = LoggerFactory.getLogger

2020-07-20 11:14:40 120

原创 小程序踩坑:小程序解密手机号,获取session_key失败的问题

微信解密手机号注意事项。session_key可能会过期,有人为了解决这种问题,采取每次解密都获取最新session_key的操作但实际中这么操作的时候,会出现问题。(以下为每次都获取最新的流程)点击登录或注册按钮:wx.login 通过code,调用后端接口getMsg获得session_key 获取手机号解密成功:进行登录操作 手机号解密失败: wx.login 调用后端接口getMsg获得session_ke

2020-06-02 16:13:37 1135

原创 websockt中无法使用service、repository

在你的websocket中,使用加入以下代码@ServerEndpoint(value = "/kungfupeng/websocket")//使用control和compoment效果相同@Componentpublic class CustomWebSocket { private static UserEntityRepository userEntityRepository; @Autowired public void setUserService (UserE

2020-05-18 22:16:01 72

原创 Spring Data Jpa:@ManyToMany 报错java.lang.StackOverflowError

在使用@ManyToMany注解的时候,在输出实体类时,出现了java.lang.StackOverflowError报错,这个是因为在实体类中,使用了@Data注解,@Data注解中的@ToString会导致java.lang.StackOverflowError此时需要将手动重写ToString方法,改写如下(不能包含ManyToMany属性):@Entity@Data@Table(name = "sys_role")public class Role { @Id @Gene

2020-05-13 17:33:19 95

原创 Spring Boot学习笔记(六)Spring Data Jpa 快速上手(五)多对多@ManyToMany 以及级联操作
原力计划

阅读此文章需要有基础的jpa知识,此处不讲述entity、repository。可以查看我之前的文章Spring Data Jpa 快速上手(一)使用spring data jpa 实现增删改查1.创建表和实体类此次我们使用最常见的多对多关系,用户与角色,一个用户可以拥有多个角色,一个角色也可以被多个用户拥有。此时我们需要一个中间表保持两者的关系,因为我们通常是赋予用户某个角色,即以修改用户为主体,即虽然是多对多,但仍可视为User为主,Role为从,所以中间表在User中进行维护。此外,大家可以发

2020-05-13 17:26:32 128

原创 Spring Boot学习笔记(五)Spring Data Jpa 快速上手(四)多对一@ManyToOne、一对多@OneToMany,以及级联操作
原力计划

建立表、实体类@Entity@Table(name = "cst_customer")@Datapublic class Customer { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "cust_id") private Integer custId; @Column(name = "cust_address") private String cus

2020-05-13 15:27:44 84

原创 Spring Boot学习笔记(四)Spring Data Jpa 快速上手(三) jpa、jpql的多条件查询与动态查询、Specification动态查询 与 PageRequest 分页
原力计划

1.多条件查询多条件查询可按照我写的Spring Data Jpa 快速上手(二) jpa命名规则 与 Jpql、Sql通过命名完成多条件查询,多个条件之间用And连接例子如下:public interface UserEntityRepository extends CrudRepository<UserEntity,Integer> {// 多条件查询的命名规则// findBy + 属性名称 + “查询方式” + “多条件的连接符(and | or)” + 属性名称

2020-05-13 00:04:20 114

原创 Spring boot报错:failed to load applicationcontext

网上多为解释Spring对于此报错的处理,但由于Spring boot多为自动配置,所以无法参照旧教程解决此问题。我遇到的情况是,@Query中,命名写错导致, @Query(value = "select new map(u.id as id, u.name as name) from UserEntity u where u.email like :email") public List<Object> findByLikeEmailGetIdAndName(String

2020-05-12 15:56:16 99

原创 Spring Boot学习笔记(三)Spring Data Jpa 快速上手(二) jpa命名规则 与 Jpql、Sql
原力计划

1.1 Jpa命名规则采用小驼峰命名法关键字方法命名sql where字句AndfindByNameAndPwdwhere name= ? and pwd =?OrfindByNameOrSexwhere name= ? or sex=?Is,EqualsfindById,findByIdEqualswhere id= ?BetweenfindByIdBetweenwhere id between ? and ?LessThanfindBy

2020-05-12 00:05:00 140

原创 Spring Boot学习笔记(二)Spring Data Jpa 快速上手(一)使用spring data jpa 实现增删改查,Spring boot进行单元测试
原力计划

环境准备在你的application.properties进行如下设置其中datasource.sul,username和password写自己的数据库配置spring.datasource.url=jdbc:mysql://localhost:3306/db_example?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTCspri

2020-05-11 12:02:52 72

springBoot-mybatis-redis 整合解决乱码问题.rar

文章 https://blog.csdn.net/TUTsmile/article/details/108097220 所对应的工程

2020-08-19

SpringBootAndMybatis.rar

文章 使用IDEA 整合SpringBoot + mybatis详细流程 https://blog.csdn.net/TUTsmile/article/details/107681382 的工程

2020-07-30

springboot-jdbctemplete.rar

https://blog.csdn.net/TUTsmile/article/details/107655565 文章所对应的工程

2020-07-29

空空如也

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