C 语言 <code>&lt;setjmp.h&gt;</code> 详解:setjmp、longjmp 的用法、场景与限制

为 C 语言提供了非局部跳转能力,核心接口是 setjmp 、 longjmp 和 jmp_buf 。它适合做简化版错误恢复,但也伴随性能、可维护性和使用边界上的限制,不能当成通用异常机制来替代正常控制流。 在 C 语言里, 提供了一种少见但很强的控制流能力:程序可以不按常规返回路径退出,而是直接跳回先前保存的执行点。

C 语言 <code>&lt;setjmp.h&gt;</code> 详解:setjmp、longjmp 的用法、场景与限制

WPF 中如何按 MVVM 实现 DataGrid 编辑功能

这篇文章用一个可运行的 WPF 示例,拆解了在不依赖第三方框架的前提下,如何按 MVVM 思路给 DataGrid 增加“弹窗编辑并回写列表”的能力。重点包括主列表绑定、编辑窗口数据承接、命令执行以及 INotifyPropertyChanged 驱动的界面刷新。

WPF 中如何按 MVVM 实现 DataGrid 编辑功能

如何解决 C++ 多重定义错误

多重定义错误本质上是链接阶段发现“同一个符号被定义了不止一次”。这类问题常见于头文件里直接写定义、多个源文件重复实现同名函数,或模板与内联函数使用不当。梳理触发场景、诊断线索和修复手法后,定位与处理都会快很多。

如何解决 C++ 多重定义错误

MyBatis-Plus 查询结果全是 null,但条数正确:原因与排查办法

MyBatis-Plus 查询结果“条数正确但每项都是 null”,通常不是 SQL 没查到,而是结果映射阶段出了问题。最常见的原因是下划线字段与默认驼峰映射冲突,其次还要检查 Bean 的 setter、Lombok 生效情况,以及是否需要关闭 `map-underscore-to-camel-case`。

MyBatis-Plus 查询结果全是 null,但条数正确:原因与排查办法

Spring Boot 注册 Servlet 的五种方法,怎么选更合适?

Spring Boot 里“注册 Servlet”并不只有一种写法。本文把常见 5 种方案拆开说明,保留关键代码与适用条件,帮助你根据是否偏原生 Servlet、是否需要动态装配、是否已走向 Spring MVC 或函数式路由,快速判断该选哪一种。

Spring Boot 注册 Servlet 的五种方法,怎么选更合适?

Android 自定义 View 实战:打造一个跟随滑动的丝滑指示器

这篇文章用 Kotlin 实现一个可复用的水平滚动指示器 `BottomLineView`,核心思路是把绘制逻辑和滚动容器解耦,只暴露“指示器宽度”和“滚动比例”两个输入。文中同时给出 `RecyclerView`、`HorizontalScrollView`、`ViewPager2` 三种联动方案,适合直接落地到实际项目。

Android 自定义 View 实战:打造一个跟随滑动的丝滑指示器

C 语言 <stddef.h>:size_t、ptrdiff_t、NULL 和 offsetof 一次看懂

是 C 里处理对象大小、指针差值和结构体内存布局时常用的标准头文件。本文按实际使用场景拆解 size_t、ptrdiff_t、NULL 和 offsetof 的作用,并结合示例说明它们分别适合解决什么问题。 写 C 代码时,涉及对象大小、指针差值和结构体成员位置的问题,看似只是几个基础语法点,实际却直接影响代码的可移植性和可维护性。

C 语言 <stddef.h>:size_t、ptrdiff_t、NULL 和 offsetof 一次看懂