自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AE86-打破常规的博客

专注于java开发技术

  • 博客(51)
  • 收藏
  • 关注

原创 windows实现单机部署多个tomcat服务器

第一步,环境准备:需要两个tomcat服务器,我这里的tomcat版本都是apache-tomcat-8.5.31,放在C盘目录下,即:tomcat1目录:C:\tomcat1tomcat2目录:C:\tomcat2接着配置系统环境变量,配置tomcat环境变量Path路径是不用配的:第二步,修改配置文件:tomcat1的所有配置默认不变 修改tomcat2...

2019-09-10 22:51:03 1142

原创 Java中返回类型使用泛型T和Object有什么区别?

最近开发需要实现对象的序列化和反序列化,在阅读jackson序列化和反序列化方面的源码的时候发现返回值写的是<T>,而我的自定义的方法写的的Object,引发了我的思考,Java中返回类型使用泛型T和Object到底有什么区别?还有到底那用哪个好?举个栗子,问:下面两个方法有什么不同?public Object doSomething(Object obj) {....}...

2019-09-01 20:36:27 2463

原创 数据库sql语句练习巩固与强化

一、SQL简介SQL:结构化查询语句,是一种总专门用来与数据库通信的语言。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase以及其他数据库系统。SQL尽管看上去简单,但他实际上是一种强有力的的语言,灵活使用其语言的元素,可以进行非常复杂和高级的数据库操作,接下...

2019-09-01 12:33:26 887 1

原创 Mybatis的批量插入的正确姿势

背景:电商项目的订单管理模块实现创建订单业务逻辑时,一个订单对应Order对应多个订单子明细OrderItem,创建订单成功需要对orderItem子明细表进行批量插入,OrderItemMapper如下: void batchInsert(@Param("orderItemList") List<OrderItem> orderItemList);对应的OrderItemM...

2019-08-24 19:26:02 2719

原创 电商项目收货地址模块在开发中如何解决横向越权安全问题

什么是横向越权/纵向越权?横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源。纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源。如何防止横向越权漏洞? 可通过建立用户和可操作资源的绑定关系,用户对任何资源进行操作时,通过该绑定关系确保该资源是属于该用户所有的。对请求中的关键参数进行间接映射,避免使用原始关键参数名,比如使用索引1代替id值1...

2019-08-23 10:35:11 490

原创 Mybatis中IFNULL(P1,P2)函数的用法;

问题:Mybatis中IFNULL(p1,p2)函数怎么用?带着问题我们根据场景分析Mybatis函数IFNULL<P1,P2>函数的用法,希望能帮助大家理解,场景功能实现:查询购物车已勾选的商品数量;CartMapperint selectCartProductCountByUserId(@Param("userId") Integer userId);Cart...

2019-08-22 19:09:08 2451

原创 MyBatis foreach标签<foreach></foreach>遍历数组查询

本案例通过商品的搜索案例来解读Mybatis foreach标签遍历数组的方法,背景是购物网站的前台商品按关键字和分类id搜索功能,废话不多数进入今天主角MyBatis foreach标签遍历数组:ProductMapper//根据关键字或者分类id集合来收搜索商品List<Product> selectProductByNameAndCategoryIds(@Param(...

2019-08-22 11:34:47 3664 1

原创 Java常见异常Runtime Exception、checked Exception以及Unchecked异常

Java异常这篇文章主要用来介绍Java的异常类型以及异常的处理要点,废话少说,直接进入主题:先上一张关于个人异常总结的思维导图:​​什么是checked异常和unchecked异常? Java原因对这两个定义很简单,将派生于Error和RuntimeException的异常称为unchecked异常,其余所有异常为checked异常。checked异常和unch...

2019-07-30 09:32:41 2203 1

原创 关于Spring之ApplicationContext上下文的理解

最近一直在看spring相关的知识,觉得spring真的是一个知识的宝藏,废话少说,进入今天的主角:ApplicationContext上下文;Spring有两个核心的接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口,他们代表的是spring的整个容器,spring容器是生成Bean实例的工厂,并管理容...

2019-07-09 15:56:01 867

原创 String对象的创建与原理

String对象的创建与原理创建方式 * 1.使用new关键字:String s1 = new String("abc"); * 2.直接指定:String s2 = "abc"; * 3.使用串联生成字符串:String s3 = "ab" + "c"; 原理一: 使用任何方式创建字符串 s=x时,java运行时会在缓冲池中查找是否存在内容相...

2019-07-02 15:13:26 408 1

原创 MyBatis Cause: java.sql.SQLSyntaxErrorException: FUNCTION xxx.sum does not exist.解决方案

最近在使用Mybatis的时候,在做后台查询购物车的商品总数的时候,用到sum()函数,废话不多数,代码如下:<select id="selectCartProductCountByUserId" parameterType="int" resultType="int"> select IFNULL(sum (quantity),0) as count from ...

2019-06-27 13:15:01 10184 6

原创 SpringBoot 2.1.6-RELEASE 整合 elasticsearch-6.2.2报错解决

一开始使用SpringBoot整合elasticsearch-7.0.0,运行报错:org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [{#transport#-1}{h0Pdm8CjQwOtttzVQLXrww}{127.0.0.1...

2019-06-25 14:52:33 2522 1

原创 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。

第一种方式:select Email from Person group by Email having count(Email)>1;第二种方式:select distinct a.Email from Person a,Person b where a.Email = b.Email and a.Id != b.Id;...

2019-06-24 23:08:20 5253

原创 解决Error creating bean with name 'entityManagerFactory' defined in class path resource[...]的问题

在使用spring data jpa时,实体类如下:@Data@Entitypublic class User { /** 编号 */ private Integer id; /** 姓名 */ private String name; /** 年龄 */ private Integer age; public User(){...

2019-06-13 15:56:21 60046 23

原创 mapper.xml中的useGeneratedKeys和keyProperty属性的作用

useGeneratedKeys和keyProperty关键字最近在写电商项目,写到地址管理模块的时候,遇到一个需求:添加地址时,添加地址成功之后给前端返回一个id方便给前端查询和测试,接下来就要用到mapper.xml中的useGeneratedKeys和keyProperty的两个属性。Mybatis在插入的时候,需要获取自增主键,这时候就在mapper.xml的中将useGenera...

2019-05-26 16:49:54 8673

原创 详细解读Spring缓存注解@Cacheable、@CacheEvict、@CachePut的使用

从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对...

2019-05-26 10:41:40 230

原创 关于org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name xx

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name xx的解决方案:先把异常贴上吧,我相信很多人会遇到这个问题:分析了很久问题的解方案,网上查了也有说各种各样的解决方案,问题所在是没有在Application上使用@MapperScan扫描包,我这...

2019-05-08 10:37:17 2556 1

原创 Java异常处理

Java异常的分类,在按照异常需要处理的时机分:1. 编译时异常(CheckedException)也称为受检查异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显示处理Checked异常,如果程序没有处理Checked异常,该程序在变异时就会大声错去无法编译。对 Checked 异常处理方法有两种:前方法知道如何处理该异常,则用 try...catch ...

2019-05-04 11:51:57 588

原创 Ajax之 X-Requested-With Http请求头

X-Requested-WithX-Requested-With是用来判断服务端request是来自Ajax请求(异步)还是传统请求(同步)if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase...

2019-05-03 23:43:00 1487

原创 详细解读AJAX请求

什么是 AJAX ?AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。而传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。XHR对象ajax的核心是是基于XMLHttpRequest对象(简称XHR)。IE7+、FireFox、Op...

2019-05-03 22:06:10 167

原创 拦截器的拦截地址格式path="/*"和path ="/**"的区别

拦截固定后缀*代表值拦截一层,**代表拦截任意层,即个栗子:如果是一个拦截器的配置,代表拦截 /target/下一层的请求,如:http://localhost/target/123会进入此拦截器,而http://localhost/target/123/java拦截不到,如果将*改为**,则前面的列举的两个地址都会被拦截。匹配url正确的格式为:/**/*.html错误:**.htm...

2019-04-30 13:22:24 5104

原创 Spring Boot集成Swagger设计RESTFul APIs

基本概述本文记载了Spring Boot+Spring Fox的方式整合Swagger框架SwaggerThe Best APIs are Built with Swagger Tools | Swagger--最好的API是用Swagger工具构建的,显然,Swagger是一个规范完成的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。官网:htt...

2019-04-29 15:50:14 266

原创 关于org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)的问题如何解决

近期在开发中遇到:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)的问题,这个问题的根源其实是在mapper配置文件与dao接口做映射绑定时候出现的问题,它所指的意识就是,接口与响应的xml找不到,或者是匹配不到,一般出现这个问题,只需要按照以下步骤去检查执行就可以解决:1.mappe...

2019-04-25 12:56:51 40742 7

原创 spring boot在运行测试类Error creating bean with name 'serverEndpointExporter' defined...问题解决方案

在springboot单元测试的时候会遇到很多问题,我在使用websocket的时候会运行测试类,报错:Error creating bean with name 'serverEndpointExporter' defined in class path resource [com/Jacklin/config/WebSocketConfig.class] ,我这里引入了注解@ServerE...

2019-04-23 09:44:23 10080 7

原创 websocket和http详细解读以及整合websocket整合spring boot过程

webscoket简介百度百科:WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。个人对websocket协议的理解“服务器推”场景的出现,服务器端信息随时可能变化, 我们希望将变化后最新的信息立即通知给客户端。但传统的解决方案是客户端要不断的轮询服务器,比如每秒1次,这样的轮询毫无置...

2019-04-17 22:09:14 1797

转载 IDEA十大热门快捷键

1智能提示Intellij首当其冲的当然就是Intelligence智能!基本的代码提示用Ctrl+Space,还有更智能地按类型信息提示Ctrl+Shift+Space,但因为Intellij总是随着我们敲击而自动提示,所以很多时候都不会手动敲这两个快捷键(除非提示框消失了)。用F2/ Shift+F2移动到有错误的代码,Alt+Enter快速修复(即Eclipse中的Quick Fix功...

2019-04-17 21:27:16 115

转载 URI和URL的区别和关联

转载来自:https://www.zhihu.com/question/21950864/answer/66779836从JDK1.5开始,http://java.net包对统一资源定位符(uniform resource locator URL)和统一资源标识符(uniform resource identifier URI)作了非常明确的区分。(1)URI是个纯粹的句法结构...

2019-04-08 19:59:39 10477

原创 SpringMVC中使用@RestControler和@Controller修饰controller返回结果的区别

@RestControler和@Controller的不同springmvc的web控制层-controller层通常会被@Controller或者@RestController注解给修饰,使用RestController注解相当于@Controller+@ResponseBody结合一起使用。(即:@RestController = @Controller + ResponseBody)...

2019-04-08 15:02:44 4609

原创 mybatis详细解读以及mybatis plus的使用

mybatis简介任何一门语言的最好学习的途径无非是它的官网:http://www.mybatis.org/mybatis-3/zh/index.htmlMyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接...

2019-04-07 21:11:05 4350

原创 SpringMVC中@RequestParam和@PathVariable的作用和区别

在SpringMVC中,两者都是将request的里的参数的的值绑定到controller里得的方法的参数的,区别在与URL请求的写法不同。使用@RequestParam时,URL这样写:http://localhost:8080/path?参数名=参数值使用@PathVariable时,URL这样写:http://localhost:8080/path/参数值@GetMapping...

2019-04-07 20:52:33 248

原创 mybatis-plus注解个常用方法

简单配置说明MyBatis-Plus 的配置异常的简单SpringBoot工程:配置MapperScan注解package com.example.mybatispluseasydemo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigu...

2019-04-02 00:27:17 7824 1

原创 window安装nodejs和npm详细过程

在win10安装Node.js+npm模块管理1.什么是Node.js?官方给出的解释:Node.js®是基于Chrome的V8 JavaScript引擎构建的JavaScript运行时。下载地址:https://nodejs.org/en/NPM(node package manager)即:Node.js的包管理工具,新版本的node.js都会包含NPM包管理工具,能解决Nod...

2019-03-28 12:42:43 20141 1

原创 转发和重定向即:getRequstDispatcher()和sendRedirect()两者的区别

1.request.getRequestDispatcher()是请求转发,前后页面共享一个request,request.getRequestDispather();返回的是一个 RequestDispatcher对象。2.response.sendRedirect()是重新定向,前后页面不是一个requestRequestDispatcher.forward()是在服务器端运行...

2019-03-26 13:37:09 346

原创 关于DAO和DTO的区别

DAO:数据访问对象(Data Access Object)。提供访问数据库的接口,或者持久化机制,而不暴露数据库的内部详细信息。DAO提供从程序调用到持久层的匹配。DTO(data transfer object):数据传输对象,作用仅在于在应用程序的各个子系统间传输数据,在表现层展示。与POJO对应一个数据库实体不同,DTO并不对应一个实体,可能仅存储实体的部分属性或加入符合传输需求的其他...

2019-03-24 23:11:24 1362

原创 Spring Boot整合swagger2

在整合之前先介绍一下什么是swagger、它对应的一些注解的主要以及如何设计RESTful风格接口。Swagger由来随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、先后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更...

2019-03-24 20:27:24 186

原创 数据库资源配置异常记录

数据库资源配置异常记录创建spring boot项目时,访问静态资源和数据库,主要配置数据源信息,这里使用application.yml格式(也可以使用application.properties)的形式,看个人喜欢,application.yml配置如下:spring: datasource: #注意这里的com.mysql.jdbc.Driver已经被启用换成com.my...

2019-03-24 11:46:45 167

原创 详细述说spring mvc工作原理

spring mvc是什么?springMVC是一个MVC的开源框架,springMVC=struts2+spring,springMVC就相当于是Struts2加上sring的整合,但是这里有一个疑惑就是,springMVC和spring是什么样的关系呢?这个在百度百科上有一个很好的解释:意思是说,springMVC是spring的一个后续产品,其实就是spring在原有基础上,又提供了w...

2019-03-23 11:00:22 203

原创 TCP三次握手(面试常问)

背景描述TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!TCP的几...

2019-03-23 09:49:31 1509 1

原创 Spring Security身份认证之UserDetailsService

Spring Security身份认证之UserDetailsService什么是Spring Security中的身份认证?让我们考虑一个每个人都熟悉的标准身份验证方案。提示用户使用用户名和密码登录。 系统(成功)验证密码对于用户名是否正确。 获取该用户的上下文信息(他们的角色列表等)。 为用户建立安全上下文 用户继续进行,可能执行一些可能受访问控制机制保护的操作,该访问控制...

2019-03-20 14:41:49 7059

原创 Spring Boot JPA分页 PageRequest.of代替过时的PageRequest方法

Spring Boot JPA分页 PageRequest.of代替过时的PageRequest方法该篇博客记录了关于Spring Data JPA之 new PageRequest遇到的问题最近在学习Spring Data Jpa数据持久层这一块知识的时候,在编些dao接口的单元测试类的时候回用到pageable分页能,发现在 new PageRequest时发现该方法已经被启用。...

2019-03-20 11:12:56 23191 6

空空如也

空空如也

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

TA关注的人

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