一、调整工作进程数和线程数Nginx采用异步非阻塞的方式处理请求,这种方式可以充分利用CPU资源,提高并发处理能力。但是,过多的工作进程和线程会导致系统资源浪费,降低性能。因此,需要根据实际情况调整Nginx的工作进程数和线程数。
unsetunset调整工作进程数unsetunsetNginx的工作进程数是指Nginx启动后生成的子进程数量。可以通过修改Nginx配置文件中的worker_processes参数来调整工作进程数。
例如:
1worker_processes 4;
表示将Nginx的工作进程数设置为4。
unsetunset调整线程数unsetunset每个工作进程都有一个默认的线程数,即Nginx的事件处理模型中包含的线程数。可以通过修改Nginx配置文件中的worker_connections参数来调整线程数。
例如:
1worker_connections 1024;
表示将每个工作进程的线程数设置为1024。
需要注意的是,线程数并不是越大越好,因为线程之间的竞争可能会导致性能下降。因此,需要根据实际情况进行调整。
二、启用Gzip压缩Gzip压缩是一种常 ...
项目简介Mazanoke是一款开源的图片优化工具,它可以在用户的浏览器中运行,无需上传图片至服务器,从而确保了图片的私密性。支持多种图片格式的压缩和转换,比如 JPG、PNG、WebP,甚至还支持 HEIC 和 AVIF 这样的新兴格式。不仅如此,它还能作为渐进式 Web 应用(PWA)安装到桌面或手机上,离线也能用,简直是“随身图片处理厂”!
Mazanoke 的界面简洁友好,无论是技术小白还是资深开发者,都能快速上手。你可以调整图片质量、设置目标文件大小、限制最大尺寸,甚至批量处理一堆图片。更贴心的是,它支持从剪贴板直接粘贴图片,省去繁琐的上传步骤。
目前在Github上收获了1.3K star,非常受开发者的欢迎!
性能特色
灵活优化参数:支持手动调节画质压缩率或指定目标文件大小,系统自动匹配最优压缩方案;可限制图片最大宽高并保持比例缩放,避免画面变形。
全格式转换支持:覆盖 JPG/PNG/WebP 主流格式互转,特别支持 HEIC/AVIF/GIF/SVG 转换为通用格式,轻松适配多设备场景。
三重隐私防护:完全离 ...
初始化和配置
git init - 初始化一个新的Git仓库。
git config --global user.name "Your Name" - 设置全局用户名,用于提交。
git config --global user.email "your_email@example.com" - 设置全局用户邮箱,用于提交。
文件操作
git status - 查看当前工作目录的状态,显示有变更的文件。
git add <file> - 将指定文件添加到暂存区。
git add . - 添加当前目录下所有变更的文件到暂存区。
git add -A - 添加所有新文件和变更的文件到暂存区。
git reset <file> - 取消暂存区中指定文件的变更。
git rm <file> - 删除指定文件,并将其添加到暂存区。
git rm --cached <file> - 从暂存区中移除指定文件,但不删除工作目录中的文件。
提交和历史
git commit -m "Commit messa ...
作为 .NET 开发者,你是否经常需要查找命令行指令?本文为你整理了开发过程中最常用的 dotnet 命令,涵盖项目创建、构建、测试、部署等多个方面,助你提升开发效率!
重要的操作命令一些常用的命名
创建并添加项目到解决方案1234567891011# 创建 Web API 项目dotnet new webapi -o MyWebApi# 创建空解决方案dotnet new sln -o MySolution# 进入解决方案目录cd MySolution# 将 Web API 项目添加到解决方案中dotnet sln add ../MyWebApi/MyWebApi.csproj
发布为独立部署应用(带运行时)12# 发布 Web API 项目,配置为 Release,平台为 win-x64,且自带运行时dotnet publish ../MyWebApi/MyWebApi.csproj -c Release -r win-x64 --self-contained
查看 SDK 和运行时信息12345# 查看所有已安装的 .NET SDK 版本dotnet --list-sdks ...
今天我们不学习,来聊一聊MCP服务的未来。通过前面几期的学习,我们知道使用MCP服务有两种方式。
一、stdio方式,即服务端和客户端在本地一起。
优点:
1.可以利用现有的助手类工具,如Cursor,VSC+插件,或者最近开源并快速发展的DeepChat。通过搜寻开源的MCP服务,如高德MCP,CloudFlare MCP等。
2.可以使用对本机操作的MCP服务。
缺点:
1.只能1:1绑定客户端,每个客户端都要重新安装配置一遍。
2.因需要本地运行,依赖本机的运行环境。
二、sse方式,即服务端和客户端逻辑分开,可以不在一台机器上。
优点:
1.可以在组织内共享服务,真正的服务运行在远端服务器上。
2.降低助手类工具使用门槛。
缺点:
1.增加服务端运维的复杂性。
2.无法对使用者本地机器进行控制。
不同的使用场景,需要使用不同的方式。同时,即使确定某种方式,也还存在落地上的问题。因此为了更好的解决实现和使用上的问题,MCP继续完善协议(大家都有活干了)。我们来看看官方的规划吧!
**01.**H1Roadmap1.Remote MCP Support
目前主流的工具 ...
今天我们将继续学习,将了解MCP服务的SSE通信的客户端编写。当完成之后,就可以连接上节课的SSE服务了。
等系列课学习完成,你将能了解什么是MCP,如何开发MCP和如何实际使用它(当然我们会回归到Dify中,配合LLM,更加完善我们的AI应用适用场景)。
**01.**动手做一做我们再来复习一下协议的架构。
我们看到Client和Server之间是MCP Protocol通讯的,但是我们已经用了两篇文章来解释服务端开发,显然他们一个是stdio,另一个是SSE,是不一样的。
因此,Client必然是有差异的,今天我们就来看看如何实现目标。
同样从TypeScript的SDK开始,来写一个Client(SSE通信方式)。
在目录下新建一个client.ts文件,引用SDK的client和sse,其余代码见下图。
代码不多,仅作演示。谜题揭晓,SSE的服务需要用SSEClientTransport去连接。而本地stdio服务,就需要用StdioServerTransport去连接。目前大部分助手类工具都是用的stdio的方式。这里卖个关子,在Dify应用中,会讲如何更好的使用MCP。 ...
今天我们将继续学习,将了解MCP服务的另一种通信方式。当然这两种都是有不同的适用场景的,并非竞争的关系。后面也会说明,其各自的优缺点和场景。
等系列课学习完成,你将能了解什么是MCP,如何开发MCP和如何实际使用它(当然我们会回归到Dify中,配合LLM,更加完善我们的AI应用适用场景)。
**01.**动手准备在我们动手写一个自己的SSE版本的MCP之前,又需要了解协议的一些概念,这样做起来就得心应手了。
Resoures:暴露结构化数据的内容给LLM。
Prompts:提供给LLM应用的可重用Prompt模板。
Tools:提供在服务端给LLM应用特别是Agent使用的工具。
Roots:定义API的接入点和访问路径
Sampling:允许服务器通过客户端请求LLM完成
当然以上不是全部都必须,比如可以只实现Tools功能,那我们同样从TypeScript的SDK开始。
上一课的例子是通过stdio传输数据,即数据是本地机器的进程间通信。适合AI助手工具来软件使用。
而今天我们来尝试实现远程通信。
**02.**动手做一做复制一下上节课的项目,做以下修改:
1234 ...
今天我们将继续学习,基于model context protocol的SDK来开发自己的MCP服务。
等系列课学习完成,你将能了解什么是MCP,如何开发MCP和如何实际使用它(当然我们会回归到Dify中,配合LLM,更加完善我们的AI应用适用场景)。
**01.**动手准备今天就来展开说说开发MCP应用,应该如何做。既然是开发,那就离不开代码了。处理的顺序正好和概念反过来,我们先来实现一个MCP服务端。
同时需要理解两个重要的概念:
1 通信机制MCP协议支持两种主要的通信机制:基于标准输入输出的本地通信和基于SSE(Server-Sent Events)的远程通信。
也就是说MCP服务端,根据和客户端连接时所在的位置不同,分成本地通信和远程通信。
本地通信是通过stdio传输数据,即数据是本地机器的进程间通信。适合AI助手工具等软件使用。
而远程通信则是利用SSE技术,通过HTTP来通信和传输数据。适合于共享MCP服务,在企业内使用或者服务给互联网用户。
2 运行语言和环境一般涉及到开发,必定是要和开发语言有关。但是MCP协议是和语言无关的,也就是说大家可以尽量使用自己熟悉的开发语言 ...
上一节Dify应用实战课,我们学习了如何将数据表生成图,可以更直接的展示数据的意义。
今天我们将暂时将Dify的学习搁置一下。来学习AI工具中重要的一个知识:MCP(Model Context Protocol)。
等系列课学习完成,你将能了解什么是MCP,如何开发MCP和如何实际使用它(当然我们会回归到Dify中,配合LLM,更加完善我们的AI应用适用场景)。
**01.**基础概念MCP(Model Context Protocol)是一种开放协议,它标准化了应用程序如何为LLM提供上下文。
将MCP想象成AI应用程序的USB-C端口。正如USB-C提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP也提供了一种将AI模型连接到不同数据源和工具的标准化方式。
它是去年11月才被Claude公司提出来的,但是不到半年时间,基于MCP的生态就如雨后春笋般涌现。过去以API方式提供服务的传统互联网,迅速拥抱这一变化,大量的MCP服务被开发,开源和提供出来。
要想开发MCP应用,首先需要了解的是其架构和几个重要的概念。
简单的图示中,提到了主机,客户端和服务器。
1 主机MC ...
最近还是有网友问,代码执行节点为啥运行报错,说找不到模块。但自己的Python环境是安装了这些模块的。还有就是按照麦金叔的数据库连接,为啥连不上。今天我们再详细说说。
**01.**库和权限 当你运行代码节点出现如下两种错误的时候,这一篇就是为你准备的。
最简单的方式就是在Dify的沙箱环境进行依赖库的安装和权限设置。
库安装:
工程目录下docker/volumes/sandbox/dependencies下有一个空文件python-requirements.txt,打开文件后
增加一行”pandas==2.2.3”,如果你代码使用了其他第三方库,也像正常pip install或者conda install一样,将使用的库,依次添加即可。
权限修改:
工程目录下docker/volumes/sandbox/conf里面有一个config.yaml文件,找到allowed_syscalls段,把需要的权限加进去。
还是有同学不知道怎么操作,也有不放心权限太大的,麦金叔把所有的code和解释都放这 ...