自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis深度解析:核心数据结构、线程模型与高频面试题

Redis以其简洁的设计和卓越的性能成为了分布式系统不可或缺的组件。深入理解其数据结构实现和线程模型,能够帮助开发者更好地发挥Redis的潜力,构建高性能的应用程序。随着Redis的持续演进,如Disless模式等新特性的加入,这一经典技术将继续在云原生时代发挥重要作用。

2025-09-12 11:00:14 389

原创 MySQL基础全面解析

MySQL基础知识涵盖了从数据类型选择到复杂查询优化的各个方面。掌握这些核心概念对于构建高效、可靠的数据库应用至关重要。根据业务需求合理选择数据类型和表结构设计理解SQL执行顺序,编写高效的查询语句合理使用索引和约束保证数据完整性和查询性能在复杂场景下考虑使用事务和锁机制保证数据一致性持续学习和实践是掌握MySQL的关键,建议通过实际项目不断深化对这些概念的理解和应用。

2025-09-11 22:00:00 802

原创 MySQL索引深度解析

索引是一种​​数据结构​​,它能够帮助数据库系统快速定位到表中特定值所在的数据行,而无需进行全表扫描。MySQL中的索引本质上是对表中一列或多列的值进行排序的结构,类似于图书馆的图书检索系统。从计算机科学的角度来看,MySQL索引主要使用​​B+树​​数据结构(InnoDB引擎的默认索引类型),这也是为什么索引能够提供O(log n)时间复杂度的数据检索能力。MySQL索引是数据库性能优化的核心技术,正确使用索引可以带来显著的性能提升。深入理解业务查询模式,针对性创建索引。

2025-09-11 14:00:00 1975

原创 MySQL锁机制深度解析:从基础到高并发实战

MySQL锁机制是保障数据一致性的核心技术,不同存储引擎和隔离级别下的锁行为各有特点。根据业务场景选择合适的隔离级别为查询创建合适的索引避免锁升级设计事务时考虑锁的持有时间和范围高并发场景考虑使用乐观锁减少锁竞争监控和分析锁等待情况,及时优化正确理解和应用MySQL锁机制,能够在保证数据一致性的同时,最大化数据库的并发性能。注意:本文基于MySQL 8.0版本,不同版本的具体实现可能有所差异,请以实际使用的MySQL版本为准。

2025-09-11 08:00:00 697

原创 MySQL事务详解:从隔离级别到默认设置

在数据库管理中,事务是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全不执行。这是确保数据完整性和一致性的核心机制。MySQL作为最流行的关系型数据库之一,提供了完整的事务支持。​​原子性(Atomicity)​​:事务中的所有操作要么全部完成,要么全部不完成​​一致性(Consistency)​​:事务必须使数据库从一个一致状态转变为另一个一致状态​​隔离性(Isolation)​​:并发事务之间互相隔离,互不干扰​​持久性(Durability)​。

2025-09-10 21:13:43 815

原创 Java中线程的创建方式

创建方式返回值异常处理适用场景继承Thread无简单简单任务,不推荐实现Runnable无简单一般任务,最常用实现Callable有完善需要返回值的任务线程池灵活完善生产环境,资源管理灵活完善复杂异步编程。

2025-09-10 21:07:19 619

原创 Java中对象的创建方式详解

创建方式优点缺点适用场景new关键字简单直接,性能好编译时绑定,不够灵活大多数常规场景反射机制运行时动态创建,灵活性高性能开销大,代码复杂框架开发,动态加载clone方法创建对象副本,避免复杂初始化需要实现Cloneable,浅拷贝问题需要对象复制的场景反序列化跨网络/持久化重建对象需要实现Serializable,性能开销分布式系统,持久化存储工厂模式解耦创建逻辑,易于扩展增加代码复杂度需要灵活创建对象的系统选择哪种对象创建方式取决于具体的应用场景和需求。

2025-09-10 21:00:07 285

原创 ElasticSearch复习指南:从零搭建一个商品搜索案例

想象一下,你正在开发一个电商网站,商品数量达到百万级别。用户需要能够快速搜索商品,并且希望支持模糊匹配、按价格筛选、按分类过滤等功能。WHERE name LIKE '%手机%'随着数据量增加,这种查询会变得越来越慢,而且无法很好地支持模糊搜索和相关度排序。这就是ElasticSearch的用武之地。​​倒排索引​​是ES高性能搜索的基石​​合理的Mapping设计​​对搜索性能和准确性至关重要​​复合查询​​可以满足复杂的业务需求​​聚合分析​​提供了强大的数据分析能力​​性能优化​。

2025-09-09 22:02:16 690

原创 Spring Scheduler定时任务实战:从零掌握任务调度

在日常开发中,我们经常需要处理定时任务:每天凌晨的数据同步、每小时的统计报表、每5分钟的状态检查等。Spring框架提供了一个简单而强大的定时任务框架——Spring Scheduler,让我们能够以声明的方式轻松实现各种定时任务需求。本文将通过一个真实案例,带你从入门到掌握Spring Scheduler的使用。Spring Scheduler是Spring框架提供的定时任务调度器,它基于注解和配置的方式,让任务调度变得简单直观。支持cron表达式、固定延迟、固定频率等多种调度方式。

2025-09-09 21:54:50 1014 1

原创 深入理解数据结构:从数组、链表到B树家族

数据结构优点缺点典型应用场景数组随机访问快,内存紧凑大小固定,插入删除慢基础数据存储链表动态大小,插入删除快随机访问慢,内存分散队列、LRU缓存红黑树自平衡,操作稳定实现复杂有序集合、映射B树适合磁盘存储范围查询效率低文件系统B+树范围查询高效实现更复杂数据库索引B*树空间利用率高实现最复杂高性能数据库。

2025-08-20 11:39:55 604

原创 Java集合框架:Set、List、Map及HashMap底层实现详解

Java集合框架主要分为三大类接口:​​List(列表)​​:有序集合,元素可重复实现类:ArrayList、LinkedList、Vector​​Set(集)​​:无序集合,元素不可重复实现类:HashSet、LinkedHashSet、TreeSet​​Map(映射)​​:键值对集合实现类:HashMap、LinkedHashMap、TreeMap、Hashtable集合类底层结构线程安全有序性允许nullArrayList动态数组否插入顺序是LinkedList。

2025-08-20 11:27:44 706

原创 Java中的字符串:String、StringBuffer与StringBuilder详解

​​使用String​​:当字符串不需要频繁修改时,或者需要保证线程安全时​​使用StringBuffer​​:多线程环境下需要频繁修改字符串时​​使用StringBuilder​​:单线程环境下需要频繁修改字符串时(大多数情况)记住:在大多数现代应用中,由于单线程场景更常见,StringBuilder通常是性能最佳的选择。只有在明确需要线程安全的情况下,才应该选择StringBuffer。希望这篇博客能帮助你更好地理解和使用Java中的字符串类!

2025-08-20 10:32:58 327

原创 深入理解Java中的四类引用:强、软、弱、虚引用

Java的四类引用构成了灵活的内存管理机制:​​强引用​​:常规对象生命周期控制​​软引用​​:"柔性"缓存,内存不足时释放​​弱引用​​:不影响GC的临时关联​​虚引用​​:对象回收的精确通知合理使用这些引用类型,可以帮助我们:优化内存使用防止内存泄漏实现高效缓存精确控制资源释放理解这些引用类型,是成为Java高级开发者的重要一步。在你的项目中,是否遇到过适合使用这些引用类型的场景呢?

2025-08-19 21:35:44 530

原创 Java封装

封装是指将数据(属性)和行为(方法)包装在一个类中,并对外隐藏实现的细节。简单来说就是:把属性设为私有(private)提供公共(public)的方法来访问和修改这些属性封装是Java编程的基础概念,通过:将属性设为private提供public的getter和setter方法在方法中添加必要的业务逻辑这样可以构建更安全、更健壮的Java程序。记住:好的封装是优秀Java代码的开始!

2025-08-18 21:01:24 302

原创 Java中抽象类与接口的区别

抽象类是不能被实例化的类,它通常包含抽象方法(没有具体实现的方法)和具体方法(有实现的方法)。抽象类用于定义子类的通用行为和属性。// 抽象方法// 具体方法​​优先使用接口​​:当只需要定义行为契约时,接口是更好的选择,因为它允许多重继承且更灵活​​需要共享代码时使用抽象类​​:当相关类需要共享代码或需要定义模板方法时,抽象类更合适​​考虑Java版本​​:在Java 8+中,接口功能更强大,可以部分替代抽象类的功能​​组合优于继承​。

2025-08-18 20:30:56 616

原创 常用Linux指令:Java/MySQL/Tomcat/Redis/Nginx运维指南

希望这份Linux指令大全能帮助您更高效地进行服务器运维工作!根据实际环境,部分命令可能需要适当调整。

2025-08-12 17:12:45 533

原创 MySQL数据库中的密码加密详解

密码安全是数据库安全的核心部分,下面我将全面介绍MySQL中密码加密的各种方法,包括SHA-256、盐值加密等技术的实现原理和实际应用。

2025-08-12 11:51:47 391

原创 Java中使用Redis存储验证码实现登录操作

下面我将详细介绍如何使用Java和Redis实现验证码存储及登录验证的完整流程。

2025-08-12 11:32:04 280

原创 SpringBoot集成支付宝二维码支付接口详解

在电商和移动支付时代,集成支付宝支付功能已成为许多Java应用的必备功能。本文将详细介绍如何在SpringBoot项目中集成支付宝的二维码支付接口,包括从申请支付宝开发者账号到最终实现支付功能的完整流程。

2025-08-11 15:25:08 418

原创 基于ECharts的智慧社区数据可视化

ECharts是百度开源的一个基于JavaScript的可视化图表库,广泛应用于数据分析和展示场景。它具有丰富的图表类型、灵活的配置项和良好的交互体验。本文将介绍ECharts的核心功能和使用方法。或直接CDN引入:

2025-08-10 21:33:42 637

原创 基于百度地图API的社区地图展示技术实现

在现代Web应用中,地图功能已成为许多系统的标配功能,特别是在社区管理、位置服务等场景中。本文将介绍如何基于Vue.js和百度地图API实现一个社区地图展示功能,包括地图初始化、标记点展示、交互控制等核心功能。​​组件化开发​​:使用Vue Baidu Map组件库,以声明式的方式构建地图应用​​异步数据加载​​:地图准备好后再加载社区数据,避免不必要的请求​​交互增强​​:启用了多种地图交互功能,提升用户体验​​性能优化​​:使用v-for高效渲染多个标记点,并为每个标记点设置唯一key。

2025-08-10 21:28:51 336

原创 Linux环境下部署SSM聚合项目

第一步:上传jdk压缩安装包到服务器第二步:将压缩安装包解压第三步:配置环境变量编辑/etc/profile文件,在文件末尾添加以下内容:vim /etc/profile# 保存并退出:wq第四步:应用环境变量执行以下命令使配置生效:第五步:验证安装:执行以下命令检查JDK版本:首先检查是否有mysq环境检查是否有自带的mariadb数据库若存在则删除rpm -e --nodeps 安装包1、上传mysql压缩安装包到服务器2、解压3、修改解压后的名称4、创建存放数据的目录5、创建用户用户组,并将创建的用

2025-08-06 14:53:04 689

原创 Java面试题总结

在MyBatis映射文件中,B标签可以定义在A标签的后面。MyBatis在解析XML文件时是顺序解析的,但会先构建完整的DOM树后再处理引用关系,所以include引用的sql片段可以出现在引用它的语句之后。简化了JDBC代码提供SQL与代码分离的机制支持动态SQL提供强大的映射功能支持缓存机制插件扩展机制灵活SqlSessionMapper接口XML映射文件​​编程式事务​。

2025-08-02 16:09:19 896

原创 MyBatis-Plus乐观锁与雪花算法详解

​​乐观锁​​通过版本号机制解决并发更新问题,适合读多写少场景​​雪花算法​​提供分布式唯一ID,适合分库分表场景MyBatis-Plus内置支持这两种机制,简化开发工作实际应用中需要根据业务特点选择合适的方案。

2025-07-27 17:31:58 354

原创 MyBatisPlus(四)代码生成器与多数据源

​​代码生成器​​可以极大提高开发效率,自动生成各层基础代码​​多数据源​​配置简单灵活,适用于多种业务场景结合两者可以快速构建基于MyBatis-Plus的多数据源项目通过合理使用这些功能,可以显著减少重复代码编写,提高开发效率,让开发者更专注于业务逻辑的实现。

2025-07-27 16:29:14 973

原创 MyBatisPlus(三)条件构造器与插件

在真正开发的过程中,组装条件是常见的功能,而这些条件数据来源于用户输入,是可选的,因。此我们在组装这些条件时,必须先判断用户是否选择了这些条件,若选择则需要组装该条件,若。上面的故事,如果是乐观锁,小王保存价格前,会检查下价格是否被人修改过了。如果是悲观锁,小李取出数据后,小王只能等小李操作完之后,才能对价格进行操作,也会保证。小李操作的时候,系统先取。上面的实现方案没有问题,但是代码比较复杂,我们可以使用带。是的,如果没有锁,小李的操作就。了,则重新取出的被修改后的价格,已更新,条件不成立,修改失败。

2025-07-27 14:39:45 772

原创 MyBatisPlus(二)常用注解

经过以上的测试,在使用MyBatisPlus实现基本的CRUD时,我们并没有指定要操作的表,只是在Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表由此得出结论,在确定操作的表时,由BaseMapper的泛型决定,即实体类型决定,且默认操作的表名和实体类型的类名一致若实体类类型的类名和要操作的表的表名不一致,会出现什么问题?我们将表user更名为t_user,测试查询功能程序抛出异常, Table。

2025-07-26 17:43:58 772

原创 Java面试题(中等)

所有类名包含Buffer的类的内部实现原理是什么?当对象不使用了要释放资源,目的是什么?UDP协议:无连接,不可靠但高效,适用于实时性要求高的场景,如视频会议、在线游戏、DNS查询等。TCP协议:面向连接、可靠传输,适用于要求数据完整性的场景,如文件传输、网页浏览、电子邮件等。什么是引用传递,什么是值传递,哪些语言支持引用传递?13. equals()方法的作用是什么?引用类型的强制类型转换需要注意什么?59. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?2. 多线程的使用场景有哪些?

2025-07-25 22:28:12 615

原创 Git的使用

在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。此时我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。git 仓库级别对应的配置文件是当前仓库下的.git/config (一台电脑多人使用)git diff --cached Test1.txt(对比暂存区和Git仓库)

2025-07-25 22:26:30 401

原创 MyBatisPlus(一)简介与基本CRUD

【代码】MyBatisPlus。

2025-07-25 21:30:09 257

原创 SpringBoot的介绍和项目搭建

SpringBoot 2.0.2.RELEASE:统一环境;给maven 的settings.xml配置文件的profiles标签添加。(SpringBoot所有的Java文件都要写在主程序的同包及其子包下)3.编写一个主程序;启动Spring Boot应用。4.编写相关的Controller、Service。(maven项目改变成springboot项目)2.导入spring boot相关的依赖。1.创建一个maven工程(jar)

2025-07-20 22:16:19 444

原创 MyBatis(三)

如果想查询 select u.*,a.money from user u left join account a on u.id = a.uid 语句的内容。需求的SQL语句:select * from user where id = 1 or id = 2 or id = 3。需求:查询的数据中包含account所有的字段,再包含用户的名称和地址。之前做过拼接SQL语句查询条件的查询,需要动态的拼接SQL语句。3.在AccountMapper接口中编写查询的方法。在User类中添加List的属性。

2025-05-24 22:44:41 624

原创 MyBatis(二)

把数据库的信息定义property标签中的方式-- 配置环境们 -->-- 配置具体的环境 -->-- 配置事务管理类型 -->-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 -->-- 加载映射的配置文件 --><mappers></mappers>在项目中定义jdbc.properties属性文件,存储数据库相关的信息,统一管理jdbc.properties属性文件SqlMapConfig.xml的配置文件--

2025-05-24 22:28:51 1080

原创 MyBatis(一)

MyBatis是一个优秀的基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。MyBatis通过XML或者注解的方式将要执行的各种Statement对象配置起来,通过Java对象和statement中SQL的动态参数进行映射,并最终执行SQL语句。执行SQL后,最终将结果已Java对象返回。采用了ORM的思想。

2025-05-24 22:19:23 266

原创 JDBC工具类

MySQL是一款数据库,navicat是MySQL数据库的可视化工具要想后端与数据库进行连接,就需要先导入数据库驱动JDBC对市面上的数据库驱动进行了整合,用户只需要使用jdbc便可以管理各种数据库。驱动管理类注册驱动程序,创建连接对象Connection连接类建立数据库的连接Statementsql编辑器向数据库发送要执行的sql语句ResultSet查询结果集执行查找的操作结果。

2025-05-24 22:09:23 419

原创 Java并发编程

volatile并不一定能保证数据的准确性:两个线程同时操作volatile修饰的变量,从高速缓存区写回到内存后,会把该变量在高速缓存区中对应的数据清除,这样线程需要重新访问更新后的数据,从而保证数据的准确。CAS 比较并且交换--必须调用操作系统提供的CAS内核函数(原子性):线程操作资源的同时记录读取资源时刻的状态,如果更新时状态一致则改变,不一致则会重复进行读取并操作。多线程,多进程,多服务器,集群并发操作,只要是写后读,最终计算结果一定是准确的(语言无关)IO密集(等待的时间比运行的时间长很多)

2025-05-24 21:55:58 632

原创 Maven进阶

比如我们在项目开发的过程中,可能多个模块独立开发,但是多个模块可能依赖相同的公共模块,比如说每个模块都需要javaseo-utils,在编译的时候,maven-compiler-plugin插件也要被引入,maven仓库地址以及发布目录都是相同的配置。我们可以使用Maven的继承功能,把公共的配置信息写到父模块中,子模块只要继承了该父模块,也会继承父模块的配置信息。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。

2025-04-26 15:15:16 781

原创 IDEA搭建环境的五种方式

Java Enterprise-- 勾选jdk版本、Java EE version 、Application Server和Web Application。mavenJavaWeb项目的目录结构,控制台显示BUILD SUCESS表示创建成功。Artifacts模块下选择Web Application:Exploded。在Modules模块下添加Module,选择引入Module。maven模块下勾选c模版,选择maven的webapp。选择Java,jdk选择1.8版本,然后点next。

2025-04-25 21:26:21 826

原创 SpringMVC拦截器

拦截器(Interceptor)是 SpringMVC 提供的一种可插拔式组件,用于在请求处理的不同阶段执行特定操作(如权限验证、日志记录等)。与 Servlet 的过滤器(Filter)类似,但拦截器更专注于 Controller 层的请求处理,且与 SpringMVC 深度集成。通过配置文件,开发者可以灵活启用或禁用拦截器,无需修改业务代码。SpringMVC 拦截器通过灵活的钩子方法,为开发者提供了强大的请求处理扩展能力。无论是权限验证、日志记录,还是数据预处理,拦截器都能以低侵入的方式实现需求。

2025-03-27 20:55:20 761

原创 Spring MVC核心技术:从请求映射到异常处理

接口设计原则遵循RESTful风格使用合适的HTTP状态码保持URL语义清晰安全建议文件上传时验证文件类型对下载文件进行权限校验使用HTTPS传输敏感数据性能优化启用Gzip压缩使用CDN分发静态资源合理设置缓存策略。

2025-03-25 20:58:16 592 1

空空如也

空空如也

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

TA关注的人

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