- 博客(78)
- 资源 (3)
- 收藏
- 关注
原创 .NET10 - 预览版1新功能体验(一)
.NET10预览版发布,含C#14预览版。安装需下载SDK,创建.NET10类库需开启预览版SDK功能。C#14新增field关键字、nameof表达式支持未绑定泛型、Span隐式转换等功能。测试代码已上传至代码库。
2025-03-03 17:11:06
1267
原创 并发编程 - 线程同步(九)之信号量Semaphore
信号量Semaphore是C#中用于线程同步的机制,通过计数器控制对共享资源的访问。Semaphore和SemaphoreSlim是两种实现,前者内核级别,支持跨进程;后者用户级别,性能更高。使用需注意配对获取和释放信号量。
2025-02-19 16:43:54
1157
原创 并发编程 - 线程同步(八)之自旋锁SpinLock
SpinLock是C#中轻量级锁,通过自旋避免线程上下文切换。传递时需小心,用ref避免副本问题。适用于高并发且锁持有时间短的场景,避免单核CPU。可自己实现简单自旋锁。
2025-02-17 17:38:12
1121
原创 并发编程 - 线程同步(七)之互斥锁Monitor
学习C#互斥锁Monitor,注意避免锁定值类型和try/finally错误,善用TryEnter避免长时间持锁,以及使用Wait、Pulse等方法实现生产者-消费者模式。示例代码和测试方法在代码库。
2025-02-13 15:53:41
1074
原创 并发编程 - 线程同步(六)之锁lock
lock是C#中的线程同步互斥锁,使用时需避免锁定this、公共对象、字符串和非readonly对象,小心锁定静态对象。锁定不当易导致同步问题,示例代码和源码在代码库。
2025-02-09 20:57:16
778
原创 并发编程 - 线程同步(五)之原子操作Interlocked详解二
学习Interlocked类其他方法,包括Exchange、CompareExchange的泛型和非泛型版本,用于原子更新变量并获取旧值,实现锁机制和CAS算法;And、Or方法用于原子按位操作;MemoryBarrier方法用于执行内存屏障。
2025-02-08 17:07:09
969
原创 并发编程 - 线程同步(四)之原子操作Interlocked详解一
本文介绍Interlocked类的使用,包括Read、Increment、Decrement和Add方法,适用于多线程环境安全操作变量,解决了非原子操作导致的线程安全问题,并提供示例代码。
2025-02-07 09:36:01
704
原创 并发编程 - 线程同步(三)之原子操作Interlocked简介
原子操作是不可分割的操作单元,Interlocked提供硬件级别原子操作,比传统锁机制效率高。Interlocked支持多种原子操作,如增减、替换、位操作等,确保多线程安全。
2025-02-05 17:59:17
923
原创 并发编程 - 线程同步(二)
ThreadStatic实现线程本地存储,避免共享资源问题;ThreadLocal解决其缺陷;volatile关键字防止缓存和编译器优化,非完整线程同步机制。
2025-01-29 22:30:11
744
原创 并发编程 - 线程同步(一)
线程同步确保多线程环境下共享资源安全使用,避免竞争条件和数据不一致。实现方式有避免资源共享、用户模式同步、内核模式同步和混合模式同步。
2025-01-23 21:48:27
1069
原创 并发编程 - 线程浅试
C#中线程创建有ThreadStart、ParameterizedThreadStart和Lambda表达式三种方式,线程可休眠、等待,需注意异常处理。线程非万能,需按需使用,适用于文件写、网络请求、数据库查询等场景。
2025-01-17 17:18:01
964
原创 并发编程 - 初识线程
线程是操作系统单独执行任务的最小单元,分前台和后台,有优先级,经历多个状态。C#可设置线程优先级和类型,控制线程状态的方法有Start、Sleep等,但Suspend和Abort已被弃用。多线程编程需通过同步机制控制线程执行。
2025-01-15 22:11:56
1078
原创 并发编程 - 死锁的产生、排查与解决方案
多线程中死锁因资源争夺形成循环等待,必要条件为互斥、占有并等待、不可剥夺、循环等待。可用VisualStudio等工具排查,解决办法包括顺序加锁、尝试锁、超时机制、避免嵌套使用锁。
2024-12-27 00:03:14
1297
原创 Visual Studio - API调试与测试工具之HTTP文件
VisualStudio2022支持类似RESTClient功能,可通过.http文件便捷调试Api接口,包括创建方式、语法、注释变量、环境文件及身份验证等,功能待完善,测试代码已上传至代码库。
2024-12-25 00:52:07
1445
原创 LeetCode题集-9 - 回文数
判断整数x是否为回文数,可用字符串反转、字符数组反转、双指针、反转全部数字及反转一半数字法,需考虑字符数组深拷贝、整数溢出及奇偶长度情况。
2024-12-20 09:28:26
612
原创 LeetCode题集-8 - 字符串转换整数 (atoi)
实现myAtoi函数,可用手动处理字符、正则表达式或状态机法。手动法需去空格、判符号、处理数字并防溢出。正则法用^\s*[+-]?\d+匹配。状态机法通过状态转移处理字符。
2024-12-17 09:17:15
781
原创 LeetCode题集-7 - 整数反转
将32位有符号整数x反转,若超出范围则返回0。方法包括long类型字符串转换、int类型字符串转换和数学计算,后者性能更优。基准测试显示数学方法性能高于字符串处理。
2024-12-14 00:03:39
1032
原创 LeetCode题集-6 - Z 字形变换
分享Z字形排列字符串的解法,包括二维矩阵模拟、行模拟(压缩矩阵、代码精简)、伪直接构建和真直接构建,真直接构建需处理周期和行字符数,直接拼接结果字符串。
2024-12-12 07:26:33
1173
原创 LeetCode题集-5 - 最长回文子串之马拉车(二)
马拉车法求解最长回文子串,优化中心扩展法,统一奇偶处理,利用对称性减少重复计算,时间复杂度O(n),空间复杂度O(n)。
2024-12-10 08:26:09
1114
原创 LeetCode题集-5 - 最长回文子串(一)
求解最长回文子串,可用暴力破解法O(n^3),优化为动态规划O(n^2)或中心扩展法O(n^2),动态规划空间O(n^2),中心扩展法空间O(1)。
2024-12-08 22:57:55
964
原创 开源 - Ideal库 - Excel帮助类,ExcelHelper实现(五)
ExcelHelper实现包括读取Excel到DataSet单元测试、Excel与对象集合转换(含文件路径、文件流、文件后缀方式)、表格数组写入Excel文件流或文件及对象集合写入Excel,并附带单元测试,源码已上传至代码库。
2024-12-06 00:32:53
1185
原创 开源 - Ideal库 - Excel帮助类,ExcelHelper实现(四)
实现ExcelHelper第二步,设计接口包括读写操作和两类转换,通过文件路径、文件流及后缀读取Excel到DataSet,涉及工作簿Sheet与DataTable相互转换,具体代码已上传至代码库。
2024-12-04 00:04:05
1058
原创 开源 - Ideal库 - Excel帮助类,TableHelper实现(三)
讲解对象集合与DataTable相互转换,包括表格转对象集合需校验类型、列名对应,及解决结构体赋值问题;对象集合转表格、一维数组转表格、行列转置的方法及示例代码,测试源码已上传。
2024-12-02 00:04:15
1033
原创 开源 - Ideal库 - Excel帮助类,TableHelper实现(二)
本文实现对象集合与DataTable的转换,包括按列名数组、列名-类型键值对、类创建表格的方法,并对类进行类型校验和反射获取属性信息,单元测试代码已上传至代码库。
2024-11-30 00:17:41
317
原创 开源 - Ideal库 - Excel帮助类,设计思路(一)
封装Excel常用操作,围绕导入导出设计,通过DataTable实现对象集合与Excel转换,分为对象集合与DataTable转换、DataTable与Excel转换两部分,最终整合为对象集合与Excel转换方法。
2024-11-28 00:14:36
838
原创 .NET9 - Swagger平替Scalar详解(四)
本文分享Swagger中常用功能在Scalar中的使用,包括版本说明、接口分类、接口及参数描述、枚举类型、文件上传和JWT认证等,并提供相关代码示例和效果展示,以及可能遇到的问题和解决方案。
2024-11-26 22:03:56
3561
原创 .NET9 - 新功能体验(三)
.NET9和C#13引入Linq新方法CountBy和AggregateBy、序列化加强、Task.WhenEach方法、TimeSpan新重载、内置Swagger替换为Scalar,提升开发效率和代码可读性。
2024-11-24 09:06:34
1218
1
原创 .NET9 - 新功能体验(二)
C#13引入allows ref struct泛型约束,支持ref struct接口和异步、迭代器使用;新增部分属性和索引器;.NET9的foreach支持获取元素及其索引,提供更多便利。
2024-11-22 16:51:36
1668
2
原创 .NET9 - 新功能体验(一)
.NET9发布,包含数千项改进。新功能包括命令行安装、C#13新转义序列\e、隐式索引访问、params参数增强、新锁类型System.Threading.Lock及生成UUIDv7。示例源码已上传至代码库。
2024-11-21 00:00:06
1488
原创 开源 - Ideal库 - 枚举扩展设计思路及实现难点(三)
分享枚举扩展设计思路,包括枚举值、名、描述、项、类型转换。实现难点包括枚举名称、描述转枚举处理,枚举值类型支持,高效返回键值对,识别有效位标志组合等。
2024-11-18 23:28:34
930
原创 开源 - Ideal库 - 常用枚举扩展方法(二)
分享枚举操作扩展方法,包括枚举值转枚举、名称、描述及默认值处理,考虑位标志枚举和多种整数类型支持,提供详细单元测试和代码实现,库将上传至Nuget。
2024-11-14 00:04:01
934
原创 开源 - Ideal库 - 常用枚举扩展方法(一)
分享枚举操作常用扩展方法,适用正常枚举和位标志枚举。包括名称/描述转枚举、转枚举值或默认值等方法,并附上详细单元测试。代码库已上传,可直接使用Ideal.Core.Common。
2024-11-13 00:05:25
871
原创 开源 - Ideal库 -获取特殊时间扩展方法(四)
分享特殊时间获取的扩展方法,包括获取当前月第一个/最后一个指定星期几、上/下一个指定星期几、月份的第几周、年的第几周(ISO8601)、月份周数、是否周末、是否闰年、所在季度,提供详细代码和单元测试。
2024-11-12 00:04:14
1035
原创 开源 - Ideal库 -获取特殊时间扩展方法(三)
分享特殊时间获取的扩展方法,包括当天开始/结束时间、当前周/月/季度/年的第一天和最后一天等,附代码示例和单元测试,库将上传至Nuget,源码在代码库。
2024-11-11 00:28:58
1001
原创 开源 - Ideal库 - 常用时间转换扩展方法(二)
分享时间转换的扩展方法,包括TimeOnly、DateOnly与DateTime间的转换,并介绍代码结构设计与组织、单元测试、文档的重要性,以partial类、功能分类优化代码结构,后续将上传至Nuget。
2024-11-09 00:08:03
1268
原创 开源 - Ideal库 - 常用时间转换扩展方法(一)
分享《开源-Ideal库》系列文章,含公共、文档等库封装,首篇介绍时间转换封装,包括日期时间、时间戳与字符串间转换方法,后续上传至Nuget,测试代码已上传至代码库。
2024-11-07 00:03:53
822
原创 数据结构 - 图之代码实现
图遍历分为深度优先遍历(DFS)和广度优先遍历(BFS),DFS一直往下走直到没路再返回,BFS先走所有路一步。文章还介绍了以邻接矩阵存储无向图的实现方法,包括定义、初始化、获取点数量等操作。
2024-11-04 00:30:12
1053
原创 数据结构 - 图
学习复杂数据结构图,回顾线性表、树结构,图结构多对多关系更复杂。图由点集和边集组成,分类无向图、有向图、带权图。存储方式有邻接矩阵、邻接表、逆邻接表、十字链表。
2024-11-02 02:23:23
797
原创 数据结构 - 散列表,三探之代码实现
本文介绍散列表代码实现,使用取模方式构建散列函数,实现链式法和开放寻址法(线性探测)解决碰撞,包含初始化、插入、删除、查找等功能,并实现了再散列方法,代码已上传至代码库。
2024-10-31 00:04:40
1160
1
原创 数据结构 - 散列表,再探
散列表碰撞解决方案包括链式法、开放寻址法(含线性、平方、双重散列、随机探测)、再散列法。链式法用链表处理碰撞,开放寻址法通过探测解决,再散列法通过扩容并重计算位置。
2024-10-29 00:09:42
1189
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅