- 博客(36)
- 收藏
- 关注
原创 AOP(面向切面编程详解)
AOP 通过“切面”模块化跨多个类的功能,这些功能通常与业务逻辑不直接相关。AOP 的核心概念是“切面”(Aspect)和“连接点”(Joinpoint)。切面(Aspect):一组同时横切多个类的代码,封装成一个单元。连接点(Joinpoint):程序执行的特定点,如方法的调用或执行。
2025-02-24 18:32:39
580
原创 分库分表详解
分库就是将数据库中的数据分散到不同的数据库上,可以垂直分库,也可以水平分库。垂直分库就是把单一数据库按照业务进行划分,不同的业务使用不同的数据库,进而将一个数据库的压力分担到多个数据库。举个例子:说你将数据库中的用户表、订单表和商品表分别单独拆分为用户数据库、订单数据库和商品数据水平分库是把同一个表按一定规则拆分到不同的数据库中,每个库可以位于不同的服务器上,这样就实现了水平扩展,解决了单表的存储和性能瓶颈的问题。
2025-02-23 16:42:50
705
原创 知识星球(小傅哥)大营销平台项目面试题总结
面试官您好,大营销平台的 Raffle 抽奖模块,是我独立负责实现的一个(学习/工作)项目,此项目模块在架构设计上运用了 DDD 分层架构和模板模式、责任链模式、组合模式、工厂模式等,这样的设计模式对业务流程进行解耦和实现。Raffle 抽奖模块的完整开发,让我对 SpringBoot 框架技术,分布式技术栈的运用更加熟练,也把设计模式在实际场景的使用了起来,积累了丰富的设计实现经验。这些技术学习的内容,也可以更好的应对以后的开发工作。
2025-02-21 19:37:41
1013
原创 CORS跨域问题常见解决办法
CORS 是一种浏览器安全机制,用于防止跨域资源请求带来的潜在安全风险。浏览器在执行跨域请求时,会检查目标服务器是否允许访问。如果服务器没有正确设置 CORS 头信息,浏览器将阻止跨域请求,并返回 CORS 错误。
2025-02-21 17:53:55
2098
原创 RabbitMQ面试题总结
DLX,全称为,死信交换器,死信邮箱。当消息在一个队列中变成死信 () 之后,它能被重新发送到另一个交换器中,这个交换器就是 DLX,绑定 DLX 的队列就称之为死信队列。导致的死信的几种原因消息被拒() 且。消息 TTL 过期。队列满了,无法再添加。延迟队列指的是存储对应的延迟消息,消息被发送以后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费。
2025-02-17 22:18:58
696
原创 如何使用Redis实现分布式锁
通常情况下,我们一般会选择基于 Redis 或者 ZooKeeper 实现分布式锁,Redis 用的要更多一点,我这里也先以 Redis 为例介绍分布式锁的实现。不论是本地锁还是分布式锁,核心都在于“互斥”。在 Redis 中, 命令是可以帮助我们实现互斥。 即 SET if Not eXists (对应 Java 中的 方法),如果 key 不存在的话,才会设置 key 的值。如果 key 已经存在, 啥也不做。释放锁的话,直接通过 命令删除对应的 key 即可。为了防止误删到其他的锁
2025-02-15 16:43:53
1471
原创 为什么要使用分布式锁
分布式锁的用途:分布式系统下,不同的服务/客户端通常运行在独立的 JVM 进程上。如果多个 JVM 进程共享同一份资源的话,使用本地锁就没办法实现资源的互斥访问了。分布式锁的应该具备的条件:互斥、高可用、可重入、高性能、非阻塞。分布式锁的常见实现方式:关系型数据库比如 MySQL、分布式协调服务 ZooKeeper、分布式键值存储系统比如 Redis 、Etcd。
2025-02-14 21:23:15
553
原创 Java常用设计模式面试题总结(内容详细,简单易懂)
特性简单工厂模式工厂方法模式抽象工厂模式创建的产品类型一个工厂可以创建多个不同类型的产品每个工厂创建单一类型的产品每个工厂创建一系列相关产品扩展性扩展较困难,新增产品需要修改工厂类通过继承和多态扩展产品类型通过增加新的工厂扩展产品族复杂度简单,只需要一个工厂类需要多个工厂类和子类较为复杂,涉及多个工厂和产品类适用场景产品类型较少,且变化不频繁产品类型较多,且可能需要扩展需要创建多个相关或依赖的产品代码维护性产品种类增加时,工厂类会变得庞大易于维护,但需要多个工厂类。
2025-02-12 17:01:46
1309
原创 Java并发面试题(题目来源JavaGuide)
1. 什么是进程(Process)?进程是操作系统分配资源和调度的基本单位。它是一个程序的执行实例,包括了程序代码、程序计数器、堆栈、数据区等资源。每个进程都有独立的内存空间、文件描述符等资源。进程的特点独立性:进程是操作系统调度的基本单位,进程之间相互独立,内存空间、文件资源等是隔离的。资源开销:每个进程都有独立的内存空间,因此创建和销毁进程的开销较大。并行性:多个进程可以在多核 CPU 上并行执行。2. 什么是线程(Thread)?线程是操作系统调度的最小单位。线程是进程中的执行单元。
2025-02-06 16:29:28
642
原创 Redis面试题总结(题目来源JavaGuide)
为了保证 Redis 在挂掉之后能够在重启时恢复数据,Redis 提供了持久化机制。RDB(Redis 数据库快照)和。通过这两种持久化方式,Redis 可以在系统崩溃或重启后恢复数据。1.RDB(Redis 数据库快照)RDB 是一种基于快照(snapshot)的持久化机制,它定期将 Redis 中的数据保存到磁盘上。工作原理:Redis 会定期将内存中的数据快照保存到磁盘中。默认情况下,Redis 会在满足某些条件时(如一定数量的写操作或一定时间间隔)生成 RDB 快照。生成的快照文件通常是。
2025-02-05 16:25:21
882
原创 MYSQL面试题总结(题目来源JavaGuide)
SQL 标准定义了四种事务隔离级别,它们控制了事务执行时对其他事务修改数据的可见性。事务隔离级别的主要目的是平衡并发性能和数据一致性,通过设置不同的隔离级别,可以在不同场景下选择合适的并发控制策略。这四种隔离级别是:1.读未提交(Read Uncommitted)描述:这是最低的隔离级别。在该级别下,事务 A 可以读取事务 B 未提交的数据。由于可以读取到其他事务正在修改的数据,可能会导致脏读(Dirty Read)问题。问题脏读。
2025-02-04 18:27:46
1189
原创 Java集合面试总结(题目来源JavaGuide)
问题答案为什么HashMap长度是 2 的幂?为了优化索引计算,减少哈希冲突如何计算索引?为什么用而不是% length?位运算比取模运算更快如果length不是 2 的幂,会怎样?索引分布不均,哈希冲突增加,性能下降HashMap 如何保证length是 2 的幂?方法,自动调整capacity。
2025-01-30 15:15:28
1191
原创 Java基础面试题总结(题目来源JavaGuide)
自动装箱(Autoboxing)和自动拆箱(Unboxing)是Java 5引入的特性,使得基本数据类型(intcharboolean等)和它们的包装类IntegerCharacterBoolean等)之间可以自动转换,简化代码编写。1. 自动装箱(Autoboxing)把基本数据类型自动转换成对应的包装类对象// 相当于 Integer num = Integer.valueOf(10);10是int类型,自动转换为Integer对象。底层调用方法,如果在-128 ~ 127之间,会使用缓存池。
2025-01-29 22:35:44
1178
原创 如何使用Shiro+Jwt实现登录验证
通过结合Shiro和JWT实现无状态认证,减少服务器存储负担。利用 Shiro 的认证、授权、加密、会话等强大功能,提高安全性。提供灵活的分布式系统支持,适应微服务架构。实现前后端分离的认证机制,适应现代 Web 应用。轻松集成第三方认证服务。因此,是一种高效、可扩展且安全的认证和授权方案,适合用于现代 Web 和分布式系统的身份验证需求。
2025-01-21 16:50:41
676
原创 pinia使用方法
在src/stores目录下创建一个文件,用于管理用户的登录状态和账户信息。// 定义 User 类型id: number;isLoggedIn: false, // 用户是否登录user: {} as User, // 存储用户信息}),getters: {// getter 用于从 state 中派生数据userName: (state) => state.user.username, // 获取用户的用户名。
2024-11-06 17:01:21
860
原创 前后端交互传递参数的几种方式
HTTP 请求(如GETPOST)是最常见的与后端交互的方式,适用于大多数场景。URL 参数:适合查询和简单数据传递。请求头:通常用于传递授权信息等。Cookies:适合会话管理和认证信息的传递。WebSocket:适用于实时双向通信的场景。Form Data:适合传统表单提交,常用于文件上传和表单数据提交。
2024-11-06 16:31:26
682
原创 如何实现登录成功则显示某个人的账户信息
为实现登录后自动显示某个人的账户信息,前端可以通过传递该用户的唯一标识符(例如用户 ID 或用户名)到Account组件来加载特定用户的数据。这通常通过 Vue 路由参数或store(比如你项目中使用的 Pinia)来实现。
2024-11-06 15:59:30
339
原创 如何生成唯一UUID
UUID (Universally Unique Identifier) 是一种广泛使用的生成唯一标识的方法,生成的 ID 具有很高的唯一性。UUID 生成的随机 ID 由 32 个字符组成,可以避免重复。雪花算法(Snowflake)生成的 ID 适合分布式系统,具有递增和唯一性。可以使用一些开源的实现库,如。可以将当前时间戳与一个随机数拼接来生成一个唯一的用户 ID。这种方法可以生成较短的 ID,同时也避免重复。若要使用 Hutool 中的雪花算法工具,需要添加 Hutool 的依赖。
2024-11-06 15:48:55
972
原创 如何在vue中使用svg图片及修改样式
你可以根据项目的具体需求选择适合的方法。如果需要动态控制 SVG 的样式或行为,建议使用嵌入或方法;如果只是需要显示静态图标,使用标签或 CSS 背景图会更简单。使用 SVG 组件时,可以用结合 CSS 类、动态style绑定和 props 等多种方式调整样式,从而获得极大的灵活性。这也是 SVG 在前端开发中越来越受欢迎的原因之一。
2024-11-05 20:20:50
2703
原创 icon-font如何引入图标
如果你所创建的组件不包含任何文本内容(例如, <button> 内只包含了一个图标),你应当提供其他的内容来表示这个控件的意图,这样就能让使用辅助设备的用户知道其作用了。如果你使用图标是为了表达某些含义(不仅仅是为了装饰用),请确保你所要表达的意思能够通过被辅助设备识别,例如,包含额外的内容并通过 .sr-only 类让其在视觉上表现出隐藏的效果。但是这里有一个问题,就是引入的图标是黑色的,原来的图标明明是蓝色,如果让引入到项目中的iconfont图标保留它原有的颜色呢?找到想要的图标之后,点击。
2024-11-05 17:51:07
642
原创 maven如何配置多个仓库(包括最常用的)
在项目中使用Maven管理jar包依赖,往往会出现以下状况:1、国内访问maven默认远程中央镜像特别慢;2、使用阿里的镜像替代远程中央镜像;3、阿里云镜像中缺少部分jar包;4、同时使用私有仓库和公有仓库;针对以上情况,我们就需要让Maven支持多仓库配置。常用仓库。
2024-10-29 16:10:11
2238
原创 Docker拉取镜像失败
确保 Docker Desktop 也已安装并在 Windows 中运行。我Ping 了下 www.baidu.com 发现是通的。这说明你就没有安装成功,需要重新安装。我首先重启服务 ,然而并没有什么用。:在 WSL 中执行。
2024-10-23 18:00:27
1098
原创 滚动数组-动态规划(跳跃训练-费波那契数列)
解法空间复杂度适用场景优点缺点动态规划(DP)O(n)大多数动态规划问题逻辑清晰,易于理解,适用于多维问题空间复杂度高滚动数组(空间优化)O(1)状态转移依赖少的动态规划问题(如斐波那契数列)空间复杂度低,节省内存只适用于状态依赖较少的情况,不适用复杂的多维问题当问题的状态转移方程简单且依赖的状态较少时,滚动数组解法非常适合。然而,对于依赖更多前置状态或复杂多维问题,滚动数组解法的应用局限性会显现出来。
2024-10-21 16:33:54
1130
原创 乐观锁和悲观锁自我理解
顾名思义,就是比较悲观的锁,总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
2024-10-15 16:37:02
1037
原创 spring注入的几种方式总结
Spring中的注入机制主要体现在依赖注入(Dependency Injection, DI)上,允许通过多种方式将Bean或集合注入到应用程序的组件中。常见的注入方式包括字段注入、构造函数注入、Setter方法注入等。针对集合类型的注入,如Map和List,Spring也提供了灵活的支持。下面是Spring注入和集合注入的几种方式的总结。
2024-10-12 21:03:37
478
原创 责任链模式自我了解
什么是责任链模式?职责链可以将请求的处理者组织成一条链,并将请求沿着链传递,如果某个处理者能够处理请求则处理,否则将该请求交由上级处理。客户端只需将请求发送到职责链上,无须关注请求的处理细节,通过职责链将请求的发送者和处理者解耦了,这也是职责链的设计动机。
2024-10-05 22:34:54
651
原创 po,vo,entity,dto,aggreate的区别
聚合对象,实体对象、值对象的协同组织,就是聚合对象。聚合对象通过一个核心的实体,称为聚合根(Aggregate Root),对外部世界进行交互和访问。聚合根是该聚合的入口点,负责管理聚合内部所有的实体和值对象的生命周期、业务规则和行为。实体对象,大多数情况下,实体对象(Entity)与数据库持久化对象(PO)是1v1的关系,但也有为了封装一些属性信息,会出现1vn的关系。实体和值对象的组合:聚合可以包含多个实体和值对象,聚合根是这些对象的唯一入口点。值对象,通过对象属性值来识别的对象。
2024-10-05 21:39:38
512
原创 mysql插入表错误
如果你创建了新表,新表将会继承数据库的默认字符集。确保在创建新表时不需要显式指定字符集,新表将自动使用 UTF-8 字符集。,发现,数据库是Latin1格式,而表自动继承了数据库的格式,所以二者都是Latin1格式,sql。查询语句来查看当前数据库的默认字符集。确保当前的默认字符集是你想要的。替换为你的数据库名称。这将修改数据库的默认字符集为 UTF-8。查询语句来验证数据库的默认字符集是否已经修改为 UTF-8。执行完修改数据库字符集的命令后,你可以再次执行。语句默认utf-8格式,所以格式错误。
2024-05-10 19:16:25
564
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人