别做抢活的导演:代码中的抽象层次原则
在电影片场,一个优秀的导演是如何工作的? 他会跟摄影指导说:“我希望这个镜头能传达出主角内心的孤独和绝望感,我们用冷色调,构图要空旷一些。” (这是顶层意图和艺术方向) 然后,摄影指导会把这个抽象的“意图”翻译成具体的执行方案,告诉灯光师:“我们需要一个顶光,用低色温的光源,把周围环境的亮度降下来, ...
MCP快速入门—快速构建自己的服务器
引言 随着大语言模型(LLM)技术的快速发展,如何扩展其能力边界成为开发者关注的重点。MCP(Model Capability Protocol)作为一种协议标准,允许开发者构建自定义服务器来增强LLM的功能。 正文内容 1. MCP核心概念与技术背景 MCP服务器主要提供三种能力类型: 资源(Re ...
他没买 iPad,而是花了半年时间,为所有“穷学生”写了个笔记神器
无纸化学习,正成为大学校园里的常态。用一台平板取代厚重的书本和讲义,上课时直接在课件上圈画重点,所有科目笔记都能轻松整理、一键搜索——这种轻便高效的学习方式,越来越受到学生们的青睐。说到这,许多人第一时间想到的,便是“iPad + Apple Pencil”这套“毕业级”装备。不可否认,iPad 体 ...
Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
前言 解决方案文件是 Visual Studio 中用于组织和管理多个项目的文件,其后缀通常为.sln(基于 UTF-8格式的)。它充当一个容器,维护着项目之间的引用关系、构建配置以及其他设置,定义了解决方案的结构以及包含哪些项目。现如今 Visual Studio 解决方案文件已经支持新的、更简洁 ...
Ant Design如何自定义输入框(Input)组件样式
介绍 今天接到一个需求,需要自定义一个Input输入框,我们的项目使用React + Ant Design进行开发,按理说Ant Design已经提供了非常丰富的组件样式,但有时候还是无法满足特定的需求,比如我们的输入框要求渲染成下面的样子 而Ant Design的Input组件默认的渲染结果是这样 ...
JavaScript 异步编程指南:async/await 与 Promise 该怎么选?
在 JavaScript 开发中,异步操作就像家常便饭 —— 从调用后端 API 到读取本地文件,几乎无处不在。但很多开发者都会困惑:到底该用 Promise 的链式调用,还是 async/await 语法?其实答案很简单:没有绝对的好坏,只有场景的适配。 今天我们就用实际案例聊聊,这两种异步写法各 ...
多Agent协作入门:并发编排模式
传统的单Agent系统在处理复杂多面任务的能力方面受到较多限制,因此我们会有多Agent编排协作完成任务的需求。Semantic Kernel支持多种多Agent编排流程模式,每个模式都针对不同的协作方案而设计。本文介绍了Agent编排的概念以及Semantic Kernel支持的编排模式,最后通过... ...
推荐 5 款实用的 Docker 可视化管理工具,工作效率翻倍!
前言 经常有小伙伴问:有什么好用的 Docker 可视化管理工具推荐的吗?今天大姚给大家推荐 5 款实用的 Docker 可视化管理工具,选择一款适合自己的 Docker 可视化管理工具能够更方便地查看和管理 Docker 容器、镜像、网络和数据卷等 Docker 组件,帮助我们工作效率翻倍(假如您 ...
【EF Core】框架是如何识别实体类的属性和主键的
在上一篇水文中,老周生动形象地解释了 DbContext 是如何识别实体 Set 的,大伙伴们可能会产生新的疑惑:实体是识别了,但,实体的属性或字段列表,它是怎么识别并映射给数据表的列的呢? 用过 EF 的人都知道(废话),其实默认情况下,实体类中只要不是静态的属性和字段都会被映射到数据表中,就算你 ...
TypeScript枚举类型应用:前后端状态码映射的最简方案
介绍 这篇文章来谈一下 TypeScript 中的枚举类型(Enum)以及一些最佳实践。事情的起因是这样的,今天看到自己之前写的一段代码,感觉不是很好,于是想优化一下,期间用到了枚举类型,遂记录一下。为了方便理解,我将原来的例子简化一下。 业务需求 业务需求是这样的:我们要实现一个Job系统,你可以 ...
JavaScript面试题,为什么[] + 0 = '0', 而{} + 0 = 0?
介绍 昨天在网上看到一道面试题,是关于JavaScript中的+元算符的,如下: [] + 0 = ? {} + 0 = ? 要解决这道题,我们首先要了解JavaScript中+运算符的行为,+元算符在JavaScript中主要有三种用途:一是用于数字相加,二是用于字符串连接,三是用于类型转换。 1 ...
手把手教你在 Sevalla 上部署 Next.js 博客:从搭建到上线全流程
很多开发者会纠结:“现在博客平台这么多,为啥还要自己搭博客?” 答案很简单:用 Next.js 搭的博客,是真正属于你的 “数字资产”。 为什么选 Next.js?为什么是 Sevalla? 先聊聊这两个核心工具的优势,帮你搞懂 “为什么这么组合”。 Next.js:不止是博客,更是你的品牌载体 N ...
多Agent协作入门:AgentGroupChat
本文介绍了如何通过Semantic Kernel提供的AgentGroupChat来实现多Agent的协作,其中最要的部分就是定义选择轮次策略 和 终止聊天策略,相信通过这个案例你能够有个感性的认识。当然,除了群组聊天模式之外,多Agent协作还有很多其他的方式(比如 并行、顺序、移交、磁性等等),... ...
通过 .NET Aspire 使用本地 AI 模型
引言 在当今快速发展的 AI 领域,开发人员经常需要在本地环境中实验和测试 AI 模型,然后再将其部署到云端。使用本地 AI 模型不仅能够节省云资源成本,还能提供更快的迭代速度和更好的隐私保护。本文将介绍如何利用 .NET Aspire 框架结合 Ollama 在本地运行 AI 模型,并通过 Mic ...
一款开源免费、通用的 WPF 主题控件包
前言 今天大姚给大家分享一款开源免费(MIT License)、通用的 WPF 主题控件包:Rubyer WPF。 WPF介绍 WPF是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能,让开发者可以创建出吸引人且交 ...
MCP 核心架构解析
引言 Model Context Protocol (MCP) 是一种为连接大型语言模型(LLM)应用而设计的通信协议,它建立在灵活、可扩展的架构基础上,旨在实现LLM应用程序与各类集成之间的无缝交互。本文将深入解析MCP的核心架构设计,包括其组件构成、通信机制、生命周期管理以及最佳实践,帮助开发者 ...
使用 OpenAuth.Net 快速搭建 .NET 企业级权限工作流系统
前言 在企业应用开发中,系统权限管理和工作流是比较常见的功能。虽说开发起来难度不大,但从零开始开发一个功能完备的权限管理和工作流系统,往往需要投入大量的时间和精力。今天大姚带领大家来使用 OpenAuth.Net 快速搭建一套 .NET 企业级权限工作流系统,希望可以帮助到有需要的小伙伴。 Open ...
Cursor 快速入门指南:从安装到核心功能
引言 Cursor 是一款融合 AI 能力的现代代码编辑器,旨在提升开发者的编码效率。本文将带您从零开始,快速掌握 Cursor 的完整使用流程 - 包括安装配置、项目初始化以及核心 AI 功能的应用。 正文 1. 安装与初始配置 1.1 下载与安装 Cursor 支持跨平台安装,过程简单高效: 访 ...
从被喷“假开源”到登顶 GitHub 热榜,这个开源项目上演王者归来!
故事的序幕,在 2024 年 1 月的 GitHub 上悄然拉开。 当时,一个名为 RustFS 的开源项目横空出世,号称要做一个基于 Rust 的企业级分布式存储系统,旨在成为 MinIO 的一个开源替代品。这个口号直接把大家吊成了“翘嘴”,但左等右等,结果一年了还只有一份 README 文件,就 ...
JavaScript中如何遍历对象?
JavaScript中如何遍历对象? 今天来点稍微轻松的话题,如何在JavaScript中遍历对象,在平常的工作中,遍历对象是很常见的操作,javascript提供了多种方法来遍历对象的属性。这些方法各有特点,不同的场景需要使用不同的方法。 假设我们有一个Person对象,包含名字和年龄两个属性,下 ...