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

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 Boot2.7.7
dubbo3.2.9
nacos客户端2.4.3
nacos2.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性能较差。

性能调优

  1. 网络传输优化:可以通过调整网络参数、使用压缩协议等方式来优化网络传输性能。
  2. 序列化优化:可以通过调整序列化方式、使用压缩协议等方式来优化序列化性能。
  3. 线程池优化:可以通过调整线程池参数、使用线程池监控等方式来优化线程池性能。
  4. 服务端优化:可以通过调整服务端参数、使用服务端监控等方式来优化服务端性能。
  5. 客户端优化:可以通过调整客户端参数、使用客户端监控等方式来优化客户端性能。
  6. 负载均衡优化:可以通过调整负载均衡策略、使用负载均衡监控等方式来优化负载均衡性能。
  7. 集群容错优化:可以通过调整集群容错策略、使用集群容错监控等方式来优化集群容错性能。
  8. 服务治理优化:可以通过调整服务治理策略、使用服务治理监控等方式来优化服务治理性能。
  9. 服务降级优化:可以通过调整服务降级策略、使用服务降级监控等方式来优化服务降级性能。
  10. 服务限流优化:可以通过调整服务限流策略、使用服务限流监控等方式来优化服务限流性能。
  11. 服务监控优化:可以通过调整服务监控策略、使用服务监控监控等方式来优化服务监控性能。
  12. 服务调用优化:可以通过调整服务调用策略、使用服务调用监控等方式来优化服务调用性能。
  13. 服务注册优化:可以通过调整服务注册策略、使用服务注册监控等方式来优化服务注册性能。
  14. 服务发现优化:可以通过调整服务发现策略、使用服务发现监控等方式来优化服务发现性能。

dubbo缓存文件

dubbo缓存文件主要包括以下几个方面:

  1. 注册中心缓存文件:注册中心缓存文件主要用于缓存注册中心的数据,提高注册中心的性能和可靠性。
  2. 服务提供者缓存文件:服务提供者缓存文件主要用于缓存服务提供者的数据,提高服务提供者的性能和可靠性。
  3. 服务消费者缓存文件:服务消费者缓存文件主要用于缓存服务消费者的数据,提高服务消费者的性能和可靠性。
  4. 服务调用缓存文件:服务调用缓存文件主要用于缓存服务调用的数据,提高服务调用的性能和可靠性。
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

简介

  1. dubbo-admin是一个可视化的dubbo管理工具,可以用于查看dubbo服务的状态、监控dubbo服务的性能、管理dubbo服务的配置等。
  2. dubbo-admin的安装和使用非常简单,只需要将dubbo-admin的war包部署到tomcat中即可。
  3. dubbo-admin的配置文件位于/WEB-INF/dubbo.properties,可以配置注册中心的地址、dubbo-admin的端口等。
  4. dubbo-admin的界面非常友好,可以方便地查看dubbo服务的状态、监控dubbo服务的性能、管理dubbo服务的配置等。
  5. dubbo-admin的监控功能非常强大,可以监控dubbo服务的调用次数、调用耗时、调用成功率等。
  6. dubbo-admin的配置管理功能非常强大,可以管理dubbo服务的配置、查看dubbo服务的配置历史等。
  7. dubbo-admin的日志管理功能非常强大,可以查看dubbo服务的日志、下载dubbo服务的日志等。
  8. dubbo-admin的告警功能非常强大,可以配置dubbo服务的告警规则、查看dubbo服务的告警历史等。
  9. dubbo-admin的权限管理功能非常强大,可以配置dubbo-admin的访问权限、查看dubbo-admin的访问日志等。
  10. dubbo-admin的插件功能非常强大,可以安装各种插件来扩展dubbo-admin的功能。

安装

  1. 下载dubbo-admin的war包,可以从dubbo的官方网站上下载。
  2. 将dubbo-admin的war包部署到tomcat中,可以将其放在tomcat的webapps目录下。
  3. 启动tomcat,访问http://localhost:8080/dubbo-admin即可打开dubbo-admin的界面。

配置

  1. /WEB-INF/dubbo.properties文件中配置注册中心的地址、dubbo-admin的端口等。
dubbo.registry.address=zookeeper://127.0.0.1:2181 #注册中心的地址
dubbo.admin.port=8080 #dubbo-admin的端口
  1. /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的访问日志
  1. /WEB-INF/dubbo.properties文件中配置dubbo-admin的告警规则、查看dubbo-admin的告警历史等。
dubbo.admin.alert.rule=cpu_usage > 80 #dubbo-admin的告警规则
dubbo.admin.alert.history=true #是否记录dubbo-admin的告警历史
  1. /WEB-INF/dubbo.properties文件中配置dubbo-admin的插件功能、查看dubbo-admin的插件日志等。
dubbo.admin.plugin=com.example.MyPlugin #dubbo-admin的插件
dubbo.admin.plugin.log=true #是否记录dubbo-admin的插件日志
  1. 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

功能

  1. 查看dubbo服务的状态:可以查看dubbo服务的状态,包括服务的名称、版本、分组、状态等。
  2. 监控dubbo服务的性能:可以监控dubbo服务的性能,包括服务的调用次数、调用耗时、调用成功率等。
  3. 管理dubbo服务的配置:可以管理dubbo服务的配置,包括服务的权重、负载均衡策略、超时时间等。
  4. 查看dubbo服务的日志:可以查看dubbo服务的日志,包括服务的调用日志、异常日志等。
  5. 配置dubbo服务的告警规则:可以配置dubbo服务的告警规则,包括服务的调用次数、调用耗时、调用成功率等。
  6. 查看dubbo服务的告警历史:可以查看dubbo服务的告警历史,包括服务的告警时间、告警内容等。
  7. 配置dubbo-admin的访问权限:可以配置dubbo-admin的访问权限,包括用户的权限、角色的权限等。
  8. 查看dubbo-admin的访问日志:可以查看dubbo-admin的访问日志,包括用户的访问时间、访问内容等。
  9. 安装dubbo-admin的插件:可以安装dubbo-admin的插件,扩展dubbo-admin的功能。
  10. 查看dubbo-admin的插件日志:可以查看dubbo-admin的插件日志,包括插件的安装时间、插件的内容等。
  11. 查看dubbo-admin的版本信息:可以查看dubbo-admin的版本信息,包括dubbo-admin的版本号、dubbo-admin的构建时间等。
  12. 查看dubbo-admin的帮助文档:可以查看dubbo-admin的帮助文档,包括dubbo-admin的使用方法、dubbo-admin的配置方法等。
  13. 查看dubbo-admin的关于信息:可以查看dubbo-admin的关于信息,包括dubbo-admin的版权信息、dubbo-admin的开发团队等。
  14. 查看dubbo-admin的更新日志:可以查看dubbo-admin的更新日志,包括dubbo-admin的更新时间、dubbo-admin的更新内容等。
  15. 查看dubbo-admin的反馈建议:可以查看dubbo-admin的反馈建议,包括用户的反馈时间、用户的反馈内容等。
  16. 查看dubbo-admin的插件市场:可以查看dubbo-admin的插件市场,包括各种插件的介绍、插件的安装方法等。
  17. 查看dubbo-admin的插件开发文档:可以查看dubbo-admin的插件开发文档,包括插件的开发方法、插件的接口规范等。
  18. 查看dubbo-admin的插件更新日志:可以查看dubbo-admin的插件更新日志,包括插件的更新时间、插件的更新内容等。
  19. 查看dubbo-admin的插件反馈建议:可以查看dubbo-admin的插件反馈建议,包括用户的反馈时间、用户的反馈内容等。

使用

  1. 在dubbo-admin的界面中,可以查看dubbo服务的状态、监控dubbo服务的性能、管理dubbo服务的配置等。
  2. 在dubbo-admin的监控功能中,可以监控dubbo服务的调用次数、调用耗时、调用成功率等。
  3. 在dubbo-admin的配置管理功能中,可以管理dubbo服务的配置、查看dubbo服务的配置历史等。
  4. 在dubbo-admin的日志管理功能中,可以查看dubbo服务的日志、下载dubbo服务的日志等。
  5. 在dubbo-admin的告警功能中,可以配置dubbo服务的告警规则、查看dubbo服务的告警历史等。
  6. 在dubbo-admin的权限管理功能中,可以配置dubbo-admin的访问权限、查看dubbo-admin的访问日志等。
  7. 在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,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…...

【新人系列】Python 入门(十六):正则表达式

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12801353.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Python 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…...

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”错误

今天&#xff0c;在windows系统上&#xff0c;打开VMware WorkStation v15软件里的虚拟机&#xff0c;弹出"Intel VT-x处于禁用状态"错误&#xff0c;如图(1)所示&#xff1a; 图(1) 虚拟机报"Intel VT-x"错误 问题原因&#xff1a;当前电脑的BIOS没有开启…...

NiceGUI `ui.table` 基础

NiceGUI ui.table 基础 ui.table 是 NiceGUI 提供的一个组件&#xff0c;用于在页面上展示数据表格 基本概念 官方简介 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 中&#xff0c;动态绑定&#xff08;Dynamic Binding&#xff09;是通过 虚函数&#xff08;virtual function&#xff09; 和 多态性&#xff08;polymorphism&#xff09; 来实现的。这是面向对象编程的重要特性之一&#xff0c;它允许程序在运行时根据对象的实际类型调…...

微服务-01

1.认识微服务 1.1 单体架构 单体架构&#xff08;monolithic structure&#xff09;&#xff1a;顾名思义&#xff0c;整个项目中所有功能模块都在一个工程中开发&#xff1b;项目部署时需要对所有模块一起编译、打包&#xff1b;项目的架构设计、开发模式都非常简单。 当项目…...

这是一个vue3 + scss的数字滚动效果

介绍: 当数字变化时&#xff0c;只改变变化的数字位&#xff0c;其余的不变&#xff0c;可以递增、递减、骤变、负数也可以&#xff0c;但是样式要根据具体的项目需求去改&#xff1b; 效果1、增加数字&#xff1a; 效果2、减少数字&#xff1a; 使用方法&#xff1a; <te…...

数字证书管理工具 openssl keytool

OPENSSL 命令 openssl command [ command_opts ] [ command_args ] 常用command: version 用于查看版本信息 enc 用于加解密 ciphers 列出加密套件 genrsa 用于生成私钥 -des|-des3|-idea&#xff1a;用来加密私钥文件的三种对称加密算法。 rsa …...

Polars数据聚合与旋转实战教程

在这篇博文中&#xff0c;我们的目标是解决数据爱好者提出的一个常见问题&#xff1a;如何有效地从Polars DataFrame中创建汇总视图&#xff0c;以便在不同时间段或类别之间轻松进行比较。我们将使用一个实际的数据集示例来探索实现这一目标的各种方法。 Polars简介 Polars 是…...

引用类型集合的深拷贝,无需手动写循环:Apache Commons Lang (SerializationUtils)

在java中&#xff0c;我们如果想要对引用类型的集合进行深拷贝。有一种方式&#xff0c;就是调用SerializationUtils Apache Commons Lang (SerializationUtils) Apache Commons Lang 提供了 SerializationUtils 类&#xff0c;可以利用 Java 的序列化机制来进行集合及其元素…...

HTML、CSS表格的斜表头样式设置title 画对角线

我里面有用到layui框架的影响&#xff0c;实际根据你自己的框架来小调下就可以 效果如下 上代码 <!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 若是拉取不了&#xff0c;可以配置下 docker 源 2. 查看是否安装成功 docker images 下图就是成功了 3.创建mysql专用目录、数据挂载目录、配置文件目录 &#xff0c;演示目录在于/home/下 //命令逐条执行cd /home/ mkdir mysql …...

Kioptrix level3

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…...

UE5 Lyra项目源码分析-关卡配置加载

最近刚学完一套教程&#xff0c;准备研究研究官方的源码&#xff0c;看看自己能不能看懂。 当前分析只在本人能力之下能够分析的内容&#xff0c;如果有一些问题&#xff0c;还请大家指出。 开始 如果你打开一个别人的项目&#xff0c;你会从哪里看起&#xff0c;如果是我&am…...

Cursor重置机器码-解决Too many free trials.

参考文章&#xff1a;如何绕过Cursor的机器绑定限制 前言 在前面这篇文章无限使用Cursor指南中&#xff0c;我提到使用 无限邮箱 或者 删除账号并重新注册 的方法&#xff0c;来无限使用Cursor免费版。但是当在本机登录过3个账号后&#xff0c;就会报这个“Too many free tria…...

transformer学习笔记-自注意力机制(2)

经过上一篇transformer学习笔记-自注意力机制&#xff08;1&#xff09;原理学习&#xff0c;这一篇对其中的几个关键知识点代码演示&#xff1a; 1、整体qkv注意力计算 先来个最简单未经变换的QKV处理&#xff1a; import torch Q torch.tensor([[3.0, 3.0,0.0],[0.5, 4…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析&#xff1a;AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github&#xff1a;https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...

麒麟系统使用-进行.NET开发

文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的&#xff0c;如果需要进行.NET开发&#xff0c;则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET&#xff0c;所以要进…...