C# 周记 :从集合字典到 IO 多线程的踩坑实录
这一周的学习进度可以说是“起飞”兼“翻车”并存。从抽象类一路狂飙到的 IO 与文件操作顺带还和多线程Multithreading刚了正面。代码逻辑越来越复杂遇到的 Bug 也越来越底层。今天总结一下这周的核心知识点以及那些让我 debug 到血压飙升的“经典神坑”。一、抽象类 多态、集合 泛型和字典前三天的内容主要是数据结构和面向对象的升华抽象类 多态脱离了简单的搬砖代码开始理解怎么设计更灵活的程序架构。集合 泛型彻底告别了必须固定长度的传统数组。用上了可以自动扩容的ListT配合泛型的类型安全检查处理数据舒服多了。字典 (Dictionary)掌握了键值对Key-Value的魔法查找数据的速度直接拉满。异常处理Exception也让我学会了怎么让程序在崩溃边缘安全停下。二、IO 文件操作到了周四程序终于要和操作系统硬盘里的真实文件打交道了真正的“踩坑之旅”也就此开始。坑 1转义字符的“隐形背刺”在做从文本文件中读取并提取整数的练习时我用Split()方法切割字符串。为了去掉换行符我定义了分隔符数组char[] separators { , ,, r, \n };翻车原因漏掉了一个反斜杠把\r回车符写成了普通的字母r。导致电脑切出来的数字字符串背后偷偷跟着一个看不见的控制符变成10\r。结果int.TryParse死活转换失败整个数组全军覆没。坑 2程序员的终极灵异事件写了一段读取文件内容并打印的代码语法天衣无缝流操作标准规范但运行起来黑框里就是什么都没有。我查了半天 API最后发现测试用的文本文件忘了按CtrlS保存里面根本就是空的代码逻辑再完美也防不住空空如也的测试数据。之前习惯了File.ReadAllText()一口吞到了FileStream终于理解了底层的玩法。 不能直接用水管把大海硬盘大文件瞬间灌进房子内存。必须要自己建一个“水桶”byte[] buffer new byte[1024];。每次只读 1KB提水倒水循环往复这样哪怕是几十 G 的文件程序也只需要占用极小的内存。三、多线程并发读写这周最大的挑战就是用多线程去干预文件和数组。坑 3程序结构散架刚接触Thread时为了图方便把题目写在一起结果直接喜提CS0116报错红线。翻车原因C# 有极其严格的结构规范。一是方法不能“裸奔”必须包在class大括号里二是一个项目里只能有一个大门static void Main。把计算斐波那契的方法随便丢在外面编译器当场罢工。另外给线程传参数时必须掌握() Lambda 表达式这种神仙语法。坑 4多线程并发写入的“车祸现场”题目要求“多个线程同时读取并写入到另一个文件”。我直接Start()两个线程往里写。结果程序无情抛出IOException文件正由另一进程使用。 这就好比两个工人同时拿笔往同一张纸上写字直接打架。终极解法加锁 (lock)在写入操作外面套上lock (_fileLock)。给文件装上一扇门线程 A 进去写的时候门锁死线程 B 在外面乖乖排队等 A 出来了B 再进去写。配合FileMode.Append完美实现了高并发下的安全追加写入总结这一周从内存里的数据结构打通到了硬盘 IO 和 CPU 的多线程调度。虽然经常因为一个符号或者没保存文件卡住但看到多线程交替运行、文件完美生成的那一刻还是挺爽的。

相关新闻

Markdown数学公式实战指南:从LaTeX语法到技术写作应用

Markdown数学公式实战指南:从LaTeX语法到技术写作应用

1. 从“写文档”到“写论文”:为什么Markdown数学公式是刚需 几年前,我还在用Word吭哧吭哧地写技术文档,每次遇到几个数学符号,要么用笨拙的“插入公式”功能,要么干脆截图贴上去。直到我开始在GitHub上写项目README&a…

2026/10/5 23:34:32 阅读更多 →
Grove MQ气体传感器原理与实战:从接口标准到物联网应用

Grove MQ气体传感器原理与实战:从接口标准到物联网应用

1. 从“Grove”接口说起:为什么它改变了传感器玩法 如果你玩过Arduino或者树莓派,大概率对那一堆五颜六色的杜邦线、面包板,还有时不时因为接触不良导致的诡异读数感到头疼。我第一次接触传感器时,最怕的就是连线——正负极接反烧…

2026/10/6 18:57:38 阅读更多 →
魔兽争霸3终极兼容性解决方案:Warcraft Helper让你的经典游戏重获新生

魔兽争霸3终极兼容性解决方案:Warcraft Helper让你的经典游戏重获新生

魔兽争霸3终极兼容性解决方案:Warcraft Helper让你的经典游戏重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸3》…

2026/10/15 16:23:34 阅读更多 →

最新新闻

协处理器系统集成实战:架构设计、接口实现与性能调优

协处理器系统集成实战:架构设计、接口实现与性能调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 19:44:39 阅读更多 →
MyBatis-Plus多数据源事务失效:原理剖析与解决方案

MyBatis-Plus多数据源事务失效:原理剖析与解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 19:44:39 阅读更多 →
HoloCubic 固件中的 LVGL 编码规范:从命名约定到 astyle 自动格式化实战

HoloCubic 固件中的 LVGL 编码规范:从命名约定到 astyle 自动格式化实战

嵌入式物联网智能硬件嵌入式GUI硬件开发 【免费下载链接】HoloCubic 带网络功能的伪全息透明显示桌面站 项目地址: https://gitcode.com/gh_mirrors/ho/HoloCubic 点击查看 免费下载 本文以 HoloCubic 开源仓库内置的 LVGL 图形库规范文档 CODING_STYLE.md 为核心&…

2026/10/15 19:44:39 阅读更多 →
CDH 6.3.2离线部署全流程:基于本地仓库的Cloudera Manager集群搭建与排错

CDH 6.3.2离线部署全流程:基于本地仓库的Cloudera Manager集群搭建与排错

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 19:44:39 阅读更多 →
8086测速实验:软硬协同中断设计与实板调试指南

8086测速实验:软硬协同中断设计与实板调试指南

简介:本资源是一份面向高校物联网与微机原理课程学习者的完整实验报告,聚焦智慧交通场景下的车辆测速系统设计与实现,帮助学生将CPU、8253/8254定时计数器、8255并行接口等核心接口技术落地为实际硬件测控能力。报告涵盖实验目的、设备环境、…

2026/10/15 19:44:39 阅读更多 →
图论中森林的度数平方和计算:贡献法与生成函数应用

图论中森林的度数平方和计算:贡献法与生成函数应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 19:43:38 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →