自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

动动发财的小手点点赞

为编程事业添砖加瓦

  • 博客(113)
  • 收藏
  • 关注

原创 从0到1教你如何部署项目

相信大家都有这样的疑惑,平时在浏览器地址栏直接输入一个网址就能够访问网站,这是怎么做到的呢?在这里我以项目为例,带你揭开这背后的神秘面纱。在工作中服务器配置等方面的工作是运维人员的工作,但是作为开发人员也需要对这方面的知识有一点的了解,如:项目如何部署到服务器上,服务器CPU过载如何调优等。黑马程序员提供的视频课程和项目资料,需要前后端项目的小伙伴可以访问百度网盘链接:pwd=29ja自行领取下载。到这里关于项目如何部署上线就讲完了,有什么疏漏的地方还请各位学者批评指正。

2025-08-15 12:37:48 1710 5

原创 RabbitMQ如何保障消息的可靠性

消息可靠性是指在消息从生产者发送到消费者接收的整个过程中,确保消息不会丢失、重复或损坏。在实际的生产环境中,网络故障、服务器宕机、应用程序异常等各种因素都可能导致消息丢失,因此消息可靠性是消息队列系统必须解决的核心问题。RabbitMQ通过Publisher Confirm、消息持久化、事务机制、Mandatory参数、消费者确认等多种机制,为消息传递提供了全方位的可靠性保障。在实际应用中,我们需要根据业务特点合理选择和组合这些机制,在确保消息可靠性的同时保持系统的高性能。

2025-09-14 11:05:27

原创 如何进行MySQL数据库优化

表结构优化:从源头设计避免问题索引优化:直接影响查询性能硬件优化:提升整体处理能力分库分表:解决单机性能瓶颈。

2025-09-13 12:33:42 329

原创 SQL语句优化的步骤详解

在实际项目中,随着数据量的增长和业务复杂度的提升,SQL性能问题逐渐凸显。很多开发者面对慢查询时往往不知从何下手,要么盲目加索引,要么随意修改SQL结构。实际上,SQL优化是一个系统性的工程,需要遵循科学的方法论。问题发现:通过监控和日志及时发现性能问题深入分析:使用EXPLAIN等工具分析执行计划索引设计:基于查询模式设计合理的索引结构语句优化:重构SQL语句,改善执行逻辑效果验证:对比优化前后的性能指标持续改进:建立长期监控和优化机制。

2025-09-13 10:12:57 395

原创 Docker的使用及核心命令

Dockerfile= “制作配方”:告诉Docker如何一步步构建你的应用镜像= “指挥家”:协调多个容器协同工作,形成完整的应用系统两者结合使用,能够实现从单个应用的容器化到复杂系统的自动化部署,是现代软件开发中不可或缺的工具组合。

2025-09-12 22:04:41 933

原创 Linux常用命令详解

作为一名开发者,掌握Linux命令是必备技能之一。无论你是刚接触Linux的新手,还是想要系统梳理命令知识的老司机,这篇文章都能为你提供实用的参考。我将结合实际工作场景,介绍那些真正高频使用的Linux命令。掌握这些Linux命令,基本上能应对日常开发和运维工作的大部分需求。记住,熟能生巧,多在实际工作中使用这些命令,才能真正掌握它们。Linux的命令行世界博大精深,这篇文章只是冰山一角。希望能为你的Linux学习之路提供一个良好的起点!

2025-09-12 21:05:18 186

原创 微服务架构中的CAP理论与BASE理论

Consistency (一致性):所有节点在同一时间看到相同的数据。简单来说,就是读操作必须返回最新的写操作结果。Availability (可用性):系统对每个请求都能在有限时间内返回响应,即使部分节点故障。Partition Tolerance (分区容忍性):系统在网络分区(即节点间通信失败)时仍能继续运行。在微服务架构中,网络分区是不可避免的现实(如云环境中的网络延迟或故障),因此分区容忍性(P)通常是必须保证的。这意味着我们需要在一致性(C)和可用性(A)之间进行权衡。

2025-09-07 14:47:46 796

原创 理解JMM:volatile关键字与内存屏障

Java内存模型是Java虚拟机规范中定义的一个抽象概念,它描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。

2025-09-07 11:12:32 833

原创 Redisson分布式锁:看门狗机制与续期原理

在微服务架构和分布式系统中,分布式锁是保证数据一致性的重要手段。Redis作为高性能的内存数据库,天然适合实现分布式锁。而Redisson作为Redis的Java客户端,不仅提供了完善的分布式锁实现,还引入了看门狗(WatchDog)机制来解决锁续期问题。分布式锁是在分布式环境下,多个进程或线程对共享资源进行互斥访问的一种机制。互斥性:同一时刻只能有一个进程持有锁可重入性:同一线程可以多次获取同一把锁阻塞与非阻塞:获取不到锁时的处理策略容错性:具备自动释放锁的能力Lua脚本保证原子性。

2025-09-06 20:45:29 1532

原创 Sentinel服务治理:服务降级、熔断与线程隔离

在微服务架构中,服务间的调用链路复杂,任何一个服务的故障都可能引发雪崩效应。Sentinel作为阿里巴巴开源的分布式系统的流量防护组件,通过服务降级、服务熔断和线程隔离等机制,为微服务提供了稳定性保障。流量控制:通过QPS限流、并发数控制等方式防止系统过载服务降级:通过规则自动检测异常并切断故障服务,执行兜底逻辑热点参数限流:针对热点数据进行特殊保护线程隔离:通过资源隔离,避免服务间相互影响在实际应用中,需要根据具体业务场景合理配置各种规则,建立完善的监控体系,并制定相应的运维流程。

2025-09-06 11:17:09 707

原创 项目中分布式事务的的解决方案

今天想和大家分享一下在实际项目中处理分布式事务的经验。分布式事务是微服务架构中常见的痛点,如果处理不当,很容易导致数据不一致,甚至系统崩溃。这篇文章会从问题背景、常见解决方案到实际应用案例,一步步展开。分布式事务是微服务避不开的话题,通过合理选择框架和模式,能有效降低风险。在项目中,我更倾向于最终一致性方案,因为它更符合分布式系统的本质。如果你有类似经历,欢迎在评论区交流!

2025-09-05 20:59:32 788

原创 HashMap多线程下的循环链表问题

HashMap 的循环链表问题是 Java 并发编程的一个经典案例,它提醒我们集合类的线程安全至关重要。通过理解扩容机制和并发风险,我们能更好地避免生产事故。如果你遇到类似问题,欢迎在评论区分享你的经历!

2025-09-05 20:06:29 1090

原创 ElasticSearch倒排索引原理

ES通过倒排索引先找到文档ID,再获取文档内容Elasticsearch通过"写时建索引、读时查索引"的核心机制,利用倒排索引这一精妙数据结构实现毫秒级全文检索。其中,文档分析确保了查询的一致性,倒排索引提供了检索的高效性,而_source存储保证了数据的完整性。三者协同工作,共同构建了现代搜索引擎的技术基石。

2025-09-03 23:34:08 574

原创 SpringMVC的执行流程

SpringMVC是Spring框架中的一个模块,专门用于开发Web应用程序。它是一个基于MVC设计模式的Web框架。Model负责数据处理和业务逻辑,View负责展示数据,Controller负责接收请求、调用业务逻辑、控制页面跳转。它支持灵活的配置方式,可以用XML配置也可以用注解配置。同时提供强大的数据绑定功能,能够自动将请求参数绑定到Controller方法参数上。另外还支持多种视图技术,比如JSP、Thymeleaf、FreeMarker等。

2025-08-31 21:17:11 1190

原创 MyBatis延迟加载

延迟加载是MyBatis中一种按需查询的机制。当执行主查询获取到主对象后,对于主对象中的关联对象,并不会立即执行关联查询,而是在真正访问关联对象时才会触发对应的SQL语句进行查询。这种机制的核心思想是"用时再取"。比如查询一个用户信息时,如果该用户关联了多个订单,延迟加载不会立即查询出所有订单数据,而是等到代码中真正调用获取订单列表的方法时,才会执行查询订单的SQL语句。延迟加载能够有效避免不必要的数据库查询,减少数据库的负载压力,提高应用程序的整体性能。

2025-08-28 23:29:16 509 1

原创 SpringBoot的启动流程

两个核心阶段:SpringApplication创建和run方法执行应用类型推断决定了ApplicationContext类型Environment是配置管理的核心,有明确的优先级refresh是Spring容器启动的经典流程。

2025-08-27 22:22:17 926 1

原创 Apache Shiro基本使用指南

在Java Web开发中,安全框架的选择一直是开发者关注的重点。Spring Security功能强大但配置复杂,而Apache Shiro则以其简单易用、功能完整而受到广大开发者的喜爱。今天我们就来详细了解Shiro的基本使用,看看如何快速上手这个优秀的安全框架。Apache Shiro是一个功能强大且易于使用的Java安全框架,它可以帮助我们完成认证、授权、加密、缓存和会话管理等安全相关的功能。在实际项目中,我们通常需要从数据库获取用户信息,这时就需要自定义Realm。/**

2025-08-26 23:03:26 407 2

原创 Redis持久化策略

Redis作为一款高性能的内存数据库,在互联网应用中扮演着至关重要的角色。但是内存的易失性带来了一个问题:一旦服务器重启或者意外宕机,内存中的数据就会丢失。为了解决这个问题,Redis提供了完善的持久化机制,确保数据的安全性和可靠性。Redis的持久化就是将内存中的数据保存到磁盘上,以便在Redis重启时能够恢复数据。:快照持久化:追加文件持久化这两种方式各有特点,可以单独使用,也可以同时开启。RDB持久化是通过生成数据快照的方式来保存数据。

2025-08-26 22:15:01 871

原创 Restful风格设计

我的理解是:Restful是一种基于HTTP协议的架构设计风格,可以更构建简单的Web服务,它是一种设计规范,但不是规则。通过@GetMapping、@PostMapping、@PutMapping、@DeleteMapping结合路径注解@PathVariavle能够帮我我们在开发设计资源路径时更加规范,而不是目无章法。RESTful API设计看似简单,但要做好却不容易。资源和统一接口。在实际项目中,我们不需要严格遵循所有REST约束,而是要根据具体场景选择合适的设计方案。URL设计要直观,见名知意。

2025-08-24 11:43:26 348 3

原创 SpringBoot自动配置原理解析

SpringBoot作为Spring生态系统中的重要组成部分,其最大的特色就是约定优于配置的设计理念,而自动配置机制正是这一理念的核心体现。通过自动配置,SpringBoot能够根据项目中的依赖和配置,自动装配相应的Bean,极大地简化了传统Spring项目的配置工作。SpringBoot自动配置是一套智能化的配置机制,它能够根据classpath中存在的jar包、配置文件中的属性值以及其他条件,自动为应用程序配置相应的Bean。

2025-08-23 23:17:25 741

原创 SpringBoot中的条件注解

在SpringBoot开发中,我们经常会遇到这样的场景:某些Bean只有在特定条件下才需要被创建,或者根据不同的环境加载不同的配置。SpringBoot的条件注解就是为了解决这类问题而设计的。条件注解是SpringBoot提供的一套机制,允许我们根据特定条件来决定是否创建Bean、加载配置或执行某些逻辑。这些注解基于Spring 4.0引入的@Conditional注解,SpringBoot在此基础上扩展了更多实用的条件注解。

2025-08-22 23:37:59 1160 3

原创 SpringBoot如何定义自动配置器

在Spring Boot中,自动配置器是其“开箱即用”能力的核心。它能根据你项目的依赖、类路径中的类、配置文件等,自动配置好相应的 Bean,无需手动编写大量配置代码,下面我们就利用SpringBoot的自动配置原理,从外部导入一个手动配置好的redis坐标,并在主项目中尝试获取这个Bean,如果成功得到没有异常发生,就说明自动配置成功了。my.redis# 可以根据自己的redis配置修改my:redis:port: 6379。

2025-08-22 17:57:14 1204

原创 Spring容器Bean的创建流程

本文将从源码角度分析Spring容器中Bean的创建流程,重点关注从getBean()方法开始的完整调用链路,通过源码分析Spring IoC容器的核心工作机制。在学习SpringIoC容器中Bean是如何创建的过程中,我翻阅的无数次源码,也借鉴了很多大佬的文章,一次一次的打断点需要很大的耐心,虽然现在的学习没有得到正反馈,但是在将来的一天当你把源码烂熟于心是,不管是写博客总结还是在面试中被问到,可以胸有成竹的回答出来。希望大家可以更好的理解Bean的创建流程。

2025-08-21 23:14:53 862 1

原创 BeanFactory与ApplicationContext的区别

在学习Spring框架的IoC容器时,BeanFactory和ApplicationContext是两个核心概念。作为Spring容器的不同实现层次,它们在功能特性、初始化策略、适用场景等方面存在显著差异。特性加载方式懒加载预加载功能丰富度基础功能功能丰富内存占用较小较大学习建议了解即可重点掌握作为一个正在深入学习Spring框架的开发者,我认为掌握ApplicationContext的使用是必要的。

2025-08-21 08:00:21 804 1

原创 MyBatis-Plus基础篇详解

作为刚接触这款工具的小白,可以先到Mybatis-Plus官网,跟着文档熟悉具体的方法并手动跟着敲一遍,这样更容易理解掌握这项技术。MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus是基于MyBatis的增强工具,它在不改变原有功能的基础上提供了强大的CRUD操作能力。通过继承BaseMapper 接口,开发者无需编写 XML 配置即可获得基本的数据库操作功能;支持和进行灵活的条件查询。

2025-08-19 21:45:09 1419

原创 Java开发过程中实用的技术点(一)

本文所有的技术点都是基于SpringBoot项目,去除了复杂的配置,方便开发和分享知识。// 封装解析出来的数据try {//1.获取一个解析器对象//2.利用解析器把xml文件加载到内存中,并返回一个文档对象//3.获取到根标签<emps>//4.通过根标签来获取emp标签//5.遍历集合,得到每一个emp标签//获取 name 属性//获取 age 属性//获取 image 属性//获取 gender 属性// 通过反射获取构造器// 通过构造器创建实例对象。

2025-08-19 19:01:05 266

原创 理解AQS的原理并学习源码

AbstractQueuedSynchronizer(抽象队列同步器)是Java并发包java.util.concurrent中的核心基础组件,它提供了一个用于构建锁和其他同步组件的框架,在其内部通过volatile int state变量表示同步状态,并且定义了一个内部类来使用双向链表实现等待队列,同时支持独占和共享模式。AQS提供了一个用于构建锁和其他同步组件的框架,在其内部通过volatile int state变量表示同步状态,并且定义了一个内部类来使用双向链表实现等待队列,同时支持独占和共享模式。

2025-08-18 22:51:47 929

原创 简单了解BeanFactory和FactoryBean的区别

BeanFactory是Spring IoC容器的核心抽象,定义了容器的访问规范;FactoryBean是Spring 提供的一个特殊接口,提供了复杂对象创建的工厂模式实现,主要用来创建其他Bean。和普通Bean的区别普通 Bean 的 getBean() 拿到的就是 Bean 本身,而FactoryBean的 getBean()实际上返回的是 etObject()方法生产的对象。如果要拿工厂本身,用beanName。

2025-08-17 17:59:46 873 1

原创 SpringAOP核心概念及使用

AOP,中文意思是面向切面编程,它允许我们将横切关注点从业务逻辑中分离出来。简单来说,就是把那些散布在各个业务方法中的通用功能抽取出来,统一管理。分离关注点:将横切关注点从业务逻辑中分离减少代码重复:避免在多个地方写相同的代码提高可维护性:统一管理横切功能在实际项目中,AOP常用于日志记录、事务管理、权限验证等。

2025-08-17 14:48:34 307

原创 Spring事物

我在这篇文章中分享了Spring事务管理的实用经验,从为什么需要事务入手,解释了它如何确保操作的原子性,比如转账场景。接着,我详细介绍了核心概念,包括传播行为和隔离级别的表格展示,以及回滚规则。然后,我展示了如何用@Transactional注解配置事务,并举了转账代码例子。最后,我列出了事务失效的常见坑,如非public方法和类内调用问题,希望能帮大家在开发中避开雷区,更高效地处理数据库操作。

2025-08-15 20:46:11 899

原创 Bean的生命周期

Bean生命周期是指Spring容器管理Bean从创建到销毁的整个过程。BeanDefinition处理 → BeanFactoryPostProcessor处理 → Bean实例化 → 属性注入 → Aware接口回调 →BeanPostProcessor前置处理 → 初始化方法 → BeanPostProcessor后置处理 → Bean就绪可使用 → 销毁方法声明:本文结合了AI和学者的知识理解,在AI生成的文章框架的基础上补充完成的。

2025-08-14 23:12:10 1345

原创 内存可见性和伪共享问题

内存可见性问题指的是:一个线程对共享变量的修改,对其他线程不一定立即可见。这听起来很奇怪,但在现代多核处理器架构下,确实存在这个问题。伪共享是指多个线程访问同一缓存行中的不同变量时,即使这些变量在逻辑上是独立的,但由于它们位于同一缓存行,一个线程的修改会导致其他线程的缓存行失效,从而引起不必要的缓存同步开销。

2025-08-13 23:18:44 503

原创 熟悉并使用Spring框架 - 注解篇

上次我们聊了Spring的XML配置,今天来看看注解配置。说实话,注解配置真的比XML方便太多了,代码更简洁,维护也更容易。现在大部分项目都在用注解,所以这个必须得掌握。简单来说,就是用注解来告诉Spring哪些类是Bean,如何进行依赖注入。不用写那么多XML了,直接在Java代码上加注解就行。@Component@Service // 业务层System.out.println("处理订单");@Repository // 数据访问层System.out.println("保存用户");

2025-08-12 21:37:04 311

原创 熟悉并使用Spring框架 - XML篇

Spring框架作为Java开发中最流行的框架之一,为我们提供了多种配置方式。虽然现在注解和Java配置越来越流行,但XML配置作为Spring的经典配置方式,对于初学者和对底层源码感兴趣的同学,学习XML配置仍然是非常重要的一环。Spring的XML配置是通过XML文件来定义Bean以及它们之间关系的一种方式。这种配置方式直观明了,所有的配置信息都集中在XML文件中,便于管理和维护。System.out.println("UserService被创建了");

2025-08-12 20:39:53 955

原创 区间修改 - 差分

用差值来描述变化,通过前缀和来还原状态。它的优势在于把O(n)的区间修改变成了O(1)的操作,当操作次数很多时,效率提升非常明显。

2025-08-11 22:35:41 474

原创 二维前缀和问题

今天在牛客上刷算法题时,碰到这样一道题,题目要求我们用前缀和解题,但是我并没有太深入了解过这个算法,于是只能暴力求解,但是发现提交后都显示超时或有些案例不通过,我百思不得其解,于是通过网上的搜索和看题解的方法终于对前缀和问题有了清晰的认识。每次查询最坏需要遍历整个矩阵:O(n × m),q 次查询总时间复杂度:O(q × n × m),那么当 n = m = 10³,q = 10⁶ 时,总操作次数达到 10¹² 次,这是相当的耗时,所以我们要寻找优化方法。

2025-08-10 23:12:26 282

原创 一维前缀和问题

前缀和的核心作用是快速计算任意区间的元素和通过预处理构建前缀和数组利用公式在 O(1) 时间内计算区间和将多次区间查询的时间复杂度从 O(m×n) 优化到 O(n+m)以上属个人总结,欢迎各位学者评论指正。

2025-08-10 15:20:23 531

原创 MyBatis的执行流程

特性一级缓存二级缓存作用范围SqlSession级别Mapper级别默认状态默认开启需要手动开启生命周期SqlSession关闭后失效跨SqlSession共享返回对象同一个对象引用对象拷贝。

2025-08-10 10:22:25 1230

原创 MyBatis联合查询 - 注解篇

在日常开发中,我们经常需要查询多张表的数据,传统的XML配置方式虽然功能强大,但有时候显得比较繁琐。MyBatis的注解方式为我们提供了一种更简洁、更直观的解决方案 -注解。MyBatis的注解方式为我们提供了灵活的联合查询解决方案。虽然在复杂查询方面可能不如XML配置那样强大,但对于大部分常见场景来说已经足够了。

2025-08-09 14:16:12 406

原创 MyBatis联合查询 - XML篇

一对一:通过 association 标签,查询用户及其关联的一个订单。一对多:通过 collection 标签,查询用户及其所有订单,MyBatis 自动将多行订单数据映射到 List。多对多:通过 collection 标签,查询用户及其所有角色,借助中间表 user_role 实现关联。

2025-08-07 22:28:20 355

SpringBoot+MyBatis-Plus+Enjoy整合的单体不分离项目

在项目中用到了模版引擎技术Enjoy和MyBatis-Plus的基础用法

2025-08-21

Spring项目,包含从原始XML配置到注解配置、用dbutil的QueryRunner对象操作数据库、简单的AOP配置

Spring基础项目,适用于对Spring有一定了解的人群

2025-08-13

Plain Craft Launcher 2.exe

Plain Craft Launcher 2.exe

2022-10-14

空空如也

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

TA关注的人

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