自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 39. 组合总和--回溯

2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。如果至少一个数字的被选数量不同,则两种组合是不同的。7 也是一个候选, 7 = 7。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。

2025-11-17 22:25:13 96

原创 17. 电话号码的字母组合

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。

2025-11-17 22:00:12 92

原创 78. 子集

返回该数组所有可能的子集(幂集)。

2025-11-17 19:10:02 67

原创 回溯算法理解

需要注意的是,回溯算法是一种暴力搜索的方法,解空间的规模很大时,可能会导致算法效率低下。因此,在使用回溯算法时,需要根据问题的规模和特点进行合理的优化和剪枝,以提高算法的性能。因为你是在固定 index 的数,然后进入处理下一个 index。下一层必须处理 index+1(不是 i+1)需要交换数字来“固定”当前 index 位置。1️⃣ 组合(choose k)回溯逻辑。2️⃣ 排列(permute)回溯逻辑。来限制下一次选择从哪里开始。每个数字的位置都要尝试。每个数字只能选或不选。

2025-11-17 18:08:52 361

原创 46. 全排列---回溯

假设我们有 [2,5,8,9,10] 这 5 个数要填入,已经填到第 3 个位置,已经填了 [8,9] 两个数,那么这个数组目前为 [8,9 ∣ 2,5,10] 这样的状态,分隔符区分了左右两个部分。假设这个位置我们要填 10 这个数,为了维护数组,我们将 2 和 10 交换,即能使得数组继续保持分隔符左边的数已经填过,右边的待填 [8,9,10 ∣ 2,5]。将题目给定的 n 个数的数组 nums 划分成左右两个部分,,我们在回溯的时候只要动态维护这个数组即可。给定一个不含重复数字的数组。

2025-11-17 14:58:45 248

原创 287. 寻找重复数

我们从下标为 0 出发,根据 f(n) 计算出一个值,以这个值为新的下标,再用这个函数计算,以此类推,直到下标超界。同样的,我们从下标为 0 出发,根据 f(n) 计算出一个值,以这个值为新的下标,再用这个函数计算,以此类推产生一个类似链表一样的序列。使用环形链表II的方法解题(142.环形链表II),使用 142 题的思想来解决此题的关键是要理解如何将输入的数组看作为链表。从理论上讲,数组中如果有重复的数,那么就会产生多对一的映射,这样,形成的链表就一定会有环路了,),可知至少存在一个重复的整数。

2025-11-17 11:41:23 199

原创 42. 接雨水

给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。6上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。9。

2025-11-17 10:36:47 247

原创 437. 路径总和 III

不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。1000000000 + 1000000000 = 2000000000 (正常)和等于 8 的路径有 3 条,如图所示。,求该二叉树里节点值之和等于。发生整数溢出,后续计算都不准确。给定一个二叉树的根节点。

2025-11-17 00:14:17 203

原创 排序java

从最低位(LSD,Least Significant Digit)到最高位(MSD,Most Significant Digit)依次排序。(3) 时间复杂度可以突破基千关键字比较一类方法的下界O(nlog2n), 达到O(n)。:O(n log n)(建堆 O(n) + 排序 O(n log n))→ 但整体复杂度仍然 O(n²),因为移动数组元素仍要 O(n):大量数据、要求 O(n log n) 最坏时间,且对空间敏感。:O(d*(n+k)),适合大规模整数排序。

2025-11-16 14:50:17 800

原创 136. 只出现一次的数字

除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。方法一:位运算:数组中的全部元素的异或运算结果即为数组中只出现一次的数字。

2025-11-13 00:55:13 272

原创 70. 爬楼梯

你有多少种不同的方法可以爬到楼顶呢?3、不用递归,多用一个数组空间复杂度增加。

2025-11-13 00:31:19 349

原创 20有效的括号

栈是Vector的一个子类,它实现了一个标准的后进先出的栈。学习思路:利用hashmap 去对应。,判断字符串是否有效。注意==和.equals。

2025-11-12 23:43:53 384

原创 35搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组。中,返回它将会被按顺序插入的位置。

2025-11-12 22:41:20 217

原创 HJ18 识别有效的IP地址和掩码并进行分类统计

判断每个字节是否为合法的掩码字节(255, 254, 252, 248, 240, 224, 192, 128, 0)验证掩码的连续性:如果某个字节不是全1,则前面所有字节必须都是255。逐个处理每行输入,每行包含IP地址和掩码(用。(包括字母、数字、空格等,除了换行符)。A、B、C、D、E类IP地址的数量。此外额外注意循环条件的退出!掩码必须是连续的1后接连续的0。错误IP或错误掩码的数量。这些地址不参与后续统计。B类:128-191。C类:192-223。D类:224-239。E类:240-255。

2025-11-12 10:34:28 1036

原创 HJ17 坐标移动

" 是合法的,向下移动 2020 个单位,到达 (−10,−20)(−10,−20) 点;" 是合法的,向上移动 1010 个单位,到达 (−10,−10)(−10,−10) 点;" 是合法的,向右移动 3030 个单位,到达 (20,−10)(20,−10) 点;∙ ∙第九个指令 "A10;" 是合法的,向左移动 1010 个单位,到达 (10,−10)(10,−10) 点。∙ ∙第一个指令 "A10;" 是合法的,向左移动 1010 个单位,到达 (−10,0)(−10,0) 点;

2025-11-11 18:30:04 476

原创 HJ16 购物单--01背包问题

在这个样例中,第三、四、五件物品为主件,第一、二件物品为第五件物品的附件。但是特别地,如果同时购买了第一件物品和第二件物品,则只需要购买一次第五件物品。为了先购买重要的物品,他给每件物品规定了一个重要度,用整数 1∼5 表示。我们可以证明,购买一、二、五件商品,获得的满意度最大,为 20×3+20×3+10×1=13020×3+20×3+10×1=130。∙ ∙若要购买某附件,必须先购买该附件所属的主件,且每件物品只能购买一次。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件。

2025-11-11 17:50:00 984

原创 java八股补充篇2

代理模式为一个对象(目标对象)创建一个“代理对象”,客户端不直接访问目标对象,而是通过代理对象间接访问,从而在不修改目标对象的前提下,增加额外的功能(如日志、权限检查、事务等)。代理类在编译期就已经写好,是“静态”存在的。特性静态代理动态代理(如 JDK 动态代理、CGLIB)代理类生成时机编译期手动编写运行时动态生成灵活性低,一个代理类对应一个目标类高,一个处理器可代理多个类代码量多,需要为每个目标写代理类少,通用的是否需要接口必须实现公共接口JDK 动态代理需要接口;

2025-11-06 11:48:37 765

原创 消息队列-八股

消息队列(Message Queue,MQ)是分布式系统中的核心中间件之一,主要从三大核心价值出发。订单服务创建订单后,需要通知库存、物流、积分、短信等多个下游系统。如果直接调用,任何一个下游故障都会导致订单失败。订单服务只负责发一条“订单创建”消息到 MQ,各下游系统。:加入一个操作设计到好几个步骤,这些步骤之间不需要同步完成比如客户去创建了一个订单,还要去客户轨迹系统添加一条轨迹、去库存系统更新库存、去客户系统修改客户的状态等等,这些操作串行执行将会产生大量的时间,用户体验差。

2025-11-06 10:56:24 841

原创 SpringClould-MybatisPlus

MyBatisPlus支持各种复杂的where条件,可以满足日常开发的所有需求在数据库中,除了新增操作之外,修改、删除、查询的 SQL 语句中都需要指定 where 条件。在 BaseMapper中提供的相关的方法除了提供以 id 作为 where 的条件之外,也都支持更加复杂的 where 条件。

2025-11-02 02:36:04 816 1

原创 神经网络补充知识

以‌LSTM(长短期记忆)神经网络为例,它通过‌遗忘门、输入门和输出门来控制信息的流入和流出,从而解决传统RNN(循环神经网络)中的梯度消失或爆炸问题。长短期记忆网络利用复杂的门控机制来挖掘时间序列的时间依赖性,直观地说,LSTM网络关注的是序列关联以及序列内的变化趋势。如果没有激活函数,网络的输出就是输入的线性组合,即使网络有多层,整个模型也等效于一个线性模型,无法有效处理复杂的数据特征。:根据损失函数的值,使用链式法则计算梯度,从输出层向输入层反向传播,以更新权重和偏置,减少损失。

2025-11-01 13:30:04 766

原创 java八股补充篇

怎么解决这三个问题。

2025-10-24 01:03:28 919

原创 Redis相关八股

Redis 提供了8 种淘汰策略,分为三类:基于 LRU、LFU、TTL 和随机。第一类:针对所有 key(allkeys)策略说明从所有 key 中淘汰最近最少使用(Least Recently Used)的。从所有 key 中淘汰最不经常使用(Least Frequently Used)的。从所有 key 中随机淘汰。第二类:仅针对设置了过期时间的 key(volatile)策略说明从设置了 TTL 的 key 中淘汰最近最少使用的。从设置了 TTL 的 key 中淘汰最不经常使用的。从。

2025-10-23 20:09:16 607

原创 MySQL相关

MySQL数据库核心知识点摘要(148字): InnoDB作为MySQL默认存储引擎,通过事务(ACID)、行锁和MVCC实现高并发安全,支持崩溃恢复。MVCC机制通过多版本数据快照实现读写并发控制。数据库范式规范表结构设计,减少冗余。事务隔离级别中,InnoDB在RR级别通过间隙锁解决幻读问题。聚簇索引(B+树存储完整数据)与非聚簇索引(存储主键值)影响查询效率。UUID主键会导致写入性能差、空间浪费等问题,推荐使用自增ID或有序分布式ID。

2025-10-19 14:49:24 903

原创 Spring面试

JDK动态代理实现原理:基于Java的反射机制,要求目标类必须实现至少一个接口。Spring会在运行时动态创建一个实现了与目标类相同接口的代理类。核心组件类和接口。通过方法创建代理对象,所有方法调用都会被的invoke()方法拦截。优点:是Java原生支持,无需额外依赖。缺点:只能代理实现了接口的类。CGLIB动态代理实现原理:基于字节码生成库(ASM),通过继承目标类来创建子类作为代理。代理类会重写目标类的所有非final方法。核心组件类和接口。通过Enhancer。

2025-10-18 20:18:56 907

原创 java八股-操作系统

操作系统内存管理是操作系统的核心功能之一,主要负责合理分配、回收和保护内存资源,确保多个进程能够高效、安全地共享物理内存。操作系统设计了虚拟内存,每个进程都有自己的独立的虚拟内存,我们所写的程序不会直接与物理内打交道。内存管理的核心目标✅提高内存利用率:让尽可能多的程序装入内存。✅方便程序使用:为程序员提供“无限大”的地址空间。✅实现内存保护:防止进程非法访问其他进程或系统的内存。✅支持虚拟内存:让程序可以运行在比物理内存更大的“虚拟”空间中。物理内存计算机中实际存在的。

2025-10-16 19:11:54 606

原创 java线程-并发编程

多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件。为了避免临界区的竞态条件发生,有多种手段可以达到目的。(如共享变量、文件、数据库连接等),并且。是指一段代码,在这段代码中,线程会。,从而可能产生错误或不一致的结果。访问和修改共享资源,导致程序的。临界区与竞态条件的关系。

2025-10-16 16:38:15 1017

原创 java线程相关的方法

/ sleep() 会使线程进入 TIMED_WAITING// yield() 后线程仍是 RUNNABLEsleep()是强制暂停,有明确的时间控制,线程会进入等待状态。yield()是礼貌请求,仅是一个建议,调度器可以忽略,线程仍在运行状态。当一个 Java 程序启动时,JVM 会自动创建一个名为main的线程,即主线程。它是程序的入口点,负责执行方法。所有其他线程(用户线程或守护线程)通常由主线程创建。守护线程是一种后台服务线程。

2025-10-16 12:11:27 932

原创 java线程相关八股

方式是否有返回值是否可抛异常是否推荐适用场景继承 Thread❌❌⚠️ 不推荐简单演示实现 Runnable❌❌✅ 推荐一般多线程任务实现 Callable + FutureTask✅✅✅ 推荐需要返回结果线程池(ExecutorService)✅/❌✅/❌✅✅强烈推荐生产环境、高并发线程池采用先添加到队列而不是先创建最大线程的设计,主要是为了提高资源利用率减少线程创建的开销,避免系统过度消耗资源。线程的创建、销毁和上下文切换是有开销的。

2025-10-15 15:57:33 1013

原创 JVM相关

垃圾回收(Garbage Collection, GC)自动识别并回收不再使用的对象,释放内存空间,防止内存泄漏和内存溢出。是指在垃圾回收过程中,JVM暂停所有应用线程(用户线程)的执行,只保留必要的GC线程进行垃圾回收操作。核心特点:全局暂停:所有正在运行的Java线程都会被冻结,应用程序暂时“卡住”。GC专用时间:在此期间,只有GC线程在工作,确保堆内存状态一致,避免在回收过程中对象引用关系发生变化。影响用户体验:STW的时间长短直接影响应用的延迟(Latency)和响应性。

2025-10-14 19:11:22 806

原创 Spring Boot02(数据库、Redis)02---java八股

这种策略只针对设置了过期时间的key进行操作,优先淘汰那些最近最少使用且已经设置了过期时间的key。描述:在设置了过期时间的key中,淘汰过期时间剩余最短的。这种策略优先淘汰那些即将过期的key,确保Redis存储的数据尽可能新鲜。在不确定哪些key是热门数据,或者对淘汰策略没有特殊要求的情况下,可以使用这种简单的随机淘汰策略。通常不推荐使用,除非对数据的完整性有极高的要求,且能够接受在内存不足时拒绝所有写操作的后果。在需要淘汰过期key,但又不希望完全依赖LRU算法的情况下,可以使用这种随机淘汰策略。

2025-03-22 23:27:50 1546

原创 分布式存储(Zookeeper)---java八股

分布式事务是指在分布式系统中,由多个微服务或数据库参与的事务,这些参与者可能分布在不同的服务器或数据存储中。与单体应用中的传统事务不同,分布式事务需要确保在多个系统或服务之间的一致性、可靠性和原子性,即要保证在多方参与的事务中,要么全部成功,要么全部失败。ZAB协议是Zookeeper用来实现一致性的原子广播协议领导者选举阶段:从Zookeeper集群中选出一个节点作为Leader,所有的写请求都会由Leader节点来处理。

2025-02-17 14:18:20 1138

原创 Spring Boot02(数据库、Redis)---java八股

Mybatis的优缺点#{}和${}的区别是什么?。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用 PreparedStatement 来赋值;Mybatis在处理${}时,会将sql中的${}替换成变量的值,调用 Statement 来赋值;使用#{}可以有效的防止 SQL 注入, 提高系统安全性。索引的基本原理索引用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历整张表。索引设计的原则?事务的基本特性和隔离级别。

2025-02-16 17:08:14 1808

原创 Redis的持久化机制

持久化方式优点缺点适用场景RDB性能高,适合大规模备份,易于迁移和备份数据丢失风险,生成快照时可能对性能产生影响数据丢失容忍度高,周期性备份AOF数据安全性高,能够完整记录所有操作,减少数据丢失性能较差,AOF 文件可能变大,需要定期重写数据安全性要求高,容忍性能下降混合模式结合了 RDB 的高效性和 AOF 的数据安全性,平衡性能与可靠性占用更多资源,可能会增加系统负担高性能需求同时要求高可靠性根据实际需求,可以选择合适的持久化方式来平衡性能和数据一致性。

2025-02-16 16:43:30 1125

原创 缓存穿透、缓存击穿、缓存雪崩分别是什么

问题类型主要原因解决方法缓存穿透请求的数据不存在或非法参数校验、空值缓存、布隆过滤器缓存击穿热点数据缓存失效,多个请求并发访问互斥锁、缓存预热、合理设置缓存过期时间缓存雪崩大量缓存同时失效,导致请求直接访问数据库缓存过期时间随机化、二级缓存、降级处理、分布式架构这三种问题是分布式缓存系统中常见的性能瓶颈,需要合理设计缓存策略和架构来应对。

2025-02-16 16:36:54 1090

原创 Redis分布式锁底层是如何实现的?

Redis 提供的简单操作能够有效地实现分布式环境中的锁机制,通过这种方式,我们可以在分布式系统中保证某些操作的互斥性。命令来实现的,确保了锁的互斥性和防止死锁的机制。为了确保锁的释放不发生误操作,通常会使用唯一标识符进行锁的标记。是一种常见的分布式系统中解决多进程/多线程访问共享资源时的同步问题的机制。在 Redis 中,实现分布式锁的底层原理通常依赖于。使用 Redis 实现分布式锁时,需要特别注意锁的过期时间、锁的释放时机和锁的唯一性。(由 Redis 的创始人 Antirez 提出的分布式锁算法)

2025-02-16 16:27:21 780

原创 什么是RDB和AOF

这样,RDB 可以提供较快速的恢复,而 AOF 则可以提供较高的数据持久性。Redis 会在重启时优先恢复 AOF 数据,若 AOF 文件存在问题,则回退到 RDB 快照。它们分别有不同的工作原理和优缺点,可以根据具体需求选择合适的方式进行持久化。是一种基于快照的持久化机制,它会在指定的时间间隔内将数据库的状态保存到一个二进制文件中。AOF 文件通常被称为。RDB 持久化的过程是一次性的,会在保存快照时冻结 Redis 的操作。,它保存了 Redis 执行的所有写操作,因此可以通过重放这些操作来恢复数据。

2025-02-16 16:20:51 1484

原创 简述Redis事务实现

Redis 事务实现通过 MULTI 开始事务,EXEC 提交事务,DISCARD 放弃事务。虽然 Redis 提供了事务的原子性和隔离性,但不像传统关系型数据库那样提供回滚机制。事务的核心功能是确保命令按照顺序、原子性执行,而 WATCH 可以用来实现乐观锁,增加事务执行的可靠性。

2025-02-16 16:17:15 440

原创 Redis 主从复制的核心原理

Redis 主从复制(Master-Slave Replication)是 Redis 提供的一个重要功能,允许一个 Redis 实例作为主节点(Master),将数据同步到一个或多个从节点(Slave)。通过主从复制,Redis 可以实现数据的冗余备份、负载均衡和高可用性。Redis 的主从复制基于 异步复制,具体过程包括主节点与从节点之间的数据同步,数据的传播等,以下是核心原理:Redis 主从复制的核心原理是通过 异步复制 实现主节点与从节点之间的数据同步。从节点在连接到主节点后,会执行全量同步和增量

2025-02-16 16:14:56 959

原创 Spring Boot01(注解、)---java八股

多个事务方法相互调用时,事务如何在这些方法间传播,方法A是一个事务的方法,方法A执行过程中调用了方法B,那么方法B有无事务以及方法B对事务的要求不同都会对方法A的事务具体执行造成影响,同时方法A的事务对方法B的事务执行也有影响,这种影响具体是什么就由两个方法所定义的事务传播类型所决定。另外,Bean是不是线程安全,跟Bean的作用域没有关系,Bean的作用域只是表示Bean的生命周期范围,对于任何生命周期的Bean都是一个对象,这个对象是不是线程安全的,还是得看这个Bean对象本身。

2025-02-16 14:53:36 1256

原创 java05(类、泛型、JVM、线程)---java八股

Java中有哪些类加载器JDK自带有三个类加载器:bootstrap ClassLoader、ExtClassLoader、AppClassLoader。●BootStrapClassLoader是ExtClassLoader的父类加载器,默认负责加载%JAVA_HOME%lib下的jar包和class文件。●ExtClassLoader是AppClassLoader的父类加载器,负责加载%JAVA_HOME%/lib/ext文件夹下的jar包和class类。

2025-02-15 11:29:31 1472

空空如也

空空如也

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

TA关注的人

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