- 博客(56)
- 收藏
- 关注
原创 缓存穿透和缓存击穿名字是怎么起的,如何能够快速记忆?
缓存雪崩是指缓存在同一时间大面积的失效,后面的请求都直接落到了数据库上,造成数据库短时间内承受大量请求。含义:指一个热点数据突然失效,失效期间又被大量请求同时查询,导致这些请求都打破(击穿)了缓存,直接访问数据库。含义:指恶意或非恶意请求查询一个不存在的数据,导致这些请求都穿过缓存直接访问数据库,从而造成系统负担。缓存穿透和缓存击穿都是与缓存相关的问题,但涉及不同的情况和解决方案。缓存击穿中的“击穿”可以想象成缓存被请求“击破”,失效了。缓存穿透中的“穿透”可以想象成请求穿过缓存层。
2024-08-05 11:38:57
310
原创 MySQL数据库中,redo log、relay log和binlog(binary log)、undo log 的区别和联系?
记录内容:Binlog记录了对数据库进行的所有更改操作,包括数据库结构的变更(如CREATE、ALTER)和数据内容的变更(如INSERT、UPDATE、DELETE)。然后,从库会执行relay log中的SQL语句,将主库的操作应用到自己的数据上。Relay log是在主从复制中从库上使用的,用于存储从主库复制过来的binlog内容。作用:Redo log是InnoDB存储引擎特有的日志,用于确保事务的持久性和一致性。Redo log和binlog都是用于确保事务的持久性和数据库恢复的重要工具。
2024-08-02 15:51:16
544
原创 ApplicationRunner applicationRunner 是什么?
ApplicationRunner 是 Spring Boot 中的一个接口,用于在 Spring Boot 应用程序启动后执行特定的任务或逻辑。它允许开发者在应用程序完全启动后执行一些初始化操作,例如加载数据、调用外部服务或执行其他业务逻辑。
2024-07-16 12:15:47
436
原创 关于Spring容器的一些理解:如何将类交给Spring容器管理,Spring容器如何实现将类进行自动注册
如果没有显式地配置 @ComponentScan,Spring 默认不会进行自动组件扫描,因此标注了 @Component、@Service、@Repository 或 @Controller 等注解的类不会自动注册为bean。@Configuration 类中的@Bean 方法:如果你使用了Java配置类 (@Configuration 注解的类),可以在其中定义 @Bean 注解的方法,方法的返回值类型即为要注册为bean的类。
2024-07-04 12:06:20
593
1
原创 【eladmin项目拆解】注解@RequiredArgsConstructor详解
这个注解通常用于简化 Java 类的编写,特别是用于创建不可变对象时很有用。在使用 @RequiredArgsConstructor 注解后,Lombok 会为每个带有 @NonNull 注解的成员变量生成一个对应的参数,并在构造函数中进行初始化。这样可以减少重复的样板代码,提高代码的可读性和可维护性。这时候, @RequiredArgsConstructor 写在类上面可以代替@AutoWired注解,需要注意的是:在注入的时候需要用final定义,或者使用@notnull注解。
2024-04-22 11:15:39
449
原创 【eladmin项目拆解】登录功能实现源码
具体路径为:你的项目路径\eladmin\eladmin-common\src\main\java\me\zhengjie\utils\RedisUtils.java。项目作者把这个权限认证的功能写在了路径之下:你的项目路径\eladmin\eladmin-system\src\main\java\me\zhengjie\modules\security\security。接下来,我会拆解一下用户管理模块代码,然后基于用户模块,编写自己的文章管理模块代码。
2024-04-19 10:30:05
517
原创 【eladmin项目拆解】项目用到的技术栈介绍
后端:Spring Boot 2.6.4Mybatis-PlusJWTSpring SecurityRedis前端:vue
2024-04-17 22:41:20
305
原创 nvm设置淘宝镜像
前端安装完 node 后,最好设置下淘宝的镜像源,不建议使用 cnpm(可能会出现奇怪的问题)在 ~/.npmrc 加入下面内容,可以避免安装 node-sass 失败。配置后可通过下面方式来验证是否成功。.npmrc 文件位于。
2024-04-08 23:45:11
1338
原创 Java是用什么语言写的?PHP呢?
PHP的内核是C语言编写的基础好效率高,可以用C语言开发高性能的扩展组件;PHP的核心包含了数量超过1000的内置函数,功能应有尽有很全面,开箱即用程序代码简洁;[26]PHP数组支持动态扩容,支持以数字、字符串或者混合键名的关联数组,能大幅提高开发效率;[27]PHP是一门弱类型语言,程序编译通过率高,相对其他强类型语言开发效率快;Sun公司研发人员根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。
2024-03-26 09:05:25
606
原创 Java 如何针对不同类型判断一个对象是否为空
对于String类型的对象,除了判断是否为null外,还可以使用isEmpty()方法来判断字符串是否为空字符串。对于集合类型(如List、Set、Map等)的对象,可以通过isEmpty()方法来判断集合是否为空。以上是一些常用的方法来判断不同类型对象是否为空。在Java中,要判断一个对象是否为空,通常需要考虑不同类型的对象。对于数组类型的对象,可以通过判断数组的长度是否为0来判断数组是否为空。对于引用类型的对象,可以使用简单的判空操作来检查是否为null。
2024-03-26 08:43:45
305
原创 git checkout不同分支时,为啥会把当前分支的修改内容也带到新分支里面?
带有 -f 或 --force 选项切换分支: 使用git checkout -f 强制切换分支时,Git会无视未提交的改动,直接用目标分支的版本覆盖当前工作目录和暂存区的文件。这样就会导致原分支的未提交改动在新分支中“出现”。当你在Git中从一个分支切换到另一个分支时,如果没有先将当前分支未提交的改动暂存或提交,这些改动会被带到新分支。不带选项切换分支: 如果不加任何选项直接切换分支,并且当前有未提交的改动与目标分支的内容冲突,Git会拒绝切换并提示你先解决这些冲突或提交、暂存、恢复改动。
2024-03-15 14:36:36
2959
3
原创 合并开发分支的修改代码到release分支
如果远程仓库没有该分支13437-yg-release,会自动创建分支13437-yg-release。
2024-01-15 10:35:21
645
原创 @Configuration 什么时候被执行
Configuration 是 Spring Framework 中用于定义配置类的注解。在 Spring 应用中,@Configuration 注解的类通常包含 @Bean 注解的方法,这些方法用于创建和初始化应用中的对象。简而言之,@Configuration 类在 Spring 应用上下文启动时被执行,以创建和配置应用中的 bean 和其他组件。这使得你可以以编程方式(而非传统的 XML 配置方式)来配置你的 Spring 应用。
2023-12-20 10:10:42
1239
原创 执行npm install时老是安装不成功node-sass的原因和解决方案
4、所以就要针对性得修改你自己的版本(node 版本或者 node-sass版本),我们这里选择修改node-sass版本,因为其他依赖包要求node版本最低是14版本。3、看node的版本 和 node-sass的版本是否是相对应的,比如node-sass版本 是 4.12.+ ,那么node版本是 12的就可以,但不能超过 或低于12。1、首先看 package.json 中 ,node-sass和sass-loader是什么版本。一开始是:“node-sass”:“^4.12.0”。
2023-11-01 16:18:56
2720
原创 注解使用说明--@RequestMapping
上述代码中的 @GetMapping(“/users/{id}”) 表示处理 GET 请求,并且请求路径是 “/api/users/{id}”,其中的 {id} 是一个路径变量,可以在方法参数中使用 @PathVariable 注解来获取。通过 @RequestMapping 注解,我们可以实现灵活的请求映射,将不同的请求分发给对应的处理方法进行处理,从而构建出一个完整的 Web 应用程序。在方法级别上,@RequestMapping 可以指定具体的请求路径、请求方法、请求参数等条件。
2023-11-01 12:57:05
120
原创 注解 @TableField 的使用笔记
在使用 MyBatis-Plus 进行数据库操作时,我们可以通过 @TableField 注解来指定实体类中的字段与数据库表中的字段之间的映射关系。@TableId注解:MyBatisPlus在实现CRUD默认会将Id作为主键,在插入数据时,使用雪花算法生成Id,如果主键不叫Id则添加功能会失败。@TableField 是一个注解,用于标识实体类中的字段映射关系。上述代码中,userName 字段与数据库表字段 user_name 进行映射,而 age 字段并不是数据库表字段。
2023-10-24 12:38:29
3124
原创 Java getBytes()函数学习
getBytes() 方法有多个重载形式,可以根据需要指定字符集来进行转换。如果不指定字符集,则会使用默认的字符集。getBytes() 是Java中String类的一个方法,它可以将字符串转换为字节数组。
2023-10-20 16:38:24
1657
原创 @ServletComponentScan注解的作用
在SpringBootApplication上使用@ServletComponentScan注解后,Servlet(控制器)、Filter(过滤器)、Listener(监听器)可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册到Spring容器中,无需其他代码。
2023-10-20 10:29:31
374
原创 Java中的过滤器和拦截器的区别
过滤器Filter基于Servlet实现,过滤器的主要应用场景是对字符编码、跨域等问题进行过滤。Servlet的工作原理是拦截配置好的客户端请求,然后对Request和Response进行处理。Filter过滤器随着web应用的启动而启动,只初始化一次。Filter的使用比较简单,继承Filter 接口,实现对应的init、doFilter以及destroy方法即可。init() :该方法在容器启动初始化过滤器时被调用,它在 Filter 的整个生命周期只会被调用一次。
2023-10-20 10:04:25
66
原创 native方法是什么
这些native方法可以使Java程序能够直接访问底层系统资源或使用特定的硬件特性,从而扩展Java程序的功能。同时,在使用native方法时也需要注意安全和可维护性问题。使用native方法可以为Java程序提供直接访问底层系统资源、使用硬件特性或调用已存在的本地库等功能。Java提供了很多常用的native方法,这些方法通常是由Java的运行时库实现的。在Java中,native方法是指使用其他编程语言(如C或C++)编写的方法,它可以在Java程序中被调用。
2023-10-11 23:31:05
519
原创 解答:方法中创建的对象不都是局部变量,那不就是说这些对象都存放虚拟机栈中,但是所有对象不是都在方法中创建的,那什么对象实例是放在堆中的呢?
这个对象的实例是存放在堆内存中的,而obj只是一个引用,它存放在栈帧的局部变量表中。当在方法中创建一个新的对象时,实际上会在堆内存中分配一块存储空间作为对象实例,并且在局部变量表中创建一个引用指向这个对象。需要注意的是,方法结束后,该方法中创建的局部变量和引用将会被销毁,但是在堆内存中分配的对象实例仍然存在,直到没有任何引用指向它,被垃圾回收机制回收。因此,对象实例是存放在堆内存中的,而方法中创建的局部变量和引用只是指向这些对象的一个方式。在Java中,对象的实例是存放在堆内存中的。
2023-10-11 20:42:27
81
原创 为什么说Java是编译与解释并存的语言
JIT编译器通常使用基于探测技术的优化方法,例如使用Profiling(性能剖析)技术来监视和分析程序的运行状况,找出热点代码(频繁被执行的代码块),然后针对热点代码进行编译优化。这样,经过JIT编译后的代码在再次执行时,无需再经过解释器解释执行,而是直接执行编译后的机器码,从而提高了程序的执行速度。JIT编译器在Java虚拟机(JVM)中扮演着重要角色,Java程序首先通过javac编译器将源代码编译为字节码文件,然后在运行时由JIT编译器将字节码转换为机器码,以提高Java程序的执行效率。
2023-10-10 11:44:57
154
原创 Spring Boot 整合 Redis
当然,这只是一个简单的示例,你还可以根据具体需求来使用 Redis 提供的其他功能,如 Hash、List、Set 等数据结构的操作。可以使用 Spring Boot 提供的 spring-boot-starter-data-redis starter,它会自动配置 Redis 相关的依赖和bean。3、使用 RedisTemplate 进行操作:通过注入 RedisTemplate,你可以在代码中使用它来执行对 Redis 的操作。
2023-09-22 18:14:17
171
原创 注解说明--@RestController
使用 @RestController 注解标记的类,通常用于处理 HTTP 请求,并返回 JSON 或其他格式的数据作为响应。@RestController 简化了编写 RESTful 服务的代码,使得开发人员可以更加方便地创建和维护基于 HTTP 的 API 接口。@RestController 是 Spring 框架中的一个注解,用于标记一个类为 RESTful 风格的控制器。它结合了 @Controller 和 @ResponseBody 两个注解的功能。
2023-09-22 18:01:11
1219
原创 Spring Cloud Gateway 过滤器 StripPrefix=1 的作用
如果你的请求路径中有多个前缀路径需要去除,可以设置 StripPrefix=2 或更大的值。另外,如果你希望保留原始路径,可以不配置 StripPrefix 过滤器或者将其设置为 StripPrefix=0。当配置了 StripPrefix=1 过滤器后,如果请求的路径中存在前缀路径,该过滤器将会去除指定数量的前缀路径。当收到形如 /api/users 的请求时,StripPrefix=1 将会去除 /api 前缀,将最终的请求路径转发到 http://example.com/users。
2023-09-22 00:21:33
6526
原创 蘑菇博客部署-安装 vue_mogu_admin 项目的依赖出错:While resolving: vue-admin-template@3.8.0 Found: html-webpack-plug
根据错误信息,您的项目依赖于 vue-admin-template@3.8.0,而该版本要求使用 html-webpack-plugin 的对等依赖版本 ^3.0.0。然而,在解析依赖树时,发现了一个开发环境依赖 html-webpack-plugin@4.0.0-alpha,它与要求的对等依赖版本不匹配,因此导致解析失败。2、更新依赖项版本:打开项目的 package.json 文件,找到名为 html-webpack-plugin 的依赖项,并将其版本号从。
2023-09-21 02:50:23
645
原创 蘑菇博客部署-安装 vue_mogu_admin 项目的依赖出错:‘webpack-dev-server‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
webpack-dev-server 未正确安装:请确保您已经在项目中正确安装了 webpack-dev-server。
2023-09-21 02:44:18
72
原创 蘑菇博客部署-SpringBoot启动报错:Command line is too long
1.修改运行配置Configurations,将默认的Shorten command line的值user-local default 改为 JAR mainifest 或者 classpath file。2、在项目的.idea/workspace.xml文件中,找到。这种办法每次需要对每个类单独设置。这种方式一次设置就行。
2023-09-21 02:40:55
541
原创 蘑菇博客部署-SpringBoot启动报错:GlobalConfigUtils setMetaData Fail
解决办法: 在数据库url后面添加allowPublicKeyRetrieval=true。
2023-09-21 02:29:50
363
原创 蘑菇博客部署-SpringBoot启动报错:Too many connections
1、找到nacos对应的微服务配置,数据库本身最大连接数限制。
2023-09-21 02:24:03
759
原创 蘑菇博客部署-SpringBoot启动错误:Could not resolve placeholder ‘spring.datasource.url‘ in value “${spring...
解决方案:项目在配置更改后要对maven进行clean,install的操作,清除以重新编译项目。
2023-09-21 02:09:11
1101
原创 java -jar **.jar 和 Spring Boot 启动application启动类文件的区别
SpringBoot项目其实就是web项目来的,它主要是为web程序服务的,他的特点就是,一旦运行,除非我们手动的关闭,不然是不会自动关闭的,也就是SpringBoot程序是没有什么周期,基于这个特点,非常适合web项目,但是有时我们也不仅仅用来写web项目,如果我们的项目需求是长期运行,不停止的话,用SpringBoot来写是非常合适的,例如一些每天执行的定时任务等程序。在执行命令时,java -jar会自动加载并运行可执行 jar 包中的主类,并启动 Spring Boot 应用程序的运行环境。
2023-09-20 11:34:07
441
1
原创 VO,BO,PO,DO,DTO,DAO的区别
最后,让我们再说说实际应用这几个概念很完整,我们在用的时候是必须按这个来做吗?当然不是的,系统和系统的复杂度不同,协作水平不同,完全没有必要教条主义,这些概念全上上哪些概念,省哪些,我给一些实际建议1,PO这个没法省,不管叫PO还是Entity,怎么着都得有2,一些工具类的系统和一些业务不是很复杂的系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行3,VO是可以第一个优化掉的,展示业务不复杂的可以压根儿不要,直接用DTO。
2023-09-19 16:00:41
192
原创 如何从0到1学习一个Java项目
项目功能介绍项目架构项目技术栈项目模块划分如何部署代码(将项目跑起来的教程介绍)如果遇到一些需要你去调试修复bug才可以正常跑起来的项目,请尽快脱坑,更换另外的项目。没必要为这些项目浪费自己的时间。
2023-09-19 14:54:05
435
原创 设计模式-策略模式详解
在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。
2023-09-14 15:43:33
57
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人