当前位置: 首页 > news >正文

【C#生态园】完整解读C#网络通信库:从基础到实战应用

探索C#网络通信库:功能、用途和最佳实践

前言

随着互联网的快速发展,网络通信在现代软件开发中扮演着至关重要的角色。C#作为一种流行的编程语言,拥有多个优秀的网络通信库,为开发人员提供了丰富的选择。本文将深入探讨几种常用的C#网络通信库,包括System.Net、Socket、RestSharp、HttpClient、SignalR和gRPC,并对它们进行全面的介绍和比较。

欢迎订阅专栏:C#生态园

文章目录

  • 探索C#网络通信库:功能、用途和最佳实践
    • 前言
    • 1. System.Net:一个用于C#的网络通信库
      • 1.1 简介
        • 1.1.1 核心功能
        • 1.1.2 使用场景
      • 1.2 安装与配置
        • 1.2.1 安装指南
        • 1.2.2 基本设置
      • 1.3 API 概览
        • 1.3.1 发起网络请求
        • 1.3.2 处理网络响应
    • 2. Socket:一个用于C#的网络通信库
      • 2.1 简介
        • 2.1.1 核心功能
        • 2.1.2 使用场景
      • 2.2 安装与配置
        • 2.2.1 安装指南
        • 2.2.2 基本设置
      • 2.3 API 概览
        • 2.3.1 创建Socket连接
        • 2.3.2 数据传输
    • 3. RestSharp:处理RESTful API的C#库
      • 3.1 简介
        • 3.1.1 核心功能
        • 3.1.2 使用场景
      • 3.2 安装与配置
        • 3.2.1 安装指南
        • 3.2.2 基本设置
      • 3.3 API 概览
        • 3.3.1 发起RESTful请求
        • 3.3.2 处理RESTful响应
    • 4. HttpClient:用于发送HTTP请求的C#库
      • 4.1 简介
        • 4.1.1 核心功能
        • 4.1.2 使用场景
      • 4.2 安装与配置
        • 4.2.1 安装指南
        • 4.2.2 基本设置
      • 4.3 API 概览
        • 4.3.1 发起HTTP请求
        • 4.3.2 处理HTTP响应
    • 5. SignalR:实时通信库,用于构建实时Web应用程序
      • 5.1 简介
        • 5.1.1 核心功能
        • 5.1.2 使用场景
      • 5.2 安装与配置
        • 5.2.1 安装指南
        • 5.2.2 基本设置
      • 5.3 API 概览
        • 5.3.1 实时通信建立
        • 5.3.2 实时消息传递
    • 6. gRPC:高性能远程过程调用(RPC)库
      • 6.1 简介
        • 6.1.1 核心功能
        • 6.1.2 使用场景
      • 6.2 安装与配置
        • 6.2.1 安装指南
        • 6.2.2 基本设置
      • 6.3 API 概览
        • 6.3.1 定义gRPC服务
        • 6.3.2 进行远程调用
    • 总结

1. System.Net:一个用于C#的网络通信库

1.1 简介

System.Net 是 C# 中用于进行网络通信的标准库,提供了丰富的功能和类,用于处理网络数据传输、发送和接收网络请求等操作。

1.1.1 核心功能
  • 发起网络请求
  • 处理网络响应
  • 实现不同的网络协议(如 HTTP、FTP 等)
1.1.2 使用场景

System.Net 可以被广泛应用于需要进行网络通信的 C# 项目中,例如开发网络爬虫、构建网络服务端或客户端等。

1.2 安装与配置

System.Net 是 .NET Framework 的一部分,因此无需额外安装即可在 C# 项目中使用。

1.2.1 安装指南

无需额外安装,直接引用命名空间即可开始使用。

1.2.2 基本设置

在使用 System.Net 前,确保项目已引用 System.Net 命名空间。

using System.Net;

1.3 API 概览

System.Net 提供了多个类用于网络通信,以下是两个常用的功能:

1.3.1 发起网络请求

System.Net.HttpWebRequest 类可以用于创建并发起网络请求。以下是一个简单的示例代码,用于向指定 URL 发起 GET 请求:

string url = "https://www.example.com/api/data";
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
Console.WriteLine(responseFromServer);

更多关于 HttpWebRequest 的信息,请参考官方文档:HttpWebRequest Class

1.3.2 处理网络响应

处理网络响应通常涉及读取服务器返回的数据,并根据需要进行解析和处理。以下是一个简单的示例代码,用于从网络流中读取数据:

// 假设 response 是 WebResponse 对象
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
Console.WriteLine(responseFromServer);

更多关于处理网络响应的信息,请参考官方文档:Network Programming in the .NET Framework

2. Socket:一个用于C#的网络通信库

2.1 简介

Socket是C#中用于网络通信的库,提供了丰富的功能和灵活的使用方式。

2.1.1 核心功能
  • 支持TCP和UDP协议
  • 实现客户端和服务器端的通信
  • 数据加密和压缩功能
  • 异步操作和事件驱动
2.1.2 使用场景

Socket库广泛应用于各种需要网络通信的场景,包括但不限于:

  • 实时聊天软件
  • 多人在线游戏
  • 远程控制和监控系统
  • 数据传输和共享

2.2 安装与配置

2.2.1 安装指南

Socket库可以通过NuGet包管理器进行安装。在Visual Studio中新建一个C#项目后,右击项目名称,选择“管理NuGet程序包”,搜索“Socket”并安装即可。

2.2.2 基本设置

安装完成后,可以在项目中引用Socket库,并开始使用其中的类和方法。

// 引用Socket命名空间
using System.Net.Sockets;

2.3 API 概览

2.3.1 创建Socket连接

在C#中创建Socket连接通常分为服务端和客户端两种情况。

服务端示例:

以下是一个简单的服务端示例,监听来自客户端的连接请求并接受数据:

// 创建Socket对象
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 绑定IP地址和端口
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 1234);
serverSocket.Bind(ipEndPoint);// 开始监听连接
serverSocket.Listen(10);// 接受客户端连接
Socket clientSocket = serverSocket.Accept();// 接收数据
byte[] data = new byte[1024];
int length = clientSocket.Receive(data);
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("收到消息:" + message);// 关闭Socket连接
clientSocket.Close();
serverSocket.Close();

官方文档:Socket Class

客户端示例:

以下是一个简单的客户端示例,向服务端发送数据:

// 创建Socket对象
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 连接到服务端
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 1234);
clientSocket.Connect(ipEndPoint);// 发送数据
string message = "Hello, Server!";
byte[] data = Encoding.UTF8.GetBytes(message);
clientSocket.Send(data);// 关闭Socket连接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();

官方文档:Socket.Connect Method

2.3.2 数据传输

Socket库支持多种方式进行数据传输,包括同步发送和接收、异步操作、以及对数据进行加密和解密等功能。

具体的数据传输方法和相关设置可以根据具体需求进行调整和配置。

以上是Socket库在C#中的基本介绍和使用方式,通过学习和实践,可以更好地理解其丰富的功能和灵活的应用场景。

3. RestSharp:处理RESTful API的C#库

RestSharp是一个用于处理RESTful API的C#库,它提供了简单且直观的方式来处理HTTP请求和响应,使得与Web服务进行通信变得更加容易。

3.1 简介

RestSharp的核心功能包括发起HTTP请求、处理响应、设置请求参数等。

3.1.1 核心功能
  • 发起HTTP请求
  • 处理HTTP响应
  • 设置请求参数
  • 支持异步请求
3.1.2 使用场景

RestSharp常用于与RESTful API进行交互,无论是在Web开发中还是桌面应用程序中,都可以使用RestSharp来方便地对API进行访问和操作。

3.2 安装与配置

要使用RestSharp,首先需要将其添加到项目中,并进行基本的配置。

3.2.1 安装指南

可以通过NuGet包管理器来安装RestSharp,也可以手动下载并添加引用。以下是通过NuGet进行安装的方法:

Install-Package RestSharp
3.2.2 基本设置

安装完成后,在C#代码中引入RestSharp命名空间即可开始使用RestSharp的功能:

using RestSharp;

3.3 API 概览

接下来会详细介绍如何使用RestSharp来发起RESTful请求和处理响应。

3.3.1 发起RESTful请求

使用RestSharp发起GET请求的示例代码如下:

var client = new RestClient("https://api.example.com");
var request = new RestRequest("resource/{id}", Method.GET);request.AddUrlSegment("id", "123");IRestResponse response = client.Execute(request);
var content = response.Content; // 返回的内容

上述代码中,我们创建了一个RestClient实例,并指定了请求的URL。然后创建了一个RestRequest实例,设定请求的方法为GET,并添加了URL参数。最后通过client.Execute方法发起了请求,并获取了返回的内容。

3.3.2 处理RESTful响应

下面是使用RestSharp处理POST请求响应的示例代码:

var client = new RestClient("https://api.example.com");
var request = new RestRequest("resource", Method.POST);
request.AddParameter("name", "value");IRestResponse response = client.Execute(request);
var statusCode = response.StatusCode; // 获取状态码
var content = response.Content; // 返回的内容

以上代码中,我们同样创建了一个RestClient实例,并指定了请求的URL。然后创建了一个RestRequest实例,设定请求的方法为POST,并添加了请求参数。最后通过client.Execute方法发起了请求,并获取了返回的状态码和内容。

你可以在RestSharp官方文档中找到更多关于RestSharp的详细信息和使用方法。

4. HttpClient:用于发送HTTP请求的C#库

4.1 简介

HttpClient 是一个用于发送 HTTP 请求的 C# 类库,它提供了丰富的 API 来处理网络通信。

4.1.1 核心功能
  • 发起 HTTP 请求
  • 处理 HTTP 响应
  • 支持异步操作
4.1.2 使用场景
  • 与 Web 服务交互
  • 从 Web 服务器获取数据
  • 向 Web 服务器发送数据

4.2 安装与配置

4.2.1 安装指南

要使用 HttpClient,可以通过 NuGet 包管理器来安装。在 Visual Studio 中打开 NuGet 包管理器控制台,并执行以下命令:

Install-Package System.Net.Http
4.2.2 基本设置

在使用 HttpClient 之前,需要添加以下命名空间引用:

using System.Net.Http;

4.3 API 概览

4.3.1 发起HTTP请求

下面是一个简单的示例,演示如何使用 HttpClient 发起 GET 请求:

static async Task Main(string[] args)
{using (HttpClient client = new HttpClient()){HttpResponseMessage response = await client.GetAsync("https://api.example.com/data");if (response.IsSuccessStatusCode){string responseBody = await response.Content.ReadAsStringAsync();Console.WriteLine(responseBody);}else{Console.WriteLine("HTTP Error: " + response.StatusCode);}}
}

更多关于 HttpClient 发起请求的信息,请参考官方文档。

4.3.2 处理HTTP响应

下面是一个示例,演示如何处理 HTTP 响应:

static async Task Main(string[] args)
{using (HttpClient client = new HttpClient()){HttpResponseMessage response = await client.GetAsync("https://api.example.com/data");if (response.IsSuccessStatusCode){string responseBody = await response.Content.ReadAsStringAsync();Console.WriteLine(responseBody);}else{Console.WriteLine("HTTP Error: " + response.StatusCode);}}
}

更多关于处理 HTTP 响应的信息,请参考官方文档。

5. SignalR:实时通信库,用于构建实时Web应用程序

SignalR 是一个强大的实时通信库,它可以让你轻松地在客户端和服务器端之间实现双向通信。使用 SignalR,你可以构建具有实时更新功能的 Web 应用程序,例如聊天应用、实时数据监控等。

5.1 简介

5.1.1 核心功能

SignalR 的核心功能包括:

  • 实时消息传递
  • 连接管理
  • 客户端与服务器端通信
5.1.2 使用场景

SignalR 可以广泛应用于需要实时通信的场景,例如在线聊天、实时游戏、股票交易数据更新等。

5.2 安装与配置

5.2.1 安装指南

要在项目中使用 SignalR,首先需要通过 NuGet 进行安装。可以使用以下命令来安装 SignalR:

Install-Package Microsoft.AspNet.SignalR
5.2.2 基本设置

完成安装后,需要将 SignalR 配置到应用程序中。在 Startup.cs 文件中的 ConfigureServices 方法中添加如下代码:

services.AddSignalR();

然后,在 Configure 方法中启用 SignalR 中间件:

app.UseSignalR(routes =>
{routes.MapHub<ChatHub>("/chatHub");
});

5.3 API 概览

5.3.1 实时通信建立

在 SignalR 中,客户端与服务器端通过 Hub 进行通信。首先,需要创建一个继承自 Hub 类的 Hub 类型,例如 ChatHub:

public class ChatHub : Hub
{public async Task SendMessage(string user, string message){await Clients.All.SendAsync("ReceiveMessage", user, message);}
}

在客户端,可以使用 JavaScript 进行连接并发送消息:

const connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();connection.on("ReceiveMessage", (user, message) => {// 处理收到的消息
});connection.start().then(() => {connection.invoke("SendMessage", user, message);
}).catch(err => console.error(err));
5.3.2 实时消息传递

通过 SignalR,可以实现实时消息传递。在上面的示例中,当调用 SendMessage 方法时,会向所有客户端发送消息,并由客户端的 ReceiveMessage 方法进行处理。

更多关于 SignalR 的信息,请查阅官方文档。

SignalR 允许服务器端代码主动推送消息给连接的客户端,从而实现实时消息传递的功能。以下是一个简单的 C# 示例代码,演示了如何在服务器端向客户端推送消息:

// 服务器端代码
public class ChatHub : Hub
{public void Send(string name, string message){Clients.All.broadcastMessage(name, message);}
}

在上述例子中,Clients.All.broadcastMessage 将消息发送给所有连接的客户端。

更多关于 SignalR 的信息可以在 ASP.NET SignalR 官方文档 中查看到。

6. gRPC:高性能远程过程调用(RPC)库

gRPC 是一个高性能、通用的开源 RPC 框架,基于 HTTP/2 协议,支持多种编程语言。它可以让客户端应用像调用本地对象一样直接调用另一台服务器上的方法,使得分布式系统的构建更加简单。

6.1 简介

6.1.1 核心功能
  • 高性能的双向流
  • 众多支持的编程语言
  • 消息序列化支持 Protocol Buffers 和 JSON
  • 支持认证、负载均衡等扩展功能
6.1.2 使用场景
  • 微服务架构中的服务间通信
  • 跨语言的 API 调用
  • 对性能要求较高的远程调用场景

6.2 安装与配置

6.2.1 安装指南

gRPC 可以使用 NuGet 进行安装,在 Visual Studio 中创建一个新的 .NET Core 项目并添加 gRPC 支持:

dotnet new grpc -n YourProjectName
6.2.2 基本设置

在项目文件中添加以下包引用:

<ItemGroup><PackageReference Include="Grpc.AspNetCore" Version="2.34.0" /><PackageReference Include="Google.Protobuf" Version="3.15.8" /><PackageReference Include="Grpc.Tools" Version="2.34.0" PrivateAssets="All" />
</ItemGroup>

6.3 API 概览

6.3.1 定义gRPC服务

在定义服务时,需要先创建一个 .proto 文件来描述服务和消息类型,例如 hello.proto

syntax = "proto3";service Greeter {rpc SayHello (HelloRequest) returns (HelloReply);
}message HelloRequest {string name = 1;
}message HelloReply {string message = 1;
}

通过 gRPC 工具生成 C# 代码:

protoc --csharp_out=. --grpc_out=. --plugin=protoc-gen-grpc=/usr/local/bin/grpc_csharp_plugin hello.proto
6.3.2 进行远程调用
using Grpc.Core;
using Grpc.Net.Client;var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = client.SayHello(new HelloRequest { Name = "World" });
Console.WriteLine("Greeting: " + reply.Message);

更多详细信息和示例代码请参考 gRPC 官方文档。

总结

C#作为一种广泛应用于企业级应用开发的编程语言,其网络通信库具有丰富多样的特性和功能。System.Net提供了丰富的网络通信功能;Socket则直接操作底层的网络通信;RestSharp专注于处理RESTful API;HttpClient成为了发送HTTP请求的首选;SignalR则致力于构建实时Web应用程序;而gRPC则提供高性能的远程过程调用。针对不同的需求和场景,开发人员可以根据本文的介绍选择最合适的网络通信库,为他们的应用程序赋予强大的网络通信能力。

相关文章:

【C#生态园】完整解读C#网络通信库:从基础到实战应用

探索C#网络通信库&#xff1a;功能、用途和最佳实践 前言 随着互联网的快速发展&#xff0c;网络通信在现代软件开发中扮演着至关重要的角色。C#作为一种流行的编程语言&#xff0c;拥有多个优秀的网络通信库&#xff0c;为开发人员提供了丰富的选择。本文将深入探讨几种常用…...

js面试题---事件委托是什么

事件委托是JavaScript中的一种事件处理模式&#xff0c;通过将事件处理程序绑定到父元素&#xff0c;而不是直接绑定到每个子元素&#xff0c;从而优化事件管理和提高性能。 1 工作原理 事件冒泡&#xff1a;当一个事件在某个元素上发生时&#xff0c;它会从该元素向上冒泡到…...

谷歌浏览器 文件下载提示网络错误

情况描述&#xff1a; 谷歌版本&#xff1a;129.0.6668.90 (正式版本) &#xff08;64 位&#xff09; (cohort: Control)其他浏览器&#xff0c;比如火狐没有问题&#xff0c;但是谷歌会下载失败&#xff0c;故推断为谷歌浏览器导致的问题小文件比如1、2M会成功&#xff0c;大…...

【记录】PPT|PPT 箭头相交怎么跨过

众所周知&#xff0c;在PPT中实现“跨线”效果并非直接可行&#xff0c;这一功能仅存在于Visio中。然而&#xff0c;通过一些巧妙的方法&#xff0c;我们可以在PPT中模拟出类似的效果。怎么在PPT中画交叉但不重叠的线-百度经验中介绍了一种方法&#xff0c;而本文将介绍一种改进…...

Linux中如何修改root密码

在 Linux 中&#xff0c;修改 root 用户密码可以通过以下步骤进行。你需要具有超级用户权限才能执行这些操作。 方法一&#xff1a;使用 passwd 命令修改 root 密码 使用具有超级用户权限的账户登录 如果你已经以 root 身份登录&#xff0c;或者你当前账户具备超级用户权限&am…...

中间件:SpringBoot集成Redis

一、Redis简介 Redis是一个开源的、基于内存的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。Redis支持多种类型的数据结构&#xff0c;如字符串&#xff08;strings&#xff09;、哈希&#xff08;hashes&#xff09;、列表&#xff08;lists&#xff09…...

数据中心建设方案,大数据平台建设,大数据信息安全管理(各类资料原件)

第一章 解决方案 1.1 建设需求 1.2 建设思路 1.3 总体方案 信息安全系统整体部署架构图 1.3.1 IP准入控制系统 1.3.2 防泄密技术的选择 1.3.3 主机账号生命周期管理系统 1.3.4 数据库账号生命周期管理系统 1.3.5 双因素认证系统 1.3.6 数据库审计系统 1.3.7 数据脱敏…...

TDD(测试驱动开发)是否已死?

Rails 大神、创始人 David Heinemeier Hansson 曾发文抨击TDD。 TDD is dead. Long live testing. (DHH) 此后, Kent Beck、Martin Fowler、David Hansson 三人就这个观点还举行了系列对话&#xff08;辩论&#xff09; Is TDD Dead? 笔者作为一个多年在软件测试领域摸索的人&…...

Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic

Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic 一、认识TDengine二、TDengine Kafka Connector三、什么是 Kafka Connect?四、前置条件五、安装 TDengine Connector 插件六、启动 Kafka七、验证 kafka Connect 是否启动成功八、TDengine Source Connector 的使用…...

数据结构(一)顺序表

顺序表的概念及结构 线性表 线性表是具有相同特征的数据结构的集合 物理结构 不一定连续 逻辑结构 连续 顺序表 顺序表是线性表的一种&#xff0c;顺序表的底层是数组 物理结构 连续 逻辑结构 连续 顺序表分类 静态顺序表 struct SeqList {int a…...

如何在 Jupyter Notebook 执行和学习 SQL 语句(中)

1. 基础SQL操作 创建数据库和表&#xff0c;插入数据&#xff1a; import sqlite3# 创建SQLite数据库并连接 conn sqlite3.connect(example.db) cursor conn.cursor()# 创建用户表 cursor.execute(CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT…...

AutosarMCAL开发——基于EB Wdg驱动

目录 一、Wdg原理以及作用1.看门狗类型2.看门狗功能特点3.看门狗工作模式4.看门狗超时响应5.看门狗寄存器 二、WDG模块EB配置&#xff08;TC3X系列MCU&#xff09;1.WDG通用配置&#xff1a;2.WDG设置&#xff1a;3.时钟资源分配4.配置STM IRQ中断5.配置触发执行动作&#xff1…...

Linux(1. 基本操作_命令)

目录 关于超级用户root&#xff1a; root用户可以做什么&#xff1f; 避免灾难&#xff1a; 格式约定&#xff1a; 浏览硬盘&#xff1a; 命令行补全和通配符&#xff1a; 命令行补全&#xff1a; 通配符&#xff1a; 常用基本命令&#xff1a; 查看目录和文件&#xff…...

难点:Linux 死机定位(进程虚拟地址空间耗尽)

死机定位(进程虚拟地址空间耗尽) 一、死机现象 内存富裕,但内存申请失败。 死机时打印: 怀疑是: 1、内存碎片原因导致。 2、进程虚拟地址空间耗尽导致。 3、进程资源限制导致。 二、内存碎片分析 1、理论知识:如何分析内存碎片化情况 使用 /proc/buddyinfo: /proc/…...

小米路由器刷机istoreOS,愉快上网

istoreOS与openwrt openwrt是一个开源的路由器系统,市场上所有小米路由器的内部系统都是基于openwrt进行二次开发形成的,做了硬件适配和功能上的阉割,不太好用。 istoreos是小宝团队基于openwrt制作的一个发行版,更适合中国宝宝体质。页面简约华丽,完全兼容开源openwrt的…...

微信小程序 - 01 - 一些补充和注意点(补充ing...)

目录 一、节流二、在一个发请求的函数中&#xff0c;只有发生下拉动作&#xff0c;才执行关闭下拉代码 最近在学微信小程序&#xff0c;把学习过程中的一些补充和注意点总结一下&#xff0c;内容会比较简单&#xff0c;因为只涉及基础知识&#xff0c;供个人参考 一、节流 情…...

微服务实战——登录(普通登录、社交登录、SSO单点登录)

登录 1.1. 用户密码 PostMapping("/login")public String login(UserLoginVo vo, RedirectAttributes redirectAttributes, HttpSession session){R r memberFeignService.login(vo);if(r.getCode() 0){MemberRespVo data r.getData("data", new Type…...

windows 安装 ElasticSearch

1、下载安装包 下载地址&#xff1a;https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-windows-x86_64.zip ElasticSearch 目录结构如下&#xff1a; 2、配置JDK环境 ES比较耗内存&#xff0c;建议虚拟机4G或以上内存&#xff0c;jvm1g以上的内存分…...

Oracle Linux 9 (CentOS Stream 9) 安装 node.js 20

Oracle Linux 的 node 默认版本为 16&#xff0c;运行dnf update也无法改变大版本&#xff0c;还需要进行额外操作1 查看支持的版本 sudo dnf module list nodejs输出如下 Last metadata expiration check: 3:37:22 ago on Fri 11 Oct 2024 09:08:18 PM JST. Oracle Linux 9 Ap…...

【Axure安装包与汉化包附带授权证书】

一、下载Axure安装包与汉化包附带授权证书 1.下载汉化包 【快传】: 点击链接即可保存 2.解压安装包 解压下载好的压缩包&#xff0c;能看到有lang也就是汉化包&#xff0c;AxureRP-Setup-RC.exe 也就是Axure9的安装程序&#xff0c;以及汉化说明和授权码。 二、安装Axure9…...

AI助手开发实战:从资源索引到生产级系统搭建指南

1. 项目概述&#xff1a;一个为AI助手开发者准备的“藏宝图” 如果你正在开发一个AI助手应用&#xff0c;或者正打算将大语言模型的能力集成到你的产品里&#xff0c;那你大概率会遇到一个经典难题&#xff1a;面对市面上眼花缭乱的模型、API和工具&#xff0c;我到底该怎么选&…...

Unity游戏接入TapTap登录,从后台配置到打包上线的完整避坑指南

Unity游戏接入TapTap登录的全流程避坑指南&#xff1a;从配置到上线的实战经验 在独立游戏开发领域&#xff0c;TapTap平台凭借其庞大的用户基础和便捷的登录系统&#xff0c;已成为许多开发者的首选接入方案。然而&#xff0c;从后台配置到最终打包上线的完整流程中&#xff0…...

如何用Python爬虫将知识星球内容制作成PDF电子书:完整指南

如何用Python爬虫将知识星球内容制作成PDF电子书&#xff1a;完整指南 【免费下载链接】zsxq-spider 爬取知识星球内容&#xff0c;并制作 PDF 电子书。 项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider 知识星球作为优质内容社区&#xff0c;汇集了大量付费专…...

镜像空间全域透视,赋能多维场景一体化透明数智治理技术白皮书

镜像空间全域透视&#xff0c;赋能多维场景一体化透明数智治理技术白皮书副标题&#xff1a;聚合动态三维实时重构、无感厘米级定位、全域跨镜连续追踪、身体指纹生物核验四大自研核心&#xff0c;一站式覆盖楼宇、仓储、硐室全场景透明智能管控前言当下城市建筑楼宇、物资仓储…...

AI Agent产品经理的新思维:从功能设计到AI原生产品的方法论转型

AI Agent产品经理的新思维&#xff1a;从功能设计到AI原生产品的方法论转型 各位产品同行、AI从业者&#xff0c;大家好&#xff01;我是连续3年深耕AI工具Agent产品、从C端信息流&#xff08;今日头条/抖音生态&#xff09;PM成功转型AI原生垂直工具PM的张小白——过去两年&am…...

Lingoose:轻量级LLM编排框架的设计哲学与工程实践

1. 项目概述&#xff1a;从“Lingo”到“Goose”&#xff0c;一个轻量级LLM编排框架的诞生最近在折腾大语言模型应用开发的朋友&#xff0c;估计都绕不开一个核心问题&#xff1a;如何高效、优雅地编排和串联多个LLM调用、工具调用以及数据处理流程&#xff1f;当你从简单的单次…...

从图片到摄像头:用YOLOv8n.pt模型在Win10上实现实时目标检测(代码+命令详解)

从图片到摄像头&#xff1a;用YOLOv8n.pt模型在Win10上实现实时目标检测&#xff08;代码命令详解&#xff09; 当计算机视觉遇上边缘计算&#xff0c;目标检测技术正在重塑人机交互的边界。YOLOv8作为当前最先进的实时检测框架之一&#xff0c;其轻量级版本yolov8n.pt在普通消…...

面向开发者的轻量级计划管理工具:配置驱动与命令行优先

1. 项目概述&#xff1a;一个为开发者而生的计划管理工具在软件开发的世界里&#xff0c;我们每天都在与各种“计划”打交道&#xff1a;版本迭代计划、个人学习计划、项目里程碑、甚至是每日的待办清单。然而&#xff0c;一个尴尬的现实是&#xff0c;市面上大多数项目管理工具…...

FinalBurn Neo:终极开源街机模拟器技术深度解析

FinalBurn Neo&#xff1a;终极开源街机模拟器技术深度解析 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo FinalBurn Neo&#xff08;简称FBNeo&#xff09;是一款专业级的开源街机模拟器&#xff0c;…...

基于CircuitPython与Adafruit IO的DIY智能门铃摄像头全栈开发指南

1. 项目概述与核心思路几年前&#xff0c;我还在用传统的猫眼和门铃&#xff0c;每次快递员敲门或者有访客&#xff0c;都得急匆匆跑到门口&#xff0c;从那个小小的、视野受限的孔洞里费力张望。后来市面上出现了各种智能门铃摄像头&#xff0c;功能是挺诱人&#xff0c;但要么…...