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

【Easylive】Interact与Web服务调用实例及网关安全拦截机制解析

【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版

easylive-cloud-interacteasylive-cloud-web
在这里插入图片描述在这里插入图片描述

1. 不同服务(web和interact)之间的调用方式
调用流程
• 角色分工:

easylive-cloud-web:作为消费者(Consumer),通过Feign客户端(InteractClient)声明对interact服务的接口调用。

easylive-cloud-interact:作为提供者(Provider),通过VideoCommentApiUserActionApi等类实现具体的内部API逻辑。

• 调用链路:

  1. Feign客户端声明(Web服务):

    @FeignClient(name = Constants.SERVER_NAME_INTERACT)
    public interface InteractClient {@RequestMapping(Constants.INNER_API_PREFIX + "/comment/delCommentByVideoId")void delCommentByVideoId(@RequestParam String videoId);
    }
    

    ◦ 通过@FeignClient注解绑定到interact服务,接口方法映射到interact服务的内部API路径(如/inner/comment/delCommentByVideoId)。

  2. 内部API实现(Interact服务):

    @RestController
    @RequestMapping(Constants.INNER_API_PREFIX + "/comment")
    public class VideoCommentApi {@RequestMapping("/delCommentByVideoId")public void delCommentByVideoId(@NotEmpty String videoId) {// 实际业务逻辑}
    }
    

    ◦ 提供者通过@RestController@RequestMapping暴露接口,路径与Feign客户端声明一致(如/inner/comment/delCommentByVideoId)。

  3. 实际调用:
    ◦ Web服务通过注入InteractClient实例,直接调用其方法(如interactClient.delCommentByVideoId(videoId)),底层由Feign和Ribbon完成服务发现和HTTP请求转发。

关键设计
• 服务发现:Feign客户端通过name = Constants.SERVER_NAME_INTERACT动态解析interact服务的地址(依赖注册中心如Nacos)。

• 路径约定:双方通过Constants.INNER_API_PREFIX(如/inner)统一内部API前缀,确保接口匹配。

• 协议透明化:Feign屏蔽了HTTP调用的细节,开发者只需关注接口定义和业务逻辑。


2. GatewayGlobalRequestFilter的作用与实现原理
核心功能
• 安全拦截:防止外部请求直接访问内部服务API,强制所有请求通过网关路由。

• 实现方式:通过检查请求路径是否包含内部API前缀(Constants.INNER_API_PREFIX),若包含则抛出异常。

代码解析

@Component
public class GatewayGlobalRequestFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {String rawPath = exchange.getRequest().getURI().getRawPath();if (rawPath.indexOf(Constants.INNER_API_PREFIX) != -1) {throw new BusinessException(ResponseCodeEnum.CODE_404); // 拦截直接访问内部API的请求}return chain.filter(exchange); // 放行非内部API请求}@Overridepublic int getOrder() {return 0; // 过滤器执行优先级(数值越小优先级越高)}
}

如何实现安全隔离?

  1. 路径标记:
    • 所有内部API统一添加前缀(如/inner),例如:

    ◦ Interact服务的API路径:/inner/comment/delCommentByVideoId

    ◦ Feign客户端路径:@RequestMapping(Constants.INNER_API_PREFIX + "/comment/delCommentByVideoId")

  2. 网关路由配置:
    • 外部请求只能访问网关暴露的公开路由(如/api/**),网关再将请求转发到内部服务。

    • 内部服务之间的调用通过Feign完成,路径包含/inner,但不经过网关(直接服务间通信)。

  3. 过滤器拦截:
    • 当外部用户直接请求http://interact-service/inner/comment/delCommentByVideoId时:

    ◦ 请求到达网关的GatewayGlobalRequestFilter,因路径包含/inner,触发异常(返回404)。

    • 当网关转发公开API(如/api/comment)到内部服务时,路径不包含/inner,过滤器放行。

为什么必须走网关?
• 统一入口:网关负责鉴权、限流、日志等公共逻辑。

• 隐藏内部细节:外部无法感知内部服务地址和API路径(如/inner仅用于服务间调用)。

• 安全合规:避免内部接口暴露给公网,减少攻击面。


总结

问题关键点
服务间调用通过Feign声明接口 + @InnerApi路径约定 + 服务发现机制。
网关过滤器的安全隔离路径标记(/inner) + 全局过滤器拦截 + 网关路由配置,强制外部请求走统一入口。

这种设计既保证了微服务间的灵活调用,又通过网关层实现了安全的访问控制。


1. 不同服务之间(web和interact)是如何进行调用的?

想象一下,你的系统有两个“部门”:
• Web服务(easylive-cloud-web):负责对外提供接口,比如用户访问的网页或APP请求。

• Interact服务(easylive-cloud-interact):专门处理互动相关的逻辑,比如弹幕、评论、用户行为记录等。

它们是怎么“沟通”的呢?

✅ Web服务说:“Interact老哥,帮我删个评论呗!”
• Web服务里有个“外交官”(InteractClient),专门负责和Interact服务对话。

• 这个外交官(@FeignClient)知道Interact服务的名字(SERVER_NAME_INTERACT),所以能准确找到它。

• 它按照约定好的“暗号”(/inner/comment/delCommentByVideoId)发送请求。

✅ Interact服务收到请求后:“好的,我来处理!”
• Interact服务内部有个“业务员”(VideoCommentApi),专门处理评论相关的事情。

• 它看到请求路径匹配(/inner/comment/delCommentByVideoId),就执行删除逻辑。

整个过程就像:

  1. Web服务(前端)说:“我要删评论!”
  2. InteractClient(外交官):“我去找Interact服务!”
  3. Interact服务(后端):“收到,马上处理!”
  4. Web服务(前端):“搞定,用户满意!”

关键点:
• FeignClient 让Web服务能像调用本地方法一样调用Interact服务。

/inner/前缀 是内部API的“暗号”,只有服务之间知道,外部不能直接访问。


2. GatewayGlobalRequestFilter的作用?如何强制走网关?

问题:
如果外部用户直接访问 http://interact-service/inner/comment/delCommentByVideoId,岂不是能绕过网关,直接调用内部服务?

✅ 解决方案:GatewayGlobalRequestFilter(网关的“保安”)

它的工作方式:

  1. 检查每个请求:
    • 用户访问 http://interact-service/inner/comment/delCommentByVideoId

    • 网关的“保安”一看路径有 /inner/,立刻警觉:“这是内部API,不能直接访问!”

    • 直接返回 404(找不到),让用户以为这个接口不存在。

  2. 放行合法请求:
    • 如果用户访问的是公开API(比如 /api/comment),网关会正常放行,并转发给对应服务。

为什么必须走网关?
• 安全:网关可以做鉴权、限流、日志记录,防止恶意请求。

• 隐藏内部细节:外部用户不知道内部服务怎么调用的,只能通过网关访问。

• 统一入口:所有请求都经过网关,方便管理(比如灰度发布、熔断降级)。

通俗理解:
• 网关 就像公司的前台,所有访客必须登记才能进。

GatewayGlobalRequestFilter 是前台的“黑名单检查员”,看到“内部员工通道”(/inner/)直接拦下:“外人不能进!”

• FeignClient 是公司内部电话,员工之间可以直接沟通,但外人打不进来。


总结

  1. 服务间调用:Web服务通过 FeignClient 像打电话一样调用Interact服务,路径用 /inner/ 标记。
  2. 网关安全:GatewayGlobalRequestFilter 像“保安”,禁止外部直接访问 /inner/ 接口,必须走网关。

这样设计既灵活(服务间直接通信)又安全(外部必须走网关),你的系统既高效又稳健! 🚀

在这里插入图片描述
在这里插入图片描述

相关文章:

【Easylive】Interact与Web服务调用实例及网关安全拦截机制解析

【Easylive】项目常见问题解答&#xff08;自用&持续更新中…&#xff09; 汇总版 easylive-cloud-interacteasylive-cloud-web 1. 不同服务&#xff08;web和interact&#xff09;之间的调用方式 调用流程 • 角色分工&#xff1a; • easylive-cloud-web&#xff1a;作…...

【HDFS】EC重构过程中的校验功能:DecodingValidator

一、动机 DecodingValidator是在HDFS-15759中引入的一个用于校验EC数据重构正确性的组件。 先说下引入DecodingValidator的动机,据很多已知的ISSUE(如HDFS-14768, HDFS-15186, HDFS-15240,这些目前都已经fix了)反馈, EC在重构的时候可能会有各种各样的问题,导致数据错误…...

Chromium 134 编译指南 macOS篇:编译优化技巧(六)

1. 引言 在Chromium 134的开发过程中&#xff0c;优化编译速度是提升开发效率的关键因素。本文将重点介绍如何使用ccache工具来加速C/C代码的编译过程&#xff0c;特别是在频繁切换分支和修改代码时。通过合理配置和使用这些工具&#xff0c;您将能够显著减少编译时间&#xf…...

FPGA——基于DE2_115实现DDS信号发生器

FPGA——基于DE2_115实现DDS信号发生器 文章目录 FPGA——基于DE2_115实现DDS信号发生器一、实验要求二、实现过程&#xff08;1&#xff09;新建工程 二、波形存储器ROM&#xff08;1&#xff09;方波模块&#xff08;2&#xff09;正弦波形存储器&#xff08;3&#xff09;锁…...

PHP中的ReflectionClass讲解【详细版】

快餐&#xff1a; ReflectionClass精简版 在PHP中&#xff0c;ReflectionClass是一个功能强大的反射类&#xff0c;它就像是一个类的“X光透视镜”&#xff0c;能让我们在程序运行时深入了解类的内部结构和各种细节。 一、反射类的基本概念和重要性 反射是指在程序运行期间获…...

嵌入式面试题解析:常见基础知识点详解

在嵌入式领域的面试中&#xff0c;基础知识点的考察尤为重要。下面对一些常见面试题进行详细解析&#xff0c;帮助新手一步步理解。 一、原码、反码、补码及补码的好处 题目 什么叫原码、反码、补码&#xff1f;计算机学科引入补码有什么好处&#xff1f; 在计算机科学中&a…...

GPU渲染阶段介绍+Shader基础结构实现

GPU是什么 &#xff08;CPU&#xff09;Center Processing Unit:逻辑编程 &#xff08;GPU&#xff09;Graphics Processing Unit&#xff1a;图形处理&#xff08;矩阵运算&#xff0c;数据公式运算&#xff0c;光栅化&#xff09; 渲染管线 渲染管线也称为渲染流水线&#x…...

08-DevOps-向Harbor上传自定义镜像

harbor创建完成&#xff0c;往harbor镜像仓库中上传自定义的镜像&#xff0c;包括新建项目、docker配置镜像地址、镜像重命名、登录harbor、推送镜像这几个步骤&#xff0c;具体操作如下&#xff1a; harbor中新建项目 访问级别公开&#xff0c;代表任何人都可以拉取仓库中的镜…...

C++学习之路,从0到精通的征途:vector类的模拟实现

目录 一.vector的介绍 二.vector的接口实现 1.成员变量 2.迭代器 &#xff08;1&#xff09;begin &#xff08;2&#xff09;end 3.容量操作 &#xff08;1&#xff09;size&#xff0c;capacity &#xff08;2&#xff09;reserve &#xff08;3&#xff09;resize…...

嵌入式软件--stm32 DAY 2

大家学习嵌入式的时候&#xff0c;多多学习用KEIL写代码&#xff0c;虽然作为编译器&#xff0c;大家常用vscode等常用工具关联编码&#xff0c;但目前keil仍然是主流工具之一&#xff0c;学习掌握十分必要。 1.再次创建项目 1.1编译器自动生成文件 1.2初始文件 这样下次创建新…...

多模态大语言模型arxiv论文略读(二十九)

Temporal Insight Enhancement: Mitigating Temporal Hallucination in Multimodal Large Language Models ➡️ 论文标题&#xff1a;Temporal Insight Enhancement: Mitigating Temporal Hallucination in Multimodal Large Language Models ➡️ 论文作者&#xff1a;Li Su…...

【人工智能学习-01-01】20250419《数字图像处理》复习材料的word合并PDF,添加页码

前情提要 20250419今天是上师大继续教育人工智能专升本第一学期的第一次线下课。 三位老师把视频课的内容提炼重点再面授。&#xff08;我先看了一遍视频&#xff0c;但是算法和图像都看不懂&#xff0c;后来就直接挂分刷满时间&#xff0c;不看了&#xff09; 今天是面对面授…...

B端APP设计:打破传统限制,为企业开启便捷新通道

B端APP设计&#xff1a;打破传统限制&#xff0c;为企业开启便捷新通道 在数字化转型浪潮中&#xff0c;企业级移动应用正突破传统管理系统的功能边界&#xff0c;演变为连接产业链各环节的核心枢纽。本文从技术架构革新、交互模式进化、安全防护升级三个维度&#xff0c;系统…...

【多线程5】面试常考锁知识点

文章目录 悲观/乐观锁挂起等待锁/自旋锁偏向锁轻量级/重量级锁锁升级CASCAS引发的ABA问题解决方案 原子类 公平/不公平锁可重入锁ReentrantLock读写锁 Callable接口 这里的“悲观”“乐观”“挂起等待”“自旋”“轻量级”“重量级”“公平”“非公平”“可重入”仅代表某个锁的…...

Linux第一个系统程序——进度条

1.回车与换行 回车&#xff08;CR, \r&#xff09;&#xff1a; 作用&#xff1a;将光标移动到当前行的行首&#xff08;最左侧&#xff09;&#xff0c;但不换到下一行。 历史来源&#xff1a;源自打字机的“回车”操作——打字机的滑架&#xff08;Carriage&#xff09;需…...

C 语 言 --- 指 针 3

C 语 言 --- 指 针 3 函 数 指 针函 数 指 针 数 组代 码 解 释回 调 函 数 - - - qsort模 拟 实 现 qsort 函 数 总结 &#x1f4bb;作 者 简 介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;现 以 经 验 助 你 入 门 C 语 言 &#x1f4a1;个 人 主 页&#xff1a;笑口常开x…...

蓝桥杯之递归

1.数字三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径&#xff0c;把路径上面的数加起来可以得到一个和&#xff0c;你的任务就是找到最大的和&#xff08;路径上的每一步只可沿左斜线向下或右斜线向下走&#xff09;。 输…...

学习笔记十八——Rust 封装

&#x1f9f1; Rust 封装终极指南&#xff1a;结构体、模块、Trait、目录结构与模块引用 &#x1f9ed; 目录导航 什么是封装&#xff1f;Rust 的封装理念Rust 的封装工具总览模块&#xff08;mod&#xff09;和访问控制&#xff08;pub&#xff09;详解结构体和枚举&#xff…...

【面试向】点积与注意力机制,逐步编码理解自注意力机制

点积&#xff08;dot product&#xff09;两个向量点积的数学公式点积&#xff08;dot product&#xff09;与 Attention 注意力机制&#xff08;Attention&#xff09;注意力机制的核心思想注意力机制中的缩放点积自注意力机制中&#xff0c;谁注意谁&#xff1f; 逐步编码理解…...

基础数学知识-线性代数

1. 矩阵相乘 c i j = a i k ∗ b k j c_{ij} = a_{ik} * b_{kj} cij​=aik​∗bkj​ 1. 范数 1. 向量的范数 任意一组向量设为 x ⃗ = ( x 1 , x 2 , . . . , x N ) \vec{x}=(x_1,x_2,...,x_N) x =(x1​,x2​,...,xN​) 如下: 向量的1范数: 向量的各个元素的绝对值之和∥ …...

【KWDB 创作者计划】_上位机知识篇---Docker容器

文章目录 前言1. Docker 容器是什么&#xff1f;隔离性轻量级可移植性可复用性 2. Docker 核心概念镜像容器仓库Dockerfile 3. Docker 基本使用(1) 安装 Docker(2) 容器生命周期管理(3) 镜像管理(4) 进入容器内部(5) 数据持久化&#xff08;挂载卷&#xff09;(6) 网络管理 4. …...

指针函数和函数指针

指针函数本质是一个函数&#xff0c;只是函数的返回值是指针类型 函数指针本质是一个指针&#xff0c;只是这个指针指向的是一个函数 指针函数 函数有很多类型的返回值&#xff0c;例如 short funcA(参数列表) // 表示该函数返回值是一个short类型 void funcA(参数列表) // 表…...

案例驱动的 IT 团队管理:创新与突破之路:第六章 组织进化:从案例沉淀到管理体系-6.1 案例库建设方法论-6.1.2案例分级与标签体系

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 案例分级与标签体系构建方法论&#xff1a;IT团队知识管理的结构化实践1. 案例库建设的战略价值与核心挑战1.1 案例管理的战略定位1.2 分级标签体系的核心价值 2. 案例分级体…...

sqlilabs-Less之HTTP头部参数的注入——基础篇

Less-18 user-agent报错注入 这一关的代码漏洞点出现在了insert语句&#xff0c;因为这里没有对user-agent和ip_address进行过滤&#xff0c;&#xff0c;并且输出了mysql的错误信息 补充知识点 PHP里用来获取客户端IP的变量 $_SERVER[HTTP_CLIENT_IP] #这个很少使用&#xf…...

java多线程相关内容

java线程创建的方式 一共有四种方式 继承 Thread 类&#xff1a;本质上是实现了 Runnable 接口的一个实例&#xff0c;代表一个线程的实例 启动线程的唯一方 法就是通过 **Thread 类的 start()**实例方法。start()方法是一个 native 方法&#xff0c;它将启动一个新线 程&…...

Windows Server .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题

第一篇&#xff1a; Windows .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题 第二篇&#xff1a;Windows Server .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题 第三篇&#xff1a;Windows .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题 设置…...

ubuntu24.04上使用qemu+buildroot+uboot+linux+tftp+nfs模拟搭建vexpress-ca9嵌入式linux开发环境

1 准备工作 1.1 安装依赖工具 sudo apt-get update && sudo apt-get install build-essential git bc flex libncurses5-dev libssl-dev device-tree-compiler1.2 安装arm交叉编译工具链 sudo apt install gcc-arm-linux-gnueabihf安装之后&#xff0c;在终端输入ar…...

Cocos Creater打包安卓App添加隐私弹窗详细步骤+常见问题处理

最终演示效果,包含所有代码内容 + 常见错误问题处理 点击服务协议、隐私政策,跳转到相关网页, 点击同意进入游戏,不同意关闭应用 一,添加Activity,命名为MyLaunchActivity 二,编写MyLaunchActivity.java的内容 package com.cocos.game.launch;import android.os.Bund…...

UI文件上传

1、文件上传&#xff1a;文件上传是自动化中比较麻烦棘手的部分。 有些场景我们需要上传本地文件到项目里。这种比较麻烦&#xff0c;因为需要点开文件上传的窗口后&#xff0c;打开的是windows的文件选择窗口&#xff0c; 而selenium是无法操作这个窗口的。 selenium只能操作…...

2.凸包优化求解

1.减而治之(Decrease and Conquer) 插入排序 典型的减而治之算法就是插入排序方法 插入排序法: 在未排序中选择一个元素&#xff0c;插入到已经排序号的序列中 将凸包也采用减而治之的方法 2.In-Convex-Polygon Test 怎么判断引入的极点存在于多边形里面还是外面&#xff1…...

从0开发一个unibest+vue3项目,使用vscode编辑器开发,总结vue2升vue3项目开始,小白前期遇到的问题

开头运行可看官网 链接: unibest官网 一&#xff1a;vscode中vue3代码显示报错标红波浪线 去查看扩展商店发现一些插件都弃用了&#xff0c;例如h5的插件以及vue老插件 解决办法&#xff1a;下载Vue - Official插件&#xff08;注意&#xff1a;横杠两边是要加空格的&#xff…...

jmeter中文乱码问题解决

修改jmeter.properties配置文件‌ 进入JMeter安装目录的bin文件夹&#xff0c;找到jmeter.properties文件。搜索参数sampleresult.default.encodingUTF-8&#xff0c;取消注释&#xff08;删除行首的#&#xff09;&#xff0c;并将其值改为UTF-8。保存文件并‌重启JMeter‌生效…...

额外篇 非递归之美:归并排序与快速排序的创新实现

个人主页&#xff1a;strive-debug 快速排序非递归版本 非递归版本的快速排序是为了解决在空间不够的情况下&#xff0c;利用栈来模拟递归的过程。 递归版本的快速排序是空间换时间&#xff0c;好实现。 实现思路&#xff1a; 1. 创建一个栈&#xff0c;将数组的右边界下标和…...

[文献阅读] EnCodec - High Fidelity Neural Audio Compression

[文献信息]&#xff1a;[2210.13438] High Fidelity Neural Audio Compression facebook团队提出的一个用于高质量音频高效压缩的模型&#xff0c;称为EnCodec。Encodec是VALL-E的重要前置工作&#xff0c;正是Encodec的压缩量化使得VALL-E能够出现&#xff0c;把语音领域带向大…...

JavaSpring 中使用 Redis

创建项目 配置 Redis 服务地址 创建 Controller 类 由于当前只是些简单的测试代码&#xff0c;所以就不进行分层了&#xff0c;只创建一个 Controller 来实现 jedis 通过 jedis 对象里的各种方法来操作 Redis 此处通过 StringRedisTemplate 来操作 Redis 最原始提供的类是 Re…...

B端可视化像企业数据的透视镜,看清关键信息

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;数据的价值不仅取决于其数量&#xff0c;更在于企业能否快速、准确地提取关键信息并据此做出决策。B端可视化技术的出现&#xff0c;为企业提供了一种强大的工具&#xff0c;它如同企业的“透视镜”&…...

【愚公系列】《Python网络爬虫从入门到精通》055-Scrapy_Redis分布式爬虫(安装Redis数据库)

&#x1f31f;【技术大咖愚公搬代码&#xff1a;全栈专家的成长之路&#xff0c;你关注的宝藏博主在这里&#xff01;】&#x1f31f; &#x1f4e3;开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主&#xff01; &#x1f…...

【MySQL】SQL语句在MySQL中的执行过程?主要存储引擎区别?

MySQL SQL语句执行过程详解 作为面试官&#xff0c;我来详细剖析一条SQL语句在MySQL中的完整执行过程&#xff0c;这是每个后端开发者都应该掌握的核心知识。 一、连接阶段 建立连接 客户端通过TCP/IP协议与MySQL服务器建立连接(默认3306端口)服务器验证用户名、密码和权限…...

致远OA——数据回填表单

文章目录 :apple: 业务需求描述:pineapple: 业务分析和实现 &#x1f34e; 业务需求描述 测试案例&#xff1a; https://pan.quark.cn/s/3f58972f0a27 官网地址&#xff1a; https://open.seeyoncloud.com/v5devCAP/94/355/359/399/405/406.html 需求描述&#xff1a; 点…...

MongoDB导出和导入数据

安装mongodump工具 参考文章mongodump工具安装及使用详解_mongodump安装-CSDN博客 MongoDB导入导出和备份的命令工具从4.4版本开始不再自动跟随数据库一起安装&#xff0c;而是需要自己手动安装。 官方网站下载链接&#xff1a;Download MongoDB Command Line Database Tools …...

蓝桥杯之递归二

1.数的划分 题目描述 将整数 nn 分成 kk 份&#xff0c;且每份不能为空&#xff0c;任意两份不能相同(不考虑顺序)。 例如&#xff1a;n7&#xff0c;k3n7&#xff0c;k3&#xff0c;下面三种分法被认为是相同的。 1&#xff0c;1&#xff0c;5;1&#xff0c;5&#xff0c;…...

【大疆dji】ESDK开发环境搭建(软件准备篇)

接上一篇【大疆dji】ESDK开发环境搭建&#xff08;硬件准备篇&#xff09; 1. 编译环境 ESDK 提供 x86_64/aarch64 基于 Linux 平台 Ubuntu 发行版操作系统构建的静态库&#xff0c;运行 demo 先正确安装所需的依赖包。arm32位就不支持了。建议使用编译安装的方式&#xff0c;…...

Android TTY设备调用流程和简单分析

Linux TTY系统中ioctl的调用流程详解:从应用层到MSM GENI Serial驱动 本文档详细分析Linux系统中从用户空间应用程序发起TTY ioctl请求到特定驱动(例如msm_geni_serial_ioctl)的完整调用流程,包括32位应用与64位内核之间的兼容性问题分析。 1. 总体调用路径概览 以下是完…...

数字孪生赋能管理系统,降本增效立竿见影

1. 数字孪生基础概念及其在管理系统中的应用前景 数字孪生是一种集成多学科、多物理量、多尺度、多概率的仿真过程&#xff0c;在虚拟空间中完成映射&#xff0c;从而反映相对应的实体装备的全生命周期过程。其核心在于将现实世界中的物理对象或系统与其数字化模型相结合&…...

Java学习手册:Web 应用架构概述

一、Web 应用架构的演变 在互联网发展的初期阶段&#xff0c;Web 应用普遍采用客户端 / 服务器&#xff08;C/S&#xff09;架构模式。客户端应用程序与服务器端应用程序直接建立连接&#xff0c;进行数据交互和业务处理。然而&#xff0c;这种架构存在诸多局限性。由于客户端…...

企业网站安装 SSL安装的必要性

能够带来安全的加密和快速的访问体验&#xff0c;防止中间人的流量劫持&#xff0c;保障用户隐私信息的安全&#xff0c;帮助用户识别钓鱼网站&#xff0c;提升网站在搜索引擎的排名。 能够防止黑客盗走客户银行卡账号的机密信息&#xff0c;保证信息的机密性&#xff0c;防止…...

【CF】Day38——Codeforces Round 965 (Div. 2) B

B. Minimize Equal Sum Subarrays 题目&#xff1a; 思路&#xff1a; 直觉题 我们可以这样构造&#xff0c;将整个数列左移一位即可&#xff0c;为什么呢&#xff1f; 因为这样我们能尽可能地保证数列的数字尽可能多的同时 且 有一个数不同 这里介绍一个rorate函数&#xf…...

leetcode 300. Longest Increasing Subsequence

目录 题目描述 第一步&#xff0c;明确并理解dp数组及下标的含义 第二步&#xff0c;分析明确并理解递推公式 第三步&#xff0c;理解dp数组如何初始化 第四步&#xff0c;理解遍历顺序 代码 题目描述 这是动态规划解决子序列问题的例子。 第一步&#xff0c;明确并理解…...

解密大模型背后的秘密:训练、优化与挑战

解密大模型背后的秘密&#xff1a;训练、优化与挑战 在当今的人工智能领域&#xff0c;大模型&#xff08;Large Language Models, LLMs&#xff09;已经成为了一个不可忽视的存在。从自然语言处理到图像生成&#xff0c;再到推荐系统&#xff0c;大模型以其强大的泛化能力和创…...

第33讲|遥感大模型在地学分类中的初探与实战

目录 🧠 一、什么是“遥感大模型”? 📚 二、遥感大模型在地学分类中的优势 📍三、案例:使用 Segment Anything Model (SAM) 进行遥感地物分割 📦 1. 安装与依赖配置(PyTorch) 🖼 2. 读取遥感图像(可用 Sentinel-2 伪彩色图) 🔧 3. SAM 模型载入 💡 …...