- 博客(484)
- 资源 (2)
- 收藏
- 关注
原创 c#关于计算机密集型和IO等待型数据的处理方式
前者要把多核吃满,后者要把线程还回去——最忌讳的就是用同一招(比如无脑Task.Run)两头糊。处理的不是"数据快慢",而是"等待期间线程归谁"。
2026-11-02 09:58:43
274
原创 释放后使用漏洞Use-After-Free
回到那段二十行的代码。free(u)执行完的那一刻,什么都没发生。内存还在那里,地址还在那里,程序还在正常运行。UAF 的恐怖之处从来不是崩溃,而是它大概率不崩溃。它只是一个安静的、悬在那里的幽灵,等着某一次内存复用把它变成别人的东西。而你在代码里看到的那个,看起来依然像一道严密的权限校验。三十年来,我们从缓解打到检测,从检测打到消除,把一个被公认为"无法根除"的问题,从 76% 压到了 20% 以下。凡是能靠人的谨慎来避免的 bug,最终都避免不了。 唯一的出路,是把它变成编译器的事。
2026-10-28 10:21:22
369
原创 AI时代程序员还要学编程吗?
有句话说"AI 不会取代程序员,但会写代码的人会取代不会写代码的人"——现在已经不够准确了。会思考的人正在取代只会写代码的人,而既会思考又懂代码的人,拿到了这个时代最大的杠杆。所以问题从来不是"还要不要学编程"。真正的问题是——你学的是那件正在被自动化的事,还是那件正在变得稀缺的事。前者确实可以不学了。后者,比过去二十年里的任何时候都更值得学。码字不易,如果您觉得我的文章对您有帮助的话,建议您打赏一元,我买瓶水喝;
2026-10-28 09:53:06
282
原创 用墨衍创作:不是让 AI 替你写,而是把“写作”重构成一条流水线
追流量:选热点选题,看系统提示“该写安装教程还是架构对比”做品牌:用自定义选题,写你长期想占领的方法论(比如《工业软件里的 Clean Architecture 落地》)技术博主容易犯的错是全程追热点,结果账号没有主轴。建议热点占 30%,长尾方法论占 70%。过去比的是“谁写得快”,现在比的是“谁有真问题、真数据、真判断”。墨衍这类工具出现后,写作的门槛往下砍了一截,但创作的门槛往上抬了一截——因为人人都能日更,读者只会更挑剔:你这篇除了 AI 也能说的套话,还剩什么?
2026-10-23 15:53:22
253
原创 人工智能重构软件开发:技术演进、产业影响、组织变革与未来路线图
截至2026年10月,AI已把软件交付从“个人编码加速器”推进为“人机协同的生产系统”,但尚无证据表明它已普遍替代软件工程师。全球开发者中84%已使用或计划使用AI开发工具,但只有31%已使用智能体;46%不信任AI输出的准确性,73%认为自然语言“氛围编程”造成过问题。采用广、信任低、流程瓶颈上升,意味着价值不再主要由代码行数决定,而由需求表达、上下文、自动化测试、审查、部署权限与运行可观测性共同决定。
2026-10-22 17:57:49
361
原创 .NET Core Web API 生产环境问题排查文章
"我这边跑是好的。这句话在软件工程里的地位,大概相当于医学里的"病人说自己没病"。它既不是谎言,也不是答案,而是一个信息量极低的信号:你只在一种环境下验证过代码。.NET Core Web API 尤其容易掉进这个坑。它跨平台、配置源多、默认值友好、dotnet run一行就能起服务,开发体验极佳。但同样因为这套设计,应用的行为高度依赖运行时环境——配置从哪来、进程以什么身份跑、跑在什么网络拓扑后面、有多少内存和 CPU、有没有反向代理。这些条件在开发机、测试机、生产环境之间几乎不可能完全一致。
2026-10-21 12:01:59
300
原创 AI写代码越来越快怎么人们觉得越来越累
2026年,代码的生产速度从未如此之高。GitHub官方数据早在2024年就显示,Copilot生成代码占比超过46%;到2026年,Agentic编程工具——Claude Code、Codex、Jules、Devin——已经能把“一个需求到PR落地”的周期从几天压缩到几十分钟。写一个CRUD接口、搭一个前端页面、补一套测试,几近“说话即交付”。Stack Overflow 2025年的开发者调查里,报告“精疲力竭”的受访者比例连续第三年上升。
2026-10-19 10:40:31
239
原创 DeepSeek 大模型落地应用实战指南
场景核心技术栈关键依赖① 企业知识库智能问答向量检索 + 语义嵌入numpyFAISSMilvus② 复杂代码生成与自动化调试大模型生成 + 单元测试闭环openaisubprocess③ 长文档深度解析与观点提炼分块摘要 + 关键词统计openaire④ 多轮对话式营销文案创作多轮对话 + 风格切换openai⑤ 跨语言商务沟通辅助实时翻译 + 语言检测openai⑥ 垂直行业数据清洗与结构化数据清洗 + 去重转换pandasre⑦ 个性化学习路径规划知识图谱 + 拓扑排序。
2026-10-17 15:31:06
237
原创 AI逆向工程对软件行业发展与影响
讲个故事,你就明白了。老张开了一家小公司,花20万请人开发了一个"智能排班系统",觉得这是自己的核心竞争力,别人抄不走。结果半年后,隔壁老王的公司也上了一个几乎一模一样的系统,功能、界面、连按钮位置都差不多。老张气炸了,找律师告老王抄袭。律师一看,傻眼了——老王没偷代码,没挖老张的人,就是找了个懂AI的程序员,把老张那个系统的安装包丢给AI,说了一句:"帮我搞清楚这个排班系统是怎么算的,给我还原出来。AI自己调用反编译工具,把二进制代码拆开,分析了三天,给了老王一份详细的逻辑说明,还附了一份参考实现。
2026-10-17 14:50:24
162
1
原创 为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?
原因不全是“无私”,而是。程序员愿意开源,本质是“公开代码”这个行为的收益,远大于付出的成本。
2026-10-16 09:01:47
313
原创 c#程序员转信创赛道有没有发展前景
有前景,但,而是要看你走哪条路。C# 程序员进信创,——它其实是一整套“国产 CPU+国产 OS+国产库+迁移适配+等保合规”的落地能力。
2026-10-16 08:55:07
319
原创 C# 开源框架里踩过的坑
做 .NET 这几年,从 WinForms 连 PLC,到 ASP.NET Core 写 Web API,再到用各种 NuGet 包拼业务,我基本把 C# 开源生态里「能摔的跤」摔了一遍。今天不写「XX 库使用教程」,也不搞「十大神级开源库」那种公众号标题党。专门来吐槽——开源框架不是不能用,是它死的时候往往穿着活人的衣服。最经典的死法。GitHub 仓库最后一次提交三个月前,CI 是绿的(因为是机器人跑的),NuGet 下载量几百万。你以为它还活着,结果 Issue 提了没人理,PR 躺半年。新项目照着旧
2026-10-15 15:30:00
157
原创 c#联合类型,解决响应接口返回结果有多重变体
不同版本的 ASP.NET Core 和 OpenAPI 工具链,对多态类型的 schema 生成能力参差不齐,能不能产出带 discriminator mapping 的 oneOf 结构,别想当然,打开生成的文档亲自核对。说句公道话,联合类型不是银弹。一份合格的联合类型契约,至少要说清楚:有哪几种 JSON 形态、kind 的取值、每种结果对应的状态码,以及客户端遇到未知 kind 时该怎么办。只是告诉序列化器“有哪些类型”,JSON 里的值对不对、金额是不是负数,它一概不管,业务校验一行都不能省。
2026-10-10 15:37:11
186
原创 轻量级的web api框架
FastEndpoints 是构建在 ASP.NET Core 管道之上的轻量 Web API 框架,核心是(Request–Endpoint–Response):一个 HTTP 接口 = 一个 Endpoint 类,自带 Request/Response DTO、FluentValidation 验证、依赖注入和 Swagger 支持。它定位介于传统 MVC Controller 和 Minimal API 之间——比 Controller 轻、比 Minimal API 好维护。
2026-09-29 17:35:48
35
原创 .net core服务限流解决方案
这个区别决定了它们对"突发"的态度完全不同。固定窗口计数在窗口切换的瞬间会放行(窗口末尾 100 次 + 窗口开头 100 次 = 200 次挤在一瞬间),而你的服务只扛得住 100 —— 这就是它最致命的问题。
2026-09-28 09:22:37
46
原创 探讨c# vue实现前端路由和界面按钮权限做表配置
—通常叫。你要的"配置界面"在成熟框架里就是「菜单管理 + 角色管理」两个页面,菜单、路由、按钮全在数据库里配,前端不再写死路由表。
2026-09-22 11:52:17
120
原创 .NET 使用 Refit 构建声明式 HTTP 客户端:从入门到生产实践
Refit 的价值不在"少写几行代码",而在于把 API 契约变成了一等公民——它集中、可见、可编译期校验、可测试。接口即契约、即文档。 新增一个端点就是加一行方法。Refit 只管生成调用,连接生命周期交给 HttpClientFactory。预期内的失败用分支处理,异常只留给真正的意外。从"把现有 HttpClient 代码里最啰嗦的那几个接口改成 Refit 接口"开始试,你会很快体会到差别。码字不易,如果您觉得我的文章对您有帮助的话,烦请您打赏一元,我买瓶水喝;
2026-09-19 14:02:27
465
原创 C# 界面卡顿:从定位到根治
界面卡顿这事,定位比优化重要。绝大多数卡顿不需要高深算法——要么是重活干错了线程,要么是死锁,要么是刷新太频繁。先用看门狗把"卡多久"量化出来,再用探查器抓到那一条阻塞栈,问题基本就解决了一半。UI 线程只做两件事:更新控件、分发命令。await 一路到底,绝不 .Result。后台多快都行,UI 定频出帧。码子不易,如果您觉得我的文章对您有帮助的话,烦请您打赏一元,我买瓶水喝;
2026-09-18 18:08:52
486
原创 c#上位机开发如何使代码更健壮
要让 C# 上位机代码更健壮,不能只靠写几个 try-catch。异常有兜底、资源有释放、通信有超时重试;线程安全用合理的数据结构,UI 不卡不假死;状态用状态机管理,配置不写死;日志全量记录,看门狗自动恢复;解析协议先校验后解码,模块解耦依赖注入;再加上单元测试和规范部署。即使出现了 bug,系统也能自动恢复、留下线索、让操作者知道发生了什么,在最短时间内重新投入运行。码子不易,如果您觉得我的文章对您有帮助的话,烦请您打赏一元,我买瓶水喝;
2026-09-18 14:35:40
308
原创 KingSCADA 学习总览
这是一份系统的 KingSCADA 学习大纲,从入门到工程落地,分七个阶段。每个阶段包含目标、核心内容、练习任务,并在关键处标注版本差异。
2026-09-17 15:54:59
102
原创 kingscada是什么 能做什么
KINGSCADA 通常指,一套国产中高端 SCADA(数据采集与监视控制)组态平台,用来把现场 PLC/仪表/RTU 的数据采上来、做画面监控、报警、历史存储和远程调度。它定位高于亚控自家的“组态王/KingView”,更偏厂级、集团级、跨厂区和大点位项目。
2026-09-16 14:06:09
220
原创 手写观察者模式:C#上位机状态通知的优雅解法
定义:定义对象间一种一对多的依赖关系,当一个对象状态改变时,所有依赖它的对象都会收到通知并自动更新。两个核心角色:角色别名职责Subject主题 / 被观察者 / 发布者维护观察者列表,提供注册/注销,状态变化时通知Observer观察者 / 订阅者定义接收通知的接口(Update 方法)注册(Attach)→ 变化 → 通知(Notify)。观察者模式的本质,是把"谁关心我变了"这个问题,从「编译期硬编码」变成「运行期动态注册」。简单场景用event(语言级、够用);
2026-09-11 16:45:42
521
原创 C#上位机必备:生产者-消费者模式与消息队列,从入门到实战
想象一个场景:你在食堂打饭。•厨师(生产者)不停炒菜,把菜放到窗口•窗口(消息队列)放着做好的菜,作为缓冲•你(消费者)端起盘子打菜吃饭厨师不用等你吃完才炒下一盘,你也不用等厨师炒完才开始吃。各干各的,互不等待——这就是生产者-消费者模式的核心思想。放到上位机里就是:•生产者:串口 / TCP 采集线程,从 PLC、传感器读数据•消息队列:内存中的缓冲区,存原始数据帧•消费者:解析、存储、UI 显示线程,按自己的节奏处理数据为什么一定要用消息队列?四个理由:1.解耦。
2026-09-09 09:34:37
442
原创 ASP.NET Core 8 Minimal API 认证示例,核心用 BCrypt.Net 做密码哈希 + JWT 做身份认证。
return Results.Ok(new { username = name, message = "已通过认证,这是你的个人数据" });Console.WriteLine($"但都能校验通过: {BCrypt.Verify(password, hash2)}");return Results.BadRequest(new { message = "用户名和密码不能为空" });// 内存用户仓储(演示用,生产请换 EF Core + 数据库)// ===== 4. 受保护接口(需 JWT)=====
2026-09-08 09:24:28
213
原创 BCrypt.Net是做什么的
BCrypt.Net 是 .NET 里用来“安全哈希用户密码”的库——它把 bcrypt 算法封装成简单 API,自动加盐、支持可调慢度,让开发者无需自己处理加密细节,就能合规、抗暴破地存储密码。
2026-09-08 09:15:05
21
原创 推荐一款.net 日志格式化插件RuoVea.ExLog
/ 按类型获取日志操作对象_log.Info($"处理付款: {amount:C}");_log.Debug($"付款明细: ...");// 按字符串名称获取日志操作对象orderLog.Warn("订单模块: 检测到重复提交");orderLog.Error("订单模块: 回调验签失败");通过GetLogger获取的Log对象仍然是log4netILog的轻量包装,不持有线程池调度逻辑(即同步写入 log4net,而非Task.Run调度)。如果追求异步写入,请使用。
2026-09-07 08:54:13
216
原创 C# 调用 .NET(Core)Web 服务混用:常见问题与 .NET 6~10 正确写法
C# 混合调用 .NET(Core)Web 服务的核心规则是“进程边界隔离 + 契约层下沉到 netstandard2.0”:.NET Framework 端通过HttpClient调用运行在 net6~net10 上的 ASP.NET Core 服务;Web 服务自 .NET 6 起统一使用 Minimal Hosting(app.Run()),.NET 8 引入 Keyed DI 与 TimeProvider、.NET 9 加入与 LINQ 新算子、.NET 10 正式支持 C# 14field。
2026-09-05 10:31:44
626
原创 推荐一款.net 配置类库RuoVea.ExConfig
Configset;set;set;set;set;set;set;set;set;set;
2026-09-04 10:02:46
84
原创 推荐一款.net SqlSugar ORM 一站式扩展库 RuoVea.ExSugar
集成 DI 注册、DbContext/Repository 模式、审计字段自动填充、全局查询过滤器、工作单元事务、差异日志记录、SM2 连接字符串加密,覆盖从 DataExecuting AOP 到分页查询的完整数据访问层抽象。为 .NET 开发者提供 SqlSugar ORM 的开箱即用增强封装,通过 DI 容器统一管理数据库连接、审计字段、查询过滤器和事务边界。建议通过环境变量、密钥管理服务(如 Azure Key Vault)或加密的配置文件注入。重载以启用完整功能(差异日志、过滤器等)。
2026-09-03 14:28:22
417
原创 推荐一款.net工具RuoVea.ExUtil
/ 当前 UTC+8 区 Unix 时间戳(秒)// Unix 时间戳 → DateTime// DateTime → Unix 时间戳(秒)⚠️已知缺陷硬编码,仅适用于 UTC+8(中国时区)场景,非东八区环境需自行处理。文件: Validate/Attributes/EmailAttribute.cs构造参数: msg(自定义错误消息)实际: 构造函数接收 msg 参数后未使用,始终返回硬编码的英文错误消息。
2026-09-03 08:58:43
354
原创 C# 使用 FreeSql 深度指南:重点拆解内核逻辑
FreeSql 是国产 .NET ORM(作者 dotnetcore/2881099),定位与 EF Core 不同——。本文不堆砌 CRUD 示例,重点放在。
2026-09-02 09:46:08
352
原创 AI现在能写大部分场景的代码,程序员应如何做才能保证自己不被淘汰
AI 时代的核心竞争力,不是"写代码更快",而是"知道该让 AI 写什么、写完怎么验证、上线后谁来负责"。把编程重新定义为四层:层级内容AI 能否做你的价值L1 实现写函数、调 API、改样式✅ 大部分审查、修改L2 设计架构、模块划分、接口设计🔶 辅助主导L3 定义需求澄清、业务建模、取舍决策❌ 不能核心L4 负责上线、运维、兜底、承担后果❌ 不能不可替代AI 擅长 L1,你要占领 L2/L3/L4。AI 替代的是"代码打字员",不是"软件工程师"。
2026-09-01 15:26:18
355
原创 EF Core 性能调优深度实战:从慢查询到毫秒级响应
写 LINQ 时,脑子里想的是 SQL。N+1 是头号敌人 → Include 或 Select 投影只读场景必加 AsNoTracking → 内存减半、速度翻倍批量操作绕过 ChangeTracker → ExecuteUpdate/Delete 或 Bulk 库Include 过深用 AsSplitQuery → 避免笛卡尔积分页用键集不用 Skip → 索引友好复杂查询直接写 SQL → FromSqlRaw 不丢人EF Core 不是性能瓶颈,
2026-08-31 10:37:10
319
原创 拆解ASP.NET Core 底层源码!从零手写
你有没有过这种感受:用了好几年ASP.NET Core,CRUD 写得飞起,但一碰到底层问题就懵?中间件执行顺序到底是怎么控制的?依赖注入容器内部是怎么创建对象的?路由匹配为什么有时候不按预期工作?为什么同样的代码,换个环境性能差十倍?很多开发者停留在 "会用" 层面,遇到复杂场景就束手无策。真正的差距,不在于你用了多少中间件,而在于你是否理解框架底层的设计思想。
2026-08-27 11:03:55
544
原创 DOTNET 鉴权系列- JWT 会话撤销与主动登出
我第一次知道这个方法,是在极客时间上听一个老师讲的,瞬间豁然开朗,因为颁发和校验token时都是使用秘钥来校验的,换密钥能让所有已签发的 Token 瞬间全部失效,但它属于终极大招,太猛了不分敌我,全部干掉的,实际中应该没人这么做吧,除非密钥泄露,一些重大安全事件、需要全站强制登出才会这么干。如果使用标准流程下实现,哪怕主动退出,强制踢出,或者顶掉了登录,我们再次拿着旧的Token去请求接口,是依然能通过鉴权的,从真实业务和系统安全上来说,我都主动退出了,拿去请求接口怎么还可以,服务端不是应该拒绝的吗?
2026-08-27 09:34:41
128
原创 C# GC 调优实战指南:从原理定位到性能优化
监控指标 → 定位瓶颈 → 代码优化 → 配置调优 → 验证效果↑ │优先级:代码优化 > GC 配置 > 手动干预减少分配比优化回收更有效池化(ArrayPool/ObjectPool)是性价比最高的优化手段不要过早优化,先用数据说话GC 调优不是一次性工作,而是持续观测 → 迭代优化的过程。掌握PerfView三件套,你就能定位 90% 的 GC 问题。如果您觉得我的文章对您有帮助的话,请您打赏一元,我买瓶水喝;您的支持将是我继续分享的无线动力!
2026-08-26 09:09:27
305
原创 一个项目没有源码,如何进行升级改造和维护
仅针对C/C++原生程序,汇编级别修改。工具:IDA Pro、x64dbg、OllyDbg、Cheat Engine;只能做简单修改:弹窗去除、简单逻辑跳转、字符串修改;复杂业务逻辑无法维护,极易引发程序崩溃;只建议应急临时修复,绝不用于正式生产环境长期改造。
2026-08-24 15:28:53
388
.net core服务限流样例源码
2026-09-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅