- 博客(139)
- 收藏
- 关注
原创 从零实现 C# 插件系统:轻松扩展应用功能
通过本文,你可以从零实现一个C# 插件系统统一接口契约保证插件一致性插件上下文便于数据传递反射动态加载插件 DLL插件管理器统一管理插件生命周期这种架构能够让你的应用支持功能动态扩展、第三方插件接入,并保持核心代码简洁可靠。如果你需要,我可以帮你写一个进阶版文章,实现插件热加载和卸载,让插件系统在运行时可以随时添加或移除插件,而无需重启应用。你希望我写这个进阶版吗?
2026-01-17 19:36:08
317
原创 Microsoft Agent Framework:三步为智能体集成RAG,轻松对接企业知识库
使用Microsoft Agent Framework的集成RAG功能,本质上是“为智能体配备智能词典”。实施成本低:无需构建复杂的RAG架构,通过3行核心配置+1个检索函数即可快速落地。方案灵活性高:检索函数可对接任意知识库,知识更新只需同步知识库内容,无需修改智能体逻辑。用户体验好:用户无感知检索过程,回答有据可查,避免幻觉问题,多轮对话自然连贯。
2025-12-29 20:25:36
866
原创 构建智能代理的核心工具:Microsoft Agent Framework 介绍
语义内核和AutoGen开创了 AI 代理和多代理业务流程的概念。代理框架是同一团队创建的直接后续任务。它将 AutoGen 的简单抽象与语义内核的企业级功能(例如基于线程的状态管理、类型安全、筛选器、遥测以及广泛的模型和嵌入支持)相结合,用于单代理模式和多代理模式。除了合并这两者之外,Agent Framework 还引入了工作流,使开发人员能够显式控制多代理执行路径,以及一个可靠的状态管理系统,用于长时间运行和人机循环方案。简言之,Agent Framework 是下一代语义内核和 AutoGen。
2025-12-26 14:34:53
857
原创 构建智能代理的利器:深入解析 Microsoft Agent Framework
Microsoft Agent Framework 是微软提供的一套用于构建和管理智能代理的开发工具。智能代理是能够模拟人类行为、与用户进行交互、并根据环境做出智能决策的程序。Microsoft Agent Framework 集成了 AI、自然语言处理(NLP)、机器学习等技术,支持多种任务和应用场景的构建。主要特点易用性:简化了智能代理的开发流程,减少了开发者的学习曲线。扩展性:支持与第三方 API 和外部系统的集成,能够处理复杂的业务逻辑。多样化的任务支持。
2025-12-26 14:24:58
1008
原创 Blob对象:前端二进制数据处理的专业指南
Blob(Binary Large Object,二进制大对象)是JavaScript中用于表示不可变原始数据的类文件对象,是现代Web开发中处理二进制数据的核心工具。Blob对象不关心数据的具体格式,可以存储任意类型的二进制数据,包括文本、图片、音频、视频等。Blob对象作为前端处理二进制数据的核心工具,在现代Web开发中发挥着重要作用。通过掌握Blob的创建、转换、应用场景以及性能优化技巧,开发者可以构建出高效、稳定、用户体验良好的文件处理功能。
2025-12-19 11:30:48
737
转载 使用 .NET OpenAI SDK 流式获取 DeepSeek 思考过程
在 DeepSeek-R1 或 Qwen-2.5-Max 等推理模型中,模型会在生成最终答案之前输出一段“思考过程”(Reasoning Content)。目前的 .NET OpenAI SDK (OpenAI包) 尚未完全原生支持将字段映射到强类型对象中。本文将演示如何通过和SseParser手动解析 Server-Sent Events (SSE) 数据流,从而实时获取并展示模型的思考过程。虽然 SDK 暂时未跟上模型 API 的更新速度,但通过 .NET 强大的底层网络处理能力(如。
2025-12-11 18:12:01
76
原创 延迟加载(Lazy Loading)详解及在 C# 中的应用
如果不使用Lazy<T>,也可以自定义延迟加载逻辑,通常结合双重检查锁定实现线程安全。if (!if (!Console.WriteLine($"两次获取的实例是否相同:{ReferenceEquals(resource1, resource2)}");延迟加载是一种强大的优化技术,通过按需创建对象可以显著提升应用程序性能与响应速度。C# 中提供了Lazy<T>以及自定义延迟加载方式,开发者可以根据实际场景选择合适的实现策略,从而构建高效、资源利用率高的应用程序。
2025-12-11 18:05:37
481
原创 使用 C# 和 Semantic Kernel 构建 PDF 向量搜索系统:从文本提取到语义搜索
通过这篇文章,你学会了如何使用C#和从 PDF 提取文本。对文本进行切块。使用 Ollama 模型生成文本向量。使用 SQLite 向量存储管理向量数据。基于向量实现语义搜索。这个系统可扩展性强,例如:支持 DOCX、TXT 等多种文件。可以将向量存储迁移到 Postgres、FAISS 或 Milvus。可结合大语言模型回答问题,实现 PDF 问答机器人。
2025-12-11 11:09:56
509
原创 SQL Server 存储过程:从入门到精通
存储过程是一组预编译的 SQL 语句集合,存储在数据库中,可以通过调用执行。简单来说,它就像数据库中的“小程序”,可以重复使用。优点:提高效率:SQL 语句预编译,执行快。封装逻辑:复杂逻辑只需一次编写。安全性:可以控制访问权限,避免直接操作表。易维护:修改存储过程即可更新业务逻辑。从基础到高级,存储过程是 SQL Server 中提高效率、封装逻辑、保证安全性的重要工具。掌握存储过程不仅可以让你写出高效、可维护的 SQL,还能应对复杂的业务需求。入门:了解基本语法和调用方法进阶。
2025-12-09 15:46:05
512
原创 SQL Server 触发器详解:原理、类型、示例与最佳实践
通过部门和员工表的示例可以看出,触发器在 SQL Server 中可以实现:自动记录变更日志自动初始化字段值限制关键数据操作在实际开发中,触发器是保证数据一致性和业务规则的重要工具,但要注意性能、事务和逻辑复杂度。结合审计表和虚拟表使用,触发器可以成为数据库开发的得力助手。
2025-11-24 11:01:09
450
原创 五分钟读懂神经网络算法(含Python实例讲解)
在人工智能(AI)领域,神经网络(Neural Network)是一种能自动从数据中学习规律的算法。它模仿人脑中神经元的连接方式,通过一层层计算,把输入信息(如图片、声音、文本)转化为输出结果(如分类或预测)。简单来说,它的目标就是:“给我数据,我自己总结规律,然后帮你预测。nn.Linear(3, 4), # 输入层3个 → 隐藏层4个神经元nn.ReLU(), # 激活函数ReLUnn.Linear(4, 1), # 隐藏层 → 输出层nn.Sigmoid() # 输出0~1概率🔍。
2025-11-11 18:47:29
763
原创 SQL Server 视图详解:概念、创建与实战应用
视图(View)是 SQL Server 中的一种虚拟表,其内容由查询定义。与包含数据的物理表不同,视图只包含一系列带有名称的列和行数据,这些数据在引用视图时动态生成。-- 查看视图定义-- 查看视图信息SELECT简化复杂性:隐藏复杂的查询逻辑和多表连接增强安全性:通过视图控制数据访问权限提高重用性:封装常用查询逻辑供多个应用使用维护数据独立性:底层表结构变化不影响应用程序。
2025-11-05 11:21:53
558
原创 使用 Microsoft Semantic Kernel 实现图像生成
接下来,我们定义一个异步函数,用于接收文本描述并生成图像。生成图像后,我们还需要下载并保存图像文件。var prompt = "背景是在杭州西湖,熊猫骑着马在马背上抽雪茄";// 生成图像// 下载图像// 生成随机文件名Console.WriteLine("图片下载成功,保存在:" + localPath);:此方法接收文本描述并调用 OpenAI 图像生成 API 创建图像。:此方法将生成的图像下载到本地磁盘,并保存为.jpg文件。为了与智普AI。
2025-10-05 10:55:31
412
原创 NLog 全面指南:从入门到高级实践
多种日志级别NLog 支持六种日志级别:Trace、Debug、Info、Warn、Error、Fatal。开发者可根据严重程度选择合适的级别输出日志。多样化日志目标(Targets)日志不仅可以写入文件,还可以输出到控制台、数据库、邮件、网络服务等多种目标。支持同时输出到多个目标。灵活的日志规则(Rules)可以定义不同级别的日志输出到不同目标,也可以设置日志过滤条件。高级功能支持异步日志、日志滚动、上下文信息、动态配置、条件输出等,满足企业级应用对性能和可维护性的需求。
2025-08-29 08:36:10
1433
原创 TypeScript 类型系统入门:从概念到实战
类型系统是用来定义和检查数据类型的工具。它帮助程序员确保程序中处理的数据符合预期的结构和操作规则,从而避免出现因数据类型不匹配而导致的运行时错误。在静态类型语言中,类型系统在编译阶段就会进行类型检查,而在动态类型语言中,类型检查通常会推迟到运行时。在 TypeScript 中,null和undefined是特殊的类型。通过标注null或undefined,我们可以确保变量只接受这些特定的值。
2025-08-23 14:37:53
773
原创 如何使用和优化SQL Server存储过程:全面指南
存储过程是一组经过预编译的SQL语句,它们被存储在数据库中,用户可以通过调用存储过程来执行相关的操作。与直接执行SQL查询不同,存储过程能够封装业务逻辑,避免重复编写相同的查询或更新操作。SQL Server存储过程是开发中非常强大的工具,它不仅可以封装复杂的业务逻辑,还能提高数据库操作的性能和安全性。通过合理使用存储过程,可以提高应用程序的维护性、可扩展性和效率。掌握存储过程的使用和优化技巧,对于任何SQL Server开发人员都是至关重要的。
2025-08-23 11:32:12
836
原创 使用 SemanticKernel 连接本地大模型 Ollama
是微软提供的一个框架,旨在使开发者能够快速集成不同的 AI 模型(如 GPT 系列、大语言模型等),并且提供丰富的插件机制,便于扩展功能。Ollama是一个本地运行的大语言模型,能够执行 NLP 任务,支持通过 API 进行交互。通过本教程,你已经学习了如何使用和来连接本地的 Ollama 大模型并实现一个简单的 AI 问答系统。整个过程涵盖了:创建和配置 .NET 项目。安装所需的 NuGet 包。配置并连接本地 Ollama 模型。编写代码与 AI 模型进行交互,并实现聊天功能。
2025-08-19 15:04:55
858
原创 使用 MailKit 发送邮件并实现验证码功能
通过上述步骤,我们成功实现了使用MailKit发送包含验证码的邮件功能。此方法不仅适用于 QQ 邮箱,还可以根据不同的邮件服务商调整 SMTP 服务器的地址和端口,从而实现与其他邮件服务的兼容。通过这种方式,您可以轻松地为用户提供验证码功能,提升系统的安全性和用户体验。
2025-08-05 10:49:52
604
原创 C# 实现:动态规划解决 0/1 背包问题
我们可以通过一个二维数组dp[i][j]i表示前i个物品(从第 1 个物品到第i个物品)。j表示背包的容量。dp[i][j]表示在前i个物品中,背包容量为j时,能够获得的最大价值。0/1 背包问题是一个经典的动态规划问题,通过合理的状态定义和状态转移方程,我们可以有效地解决这个问题。尽管其时间复杂度是O(n * C),但对于大多数实际问题,动态规划的解决方案依然能够高效地提供最优解。这种方法不仅限于背包问题,还可以广泛应用于其他类型的优化问题,如资源分配、任务调度等。
2025-07-21 22:46:45
1195
原创 在 C# 中调用 Python 脚本:实现跨语言功能集成
随着现代应用程序的复杂性和多样性不断增加,跨语言集成已成为一种常见的开发实践。C# 和 Python 是两种广泛使用的编程语言,C# 主要用于开发桌面应用程序、Web 服务和企业级系统,而 Python 因其简洁易用和强大的第三方库在数据分析、机器学习、自动化等领域占据了重要地位。在许多情况下,我们需要将这两种语言结合起来使用,以便在 C# 应用中利用 Python 的强大功能。本文将详细介绍如何在 C# 中调用 Python 脚本,并通过传递参数实现功能的跨语言集成。
2025-07-13 18:22:38
1163
原创 LazyCache 在 .NET Core 中的使用与优化指南
摘要:LazyCache是.NET Core中轻量级的内存缓存库,通过延迟加载机制优化性能。文章介绍了其核心概念、安装配置方法及基本使用场景,包括缓存数据库查询、设置过期时间和手动移除缓存等操作。还探讨了批量缓存、结合MemoryCache等高级用法,并分析了LazyCache简洁易用、延迟加载等优势。该库特别适用于计算密集型任务,能有效减少重复计算,提升Web应用性能。
2025-07-09 10:54:42
907
原创 NETCore.Encrypt:一个功能强大的.NET加密解密工具库
NETCore.Encrypt是一个功能强大的.NET加密库,支持AES、DES、RSA、MD5、SHA等多种加密算法。该库提供EncryptProvider类简化加密操作,兼容.NET Framework、Core和Standard环境。通过NuGet即可安装,使用简单,如AES加密只需调用AESEncrypt方法。此外还提供字符串扩展方法,如"string".MD5()直接生成哈希值。该库由开发者myloveCc维护,开源在GitHub,适合需要数据加密的.NET开发者使用。
2025-07-03 22:45:49
1007
原创 使用 Microsoft.SemanticKernel 与国产大模型 API 集成实现对话系统
本文介绍了如何使用Microsoft.SemanticKernel库集成国产大模型ZhipuAI,构建对话系统。首先需安装SemanticKernel库并获取API密钥,然后通过内核配置和自定义HTTP处理器将请求路由至ZhipuAPI。核心代码展示了如何实现用户输入与AI回复的交互逻辑,包括对话历史管理。该方法支持灵活切换不同AI后端,为开发本地化AI应用提供了便利。
2025-07-02 13:58:52
659
原创 SoapCore 全面介绍:在 .NET Core 中实现 SOAP 服务的现代解决方案
在现代微服务和 REST API 成为主流的今天,SOAP(Simple Object Access Protocol)看似已经被边缘化,但在许多企业和政务系统中,SOAP 仍然是重要的通信协议。特别是在金融、保险、医疗、政府等行业,很多老系统和第三方接口仍然依赖 SOAP 协议。然而,自从 .NET Core 推出后,原本用于构建 SOAP 服务的 WCF(Windows Communication Foundation)在跨平台的 .NET Core 中就不再被支持。
2025-07-01 21:43:00
1426
原创 深入探索 Pdfium.Net:在 .NET 中处理和渲染 PDF 文件
本文介绍了Pdfium.Net这一基于Google PDFium引擎的.NET封装库,详解了其在PDF处理中的核心功能与应用。内容包括安装方法、基础操作(如渲染PDF页面为图像、获取页数),以及高级功能(页面缩放旋转、文本提取),并演示了在Windows Forms和WPF中的整合应用。Pdfium.Net以其高效渲染和简洁API为.NET开发者提供了强大的PDF处理解决方案,适用于文档展示、内容提取等多种场景,是提升PDF处理效率的理想工具。
2025-06-27 08:27:36
1056
原创 未能加载文件或程序集”ManagedZLib.DLL”或它的某一个依赖项,找不到指定的模块
摘要:解决应用程序兼容性问题的方法:1)启用32位应用程序池:在IIS中找到对应网站的应用池,通过"高级设置"将"启用32位应用程序"设为true;2)若问题仍未解决,可能是缺少msvcr71.dll文件,需下载该文件并放入系统目录:64位系统放在sysWOW64,32位系统放在对应系统目录。两个步骤结合使用可解决常见的32位程序兼容性问题。
2025-06-26 11:14:07
286
原创 EventSourcing.NetCore:基于事件溯源模式的 .NET Core 库
事件溯源是一种将系统状态转化为一系列事件的架构模式。在传统的数据库设计中,系统状态通常是通过存储最新的值来管理的;而在事件溯源中,所有的变更都是通过“事件”来表示,并以事件流的形式存储。这些事件可以用来重建任何时刻的系统状态。简言之,事件溯源通过捕捉状态变化的所有事件,而不是直接存储当前的状态,从而提供了更好的数据一致性、可追溯性和灵活性。事件的存储可以是持久化到数据库、消息队列,或者是其他的持久化机制。
2025-06-15 14:48:32
799
原创 CZGL.SystemInfo:跨平台的系统信息获取库
CZGL.SystemInfo是一个跨平台的系统信息获取开源库,支持Windows和Linux系统。该库通过.NET Runtime API或计算方式获取硬件信息、资源数据和进程监控,具有高性能计算与缓存机制。特点包括无额外依赖、轻量级设计,并提供dotnet命令行工具方便使用。功能涵盖CPU/内存/磁盘信息采集、实时资源监控等,适用于系统监控、性能分析、自动化部署等场景。项目采用Windows平台的PerformanceCounter和Linux的/proc文件系统实现跨平台兼容,可通过NuGet或源码安
2025-06-08 16:35:05
802
原创 HarmonyOS 开发基本用法详细讲解
摘要:本文系统介绍了HarmonyOS开发的基础流程,涵盖环境搭建、项目结构、核心开发概念和分布式能力等关键内容。首先讲解使用DevEco Studio搭建开发环境,创建项目的基本步骤;其次分析典型项目结构,解释Ability组件和UI开发方法;重点阐述分布式任务调度、数据管理和设备发现等跨设备协同功能;最后说明应用打包、调试测试及发布流程,为开发者提供HarmonyOS应用开发的完整入门指导。
2025-06-01 02:00:00
1379
原创 SQL Server 事务详解:概念、特性、隔离级别与实践
摘要:数据库事务是具有ACID特性的逻辑工作单元,包含原子性(全执行或全回滚)、一致性(状态转换一致)、隔离性(并发互不干扰)和持久性(提交即永久)。SQL Server支持显式、隐式和自动提交三种事务模式,提供BEGIN/COMMIT/ROLLBACK等控制语句,以及READ UNCOMMITTED到SERIALIZABLE等多级隔离。事务设计应保持简短,合理选择隔离级别,结合TRY-CATCH处理错误,避免长事务和死锁。优化事务性能需减少锁争用、优化查询、使用批量操作等,以平衡数据一致性与系统效率。
2025-05-31 21:41:46
1604
1
原创 深入解析 Dotnet-Boxed.Framework:提升 .NET 开发效率的利器
Dotnet-Boxed.Framework是一个开箱即用的.NET开发框架,通过模块化设计简化常见开发任务。其核心模块包括基础设施配置(Boxed.Infrastructure)、API开发(Boxed.Api)、数据访问(Boxed.Data)、身份认证(Boxed.Identity)、消息队列(Boxed.Messaging)和缓存管理(Boxed.Cache)。该框架优势在于提高开发效率、简化代码结构、增强可维护性和扩展性。开发者可通过NuGet安装所需模块,在Startup中配置后即可使用。框架特
2025-05-31 11:46:54
1455
2
原创 深入了解 C# 异步编程库 AsyncEx
《AsyncEx:提升C#异步编程效率的强大工具》摘要:AsyncEx是由Stephen Cleary开发的开源C#库,专为解决复杂异步编程场景而设计。该库扩展了C#原生async/await模型,提供异步锁(AsyncLock)、异步信号量(AsyncSemaphore)、异步队列(AsyncQueue)等核心功能,有效应对任务并发控制、资源同步等常见挑战。通过避免线程阻塞、防止死锁、简化异步事件处理,AsyncEx显著提升代码清晰度与可维护性,同时增强系统并发性能。其简洁API设计便于集成,已成为处理高
2025-05-29 23:18:37
1140
原创 使用子查询在 SQL Server 中进行数据操作
本文介绍了SQLServer中子查询的使用方法,包括创建部门表和员工表、插入测试数据,以及四种常见子查询类型:标量子查询(用于比较单个值)、列子查询(配合IN使用)、多行子查询(结合ANY/ALL运算符)和关联子查询(引用外部查询)。文章通过薪资分析、部门筛选等实际案例演示子查询应用,并给出性能优化建议:减少嵌套层次、优先使用JOIN或EXISTS替代IN查询。最后强调子查询是处理复杂数据分析的有力工具,但需注意避免过度使用影响性能。
2025-05-27 16:59:50
1007
原创 创建一个简易的风扇动画界面:基于 WPF 和 XAML 的实现教程
为了让风扇看起来更现代化,我们为背景、叶片、中心以及底座等部分添加渐变效果。通过使用 WPF 中的和,我们可以创建平滑的色彩过渡。在-- 背景渐变 -->-- 风扇叶片渐变 -->-- 风扇中心渐变 -->-- 风扇底座渐变 -->每个Brush定义了一个渐变色,使用不同的颜色和透明度值来模拟真实世界中风扇各部分的材质。通过 WPF 和 XAML,我们成功地创建了一个风扇动画界面。
2025-05-26 22:52:36
1173
原创 GraphQL在.NET 8中的全面实践指南
GraphQL是一种由Facebook开发的API查询语言,相较于REST,它允许客户端精确指定所需数据,避免了数据获取过多或过少的问题。.NET 8通过性能提升、最小API增强、原生AOT支持和改进的依赖注入,成为构建GraphQL服务的理想平台。搭建GraphQL服务包括创建项目、添加NuGet包、定义数据模型、配置DbContext和注册GraphQL服务。查询和变更操作通过定义Query和Mutation类实现,支持复杂查询和输入类型。高级特性如数据加载器优化和订阅功能,进一步提升了性能和实时性。通
2025-05-19 22:44:23
1472
原创 使用 C# 入门深度学习:线性代数详细讲解
线性代数在深度学习中扮演着至关重要的角色,它是理解和实现深度学习算法的基础。本文通过C#语言详细介绍了线性代数在深度学习中的应用,包括向量和矩阵的基本概念、基本运算(如向量加法、标量乘法和矩阵乘法)、向量点积、线性变换以及深度学习中的矩阵运算。此外,文章还提到了C#在深度学习领域的应用,如ML.NET和TensorFlow.NET等框架,这些工具可以帮助开发者在.NET环境下实现深度学习任务。掌握线性代数的核心概念和运算,对于深入理解和应用深度学习算法具有重要意义。
2025-05-18 21:16:56
1200
原创 .NET Core 中 Swagger 配置详解:常用配置与实战技巧
Swagger UI 提供了丰富的自定义选项,开发者可以根据自己的需求修改界面的标题、显示请求时长等信息。
2025-05-17 16:06:26
2425
原创 C# 实现雪花算法(Snowflake Algorithm)详解与应用
雪花算法(Snowflake ID)是一个分布式唯一 ID 生成算法,旨在生成具有高性能、唯一性且按时间排序的 ID。它由 Twitter 在其早期分布式系统中提出,并迅速成为生成全局唯一 ID 的标准方案。雪花算法通过将 64 位的整数分为多个部分来编码信息。每一部分代表不同的含义,如时间戳、机器 ID、序列号等,确保生成的 ID 不仅唯一且具有一定的时间顺序。
2025-05-15 19:44:45
3046
5
原创 深入理解 DryIoc:通过依赖注入构建松耦合应用
DryIoc 是一款面向 .NET 的轻量级高性能依赖注入容器。它与其他 DI 容器相比,强调更低的内存占用和更快的对象创建速度,同时还提供了丰富的功能和灵活的生命周期管理。DryIoc 提供的主要特性包括:高效的内存管理和性能优化。支持构造函数注入、属性注入等依赖注入方式。灵活的生命周期管理,包括瞬态(Transient)、单例(Singleton)、作用域(Scoped)等。强大的泛型支持。IService和,分别表示业务服务和数据库仓库。IService。
2025-05-14 09:30:58
1036
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅