CAS单点登录(第7版)7.授权
如有疑问,请看视频:CAS单点登录(第7版)

可以使用以下策略实施授权策略以保护 CAS 中的应用程序和依赖方。
-
-
-
- 服务访问策略
-
-
服务访问策略允许您定义授权和访问策略,以控制对向 CAS 注册的应用程序的入口访问。此策略通常最适合基于 Web 的应用程序,而不管身份验证协议如何,并强制执行 Course-grained 访问策略来描述谁有权访问给定应用程序。一旦访问被授予,授权策略以及扩展后的 CAS 本身就完全不再干预,接下来由应用程序自身决定经过身份验证的主体在应用程序中被允许做什么或访问什么,这通常基于用户权限、组成员身份和其他属性。
在此处(服务与应用)阅读有关此主题的更多信息。
-
-
-
- 细粒度授权
-
-
细粒度授权将允许您使用专用语言模型构建细粒度权限改造。该策略超越了控制向CAS注册的应用程序的入口访问,并允许您定义和开发详细的授权规则,以确定是否允许访问给定的API请求、资源或操作。此类API请求通常由API网关代理,该网关将充当PEP(授权执行),将请求路由到CAS,然后充当PDP(策略定义点)。
在此处阅读有关此主题的更多信息。
Heimdall 是一个简单的基于规则的授权引擎,其主要职责是接受 HTTP 有效负载形式的授权请求,并以 HTTP 响应代码的形式返回是允许还是拒绝请求的决定。您可以将此授权引擎放在 API 网关和反向代理后面,以保护您的 API 和服务,并允许它们制定对 CAS 的授权请求,接收响应并将其转换回调用方。
在北欧神话中,Heimdall是守护入侵者的神和守门人,并被证明拥有先见之明和敏锐的感官。作为看门人,他负责彩虹桥 Bifrost 并密切关注乘客。
一般流程可使用以下步骤进行总结:
- 可授权资源已向 CAS 注册
- …使用适当的方法、URI、命名空间和上下文
- …使用适当的授权策略
- 授权请求已提交给 CAS
- …与适当的校长/科目
- …使用适当的方法、URI、命名空间和上下文
- CAS 根据请求查找匹配的可授权资源
- …然后根据请求确定主体/主题
- 然后,CAS 会咨询授权引擎,以根据资源、委托人和请求做出决策
- CAS 向调用方返回响应,接受或拒绝请求

用法
请注意,CAS 只是充当策略定义点 (PDP) 和策略信息点 (PIP)。授权执行 (PEP) 必须由调用方在其他地方进行,这通常发生在 bean API 网关或 nginx 反向代理等上。
-
-
-
- 配置
-
-
通过在覆盖中包含以下依赖项来启用 Heimdall 授权支持:
Apache Maven
Gradle
BOM - Spring
BOM - Gradle
资源
| 1 2 3 4 5 6 7 8 9 10 | dependencies { /* The following platform references should be included automatically and are listed here for reference only. implementation enforcedPlatform("org.apereo.cas:cas-server-support-bom:${project.'cas.version'}") implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
*/ implementation "org.apereo.cas:cas-server-support-heimdall"} |
CAS 配置目录中提供了以下设置和属性:
必填
笔记
下面列出的配置设置在 CAS 配置元数据中标记为 Required。此标志表示可能需要该设置的存在才能激活或影响 CAS 功能的行为,并且通常应进行审查、可能拥有和调整。如果为该设置分配了默认值,则无需严格将该设置放在配置副本中,但仍应对其进行检查以确保它符合您的部署预期。
Show entries
搜索:
| · cas.heimdall.json.location= 在 CAS 能够自动监视底层资源的更改并动态检测更新和修改的情况和场景中,您可以将以下设置指定为环境变量或系统属性,其值为 false,以禁用资源观察程序:org.apereo.cas.util.io.PathWatcherService。 org.apereo.cas.configuration.model.SpringResourceProperties. 如何配置此属性? |
显示 1 到 1 的 1 个条目
上一页1下一页
-
-
-
- 授权请求
-
-
授权请求是一个简单的负载,它使用终端节点 /heimdall/authorize 通过 POST 发送到 Heimdall 授权引擎。有效负载具有以下结构:
| 1 2 3 4 5 6 7 8 | { "method" : "POST", "uri" : "/api/example?hello=world", "namespace" : "API_EXAMPLE", "context" : { "key" : "value" }} |
…它试图询问 CAS:
是否允许使用 HTTP 方法 POST 对 API_EXAMPLE 拥有的 /api/example?hello=world 的请求?
支持以下元素:
| 田 | 描述 |
| method | 请求的 HTTP 方法以允许或拒绝。 |
| uri | 供调用方访问和调用的请求 URI。 |
| namespace | 相关 API 或资源的所有者的逻辑名称。 |
| context | 自由格式的键值对,用于基于任意上下文数据的更高级决策。 |
典型响应包括 200、401 或 403。
-
-
-
- 授权委托人
-
-
授权请求应使用 Bearer 或 Basic 方案 (Authorization: Bearer/Basic ...) 提供 Authorization 标头。标头中的令牌必须指示要使用请求中指定的详细信息访问资源的人员、使用者或授权委托人。
authorization 标头值可以是以下值之一:
- 一个 OpenID Connect ID 令牌,作为Bearer名令牌传递,由 CAS 在充当 OpenID Connect 提供商时生成。
- 一个 JWT 访问令牌,作为Bearer名令牌传递,由 CAS 在充当 OAuth 或 OpenID Connect 身份提供者时生成。
- 不透明的访问令牌(即 AT-1-...),作为Bearer记名令牌传递,由 CAS 在充当 OAuth 或 OpenID Connect 身份提供商时生成。
- 一个有效的 Base64 编码的 username:password,作为 Basic 令牌传递,可被 CAS 身份验证引擎接受。
提取所有令牌类型的声明或属性并将其附加到最终委托人,然后将其传递给授权策略引擎以做出决策。
-
-
-
- 授权资源
-
-
Heimdall 支持和保护的可授权资源和 API 应在 CAS 中注册。这是通过平面 JSON 文件定义和配置资源及其关联所有者的列表来完成的。为了便于发现,文件按 API 所有者或组(即 API_EXAMPLE.json)进行命名和分类,这些 API 所有者或组描述了该命名空间中的 API 集合:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | { "@class": "org.apereo.cas.heimdall.authorizer.resource.AuthorizableResources", "resources": [ "java.util.ArrayList", [ { "@class": "org.apereo.cas.heimdall.authorizer.resource.AuthorizableResource", "id": 1, "pattern": "/api/example.*", "method": "PUT", "enforceAllPolicies": false, "policies": [ "java.util.ArrayList", [ {} ]], "properties" : { "@class" : "java.util.HashMap", "key" : "value" } } ] ], "namespace": "API_EXAMPLE"} |
请注意,策略的加载、排序和评估是按照它们在文件中定义的顺序进行的。如果您的策略对模式进行操作,则可能需要确保首先列出最具体的策略。

用法
请记住,文件名大多无关紧要。虽然我们建议使用合理的命名约定,但策略中的 namespace 字段实际上是确定其所有者的部分。
指定命名空间和资源拥有的授权策略支持以下元素:
| 田 | 描述 |
| id | 此资源的唯一数字标识符。 |
| pattern | 描述资源或 API 终端节点的 URI 正则表达式模式。 |
| method | 允许访问资源的 HTTP 方法(作为正则表达式模式,或 * 表示所有)。 |
| policies | 附加到资源以允许或拒绝访问的策略列表。 |
| enforceAllPolicies | 是否必须查阅所有策略才能授权请求。默认值为 false。 |
| properties | 附加到资源的任意键值对,用于高级决策。 |
-
-
-
-
- 自定义
-
-
-
您还可以构建自己的存储库实现来注册和加载可授权资源。这可以通过提供 AuthorizableResourceRepository的专用实现并将其注册到运行时来完成:
| 1 2 3 4 | @Beanpublic AuthorizableResourceRepository authorizableResourceRepository( return new MyResourceRepository();} |
请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。
-
-
-
- 授权策略
-
-
策略是附加到资源以允许或拒绝访问的规则。每个可授权资源都可以分配有一个或多个策略。策略按照为资源定义策略的顺序进行评估。CAS 支持以下策略:
Groovy
GROUPER 组
组权限
必需属性
被拒绝的属性
必需的 ACR
所需的 AMR
所需受众
必需的颁发者
必需的范围
REST API
OPENFGA
一个授权策略,可以接受内联或外部 Groovy 脚本来做出决策:
| 1 2 3 4 5 6 7 8 9 10 11 12 | { "@class": "org.apereo.cas.heimdall.authorizer.resource.policy.GroovyAuthorizationPolicy", "script" : ''' groovy { def iAllowThis = true return iAllowThis ? AuthorizationResult.granted("OK") : AuthorizationResult.denied("NOPE") } '''} |
以下参数将传递给脚本:
| 参数 | 描述 |
| resource | 匹配的 AuthorizableResource 对象。 |
| request | 提供的 AuthorizationRequest 对象。 |
| applicationContext | 对 Spring ApplicationContext 引用的引用。 |
| logger | 负责发出日志消息的对象,例如 logger.info(...) |
-
-
-
- 执行器端点
-
-
CAS 提供以下端点:
| GET | /cas/actuator/heimdall/resources
|
获取所有可授权资源。
| GET | /cas/actuator/heimdall/resources/{namespace}
|
| GET | /cas/actuator/heimdall/resources/{namespace}/{id}
|
| POST | /cas/actuator/heimdall/resource
|
OpenFGA 是一种快速、灵活的细粒度授权系统,旨在实现大规模的可靠性和低延迟。它由 Okta/Auth0 设计、构建和赞助。
此访问策略构建授权请求并将其提交到 OpenFGA 的check API 终端节点。授权请求的细节使用访问策略本身中通常定义的设置传授给 CAS:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | { "@class" : "org.apereo.cas.services.CasRegisteredService", "serviceId" : "^https://.+", "name" : "test", "id" : 1, "accessStrategy" : { "@class": "org.apereo.cas.services.OpenFGARegisteredServiceAccessStrategy", "apiUrl": "http://localhost:8080", "object": "my-document", "relation": "owner", "storeId": "Y75hgyt75mhp", "token": "92d4a401-86b4-4636-b742-a7c8034756a0" }} |
以下字段可用于此访问策略:
| 田 | 目的 |
| relation | [1] 授权元组中的访问关系或类型;默认为 owner。 |
| object | [1] 授权元组的对象;如果未定义,则默认为服务 URL。 |
| storeId | [1] 授权存储标识符。 |
| apiUrl | [1] OpenFGA 端点 URL。 |
| token | [1] 如果需要,要在 Authorization 标头中使用的不记名令牌。 |
Cerbos 是一种与语言无关的开放核心可扩展授权解决方案,通过为应用程序资源编写上下文感知访问控制策略,使用户权限和授权易于实施和管理。
此访问策略构建授权请求并将其提交到 Cerbos 的 check/resources API 端点。有关授权请求的要点:
资源 ID 分配给 CAS 注册服务的数字标识符。
所有 principal 属性都打包并包含在授权请求中。
授权请求中包含有关 CAS 注册服务的以下详细信息:
serviceUrl:应用程序 URL。
serviceName:已注册的服务名称。
serviceId:已注册的服务 ID。
serviceFriendlyName:已注册的服务友好名称。
serviceType:已注册的服务类型。
授权请求的细节使用通常在访问策略本身中定义的设置教给 CAS:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | { "@class" : "org.apereo.cas.services.CasRegisteredService", "serviceId" : "^https://.+", "name" : "test", "id" : 1, "accessStrategy" : { "@class": "org.apereo.cas.services.CerbosRegisteredServiceAccessStrategy", "apiUrl": "http://localhost:3592", "token": "...", "scope": "scope1", "requestId": "...", "rolesAttribute": "memberOf", "kind": "kind1", "actions": [ "java.util.ArrayList", [ "read", "write", "view"] ], "auxData": { "@class": "java.util.HashMap" "jwt": { "@class": "java.util.HashMap", "token": "...", "keySetId": "..." } } }} |
以下字段可用于此访问策略:
| 田 | 目的 |
| apiUrl | [1] Cerbos 端点 URL 默认为 http://localhost:3592。 |
| token | [1] 如果需要,要在 Authorization 标头中使用的不记名令牌。 |
| requestId | [1] 请求 ID 可以是唯一标识请求的任何内容。 |
| kind | [1] 资源类型。必填。此值用于确定要评估的资源策略。 |
| scope | [1] 资源范围。自选。 |
| rolesAttribute | [1] 属性名称,默认为 memberOf,表示分配给 CAS 主体的角色列表。 |
| actions | 对资源执行的操作列表。 |
| auxData | 自选。用于提供辅助数据的 block。有关更多信息,请参阅 Cerbos。 |
Permit.io 以服务形式提供权限,使开发人员能够快速将权限和访问控制融入到应用程序中。它提供了一个集中式控制面板、SDK、API 和微服务,开发人员需要添加这些微服务来创建决策和执行点。
此访问策略尝试将用户与 Permit.io 同步,然后构建授权请求并将其提交给 Permit.io。授权请求的细节使用访问策略本身中通常定义的设置传授给 CAS:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | { "@class" : "org.apereo.cas.services.CasRegisteredService", "serviceId" : "^https://.+", "name" : "test", "id" : 1, "accessStrategy" : { "@class": "org.apereo.cas.services.PermitRegisteredServiceAccessStrategy", "action": "...", "resource": "...", "apiKey": "...", "tenant": "default", "pdpAddress": "https://cloudpdp.api.permit.io", "emailAttributeName": "email", "firstNameAttributeName": "firstname", "lastNameAttributeName": "lastname", "context" : { "@class" : "java.util.TreeMap", "param1" : "value1" } }} |
以下字段可用于此访问策略:
| 田 | 目的 |
| apiKey | [1] Permit.io API SDK 密钥,允许 SDK 进行身份验证、同步帐户等。 |
| action | 需要执行或评估的操作或权限。 |
| resource | 正在请求访问的资源。 |
| tenant | 自选。租户 ID 或密钥在 Permit.io 中定义,并在您可能拥有多个租户的情况下使用。 |
| pdpAddress | [1] 可选。Permit.io API 终端节点。 |
| emailAttributeName | 自选。同步账户时用于标识委托人电子邮件的属性名称。 |
| firstNameAttributeName | 自选。在同步账户时用于标识委托人名字的属性名称。 |
| lastNameAttributeName | 自选。同步账户时用于标识委托人的姓氏的属性名称。 |
Open Policy Agent 是一个开源的通用策略引擎,可在整个堆栈中实现统一、精细和上下文感知的策略实施。策略以高级声明性语言表示,具有给定的上下文,可促进安全、高性能、精细的控制。
此访问策略构建授权请求并通过 POST 将其提交给 OPA。授权请求的细节使用访问策略本身中通常定义的设置传授给 CAS:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { "@class" : "org.apereo.cas.services.CasRegisteredService", "serviceId" : "^https://.+.example.org", "name" : "test", "id" : 1, "accessStrategy" : { "@class": "org.apereo.cas.services.OpenPolicyAgentRegisteredServiceAccessStrategy", "apiUrl": "http://localhost:8080", "decision": "example/authz/allow", "token": "92d4a401q26o0", "context" : { "@class" : "java.util.TreeMap", "param1" : "value1" } }} |
以下字段可用于此访问策略:
| 田 | 目的 |
| apiUrl | [1] OPA 端点 URL。 |
| decision | 在 OPA 中定义的策略决策的名称。 |
| token | [1] 如果需要,要在 Authorization 标头中使用的不记名令牌。 |
| context | 自定义上下文,用于携带数据以协助策略决策。 |
[1] 此字段支持 Spring 表达式语言语法。
input 参数下的授权请求正文与以下结构匹配:
| 1 2 3 4 5 6 7 8 9 10 | { "input": { "principal": "casuser", "service": "https://myapp.example.com", "attributes": { "email": ["user@example.org"] }, "context": { "parameter1": "value1" } }} |
如果策略评估成功,OPA 将返回 HTTP 200 响应代码。非 HTTP 200 响应代码指示配置或运行时错误。策略决策结果包含在响应消息正文的 result key 中:
| 1 2 3 | { "result": true} |
Amazon Verified Permissions 是一种可扩展的权限管理和细粒度授权服务,适用于您构建的应用程序。
此访问策略会构建授权请求并将其提交给 Amazon Verified Permissions。授权请求的细节使用访问策略本身中通常定义的设置传授给 CAS:
| 1 2 3 4 5 6 7 8 9 10 11 12 | { "@class": "org.apereo.cas.aws.authz.AmazonVerifiedPermissionsRegisteredServiceAccessStrategy", "credentialAccessKey": "...", "credentialSecretKey": "...", "region": "us-east-1", "policyStoreId": "...", "actionId": "read", "context": { "@class": "java.util.LinkedHashMap", "key": "value" }} |
以下字段可用于此访问策略:
| 田 | 目的 |
| credentialAccessKey | [1](可选)用于验证请求的访问密钥。 |
| credentialSecretKey | [1](可选)用于验证请求的密钥。 |
| region | [1](可选)用于授权 API 请求的 AWS 区域。 |
| policyStoreId | [1](可选)此策略存储中用于使用授权的策略 |
| context | (可选)用于精细授权决策的其他上下文。 |
| actionId | [1] 指定要授权的请求操作。 |
[1] 此字段支持 Spring 表达式语言语法。
-
-
-
- 自定义
- 自定义无密码身份验证令牌
- 自定义
-
-
您还可以使用以下 bean 定义并通过实现 PasswordlessTokenRepository 来定义自己的令牌 Management 存储:
| 1 2 3 4 | @Beanpublic PasswordlessTokenRepository passwordlessTokenRepository() { ...} |
请参阅本指南,了解有关如何将配置注册到 CAS 运行时的更多信息。
相关文章:
CAS单点登录(第7版)7.授权
如有疑问,请看视频:CAS单点登录(第7版) 授权 概述 授权和访问管理 可以使用以下策略实施授权策略以保护 CAS 中的应用程序和依赖方。 服务访问策略 服务访问策略允许您定义授权和访问策略,以控制对向 CAS 注册的…...
C语言中的对象、左值、右值、序列点、副作用的概念
对象 赋值表达式的目的就是把数据存储到内存位置上,用于存储值的数据区域统称数据对象 左值 左值是C语言中的术语,用于标识特定数据对象的名字。因此,对象指的是实际的数据存储,而左值是用于标识或定位存储位置的标签。 右值 …...
java集合框架之Map系列
前言 首先从最常用的HashMap开始。HashMap是基于哈希表实现的,使用数组和链表(或红黑树)的结构。在Java 8之后,当链表长度超过阈值时会转换为红黑树,以提高查询效率。哈希冲突通过链地址法解决。需要明确的是ÿ…...
【MediaTek】 T750 openwrt-23.05编 cannot find dependency libexpat for libmesode
MediaTek T750 T750 采用先进的 7nm 制程,高度集成 5G 调制解调器和四核 Arm CPU,提供较强的功能和配置,设备制造商得以打造精巧的高性能 CPE 产品,如固定无线接入(FWA)路由器和移动热点。 MediaTek T750 平台是一款综合的芯片组,集成了 5G SoC MT6890、12nm 制程…...
EasyX学习笔记1:线条
目录 一、线条颜色1. setlinecolor - 设置当前线条颜色2. getlinecolor - 获取当前线条颜色 二、线条样式1. setlinestyle - 设置线条样式(宽度、类型等) 三、绘制线条1. line - 绘制两点间直线2. lineto - 从当前位置画线到指定点3. linerel - 相对当前…...
HTML、Vue和PHP文件的区别与联系
一、核心区别 类型性质执行环境功能特点.html静态标记语言浏览器直接解析定义页面结构和内容,无逻辑处理能力.vue前端框架组件文件浏览器/构建工具整合HTML模板+JS逻辑+CSS样式,支持动态数据绑定和组件化开发.php服务器端脚本语言文件Web服务器执行动态生成HTML内容,支持数据…...
C#windows窗体人脸识别
一、创建一个数据库,名为TestFaceDB 里面有一张表就OK了,表名Users,表里面有几个字段我说明一下: id--------------------bigint----------------------编号 name--------------varchar(50)-----------------用户名 phone--------------v…...
53倍性能提升!TiDB 全局索引如何优化分区表查询?
作者: Defined2014 原文来源: https://tidb.net/blog/7077577f 什么是 TiDB 全局索引 在 TiDB 中,全局索引是一种定义在分区表上的索引类型,它允许索引分区与表分区之间建立一对多的映射关系,即一个索引分区可以对…...
vue字符串的常用方法,截取字符串,获取字符串长度,检索字符串
1.使用substr方法截取字符串 let str "12345"; let part str.substr(0, 3); // 截取从索引0开始到索引3的子字符串 console.log(part); // "123" 2.获取字符串长度 JavaScript中的字符串有一个 length属性,该属性可以用在VUE获取字符串的长度…...
Neo4j集群学习
文章目录 官方指导文档Neo4j因果集群核心服务器只读副本因果一致性 Neo4j集群搭建Neo4j企业版下载集群简介虚拟机准备jdk安装实施搭建访问neo4j Web服务 集群添加Core节点 官方指导文档 Neo4j 5 ClusterNeo4j 5 Basic Cluster Neo4j因果集群 集群是Neo4企业版中所提供的功能…...
【人工智能】深度学习中的梯度检查:原理详解与Python实现
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 梯度检查是深度学习模型开发中至关重要的一步,它能够验证反向传播的梯度计算是否正确,从而确保模型训练的稳定性和准确性。在本文中,我们…...
Kotlin 2.1.0 入门教程(十七)接口
接口 接口可以包含抽象方法的声明,也可以包含方法的实现。 接口与抽象类的不同之处在于,接口无法存储状态。接口可以拥有属性,但这些属性要么必须是抽象的,要么就得提供访问器的实现。 接口使用 interface 关键字来定义&#x…...
了解i2c_check_functionality()
i2c_check_functionality()用来检查设备适配器支持的标志是否要求。 打开“include/linux/i2c.h” /* Return the functionality mask */ static inline u32 i2c_get_functionality(struct i2c_adapter *adap) { return adap->algo->functionality(adap); //返回该…...
Retrieval-Augmented Generation for LargeLanguage Models: A Survey
标题:Retrieval-Augmented Generation for Large Language Models: A Survey 作者:Yunfan Gaoa , Yun Xiongb , Xinyu Gaob , Kangxiang Jiab , Jinliu Panb , Yuxi Bic , Yi Daia , Jiawei Suna , Meng Wangc , and Haofen Wang 1. By referencing ext…...
C#多线程异步连接MySQL与SQLserver数据库
C#多线程异步连接MySQL与SQLserver数据库 一、前言二、多线程异步连接数据库代码2.1代码块2.2代码说明 参考文档 一、前言 当编写代码连接多台设备上的数据库时,如果采用同步逐个连接的方式,在网络畅通的情况下连接速度尚可,但当其中一台设备…...
try learning-git-branching
文章目录 mergerebase分离 HEAD相对引用利用父节点branch -f 撤销变更cherry-pick交互式 rebase只取一个提交记录提交的技巧rebase 在上一次提交上amendcherry-pick 在上一次提交上 amend tag多分支 rebase两个parent节点纠缠不清的分支偏离的提交历史锁定的Main learning git …...
代码随想录算法【Day46】
Day46 647. 回文子串 class Solution { public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int result 0;for (int i s.size() - 1; i > 0; i--) { // 注意遍历顺序for (int j i; j < s…...
flutter本地推送 flutter_local_notifications的使用记录
flutter_local_notifications 效果 安卓配置(AndroidManifest.xml) <uses-permission android:name"com.android.alarm.permission.SET_ALARM"/> <uses-permission android:name"android.permission.SCHEDULE_EXACT_ALARM" /> <us…...
Springboot 中如何使用Sentinel
在 Spring Boot 中使用 Sentinel 非常方便,Spring Cloud Alibaba 提供了 spring-cloud-starter-alibaba-sentinel 组件,可以快速将 Sentinel 集成到你的 Spring Boot 应用中,并利用其强大的流量控制和容错能力。 下面是一个详细的步骤指南 …...
AI Agent 有哪些痛点问题
AI Agent 有哪些痛点问题 目录 AI Agent 有哪些痛点问题身份安全问题数据安全问题模型安全问题可靠性问题伦理和合规问题身份安全问题 身份界定模糊:AI代理既非完全意义上的人类,也不同于传统的机器,现有的身份管理工具难以准确对其进行定位和管理,导致在权限分配、责任追溯…...
一个让Stable Diffusion更稳定、更易用的Github开源项目
2023除了ChatGPT大火,Stable Diffusion同样也是非常火热,Stable Diffusion是一个Github开源项目,很多爱好者都会本地安装,但面对一些初学者来说,在安装、配置和使用过程中还是会经常出现很多问题,特别不了解…...
Docker+Jenkins自动化部署SpringBoot项目【详解git,jdk,maven,ssh配置等各种配置,附有示例+代码】
文章目录 DockerJenkins部署SpringBoot项目一.准备工作1.1安装jdk111.2安装Maven 二.Docker安装Jenkins2.1安装Docker2.2 安装Jenkins2.3进入jenkins 三.Jenkins设置3.1安装jenkins插件3.2全局工具配置全局配置jdk全局配置maven全局配置git 3.3 系统配置安装 Publish Over SSH …...
.NET SixLabors.ImageSharp v1.0 图像实用程序控制台示例
使用 C# 控制台应用程序示例在 Windows、Linux 和 MacOS 机器上处理图像,包括创建散点图和直方图,以及根据需要旋转图像以便正确显示。 这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包(版本 1.0.4)添加到.NET Core 3.1/ …...
【机器学习】线性回归与一元线性回归
线性回归与一元线性回归 V1.1线性回归问题线性方程的最优解一元线性回归一元线性回归的方程一元线性回归距离衡量方法一元线性回归的最优化求解一元线性回归的最小二乘法解法 V1.1 线性回归问题 线性回归问题就是找一条线或超平面,并使用线或超平面来描述数据分布…...
soular基础教程-使用指南
soular是TikLab DevOps工具链的统一帐号中心,今天来介绍如何使用 soular 配置你的组织、工作台,快速入门上手。  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责…...
《Spring实战》(第6版)第1章 Spring起步
第1部分 Spring基础 第1章 Spring起步 1.1 什么是Spring Spring的核心是提供一个容器(container)。 称为Spring应用上下文(Spring application context)。 创建和管理应用的组件(bean),与上下文装配在一起。 Bean装配通过依赖注入(Dependency Injection,DI)。…...
PAT乙级真题 — 1084 外观数列(java)
外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ...它从不等于 1 的数字 d 开始,序列的第 n1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对…...
I.MX6ull 看门狗
一、看门狗介绍 WatchDog是为了能够防止程序跑飞而使用的一种硬件模块。如果你的程序没有跑飞,那么你的程序会 定时的去喂看门狗;如果你的程序跑飞了,那么就不会再去喂狗了,如果超过了喂狗的时间,那么狗就会 自己生成一个信号来重…...
鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务
😊😊😊欢迎来到本博客😊😊😊 本次博客内容将聚焦于深度学习的相关知识与实践 🎉作者简介:⭐️⭐️⭐️主要研究方向涵盖深度学习、计算机视觉等方向。 📝目前更新&#x…...
一维差分算法篇:高效处理区间加减
那么在正式介绍我们的一维差分的原理前,我们先来看一下一维差分所应用的一个场景,那么假设我们现在有一个区间为[L,R]的一个数组,那么我要在这个数组中的某个子区间比如[i,m] (L<i<m<R)进行一个加k值或者减去k值的一个操作ÿ…...



