自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MapStruct对象拷贝优化实现

MapStruct是一个Java注释处理器,用于为Java Bean类生成类型安全和高性能的映射器。它使您不必手工编写映射代码,这是一个繁琐且容易出错的任务。该生成器具有合理的默认值和许多内置的类型转换,但是在配置或实现特殊行为时,它会自动退出。与在运行时工作的映射框架相比,MapStruct具有以下优点:1、通过使用普通方法调用而不是反射来快速执行2、编译时类型安全。只能映射彼此映射的对象和属性,因此不会将订单实体意外映射到客户DTO等。3、独立的代码-没有运行时依赖4、如果发生以下情况,则在

2021-02-18 09:49:47 319 1

原创 suggest表单统一查询接口实现

1、controller控制层package com.sxc.workflow.controller.suggest;import com.sxc.workflow.client.suggest.ProcessSuggestServiceClient;import com.sxc.workflow.response.Page.PageResult;import com.sxc.workflow.response.suggest.ProcessSuggestItemDTO;import com.s

2021-02-18 09:21:46 310

原创 smart-doc文档生成

1、pom依赖<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration&gt

2021-02-02 13:39:35 606

原创 SpringBoot+freemaker实现word导出功能

使用SpringBoot+freemaker实现word导出功能1、引入pom依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency>2、加入工具类package com.jt.www.util.mail;import.

2020-11-29 19:29:42 217

原创 通用异常配置throw new LyException(ExceptionEnum.XXXXX)

1、异常处理应该如何书写是如何能实现throw new LyException(ExceptionEnum.GOOD_NOT_FOUND);这种效果的?首先2.1、首先建立一个CommonExceptionHandler 类,是RuntimeException捕获异常代码如下@ControllerAdvicepublic class CommonExceptionHandler { /** * 相比上面更改得原因是不想让em.getMsg()为字符串而是结果对象形式

2020-10-18 02:58:56 1057 2

原创 springboot项目使用tomcat启动,打成war包部署到服务器

tomcat部署启动类需要继承SpringBootServletInitializerpackage com.example.excel;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;import tk.mybatis.spring.annotati

2020-09-30 09:05:23 394

原创 使用springboot项目完成excel表格的导入导出功能

功能需求:excel导出一张模版表格给用户输入基本信息填写,然后用户上传excel,使用批量插入到数据库,并且要去重。引入pom依赖<dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.0.3</version> </dependency> &l

2020-09-30 08:46:11 1622 1

原创 SpringBoot中前端如果不上传文件导致MultipartFile参数报错的问题解决

SpringBoot中前端如果不上传文件导致MultipartFile参数报错的问题解决最近上传图片的项目遇到这么个错误,最初我们使用的是@RequestParam(“file”) MultipartFile file,就是在方法参数中接收MultipartFile multipartFile 参数时如果不传文件会报错。解决方案如下MultipartFile multipartFile = null;boolean isMultipart = ServletFileUpload.isMultip

2020-08-19 15:27:53 2862

原创 Spring的ImportSelector配合BeanPostProcessor手动自己实现经典场景AOP开关闭代理功能

接上篇的Import注解的三种方式,ImportSelector这篇主要做一个简单的案例,模拟aop是如何通过加注解就可以代理,不加就不返回代理对象。1、首先写两个简单的Dao和DaoImplpublic interface UserDao { public void query();}@Repositorypublic class UserDaoImpl implements UserDao { @Override public void query() {

2020-05-20 00:51:35 313

原创 利用Spring提供的扩展点实现简单版本的@MapperScan

首先这里说说我知道的spring提供的扩展点1、实现BeanFactoryPostProcessor干预BeanDefinition的信息例如:设置作用域为prototype@Componentpublic class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableB

2020-05-19 18:50:33 253

原创 SSM与VUE移动端跨域总结

1、新建filter类,配置请求头,以及允许访问的WEB服务器的域名/IP 地址和端口号注意这里不能**不然cookie无效。httpServletResponse.setHeader(“Access-Control-Allow-Origin”, “**”);package filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.

2020-05-19 16:43:52 333

原创 理解JDK8的ConcurrentHashMap底层原理

上文我们提到了ConcurrentHashMap1.7的一些关键知识点,现在我们来了解下ConcurrentHashMap1.8又是怎么实现的呢?ConcurrentHashMap1.8由于我们的Synchronized优化后,它不在使用1.7的分段锁了而是直接使用Node数组+链表+ 红黑树的结构,主要利用–> 优化的synchronized + Unsafe(cas)操作实现并发安全。直接进入主题。ConcurrentHashMap1.8 put过程是什么样的呢?1、进来先并发安全的

2020-05-17 12:02:11 957 2

原创 动态依赖yml参数

1、接口package com.sxc.trade.biz.workflow;import lombok.Data;import lombok.ToString;import java.util.Date;public interface CallbackHandler { /** * 处理回调 * * @param callbackParam */ void callback(CallbackParam callbackParam)

2021-02-22 15:24:12 728

原创 线程池的使用

1、以下基本用法不会抛异常// 线程工厂,用于为线程池中的每条线程命名ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("stats-pool-%d").build();// 创建线程池,使用有界阻塞队列防止内存溢出ExecutorService statsThreadPool = new ThreadPoolExecutor(5, 10, 0L, TimeUnit

2021-02-20 15:21:07 567

原创 理解ConcurrentHashMap1.7源码分析

上文我们提到了HashMap1.7和1.8的一些关键知识点以及不同点,最后面我们提到了在我们并发编程时候可以使用下面三种方式来代替HashMap:使用Collections.synchronizedMap(Map)创建线程安全的map集合;HashtableConcurrentHashMap不过ConcurrentHashMap的并发度会比前两种更加高,本文我们就来聊聊ConcurrentHashMap1.7是怎么保证线程安全的。我们还得从它他的数据结构说起,如图从图中我们可以Concurre

2020-05-20 17:49:18 146

原创 ArrayList源码分析总结

简单介绍1、有下标,查询效率高2、数组增删改方法涉及数组拷贝,效率低3、方法未加锁及其他同步操作.线程不安全4、使用频率很高,理解较为简单创建注意:它的初始化并不是在构造方法,而是在add方法里private static int calculateCapacity(Object[] elementData, int minCapacity) { if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {

2020-05-17 20:11:44 123

原创 HashMap1.7和1.8源码解析

首先我们来说说HashMap的特点:1、HashMap存取是无序的2、键和值可以为null,但是键3、键的位置是唯一的4、JDK1.7HashMap采用的是数据结构是:数组+链表5、JDK1.8则采用的是:数组+链表+红黑树说到这里,我们就来看一下HashMap1.7的数组和链表是什么呢。他底层使用类似这样子的数组(这个数组put的时候才会创建出来,默认长度16),数组的每个节点是一个Entry(在jdk1.8名称变成了Node),Entry代码如下static class Entry&l

2020-05-17 13:00:07 424

原创 Maven

1.Maven是什么?在刚学maven时,我就把maven当作一个引入jar包的工具而已,以前是自己下载jar包,现在是只用在pom文件中填写相应的坐标就可以了。除此之外当我们需要使用的jar包依赖于另一个jar包时,maven会自动帮我们引入适用的版本。这就避免了我们自己下jar包,然后版本不匹配的问题。除此之外,我还模糊的知道一些maven的聚合和继承,之后在接手项目的时候还是吃了的大亏。于是打算重新学习一下maven。2.Maven的优势使用传统Web项目构建的CRM项目如下同样的项目,如果

2020-05-17 11:03:55 231

空空如也

空空如也

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

TA关注的人

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