- 博客(18)
- 收藏
- 关注
原创 hot100解法
于是我们可以通过遍历数组,定义一个初始值为1的变量,依次乘以数组的值,每次取最大值,但是只从前往后乘,会出现 -2,2,2,2,2这种情况,导致最大值一直是负数,但是实际上最大值应该是2*2*2*2。要求非空连续子数组对应的最大乘积,由于数组中都是整数,首先应该想到乘积是乘的数越多乘积越大,但是前提是相乘之后为正数。由上述分析可知,数组中存在负数,那么会导致最大的值变的最小,最小的值变的最大。题目中数组中存在负数,那么会导致最大的值变的最小,最小的值变的最大。输入: nums = [2,3,-2,4]
2025-06-07 18:14:36
367
原创 力扣hot100---152.乘积最大子数组
这种情况,导致最大值一直是负数,但是实际上最大值应该是2*2*2*2。于是我们可以通过遍历数组,定义一个初始值为1的变量,依次乘以数组的值,每次取最大值,但是只从前往后乘,会出现。因此我们需要维护两个数组,一个存储最大值,一个存储最小值,每次对比当前值和二者乘以当前数,取三者最大值。,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。对应的最大乘积,由于数组中都是整数,首先应该想到乘积是乘的数越多乘积越大,但是前提是相乘之后为正数。测试用例的答案是一个。
2025-06-07 18:12:43
475
原创 经典算法面试问题及分析
如输入 nums = [2,3,6,7],和为 7 的组合应该有两种 [2,2,3] 和 [7]。还有第4种:元素可重可复选,但为啥要这种形式,跟无重复可复选有什么区别?如输入 nums = [2,5,2,1,2],和为 7 的组合应该有两种 [2,2,2,1] 和 [5,2]。3、元素无重复可复选。如输入 nums = [2,3,6,7],和为 7 的组合应该只有 [7]。2、元素可重复不可复选。这些题目都是从 列表nums中,用一定规则来取元素,主要有下面几种类型:1、元素不重复不可复选。
2025-06-04 20:28:30
323
原创 MYSQL 索引详解及索引优化、分析
索引在MySQL中是比较常见的,索引就相当于我们看书的目录,它是帮助MySQL高效获取数据的一种数据结构,主要用来提高数据的检索效率,减少IO成本,同时通过索引对数据进行排序,降低排序成本。2.索引的作用加快查询速度:通过索引快速定位数据。保证数据唯一性:如主键和唯一索引。优化排序和分组:索引可以加速ORDER BY和GROUP BY操作。用二级索引查数据时,会先检二级索引中的 B+Tree 的索引值(商品编码,product_no),找到对应的叶子节点,然后获取主键值,然后再通过主键索引。
2025-06-03 19:47:36
1634
原创 AI入门——AI大模型、深度学习、机器学习总结
一、深度学习:从感知到认知的技术革命核心突破:自动化特征工程的范式变革深度学习通过多层神经网络架构(如卷积神经网络 CNN、循环神经网络 RNN),实现了从原始数据中自主学习分层特征的能力。层次化抽象:低层网络学习基础特征(如图像像素、语音频谱),高层网络组合抽象概念(如 “猫的轮廓”“句子情感”)。端到端学习:输入原始数据直接输出结果(如从 X 光片直接诊断疾病),减少人工干预误差。1.典型应用场景计算机视觉。
2025-06-02 09:14:49
1442
原创 缓存击穿、缓存雪崩、缓存穿透以及数据库缓存双写不一致问题
缓存击穿是指一个设置了过期时间的缓存项在过期之后,恰好有很多并发请求访问这个过期数据,这些请求发现缓存中没有值后,会去查询数据库,引起数据库压力骤增。
2025-06-01 17:24:37
950
原创 MYSQL中的分库分表及产生的分布式问题
分库分表是解决MySQL单库单表性能瓶颈的分布式数据库优化方案,主要包括水平拆分和垂直拆分两种方式。水平拆分通过分库分表分散数据压力,提升吞吐量但增加跨库查询复杂度;垂直拆分按业务维度隔离数据,实现冷热分离但需处理事务一致性。常见分片策略有哈希取模和范围划分,需合理选择分片键。分布式环境下需解决主键生成(如雪花算法)和事务问题(通过Seata的AT/XA模式)。配置时需根据业务场景选择模式:AT适合高并发最终一致场景,XA适用金融级强一致需求。实际应用中可混合使用不同模式,并加强异常监控。
2025-05-25 16:14:17
1433
原创 RBAC–––基于角色的权限访问控制
RBAC即基于角色的权限访问控制(Role-Based Access Control),是一种通过“角色”为中间桥梁,实现用户与权限分离的访问控制模型。
2025-05-20 17:36:25
714
原创 java中sleep()和wait()暂停线程的区别
则用于线程间的交互,会释放对象锁。在中断处理方面,两者都会抛出异常,但。主要用于线程的短暂暂停,不释放对象锁,而。
2025-05-18 18:46:10
647
原创 java中几种属性拷贝方式的优劣
由于没有额外的反射或其他复杂操作,直接访问属性进行赋值,执行效率高:可精确处理特殊字段(如类型转换、空值处理):编译时检查,避免运行时错误:属性多时写起来繁琐:字段变更需同步修改:属性少、性能敏感或需要特殊处理的场景。:一行代码完成拷贝:Apache Commons 组件的一部分:基于反射,比手动赋值慢 10-100 倍:默认不支持复杂类型转换(如 String→Date),可能会出现类型不匹配的异常:会拷贝所有匹配字段(包括敏感字段):快速原型开发、非性能敏感的内部系统。
2025-04-20 09:32:53
817
原创 Java中创建线程的几种方式
corePoolSize, // 核心线程数maxPoolSize, // 最大线程数(需合理设置)keepAliveTime, // 空闲线程存活时间TimeUnit.MILLISECONDS, //时间单位new ArrayBlockingQueue<>(queueCapacity), // 有界队列ThreadFactory threadFactory //线程工厂new CustomRejectedPolicy() // 自定义拒绝策略核心线程数(
2025-03-06 17:30:33
515
原创 线程池和消息队列实现异步化的区别
的异步通信,生产者与消费者通过中间件(如RabbitMQ)解耦,适用于分布式系统或微服务。可通过分区(如Kafka)或单队列单消费者保证顺序,但需处理消息重复消费(如幂等设计)。可以通过增加消费者等方法提升处理能力,适合高并发场景(如秒杀、日志处理)扩展性好。处理能力受限于单台服务器的资源(如CPU、内存),扩展性差。异步,适用于轻量级、短耗时的任务(如发送邮件、本地缓存更新)。任务存储在内存中的队列中,若服务器崩溃,未处理的任务会丢失。异步,适合耗时较长或跨系统的任务(如订单处理、支付回调)。
2025-03-02 16:45:45
691
原创 MySQL中的MVCC(多版本并发控制)
MVCC通过允许读操作不阻塞写操作,从而显著提高了数据库的并发性能。它通过维护数据的多个版本来实现这一点,使得读操作可以独立于写操作进行。理解这两种读方式(快照读和当前读)对于设计和优化数据库操作至关重要,特别是在处理高并发场景时。通过合理使用这些特性,可以有效地提高应用程序的性能和响应速度。
2025-02-24 18:54:19
1102
原创 MYSQL中如何查询及优化慢SQL语句
1.开启profiling功能在MySQL中,profiling功能可以帮助你分析SQL查询的性能。默认情况下,profiling1)2)执行要查看时间的sql语句,例如:select * from user;3)如何调用方法:SHOW PROFILES;查看执行时间。其中Duration为SQl执行时间,Query即为执行的SQL语句。2.使用EXPLAIN分析查询使用EXPLAIN或来查看SQL的执行计划。这可以帮助你理解查询是如何执行的,例如是否使用了正确的索引,是否进行了全表扫描等。1)id。
2025-02-22 15:13:09
1412
原创 Java CAS讲解
在 Java 中,CAS(Compare-And-Swap,比较并交换)是一种实现并发算法时常用到的技术,它是一种无锁的原子操作,是基于硬件平台的汇编指令,也就是说基于硬件实现的可用于实现高效的多线程同步。下面从原理、Java 中的实现、优缺点和示例代码等方面详细介绍 Java 中的 CAS。
2025-02-19 16:54:37
1964
原创 RabbitMQ快速入门
当系统出现流量高峰时,消息队列可以暂时存储过多的消息,以平滑处理流量的波动,避免系统被突发的高负载压垮。1)将处理失败的消息绑定死信交换机、死信队列,当消息处理失败或者因为其他情况导致消息无法成功处理的时候,可以将消息发送到死信交换机,如何发送到死信队列,由其他业务方案处理或者人工介入。队列存储消息直到被消费。虽然并不是所有消息队列都能保证消息的绝对顺序性,但是在许多情况下,消息队列可以保证消息的相对顺序性。2)可以开启定时任务,定时检查一直未处理的任务,根据情况进一步处理,保证消息能够被处理。
2025-02-09 18:35:26
2221
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人