- 博客(38)
- 收藏
- 关注
原创 工厂方法模式 vs 抽象工厂模式 —— 我的学习思考(抽象工厂模式一定更好?NO!有时候用简单工厂就可以了!)
探讨了工厂方法模式与抽象工厂模式的差异。通过分析菜鸟教程的示例代码,作者发现简单工厂模式可以替代抽象工厂模式实现相同功能,且客户端代码更简洁。虽然抽象工厂模式在语义封装和统一入口方面有优势,但在小型项目中,通过平行创建多个工厂的工厂方法模式可能更为直观实用。最终结论是:两种模式在功能上等价,选择取决于项目规模和开发需求,小型项目推荐工厂方法模式,大型项目可考虑抽象工厂模式。
2025-12-06 22:19:27
375
原创 最大子数组和:从暴力到 Kadane,再到分治思想(附自制动画)
探讨了求解最大子数组和问题的多种方法。从O(n³)的暴力解法到O(n²)的优化枚举,重点分析了Kadane算法(O(n))的动态规划思想,解释了其"负数即抛弃"的核心逻辑。同时介绍了分治法(O(nlogn))的递归思路,通过二分查找和合并结果来解决问题。虽然Kadane算法在实际应用中更高效,但理解分治法有助于深化对问题的认识。两种方法各具特色,体现了算法优化从暴力到精妙的思想演进过程。
2025-12-05 15:56:37
678
原创 MySQL面试题(附带具体业务场景,共23题)
MySQL性能优化实战总结 总结了MySQL性能优化的核心方法: 慢查询定位:通过监控工具或慢查询日志识别性能瓶颈 执行计划分析:使用EXPLAIN查看索引使用情况、扫描方式和额外操作 索引优化: 理解B+树索引结构特点 区分聚簇索引(主键)和非聚簇索引(普通索引) 避免回表查询(使用覆盖索引) 分页优化:超大分页时先查ID再获取数据 业务场景应用:针对高并发场景如商城订单、库存查询等进行针对性优化 通过结合实际业务案例(如订单查询、库存校验等),展示了这些优化方法在实际项目中的应用效果。
2025-11-09 13:09:35
1041
原创 多线程面试题
主要介绍了多线程常见问题,重点包括:线程与进程的区别(线程共享内存,进程独立内存);并发与并行的概念(并发是交替执行,并行是同时执行);创建线程的四种方式(继承Thread类、实现Runnable/Callable接口、线程池);Runnable与Callable的区别(返回值与异常处理);run()与start()的区别(start()启动新线程);线程的六种状态及其转换;保证线程顺序执行的方法(join());以及notify()与notifyAll()的区别(唤醒单个或全部线程)
2025-11-07 15:00:50
917
原创 微服务面试题(14题)
总结了微服务架构中的重要面试知识点,主要包括: SpringCloud核心组件:如Eureka/Nacos服务注册、Ribbon负载均衡、OpenFeign远程调用、Hystrix/Sentinel熔断限流等; 服务发现机制:详细说明服务注册、心跳续约、动态更新的完整流程; 主流注册中心对比:从健康检测、一致性模型等维度分析Eureka与Nacos的差异; Nacos分级存储:阐释五层结构(namespace→group→service→cluster→instance)的设计价值; 容错方案:解析服务
2025-11-03 22:00:57
738
原创 redis面试题(共包含24道常见面试题)
Redis主从集群通过读写分离提升并发能力,由master处理写操作并同步数据至slave节点,slave负责读操作。主从同步过程包括全量同步(首次连接时发送RDB文件)和增量同步(通过repl_baklog环形缓冲区实现)。哨兵模式则提供高可用保障,监控集群状态、执行故障转移(选举新master)及状态通知。哨兵基于心跳机制判断节点状态,采用客观下线机制防止误判,并通过投票选举leader来执行failover操作。优化建议包括无磁盘复制、控制单节点内存、增大re
2025-11-01 01:30:04
780
原创 第一行代码第三版第5章有关Fragment 生命周期中onActivityCreated() 被废弃的问题
Android 9.0起废弃onActivityCreated()方法,因其与onViewCreated()和onCreate()功能重叠。替代方案:UI初始化移至onViewCreated(),非UI逻辑放入onCreate()。示例展示了在onViewCreated()中绑定视图事件,在onCreate()中初始化ViewModel等组件。这种调整符合现代Android开发中ViewModel+LiveData+ViewBinding的最佳实践。
2025-10-18 21:46:29
232
原创 第一行代码第三版第5章有关动态添加Fragment部分点击按钮无法正常切换右侧视图的问题
分析了Fragment中按钮点击事件处理的常见问题。当在Activity中直接为Fragment的按钮设置监听时,由于绑定的视图对象与实际显示的Fragment视图不一致,会导致点击事件失效。正确的解决方案是在Fragment内部定义点击回调接口,由Activity实现该接口并处理具体逻辑。文中提供了Kotlin代码示例,展示如何通过接口回调实现Fragment与Activity间的通信,确保按钮点击能正确触发界面切换,同时遵循单一职责原则。这种设计模式使视图管理与业务逻辑分离,提高了代码的可
2025-10-18 21:20:09
154
原创 第一行代码第三版第4章有关when一定要通过封装类才可以不加else的问题
摘要 Kotlin中when表达式的else分支要求取决于使用场景:在执行逻辑(如onBindViewHolder())时可以不写else;但在需要返回值时必须包含else分支以确保覆盖所有情况。这种差异体现了Kotlin对表达式和语句的严格区分,既能保证类型安全又保持了代码灵活性。
2025-10-18 18:47:35
121
原创 第一行代码第三版第4章有关新安卓系统页面与状态栏和摄像头重叠的问题
本文记录了解决Android消息栏布局问题的过程。作者在实现第四章实战消息栏时发现实际效果与原书不同,尝试删除enableEdgeToEdge()和更换主题均无效,最终通过阿里通义千问找到解决方案:在activity_main.xml根布局添加android:fitsSystemWindows="true"属性。该属性可调整系统窗口与布局的适配关系,成功解决了布局显示异常问题,使界面效果达到预期。完整代码示例和最终效果图均已提供。
2025-10-18 18:24:21
176
原创 第一行代码第三版第3章有关onBackPressed() 已弃用的问题
Android 13弃用了onBackPressed()方法,建议改用OnBackPressedDispatcher处理返回操作。示例代码展示了如何在SecondActivity中使用OnBackPressedDispatcher替代onBackPressed(),在返回时设置返回数据并结束Activity。这一变更主要针对手势导航的优化,开发者需要及时适配新API。
2025-10-18 12:05:26
201
原创 第一行代码第三版第3章有关返回数据给上一个Activity页面相关方法已过时的问题
Android开发中Activity间数据传递的新旧方案对比: 旧方案使用startActivityForResult()和onActivityResult()方法,已在Android 11后被废弃 新方案采用Activity Result API,通过registerForActivityResult注册回调 新API优势:使用更简单安全,自动绑定生命周期,代码更清晰 实现步骤: 注册ActivityResult回调 使用launch方法启动目标Activity 在目标Activity中设置返回结果 示例
2025-10-18 11:53:48
245
原创 第一行代码第三版第3章有关Kotlin Android Extensions插件已弃用的问题
Kotlin Android Extensions插件已被官方废弃,推荐使用View Binding作为替代方案。View Binding更轻量、安全且易于使用,需要在build.gradle中启用。使用时需声明binding变量并初始化,通过binding对象访问视图组件。示例代码展示了如何将旧代码迁移到View Binding,包括视图绑定和点击事件处理。
2025-10-18 10:33:51
131
原创 分布式锁优化:使用Lua脚本保证释放锁的原子性问题
Lua是一门轻量级脚本语言,Redis支持在服务端执行Lua脚本,一旦脚本开始执行,就不会被任何其他命令打断,具有绝对的原子性。这就像我们把所有关键操作包成一个“事务”扔给Redis执行,Redis承诺要么一次性全完成,要么一个都不做,其他客户端在这期间不能插队。
2025-06-02 20:36:55
1140
原创 Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解
对比了Spring Boot中两种常见的登录认证方式:Session和JWT。Session通过在服务器端存储用户信息,依赖Cookie进行身份验证,适合传统Web应用,安全性高但跨域支持较差。JWT则通过客户端存储加密的Token,无状态且跨域友好,适合前后端分离和微服务架构。详细介绍了两种方式的原理、代码实现及优缺点。
2025-05-21 23:25:14
2231
4
原创 Docker项目部署深度解析:从基础命令到复杂项目部署
深度解析了Docker在项目部署中的应用,从传统部署的困境到Docker的解决方案,介绍了Docker的核心架构、基础操作、数据持久化、自定义镜像构建、容器网络管理以及Docker Compose的使用。
2025-05-19 23:54:34
1139
原创 计算机网络体系结构深度解析:从理论到实践的全面梳理
本系列博客源自作者在大二期末复习计算机网络时所记录笔记,看的视频资料是B站湖科大教书匠的计算机网络微课堂,祝愿大家期末都能考一个好成绩!计算机网络体系结构是计算机网络课程的重点与难点,其核心在于通过分层模型实现网络通信的标准化与模块化。以下是三种主流体系结构的详细解析
2025-05-17 21:14:42
1222
原创 初识计算机网络。计算机网络基本概念,分类,性能指标
本系列博客源自作者在大二期末复习计算机网络时所记录笔记,看的视频资料是B站湖科大教书匠的计算机网络微课堂,祝愿大家期末都能考一个好成绩!计算机网络最简洁的定义,是一些互相连接且自治的计算机集合。从更全面的角度看,其定义涉及交换技术、使用者等多个方面。
2025-05-16 22:32:18
1125
原创 苍穹外卖项目中的 WebSocket 实战:实现来单与催单提醒功能
在现代 Web 应用中,实时通信成为提升用户体验的关键技术之一。WebSocket 作为一种在单个 TCP 连接上进行全双工通信的协议,被广泛应用于需要实时数据交换的场景,如在线聊天、实时通知等。本文将结合苍穹外卖项目,介绍如何使用 WebSocket 实现来单提醒与催单提醒功能。
2025-05-15 21:13:02
1250
原创 大二如何为实习和就业做准备?——一份计算机学生的春招秋招与考研就业抉择全指南
最近在和 ChatGPT 规划学习路线、实习准备、未来发展路径的过程中,我获得了非常多清晰且实用的建议。我意识到这些内容不仅对我帮助很大,也可能对同样处于“升大三”关键阶段的计算机同学有所启发。
2025-05-14 22:51:22
1584
原创 git进行版本控制时遇到Push cannot contain secrets的解决方法
在项目开发中,使用Git进行版本控制时,可能会遇到“Push cannot contain secrets”的错误提示,尤其是在将代码推送到GitHub时。这通常是因为代码中包含了敏感信息(如API密钥、密码等),而GitHub有严格的保护机制防止这些信息被推送。解决方法包括:1. 使用git filter-repo工具从Git历史记录中删除敏感信息;2. 修改.gitignore文件以防止敏感文件被提交。通过这些方法,可以有效解决推送问题,确保代码安全。
2025-05-13 13:07:43
1172
原创 L2-020 功夫传人(DFS+BFS)-Java
输入在第一行给出3个正整数,分别是:N(≤105)——整个师门的总人数(于是每个人从0到N−1编号,祖师爷的编号为0);一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱……直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。其中Ki是徒弟的个数,后面跟的是各位徒弟的编号,数字间以空格间隔。Ki为零表示这是一位得道者,这时后面跟的一个数字表示其武功被放大的倍数。
2025-02-06 15:12:17
391
原创 L2-019 悄悄关注-Java
新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。)是被其关注的用户的ID,是长度为4位的由数字和英文字母组成的字符串,各项间以空格分隔。
2025-02-06 15:08:00
220
原创 L2-017 人以群分-Java
社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。
2025-02-05 17:28:11
570
原创 L2-016 愿天下有情人都是失散多年的兄妹-Java
大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。
2025-02-05 16:48:43
563
原创 HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法
解决方法其实很简单:本地模拟器下载路径下面不能有中文。翻遍了优快云,试了所有办法都没办法,最后偶然间竟然解决了。切换正确路径以后,成功运行,哦呼!
2025-01-25 21:56:15
1346
2
原创 24-08-08 JavaSE Map集合
Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value(双列元素)Map 中的 key 和 value 可以是任何引用类型的数据,会封装到HashMap$Node 对象中Map 中的 value 可以重复Map 的key 可以为 null, value 也可以为null ,注意 key 为null,只能有一个,value 为null ,可以多个常用String类作为Map的 key。
2024-08-13 11:18:54
842
原创 24-08-07 HashSet与LinkedHashSet的底层机制与源码说明
hashset的底层实际上是hashmap,hashmap的底层是数组加链表加红黑树。
2024-08-08 00:33:08
547
原创 24-08-04 JavaSE java集合详解
传统的数组每次都要提前设置好容量,而且从某些方面来讲只能存储同一类型的元素,如果存储大小不够的话只能重新开辟一个新数组然后把元素移动到新数组中,非常麻烦*,java集合类分为两大类,一个是单列集合Collection,一个是双列集合Map
2024-08-05 14:59:37
2436
原创 24-08-01 JavaSE Math类 Arrays类 System类 日期类
本文是对Math类,Arrays类,System类已经三代日期类的方法介绍
2024-08-03 16:44:06
657
原创 24-7-31String类,StringBuffer类,StringBuilder类的详解与比较
String对象用于保存字符串,也就是一组字符序列。String字符串的字符使用Unicode的字符编码,一个字符无论是中文还是汉字都占两个字节。String有许多重载的构造器,因此可以接收多种数据类型并创建对象。
2024-07-31 22:59:23
2665
原创 24-07-30 java八大包装类
什么是包装类?就我粗鄙地理解来说,包装类就是把我们熟知的八大基本数据类型封装起来,加上一些**方法封装成类,从而更好地开发。
2024-07-30 23:19:31
930
原创 我的笔记管理体系(Typora+PicGo+坚果云+阿里云oss)
现在是2024年7月28号,我快要上大二了,在上大学之前,我和几乎所有的高中生一样,有着各种各样的笔记本,三年下来也积累了不少的笔记。然而在上了大学以后,就很少就笔记了,原因大家都懂的哈哈,大一一次偶然的机会,我接触到了markdown语法,我才第一次认识到原来程序员都是那样记笔记的,我去,太tm帅啦,于是乎我便开始学习markdown语法,也开始了学习写博客,在学习过程中遇到了各种问题,经过不断的搜集资料,我终于大体上完成了我的笔记管理体系了,今天写这篇博客的目的是为了和大家分享这一体系。
2024-07-28 19:12:46
1353
原创 24-07-27 理解Java异常处理机制
在我们编写程序的过程中,我们时常会遇到各式各样的错误,这些错误有些是在编译时编译器就提示我们的,如常量未定义,赋值错误等,这些我们可以叫它们编译时异常,而有些错误是从语法上来看是没有任何问题的,编译器不会给我们提示错误信息,只有在class文件在jvm上运行时会出错,这类异常我们统称为运行时异常。除了异常外,还有一种更加验证的错误,那就是error,这种错误往往是程序的致命性错误,可能会造成整个程序的崩溃,非常严重。
2024-07-27 12:40:15
2289
原创 24-07-24 java枚举与注解详解
枚举类是一种特殊的类,它是一组常量的集合,为什么这么说呢,因为枚举类包含的是一组有限的对象,简单来说就是直接在类中定义对象,而不通过构造函数,所以我们需要把构造函数给私有化,而为了防止对象的属性被篡改,保证对象的只读属性,我们需要同样需要删除或者私有化set方法,最后,为了底层实现更加快捷高效,我们在对象前面加上static final,我们要让对象作为枚举类的接口,因此需要把对象公开,前面需要加上public。 还有需要注意的是,因为这个对象是只读的,所以它是一个常量,根据命名规范,名称全部大写。
2024-07-25 22:17:21
770
原创 24-07-22 java内部类详解
简单来说,一个类的内部嵌套了另一个类结构,被嵌套的结构被称为内部类,嵌套其他类的类我们称为外部类。在开始学习之前,我们先来回想一下一下类的五大成员,分别是属性方法构造器代码块内部类,而接下来我们就将开始学习它的第五大成员——内部类。
2024-07-24 12:48:28
960
基于Springboot+Vue的校园二手交易平台
2025-02-06
基于C++控制台的航空客运订票系统
2024-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅