实战源码
文章平均质量分 93
网罗开发
华为HDE,大学讲师,开源创新毕业设计导师,Swift社区主理人,COC上海社区主理人,优快云博客专家。
《SwiftUI 入门,进阶与实战》 作者
《ESP32-C3 物联网工程开发实战》作者
全网 22万+ 粉丝, 欢迎您的关注与支持。交流合作:fzhanfei
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 454 - 四数相加 II
LeetCode 454 是一道非常典型的 “用空间换时间” 的题。如果你第一次看这道题,很容易写出一个四重循环,然后立刻发现:完了,直接超时。但这题真正考的不是暴力,而是你能不能意识到一件事:原创 2025-12-22 21:34:53 · 707 阅读 · 0 评论 -
React Navigation 生命周期完整心智模型
在 React Navigation 里,生命周期问题几乎是所有复杂 Bug 的源头。很多看起来“很诡异”的现象,本质上都能归结为一句话: 你以为页面已经销毁了,但它其实还活着 你以为 useEffect 会重新跑,但它其实根本没机会这篇文章不打算从 API 一个个列,而是从心智模型出发,帮你真正建立三件事的统一认知:原创 2025-12-21 22:43:07 · 571 阅读 · 0 评论 -
LeetCode 453 - 最小操作次数使数组元素相等
这道题乍一看有点反直觉。题目说的是:每次操作让 n - 1 个元素加 1很多人第一反应是:模拟?暴力?反复加到一样?原创 2025-12-21 22:41:13 · 997 阅读 · 0 评论 -
Vue Router 越写越乱,如何架构设计?
如果你接手过中大型 Vue 项目,大概率都会遇到这样一个阶段:原创 2025-12-20 23:45:36 · 1207 阅读 · 0 评论 -
LeetCode 452 - 用最少数量的箭引爆气球
这道题是一个非常经典、也非常容易被「想复杂」的题。表面上看:有一堆区间要用最少的点去覆盖所有区间本质上:原创 2025-12-20 23:41:55 · 659 阅读 · 0 评论 -
RN 项目中“页面存在 ≠ 页面可见”会导致哪些隐藏 Bug?
在 React Native 项目里,很多开发者都会默认认为:只要页面不在当前屏幕上,就等同于“不存在”。但现实往往刚好相反——页面可能已经不可见了,但它还活得好好的。原创 2025-12-18 23:18:30 · 1398 阅读 · 0 评论 -
Vue 长列表卡顿、滚动掉帧怎么办?一次性讲清楚
在 Vue 项目里,只要一遇到长列表,很多同学第一反应都是:原创 2025-12-17 20:07:23 · 1305 阅读 · 0 评论 -
Vue 页面频繁重渲染,性能为什么这么差?
如果说长列表卡是“肉眼可见的慢”,那重渲染问题就是那种:原创 2025-12-17 19:47:19 · 641 阅读 · 0 评论 -
用 Task Local Values 构建 Swift 里的依赖容器:一种更轻量的依赖注入思路
摘要: 本文介绍了Swift并发编程中的Task Local Values技术及其应用场景。Task Local Values是一种随Task传播的共享状态,解决了并发环境下上下文信息传递的难题。文章通过请求上下文传递的示例,展示了如何使用@TaskLocal属性包装器定义任务级共享值,并详细讲解了withValue方法的作用范围和注意事项。进一步探讨了该技术在日志追踪、A/B测试等真实场景的应用价值,并创新性地提出基于Task Local构建依赖容器的方案,为Swift项目提供了一种隐式依赖注入的新思路。原创 2025-12-16 21:27:16 · 828 阅读 · 0 评论 -
数据库连接池监控最佳实践:用 Prometheus + Grafana 打造可视化监控体系
很多后端开发者都遇到过数据库连接池突然耗尽导致系统卡死的情况。尤其是高峰时段,连接池的 active 数量不断攀升,超过 threshold 就开始报错,甚至连正常请求都被阻塞。原创 2025-12-12 23:05:03 · 977 阅读 · 0 评论 -
数据库连接池泄漏:为什么连接越用越少?怎么彻底排查与修复?
在后端项目里,数据库连接池泄漏几乎是所有人都踩过的坑。一旦发生泄漏,症状非常典型:系统运行一段时间后请求突然变慢数据库连接数飙升到 max active错误日志出现 “Too many connections”必须重启服务才能恢复最让人头疼的是:问题通常不是数据库本身,而是 代码里有连接没被关闭 —— 结果池子永远等不到归还,连接越用越少。原创 2025-12-11 18:09:53 · 1321 阅读 · 0 评论 -
ESP32-S3 内置 RGB 灯详解与控制实战
在使用 ESP32-S3(尤其是官方 DevKitC 系列)开发时,很多同学第一次运行板载 RGB 灯代码时都会遇到一个经典迷惑点:原创 2025-12-04 22:15:18 · 1109 阅读 · 0 评论 -
如何彻底搞定 Maven 依赖冲突:从排查到修复的全流程指南
依赖冲突是写 Java 项目时最常见、也最烦的坑之一。特别是在大型项目、Spring Boot、多模块工程里,一旦依赖多了,冲突基本是逃不掉的。原创 2025-12-01 22:16:13 · 1141 阅读 · 0 评论 -
CSS 通过 ID 隐藏元素的几种方法:从原理到可运行 Demo 的完整解析
在日常开发里,“隐藏元素”看似是个很简单的动作,但实际上 CSS 提供了不少方式来实现,而且每种方式的行为差异也非常大。比如,有的方法会让元素不占空间,有的方法会让元素虽然不可见但还能点,还有的方法看似隐藏,但其实是把它“移走了”。原创 2025-11-26 21:28:02 · 1141 阅读 · 0 评论 -
LeetCode 434 - 字符串中的单词数
这篇文章聊的是一个看似简单但在实际开发里常常踩坑的小问题 —— 如何正确统计一个字符串里到底有多少个“单词”。这个题目来自 LeetCode 434,虽然难度不高,但非常贴近日常业务场景,比如处理用户输入、解析日志、分词前的预处理等等。原创 2025-11-26 20:17:55 · 470 阅读 · 0 评论 -
SwiftUI 颜色混合(Color Mixing)全解析:从基础到实战案例
SwiftUI 在最新版本中加入了一个非常有意思的能力 —— 颜色混合(Color Mixing)。只需要一个 mix 函数,我们就能做出很多之前不太容易实现的动态视觉效果,比如状态颜色渐变、主题动态过渡、健康监测 UI 可视化等。下面我们从最基础的使用方式开始,再聊聊怎么把它用到实际 App 中。原创 2025-11-24 20:55:10 · 1130 阅读 · 0 评论 -
LeetCode 424 - 替换后的最长重复字符
这道题《LeetCode 424. 替换后的最长重复字符》属于典型的滑动窗口题目,同时也考验我们对字符串区间内特征值的理解。题目要求在最多替换 k 次字符的前提下,找到最长的一段“重复字符子串”。虽然描述看起来有点拗口,但它本质上是在问:在一个窗口中,如果我们把最多 k 个字符替换成某一个字符,窗口能达到的最大长度是多少?这个问题在日志分析、字符串纠错、甚至简单压缩算法中都有类似逻辑,实际应用还挺广的。原创 2025-11-14 21:17:55 · 1127 阅读 · 0 评论 -
SwiftUI 中的玻璃化标签页(Glassifying Tabs):深入体验 Liquid Glass 设计与新 Tab API
在今年的 WWDC25 中,Apple 推出了一个贯穿 iOS、iPadOS、macOS 等平台的新视觉体系 —— Liquid Glass(液态玻璃)。这个设计理念强调“通透感”“层次感”和“动态反馈”,让整个系统界面显得更加流畅、柔和、有生命力。而在这一套设计语言中,Tabs(标签页) 扮演了非常核心的角色。苹果不只是改了外观,还为 SwiftUI 带来了新的 Tab API,让开发者能用更简洁、更结构化的方式管理标签交互。下面我们就通过几个 Demo,来看看在 SwiftUI 中如何使用这原创 2025-11-13 22:14:22 · 1276 阅读 · 0 评论 -
SwiftUI 新特性:Animatable 宏的使用与原理解析
在 SwiftUI 中,实现平滑、自然的动画一直是它的强项。不过在 WWDC 最新的更新里,Apple 又把动画的实现难度进一步降低——引入了一个全新的宏:@Animatable。这篇文章我们就来聊聊它的使用方式、背后的逻辑,以及在开发中可以带来哪些实实在在的便利。原创 2025-11-12 22:30:12 · 791 阅读 · 0 评论 -
LeetCode 422 - 有效的单词方块
这道题《LeetCode 422. 有效的单词方块(Valid Word Square)》看起来挺像是脑筋急转弯题。它考验的是我们对二维字符结构的理解。简单说就是:给你一组单词,把它们竖着横着排好后,判断是不是上下读、左右读都一样。这类题其实挺有趣的,也挺常见于字符串矩阵处理的业务场景中,比如:文本对称性检查、纵横字谜验证、或类似的游戏逻辑系统。原创 2025-11-12 22:15:34 · 1007 阅读 · 0 评论 -
如何监测 Vue + GeoScene 项目中浏览器内存变化并优化性能
在做 Vue 项目集成 GeoScene 地图(或其他 WebGIS 框架,比如 Mapbox、Cesium、ArcGIS JS)的时候,很多人都会遇到一个头疼问题:页面切几次、地图重建几次,浏览器就卡、内存就飙、甚至直接崩溃。我也遇到过这个问题。虽然在生命周期里写了 map.destroy(),看起来销毁成功,但任务管理器的内存占用一直没降。后来一查才发现,只是销毁了表象,很多底层的 WebGL 资源和事件监听器并没有释放。这篇文章我会带你从内存监控、代码分析到具体优化一步步排查,最终让地图模块原创 2025-11-11 23:36:56 · 1401 阅读 · 0 评论 -
Python 3.6.1 报错 “module ‘enum‘ has no attribute ‘IntFlag‘” 的真正原因与解决办法
有一天你刚刚装好 Python 3.6.1,信心满满地敲下命令:原创 2025-11-10 21:56:44 · 1063 阅读 · 0 评论 -
LeetCode 420 - 强密码检验器
这道题是 LeetCode 第 420 题:强密码检验器(Strong Password Checker)。乍一看挺简单:“判断一个密码是否够强”,但实际上这题的规则相当复杂。要同时考虑 长度、字符种类、重复字符、替换、插入和删除操作。这题在算法上属于一个典型的 字符串修复 + 贪心策略 + 分类讨论 问题,难度在 LeetCode 上是 Hard。本篇我们会用 Swift 来实现一个清晰、可运行的版本,并讲透整个逻辑。原创 2025-11-10 21:49:46 · 1190 阅读 · 0 评论 -
LeetCode 419 - 棋盘上的战舰
这题是一个看起来挺“轻松”的矩阵题——LeetCode 419《棋盘上的战舰(Battleships in a Board)》。你会拿到一个二维矩阵,矩阵里的 'X' 表示有战舰,. 表示空位。要求你计算棋盘上到底有几艘战舰。听起来像数格子,但其实隐藏着边界判断和空间优化的技巧。这题挺有意思,因为它表面是个模拟题,但实际上是个典型的一次遍历 + 空间优化的题。下面我们来一点点拆解这道题。原创 2025-11-08 17:15:03 · 758 阅读 · 0 评论 -
LeetCode 418 - 屏幕可显示句子的数量
今天我们来聊一道挺有意思的题目 —— LeetCode 418《屏幕可显示句子的数量(Sentence Screen Fitting)》。这道题乍一看像是字符串模拟题,但如果你一股脑儿暴力模拟,性能会很糟糕。想要高效求解,就得找到循环规律,而不是一格格地去填屏幕。下面我会用 Swift 实现完整的解法,并结合一个实际场景来说明这类问题在“文本排版引擎”或“信息显示屏系统”中的应用。原创 2025-11-07 22:25:01 · 413 阅读 · 0 评论 -
一次性搞懂 ConcurrentModificationException:为什么遍历集合会抛异常?
在项目中,我们经常需要对列表进行“边遍历边删除”的操作,比如清理不符合条件的数据:原创 2025-11-06 22:59:36 · 1045 阅读 · 0 评论 -
LeetCode 417 - 太平洋大西洋水流问题
这道题看起来像地理模拟,但其实是个非常典型的「图搜索 + 反向思考」问题。我们要找出能同时流向太平洋(左上边界)和大西洋(右下边界)的所有坐标点。题目乍看复杂,其实核心思路只有一句话:从海洋反向出发,找出能到达的点。原创 2025-11-06 22:40:07 · 670 阅读 · 0 评论 -
iOS 基于 Foundation Model 构建媒体流
在前面我们已经了解过 Foundation Model 的基本用法,比如使用 Generable 注解结构化输出。通常,我们会写出类似这样的代码:原创 2025-11-05 23:51:37 · 1070 阅读 · 0 评论 -
LeetCode 416 - 分割等和子集
这道题看似是一个“集合分割”的问题,但核心本质其实是一个典型的 0/1 背包问题。给定一个整数数组,我们需要判断能否将它分成两个子集,使两个子集的和相等。换句话说,就是看看数组中能否选出一部分数字,使它们的和等于整个数组和的一半。在这篇文章里,我们不仅会用 Swift 实现完整的解法,还会从动态规划的角度详细拆解思路,并给出可运行的 Demo 示例,帮助你更好地理解这类问题在实战开发中能如何类比使用。原创 2025-11-05 23:45:51 · 345 阅读 · 0 评论 -
Vue3 中 computed 返回的 ref 对象为何在 provide/inject 后无需 .value 访问?
在 Vue 3 的响应式系统中,computed() 返回的始终是一个 ref 对象。然而,开发者常常会发现一个“反直觉”的现象:当我们通过 provide/inject 注入这个 computed 值后,在子组件中使用时竟然不需要 .value 就能直接访问。本文将深入解释这一机制,配合完整的可运行 Demo,帮你从底层逻辑到实战应用彻底搞清楚为什么会这样。原创 2025-11-04 22:07:54 · 966 阅读 · 0 评论 -
LeetCode 415 - 字符串相加
这道题看起来挺简单的,但其实暗藏小坑:我们要找的是不同数字中的第三大数,而不是简单排序后的第三个数。比如 [2, 2, 3, 1] 这种情况就特别容易出错。本文会带你一步步分析解题思路,并提供一个可运行的 Swift Demo,帮你彻底搞清楚逻辑。原创 2025-11-04 21:45:53 · 540 阅读 · 0 评论 -
LeetCode 414 - 第三大的数
这道题看起来挺简单的,但其实暗藏小坑:我们要找的是不同数字中的第三大数,而不是简单排序后的第三个数。比如 [2, 2, 3, 1] 这种情况就特别容易出错。本文会带你一步步分析解题思路,并提供一个可运行的 Swift Demo,帮你彻底搞清楚逻辑。原创 2025-11-03 19:47:22 · 740 阅读 · 0 评论 -
LeetCode 413 - 等差数列划分
这道题看起来名字有点抽象,其实本质上是在找数组中“连续且公差一致”的子数组数量。换句话说,我们要找出所有长度≥3、且相邻元素差相同的子数组。虽然听起来像是数学题,但实现上其实是一个动态规划(DP)+ 连续计数的过程。本文会带你从实际开发的角度去理解这个问题,结合 Swift 代码一步步拆解逻辑,让你对动态规划类题目不再害怕。原创 2025-11-02 00:32:46 · 1012 阅读 · 0 评论 -
Android Studio Narwhal 4:创建空应用报错 —— AAPT2 process unexpectedly exit 的排查与解决
这是个常见但不太好定位的错误:看起来是 AAPT2 在处理 aar 里的 PNG 资源时崩溃了。下面我把可能的原因、一步步的检查与修复方案,以及能直接运行/验证的 demo 和脚本都放齐了,方便你直接试。我在下面的关键建议引用了社区/issue 实例:清理 Gradle 缓存是常见且有效的快速修复办法,还有一些 buildserver / CI 中也出现了类似 aapt2 在处理 PNG 时报错的案例,可参考。(Stack Overflow)原创 2025-10-31 23:39:36 · 993 阅读 · 0 评论 -
LeetCode 412 - Fizz Buzz
这道题其实是很多人入门算法时的经典“Hello World”级别的逻辑题——Fizz Buzz。它看起来很简单,但却经常被面试官用来考察你对逻辑判断、代码结构清晰度以及边界条件处理的习惯。在这篇文章里,我们会从实际开发的思维出发,聊聊怎么用 Swift 实现一个干净、清晰、可扩展的 Fizz Buzz,同时结合一些真实的使用场景,比如日志输出、系统监控状态显示等,帮你理解这类“规则映射”的问题其实在工程里非常常见。原创 2025-10-31 23:21:01 · 438 阅读 · 0 评论 -
Lombok 不生效 —— 从排查到可运行 Demo(含实战解析)
先说结论:Lombok 常见“不生效”的原因通常不是 Lombok 本身坏了,而是 IDE/构建器/项目配置没把注解处理(annotation processing)和依赖装好。下面用一个可运行的 Maven Demo把问题复现、讲清原因、给出逐步解决方案,并把常见坑和场景经验都写清楚,方便你在真实项目里快速定位。原创 2025-10-30 23:31:32 · 1298 阅读 · 0 评论 -
LeetCode 411 - 最短独占单词缩写
今天我们来聊一道 “看起来高冷”、但其实思想非常酷的题:最短独占单词缩写。题目要求:给定一个目标字符串 target,还有一个字典 dictionary,你需要为 target 生成一个 最短可能的缩写字符串,并且这个缩写不能和字典里任意一个单词的缩写“冲突”。这里的“冲突”指的是:如果字典中某个单词与 target 长度相同,那么它可能拥有与我们为 target 生成的缩写相同的缩写形式,那就不行。我们需要找一个“独一无二”的缩写。虽然听起来像是字符串暴力生成,但其实这里有非常有意思的 位掩码 +原创 2025-10-30 17:17:57 · 1001 阅读 · 0 评论 -
Mac 终端效率提升指南:iTerm2 高级工作流优化
iTerm2 是 macOS 上最强的终端增强工具,几乎可以替代系统 Terminal。除了外观美观外,它在分屏、多标签、快捷键、自定义命令流方面都有极强的可玩性。原创 2025-10-29 20:28:55 · 1223 阅读 · 0 评论 -
LeetCode 410 - 分割数组的最大值
今天要聊的题是 LeetCode 410:分割数组的最大值(Split Array Largest Sum)。这题的核心是——如何在把数组拆成 k 段之后,让这些段的“最大和”尽可能小。换句话说,这是一道非常经典的“二分 + 贪心”混合问题。看起来像是要枚举所有分法,但实际上我们可以通过“最大和上限”来二分搜索答案,找到最优解。这类题在项目中也挺常见,比如你要把一批任务分配给 k 台服务器,每台机器的任务量不能太悬殊,我们就希望找到“最平衡”的那种分法。原创 2025-10-29 20:25:22 · 1242 阅读 · 0 评论 -
LeetCode 409 - 最长回文串 | Swift 实战题解
在字符串题里,“回文串”一直是经典题型之一。这次我们要解决的问题是:给定一串字母,怎么用它们重新排列,拼出能构成的最长回文串?比如输入 "abccccdd",我们可以拼出 "dccaccd",长度为 7。你可能第一反应是:这题要不要用中心扩展法?或者动态规划?其实——都不用!我们只需要数一数每个字母出现了多少次,结果就能直接算出来。这是一道用统计思路解决字符串构造问题的经典题,非常适合打磨算法直觉。原创 2025-10-28 22:02:21 · 523 阅读 · 0 评论
分享