- 博客(1780)
- 收藏
- 关注
原创 Java面试题-两个对象相等equals相等吗,equals相等对象相等吗
这是一个非常经典的Java面试题,它核心考察的是你对对象相等性判断的深入理解。简单来说,这两个说法并不总是成立,关键在于如何定义“相等”。下面这个表格清晰地展示了它们的关系:情形两个对象相等 (内存地址相同)equals方法返回true说明equals✅ 意味着equals为true❌ 对象相等此时equals等价于==,比较内存地址。equals❌ equals为true✅ 意味着 被认为是相等的此时equals比较的是对象内容(如字段值)。
2025-10-22 20:33:27
335
原创 Java-集合求差集,如果B集合中的id在A集合中存在就移除,如果不在就返回A集合
——正是集合运算中的操作。简单来说,就是求 的结果,即找出所有属于集合A但不属于集合B的元素。
2025-10-22 20:22:54
780
原创 MAC-Spring框架TaskScheduler接口延时和定时任务
在Spring框架中,接口提供了一种非常方便的方式来安排延时和定时任务。如何使用它来创建延时任务。
2025-10-11 10:12:03
39
原创 MAC-枚举反射工具类
/ 简单枚举类ACTIVE("A", "活跃用户", true),INACTIVE("I", "未激活用户", false),SUSPENDED("S", "已停用", false);// 另一个枚举类RED(1, "红色"),GREEN(2, "绿色"),BLUE(3, "蓝色");return id;
2025-09-17 13:58:31
152
原创 MAC-简化版枚举工具类
设计一个更简单的枚举工具类,不需要定义接口,而是通过函数式接口来获取枚举的code值这样枚举类不需要实现特定接口,更加灵活同时保留缓存机制提高性能。
2025-09-17 10:44:40
159
1
原创 MAC-Java枚举工具类实现
上述代码有空指针问题:: 每次调用此方法都会遍历所有枚举值。对于枚举成员数量不多的情况,这没问题。但如果成员很多且频繁调用,可以考虑使用静态Map进行缓存以提高查找效率。: 建议对输入的codeStr进行空值判断,避免潜在的。: 返回“未知”是合理的业务逻辑,但最好将其定义为一个常量,例如,以提高可维护性。可以考虑使用静态Map进行缓存以提高查找效率Map使用确保线程安全在静态初始化块中一次性构建映射关系查找操作从 O(n) 降为 O(1)
2025-09-17 10:21:37
141
原创 MAC-画图
画图工具的官网地址是:https://app.diagrams.net/,它的前身是:https://draw.io/。这两个url都能访问。
2025-08-20 11:22:31
177
原创 MAC-安装Homebrew、安装Git
1.首先尝试用中科大和清华的源发现不行中国科学技术大学(USTC)提供了 Homebrew 的镜像仓库,同步官方更新,适合国内用户。curlPATH清华大学 TUNA 协会的镜像源同样稳定,适合备用。2.若镜像站路径变更,可通过 间接访问(利用国内 CDN 加速)。(此命令直接指向 GitHub 官方仓库的install.sh,若网络允许,会自动跳转到可用的镜像节点。有点慢,换了热点,再次安装问题解决:遇到的错误是由于 PATH 导致的。
2025-06-09 00:01:15
898
原创 MAC-线程不安全的代码分析解决
🔥 关键缺陷:所有异步任务共享同一个 req 对象,在任务中直接调用 req.setCurrent() 修改请求参。通过修复请求对象共享问题并合理配置线程池,可有效提升代码的线程安全性。📍 问题代码: req.setCurrent(String.valueOf(finalI))🧨 危险场景:当多个异步线程同时修改 req 对象的页码时,会导致请求参数错乱(如线程A设置。页码2后,被线程B覆盖为页码3,但实际请求可能发送了错误的页码):为每个异步任务创建独立的请求对象副本,实现线程间数据隔离。
2025-06-05 20:23:49
103
原创 Java-多线程导出线程安全性问题
代码的主要逻辑是分页查询数据,通过异步任务并行获取后续页的数据,最后汇总并导出Excel。这段代码存在,主要集中在param和上。
2025-05-14 22:24:14
109
原创 JSON-将json保存到数据库表中,字段应该用什么类型
先确定使用的具体数据库是什么,因为不同的数据库对JSON的支持可能不一样。比如,MySQL从5.7开始支持JSON类型,PostgreSQL也有JSON和JSONB类型,而像MongoDB这样的NoSQL数据库则是以JSON格式存储文档的。在数据库中存储JSON数据时,字段类型的选择取决于具体数据库的支持和业务需求。
2025-04-23 11:01:19
437
原创 Java8-遍历list取出两个字段重新组成list集合
在Java 8中,可以使用Stream API遍历List并提取两个字段重新组合成新的List。以下是几种常见方法: 使用Stream转换:方法2:使用Map.Entry直接利用存储键值对:方法3:使用数组将字段存入数组:方法4:使用Pair/Tuple(需自定义或第三方库)自定义二元组类:示例说明假设有一个类:提取和到新List:输出:选择合适的方法取决于是否需要保留字段类型信息或是否有现成的类可用。推荐使用自定义类或以确保类
2025-04-20 17:23:37
545
原创 MAC-QueryWrapper中用的exists,是不是用join效果更好
在使用MyBatis-Plus的QueryWrapper中的exists方法时,是否改为使用join效果会更好,以及如何修改。这涉及到SQL优化和MyBatis-Plus的用法。首先,需要理解exists和join在SQL中的区别。exists用于检查子查询是否返回结果,而join则是将两个表连接起来,根据某些条件合并行。通常来说,exists在子查询关联外部表时,可能会逐行检查,而join则可能更高效,尤其是在有合适索引的情况下。
2025-04-20 15:56:06
367
原创 MAC-exists,表字段要不要建索引
在使用EXISTS子查询时,合理建立索引可以显著提升性能,尤其是当两个表的关联字段需要频繁匹配时。以下是针对 。
2025-04-20 15:04:58
81
原创 MAC-如果是分页查询,怎么分批次in;基于多线程的分页查询工具类
如果是分页查询,in怎么分批在处理分页查询时,如果 子句中的参数数量过大(例如超过数据库限制,如 MySQL 的 或性能瓶颈),可以通过 分批查询 和 结果合并 的方式解决。以下是具体实现步骤:将原始 拆分为多个子列表(每批最多 个):步骤 2:分批查询数据库对每个子列表执行查询,合并所有结果:步骤 3:排序和去重(可选)如果要求结果唯一或有序,可以额外处理:步骤 4:计算分页数据根据 和 截取当前页数据:步骤 5:
2025-04-18 16:34:10
527
原创 SQL-exists和in核心区别、 性能对比、适用场景
EXISTS和IN的基本区别。IN用于检查某个值是否在子查询返回的结果集中,而EXISTS用于检查子查询是否至少返回了一行数据。通常来说,EXISTS在子查询结果集较大时表现更好,因为一旦找到匹配项就会停止搜索,而IN则需要遍历整个结果集。在 SQL 中,EXISTS和IN都可以用于子查询,但它们的性能、适用场景和底层逻辑有显著差异。
2025-04-18 11:01:46
473
原创 MyBatisPlus-QueryWrapper的exists方法拼接SQL中的EXISTS子句
在 MyBatis-Plus 中,的exists方法用于拼接 SQL 中的EXISTS子句,通常用于构建子查询条件。
2025-04-17 10:29:11
1078
原创 MAC-基于 Spring 框架的高并发批量任务处理方案
通过以上方案,可在 Spring 框架下高效处理高并发批量任务,兼顾性能与稳定性。、线程池管理、事务控制)实现高并发批量任务处理,涵盖 。 上均有显著提升,可支撑每秒万级订单处理。以下结合 Spring 的特性(如。防止集群环境下重复处理相同数据。,避免不同业务间资源争抢。代码,结合高并发场景的 。
2025-04-16 14:47:53
326
原创 MAC-批量任务并行处理实现
通过这个示例,可以快速实现高并发批量任务处理,后续可根据具体业务需求调整线程池参数、分。 等核心功能,适用于数据清洗、文件处理、批量通知等场景。 的批量任务并行处理示例,包含 。
2025-04-16 10:59:38
239
原创 Java-分布式锁tryLock(0, TimeUnit.SECONDS)中0的含义
在高并发场景下,大量线程同时竞争同一把锁,零等待策略会导致大部分线程直接失败。 的高并发场景(如订单处理、异步任务调度),平衡锁竞争与系统吞吐量。 的瞬时高并发场景(如秒杀、抢购),快速失败避免线程堆积。参数,可以在锁竞争和系统性能之间找到最佳平衡点。,避免锁超时自动释放导致数据不一致。
2025-04-14 23:29:08
228
原创 Java-多级排序结合thenComparing()
List<User>,user有个字段有值的时候设置1,没值就是null,怎么排序根据这个字段排序?若要对List<User>按照某个字段(如flag,有值时为1,无值时为null)排序,可以使用 Comparator 结合null值处理逻辑。
2025-04-09 20:48:00
158
原创 MAC-兼容同步和异步方法的分布式锁方案,通过 AOP + Redisson 实现,统一管理锁的生命周期,并支持自动重试机制。锁的释放与方法执行完成(同步/异步)
代码简洁:通过注解和AOP统一管理锁逻辑,业务代码零侵入。高可靠性:严格保障锁的释放,避免死锁。灵活扩展:支持同步/异步、重试策略、事务集成、熔断降级。
2025-03-20 09:21:02
112
原创 MAC-在使用@Async注解的方法时,分布式锁管理和释放
在使用 注解的异步方法中管理分布式锁时,需要特别注意 锁的获取、释放与异步执行的生命周期匹配。以下是结合 Spring Boot 和 Redis 分布式锁的实践方案:异步方法可能被多个线程/服务实例并发执行,若访问共享资源(如数据库、缓存),需通过分布式锁避免竞态条件。例如:2. 分布式锁实现方案推荐使用 Redis + RedLock 算法(Spring Data Redis 已内置支持)。2.2 配置 RedisTemplate3. 实现分布式锁工具类基于 Spring
2025-03-19 21:08:13
269
原创 MAC-禁止百度网盘自动升级更新
找到文件 “autoDiagnoseUpdate.exe”, 把这个文件 “删除” 或者 “重命名为任意名称”。在电脑桌面百度网盘快捷方式上点 “右键”,点 “打开文件所在的位置”。”, 把这个文件夹 “删除” 或者 “重命名为任意名称”。”, 把这个文件 “删除” 或者 “重命名为任意名称”。1、找到百度网盘安装目录。2、找到自动升级组件。
2025-03-09 06:14:39
1059
原创 Win10-休眠按钮恢复
会直接启用休眠功能,无需修改注册表或系统文件。系统自动更新后,发现休眠按钮不见了。感觉可以啊,电源里面休眠都出来了。但是重启后休眠就看不见了。
2025-03-06 10:52:46
418
原创 Java-Define and throw a dedicated exception instead of using a generic one
这样,当 value 参数为负数时,会抛出自定义异常,并。定义了一个名为 CustomException 的自定义异常类,并在 ExampleService 类的。为了提高代码的可读性和可维护性,使用自定义异常比使用通用异常更为合适。抛出自定义异常: 在需要抛出异常的地方,使用 throw 关键字抛出自定义异常实例。通过这种方式,可以为不同的错误情况创建不同的异常类,从而使代码更加清晰和易于调试。助你更精确地描述错误情况,并且可以在捕获异常时执行特定的处理逻辑。
2025-02-28 10:38:22
419
原创 Java-日期计算(计算上个月对应的时间段,计算去年对应的时间段)
段,即2024年2月19日到2024年2月30日。根据给定的开始时间2024年2月19日和结束时间2024年2月29日(注意2024年是闰年,2月有29。天),你需要计算去年对应的时间段,即2023年2月19日到2023年2月29日。根据给定的开始时间2024年3月19日和结束时间2024年3月30日,我们需要计算上个月对应的时间。如果计算出的结束时间是2月30日,则检查是否为闰年。如果计算出的结束时间是2月29日,则检查是否为闰年。年,2月只有28天,因此结束时间应调整为2023年2月28日。
2025-02-06 14:09:57
171
原创 Java-@RefreshScope修改Nacos配置后不重启应用就能生效
RefreshScope 是 Spring Cloud 中提供的一个注解,主要用于微服务架构中配置的动态刷新。作用:当Nacos中的配置信息发生变化时,使用了@RefreshScope注解的Bean会被重新加载,从。通过使用 @RefreshScope 注解,可以轻松实现配置的动态刷新,使得微服务在运行时能够动态适。这样,在Nacos配置中心修改了useLocalCache对应的配置值后,无需重启应用,下一次请。配合使用:一般与@NacosValue或@Value等读取配置的注解一起使用。
2025-01-17 09:21:07
428
原创 Java-编写的一个生产者-消费者模式
适用于生产者和消费者之间。以下是使用Java编写的一个简单的生产者-消费者模式的示例,这里采用阻塞队列来实现线程间的。除了前面提到的几种方法,Java中还有一些其他实现生产者-消费者模式的方式。CyclicBarrier:适用于生产者和消费者需要同步执行某些操作的场景。Semaphore:适用于需要控制资源访问数量的场景,代码简洁。这种方式提供了更灵活的锁机制和条件变量,适合更复杂的并发场景。这是最经典的实现方式,通过对象的内置锁机制来控制生产和消费。适用于生产者和消费者需要同步执行某些操作的场景。
2025-01-08 22:14:30
201
空空如也
2023年最流行的Java技术是什么?
2023-02-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅