一、AOP切面编程1、什么是AOPAOP是面向切面编程。全称:Aspect Oriented Programming面向切面编程指的是:程序是运行期间,动态地将某段代码插入到原来方法代码的某些位置中。这就叫面向切面编程。2、一个简单计算数功能加日记public class LogUtil { public static void logBefore(String method, Object.
1、什么是IOCIOC 全称指的是 Inverse Of Control 控制反转。原来我们使用Spring之前对象都是通过代码 new 对象()来自己进行创建。现在使用了Spring之后。只需要在Spring的配置文件中进行配置,那么spring就会帮我们new出对象来。2、什么是DIDI 指的是Dependency Injection 。是依赖注入的意思。BookService{ Bo
采用Spring Boot + Freemarker开发Web项目时,由于一些静态文件比较大,如果是在PC上访问影响不大,当在手机上访问时,特别是用流量访问时速度会慢很多,而且很耗流量。通过对请求进行抓包,可以发现每次进入一个页面都需要加载静态文件,如果不差钱的公司可以将静态文件放在CDN上来加快访问速度,或者用Nginx来做静态文件的缓存。今天给大家介绍一种其他的缓存优化方式,通过Spring
转载 2023-08-22 12:09:21
76阅读
SpringBoot中静态资源目录的问题:  首先在web的开发中,静态资源的访问是必不可少的,如:图片、js文件、css文件等,对于这些资源的访问,SpringBoot都提供了很好的支持,基本使用默认配置就能满足开发需求。在传统的web项目中,这些静态的资源都是放在WEB-INF目录下面的,而我们现在所使用的SpringBoot是一个“约定大于配置”的框架,所以我们对于这些静态的资源只需要按照约
转载 2023-07-03 23:03:11
116阅读
目录1 静态资源到存放路径2 如何访问静态资源3 源码解读4 自定义配置5 总结1 静态资源到存放路径实例: 那么这是如何进行通过链接进行访问,下面是资源配置方法,进行路径拦截之后找到对应的文件路径package com.ruoyi.framework.config; import org.springframework.beans.factory.annotation.Autowired; i
转载 2024-06-17 16:02:12
35阅读
Thymeleaf模板配置:maven添加支持如下:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>appli
转载 2023-06-18 12:33:39
311阅读
如果你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了。  通过上面url-pattern的配置,所有URL请求都将被Spring MVC的DispatcherServlet截获。这样的配置,会造成js文件、css文件、图片文
官方文档 https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/Spring Cloud gateway应用在之前也介绍过,Greenwich版本时就已经停止了对spring-cloud-netflix-zuul的更新,而spring cloud官方也推荐了使用ga
转载 2024-05-29 05:51:30
231阅读
Spring Boot 静态资源文件配置说在前面的话:创建SpringBoot应用,选中我们需要的模块SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来自己编写业务代码由于 Spring Boot 采用了”约定优于配置”这种规范,所以在使用静态资源的时候也很简单。SpringBoot本质上是为微服务而生的,以JAR的形式启动运行,但是有时候静态资源的访问是
转载 2023-08-24 12:55:56
64阅读
一、简述静态方法是属于类(class)的,普通方法属于实体对象(也就是 new 出来的对象)。Spring 注入是在容器中实例化对象,所以不能使用静态方法。Springframework 里,不能@Autowired一个静态变量,使之成为一个 Spring bean。例如下面这样:@Autowired private static OurBean ourBean;ourBean 在这种状态下不
Spring 依赖注入 static 静态变量相关问题 1.Spring 不支持依赖注入 static 静态变量
转载 2023-05-28 23:21:30
498阅读
SpringBoot的静态资源与Thymeleaf模板静态资源通过webjars访问webjars资源网:https://www.webjars.org/通过该网站导入的meven依赖会呈现固定结构。 以jQuery为例:<dependency> <groupId>org.webjars.npm</groupId> <artifa
转载 2023-07-03 23:02:35
221阅读
# 静态调用 Redis 实现数据存储 Redis 是一个开源的内存数据结构存储,广泛应用于缓存、消息代理和数据持久化等场景。它支持多种数据结构,如字符串、哈希、列表、集合和有序集合等。随着互联网应用的增多,对数据存储的需求也在不断增加,本文将通过静态调用 Redis 的方式,结合代码示例来介绍其基本操作和应用场景。 ## 1. Redis 的基本概念 在深入了解静态调用 Redis 之前,
原创 8月前
17阅读
在 JVM 中,将符号引用转换为调用方法的直接引用与方法的绑定机制相关目录静态链接动态链接方法的绑定机制早期绑定晚期绑定静态链接当一个字节码文件被装载进 JVM 内部时,如果被调用的目标方法在编译期可知,且运行期保持不变时。这种情况下将调用方法的符号引用转换为直接引用的过程称之为静态链接动态链接如果被调用的方法在编译期无法被确定下来,也就是说,只能够在程序运行期将调用方法的符号引用转换为直接引用,
转载 2023-10-28 11:31:31
28阅读
Dagger依赖注入的诉求, 这边就不重复描述了, 在上文Spring以及Guice的IOC文档中都有提及, 既然有了Guice,Google为啥还要搞个Dagger2出来重复造轮子呢? 因为使用动态注入, 虽然写法简单了, 耦合也降低了,但是带来了调试不方便, 反射性能差等一些缺点.而Dagger跟Guice最大的差异在于, 他是编译期注入的, 而不是运行时.他生成的代码可以直观的调试, 也不是
缓存穿透 缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存。如果数据库查询对象为空,则不放进缓存。缓存击穿 缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,数据库一定存
# 静态注入Redis:一种高效数据缓存技术 在现代软件开发中,数据缓存是一种常见的优化手段,它通过减少数据库的访问次数来提高应用程序的性能。Redis作为目前最流行的缓存解决方案之一,因其高性能、高可用性和丰富的数据类型支持而备受青睐。本文将介绍一种名为“静态注入Redis”的技术,这是一种在应用程序中静态地注入Redis缓存的方法,以实现更高效的数据访问。 ## 静态注入Redis的概念
原创 2024-07-15 21:05:52
23阅读
1. 前言在开发 spring 应用时,不可避免会有读取配置文件,注入到静态变量或者常量字段的场景。我们最常用的是 @Value 注解,但是 @Value 不支持静态字段的注入。本文搜索了常见的解决方案,发现或多或少都有一定的限制。于是结合自己对 spring 的了解,增强 @Value 的功能,实现静态字段的直接注入。代码实现没有经过严格测试,有问题请批评指正。2. 注入静态变量常规方案2.1.
转载 2024-03-21 21:26:32
721阅读
Redis的使用场景 目录缓存数据共享分布式分布式锁全局ID计数器限流位统计购物车用户消息时间线timeline消息队列抽奖点赞、签到、打卡商品标签商品筛选用户关注、推荐模型排行榜1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据共享分布式String 类型,因为 Redis 是分布
转载 9月前
7阅读
这里是征得哈哈哥本人同意搬运! 我看完一篇就搬运一篇  其中可能会插曲自己的理解  目录面试题1:为什么要用 Redis ?业务在哪块儿用到的?正经回答:深入追问:追问1:Redis里有哪些数据类型?追问2:Redis与Memcached有哪些区别?面试题2:Redis为啥是单线程的?正经回答:深入追问:追问1:单线程只使用了单核CPU,太浪费,有什么办法发挥多核CPU的性能嘛?面试题3
  • 1
  • 2
  • 3
  • 4
  • 5