Java学习Day60:微服务总结!(有经处无火,无火处无经)
1、技术版本
jdk:17及以上
-如果JDK8
springboot:3.1及其以上
-版本2.x
springFramWork:6.0及其以上
-版本5.x
springCloud:2022.0.5
-版本格林威治或者休斯顿
2、模拟springcloud
父模块指定父pom
<parent><groupId>org.springframework.boot</groupId><version>3.1.0</version><artifactId>spring-boot-starter-parent</artifactId>
</parent>
配置provider的application.yml
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/db2username: rootpassword: 123456application:name: providerServer
mybatis:type-aliases-package: com.home.pojoconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplserver:port: 8088
provider实现controller层,services层,和Mapper层,pojo
provider的pom
<properties><spring-cloud.version>2022.0.5</spring-cloud.version>
<properties>spring-boot-starter-web
mysql-connector-j
lombok
mybatis-spring-boot-starter
mybatis-plus-spring-boot3-starter<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
consumr层只用实现controller层和pojo
consumer的application.yml
server:port: 8080
spring:application:name: consumer
pom
<properties><spring-cloud.version>2022.0.5</spring-cloud.version>
<properties>spring-boot-starter-web
lombok<!--SpringCloud,BOM,依赖清单导入,所有依赖管理的坐标--><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
consumer调用provider的方法
usersss userssses= restTemplate.getForObject("http://localhost:8088/user/findAll",usersss.class);
return userssses;
访问consumer即可调用provider的方法
思考:
1.硬URL的端口号(端口变化,服务宕机
2.负载均衡无法实现
3.无返回信息
4.优化RestTemplate
5.多服务权限拦截如何实现?怎么保证所有微服务服务的安全性?
6.优化众多微服务的配置文件
3.注册中心eureka
Eureka服务器:
pom
<properties><spring-cloud.version>2022.0.5</spring-cloud.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><modelVersion>4.0.0</modelVersion><artifactId>eureka_server</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
application.yml
#启动服务器端口
server:port: 8761
#应用程序名字
spring:application:name: eurekaServer
#EurekaServer的地址,现在是自己的地址,如果是集群,需要写其它Server的地址。
eureka:client:fetch-registry: falseregister-with-eureka: falseservice-url:defaultZone: http://127.0.0.1:8761/eureka
启动类中标志:@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class springBootEurekaServer {public static void main(String[] args) {SpringApplication.run(springBootEurekaServer.class,args);}
}
Eureka服务端组件:
在服务提供者provider_service工程中添加Eureka客户端依赖
<!--eureka客户端starter--><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies><!--SpringCloud,BOM,依赖清单导入,所有依赖管理的坐标--><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
在启动类上开启Eureka客户端发现功能@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient // 开启Eureka客户端发现功能
public class UserApplication {public static void main(String[] args) {SpringApplication.run(UserApplication.class,args);}
}
注册到注册中心
修改配置文件:spring.application.name指定应用名称,作为服务ID使用
server:port: 8088
#配置eureka注册中心的地址
# 注册中心地址
eureka:client:service-url:defaultZone: http://127.0.0.1:8761/eureka
# 租约续约间隔时间,默认30秒eureka:instance:lease-renewal-interval-in-seconds: 30
Eureka客户端组件
在服务消费者consumer_service工程中添加Eureka客户端依赖
<!-- Eureka客户端 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--SpringCloud所有依赖管理的坐标-->
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
注册到注册中心
# 注册中心地址
eureka:client:service-url:defaultZone: http://127.0.0.1:8761/eurekaregistry-fetch-interval-seconds: 30
在启动类开启Eureka客户端@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class springBootConsumerStarter {public static void main(String[] args) {SpringApplication.run(springBootConsumerStarter.class,args);}@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}
配置完成后执行流程
-
通过注册中心客户端对象DiscoveryClient,获取Eureka中注册的user-service实例列表
-
获取user-service服务实例对象
-
从实例对象中获取host地址和端口,拼接请求地址
-
使用RestTemplate发送请求
public usersss findAll(){//discoveryClient 可以拉取注册中心中服务列表//getInstances(服务名),当前服务只有1个,返回值是List集合,获取0索引服务对象ServiceInstance instance = discoveryClient.getInstances("PROVIDERSERVER").get(0);//instance服务对象的实例。获取服务提供者的IP,端口号String host = instance.getHost();int port = instance.getPort();return restTemplate.getForObject("http://"+host+":"+port+"/user/findAll",usersss.class);}
}
4.Nacos
相比于erueka
Nacos消费者配置:
<properties><spring.cloud.alibaba.version>2022.0.0.0</spring.cloud.alibaba.version><properties><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
配置Nacos注册中心地址
server:port: 8080
spring:application:name: consumerNacos
# 注册中心地址cloud:nacos:discovery:server-addr: 127.0.0.1:8848
Nacos服务端配置:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--SpringCloud,BOM,依赖清单导入,所有依赖管理的坐标--><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
application.yml不变
负载均衡:
在consumer中配置即可
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
在启动类配置
@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
问题:需要编写类似的大量重复代码,格式基本相同,无非参数不一样!
5.OpenFeign
Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,是以Java接口的方式发送Http请求,而不用像Java中通过封装HTTP请求url的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。
Feign被广泛应用在Spring Cloud 的解决方案中,是学习基于Spring Cloud 微服务架构不可或缺的重要组件。
需要导入:
<!--伪装调用jar--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
启动引导类加@EnableFeignClients注解
@SpringBootApplication
@EnableFeignClients
public class SpringBootFeignConStart {public static void main(String[] args) {SpringApplication.run(SpringBootFeignConStart.class,args);}
}
编写FeignClient接口,使用SpringMVC的注解
@FeignClient("providerUser")
public interface FeignUserService {@RequestMapping("feign/eignQueryUserById")User feignQueryUserById(@RequestParam("id") Integer id);
}
在Controller中注入Feign接口,直接调用,无需实现类,但是GetMaping的Restful风格必去和调用provider的方法相同且传参方式也相同!!!
访问接口测试!
支持熔断(服务降级)、配置日志级别、请求压缩和响应压缩
6.网关GateWay
所有微服务的统一入口。Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
-
Route(路由):这是网关的基本模块。它由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配。
-
Predicate(断言):这是一个 Java 8 的 Predicate。输入类型是一个 ServerWebExchange。我们可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。
-
Filter(过滤器):这是org.springframework.cloud.gateway.filter.GatewayFilter的实例,我们可以使用它修改请求和响应。
创建SpringBoot工程gateway_server
<!--引入网关的jar包,不能引web jar包--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--负载均衡--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.7.0</version></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
application.yml
定义端口号,名称,注册到nacos
这是为当前路由规则指定一个 唯一的标识符
lb://
是 负载均衡(Load Balancer)的前缀,意味着请求将通过负载均衡机制路由到一个注册在 Eureka、Consul 或其他注册中心的服务。consumerOpenFeign
是服务的名称,这个名称需要与注册中心中服务的名称一致。Spring Cloud Gateway 会从服务注册中心获取该服务的实际地址(例如:http://consumerOpenFeign:8080
),并且通过负载均衡器将请求转发到该服务。
predicates
用于定义请求的 匹配条件,即哪些请求应该由当前的路由规则来处理。在这个例子中,使用了 Path=/**
,表示匹配所有的路径。
过滤器隐藏usertwo,访问时不用书写,避免接口地址暴露
server:port: 80
spring:application:name: gatewaycloud:nacos:server-addr: 127.0.0.1:8848#配置网关gateway:routes:- id: orderService #自定义路由的唯一标识符uri: lb://consumerOpenFeign #服务名字,从注册中心通过服务名称来获取接口predicates:- Path=/** #拦截浏览器的请求地址filters:- PrefixPath=/usertwo
自定义全局过滤器【重点】
token:登录成功后,根据登录用户名等(用户ID),生成一个属于这个用户自己的密钥,就称为Token。下次用户访问的时候,带着Token来请求服务器。拿Token值反解析出用户数据来(无论是解析失败,还是根本就没有Token)拦截器不能放行。登录成功的时候,产生一个加密后字符串:Token响应回浏览器的响应头。浏览器再次请求的时候,携带Token来访问服务器,Token会放在浏览器的请求头中。
大部分都是异步请求,axios拦截器
响应的时候,获取响应头中的token值。请求的时候,在请求头中添加token值。
token值存储在浏览器的缓存中,缓存对象 localStorage, setItem存储键值对,getItem传递键获取值
nacos注册和配置中心
nacos单独组件,启动就可以了,默认端口8848
微服务配置nacos注册中心的地址
spring:cloud:nacos:server-addr: 127.0.0.1:8848
sentinel流量防卫兵
<!--熔断的支持--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId></dependency><!--配置哨兵--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
配置文件
server:port: 8080
spring:application:name: consumerOpenFeigncloud:#哨兵sentinel:transport:dashboard: 127.0.0.1:8086nacos:server-addr: 127.0.0.1:8848openfeign:#feign熔断支持circuitbreaker:enabled: true
在方法上定义哨兵
@GetMapping("/selectusertwo")@SentinelResource(value = "selectusertwo",fallback ="selectusertwoFallBack",blockHandler = "selectusertwoHandler")public usersss selectusertwo(@RequestParam("id") Integer id){if (id<4){throw new RuntimeException("请输入正确ID!");}return userServicesTwo.selectusertwo(id);}
fallback:限流
blockHandler:熔断
相关文章:

Java学习Day60:微服务总结!(有经处无火,无火处无经)
1、技术版本 jdk:17及以上 -如果JDK8 springboot:3.1及其以上 -版本2.x springFramWork:6.0及其以上 -版本5.x springCloud:2022.0.5 -版本格林威治或者休斯顿 2、模拟springcloud 父模块指定父pom <parent><…...

MySQL日期类型选择建议
我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间、用户下单时间等等。你会发现时间这个东西与我们开发的联系还是非常紧密的,用的好与不好会给我们的业务甚至功能带来很大的影响。所以…...
70B的模型做微调,使用A10*8的卡能够使用
使用 8 张 A10 GPU(每张 A10 GPU 大约有 24 GB 的显存)来微调 70B 参数的模型会比较困难,主要原因是显存不足。像 70B 参数量级的模型(如 LLaMA-2 70B、BLOOM-176B)通常需要几百 GB 以上的显存,仅加载模型就…...

将vscode的终端改为cygwin terminal
现在终端是默认的power shell,没有显示cygwin 接下来选择默认配置文件 找到cygwin的选项即可 然后提示可能不安全什么的,点是,就有了...
《ASP.Net Core技术内幕与项目实战》读书笔记_1
ch1 .NET Core入门 .NET介绍 这一章主要说的是.Net Core、.Net Framework、.Net Stanard三个之间的关系。通俗来讲就是Core是新出的、能跨平台,Framwork是老版的、不能跨平台,Standard是为了在Framework、Core、Xamarin中统一库的使用而定制的规范&#…...

【青牛科技】应用方案|D2587A高压大电流DC-DC
1、概述 D2587A稳压器是专为反激式、升压和正向转换器应用而设计的单片集成电路。该器件提供四种不同的输出电压版本:3.3V、5V、12V 和可调节电压。这些稳压器需要的外部元器件很少,因此具有成本效益,并且易于使用。该电源开关是一款5A NPN器…...
【测试】【Debug】pytest运行后print没有输出
import pytest def test_good():for i in range(1000):print(i)def test_bad():print(this should fail!)assert False比如上述程序,运行之后只能看到输出了’this should fail!;但是debug版的测试运行后又能看到test_good函数中的输出。 这是为什么呢&a…...
linux strace 查看程序异常问题总结
1,死锁问题 #include <stdio.h> #include <pthread.h> #include <unistd.h>pthread_mutex_t lock1 PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t lock2 PTHREAD_MUTEX_INITIALIZER;void* thread_func1(void* arg) {pthread_mutex_lock(&lo…...
8086汇编常见寄存器与指令
本文为学习书籍《汇编语言(第4版)》后的小结。 1、寄存器 序号寄存器描述1ax运算寄存器2bx地址寄存器,偏移地址3cx计数寄存器,loop的结束条件,jcxz的跳转条件4dx运算寄存器5cs段地址,指令执行段地址6ss段地址,栈的段地…...

Group By、Having用法总结(常见踩雷点总结—SQL)
Group By、Having用法总结 目录 Group By、Having用法总结一、 GROUP BY 用法二、 HAVING 用法三、 GROUP BY 和 HAVING 的常见踩雷点3.1 GROUP BY 选择的列必须出现在 SELECT 中(🤣最重要的一点)3.2 HAVING 与 WHERE 的区别3.3 GROUP BY 可以…...

Redis持久化机制——针对实习面试
目录 Redis持久化机制Redis为什么要有持久化机制?Redis持久化方式有哪些?AOF持久化工作原理是什么?有什么优缺点?AOF持久化工作原理AOF的优点AOF的缺点 RDB持久化工作原理是什么?有什么优缺点?RDB持久化工作…...
Windows系统服务器怎么设置远程连接?详细步骤
一、什么是Windows远程桌面连接? Windows远程桌面(Remote Desktop)功能使用户能够通过网络连接到另一台Windows计算机,实现远程操作。远程桌面非常适合系统管理员、技术支持人员以及那些需要远程工作的人,它允许用户以图形界面的方式访问远程计算机&…...
【Rust设计模式之建造者模式】
Rust设计模式之建造者模式 什么是建造者模式 什么是建造者模式 即将结构体属性方法与构建解离,使用专门的builder进行建造,说白了就是new和其他的方法分开,集中处理更方便。 直接上代码: #[derive(Debug)] struct children {nam…...
2024中国移动(南京)智算大会暨人工智能产业大会即将盛大启幕
11月9日,2024中国移动(南京)智算大会暨人工智能产业大会将在南京国际博览中心盛大举行。此次盛会将汇聚政界、学界与商界的顶尖力量,共同探讨智能计算与人工智能的未来发展方向,为智能计算与人工智能产业的发展注入新的…...

计算机毕业设计 | SpringBoot咖啡商城 购物采买平台 后台管理软件(附源码)
1,项目背景 1.1 当前的问题和困惑 系统稳定性: 在高并发访问时,商城系统容易出现卡顿、崩溃等问题,影响了用户体验和销售额。支付安全性: 支付环节存在潜在的安全隐患,如何确保支付过程的安全性和用户资金…...
CosyVoice文本转语音:轻松创造个性化音频
CosyVoice文本转语音:轻松创造个性化音频" 要实现一个使用通义语音合成模型CosyVoice将文字转换为音频的图形界面应用,可以使用Python的tkinter库来创建图形用户界面(GUI),并使用requests库来调用CosyVoice的API…...
法语nous sommes
法语短语 “nous sommes” 的词源可以追溯到拉丁语,具体分析如下: 1. “Nous” 的词源: “Nous” 是法语中表示 “我们” 的人称代词,源自拉丁语的 “nos”,它表示 “我们” 的意思。 拉丁语 “nos” 是第一人称复数…...
《化学进展》
《化学进展》主要栏目有:综述,评论,中国化学印记,Mini Accounts等。本刊可供化学及相关学科领域的科研、教学、决策管理人员及研究生阅读。 《化学进展》投稿指南稿件要求 (1)本刊仅接受综述与评论性的…...
CNN和RCNN的关系和区别
RCNN(Region-based Convolutional Neural Network)和 CNN(Convolutional Neural Network)是两种不同的神经网络架构,它们在应用和结构上有所不同。以下是它们之间的主要区别: 1. 基本概念 CNN(…...

Chromium 进程降权和提权模拟示例c++
一、背景知识概念参考微软链接: 强制完整性控制 - Win32 应用程序 |Microsoft 学习 授权) (模拟级别 - Win32 apps | Microsoft Learn DuplicateTokenEx 函数 (securitybaseapi.h) - Win32 apps | Microsoft Learn 本文主要演示 low, medium, high, and system 四…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...