自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

许苑向上

一个努力学习代码向上的人

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

原创 2024最新版Java八股文

2024年最新版本八股文,都是本人多轮面试总结的热点面试题,涵盖Java众多领域面试热点,直击面试重点,只需要花费一小部分时间看完这篇文章就能让你轻松通过面试,何乐而不为,希望各位小伙伴点赞收藏加关注再转发,祝愿各位都能如愿通过面试,拿到自己想要的offer!!!

2024-11-26 22:57:00 1309

原创 自主项目面试点总结

⼀个基于微服务的OJ系统,具备能够根据管理员预设的题⽬⽤例对⽤⼾提交的代码进⾏执⾏和评测的能⼒。此外,还⾃主实现了代码沙箱,可作为独⽴服务供其他开发者调⽤。⼀个在线刷题平台,平台⽀持管理员创建题库、批量管理题⽬,⽤⼾可以通过⾼效的搜索引擎进⾏题⽬检索,在线做题。项⽬核⼼围绕性能优化、数据⼀致性和⾼并发场景进⾏设计, 确保⽤⼾的刷题体验流畅且稳定。实现了伙伴交流聊天室、按共同兴趣爱好标签检索伙伴、推荐相似伙伴、组队,聊天,ChatGPT问答等功能。

2025-02-11 23:27:39 1336

原创 如何保证Redis和MySQL数据的一致性刨析

由缓存的调用者在进行更新数据库的同时更新缓存。更新数据:在进行数据库数据修改的时候,一般都是删除缓存,然后缓存为空,等待查询时候判空再进行数据库的查询然后更新缓存,而不是每次去做更新数据都进行更新缓存操作。

2025-02-10 22:44:07 715

原创 Spring MVC 拦截器(Interceptor)与过滤器(Filter)的区别?

拦截器(Interceptor): 只会拦截那些被@Controller 或 @RestController 标注的类中的方法处理的请求,也就是那些由 Spring MVC 调度的请求。过滤器(Filter): 会拦截所有类型的 HTTP 请求,包括静态资源和后台 API。Controller 是 Spring MVC 的核心组件之一,用于处理用户的 HTTP 请求,并返回响应。请求会根据 URL 路径、请求方法(GET/POST) 等信息,映射到 Controller的某个方法上来处理。

2025-02-10 16:24:09 459

原创 CommandLineRunner的作用

CommandLineRunner 是 Spring Boot 提供的一个 应用程序启动时执行代码的接口。它的主要作用是:在 Spring Boot 应用启动后立即执行一段代码(比如初始化数据、执行任务等)。预加载数据检测系统配置连接外部服务任务调度初始化等。

2025-02-10 12:38:03 348

原创 MVCC底层原理实现

了解实现原理之前,先理解下面几个组件的内容。

2025-01-24 23:25:40 806

原创 如何理解json和json字符串

json类型字符串本质是字符串,而json对象是json类型的数据,而且json类型数据分为两部分:json对象和json数组。如何理解网络传输的json到底是什么数据。网络传输的其实是对应的 json。它是一个合法的 JSON 数组。这是一个包含数组表示的字符串。对象,前端接收后会将。

2025-01-23 19:53:46 300

原创 Spring中三级缓存详细讲解

Spring 中的三级缓存主要用于单例 Bean 的生命周期管理,特别是在循环依赖时,它通过不同阶段暴露 Bean 实例来确保依赖注入的顺利完成。。该缓存中存储的是已经完成初始化的 Bean 对象,包括所有的属性注入和生命周期回调方法(如 @PostConstruct)都已完成。。也就是 Bean 已经完成了实例化,并完成了依赖注入(如字段注入),但可能还没有执行初始化方法(如 @PostConstruct)。

2025-01-12 23:28:38 612 1

原创 保护性暂停原理

保护性暂停的超时等待应用于 join()方法中,可用于超时返回结果。保护性暂停的核心:在于等待线程在某个条件不满足时进入等待状态,并通过其他线程的通知机制在条件满足时继续执行。

2025-01-07 13:30:42 585

原创 线程之间的转换以及线程的活跃性

活锁:线程并未被阻塞都在运行,但是却直处于一种伪“忙碌等待”,原因是:一个线程改变了另外一个线程的结束条件。顺序加锁可以解决死锁问题,但是会产生线程饥饿问题,有的线程始终或者很少获得cpu执行。死锁:同时争抢资源,相互等待对方资源释放,最终导致死锁。解决办法:ReentrantLock进行解决。

2025-01-06 13:51:13 311

原创 WebMvcConfigurer详解

WebMvcConfigurer 是 Spring 5 引入的一个接口,它用于定制 Spring MVC 的行为,使得开发者能够更加灵活地修改和扩展 Spring MVC 默认的配置。它提供了多种方法,可以定制拦截器、视图解析器、静态资源处理、消息转换器、CORS 配置等。使用 WebMvcConfigurer 可以让你无需修改 Spring 源代码,就能轻松定制 Spring MVC 的行为。

2024-12-09 22:49:51 708

原创 Java后端面试模板(技术面)

通用java技术面

2024-12-06 23:32:59 1202

原创 许苑刷题阁笔记汇总

Elasticsearch 是一个分布式的开源搜索引擎和分析引擎,它主要用于解决搜索难题、数据分析以及实时文档检索,广泛用于。

2024-12-06 23:31:24 1193

原创 Github优质框架 + 工具模板 + 项目在线了解

目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、QQ、微信、淘宝、Google、Facebook、抖音、领英、小米、微软、今日头条、Teambition、StackOverflow、Pinterest、人人、华为、企业微信、酷家乐、Gitlab、美团、饿了么、推特、飞书、京东、阿里云、喜马拉雅、Amazon、Slack和 Line 等第三方平台的授权登录。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。

2024-12-04 13:32:18 1103

原创 hot 100道 链表-堆 解题心得(二)

力扣 100 道解题心得总结

2024-12-03 16:55:59 730

原创 力扣hot100道【贪心算法后续解题方法心得】(三)

动态规划(Dynamic Programming,简称DP)是一种解决具有重叠子问题和最优子结构特性的问题的方法。其核心思想是将一个复杂的问题分解成一系列更小的子问题,并通过存储这些子问题的解来避免重复计算,从而提高算法效率,即为利用空间存储已经计算过的值,达到空间换时间。冒泡排序(Bubble Sort):通过重复遍历要排序的列表,一次比较两个元素,如果他们的顺序错误就把他们交换过来。1)关键解题思路2)代码/* 冒泡排序 */// 只需要遍历length -1遍即可i >0;

2024-12-03 15:21:54 1675

原创 许苑园 一一 寻找共同兴趣的伙伴项目笔记

用户去添加标签,标签的分类(要有哪些标签、怎么把标签进行分类)学习方向 java / c++,工作 / 大学主动搜索:允许用户根据标签去搜索其他用户组队允许用户去修改标签允许个人与个人进行聊天公共聊天室chagpt问答博文发布心动匹配。

2024-12-03 11:34:08 858

原创 力扣hot100道算法解题技巧+算法心得(一)

力扣 hot 100道算法解题技巧和感悟心得

2024-11-23 16:38:12 700

原创 Dubbo集成SpringBoot实现远程服务调用

Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。

2024-11-22 20:00:16 1066

原创 Vue3项目实战(vue3+vite+pinia+element-plus+axios+mock)

许苑后台管理系统一、项目介绍1、技术栈2、业务功能3、应用场景4、项目源码二、项目实战2.1、项目初始化2.2、项目实战1、引入router配置2、App.vue组件引入3、创建RootView根路由组件4、依次创建5、进行对应各个环境的配置环境设置一、项目介绍1、技术栈vue3+vite+vue-routerpiniaelement-plusaxiosmockEcharts2、业务功能登录首页商品用户管理3、应用场景进行后台管理项目的根据不同用户的权限授予不同的

2024-11-19 17:06:49 2835 3

原创 常用字符串和集合处理工具类

Hutool:提供了一整套丰富的工具类,涵盖了文件操作日期时间处理、网络请求、加密解密、JSON字符串与集合处理等多个方面,适合于各种日常开发任务。Gson:专注于JSON处理,提供了简单且强大的 API,适用于将 Java 对象与 JSON 字符串进行相互转换。Apache Commons Lang 是 Apache Commons 项目的一部分,旨在提供一组常用的功能,以简化 Java 应用程序的开发。

2024-11-12 16:58:35 1043

原创 在Linux上部署(MySQL Redis Elasticsearch等)各类软件

MySQL数据库管理系统(后续简称MySQL),是一款知名的数据库系统,其特点是:轻量、简单、功能丰富。MySQL数据库可谓是软件行业的明星产品,无论是后端开发、大数据、AI、运维、测试等各类岗位,基本上都会和MySQL打交道。让我们从MySQL开始,进行实战的Linux软件安装部署。本次课程分为2个版本进行安装:MySQL 5.7版本安装MySQL 8.x版本安装由于MySQL5.x和8.x各自有许多使用者,所以这两个版本我们都演示安装一遍。

2024-11-11 09:14:01 1154 2

原创 【Elasticsearch】Elasticsearch集成Spring Boot

Spring Data Elasticsearch基于Spring Data API简化 Elasticsearch 操作,将原始操作Elasticsearch 的客户端API进行封装。Spring Data为Elasticsearch 项目提供集成搜索引擎。Spring Data Elasticsearch POJO的关键功能区域为中心的模型与Elastichsearch交互文档和轻松地编写一个存储索引库数据访问层,简单的来说是类似于Mybatis-Plus操作。

2024-11-08 11:46:03 825

原创 全网最详细RabbitMQ笔记包括如何安装环境【RabbitMQ】RabbitMQ + Spring Boot集成零基础入门(基础篇)

RabbitMQ 是一个开源的消息队列中间件,作为消息代理(Message Broker)实现,它负责在不同的应用程序、服务或组件之间传递消息。RabbitMQ 实现了 AMQP(Advanced Message Queuing Protocol)协议,支持可靠的消息传递,确保消息能够在系统中被可靠、顺序地传递,并支持异步和解耦合的通信方式。其中消息传递的基本模型可以分为点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)两种类型。

2024-11-07 22:08:34 1032

原创 【零基础小白】 window环境下安装RabbitMQ

RabbitMQ是用编写的,因此在安装RabbitMQ之前,需要先安装Erlang环境。确定Erlang版本:根据具体需求以及安装符合的Erlang版本。本文下载的故而下载Erlang版本之间的,打开系统属性:右键点击“此电脑”或“计算机”图标,选择“属性”,然后点击“高级系统设置”。编辑环境变量:在“系统属性”窗口中,点击“环境变量”按钮。编辑Path变量:同样在“系统变量”区域,找到名为Path的变量并选择它,然后点击“编辑”按钮。

2024-11-06 11:12:27 622 1

原创 最详细【Elasticsearch笔记】Elasticsearch Java API+ Spring Boot集成 实战入门(基础篇)

ES(Elasticsearch)是一个开源的、分布式的搜索引擎,广泛用于实时数据的存储、搜索和分析。它基于Apache Lucene构建,提供了强大的全文搜索功能。ES主要用于处理大规模的结构化、半结构化和非结构化数据,常见于日志分析、网站搜索、数据可视化等场景

2024-11-05 22:20:34 2202 5

原创 快速了解Websocket技术

WebSocket是一种全双工网络通信协议,它提供了在单个TCP连接上进行全双工通信的渠道。WebSocket使得客户端(通常是浏览器)和服务器之间可以进行持续的双向数据交换。传统的HTTP协议是请求/响应模式,即客户端发起请求后,等待服务器响应;而WebSocket允许服务器主动向客户端推送信息,同时也允许客户端与服务器进行实时通信。

2024-09-01 17:50:07 1765 1

原创 ThreadLocal底层原理

ThreadLocal提供了一种简单而强大的机制来解决线程安全问题,尤其是在需要每个线程都有独立变量副本的场景下。通过合理地使用ThreadLocal,可以大大简化多线程编程的复杂度,并提高代码的可读性和可维护性,同时在不再需要ThreadLocal变量时,显式调用remove方法来清理该变量,防止内存泄漏。

2024-08-30 18:53:37 1252

原创 详细了解组合模式

组合模式(Composite Pattern)是一种结构型设计模式,它允许我们将对象组合成树形结构以表示“部分-整体”的层次结构。通过使用组合模式,我们可以以一致的方式处理单个对象和对象组合,使客户端代码能够透明地操作它们,而不必关心是在处理单个组件还是组合的结构。

2024-08-29 15:39:35 694

原创 快速搞懂桥接模式

桥接模式(Bridge Pattern)是一种面向对象的设计模式,属于结构型模式的一种。其主要目的是将一个类的抽象部分与它的实现部分分离,使它们可以独立变化。这样做的好处是可以减少系统中的类的数量,简化系统的结构,并提高系统的可扩展性。通过桥接模式,可以在运行时动态地给一个抽象化的对象设置不同的实现化对象,这样就能够在不改动代码的情况下增加新的实现或者改变现有的实现。。

2024-08-28 22:51:04 457

原创 快速了解策略模式

策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。这种模式定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式主要解决在多种相似算法存在时,使用条件语句(如if…else)导致的复杂性和难以维护的问题。

2024-08-27 10:32:34 519

原创 syncronized锁升级的过程

如果自旋失败,则锁升级为重量级锁。锁升级的过程是从无锁状态到偏向锁,再到轻量级锁,最后升级为重量级锁。锁升级的过程是指锁从较低级别的锁(如偏向锁)升级到较高级别的锁(如轻量级锁或重量级锁)的过程。:当第二个线程尝试获取锁时,偏向锁失效,锁升级为轻量级锁。:如果轻量级锁的 CAS 失败多次,或者轻量级锁自旋超过一定次数仍未获取到锁,则锁升级为重量级锁。:如果轻量级锁的 CAS 失败多次,或者轻量级锁自旋超过一定次数仍未获取到锁,则锁升级为重量级锁。当 Thread-2 尝试获取锁时,偏向锁失效,锁升级为。

2024-08-23 11:21:59 546

原创 快速搞懂代理模式

动态代理(Dynamic Proxy)是一种在运行时动态创建代理对象的技术。与静态代理相比,动态代理。

2024-08-22 11:15:22 1001

原创 设计模式之适配器模式

适配器模式(Adapter Pattern)属于结构型设计模式,它的作用是将一个类的接口转换成客户希望的另外一个接口。适配器让原本由于接口不兼容而不能一起工作的类可以协同工作(通俗的说就是转接口。

2024-08-18 20:47:25 518

原创 设计模式一原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,它允许一个对象通过拷贝(克隆)现有的实例来创建新的对象,而不是通过传统的构造器创建新的实例。其核心是重写Object中的clone方法,调用该方法可以在内存中进行对象拷贝。这种模式的主要目的是为了提高性能和复用现有对象的状态。关键字就是Clone。

2024-08-17 22:08:18 422

原创 设计模式一建造者模式

建造者(Builder)设计模式是一种创建型设计模式,其主要目的是为了将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。

2024-08-16 17:38:36 848

原创 设计模式一单例模式

它保证一个类只有一个实例,并提供一个全局访问点来获取该实例。这种模式通常用于创建那些在整个系统中只需要一个实例的对象,比如配置管理器、线程池、日志对象等。

2024-08-15 11:37:22 615

原创 设计模式一工厂模式

工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。

2024-08-14 13:07:21 1191

原创 @MapperScan和@ComponentScan的区别

ComponentScan是Spring框架中的一个注解,用于自动扫描和注册带有特定注解的组件为Spring管理的bean。当一个类被@Component、@Service、@Repository或@Controller等注解标注时,Spring可以通过@ComponentScan自动检测到这些类,并将它们注册为bean。@MapperScan可以指定扫描的mapper包路径,然后将其注册成bean,此时对应的mapper包类。@MapperScan是MyBatis-Spring集成中的一个注解,

2024-07-18 23:10:48 729 1

空空如也

空空如也

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

TA关注的人

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