引言

上文数据结构与算法 --- 递归(一) 讲述了什么是递归算法,如何编写递归算法及如何写好递归算法,本文着重讲述一下如何避免递归过深导致的堆栈溢出问题。

什么是递归?

递归(Recursion) 是一种解决问题的方法,它将问题分解为更小的子问题,并逐层解决这些子问题。递归算法的核心思想是:一个函数可以直接或间接地调用自身。通过这种自我调用,我们可以用简洁的代码来解决复杂问题。

2023-05-03
并发编程
00

引言

现在模拟一个异步方法抛出了异常:

csharp
public static async Task ThrowAfter(int ms, string message) { await Task.Delay(ms); throw new Exception(message); }

思考一下, DontHandle() 方法是否能够捕获到异常?

csharp
public static void DontHandle() { try { ThrowAfter(1000, "first"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
2023-04-22
桌面应用
00

引言

在实际开发场景中,当ViewModel内的一个属性是一个 ObservableCollection<T> 或者是一个多层级 class 的时候,有可能有的需求需要 ObservableCollection<T>内的元素的子属性或多层级 class 的子属性,甚至子属性的子属性,变化,需要通知到ViewModel,该怎么做呢?

2023-04-21
并发编程
00

介绍

CAS(Compare And Swap) 是一种无锁算法的实现手段,中文名称为比较并交换。它由 CPU 的原子指令实现,可以在多线程环境下实现无锁的数据结构。