![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 91
弦上的梦
黑夜前行的路上,你知道什么时候天会亮吗,你不知道,唯一能够知道的就是,走着走着天就亮了
展开
-
Spring源码是如何解决Bean的循环依赖
首先需要明白一点,只有单例类型的Bean,spring才支持循环依赖,scope为Prototype类型的Bean是不支持的。在Spring的DefaultSingletonBeanRegistry类中,你会赫然发现类上方挂着这三个Map:singletonObjects 它是我们最熟悉的朋友,俗称“单例池”“容器”,缓存创建完成单例Bean的地方。singletonFactories 映射创建Bean的原始工厂earlySingletonObjects 映射Bean的早期引用,也就是说在这个Map原创 2021-05-06 16:16:14 · 278 阅读 · 2 评论 -
springboot maven 打包插件介绍及注意事项
1. springboot项目默认生成的可执行jar,为什么不能作为依赖导入其他项目?Spring Boot 项目默认的插件是spring-boot-maven-plugin:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>使用上面的插件会将项目A打包原创 2020-12-30 16:35:09 · 538 阅读 · 0 评论 -
SpringBoot 集成 Impala + mybatis + druid
1. 获取依赖Impala的依赖在maven仓库下载不了,需要自己去官网下载: https://www.cloudera.com/downloads/connectors/impala/jdbc/2-6-3.html , 麻烦可直接去博主的GitHub项目中获取2. 配置Druid连接池Druid依赖:<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-b原创 2020-09-23 18:13:37 · 4759 阅读 · 5 评论 -
Java 模拟FTP工具操作远程服务器文件
模拟FTP功能操作文件,java多种处理方式,1. 导入FTP相关依赖<!-- ftp 所需的依赖 --><dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>262&...原创 2020-03-19 18:14:35 · 434 阅读 · 0 评论 -
spring-boot 项目引入第三方依赖,如何打包
项目环境:spring-bootmaven多模块项目需要引入外部jar包目录结构图如下:方式一, 打jar包,待写中。。。方式二, 打war包:1. 在对应子模块的pom.xml文件中引入jar包,本例因为在common和web 模块都引入了,因此则都需要分分别引入,common的pom.xml配置如下:groupId、artifactId、version都是可以自己随意填...原创 2020-02-21 21:50:39 · 2326 阅读 · 0 评论 -
UTC、GMT、时间戳之间的关系
时区世界时区的划分以本初子午线为标准,向东12个时区,向西12个时区,子午线所在区为0时区,东十二区和西十二区重合,所以一共是24个时区。GMT和UTCGMT: 即格林威治时间(Greenwich Mean Time),也是0时区的标准时间。指太阳横穿格林威治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不再作为世界标准时间使用。UTC: 即协调世界时...原创 2019-12-22 18:42:10 · 13599 阅读 · 0 评论 -
Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式
压缩为zip文件1. 通过java程序输出文件/** * 功能:压缩多个文件成一个zip文件 * @param srcfile:源文件列表 * @param zipfile:压缩后的文件 */public static void zipFiles(File[] srcfile, File zipfile) { byte[] buf = new byte[1024]; try {...原创 2019-11-06 18:32:31 · 7033 阅读 · 10 评论 -
基于Spring Security + OAuth2 的SSO单点登录整合时所遇到的跨域问题分析
基础环境服务端(认证中心,前后端可分离,可不分离) + 客户端技术架构:spring-security + oauth2博客详见:单点登录客户端,单点登录服务端问题描述客户端前后端分离,访问客户端前端将直接出现跨域请求,客户端后端添加跨域请求头也没用。客户端前后端不分离,将能够直接访问到客户端前端,但是客户端session失效后,继续浏览仍会出现跨域,自动跳转认证中心提供的登...原创 2019-09-08 13:51:55 · 3033 阅读 · 0 评论 -
代码优雅之道
1. 字符串相等的判断传统方式:thisName != null && thisName.equals(name);优雅方式Objects.equals(name, thisName);2. null对象的判断传统方式:!(list == null || list.isEmpty());优雅方式import org.apache.commons.collec...原创 2019-08-27 16:42:04 · 458 阅读 · 6 评论 -
基于Spring Security + OAuth2 的SSO单点登录(客户端)
1. 缘起为什么要把客户端单独拿出来写呢 ?博主也参考了网上很多写单点登录的,但基本上都是大同小异,在客户端的自身权限校验 和 单点退出 均未做处理,显示并不满足实际的业务开发。2. 核心流程客户端登录:用户访问客户端,客户端 security 发现此请求的用户未登录,于是将请求重定向到服务端认证,服务端检测到此请求的用户未登录,则将此请求跳转到服务端提供的登录页面(前后端分离则是前端登...原创 2019-08-22 18:47:17 · 6722 阅读 · 23 评论 -
spring-boot 集成 mybatis 通用 mapper 和 pagehelper
1. 项目所需依赖<!-- mybatis 依赖 --><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1&l...原创 2019-08-19 18:31:38 · 452 阅读 · 0 评论 -
整理常用正则表达式
1. 验证 (三段式) 版本号的正则表达式要求,必须是三位,x.x.x的形式,每位x的范围分别为1-99,0-99,0-99。不允许的情况0.x.x;01.x.x; x.0x.x; x.00.x; x.x.00; x.x.0x符合条件的正则表达式:^([1-9]\d|[1-9])(\.([1-9]\d|\d)){2}$...转载 2019-08-01 11:25:46 · 205 阅读 · 0 评论 -
基于Spring Security + OAuth2 的SSO单点登录(服务端)
理论知识spring securityOAuth2JWT传统登录登录web系统后将用户信息保存在session中,sessionId写入浏览器的cookie中,每次访问系统,浏览器自动携带此cookie,服务端根据此sessionId取到相应的session,若为空则表示登录已失效,不为空则表示用户已登录,不需要用户再次输入用户名密码。单点登录单点登录是一种多站点...原创 2019-07-23 18:01:55 · 3899 阅读 · 5 评论 -
MySQL 查询 树结构
1. 关于树结构此类结构的数据,通常需要表结构中含有id 、parentId等自关联字段,有时为了提高查询效率还可增加更多冗余字段,如index,index的值为所有父级目录的id字符串集合。关于树结构数据的组装,常见的写法是在程序中通过递归的方式去构建出一颗完整的树,单纯通过sql的方式其实并不常用,下面分别给出两种方式的例子。2. MySQL自定义函数的方式什么是MySQL自定...原创 2019-06-28 16:25:15 · 28491 阅读 · 7 评论 -
Java 通过反射获取私有构造、私有对象、私有字段、私有方法
1. 创建测试的私有对象/** * @author lirong * @desc 测试对象 * @date 2019/06/20 20:07 */public class Person { private int age = 5; private String name; private Person(){} private String tes...原创 2019-06-20 21:23:45 · 3930 阅读 · 0 评论 -
Runtime 调用Process.waitfor导致的阻塞问题
1. 关于Runtime类的小知识1. Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法2. Runtime中的exit方法是退出JVM...原创 2019-06-13 17:38:17 · 2632 阅读 · 1 评论 -
java.lang.IllegalStateException: getOutputStream() has already been called for this response
前情提要:1. 本项目为前后端分离项目,采用JSON数据进行通信。2. 此异常出现在后端的异常统一处理方法出3. 正常本机情况均不会出现,但是在服务器上部署就常抛出此异常统一的异常处理@ExceptionHandler(Exception.class) public void handleCustomException(Exception e, HttpServletResp...原创 2019-04-15 14:42:56 · 1341 阅读 · 1 评论