摘要: 前言 在前三章中我们的案例大量使用到了Thread这个类,通过其原始API,对其进行创建、启动、中断、中断、终止、取消以及异常处理,这样的写法不仅不够优雅(对接下来这篇,我称其为.NET现代化并行编程体系中出现的API而言),并且大部分的接口都是极度复杂和危险的。很幸运,如今.NET已经提供,并且普 阅读全文
posted @ 2022-12-18 16:42 xiaolipro 阅读(1507) 评论(0) 推荐(15) 编辑
摘要: 前言 抛开死锁不谈,只聊性能问题,尽管锁总能粗暴的满足同步需求,但一旦存在竞争关系,意味着一定会有线程被阻塞,竞争越激烈,被阻塞的线程越多,上下文切换次数越多,调度成本越大,显然在高并发的场景下会损害性能。在高并发高性能且要求线程安全的述求下,无锁构造(非阻塞构造)闪亮登场。 如果你对同步&阻塞不是 阅读全文
posted @ 2022-11-15 09:09 xiaolipro 阅读(4754) 评论(9) 推荐(54) 编辑
摘要: 回顾上节:线程基础篇传送门 我们对多线程已经有了基础的认知,知道其工作原理和一些基本维护操作,并且引出了线程安全的概念。这一篇我们要讲的主题--同步,是解决线程安全问题的一个手段之一,线程安全是整个多线程的核心挑战,几乎所有的手段都是在与他对抗!整个系列将通篇围绕线程安全开展。 如果你对同步已经有了 阅读全文
posted @ 2022-11-13 11:06 xiaolipro 阅读(842) 评论(1) 推荐(4) 编辑
摘要: 线程基础 视频已经发布到B站 如果你已经掌握了线程基础,请跳往下一篇:同步基础传送门 参考文章: 《Threading in C# 》(Joseph Albahari)https://www.albahari.com/threading/ 《Threading in C# 》中文翻译(GKarch 阅读全文
posted @ 2022-11-13 11:01 xiaolipro 阅读(1992) 评论(2) 推荐(19) 编辑
摘要: 最短路 dijkstra 时间复杂度:N^2 堆优化版的就是优化找最小距离点 时间复杂度:M*logN 特点:不允许存在负权边 算法原理:用最短距离去更新n个点的距离(实际有效更新的只有连边) bellman-ford 时间复杂度:K*M (K是步数,M是边数) 能处理负权边,可以处理负环,可以判断 阅读全文
posted @ 2021-03-27 22:10 xiaolipro 阅读(114) 评论(0) 推荐(0) 编辑
摘要: Hash(散列) 并查集 Trie树 堆 映射版本堆,Dijkstra需要用到 堆排序 链表 栈与队列 阅读全文
posted @ 2021-03-16 18:30 xiaolipro 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-03-15 21:07 xiaolipro 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-03-13 19:57 xiaolipro 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-03-13 19:34 xiaolipro 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 图解 前缀和 二维前缀和 差分 二维差分 阅读全文
posted @ 2021-03-13 12:33 xiaolipro 阅读(31) 评论(0) 推荐(0) 编辑