apache-dubbo
dubbo
文档地址
dubbo 官方文档地址
https://dubbo.apache.org/zh-cn/docs/user/references/api.html
nacos 官方文档地址
https://nacos.io/zh-cn/docs/quick-start.html
nacos下载地址
https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.tar.gz
案例代码
https://gitee.com/hailong1024/springboot-dubbo.git
组件版本
| 组件 | 版本 |
|---|---|
| Spring Boot | 2.7.7 |
| dubbo | 3.2.9 |
| nacos客户端 | 2.4.3 |
| nacos | 2.3.0 |
maven依赖
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.2.9</version></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.3.0</version></dependency>
单协议,单注册中心
yml配置
dubbo:application:name: dubbo-producerprotocol: # 单协议(dubbo)name: dubboport: 2881registry: # 单注册中心address: nacos://192.168.10.4:8848?username=nacos&password=nacos&namespace=public
多注册中心
yml配置
dubbo:application:name: dubbo-producerprotocol: # 单协议(dubbo)name: dubboport: 2881registries: # 多注册中心local: # 本地address: nacos://127.0.0.1:8848timeout: 1000dev: # 开发address: nacos://192.168.10.4:8848?username=nacos&password=nacos&namespace=publictimeout: 1000default: true
服务注册
@DubboService(registry = {"local"})
public class ProducerServiceImpl implements IApiService {@Overridepublic String print(String name) {return name + ":hello";}
}
在服务注册中使用 @DubboService(registry = {“local”,“dev”}) 指定注册中心,可以指定多个注册中心。
多协议 (dubbo和rest协议)
yml配置
dubbo:application:name: dubbo-producerregistries: # 多注册中心local: # 本地address: nacos://127.0.0.1:8848timeout: 1000dev: # 开发address: nacos://192.168.10.4:8848?username=nacos&password=nacos&namespace=publictimeout: 1000default: trueprotocols: # 多协议dubbo: # dubbo协议name: dubboport: 2882 # dubbo协议默认端口是20880rest: # rest协议name: rest # port: 2883 # rest协议默认端口是8080server: jetty
dubbo接口层配置
maven依赖
<dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-client</artifactId><version>3.13.0.Final</version></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId><version>3.13.0.Final</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-server</artifactId></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-servlet</artifactId></dependency>
接口配置
@Path("/api")
public interface IApiService {@GET@Path("/print")String print(String name);
}
服务注册
@DubboService(registry = {"local"},protocol = {"dubbo","rest"})
public class ProducerServiceImpl implements IApiService {@Overridepublic String print(String name) {return name + ":hello";}
}
使用 @DubboService(registry = {“local”},protocol = {“dubbo”,“rest”}) 指定注册中心和协议
注:不推荐使用rest协议,rest会存在一些问题,比如序列化
负载均衡策略
//服务端配置
@DubboService(loadbalance = "roundrobin")
//消费端配置
@DubboReference(registry = {"dev"},check = false,loadbalance = "random")
private IApiService iApiService;
loacdbalance属性指定负载均衡策略,默认是random,可选值有:random、roundrobin、leastactive、consistenthash
- random:随机
- roundrobin:轮询
- leastactive:最少活跃调用数
- consistenthash:一致性hash
集群容错机制
cluster属性指定集群容错策略,默认是failover,可选值有:failover、failfast、failsafe、failback、forking、broadcast
- failover:失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过retries="2"来设置重试次数(不含第一次)。
- failfast:快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。
- failsafe:失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
- failback:失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
- forking:并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks=“2” 来设置最大并行数。
- broadcast:广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。
服务降级
histroy配置
@Reference(version = "1.0.0",group = "dubbo",timeout = 1000,check = false,retries = 0,loadbalance = "roundrobin",cluster = "failfast",registry = {"dev"},mock = "com.example.dubbo.service.impl.ApiServiceMock")
mock = “com.example.springbootdubboconsumer.mock.ApiServiceMock”
public class ApiServiceMock implements IApiService {@Overridepublic String print(String name) {return "print:服务降级"+System.currentTimeMillis();}
}
常见配置
dubbo启动检查
@DubboReference(check = false) // 关闭启动检查,默认为true,消费端会从注册中心检测提供端服务是否存在。
dubbo超时配置
@DubboReference(timeout = 1000) // 配置超时时间,单位毫秒,默认是1000ms
dubbo重试次数
@DubboReference(retries = 2) // 配置重试次数,默认是2次,不含第一次调用。
dubbo版本控制
@DubboReference(version = “1.0.0”) // 配置版本号,默认是*,表示所有版本。
dubbo分组控制
@DubboReference(group = “dubbo”) // 配置分组,默认是*,表示所有分组。
dubbo多版本控制
@DubboReference(version = “1.0.0”,group = “dubbo”) // 配置多版本,默认是*,表示所有版本。
dubbo多注册中心
@DubboReference(registry = {“local”,“dev”}) // 配置多注册中心,默认是*,表示所有注册中心。
dubbo多协议
@DubboReference(protocol = {“dubbo”,“rest”}) // 配置多协议,默认是*,表示所有协议。
dubbo多注册中心多协议
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”}) // 配置多注册中心多协议,默认是*,表示所有注册中心所有协议。
dubbo多注册中心多协议多版本
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”) // 配置多注册中心多协议多版本,默认是*,表示所有注册中心所有协议所有版本。
dubbo多注册中心多协议多版本多分组
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false) // 配置多注册中心多协议多版本多分组,默认是*,表示所有注册中心所有协议所有版本所有分组。
dubbo多注册中心多协议多版本多分组多重试次数
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false,loadbalance = “roundrobin”) // 配置多注册中心多协议多版本多分组多重试次数,默认是*,表示所有注册中心
所有协议所有版本所有分组所有重试次数。
dubbo多注册中心多协议多版本多分组多重试次数多超时时间
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false,loadbalance = “roundrobin”,cluster = “failover”) // 配置多注册中心多协议多版本多分组多重试次数多超时
时间,默认是*,表示所有注册中心所有协议所有版本所有分组所有重试次数所有超时时间。
dubbo多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false,loadbalance = “roundrobin”,cluster = “failover”,filter = “myFilter”) // 配置多注册中心多协议多版本多分组
多重试次数多超时时间多负载均衡策略,默认是*,表示所有注册中心所有协议所有版本所有分组所有重试次数所有超时时间所有负载均衡策略。
dubbo多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false,loadbalance = “roundrobin”,cluster = “failover”,filter = “myFilter”,interface = IApiService.class) // 配置多注册
中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器,默认是*,表示所有注册中心所有协议所有版本所有分组所有重试次数所有超时时间所有负载均衡策略所有过滤器。
dubbo多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器多接口
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false,loadbalance = “roundrobin”,cluster = “failover”,filter = “myFilter”,interface = IApiService.class,timeout = 1000
) // 配置多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器多接口,默认是*,表示所有注册中心所有协议所有版本所有分组所有重试次数所有超时时间所有负载均衡策略所有过滤器所有接口。
dubbo多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器多接口多超时时间
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false,loadbalance = “roundrobin”,cluster = “failover”,filter = “myFilter”,interface = IApiService.class,timeout = 1000) // 配置多注册中心多协议多版本多
分组多重试次数多超时时间多负载均衡策略多过滤器多接口多超时时间,默认是*,表示所有注册中心所有协议所有版本所有分组所有重试次数所有超时时间所有负载均衡策略所有过滤器所有接口所有超时时间。
dubbo多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器多接口多超时时间多检查
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false,loadbalance = “roundrobin”,cluster = “failover”,filter = “myFilter”,interface = IApiService.class,timeout = 1000
,check = false) // 配置多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器多接口多超时时间多检查,默认是*,表示所有注册中心所有协议所有版本所有分组所有重试次数所有超时时间所有负载均衡策略所有过滤器所有接口所有超时时间所有检查。
dubbo多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器多接口多超时时间多检查多重试次数
@DubboReference(registry = {“local”,“dev”},protocol = {“dubbo”,“rest”},version = “1.0.0”,group = “dubbo”,retries = 2,timeout = 1000,check = false,loadbalance = “roundrobin”,cluster = “failover”,filter = “myFilter”,interface = IApiService.class,timeout = 1000
,check = false,retries = 2) // 配置多注册中心多协议多版本多分组多重试次数多超时时间多负载均衡策略多过滤器多接口多超时时间多检查多重试次数,默认是*,表示所有注册中心所有协议所有版本所有分组所有重试次数所有超时时间所有负载均衡策略所有过滤器所有接口所有超时时间所有检查所有重试次数。
优先级配置
方法层级别的配置优先于接口层面,接口层配置优先于全局配置
如果级别一致,客户端的配置优先,服务端次之
dubbo泛化
泛化调用:泛化接口调用方式主要用于客户端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的远程服务Mock框架,可通过泛化调用实现。
泛化调用方式主要用于客户端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的远程服务Mock框架,可通过泛化调用实现。
服务端
package com.example.springbootdubboproducer.service;public interface IHelloService {String sayHello(String name);
}
消费端
@DubboReference(interfaceName = "com.example.springbootdubboproducer.service.IHelloService")private GenericService genericService;@GetMapping("/sayHello")public String sayHello(){return genericService.$invoke("sayHello",new String[]{"java.lang.String"},new Object[]{"world"}).toString();}
多序列化支持
dubbo支持多种序列化方式,包括hessian、fastjson、kryo、protostuff等,默认使用hessian2序列化方式。
hessian2序列化方式
hessian2序列化方式是dubbo默认的序列化方式,它是一种二进制序列化方式,性能较好,但是可读性较差。
fastjson序列化方式
fastjson序列化方式是一种基于json的序列化方式,性能较好,可读性较好,但是相对于hessian2性能较差。
kryo序列化方式
kryo序列化方式是一种基于二进制的序列化方式,性能较好,可读性较差,但是相对于hessian2性能较差。
maven依赖
<dependency><groupId>com.esotericsoftware</groupId><artifactId>kryo</artifactId><version>4.0.2</version>
</dependency>
protostuff序列化方式
protostuff序列化方式是一种基于protobuf的序列化方式,性能较好,可读性较好,但是相对于hessian2性能较差。
自定义序列化方式
如果dubbo自带的序列化方式不能满足需求,可以自定义序列化方式,实现com.alibaba.dubbo.common.serialize.Serialization接口,并在配置文件中配置自定义序列化方式。
json序列化方式
json序列化方式是一种基于json的序列化方式,性能较好,可读性较好,但是相对于hessian2性能较差。
xml序列化方式
xml序列化方式是一种基于xml的序列化方式,性能较差,可读性较好,但是相对于hessian2性能较差。
性能调优
- 网络传输优化:可以通过调整网络参数、使用压缩协议等方式来优化网络传输性能。
- 序列化优化:可以通过调整序列化方式、使用压缩协议等方式来优化序列化性能。
- 线程池优化:可以通过调整线程池参数、使用线程池监控等方式来优化线程池性能。
- 服务端优化:可以通过调整服务端参数、使用服务端监控等方式来优化服务端性能。
- 客户端优化:可以通过调整客户端参数、使用客户端监控等方式来优化客户端性能。
- 负载均衡优化:可以通过调整负载均衡策略、使用负载均衡监控等方式来优化负载均衡性能。
- 集群容错优化:可以通过调整集群容错策略、使用集群容错监控等方式来优化集群容错性能。
- 服务治理优化:可以通过调整服务治理策略、使用服务治理监控等方式来优化服务治理性能。
- 服务降级优化:可以通过调整服务降级策略、使用服务降级监控等方式来优化服务降级性能。
- 服务限流优化:可以通过调整服务限流策略、使用服务限流监控等方式来优化服务限流性能。
- 服务监控优化:可以通过调整服务监控策略、使用服务监控监控等方式来优化服务监控性能。
- 服务调用优化:可以通过调整服务调用策略、使用服务调用监控等方式来优化服务调用性能。
- 服务注册优化:可以通过调整服务注册策略、使用服务注册监控等方式来优化服务注册性能。
- 服务发现优化:可以通过调整服务发现策略、使用服务发现监控等方式来优化服务发现性能。
dubbo缓存文件
dubbo缓存文件主要包括以下几个方面:
- 注册中心缓存文件:注册中心缓存文件主要用于缓存注册中心的数据,提高注册中心的性能和可靠性。
- 服务提供者缓存文件:服务提供者缓存文件主要用于缓存服务提供者的数据,提高服务提供者的性能和可靠性。
- 服务消费者缓存文件:服务消费者缓存文件主要用于缓存服务消费者的数据,提高服务消费者的性能和可靠性。
- 服务调用缓存文件:服务调用缓存文件主要用于缓存服务调用的数据,提高服务调用的性能和可靠性。
dubbo:registry: #注册中心file: /path/to/registry/cache/fileprovider: #服务提供者file: /path/to/provider/cache/fileconsumer: #服务消费者file: /path/to/consumer/cache/fileinvocation: #服务调用file: /path/to/invocation/cache/file
dubbo-admin
简介
- dubbo-admin是一个可视化的dubbo管理工具,可以用于查看dubbo服务的状态、监控dubbo服务的性能、管理dubbo服务的配置等。
- dubbo-admin的安装和使用非常简单,只需要将dubbo-admin的war包部署到tomcat中即可。
- dubbo-admin的配置文件位于
/WEB-INF/dubbo.properties,可以配置注册中心的地址、dubbo-admin的端口等。 - dubbo-admin的界面非常友好,可以方便地查看dubbo服务的状态、监控dubbo服务的性能、管理dubbo服务的配置等。
- dubbo-admin的监控功能非常强大,可以监控dubbo服务的调用次数、调用耗时、调用成功率等。
- dubbo-admin的配置管理功能非常强大,可以管理dubbo服务的配置、查看dubbo服务的配置历史等。
- dubbo-admin的日志管理功能非常强大,可以查看dubbo服务的日志、下载dubbo服务的日志等。
- dubbo-admin的告警功能非常强大,可以配置dubbo服务的告警规则、查看dubbo服务的告警历史等。
- dubbo-admin的权限管理功能非常强大,可以配置dubbo-admin的访问权限、查看dubbo-admin的访问日志等。
- dubbo-admin的插件功能非常强大,可以安装各种插件来扩展dubbo-admin的功能。
安装
- 下载dubbo-admin的war包,可以从dubbo的官方网站上下载。
- 将dubbo-admin的war包部署到tomcat中,可以将其放在tomcat的webapps目录下。
- 启动tomcat,访问
http://localhost:8080/dubbo-admin即可打开dubbo-admin的界面。
配置
- 在
/WEB-INF/dubbo.properties文件中配置注册中心的地址、dubbo-admin的端口等。
dubbo.registry.address=zookeeper://127.0.0.1:2181 #注册中心的地址
dubbo.admin.port=8080 #dubbo-admin的端口
- 在
/WEB-INF/dubbo.properties文件中配置dubbo-admin的访问权限、查看dubbo-admin的访问日志等。
dubbo.admin.username=admin #dubbo-admin的用户名
dubbo.admin.password=admin #dubbo-admin的密码
dubbo.admin.access.log=true #是否记录dubbo-admin的访问日志
- 在
/WEB-INF/dubbo.properties文件中配置dubbo-admin的告警规则、查看dubbo-admin的告警历史等。
dubbo.admin.alert.rule=cpu_usage > 80 #dubbo-admin的告警规则
dubbo.admin.alert.history=true #是否记录dubbo-admin的告警历史
- 在
/WEB-INF/dubbo.properties文件中配置dubbo-admin的插件功能、查看dubbo-admin的插件日志等。
dubbo.admin.plugin=com.example.MyPlugin #dubbo-admin的插件
dubbo.admin.plugin.log=true #是否记录dubbo-admin的插件日志
- docker部署dubbo- admin
docker run -d -p 8080:8080 --name dubbo-admin -e JAVA_OPTS="-Xmx512m -Xms512m" -e TZ=Asia/Shanghai -e DubboAdminConfig.admin.registry.address=zookeeper://127.0.0.1:2181 -e DubboAdminConfig.admin.monitor.address=nacos://127.0.0.1:
8848 dubbo-admin/dubbo-admin:latest
功能
- 查看dubbo服务的状态:可以查看dubbo服务的状态,包括服务的名称、版本、分组、状态等。
- 监控dubbo服务的性能:可以监控dubbo服务的性能,包括服务的调用次数、调用耗时、调用成功率等。
- 管理dubbo服务的配置:可以管理dubbo服务的配置,包括服务的权重、负载均衡策略、超时时间等。
- 查看dubbo服务的日志:可以查看dubbo服务的日志,包括服务的调用日志、异常日志等。
- 配置dubbo服务的告警规则:可以配置dubbo服务的告警规则,包括服务的调用次数、调用耗时、调用成功率等。
- 查看dubbo服务的告警历史:可以查看dubbo服务的告警历史,包括服务的告警时间、告警内容等。
- 配置dubbo-admin的访问权限:可以配置dubbo-admin的访问权限,包括用户的权限、角色的权限等。
- 查看dubbo-admin的访问日志:可以查看dubbo-admin的访问日志,包括用户的访问时间、访问内容等。
- 安装dubbo-admin的插件:可以安装dubbo-admin的插件,扩展dubbo-admin的功能。
- 查看dubbo-admin的插件日志:可以查看dubbo-admin的插件日志,包括插件的安装时间、插件的内容等。
- 查看dubbo-admin的版本信息:可以查看dubbo-admin的版本信息,包括dubbo-admin的版本号、dubbo-admin的构建时间等。
- 查看dubbo-admin的帮助文档:可以查看dubbo-admin的帮助文档,包括dubbo-admin的使用方法、dubbo-admin的配置方法等。
- 查看dubbo-admin的关于信息:可以查看dubbo-admin的关于信息,包括dubbo-admin的版权信息、dubbo-admin的开发团队等。
- 查看dubbo-admin的更新日志:可以查看dubbo-admin的更新日志,包括dubbo-admin的更新时间、dubbo-admin的更新内容等。
- 查看dubbo-admin的反馈建议:可以查看dubbo-admin的反馈建议,包括用户的反馈时间、用户的反馈内容等。
- 查看dubbo-admin的插件市场:可以查看dubbo-admin的插件市场,包括各种插件的介绍、插件的安装方法等。
- 查看dubbo-admin的插件开发文档:可以查看dubbo-admin的插件开发文档,包括插件的开发方法、插件的接口规范等。
- 查看dubbo-admin的插件更新日志:可以查看dubbo-admin的插件更新日志,包括插件的更新时间、插件的更新内容等。
- 查看dubbo-admin的插件反馈建议:可以查看dubbo-admin的插件反馈建议,包括用户的反馈时间、用户的反馈内容等。
使用
- 在dubbo-admin的界面中,可以查看dubbo服务的状态、监控dubbo服务的性能、管理dubbo服务的配置等。
- 在dubbo-admin的监控功能中,可以监控dubbo服务的调用次数、调用耗时、调用成功率等。
- 在dubbo-admin的配置管理功能中,可以管理dubbo服务的配置、查看dubbo服务的配置历史等。
- 在dubbo-admin的日志管理功能中,可以查看dubbo服务的日志、下载dubbo服务的日志等。
- 在dubbo-admin的告警功能中,可以配置dubbo服务的告警规则、查看dubbo服务的告警历史等。
- 在dubbo-admin的权限管理功能中,可以配置dubbo-admin的访问权限、查看dubbo-admin的访问日志等。
- 在dubbo-admin的插件功能中,可以安装各种插件来扩展dubbo-admin的功能。
相关文章:
apache-dubbo
dubbo 文档地址 dubbo 官方文档地址 https://dubbo.apache.org/zh-cn/docs/user/references/api.html nacos 官方文档地址 https://nacos.io/zh-cn/docs/quick-start.html nacos下载地址 https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.…...
ECharts柱状图-柱图2,附视频讲解与代码下载
引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供…...
【新人系列】Python 入门(十六):正则表达式
✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…...
HTML综合
一.HTML的初始结构 <!DOCTYPE html> <html lang"en"><head><!-- 设置文本字符 --><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 设置网页…...
孚盟云 MailAjax.ashx SQL注入漏洞复现
0x01 产品简介 上海孚盟软件有限公司是一家外贸SaaS服务提供商,也是专业的外贸行业解决方案专业提供商。 全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,主要…...
解决“VMware虚拟机报Intel VT-x”错误
今天,在windows系统上,打开VMware WorkStation v15软件里的虚拟机,弹出"Intel VT-x处于禁用状态"错误,如图(1)所示: 图(1) 虚拟机报"Intel VT-x"错误 问题原因:当前电脑的BIOS没有开启…...
NiceGUI `ui.table` 基础
NiceGUI ui.table 基础 ui.table 是 NiceGUI 提供的一个组件,用于在页面上展示数据表格 基本概念 官方简介 A table based on Quasar’s QTable component. 参数参考rows:list of row objects; 行对象列表columns:list of column objects (defaults to the colu…...
分布式 Raft算法 总结
前言 相关系列 《分布式 & 目录》《分布式 & Raft算法 & 总结》《分布式 & Raft算法 & 问题》 参考文献 《Raft一致性算法论文译文》《深入剖析共识性算法 Raft》 简介 Raft 木筏是一种基于日志复制实现的分布式容错&一致性算法。在Raft算法…...
C++ 中面向对象编程如何实现动态绑定?
在 C 中,动态绑定(Dynamic Binding)是通过 虚函数(virtual function) 和 多态性(polymorphism) 来实现的。这是面向对象编程的重要特性之一,它允许程序在运行时根据对象的实际类型调…...
微服务-01
1.认识微服务 1.1 单体架构 单体架构(monolithic structure):顾名思义,整个项目中所有功能模块都在一个工程中开发;项目部署时需要对所有模块一起编译、打包;项目的架构设计、开发模式都非常简单。 当项目…...
这是一个vue3 + scss的数字滚动效果
介绍: 当数字变化时,只改变变化的数字位,其余的不变,可以递增、递减、骤变、负数也可以,但是样式要根据具体的项目需求去改; 效果1、增加数字: 效果2、减少数字: 使用方法: <te…...
数字证书管理工具 openssl keytool
OPENSSL 命令 openssl command [ command_opts ] [ command_args ] 常用command: version 用于查看版本信息 enc 用于加解密 ciphers 列出加密套件 genrsa 用于生成私钥 -des|-des3|-idea:用来加密私钥文件的三种对称加密算法。 rsa …...
Polars数据聚合与旋转实战教程
在这篇博文中,我们的目标是解决数据爱好者提出的一个常见问题:如何有效地从Polars DataFrame中创建汇总视图,以便在不同时间段或类别之间轻松进行比较。我们将使用一个实际的数据集示例来探索实现这一目标的各种方法。 Polars简介 Polars 是…...
引用类型集合的深拷贝,无需手动写循环:Apache Commons Lang (SerializationUtils)
在java中,我们如果想要对引用类型的集合进行深拷贝。有一种方式,就是调用SerializationUtils Apache Commons Lang (SerializationUtils) Apache Commons Lang 提供了 SerializationUtils 类,可以利用 Java 的序列化机制来进行集合及其元素…...
HTML、CSS表格的斜表头样式设置title 画对角线
我里面有用到layui框架的影响,实际根据你自己的框架来小调下就可以 效果如下 上代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…...
docker 安装mysql 5.7 详细保姆级教程
1. 安装mysql(5.7) docker pull mysql:5.7 若是拉取不了,可以配置下 docker 源 2. 查看是否安装成功 docker images 下图就是成功了 3.创建mysql专用目录、数据挂载目录、配置文件目录 ,演示目录在于/home/下 //命令逐条执行cd /home/ mkdir mysql …...
Kioptrix level3
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
UE5 Lyra项目源码分析-关卡配置加载
最近刚学完一套教程,准备研究研究官方的源码,看看自己能不能看懂。 当前分析只在本人能力之下能够分析的内容,如果有一些问题,还请大家指出。 开始 如果你打开一个别人的项目,你会从哪里看起,如果是我&am…...
Cursor重置机器码-解决Too many free trials.
参考文章:如何绕过Cursor的机器绑定限制 前言 在前面这篇文章无限使用Cursor指南中,我提到使用 无限邮箱 或者 删除账号并重新注册 的方法,来无限使用Cursor免费版。但是当在本机登录过3个账号后,就会报这个“Too many free tria…...
transformer学习笔记-自注意力机制(2)
经过上一篇transformer学习笔记-自注意力机制(1)原理学习,这一篇对其中的几个关键知识点代码演示: 1、整体qkv注意力计算 先来个最简单未经变换的QKV处理: import torch Q torch.tensor([[3.0, 3.0,0.0],[0.5, 4…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
