自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT规划师

热爱编程,追求最佳实践,喜欢思想的碰撞

  • 博客(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

.net获取客户端IP,Mac地址

用于.net获取客户端Mac地址,和IP地址,经过测试可以使用,文件中有源程序。

2013-03-28

右键关联CMD

在文件夹内右键选择关联CMD,CMD会自动定位到当前文件夹内的路径,右键文件夹选择关联CMD,CMD也会自动定位到当前文件夹内的路径;

2018-04-11

24点小游戏

C# winform开发的24点小游戏,有助于我们对算法的理解。

2012-10-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除