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…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...
算法250609 高精度
加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...
