13. ThreadLocal 与 AsyncLocal:线程本地存储 本章 GitHub 仓库:csharp-concurrency-cookbook ⭐ 欢迎 Star 和 Fork!所有代码示例都可以在仓库中找到并运行。 本章导读 本文目标:搞清楚 ThreadLocal<T> 和 ...
先补充一下前一篇中的 TPH 策略的内容——非完整性类型鉴别器。这个东西官方文档写了等于没写,许多大伙伴可能不知道是啥玩意儿。不用慌,老周给你整个示例,你就懂了。 这种特例多见于先有数据库(DB First)的方案。好,那咱们就先建库,脚本如下,很简单。 use master; go -- 创建数据 ...
在我们常见的软件中,菜单栏,工具栏,状态栏,以及右键弹出的上下文菜单,基本属于是一个软件的标配,如WPS,Microsoft Office组件,IE浏览器,Visual Studio等,使用这些组件布局系统,不仅可以提高使用便捷性,合理利用页面空间,由于符合Windows用户操作习惯,还能让用户快速... ...
12. 并发集合与线程安全类型 本章 GitHub 仓库:csharp-concurrency-cookbook ⭐ 欢迎 Star 和 Fork!所有代码示例都可以在仓库中找到并运行。 本章导读 本文目标:搞清楚 System.Collections.Concurrent 命名空间里那 ...
前面四篇我们讲了快速搭建、目录结构、CRUD、关联表处理。今天说后台系统最核心的东西——权限控制。 一个后台系统,没有权限控制,就像银行没有保险柜。 一、EasyAdminBlazor 的权限模型 内置的是标准的 RBAC(Role-Based Access Control) 模型,也就是"用户 → ...
同步调用是微服务耦合的根源。消息队列解耦了服务,也救了你的响应时间。用MonkeyCode,从选型到实现一把梭。 为什么需要消息队列? 一个典型的电商下单流程,同步调用长这样: # 同步调用:创建订单要等所有下游返回 @app.post("/orders") async def create_ord ...
前面三篇我们讲了: 第一篇:3分钟搭一个Blazor后台 第二篇:项目目录结构详解 第三篇:几十行代码搞定CRUD 今天来点实战,用一个真实的新闻管理模块做案例,把专栏管理和文章管理完整走一遍。看看关联表、枚举、富文本编辑器这些实际项目中一定会遇到的需求,在EasyAdminBlazor里怎么处理。 ...
DbCommand介绍 DbCommand对象用于向数据存储区发送一条结构化查询语言(SQL)命令。DbCommand对象 不仅可以执行查询,插入,更新,删除的数据操作(DML)指令,还可以执行数据定义(DDL)指令 创建数据库,数据表,更改模式信息等。 例如查询数据库中表基础框架 DbComman ...
前面两篇我们讲了怎么3分钟搭一个Blazor后台,以及项目的目录结构。今天讲点更爽的——怎么在写少量代码或不写代码的情况下,把一个新模块的后台页面搞出来。 一、传统方式:写一个模块要多久? 假设你要加一个「产品管理」模块,传统开发流程: 建数据库表(写SQL) 写实体类(映射字段) 写Reposit ...
当我告诉别人我正在用 C# 构建一个 **ACID 数据库引擎**时,第一反应总是如出一辙:“那 GC(垃圾回收)停顿怎么办?”
这是一个合情合理的问题。几乎没有人会在 .NET 中构建高性能数据库引擎。人们普遍认为,这类软件必须使用 C、C++ 或 Rust 编写——托管语言基本上被排除在“微秒... ...
ADO.NET连接类概述ADO.NET库包含可用于数据存储区和客户应用程序之间传输数据的类。 连接类 负责在客户端程序的非连接数据类与数据存储区之间传输数据的类成为连接类。ado.net提供了下面几种类。 OLEDB 用于access,excel,文本等ODBC 用于多种数据源提供的多种数据访问功能 ...
11. 锁机制完全指南:从 lock 到异步锁 本章 GitHub 仓库:csharp-concurrency-cookbook ⭐ 欢迎 Star 和 Fork!所有代码示例都可以在仓库中找到并运行。 本章导读 本文目标:彻底搞清楚 C# 里所有常用锁的底层原理、适用场景和正确用法,从 ...
MonkeyCode vs Cursor vs Copilot:2026年AI编程工具终局之战 AI编程工具已经卷到下半场了。 2024年,大家还在讨论"AI能不能写代码";2026年,问题变成了"AI编程工具哪家强"。 我同时用了三个月MonkeyCode、Cursor和Copilot,以下是我的 ...
/// <summary> /// PaddleOCRSharp -Version 4.5.0.1 /// </summary> public class NewController : ApiController { private static PaddleOCREngine _ocrEngin ...
在批量生成报告、动态拼接演示文稿或自动化处理 PPT 模板时,通过代码动态增删幻灯片几乎是绕不开的需求。本文将以免费库 Free Spire.Presentation for .NET 为例,提供一个可直接落地的技术方案。 技术方案定位:无 Microsoft Office 依赖,纯托管代码实现,可 ...
上篇文章我简单介绍了如何使用EasyAdminBlazor创建一个admin blazor项目。今天拿一个真实项目跑起来的文件夹截图,把每个目录的用途说清楚。 这是用dotnet new easyadmin -n MyProject创建后的完整结构: EasyAdminBlazorDemo/ ├── ...
还在为接外包项目时重复造轮子而烦恼?一个命令,一套完整的企业级后台管理系统直接到手。 一个命令,项目启动 打开终端,依次执行以下命令: # 安装模板包 dotnet new install EasyAdminBlazor.Templates # 使用模板创建项目 dotnet new easyadm ...
10. Parallel 与 PLINQ:榨干多核 CPU 本章 GitHub 仓库:csharp-concurrency-cookbook ⭐ 欢迎 Star 和 Fork!所有代码示例都可以在仓库中找到并运行。 本章导读 本文目标:彻底搞懂 Parallel.For/ForEach ...
工业上位机、MES客户端、设备调试,刚入行选什么框架?老项目维护用不用换?新项目到底上WinForm、WPF、Avalonia还是QT? 今天把目前工业现场最常用的4个上位机框架:WinForm、WPF、Avalonia、QT,从底层特点、优缺点、适合人群、适配项目,总体梳理下。文章中难免有所欠缺,... ...
在当今互联网时代,大家都提倡无纸化绿色办公,如扫码,在线,小程序等,既提高了效率,又节约纸张,绿色环保,但在某些特定的场景与人群(如超市收银),打印票据或收据是必不可少。今天我们以一些简单的小例子,简述基于.NET的Windows窗体编程中打印的常见用法,仅供学习分享使用,如有不足之处,还请指正。 ...