SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
微服务注册中心
注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。

微服务注册中心
服务注册中心(简称注册中心)是微服务框架的一个重要组件,在微服务架构里主要起到了协调者的一个作用,注册中心一般包括如下几个功能:
- 注册发现:
- 服务注册/反注册:保证服务提供者和服务调用者的信息
- 服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能
- 服务路由(可选):具有筛选整合服务提供者的能力
- 服务配置:
- 配置订阅:服务提供者和服务调用者订阅微服务相关的配置
- 配置下发:主动将配置托送给服务提供者和服务调用者
- 服务监控检测:
- 检测服务提供者的健康情况
常见的注册中心
-
Zookeeper
zookeeper它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步、集群管理、分布式应用配置项的管理等。简单来说zookeeper=文件系统+监听通知机制
-
Eureka
Eureka是Java语言上,基于Restful Api开发的服务注册与发现组件,SpringCloud Netflix 中的重要组件
-
Consul
Consul是由HashiCorp基于Go语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件,采用Raft算法保证服务的一致性,并且支持健康检查
-
Nacos
Nacos是一个更易于构建云原生应用的动态服务发现,配置管理和服务平台,简单来说Nacos就是注册中心+配置中心的组合,提供简单易用的特征集,帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。Nacos还是Spring Cloud Alibaba 组件之一,负责服务注册与发现
| 组件名 | 语言 | CAP | 一致性算法 | 服务健康检查 | 对外暴露接口 |
|---|---|---|---|---|---|
| Eureka | Java | AP | 无 | 可配支持 | HTTP |
| Consul | Go | CP | Raft | 支持 | HTTP/DNS |
| Zookeeper | Java | CP | Paxos | 支持 | 客户端 |
| Nacos | Java | AP | Raft | 支持 | HTTP |
Eureka闭源影响:
在Eureka的GitHub上,宣布Eureka 2.x闭源。意味着如果开发者继续使用作为2.x分支上现有的工作时,自负风险
Nacos简介
Nacos致力于帮助您发现,配置和管理微服务。Nacos提供了一组简单易用的特征集,帮助您快速实现动态服务发现,服务配置,服务元数据及流量管理。Nacos的作用就是一个注册中心,用来管理注册上来的各个微服务
-
Nacos下载地址
https://github.com/alibaba/nacos/releases,下载zip格式的安装包,解压安装
-
Nacos的启动
命令启动:
# 切换目录 cd nacos/bin # 命令启动 startup.cmd -m standalone双击启动startup.cmd 运行
Nacos启动浏览器访问
http://localhost:8848/nacos即可访问服务,默认的账号密码是nacos/nacos
项目中搭建Nacos
基于原来的项目搭建Nacos
- 将shop_product商品微服务注册到Nacos
实现步骤:
-
pom文件中添加Nacos依赖
<!--nacos客户端--> <!--服务注册--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> -
在启动类上添加@EnableDiscoveryClient注解
@SpringBootApplication @EnableDiscoveryClient public class ShopOrderApplication {public static void main(String[] args) { SpringApplication.run(ShopOrderApplication.class, args);} } -
在application.yaml中添加Nacos服务的地址
server:port: 8081 spring:application:name: service-product # 注册到服务中心中的名字datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=trueusername: rootpassword: 123456# 配置nacoscloud:nacos:discovery:server-addr: localhost:8848#server-addr: nacos服务地址:端口号 -
启动服务,观察Nacos的控制面板中是否有注册上来的商品微服务

刷新nacos,能看到注册的微服务即注册成功
- 将shop_order订单微服务注册到Nacos
实现步骤:
-
在pom文件添加nacos的依赖
<!--nacos客户端--> <!--服务注册--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> -
在启动类上添加@EnableDiscoveryClient注解
@SpringBootApplication @EnableDiscoveryClient public class ShopOrderApplication {public static void main(String[] args) { SpringApplication.run(ShopOrderApplication.class, args);} } -
在application.yaml中添加nacos服务的地址
server:port: 8091 spring:application:name: service-order # 注册到服务中心中的名字datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=trueusername: rootpassword: 123456cloud:nacos:discovery:server-addr: 127.0.0.1:8848 -
启动服务,观察nacos的控制面板中是否有注册上来的订单微服务,同shop_product
服务调用Ribbon入门
经过以上的学习,已经实现了服务的注册和服务发现。当启动某个服务的时候,可以通过HTTP的形式将信息注册到注册中心,并且可以通过SpringCloud提供的工具获取注册中心的服务列表。但是服务之间的调用还存在很多的问题,如何更加方便的调用微服务,多个微服务的提供者如何选择,如何负载均衡等
Ribbon的概述
是Netflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中,Nacos一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Nacos中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。
在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务
Ribbon的主要作用
-
服务调用
基于Ribbon实现服务调用,是通过拉取到的所有服务列表组成(服务名-请求路径的)映射关系。借助RestTemplate最终进行调用
-
负载均衡
当有多个服务提供者时,Ribbon可以根据负载均衡的算法自动的选择需要调用的服务地址
基于Ribbon实现服务调用
需求:基于Ribbon实现订单调用商品的服务
实现步骤:
-
坐标依赖
在springcloud提供的服务发现的jar中已经包含了Ribbon的依赖。所以在这不需要子啊导入任何额外的坐标
-
工程改造
服务消费者(服务的调用者)
在注入RestTemplate的方法上添加注解==@LoadBalanced==注解
@Configuration public class RestTemplateConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();} }通过服务名称消费使用
@RestController @RequestMapping("/order") public class OrderController {@Autowired(required = false)private IOrderService orderService;@Autowired(required = false)private RestTemplate restTemplate;// 模拟下订单业务@RequestMapping("/save/{pid}")public Order order (@PathVariable("pid") int pid) {// 调用商品的微服务String url = "service-product";Product product = restTemplate.getForObject("http://"+ url +"/product/" + pid, Product.class);// 创建订单Order order = new Order();order.setUid(1);order.setUsername("测试用户");order.setPid(pid);order.setPname(product.getPname());order.setPprice(product.getPprice());order.setNumber(1);orderService.save(order);return order;} }注意:restTemplate.getForObject(“http://商品服务名称/product/1”+pid,Product.class)
这里的商品服务名称是:注册商品服务时的名称,即shop_product的yaml配置文件中的application.name
路径是根据shop_product中通过id查询商品的路径编写
服务调用Ribbon高级
负载均衡概述
在搭建网对时,如果单节点的 web服务性能和可靠性都法达到要求;或者是在使用外网服务时,经常担心被人攻破,一不小就会有打开外网端口的情况,通常这时加人负载有就能有效
决服务问题。
负载均衡是一种基础的网络服务,其原理是通过运行在前面的负载均衡服务,按照指定的负载均衡算法,将流量分雷到后端服务集群上,从而为系统提供并行扩展的能力。
负载均衡的应用场景包括流量包、转发规则以及后端服务,由于该服务有内外网隔离,健康检查功能,能够有效提供系统的安全性和可用性。

负载均衡分类
-
客户端负载均衡
先发送请求到负载均衡服务器或者软件,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;即在服务器端再进行负载均衡算法分配
-
服务端负载均衡
客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡,即在客户端就进行负载均衡算法分配
基于Ribbon实现负载均衡
需求:实现订单和商品之间的客户端负载均衡
实现步骤:
-
先搭建多服务实例(即水平拓展)
订单服务需要调商品服务,所以需要再启动一个shop-product微服务,设置端口号为8082

-
启动两个shop_product和shop_order
发送多次请求,可以在调用的product服务中打印内容,查看控制台打印内容,Ribbon默认的负载均衡策略是轮询的方式
负载均衡的策略
Ribbion内置了多种负载均衡策略,内部负责负载均衡的顶级接口为com.netflix.loadbalancer.IRule

- com.netflix.loadbalancer.RoundRobinRule:以轮询的方式进行负载均衡
- com.netflix.loadbalancer.RandomRule:随机策略
- com.netflix.loadbalancer.RetryRule:重试策略
- com.netflix.loadbalancer.WeightedResponseTimeRule:权重策略。会计算每个服务的权重,越高的被调用的可能性越大
- com.netflix.loadbalancer.BestAvailableRule:最佳策略。遍历所有的服务实例,过滤掉故障实例,并返回请求数最小的实力返回
- com.netflix.loadbalancer.AvailabilityFilteringRule:可用过滤策略。过滤掉故障和请求次数超过阈值的服务实例,再从剩下的实例中轮询调用
- ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房,一个机架等,而后再对Zone内的多个服务做轮询
自定义指定负载均衡策略
方式一,全局设置:
定义一个新的IRule:
@Bean
public IRule randomRule(){return new RandomRule(); // 随机策略
}
方式二,局部设置:
在yaml配置文件中配置:
在shop_order(客户端配置文件中)的yaml文件中配置被调用的服务,需要调用的服务器名称和策略
server:port: 8091
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=trueusername: rootpassword: 123456cloud:nacos:discovery:server-addr: 127.0.0.1:8848
# 配置随机策略
# 需要调用的服务器名称
service-product:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule# 随机策略完全路径
Nacos配置管理
Nacos除了可做注册中心,同样可以做配置管理来使用
统一配置管理
当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错我们需要一种统一配置管理方案,可以集中管理所有实例的配置。

Nacos一方面可以将配置集中管理,另一方面可以在配置变更时,即使通知微服务,实现配置的热更新
在业界中常见的服务配置中心如下:
- **Apollo:**由携程开源的分布式配置中心。特点很多:配置更新之后可以实时生效,支持灰度发布功能,并且能对所有的配置进行版本管理、操作审计等功能,提供开放平台API。并且
料也写的很详细 - **Disconf:**由百度开源的分布式配置中心。它是基于Zookeeper来实现配置变更后实时通知和生效的
- **SpringCloud Config:**Spring Cloud中带的配置中心组件。它和Spring是无缝集成,使用起来非常方便,并且它的配置存储支持Git,不过它没有可视化的操作界面,配置的生效也不是实时的,需要重启或去刷新
- **Nacos:**SpringCloud alibaba技术栈中的一个组件,前面我们已经使用它做过服务注册中心。其实它也继承了服务配置的功能,我们可以直接使用它作为服务配置中心
在nacos中添加配置文件

nacos配置中心新建配置起名规范:
服务名称-环境简称.文件后缀:shop_order-dev.yaml
从微服务拉取配置
微服务要拉取nacos中管理的配置,并且与本地的application.yaml配置合并,才能完成项目启动
spring引入了一种新的配置文件:boostrap.yaml文件,会在application.yaml之前被读取,流程:

配置实现步骤
-
引入nacos-config依赖
<!--统一配置--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> -
添加bootstrap.yaml
不能使用原来的application.yaml作为配置问价你,新建一个bootstrap.yaml作为配置文件
server:port: 8091 spring:application:name: service-ordercloud:nacos:config:server-addr: 127.0.0.1:8848 #nacos 中心地址file-extension: yaml # 配置文件格式profiles:active: dev #环境表示,开发环境配置文件优先级(由高到低):
bootstrap.properties–>bootstrap.yaml–>application.properties–>application.yaml
-
在nacos中添加配置:service-order-dev

-
测试:
模拟下单业务,正常下单即成功
配置热更新
最终目的是修改nacos中的配置后,微服务中无需重启即可让配置文件生效,也就是配置热更新。实现热更新两种方式:
在配置中心添加配置(随便起的键值对为了看效果)
config:env: test
-
方式一
只需要在需要动态读取配置的类上添加==@RefreshScope==注解就可以
@RestController @RequestMapping("/order") @RefreshScope // 动态读取配置 public class OrderController {@Value("${config.env}")private String appName;@GetMapping("/nacos-config-test")public String nacosConfigTest(){return appName;} } -
方式二
硬编码方式
@Value(("${config.env}")) private String env; @Autowired private ConfigurableApplicationContext applicationContext;@GetMapping("nacos-config-test2") public String nacosConfigTest2(){return applicationContext.getEnvironment().getProperty("config.env"); }
当在配置中心中修改了config.env键值对,服务不需要重新启动,即可拿到修改后的值
配置共享
配置共享即抽取相同的配置
同服务内配置共享
实现步骤:

-
新建一个以service-order命名的配置文件,然后将其所有环境的公共配置放在里面

-
新建一个名为service-order-test.yaml配置存放测试环境的配置
-
新建一个名为service-order-dev.yaml配置存放开发环境的配置
-
在两个环境文件中配置独有信息

-
添加测试方法
修改bootstrap.yaml中的环境看字符串打印的内容
profiles:active: dev #环境表示,开发环境#active:test@Value(("${config.env}")) private String env;@GetMapping("/nacos-config-test3") public String nacosConfigTest3(){return env; }
不同微服务共享配置
不同服务之间实现配置共享的原理类似于文件引入,就是定义一个公共配置,然后在当前配置中引入
-
在nacos中定义一个DataID为all-service.yaml(随便起)的配置,用于所有微服务共享
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=trueusername: rootpassword: 123456cloud:nacos:discovery:server-addr: 127.0.0.1:8848 -
修改bootstrap.yaml
server:port: 8091 spring:application:name: service-ordercloud:nacos:config:server-addr: 127.0.0.1:8848 #nacos 中心地址file-extension: yaml # 配置文件格式shared-dataids: all-service.yaml #配置要引入的配置refreshable-dataids: all-service.yaml # 配置要实现动态配置刷新的配置profiles:active: dev #环境表示,开发环境 -
启动商品微服务测试
配置共享的优先级
当nacos、服务本地同时出现相同属性时,优先级有高低之分:

相关文章:
SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
微服务注册中心 注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。 微服务注册中心 服务注…...
身份证号码校验
根据《新版外国人永久居留身份证适配性改造要点》,公司需要把代码中对身份证的校验进行优化 就文档内容可以看到需要优化的要点是: 新版永居证号码以 9 开头 受理地区代码出生日期顺序码校验码;(共18位) egÿ…...
ArcGIS如何处理并加载Excel中坐标数据?
做GIS行业的各位肯定免不了跟数据打交道,其中数据的处理说复杂也复杂,因为我们要花时间去做数据的转换及调整工作,那说简单也简单,因为我们有很多的工具可以使用,那么今天我就给大家带来处理Excel中的GIS数据中的其中一…...
C++标准模板(STL)- 类型支持 (类型修改,从给定类型移除 const 或/与 volatile 限定符,std::remove_cv)
类型特性 类型特性定义一个编译时基于模板的结构,以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为,除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…...
nodejs搭建本地服务
前端开发时想自己有个本地服务如下操作直接上干货 1.在桌面上直接在powerShell 输入命令行 npm install -g express-generator 然后 npm install -g express 然后新建一个例如server的文件夹 在powerShell执行 express myStudy -e 端口号默认是3000 直接在地址栏输入 http://…...
如何看待Unity新收费模式?
Unity新收费模式的变化主要在于将收费重心从功能分级收费转变为资源使用量收费,这个改变已经引起了一定的争议和反响。以下是我个人的看法: 优点: 更公平的收费方式:新的收费模式将更加公平,用户只需按照实际使用的数…...
Excel数据可视化—波士顿矩阵图【四象限图】
EXCEL系列文章目录 Excel系列文章是本人亲身经历职场之后萌发的想法,为什么Excel覆盖如此之广,几乎每个公司、学校、家庭都在使用,但是它深藏的宝藏功能却很少被人使用,PQ、BI这些功能同样适用于数据分析;并且在一些需…...
【Java】智慧工地管理系统源代码,支持二次开发,SaaS模式
智慧工地系统围绕工程现场人、机、料、法、环及施工过程中质量、安全、进度、成本等各项数据满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效。 一、行业现状 1、施工现场管理难:安全事故频发,人工巡检难度大,质量进度协同难等…...
Lstm+transformer的刀具磨损预测
视频讲解: 基于Lstm+transformer的刀具磨损预测实战_哔哩哔哩_bilibili 结果展示: 数据展示: 主要代码: # pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple/ # pip install optuna -i https://pypi.tuna.tsinghua.edu.cn/simple/ import numpy as np…...
本机idea连接虚拟机中的Hbase
相关环境: 虚拟机:Centos7 hadoop版本:3.1.3 hbase版本:2.4.11 zookeeper版本:3.5.7 Java IDE:IDEA JDK:8 步骤 步骤一:在idea创建一个maven项目 步骤二:在虚拟机里找到core-site.x…...
.NET中的Object类学习3_MemberwiseClone方法
文章目录 一、前言二、Object.MemberwiseClone方法1 定义2 示例3 备注 三、总结 一、前言 按照MSDN文档的章节顺序来,本文应该是第五节。 但是学了上一节 Finalize之后,发现其内容对实际开发帮助不大。 所以这次跳过了前面的GetHashCode、GetType章节&a…...
鼎捷前端开发校招岗技术面面经(已过)
前言 鼎捷一共两面,一面针对技术,这篇博客记录下我认为有价值的问题。 有价值的提问 js类的继承的方式 es5,涉及到原型、原型链的继承; es6,类与对象,extends,super; 还问到Vue…...
Rockchip平台rk3588源码下载编译(基于Android13)
Rockchip平台rk3588源码下载编译(基于Android13) 源码下载 下载地址 repo init --repo-url https://gerrit.rock-chips.com:8443/repo-release/tools/repo -u https://gerrit.rock-chips.com:8443/Android_T/manifests.git -m Android13.xml服务器镜像下载 repo init --rep…...
RuntimeError: PyPI no longer supports ‘pip search‘ (or XML-RPC search).
RuntimeError: PyPI no longer supports ‘pip search’ (or XML-RPC search). 1. ERROR: XMLRPC request failed Deprecated Methods https://warehouse.pypa.io/api-reference/xml-rpc.html#deprecated-methods PyPI XMLRPC Search Disabled https://status.python.org/inc…...
21款奔驰GLS450升级23P驾驶辅助 提升安全出行
辅助驾驶越来越多的被大家所青睐!为了提升驾驶安全性和舒适便捷性奔驰改装原厂半自动驾驶23P辅助系统 23P智能辅助驾驶系统还是很有必要的,因为在跑高速的时候可以使用23P智能驾驶的自动保持车速,保持车距,车道自动居中行驶以及自…...
iOS越狱检测总结
文章目录 前言检测越狱文件私有目录检测检测越狱软件检测系统目录是否变为链接动态库检测环境变量检测系统调用检测指令集调用检测其他方式检测 前言 在之前的文章中,已经带大家一起制作了一个屏蔽越狱检测的Tweak。本文就和大家一起学习整理一下iOS系统中有哪些越…...
场景驱动的 AI 体验设计:如何让智能 IDE 赋能遗留系统重写
作为 AutoDev 的核心开发,我们不仅在不断丰富 AutoDev 的功能以满足不同公司的定制需求,还在与各种团队进行持续交流。在处理遗留系统时,我们发现程序员们日常工作中需要面对大量使用过时技术、基础设施混乱的系统。 在这个背景下,…...
【封装UI组件库系列】搭建项目及准备工作
封装UI组件库系列第一篇搭建项目 前言 🌟搭建项目 创建工程 基本结构 1.创建8个组件展示页面 2.配置路由文件router/index.js 3.页面布局 🌟总结 前言 在前端开发中,大家可能已经用过各种各样的UI组件库了,现在市面上热…...
C#使用DateTime获取日期和时间
在C#中,DateTime类是用来处理日期和时间的类。它具有许多属性和方法,用于操作和获取日期和时间的不同部分。以下是DateTime类的一些常用属性和方法。 属性: 1、DateTime.Now:获取当前日期和时间。 DateTime currentDateTime D…...
rook-ceph部署
rook是云原生存储编排器,本身不提供存储。 下载 git clone --single-branch --branch v1.11.4 https://github.com/rook/rook.git cd rook/deploy/examples 修改镜像地址images.txt operator方式部署rook kubectl apply -f crds.yaml -f common.yaml -f operator…...
如何3分钟搭建免费H5页面编辑器:零代码制作专业移动端页面
如何3分钟搭建免费H5页面编辑器:零代码制作专业移动端页面 【免费下载链接】h5maker h5编辑器类似maka、易企秀 账号/密码:admin 项目地址: https://gitcode.com/gh_mirrors/h5/h5maker 还在为制作精美的H5页面而发愁吗?想要像专业设计…...
UML分析与设计 - 软考备战(五十四)
UML分析与设计 参考资料: 九种常见UML图(分类图解) - HZX↑ - 博客园 UML科普文,一篇文章掌握14种UML图 - 知乎 『这就是UML!』系列内容第8讲:协作图 - ProcessOn知识社区 『这就是UML!』系…...
炉石传说智能脚本:新手从零到精通的完整指南
炉石传说智能脚本:新手从零到精通的完整指南 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 你是否厌倦了重复的炉石传说日常任务ÿ…...
kirolink:基于Go的AWS SSO令牌代理,无缝桥接Claude Code与内部CodeWhisperer
1. 项目概述与核心价值如果你和我一样,日常开发中重度依赖像 Claude Code 这样的 AI 编程助手,但同时又因为公司或项目使用了 Kiro 这类基于 AWS SSO 的内部身份认证平台而头疼,那么kirolink这个工具的出现,绝对能让你眼前一亮。简…...
如何在 matlab 中调用 taotoken 平台的多模型 api 接口
如何在 MATLAB 中调用 Taotoken 平台的多模型 API 接口 基础教程类,面向使用 MATLAB 进行科学计算或算法开发的工程师,介绍如何利用 Taotoken 提供的 OpenAI 兼容 API 在 MATLAB 环境中集成大模型能力,重点说明如何设置 API 密钥与 base_url…...
ChatGPT系统提示词泄露:揭秘模块化AI架构与工具调用机制
1. 项目概述:ChatGPT系统提示词泄露库的深度解析如果你和我一样,长期在AI应用开发的一线,那么你一定对ChatGPT内部如何运作充满好奇。我们每天都在和它对话,调用它的API,但它的“大脑”里到底装了什么指令,…...
Python 3.12升级后pip直接罢工?一招‘ensurepip’命令救活你的包管理器(附详细步骤)
Python 3.12升级后pip罢工?官方推荐的终极修复方案 刚升级到Python 3.12的开发者们,是否遇到了一个令人抓狂的问题——pip命令突然无法使用了?这就像买了一辆新车却发现油箱盖打不开一样让人沮丧。别担心,这不是你一个人的问题&am…...
Rust编程中的命名冲突与解决方案
在Rust编程中,模块命名和导入的管理是一项经常遇到的挑战,尤其是当多个库具有相似的命名时。本文将通过一个实际案例来探讨如何解决Rust中常见的命名冲突问题。 问题背景 假设你是一个Rust新手,正在开发一个应用程序,该应用程序需要使用zip模块来解压.zip文件,同时需要p…...
教育科技公司如何借助 Taotoken 为不同课程模块匹配最佳 AI 模型
教育科技公司如何借助 Taotoken 为不同课程模块匹配最佳 AI 模型 在开发集成 AI 辅导功能的教育产品时,一个常见的工程挑战是:单一的大模型往往难以在所有学科和场景中都表现出色。语文作文批改需要模型具备优秀的文本理解和生成能力,数学解…...
5分钟掌握:AI换脸神器roop-unleashed完全实战指南
5分钟掌握:AI换脸神器roop-unleashed完全实战指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 你是否曾经梦想过,只需一张照片就…...
