自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 实现 LRU 算法详解

LRU 算法的核心思想是,如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。当缓存空间已满时,最久没有被访问的数据将被淘汰,为新的数据腾出空间。通过使用 Java 实现 LRU 算法,我们可以有效地管理缓存,提高程序的性能。在实际应用中,LRU 算法可以用于数据库缓存、Web 服务器缓存等场景。希望本文对你理解和实现 LRU 算法有所帮助。

2024-10-08 16:15:39 303

原创 Java 实现布隆过滤器

布隆过滤器是由 Burton Howard Bloom 在 1970 年提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误判率,即存在把不属于这个集合的元素判断为属于这个集合的情况。布隆过滤器是一种非常有用的数据结构,它可以在空间效率和查询时间上提供很大的优势。在 Java 中实现布隆过滤器也相对简单,只需要使用位操作和哈希函数即可。

2024-10-07 18:03:00 499

原创 如何保证 Redis 与数据库的数据一致性

保证 Redis 与数据库的数据一致性是一个复杂的问题,需要根据具体的业务场景和需求来选择合适的解决方案。在实际应用中,可以结合多种解决方案来提高系统的性能和数据的一致性。同时,还需要注意缓存的过期时间、数据的更新策略等问题,以避免出现数据不一致的情况。

2024-10-05 16:15:00 685

原创 Redis 过期时间删除策略详解

Redis 的过期时间删除策略是一个复杂而又重要的问题。通过采用惰性删除和定期删除相结合的策略,Redis 可以在保证性能的前提下,及时清理过期键,释放内存空间。在实际使用中,我们需要根据系统的负载、过期键的数量和内存使用情况等因素,合理调整过期时间删除策略,以达到最佳的性能和资源利用效果。

2024-10-04 16:38:51 633

原创 Redis 中 ZSET 的底层数据结构详解

Redis 的 ZSET 是一种非常强大的数据结构,它可以根据元素的分数进行快速的排序和查找操作。ZSET 的底层数据结构在不同的情况下会自动切换为压缩列表或跳表,以满足不同的性能和内存需求。在实际应用中,我们可以根据有序集合的大小和元素的特点来选择合适的底层数据结构,以获得最佳的性能和内存使用效率。通过对 Redis 中 ZSET 的底层数据结构和性能考量的深入了解,我们可以更好地利用这一强大的数据结构来解决实际问题,提高应用程序的性能和可扩展性。

2024-10-03 18:05:50 1036

原创 Redis 中 String 命令的基础操作

在 Redis 中,String(字符串)类型是最基本的数据类型之一,它可以存储任何形式的字符串,包括二进制数据。本文将详细介绍 Redis 中 String 命令的基础操作,包括设置与获取值、字符串操作、数值操作以及应用场景。

2024-10-02 17:47:45 365

原创 Axios 和 Ajax 的区别与联系

在前端开发中,数据的获取和交互是至关重要的环节。Axios 和 Ajax 都是常用的技术手段,用于实现与服务器的数据通信。本文将深入探讨 Axios 和 Ajax 的区别和联系,包括它们的特性、优缺点以及应用场景。

2024-10-01 17:23:02 883

原创 Vue 中的路由:构建强大的单页应用导航

Vue Router 是 Vue.js 的官方路由管理器。它与 Vue.js 的核心深度集成,允许我们通过定义路由来实现不同页面之间的切换,而无需刷新整个页面。这使得用户体验更加流畅,同时也提高了应用的性能。Vue Router 为 Vue 应用提供了强大的路由功能,使得我们能够轻松构建复杂的单页应用。通过理解和掌握路由的基本概念、使用方法以及高级特性,我们可以更好地组织和管理应用的页面导航,提升用户体验和开发效率。无论是简单的应用还是大型的企业级项目,Vue Router 都是不可或缺的工具。

2024-09-30 16:07:56 1267

原创 Vue 中自定义指令的探索与实践

Vue 允许开发者自定义指令,以实现对 DOM 元素的底层操作。自定义指令可以在普通的 HTML 标签上使用,就像内置指令(如v-ifv-for等)一样。它们可以在特定的场景下提供更加灵活的交互和视觉效果。Vue 的自定义指令为我们提供了强大的 DOM 操作能力,可以根据具体的需求实现各种交互效果和功能增强。通过掌握自定义指令的基本语法、指令的值的使用以及封装实用的指令,我们可以更加高效地开发 Vue 应用程序。在实际开发中,我们可以根据项目的需求封装更多的自定义指令,以提高开发效率和代码的可维护性。

2024-09-29 21:21:22 854

原创 Vue 组件的三大组成部分详解

Vue 组件的三大组成部分——模板、脚本和样式,共同构成了一个完整的、可复用的用户界面组件。通过合理地组织和使用这三个部分,可以构建出功能强大、易于维护的 Vue 应用程序。在开发过程中,我们可以根据具体的需求,灵活地调整每个部分的内容,以实现最佳的用户体验和开发效率。

2024-09-28 17:20:44 1311

原创 Vue 工程化开发入门

工程化开发是一种将软件开发过程规范化、标准化的方法。对于 Vue 项目来说,工程化开发可以帮助我们更好地管理项目的结构、依赖关系、构建流程等。通过使用工具和技术,我们可以提高开发效率、降低维护成本,并确保项目的可扩展性和可维护性。Vue 的工程化开发为我们提供了一种高效、规范的开发方式。通过使用脚手架工具、遵循项目运行流程、进行组件化开发和组件注册,我们可以更好地管理和维护 Vue 项目。希望本文能够帮助你快速入门 Vue 工程化开发,开启你的 Vue 开发之旅。

2024-09-27 17:22:42 1063

原创 Vue入门之生命周期

Vue 实例在创建和运行过程中会经历一系列的阶段,每个阶段都有相应的钩子函数可以让我们在特定的时刻执行自定义的逻辑。Vue 的生命周期主要分为四个阶段:创建阶段、挂载阶段、更新阶段和销毁阶段。Vue 的生命周期提供了一种强大的方式来控制组件的行为和状态。通过理解和使用生命周期钩子,我们可以在不同的阶段执行特定的逻辑,从而更好地管理组件的生命周期。在实际开发中,我们可以根据具体的需求选择合适的生命周期钩子来实现各种功能,如数据初始化、DOM 操作、资源清理等。

2024-09-26 17:41:04 888

原创 Vue 入门之 computed 计算属性

在 Vue 开发中,computed计算属性是一个非常强大且常用的特性。它可以帮助我们更高效地处理数据的转换和派生,使代码更加简洁和易于维护。本文将详细介绍 Vue 中computed计算属性的基础语法、与方法的对比、完整写法以及提供代码样例。

2024-09-25 17:15:35 764

原创 Vue 入门之常用指令

Vue.js 是一个渐进式的 JavaScript 框架,用于构建用户界面。它采用自底向上增量开发的设计,易于上手,同时也可以与其他库或现有项目集成。Vue 的核心库只关注视图层,并且非常灵活,可以在不同的项目中根据需求进行扩展。插值表达式和常用指令是 Vue 开发中的基础内容。通过插值表达式,我们可以轻松地在模板中显示数据。而常用指令如v-bindv-onv-ifv-else和v-for则为我们提供了丰富的功能,使我们能够构建出动态、交互式的用户界面。

2024-09-24 16:59:52 654

原创 SSM 框架整合实战

在企业级 Java Web 开发中,SSM(Spring+SpringMVC+MyBatis)框架组合因其强大的功能和灵活性而被广泛应用。本文将详细介绍 SSM 框架整合的实战过程,包括导入依赖、创建数据表、配置文件等各个环节。

2024-09-23 16:30:37 1222

原创 SpringMVC 常用组件及执行流程详解

SpringMVC 的常用组件和执行流程为开发 Web 应用提供了强大的支持。通过 DispatcherServlet、HandlerMapping、Handler、HandlerAdapter、ViewResolver 和 RedirectView 等组件的协作,SpringMVC 能够高效地处理客户端请求,并生成相应的响应内容。理解这些组件的作用和执行流程对于掌握 SpringMVC 框架至关重要,有助于开发出高质量、可维护的 Web 应用。

2024-09-22 17:30:00 1703

原创 SpringMVC 中的拦截器与异常处理器

SpringMVC 中的拦截器和异常处理器是非常强大的组件,它们可以帮助我们实现各种功能,提高应用程序的稳定性和可维护性。拦截器可以在请求处理的不同阶段进行干预,实现诸如权限校验、日志记录等功能;异常处理器可以对不同类型的异常进行统一的处理,提高应用程序的用户体验。在实际的开发过程中,我们可以根据具体的需求,灵活地使用拦截器和异常处理器,为应用程序提供更好的服务。

2024-09-21 17:35:41 850

原创 SpringMVC 处理 Ajax 请求

SpringMVC 是 Spring 框架的一个模块,它实现了模型-视图-控制器(MVC)设计模式,用于构建 Web 应用程序。SpringMVC 分离了应用程序的不同部分,使得开发更加高效、可维护。Ajax(Asynchronous JavaScript and XML)即异步 JavaScript 和 XML,它允许在不刷新整个页面的情况下,与服务器进行数据交互。通过 Ajax,可以提高用户体验,减少页面加载时间,实现更加流畅的交互效果。通过使用和。

2024-09-20 18:15:48 1080

原创 SpringMVC 中的 RESTful 编码风格案例详解

REST(Representational State Transfer)即表述性状态转移,是一种软件架构风格,它将网络上的一切都抽象为资源,每个资源都有唯一的标识(URI),通过 HTTP 协议的不同方法(GET、POST、PUT、DELETE 等)对资源进行操作,以实现对资源的增删改查。简单直观:资源的标识和操作方法都通过标准的 HTTP 协议来表示,易于理解和使用。可扩展性强:可以方便地添加新的资源和操作方法,而不会影响现有的系统。

2024-09-19 17:16:02 1057

原创 SpringMVC 中的视图详解

SpringMVC 中的视图提供了多种灵活的方式来呈现数据给用户。ThymeleafView 提供了强大的模板引擎功能,转发视图和重定向视图可以根据不同的需求进行资源调用,视图控制器则可以快速配置简单的页面跳转。在实际应用中,我们可以根据具体的业务场景选择合适的视图实现方式,以提高开发效率和用户体验。

2024-09-18 15:44:51 1059

原创 SpringMVC 中的域对象共享数据

在当今这个充满挑战和机遇的技术时代,SpringMVC 为我们提供了多种方式来实现域对象的数据共享。通过向 request、session 和 application 域对象共享数据,我们可以在不同的组件之间传递数据,实现更加灵活的应用程序设计。同时,深入了解 Model、ModelMap 和 Map 之间的关系,可以帮助我们更好地使用这些工具来向视图传递数据。这些工具就像是一个个强大的武器,为我们在 Java 开发的战场上提供了有力的支持。

2024-09-17 18:04:49 1372

原创 SpringMVC 中的常用注解详解

SpringMVC 中的这些常用注解极大地简化了 Web 应用的开发过程。通过合理地使用这些注解,可以快速构建高效、可维护的 Web 应用程序。在实际开发中,根据具体的需求选择合适的注解,可以提高开发效率,降低代码的复杂度。以上就是关于 SpringMVC 中常用注解的介绍,希望对大家有所帮助。

2024-09-16 17:12:38 570

原创 SpringMVC 入门案例详解

在当今的 Java Web 开发中,SpringMVC 是一个非常强大且广泛使用的框架。它提供了一种清晰的 MVC(Model-View-Controller)架构模式,使得开发高效、可维护的 Web 应用变得更加容易。本文将详细介绍一个 SpringMVC 的入门案例,包括创建 Maven 工程以及配置web.xml。

2024-09-15 17:13:39 1441

原创 MyBatis 中的逆向工程:简化数据库操作的利器

MyBatis 逆向工程是一种根据数据库表结构自动生成 MyBatis 相关代码的工具。它可以生成实体类、Mapper 接口以及对应的 XML 映射文件。通过逆向工程,开发人员可以快速地搭建起数据访问层,减少了手动编写大量重复代码的工作量,提高了开发效率。MyBatis 逆向工程是一个非常实用的工具,可以大大提高开发效率,减少手动编写代码的工作量。通过配置生成器和配置文件,可以快速生成实体类、Mapper 接口和 XML 映射文件,为开发人员提供了便利。

2024-09-14 16:12:45 1142

原创 MyBatis 注解式开发:简洁高效的数据库访问新方式

MyBatis 是一个优秀的持久层框架,它通过将 SQL 语句与 Java 代码分离,使得数据库访问更加灵活和可维护。MyBatis 支持多种数据库操作,包括查询、插入、更新和删除等,同时还提供了强大的结果集映射功能,能够将数据库结果自动映射为 Java 对象。@Select:用于定义查询语句,接收一个 SQL 语句作为参数。@Insert:用于定义插入语句,接收一个 SQL 语句作为参数。@Update:用于定义更新语句,接收一个 SQL 语句作为参数。@Delete。

2024-09-13 17:48:10 896

原创 浅析 MyBatis 中的连接池和缓存

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects)映射成数据库中的记录。MyBatis 中的连接池和缓存是提高应用性能的重要手段。连接池可以减少数据库连接创建和销毁的开销,提高数据库访问的效率;缓存可以减少对数据库的访问次数,提高数据查询的性能。

2024-09-12 17:32:44 1138

原创 MyBatis 实现各类查询功能详解

MyBatis 是一个基于 Java 的持久层框架,它通过 XML 配置文件或注解的方式,将 SQL 语句与 Java 对象进行映射,使得开发者可以更加方便地进行数据库操作。简单易学:MyBatis 的配置文件和 SQL 语句都非常直观,容易理解和掌握。灵活多变:MyBatis 支持动态 SQL,可以根据不同的条件生成不同的 SQL 语句。性能高效:MyBatis 采用了 JDBC 的原生接口进行数据库操作,性能非常高效。可扩展性强:MyBatis 支持插件机制,可以方便地扩展其功能。

2024-09-11 17:16:12 1025

原创 MyBatis 入门之动态 SQL

动态 SQL 是指在 SQL 语句中包含一些逻辑判断和变量,根据不同的条件动态地生成不同的 SQL 语句。在 MyBatis 中,动态 SQL 是通过使用各种标签和表达式来实现的。这些标签和表达式可以根据传入的参数值来决定是否生成相应的 SQL 片段,从而实现动态的 SQL 语句生成。MyBatis 的动态 SQL 功能使得我们在处理复杂的数据库查询和更新操作时更加灵活和高效。

2024-09-10 19:40:09 1116

原创 【LeetCode:2181】合并零之间的节点(Java)

对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0。给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0。链表的 开端 和 末尾 节点都满足 Node.val == 0。输入:head = [0,3,1,0,4,5,2,0]输入:head = [0,1,0,3,0,2,2,0]上图表示输入的链表。输出:[1,3,4]

2024-09-09 15:32:51 827

原创 MyBatis 入门之核心配置文件

MyBatis 是一个基于 Java 的持久层框架,它通过将 SQL 语句与 Java 代码分离,使得数据库操作更加灵活和可维护。MyBatis 提供了一种简单而强大的方式来执行 SQL 语句、映射结果集和管理数据库连接。本文介绍了 MyBatis 的核心配置文件的作用、结构和代码实现。通过配置文件,我们可以轻松地管理和配置 MyBatis 的各种属性,使得数据库操作更加灵活和可维护。希望本文对你学习 MyBatis 有所帮助。

2024-09-09 15:32:26 880

原创 详解Spring中的单例模式

单例模式是设计模式中最简单也是最常用的设计模式之一,单例顾名思义就是系统中只有唯一实例,这个唯一实例的获取方式就是通过一个方法的调用获得,而不是通过正常流程中的new实例化。在Spring中,单例模式的应用非常广泛,并且是Bean默认的作用域。线程安全访问速度性能饿汉式安全快差懒汉式不安全慢好。

2024-09-08 16:10:35 1270

原创 【LeetCode:3153】所有数对中数位差之和(Java)

你有一个数组 nums ,它只包含 正 整数,所有正整数的数位长度都 相同。两个整数的 数位差 指的是两个整数 相同 位置上不同数字的数目。数组中所有整数都相同,所以所有整数数对的数位不同之和为 0。请你返回 nums 中 所有 整数对里,数位差之和。输入:nums = [10,10,10,10]输入:nums = [13,23,12]nums 中的整数都有相同的数位长度。

2024-09-08 16:10:01 1021

原创 【LeetCode:977】有序数组的平方(Java)

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。解释:平方后,数组变为 [16,1,0,9,100]输入:nums = [-4,-1,0,3,10]输入:nums = [-7,-3,2,3,11]请你设计时间复杂度为 O(n) 的算法解决本问题。排序后,数组变为 [0,1,9,16,100]输出:[0,1,9,16,100]输出:[4,9,9,49,121]nums 已按 非递减顺序 排序。

2024-09-08 16:09:28 332

原创 Spring AOP的注解式开发实现

import comSystem . out . println("业务层:Hello World!");} }System . out . println("业务层:Hello World!");} }import orgSystem . out . println("业务层:Hello World!");} }System . out . println("业务层:Hello World!");} }Service;@Service。

2024-09-07 16:00:00 1354

原创 【LeetCode:3174】清除数字(Java)

删除 第一个数字字符 以及它左边 最近 的 非数字 字符。一开始,我们对 s[2] 执行操作,s 变为 “c4”。然后对 s[1] 执行操作,s 变为 “”。请你返回删除所有数字字符以后剩下的字符串。输入保证所有数字都可以按以上操作被删除。s 只包含小写英文字母和数字字符。输入:s = “cb34”输入:s = “abc”给你一个字符串 s。

2024-09-05 18:35:16 534

原创 Spring实现纯注解项目开发

本身就是一个轻代码而重配置的框架,配置比较繁重,影响开发效率,所以就在。开发中有许多的配置,非常的费时费力,影响开发效率。配置文件,这样就可以简化配置,提升开发效率。中加入了注解,使用注解代替原来的。从前面的内容我们可以发现,

2024-09-05 16:00:00 1301

原创 【LeetCode:2860】让所有学生保持开心的分组方法数(Java)

给你一个下标从 0 开始、长度为 n 的整数数组 nums ,其中 n 是班级中学生的总数。如果班主任仅选中一个学生来完成分组,那么两个学生都无法保持开心。这位学生没有被选中,并且被选中的学生人数 严格小于 nums[i]。这位学生被选中,并且被选中的学生人数 严格大于 nums[i]。输入:nums = [6,0,3,3,6,7,2,7]班主任选中下标为 1、2、3、6 的学生形成一组。返回能够满足让所有学生保持开心的分组方法的数目。班主任选中下标为 1 的学生形成一组。班主任选中所有学生形成一组。

2024-09-04 16:00:00 711

原创 Spring入门之AOP(包含实例代码)

AOP(Aspect Oriented Programming)又称为面向切面开发,是一种编程范式,是OOP(Object Oriented Programming)的延续,也是Spring框架中函数式编程的一种衍生,利用AOP可以对业务层逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的重用性。AOP采取横向抽取机制,取代传统纵向继承体系。,用来测试异常通知。import comSystem . out . println("业务层:Hello World!");

2024-09-03 17:00:00 1311

原创 【LeetCode:2708】一个小组的最大实力值(Java)

老师想选出一部分同学组成一个 非空 小组,且这个小组的 实力值 最大,如果这个小组里的学生下标为 i0, i1, i2, …, ik ,那么这个小组的实力值定义为 nums[i0] * nums[i1] * nums[i2] * …解释:一种构成最大实力值小组的方案是选择下标为 [0,2,3,4,5] 的学生。实力值为 3 * (-5) * 2 * 5 * (-9) = 1350 ,这是可以得到的最大实力值。输入:nums = [3,-1,-5,2,5,-9]输入:nums = [-4,-5,-4]

2024-09-03 17:00:00 305

原创 【CSP:202009-2】风险人群筛查(Java)

【代码】【CSP:202009-2】风险人群筛查(Java)

2024-09-01 15:42:46 354

空空如也

空空如也

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

TA关注的人

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