自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 为什么在项目中不推荐使用Beanutils进行熟悉拷贝了?

在实际的项目开发过程中,我们时常会遇到 VO、BO、PO、DTO等对象之间的赋值,在对象属性较多的时候则会使用 get 和 set 方法进行赋值,但是这种方法工作量有时候实在太大了,从而很多人会选中使用 Spring 框架提供的拷贝工具 BeanUtils 的 copyProperties 方法来完成属性之间的拷贝。这样可以最大程度上降低我的手动编写对象赋值的操作,减少工作量。

2024-07-25 21:06:09 476

原创 SpringBoot实战:如何优雅实现订单 30 分钟自动自动取消策略

在电子商务和其他采用在线支付的应用场景中,为了优化订单处理流程,通常会引入一项功能:若用户在创建订单后的指定时间段(例如30分钟)内未完成支付,系统应自动取消该订单。以下,我们将详细探讨几种基于Spring Boot框架实现这一功能的方案,并附以实例代码示例。以上三种方法可以实现订单在30分钟内未支付则自动取消的需求。可以根据实际业务需求和其他因素,来选择最适合系统的实现方案。

2024-07-25 08:00:00 1066

原创 SpringBoot实战:Spring Boot接入Security权限认证服务

通过JWT为每个用户生成一个唯一且有期限的Token,用户每次请求都会重新生成过期时间,在规定的时间内,用户未进行操作Token就会过期,当用户再次请求时则会再次执行登录流程,而Token的过期时间应根据实际的业务场景规定。权限认证通过框架来实现,在用户成功登录之后,当尝试访问系统资源时(即发起接口调用),服务端会根据用户所属的角色来判断其是否具备相应的访问权限。若用户未获得该资源的访问权限,则服务端应当返回明确的权限不足提示信息,以确保系统的安全性与用户体验。登录验证和权限认证。

2024-07-20 08:00:00 962

原创 SpringBoot 实战:Spring Boot的配置绑定类Bindable居然如此强大

SpringBoot中极大的简化了项目中对于属性配置的加载方式,可以简单的通过 @Value, @ConfigurationProperties 来实现属性配置与Java POJO对象、Bean的成员变量的绑定,那如果出现一个某些场景,需要我们手动的、通过编程式的方式,将属性配置与给定的pojo对象进行绑定,我们又应该怎么实现呢?

2024-07-17 08:00:00 999

原创 SpringBoot实战:分布式锁你知道多少,SpringBoot + Redis实现高性能分布式锁

分布式锁是一种在分布式环境下实现互斥访问的技术,它已经广泛应用于分布式系统中。未来,分布式锁的发展趋势将继续向简单、高效、可靠的方向发展。挑战之一是在分布式环境下实现高可用的分布式锁,以确保分布式锁的可靠性。挑战之二是在分布式环境下实现低延迟的分布式锁,以提高分布式系统的性能。

2024-07-16 08:00:00 1615

原创 三分钟教会你如何使用SpringBoot发送邮

相信使用过Spring 的朋友们都知道, Spring 提供了一个非常方便快捷 的接口来实现邮件发送 (JavaMailSender), 在 Spring Boot 的 依赖管理中也为此提供了自动化的配置,接下来就通过实例来说一说 如何在 Spring Boot 中 使用 JavaMailSender 来发送邮件。

2024-07-14 16:49:42 1032

原创 面试官:MySQL 数据库和 Redis 缓存的数据一致性如何得到保证?

问题面试当中总会被问题这么一个问题:如何保证 Redis 缓存和数据库一致性?但依旧有很多的疑问:到底是更新缓存还是删除缓存?到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库?前言在项目业务的初期阶段,由于流量极其有限,无论是处理读取请求还是写入请求,直接对数据库进行操作是高效且直接的方式。此时的架构模型十分简洁,无需引入复杂的中间件或分布式系统,直接通过应用程序与数据库之间的交互来满足业务需求。此时架构模型是这样的。

2024-07-13 17:00:52 1073

原创 SpringBoot实战:轻松实现接口数据脱敏

本文深入探讨了在SpringBoot应用程序中实施数据脱敏策略的关键性,并提出了一种创新的解决方案,即通过集成自定义注解与Hutool脱敏工具类来高效地实现数据脱敏。此方案旨在精准地对敏感信息进行脱敏处理,确保用户隐私得到妥善保护,同时维护数据的安全性。我们期待这一方案能为开发者们提供有价值的参考,共同提升数据保护水平。😊。

2024-07-11 20:48:35 1083

原创 为什么MySQL不推荐使用uuid或者雪花id作为主键?

UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID 的目的是让分布式系统中的所有元素都能有唯一的识别信息。如此一来,每个人都可以创建不与其他人冲突的 UUID,就不需考虑数据库创建时的名称重复问题。UUID 是由一组32位数的16进制数字所构成,是故 UUID 理论上的总数为1632=2128,约等于3.4 x 10123。也就是说若每纳秒产生1百万个 UUID,要花100亿年才会将所有 UUID 用完。

2024-07-11 08:00:00 1044

原创 Java基础知识面试题(总结最全面的面试题)

面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过程低面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

2024-07-04 07:00:00 720

原创 SpringBoot入门案例

SpringBoot入门程序开发SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程SpringBoot基础配置1.创建新模块,选择Spring Initializr,并配置模块相关基础信息2.选择当前模块需要使用的技术集3.开发控制器类4.运行自动生成的Application类5.运行结果:pom.xml文件Application类Spring程序与SpringBoot程序对比。

2024-07-03 07:00:00 1052

原创 【无标题】

我们知道,从 2002 年开始,Spring 一直在飞速的发展,如今已经成为了在Java EE(Java Enterprise Edition)开发中真正意义上的标准,但是随着技术的发展,Java EE使用 Spring 逐渐变得笨重起来,大量的 XML 文件存在于项目之中。繁琐的配置,整合第三方框架的配置问题,导致了开发和部署效率的降低。

2024-07-02 07:30:00 743

原创 Spring Boot 快速入门4 ——JSR-303 数据校验

我们在日常开发中,避不开的就是参数验证,有人说前端不是回在表单证进行校验吗,在后端中,我们可以直接不管前端怎么做判断过滤,在后端中为了安全,还是需要进行判断的。在前端做校验是很容易绕过的,举个例子,当测试使用PpostMan时,如果后端没有校验,肯定回出现很多异常。今天就和大家来一起学习JSR303专门用于参数校验。JSR-303是 JAVA EE 6 中的一项子规范,叫做,官方参考实现是。提供了JSR 303规范中所有内置constraint的实现,除此之外还有一些附加的traint。

2024-06-24 21:27:49 1201 1

原创 Spring Bean自动装配:深入解析与实战应用

Resource 注解在 Spring 中默认先尝试通过 bean 的名称(byName)进行自动装配。如果容器中不存在与指定名称相匹配的 bean,则会退回到通过 bean 的类型(byType)进行匹配。但是,如果在类型匹配时找到多个相同类型的 bean,并且没有通过 name 属性指定具体的 bean 名称来消除歧义,或者根本找不到任何该类型的 bean,那么自动装配将失败,并会抛出一个异常。

2024-06-24 11:59:30 661

原创 Spring Boot 快速入门2 ——SpringBoot运行原理分析

我们再查看 Spring Boot 项目中 pom.xml 可以看出,所有的 Spring Boot 项目 直接或间接的 依赖于一个 父项目 spring-boot-starter-parent ,主要是管理项目的资源及其插件。进入到spring-boot-starter-parent,发现还有一个父依赖:这个才是真正管理 Spring Boot 应用中所有依赖版本的地方,Spring Boot 的版本控制中心。

2024-06-23 14:12:57 1060

原创 SpringBoot 快速入门(保姆级详细教程)

SpringBoot 是由 Pivotat 团队提供的全新框架,其设计的目的就是为了简化 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不在需要定义样板的配置。SpringBoot官网:https://spring.io/projects/Spring Boot 可以轻松创建可以“直接运行”的独立的、生产级的基于 Spring 的应用程序。基于Spring开发本身并不提供spring 框架的核心特性以及扩展功能,只是用于快速敏捷地开发新一代基于Spring。

2024-06-22 18:28:36 4549

原创 入门SpringMVC框架,这些注解一定要清楚

它可以用于方法级别,用于指定处理PATCH请求的方法。组件扫描:@Service 是 Spring 的组件扫描机制的一部分,标识带有该注解的类为一个服务层组件。依赖注入:通过将 @Service 注解添加到类上,Spring IoC 容器会自动将该类的实例注入到其他需要依赖的组件中,例如控制器(Controller)或其他服务层组件。含义:扫描指定包路径,寻找标有 @Component、@Service、@Repository、@Controller 注解的类,并将其注册为 Spring Bean。

2024-06-21 07:00:00 680

原创 【无标题】

SpringMVC的控制器由一个POJO担任,负责处理具体请求。请求控制器中每一个处理请求的方法称为 控制器方法。

2024-06-20 07:15:00 601

原创 入门 Spring MVC 架构,这一篇就够了!

Spring MVC是的一部分,是基于Java实现MVC的轻量级Web框架。官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-webSpringMVC的底层还是Servlet。MVC是 Model View Controller的缩写,是一种 软件框架的设计模式,将软件系统分为模型、视图、控制器三个部分。

2024-06-19 07:30:00 777

原创 Spring 框架整合 MyBatis 的两种方式一定要清楚

在开发Java Web应用程序时,Spring和MyBatis是两个非常流行的框架。它们提供了非常多有用的功能,比如依赖注入、AOP、事务管理。而Mybatis是一个ORM框架,它可以将 Java 对象映射到数据库中,本文中 将通过 配置文件 和 纯注解两种方式,将Spring和Mybatis整合起来。--spring_mybatis桥梁-->​--配置sqlSession-->--只能通过构造器注入sqlSessionFactory,因为没有set方法-->

2024-06-18 11:30:00 608

原创 SSM框架系列之如何纯注解开发

注解就是一种特殊的标记方式@+注解名称("内容")注解可以作用在类、方法和属性上。传统的xml方式开发比较繁琐,代码可读性查,理解代码需要结合xml文件才能理解,而注解的作用就是简化甚至代替xml的开发方式。接下来通过传统配置方式开发注解式开发纯注解方式开发的方式仔细聊一聊。

2024-06-14 11:45:00 970

原创 Spring 框架中 Bean 的 6 种作用域!

在Spring中,那些组成应用程序的主体由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象。在中,总共定义了6种bean的作用域,其中有4种作用域只有当应用为web应用的时候才有效,并且Spring还支持自定义作用域。

2024-06-06 11:45:00 1595

原创 Spring 框架中 IOC 容器创建对象的 2 种方式

关注微信公众号,获取更多学习笔记。

2024-06-05 11:00:00 671

原创 手把手教你搭建你的第 1 个Spring 项目!

博主是一名程序猿,平时会积累自己的学习经验,java相关技术、SSM、spring全家桶,微服务、MySQL、集群、分布式、VUE等相关知识,面试相关知识。ClassPathXmlApplicationContext是实现ApplicationContext接口的类,扫描配置文件(名字一定要一模一样),获取Spring容器的Bean对象。在初始化容器时就会实例化所有的 Bean,提前进行依赖注入、初始化和单例模式的创建等操作,因此启动时间相对较长,但对于用户来说,获取 Bean 时速度较快。

2024-06-04 10:45:00 1129

原创 一文搞懂 Spring 中的 IOC 容器到底是什么

IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。

2024-06-03 10:00:00 1435

原创 解锁Spring:踏上Java开发之旅

官网地址:https://spring.io/Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用Spring 框架来创建性能好、易于测试、可重用的代码。Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。

2024-06-02 15:25:21 682

原创 MyBatis Plus 使用教程_入门教程(图文讲解)

MyBatis Plus 插件配置:可以配置各种插件,如分页插件、性能分析插件、乐观锁插件、这些插件可以扩展 MyBatis Plus 的功能,提示性能简化开发。分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库。MyBatis Plus 全局配置L通过配置类可以进行全局的配置,如自动填充策略、逻辑删除配置、SQL注入器等,这些配置可以保证在整个项目中统一的行为。

2024-06-01 10:48:20 1451

原创 MyBatis 中的缓存机制(一文带你搞懂)

MyBatis的缓存包括一级缓存和二级婚车。一级缓存是会话级别的缓存,二级缓存是全局级别的缓存。一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中,如果当前会话关闭了,该对应的一级缓存就关闭了,此时,一级缓存中的数据就被转到了二级缓存中,新的会话查询信息,就会在二级缓存中获取内容,不同的 mapper 查出的数据会放在自己对应的缓存中。)中,当用户再次查询相同数据时就不用从磁盘上(关系型数据库数据文件)查询了,而是从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。

2024-05-30 21:25:58 983

原创 MyBatis:使用 MyBatis 实现多表查询(多对一和一对多)、缓存

MyBatis 是一个优秀的持久层框架,它可以自定义 SQL、存储过程和高级映射。MyBatis 提供了一级缓存和二级缓存两种缓存机制。一级缓存是基于 SqlSession 的,它默认开启且不可关闭,可以提高相同 SqlSession 内相同 SQL 查询的性能。而二级缓存是基于 Mapper 的,它可以跨 SqlSession 共享,需要手动配置开启,并且可以配置缓存的失效策略和刷新机制。注意:二级缓存只作用于cache标签所在的映射文件中的语句。

2024-05-30 10:30:00 1183

原创 MyBatis操作数据库的步骤一定要清楚

SqlSession` 类提供了在数据库执行 SQL 命令所需的所有方法,通过 `SqlSession` 实例我们可以直接执行已映射的 SQL 语句。在mapper接口点击红色头绳的小鸟图标会自动跳转到对应的映射配置文件,在映射配置文件中点击蓝色头绳的小鸟图标会自动跳转到对应的mapper接口。- 如果传入参数(`parameterType`)为简单类型(包括:基本数据类型、String、Date 等),则 `#{}` 预编译占位符中的形参与对应映射器接口函数的形参一一对应。

2024-05-29 10:30:00 629

原创 MyBatis 动态sql必须要掌握的标签你知道吗

动态SQL是一种在运行时根据条件动态生成SQL语句的技术。它允许根据不同的情况构建不同的SQL查询,简单的说就是根据查询条件的不同,生成不同的SQL。如果有一些业务比较复杂的功能,往往需要拼接SQL,而拼接SQL一不注意,少了引号,空格等格式问题,可能导致错误。为了解决这方面问题,MyBatis使用了动态SQL,通过等标签,可组合成非常灵活的SQL语句,从而在提高SQL语句的准确性的同时,也大大提高了开发人员的效率。

2024-05-28 10:30:00 382

原创 springboot基础篇(快速入门+要点总结)

一、SpringBoot简介在开始了解Spring Boot之前,需要先了解Spring,因为Spring Boot的诞生是和Spring息息相关的,Spring Boot是Spring发展到一定程度的产物,但是Spring Boot并不是spring的替代品,Spring Boot是为了让程序员根号的使用Spring而产生的。Spring Boot称之为搭建程序的脚手架,最主要的作用就是帮助我们快速搭建庞大的spring项目,进而减少一些xml的配置,做到开箱即用的效果。

2024-05-26 14:34:55 924

原创 解密Spring Boot Starter与自动配置:探秘神奇的背后

注:喜欢的朋友可以关注公众号“JAVA学习课堂”方便阅读,内容同步更新。

2024-05-26 10:30:00 793

原创 SpringBoot系列之spring boot配置管理

SpringBoot项目中,大部分配置都有默认值,但如果想替换默认配置的话,就可以使用application.properties或者application.yml文件。其中application.properties文件是键值对类型的文件。之前一直在使用。

2024-05-25 10:45:41 943

原创 Springboo基础入门

SpringBoot的诞生背景可以追溯到对传统Spring框架的改进需求,在过去,使用spring框架构建应用程序需要大量的配置和设置,这无形中层架了开发者的工作量并且,肯能造成一些配置上的错误,因此springboot的目标就是简化spring应用陈旭的开发流程,提供默认配置和约定来减少重复代码,从而加快应用程序的开发速度提高生产力,springboot通过集成各种开发中常用功能库,例如,内嵌服务器,安全性,数据库访问等,使得开发者能够更轻松地构建应用程序。

2024-05-24 09:30:00 747

原创 解锁MyBatis:探索数据库交互的奇妙之旅

MyBatis 是一款优秀的==持久层框架==,用于简化 JDBC 开发 - MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github -负责将数据到保存到数据库的那一层代码。以后开发我们会将操作数据库的Java代码作为持久层。而Mybatis就是对jdbc代码进行了封装。JavaEE三层架构:表现层、业务层、持久层。

2024-05-23 09:30:00 457

原创 Spring 源码分析之Springboot的启动流程详解

springboot是依赖于spring的,除了用于spring的全部功能外,springboot没有繁琐的xml配置,并且springboot内部内嵌了tomcat、jetty、等web容器,并集成了springmvc,这使得springboot可以直接运行,不在需要额外配置其他容器,更提供了一些大型项目中常见的功能特性,例如嵌入式服务器、安全、指标、健康检查、外部配置等。springboot它简化了spring的配置,主要是因为由自动装配功能的的存在,可以直接启动,环境变量的作用时加载配置文件的内容。

2024-05-23 09:30:00 957

原创 入门Maven:简单易懂的项目管理与构建

=Apache Maven== 是一个项目管理和构建==工具==,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

2024-05-19 11:00:00 977

原创 java与数据库的桥梁之jdbc

ResultSet(结果集对象)作用:==封装了SQL查询语句的结果。==而执行了DQL语句后就会返回该对象,对应执行DQL语句的方法如下:ResultSet executeQuery(sql):执行DQL 语句,返回 ResultSet 对象/*** 执行DQL*/@Test//1. 注册驱动//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写//获取数据库连接//3. 定义sql//4. 获取statement对象 用与执行sql语句。

2024-05-18 11:24:49 894

原创 java基础之对线程的理解

线程是进程内的执行单元,也是cpu的最小执行单元。一个进程可以包含多个线程,每个线程执行不同的任务。线程共享进程的资源,包括内存、文件和打开的网络连接等。线程之间通过共享内存进行通信,因此比进程间通信更高效。由于线程共享同一进程的地址空间,所以多线程之间的切换更快。例如:我们启动JVM运行一个Java程序,其实就是启动了一个 JVM 的进程。

2024-05-16 11:58:36 800

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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