自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 ORA-00119: invalid specification for system parameter LOCAL_LISTENER异常解决

安装Oracle时,本地创建了多个数据库,但在创建第二个库时出现了问题,发现第一个库连接不上去了。 从oradim.log文件中看到以下异常: D:\programs\oracle_data\product\11.2.0\dbhome_1\bin\oradim.exe -startup -sid ...

2020-05-08 17:10:12 75 0

原创 Excel读写操作抽象简述

1、背景 很多项目里面都需要对Excel进行操作,这个时候我们一般使用POI工具,其中使用最多的三个场景如下: 生成导入模板: 需要为生成的Excel增加各种校验,如下拉、长度限制、单元格类型等; 只需要增加标题行,无数据行; 导入数据: 需要从单元格中读取各种类型的数据,如数字类型、文...

2020-02-24 19:04:13 70 0

原创 Redis操作无响应问题处理记录及总结

项目中某个功能使用了Redis做缓存,使用代码如下: Map<String, String> map = new HashMap<>(16); configItems.stream() .map(ProductionLineConfigItemDTO:...

2019-09-18 12:48:09 377 0

原创 JavaFX表格选择单元格时高亮所在行功能实现

使用JavaFX表格进行数据展示时,想要将当前所选择的单元格所在的行进行高亮,经过研究,实现方案见下文。 主要的思路:为Table定制TableCell,在TableCell中的RowIndex发生变更后,检查Cell所在行是否被选中,根据是否选中来设置单元格的背景色。 但按这种方式有一个问题,T...

2019-09-09 18:22:02 346 0

原创 编程基础-代码优化示例一(Builder模式、Stream及面向对象)

编码其实是一个可以做到非常精致的事情,每次回头看自己以前写的代码,总是觉得可以采用更好的方式去实现。从好的方面来说自己一直在进步,但从差的方面来说就是自己一直都做的不够好。 在日常编码过程中有时候灵机一动的念头,可能就是对于解决某些场景非常有用的方案,因此我决定将一些编码过程中的优化记录下来,总结...

2019-09-02 15:06:34 117 0

原创 IDEA插件开发总结

前言 IDEA是一个非常强大的工具,对于提高编程效率有非常大的帮助。当然他也不是全能的,有时候的一些需求他可能并没有办法直接满足,这个时候一般就需要通过他的插件来完成了。 目前Idea已经有了非常多的插件可以使用,但有时候可能现有插件并不能满足自己的需求,我就遇到了两个,如生成Bean的Sette...

2019-07-17 16:38:06 2027 0

原创 Idea插件开发-JPA、MyBatis实体类代码生成器插件

使用Spring开发项目的过程中,习惯于使用JPA进行表的创建、数据的更新等操作,但JPA对于复杂查询的支持比较差,因此很多时候又会同时引入mybatis来进行复杂查询。 再加上实体对象与传输对象分离,在开发一个简单的表单查询维护功能时,也需要创建很多的类来完成对应功能的开发,如DTO对象、数据...

2019-07-16 18:21:26 1817 0

原创 Spring Security OAuth专题学习-授权服务源码解读

授权服务主要完成以下四个核心功能: 客户端授权关系管理; 接收用户或客户端登录请求,生成accessToken Token存储 Token校验 本文将从源码层面分析授权服务如何实现上述四个功能。 关于Spring Oauth2的一些基础概念及示例,可参考:http://liumoran.cn/...

2019-05-24 09:37:01 385 0

原创 Spring Security OAuth专题学习-资源服务源码解读

通过Spring Security OAuth专题学习的前面四篇文章(http://liumoran.cn/topic/myTopics/1),对于Spring Security OAUth的基本使用已经有了一些基本的概念。 然而对于资源服务及授权服务生效原理,仍旧一无所知。接下来将从源码层面对S...

2019-05-14 09:22:26 128 0

原创 Spring Boot+Vue+Spring Security OAuth2的前后端分离项目实现研究

业余在开发一个Spring Boot+Vue+Spring Security OAuth2的一个前后端分离项目,其中遇到不少如跨域、OPTIONS请求处理、PreAuthorize注解无效、Token失效处理等问题,记录如下。 在此项目中,资源服务与授权服务在同一应用中,使用端口8081;前端应用...

2019-05-09 19:12:14 7569 1

原创 【问题处理】Spring Boot中kafka消息能力不足现象及问题解决

【本文首发于个人网址:liumoran.cn】 kfaka中主要包含生产者与消费都对象,生产者往队列中推送消息,而消费者则从队列中读取并处理消息。生产者推送的过程较为简单,而对于消费者来说,情况复杂且容易受各种因素影响。 1. 消费过程 消费过程如下所示: Created with Raphaël...

2019-04-02 19:27:44 1211 1

原创 Spring Boot中如何使得fastjson支持JDK8新时间对象LocalDate、LocalDateTime

在Spring Boot中使用fastjson来处理JSON格式转换时,默认情况下是不支持JDK1.8中的LocalDateTime及LocalDate等时间对象的。为使其支持这些对象,可以定义相关的ObjectDeserializer来处理,并将定义的对象通过ParserConfig.getGl...

2019-03-26 18:00:48 2753 0

原创 Spring Security OAuth专题学习-授权码模式及简化模式实例

本文是Spring Security OAuth2学习系列文章中的第四篇;主要讲解授权码模式(AuthenticationCode)及简化模式(Implicit)的使用。 关于密码模式、客户端模式及Spring Security OAuth2的一些基础知识,请移步本博客文章清单进行查看。 1. 简...

2019-02-27 18:42:27 800 0

原创 Spring Security OAuth专题学习-密码模式JWT实现

本文是Spring Security OAuth2学习系列文章中的第三篇;主要讲解密码模式下如何使用JWT管理Token。 关于密码模式非JWT的实现示例及Spring Security OAuth2的一些基础知识,请移步本博客文章清单进行查看。 1. JWT是什么 JWT是JSON Web To...

2019-02-27 10:40:20 1467 0

原创 Spring Security OAuth专题学习-密码模式及客户端模式实例

在https://blog.csdn.net/icarusliu/article/details/87911093一文中,介绍了OAuth的一些背景知识;本文将编写一个简单的示例,演示授权模式中的密码模式及客户端模式如何实现。 本示例中涉及到的几个对象其关系如下图所示: 密码模式一般用于用户对客...

2019-02-25 13:48:28 804 0

原创 Spring Security OAuth专题学习-背景

在公司项目中有使用到Spring Security OAuth2来对Spring Cloud集群的授权进行控制,为加深对这一技术的理解,自己花时间对OAuth的几个授权类型进行了学习,并记录如下。 本文主要介绍一些oauth2相关的背景知识及常见概念。后续将针对每一种授权模式进行实战演练。 1. ...

2019-02-25 09:17:43 167 0

原创 Spring Cloud配置文件加载简述

Spring Cloud中配置文件的加载机制与其它的Spring Boot应用存在不一样的地方;如它引入了bootstrap.properties的配置文件,同时也支持从配置中心中加载配置文件等;本文主要聚焦在这些配置文件加载的优先级及覆盖关系的控制上,对于帮助理解Spring Cloud的配置文...

2018-12-29 10:42:18 989 0

原创 nginx安装启动及动静分离、https配置

nginx主要有两个作用: 作为负载均衡服务器,可以将请求转发到后台多个Tomcat服务器; 可以专门处理静态页面,动态的JSP等放在Tomcat中处理; Win下的Nginx 下载:http://nginx.org 启动:下载后解压压缩包,然后直接双击nginx.exe;此时不会出现任何提示...

2018-12-28 11:33:00 220 0

原创 Java8日期类型常见用法总结

Java8新引入了一些日期、时间对象,这些对象与老的日期时间对象的使用上存在很大的不同,刚开始会很不习惯,但经过初步的使用后一定会更习惯使用这些新的API的,它使得对日期时间对象的操作上不会再如老的使用方式那样痛苦。 首先需要明确的一个概念就是,Java8中将日期与时间对象区分开了。如果只需要使用...

2018-12-13 10:05:03 1040 0

原创 通过训练将图像压缩到指定大小

最近在做一个东西,想要将图片压缩后存储到服务器上以节省空间。 直接使用JDK中的类进行压缩处理,但发现压缩后的图片大小跨度区间较大。 最终考虑在计算压缩比例时引入调整值,并对这个调整值进行训练,以尽量缩减压缩后大小与目标大小的差距。 使用不同大小的图片进行训练后就可以得到一组调整值,最终在代码中可...

2018-12-12 15:56:21 308 0

原创 JAVAFX开发的Redis客户端

未找到顺手的Redis客户端,便自己使用JavaFx开发了一个。 下载地址:https://pan.baidu.com/s/1ld5XSDnVOzh61v--WEzsPg 界面如下: 主要通过快捷键来操作;快捷键如下: CTRL+N:创建新连接; CTRL+E:切换连接; CTRL+F:跳转到输...

2018-12-07 15:59:21 303 2

原创 kafka消费者构建未返回问题分析-线程池异常处理

在上文中,配置kafka参数时因为参数类型与kafka预期的类型不匹配而导致其抛出了ConfigException。但很奇怪的是,在日志中看不到这个异常的任何信息,因此也导致我一直没往这方面考虑,最终通过一步步调试才发现对构造函数的调用居然没有返回,并经过进一步的分析搞清楚了是因为参数类型不匹配而...

2018-12-04 09:58:45 207 0

原创 kafka消费问题处理记录

公司系统内部数据交换使用了kafka,最近发现有时会报以下异常: org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has already reba...

2018-12-03 19:31:53 765 0

原创 MVN指定打包需要包含的目录

在使用jpamodelgen生成源码后,源码生成的目录在target目录下; 如果此时又想使用mvn将项目打成jar包,那么生成的源码并不会打到JAR包中去。此时,需要在pom.xml文件中将该目录包含进去: &lt;resources&gt; &lt;resource&...

2018-11-22 15:36:54 3131 0

原创 JavaFX开发的开发常用工具集——清单管理工具、命令行加强工具及HTTP调用工具

在软件开发过程中,经常会需要使用到一些工具,如清单管理、HTTP调用测试等,电脑上经常要装一堆的软件,而且这些软件经常不是很满足自己的使得习惯。作为一个开发人员,很自然的就想按自己的想法开发一些工具来供自己使用,因此这个工具集就因此而产生了,并且在使用过程中仍在不断优化与增加。 目前包含了三个工具...

2018-10-14 14:50:46 871 0

原创 SpringBoot使用EnableWebMvc无法加载静态页面的问题解决

当在项目中使用EnableWebMvc注解时,默认情况下页面等静态资源没有办法访问到。前台将会报404,后台出现以下错误: No mapping found for HTTP request with URI [/test.html] in DispatcherServlet with name ...

2018-09-20 19:22:02 1935 0

原创 Spring Validation及消息国际化.md

在项目中,接收到前端或者其它客户端的调用请求时,需要对传入的参数进行校验。完成这些校验最原始的做法就是编写代码一个个参数进行判断,如判断是否为空、长度是否符合要求、格式是否符合要求等;对于一些简单的输入还好,越复杂的输入,这些校验的代码及逻辑越长,而且在校验失败后组装的返回消息也是因人而异,导致同...

2018-09-19 09:51:23 4480 5

原创 Spring Boot静态页面配置

在使用Spring Boot时,如果页面也在同一个项目,需要添加以下配置,否则DispatchServlet会去查找Handler处理页面请求,而导致报以下的错: Could not resolve view with name 'test' in servlet with n...

2018-09-19 09:43:52 373 0

原创 SpringBoot国际化配置分析

DispatcherServlet使得开发人员可以通过客户端的Locale来自动转换消息进行国际化;在整个国际化的过程中,主要分成两步,一是解析客户端的Locale,一是查找国际化的消息; 1. 解析Locale 解析Locale是通过LocaleResolver来完成的。 当有请求时,...

2018-09-17 08:56:50 1296 8

原创 Spring异常处理方案

1. 概述 主要主是将错误信息的错误码及描述信息保存到Properties文件中,然后提供工具类来读取这些错误信息并创建RestException。 涉及的类图如下: 2. 错误信息定义文件 # 角色 role.exists=S04M001,角色名称已存在 role.not.exi...

2018-07-03 20:01:42 552 0

原创 0 代码量杂谈

在使用POI导出Excel文件时,如果某个单元格需要设置成下拉选择的方式,并且下拉列表数目大于255时,直接写序列将会报错: java.lang.IllegalArgumentException: String literals in formulas can't be bigger ...

2018-06-21 13:30:35 191 0

原创 8 Spring Boot返回数据及异常统一封装

项目开发中,一般情况下对数据返回的格式可能会有一个统一的要求,一般会包括状态码、信息及数据三部分。举个例子,假设规范要求数据返回的结构如下所示: {"data":[{"id":5,"userId":5,"name"...

2018-05-30 20:07:03 11819 11

原创 4 Spring Cloud集群服务清单及搜索页面实现

在使用Spring Cloud的集群中,有时候想要看到集群中所提供的所有服务清单。但目前未找到较好的应用。Swagger能够提供每一个应用所提供的服务清单,但集群中所有的服务清单并没有集成起来。想要看哪个应用提供的服务清单需要到各个应用上去查看。而且它所提供的信息过多,很多时候都不需要使用到。 ...

2018-05-25 09:26:50 887 0

原创 Spring测试静态方法打桩-PowerMockito及SpringBootTest结合使用

Mockito无法对静态方法进行Mock,如果需要Mock静态方法,需要使用到PowerMockito。 1. Maven依赖 &lt;dependency&gt; &lt;groupId&gt;org.powermock&lt;/gro...

2018-05-24 08:43:59 7532 0

原创 基于Spring Cloud微服务集群的服务治理思考

就目前了解的情况来看,公司的服务提供方是较为混乱的。可能也是因为刚进公司对大多数服务都不是很了解的原因。至少目前来说还是一头雾水。 个人觉得在以下方面可以加强: 每一个服务提供方的功能范围需要明确,且能够从某种意义上与其它的服务提供方区分开来,形成文档来描述系统划分的原则与依据,协助使用者清...

2018-05-23 09:06:49 315 0

原创 Java并发基础-Fork、Join方式的并行计算研究分析

本文目录: 1 Fork/Join概述 2 示例 3 详解 3.1 ForkJoinPool 3.2 ForkJoinTask 3.3 RecursiveAction与RecursiveTask 1 Fork/Join概述 Fork/Join是JDK中提供的类似Map/R...

2018-03-21 18:32:25 190 0

原创 Java并发基础-锁的使用及原理(可重入锁、读写锁、内置锁、信号量等)

本文目录: 1 基础 1.1 可重入锁 1.2 读写锁 2 内置锁synchronized 3 显式锁Lock 3.1 简单示例 3.2 锁常用操作 3.3 读写锁使用示例 4 信号量Semaphore 4.1 信号量使用示例 4.2 方法清单 1 基础 1....

2018-03-20 15:03:12 1046 0

原创 Spring Boot基础-配置文件使用详解

使用Spring Boot进行应用开发时,配置项可以配置在配置文件中,Spring Boot通过一定的机制加载配置文件中的配置项,然后将设置到Bean中使用的地方去。 使用配置文件管理配置项有很多好处: 使用配置文件时,修改配置项不需要重新编译,而修改Java文件中的值时需要重新编译后才能使...

2018-03-16 18:12:37 312 0

原创 Java并发基础-Condition对象分析

Condition即条件,它用于线程检测条件是否满足,从而决定当前线程是否挂起或者继续执行;这个条件可以被其它线程所更新,并且在更新后通知挂起线程可以继续处理。如最经典的生产者与消费者模式,就可以通过Condition很方便的实现。 本文目录: 1 基础 1.1 Condition对象简单...

2018-03-15 20:00:22 265 0

原创 Java基础-序列化与反序列化理解要点

关于序列化与反序列化,主要涉及有以下知识点: 序列化指的是将对象转换成字节流;Class的信息和实例数据都会转换成字节流; 反序列化则是其反向的过程,指的是将二进制流的数据转换成对象。 序列化时使用的是ObjectOutputStream类的writeObject方法;而反序列化时使用的是Ob...

2018-03-14 22:57:38 105 0

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