- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 SpringBoot打包排除依赖的jar包,并引入外部Jar启动
通常情况下,将SpringBoot项目使用mvn package命令打成可启动的jar包后(比如是demo-0.0.1-SNAPSHOT.jar),所有的字节码文件和依赖包都存在demo-0.0.1-SNAPSHOT.jar 中,体积是比较大的。那么我们如何将依赖的jar包和可启动的jar包分离呢,很简单,进行如下配置即可: 在pom文件中配置插件 <build> <plugins> <plu...
2021-10-20 23:23:11
2237
原创 windows环境中docker中部署的SpringBoot应用访问宿主机的mysql、redis连接不上问题解决方案
将Spring Boot应用打成jar包,再使用Dockerfile打成镜像,如果你的springboot配置文件中mysql和redis访问IP写的是127.0.0.1或localhost 是不行的。 因为docker中的127.0.0.1和localhost是它docker本地的,映射不到宿主机。 如果是windows环境,使用host.docker.internal去访问宿主机,例如:jdbc:mysql://127.0.0.1:3306/in...
2021-07-15 17:49:39
1495
5
原创 手撸LRU算法和LRU在Redis中的配置详解
1、概念LRU是Least Recently Used的缩写,即最近最少使用。百度百科中说:LRU是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。铁子们说:LRU是一种缓存淘汰算法,其核心思想是,如果数据最近被访问过,那么将来被访问的几率也更高。2、原理分析3、手写LRU4、LRU在Redis中的配置...
2020-05-27 10:38:55
1346
原创 从宏观角度分析Spring源码之AOP
众所周知,Spring容器的三大核心功能是IOC、DI和AOP,前面我们已经对IOC和DI的理论做了浅析,这篇文章将从AOP的概念、设计思路、应用场景、Spring AOP的源码分析四方面入手,理解下AOP究竟是个神马东东。1、概念AOP的英文全称是Aspect Oriented Programming,即面向切面编程。借鉴一下维基百科中对AOP相关概念的描述:Aspect是一种新的模块化机制,从关注点中分离出横切关注点是面向切面编程的核心概念。分离关注点使得解决特定领域问题的代码从业务逻辑中独
2020-05-18 15:36:00
1201
原创 从宏观角度分析Spring源码之IOC
今天是5月3号,烈日似火,热的让人喘不过气来。就在这个让人燥热的时刻我准备开始着手写Spring源码分析一系列文章。一是巩固自己的知识体系,二是分享一些技术心得给铁子们,让Spring技术原理通俗易懂的展现在大家面前,从此让世界上不再有不懂Spring原理的Java程序猿,让世界从此没有回答不上来的Spring技术面试。这篇文章我们从Spring核心IOC切入,分析一下Spring中的IOC机...
2020-05-03 17:17:41
1082
原创 在Spring MVC或Spring Boot中使用Filter打印请求参数问题
使用Spring MVC或Spring Boot中打印或记录日志一般使用AOP记录Request请求和Response响应参数,在不使用AOP的前提下,如果在Filter中打印日志,在打印或消费请求类型为Content-Type:application/json的请求时,会出现严重的问题。在Spring体系中,过滤器的定义我们一般采用继承OncePerRequestFilter的方式,当然也...
2020-04-29 11:43:36
2808
2
原创 浅谈Java领域中的SPI扩展机制
在Java领域,有一种重要的服务扩展机制,即SPI,它在编写框架和项目应用中起着重要的作用。SPI的英文全称为service provider interface,即服务提供接口,在JDK、Spring和Dubbo中是不可或缺的。一、JDK在JDK的java.util包下有一个非常显眼的类,即ServiceLoader。不妨打开该类的源码,看到注释的第一行是A simple service...
2020-04-28 11:33:46
768
原创 浅析缓存和数据库数据一致性的高深学问
如今在Web系统中,缓存的应用是保证系统吞吐量必不可少的技术。好多开发者认为,缓存太简单啦,一顿set和get操作就完事了,真的是很Soeasy!听到这些话,我笑了~~我为什么笑呢,有缓存使用经验的老铁们可能会明白,系统缓存和数据库数据一致性问题一直是技术界讨论的话题,现在我们就讨论下,系统和数据库如何才能保证数据一致性呢?首先大家要明白不使用更新缓存,而是使用删除缓存策略这句话,这里不...
2020-04-26 11:01:16
391
1
原创 Netty采用NIO而非AIO的理由
1、Netty不看重在Windows系统上的应用,而在Linux系统上AIO的底层实现仍使用EPOLL模型,没有很好的实现AIO,因此性能上没有明显的优势,而且被JDK封装一层也不容深度优化。2、Netty整体架构是Reactor模型,而AIO是Proactor模型,混合在一起会非常的混乱。3、AIO有个缺点是接收数据需要预先分配缓存,而不是NIO那种需要接收时才需要分配缓存,所以对连接数...
2019-12-31 16:32:28
582
1
原创 浅析在Spring Boot中应用Spring Security的配置代码
我们在用java写后端的时候,涉及到权限的话,除了自己写简单的权限管理代码外,还有Spring Security和Shiro两种选择,今天我们探讨下应用Spring Security安全框架下的配置。众所周知,在Spring Boot中配置Spring Security要先定义一个配置类,该类需要继承WebSecurityConfigurerAdapter,并加上注解@Configuratio...
2019-12-11 10:45:39
328
原创 springboot2整合shiro时@value注解无效解决方案
使用springboot整合shiro时,@value注解无法读取application.yml中的配置读取不到之前的配置如下:将LifecycleBeanPostProcessor的配置方法改成静态的就可以了LifecycleBeanPostProcessor配置成静态的首先加载该类,提前将bean注入到spring中,才能用@value获取配置值...
2018-08-10 11:06:32
1939
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人