首页 > 其他分享 >2.NET中使用Nacos

2.NET中使用Nacos

时间:2024-02-13 10:33:44浏览次数:27  
标签:COMMENT 00 varchar DEFAULT Nacos 使用 NET NULL id

  Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。   服务发现和服务健康监测 Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。   动态配置服务 动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。 配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。 Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。   动态 DNS 服务 动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。 Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.   服务及其元数据管理 Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA 以及最首要的 metrics 统计数据。    Docker 安装 Nacos  1. 安装git

yum install -y git

2. 安装docker compose

# 1. 从github上下载docker-compose二进制文件安装
curl -L https://github.com/docker/compose/releases/download/1.27.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 2. 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 3. 测试安装结果
docker-compose --version
# 卸载(别卸载哈)
rm /usr/local/bin/docker-compose

3. Clone 项目

git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker

4. 修改application.properties文件

位置:./nacos-docker/example/init.d/application.properties
主要修改以下几个属性:
db.url.0 : MySQL 连接地址
db.user.0:MySQL 用户名
db.password.0: MySQL 密码

5. 创建Nacos 数据库,用于保存Nacos中产生的数据
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info */
/******************************************/
CREATE TABLE `config_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(255) DEFAULT NULL,
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建
时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修
改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL,
`c_use` varchar(64) DEFAULT NULL,
`effect` varchar(64) DEFAULT NULL,
`type` varchar(64) DEFAULT NULL,
`c_schema` text,
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant`
(`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='config_info';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_aggr */
/******************************************/
CREATE TABLE `config_info_aggr` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(255) NOT NULL COMMENT 'group_id',
`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
`content` longtext NOT NULL COMMENT '内容',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum`
(`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='增加租户字段';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_beta */
/******************************************/
CREATE TABLE `config_info_beta` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建
时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修
改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfobeta_datagrouptenant`
(`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='config_info_beta';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_tag */
/******************************************/
CREATE TABLE `config_info_tag` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建
时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修
改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfotag_datagrouptenanttag`
(`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='config_info_tag';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_tags_relation */
/******************************************/
CREATE TABLE `config_tags_relation` (
`id` bigint(20) NOT NULL COMMENT 'id',
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`nid` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag`
(`id`,`tag_name`,`tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='config_tag_relation';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = group_capacity */
/******************************************/
CREATE TABLE `group_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个
集群',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单
位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最
大个数,,0表示使用默认值',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的
子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更
历史数量',
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建
时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修
改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='集群、各Group容量信息表';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = his_config_info */
/******************************************/
CREATE TABLE `his_config_info` (
`id` bigint(64) unsigned NOT NULL,
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`data_id` varchar(255) NOT NULL,
`group_id` varchar(128) NOT NULL,
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL,
`md5` varchar(32) DEFAULT NULL,
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
`src_user` text,
`src_ip` varchar(20) DEFAULT NULL,
`op_type` char(10) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`encrypted_data_key` text NOT NULL COMMENT '秘钥',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='多租户改造';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = tenant_capacity */
/******************************************/
CREATE TABLE `tenant_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单
位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最
大个数',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的
子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更
历史数量',
`gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建
时间',
`gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修
改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='租户容量信息表';
CREATE TABLE `tenant_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) default '' COMMENT 'tenant_id',
`tenant_name` varchar(128) default '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='tenant_info';
CREATE TABLE users (
username varchar(50) NOT NULL PRIMARY KEY,
password varchar(500) NOT NULL,
enabled boolean NOT NULL
);
CREATE TABLE roles (
username varchar(50) NOT NULL,
role varchar(50) NOT NULL,
constraint uk_username_role UNIQUE (username,role)
);
CREATE TABLE permissions (
role varchar(50) NOT NULL,
resource varchar(512) NOT NULL,
action varchar(8) NOT NULL,
constraint uk_role_permission UNIQUE (role,resource,action)
);
INSERT INTO users (username, password, enabled) VALUES ('nacos',
'$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

6. 在 ./nacos-docker/example 目录下新建 nacos.yaml 文件,配置内容如下

version: "3.8"
services:
nacos:
image: nacos/nacos-server
container_name: nacos
env_file:
- ../env/custom-application-config.env
volumes:
- ./standalone-logs/:/home/nacos/logs
-
./init.d/application.properties:/home/nacos/conf/application.properties
ports:
- "8848:8848"
- "9848:9848"
environment:
JVM_XMS: 512m
JVM_XMX: 512m
restart: on-failure

JVM_XMS: 就是初始分配堆内存配置-Xms,默认 :2g
JVM_XMX:就是堆内存最大配置-Xmx,默认 :2g
JVM_XMN:就是堆内存中年轻代内存大小配置-Xmn,默认 :1g
JVM_MS:就是元数据空间-XX:MetaspaceSize,默认 :128m
JVM_MMS:就是元数据空间-XX:MaxMetaspaceSize,默认 :320m

7. 单机模式 创建容器
docker-compose -f example/nacos.yaml up

访问:http://你的IP地址:8848/nacos
默认登录账号: nacos ,密码: nacos

   .Net 6 使用Nacos  

nuget 安装:
1. nacos-sdk-csharp 1.3.4
2. nacos-sdk-csharp.AspNetCore 1.3.4
3. nacos-sdk-csharp.Extensions.Configuration 1.3.4

 

服务发现

1. nuget 安装: 1. nacos-sdk-csharp 2. nacos-sdk-csharp.AspNetCore 3. nacos-sdk-csharp.Extensions.Configuration

2.创建3个项目

一个客户端NacosClient,两个服务端NacosService1,和NacosService2

appsettings.json配置

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "nacos": {
    "ServerAddresses": [
      "http://127.0.0.1:8848"
    ],
    "DefaultTimeOut": 15000,//请求超时时间
    "Namespace": "6c0da0b7-eb66-4c15-b73e-15b983d07548",//命名空间id
    "ListenInterval": 1000,//监听间隔时间
    "ServiceName": "NacosService",//客户端和服务端服务名称不一样
    "GroupName": "DEFAULT_GROUP",// 默认分组名称
    "ClusterName": "DEFAULT",
    // 如果去掉这个配置项,系统会自动获取服务IP(建议去掉这个配置)
//     "Ip": "localhost",//注册中心,服务调用的IP地址
//     "PreferredNetworks": "localhost", //首选网络
//    // 如果去掉这个配置项,系统会自动获取服务运行的端口号(建议去掉这个配置)
//     "Port": 5199, // // 写0 表示80端口()
    "Weight": 100,
    "RegisterEnabled": true,
    "InstanceEnabled": true,
    "Ephemeral": true,
    "Secure": false,//表示当前服务是否时安全实例,用于标识访问的时候是否要启用 https
    "AccessKey": "",
    "SecretKey": "",
    "UserName": "",
    "Password": "",
    "ConfigUseRpc": false,
    "NamingUseRpc": false,
    "NamingLoadCacheAtStart": "",
    "LBStrategy": "WeightRandom",// 负载均衡策略:WeightRandom(随机), WeightRoundRobin(轮询)
    "Metadata": {
      "aa": "bb",
      "cc": "dd"
    }
  }
}
3. 在program.cs 文件注入服务:
builder.Services.AddNacosAspNet(builder.Configuration);
4. 服务端创建任意控制器
[Route("[controller]/[action]")]
[ApiController]
public class UserController:ControllerBase
{
[HttpGet]
public IActionResult GetUserList()
{
List<UserInfo> list = new()
{
new(1, "张三"), new(2, "李四")
};
return Ok(list);
}
}
public record UserInfo(int Id,string UserName);

 

5.客户端调用
[Route("[controller]/[action]")]
[ApiController]
public class InvokeController:ControllerBase
{
private readonly INacosNamingService _nacosNamingService;
public InvokeController(INacosNamingService nacosNamingService)
{
_nacosNamingService = nacosNamingService;
}
[HttpGet]
public async Task<IActionResult> GetUserList()
{
// 获取服务的实例(自带负载均衡)
var instance = await_nacosNamingService.SelectOneHealthyInstance("NetCloud.Nacos.UserService");
var host = $"{instance.Ip}:{instance.Port}";
var baseUrl = instance.Metadata.TryGetValue("secure", out _) //放弃out输出
? $"https://{host}"
: $"http://{host}";
if (string.IsNullOrWhiteSpace(baseUrl))
{
return Ok("empty");
}
var url = $"{baseUrl}/user/GetUserList";
using (HttpClient client = new HttpClient())
{
var result = await client.GetAsync(url);
return Ok(await result.Content.ReadAsStringAsync());
}
}
}

 

 

 

 

标签:COMMENT,00,varchar,DEFAULT,Nacos,使用,NET,NULL,id
From: https://www.cnblogs.com/MingQiu/p/18013779

相关文章

  • 在 PowerShell 中,可以使用 Remove-Item 命令来替代 rmdir 命令(在 cmd 窗口下使用)。Rem
    rmdir/?删除一个目录。RMDIR[/S][/Q][drive:]pathRD[/S][/Q][drive:]path  /S   除目录本身外,还将删除指定目录下的所有子目录和      文件。用于删除目录树。  /Q   安静模式,带/S删除目录树时不要求确认 在PowerShell中,可以使......
  • 自用 NAS 折腾,在 PVE 上使用 9P 文件系统透传 ZFS
    目录基本原理配置方法第一步虚拟机开启9p支持第二步物理机准备共享目录第三步物理机在qemu.conf中添加第四步虚拟机/etc/modules添加9pnet_virtio:nochannelsavailablefordevice基本原理物理机配置共享文件夹,权限和虚拟机一致物理机修改虚拟机的qemuconfig,(在h......
  • 没有APP应用商店,也能用了,直接解包,使用。
    对于解包.AppxBundle文件,可以按照以下步骤进行操作:首先,确保你的操作系统是Windows10或更高版本,因为.AppxBundle文件主要用于Windows应用程序。找到你想要解包的.AppxBundle文件,并将其复制到一个新的文件夹中。将文件夹中的.AppxBundle文件的扩展名更改为.z......
  • Blazor OIDC 单点登录授权实例5 - 独立SSR App (net8 webapp ) 端授权
    目录:OpenID与OAuth2基础知识BlazorwasmGoogle登录BlazorwasmGitee码云登录BlazorOIDC单点登录授权实例1-建立和配置IDS身份验证服务BlazorOIDC单点登录授权实例2-登录信息组件wasmBlazorOIDC单点登录授权实例3-服务端管理组件BlazorOIDC单点登录授权实......
  • 【译】.NET 8 网络改进(三)
    原文|Máňa,NataliaKondratyeva翻译|郑子铭简化的SocketsHttpHandler配置.NET8添加了更方便、更流畅的方式来使用SocketsHttpHandler作为HttpClientFactory中的主处理程序(dotnet/runtime#84075)。您可以使用UseSocketsHttpHandler方法设置和配置SocketsHttp......
  • sublimetext 使用中遇到的问题记录
    sublimetext使用关键词:应该是编码过程中出现了系统问题,所以导致无法正常运行,才会显示“unregistered”(未登记、未注册)。sublimetext本身是不支持中文编码的,所以要解决“unregistered”的问题,需要通过安装插件来解决。具体步骤是:打开这个文件,并确认它的编码是UTF-8。然后选择......
  • 使用 docker-compose 部署 nacos(单机和集群)
    之前已经编写过有关nacos的单机部署和集群部署,是直接在CentOS7上直接部署的,之前的博客链接如下:单机版nacos部署:https://www.cnblogs.com/studyjobs/p/17380184.html集群版nacos部署:https://www.cnblogs.com/studyjobs/p/17383397.html为了进一步简化部署,本篇博客介绍如......
  • [Kyana]Linux使用小技巧
    01|使用逻辑卷使存储空间可扩展前排提示小白在使用Linux虚拟机时,常在开始分配较小的硬盘空间,在后续使用中常出现硬盘空间不足的问题,轻则无法安装软件,重则无法更新。本文推荐使用逻辑卷方式安装操作系统,便于后续磁盘扩充。在逻辑卷上创建文件系统流程:层次(命令):|物理磁盘|(-fdis......
  • esp32笔记[15]-使用LVGL 9.0显示图片
    摘要在esp32s3上使用LVGL9.0显示图片.关键信息编译环境:ESP-IDFv4.4LVGL:9.0board:酷世DIYESP32S3开发板Link:https://item.taobao.com/item.htm?&id=655913924680flashsize:8MBLCDdriver:ILI9341LCDmodule:2.4TFTSPI240x320v1.2Touchdriver:XPT2046......
  • DeepFaceLab换脸使用
    将视频转换成图片,从图片中提取人脸,从人脸中学习特征。然后应用模型,先对图片进行换脸,然后把图片合成视频。1.src视频分解图像2.dst视频分解图像3.src提取面部4.dst提取面部5.训练模型6.应用模型7.合成视频批处理文件步骤依次如下:src视频提取图像extractimagesfro......