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

Sentinel 介绍与使用指南:构建高可用、可靠的微服务架构

在微服务架构中,服务间的依赖和调用非常复杂,这也带来了高并发、大流量等挑战。

       如何确保系统在高负载情况下仍能稳定运行,如何避免某个服务的故障影响整个系统的稳定性?Sentinel,作为一个轻量级的、专为分布式系统设计的流量控制与降级框架,正是为了解决这些问题而诞生的。

       本文将详细介绍 Sentinel 的基本概念、核心功能以及如何在实际项目中使用它来构建高可用的微服务系统。

1. 什么是 Sentinel?

       Sentinel 是由阿里巴巴开源的分布式流量控制组件,主要用于微服务架构中服务的熔断、限流、降级、系统负载保护等功能。通过 Sentinel,开发者可以更加精确地控制系统中各个服务的流量,避免系统在高并发时出现崩溃、资源耗尽等问题。

Sentinel 的核心功能:

  • 流量控制:对请求进行限流,保证系统在高并发下依然稳定。
  • 熔断降级:当某个服务出现故障时,能够进行熔断或降级处理,避免故障蔓延。
  • 系统负载保护:通过对系统资源(如 CPU、内存、线程池等)的监控,动态调整流量,防止资源过载。
  • 实时监控与报警:提供丰富的监控面板和实时报警功能,帮助开发者及时发现和解决问题。

2. Sentinel 的基本原理

       Sentinel 通过 资源规则 两个核心概念来进行流量控制与熔断降级。

  • 资源:在 Sentinel 中,任何一个被控制的服务或操作都被视作一个 资源。比如,API 接口、数据库查询、外部服务调用等都可以视作一个资源。

  • 规则:规则是 Sentinel 控制流量、熔断、降级等策略的核心。可以通过配置不同的规则来控制流量,比如限流规则、熔断规则等。

Sentinel 工作流程:

  1. 资源定义:在代码中,指定需要控制的资源(比如服务调用或接口)。
  2. 流量监控:Sentinel 在运行时通过监控系统的流量情况来决定是否触发限流或降级策略。
  3. 规则配置:根据业务需求,配置相应的流量控制规则(如限流、熔断、降级规则)。
  4. 动态调整:在运行时,Sentinel 可以根据监控的负载情况动态调整流量策略。

3. 如何使用 Sentinel?

       下面我们通过一个简单的例子来展示如何在微服务中集成和使用 Sentinel。

3.1 安装与配置

1) Maven 引入依赖

       首先,确保你的项目使用 Maven 作为构建工具,然后在 pom.xml 中引入 Sentinel 的核心依赖。

<dependencies><!-- Sentinel Core --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-api</artifactId><version>1.8.0</version></dependency><!-- Sentinel SPI (Optional for extension) --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-api</artifactId><version>1.8.0</version></dependency>
</dependencies>
2) 启动 Sentinel 控制台(可选)

       为了更好地监控和管理流量控制规则,Sentinel 提供了一个 控制台。你可以通过以下方式启动它:

  • 下载 Sentinel Dashboard 项目,启动 SentinelDashboardApplication,默认访问地址为 http://localhost:8080

3.2 集成到 Spring Boot 项目中

       在 Spring Boot 项目中集成 Sentinel,可以通过 Spring Cloud Alibaba 提供的 starter 进行快速集成。

       首先,在 pom.xml 中加入 Spring Cloud Alibaba Sentinel 依赖:

<dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2021.x.x</version></dependency>
</dependencies>

       然后,在 application.ymlapplication.properties 中进行简单的配置:

spring:cloud:sentinel:transport:dashboard: localhost:8080 # 指定控制台地址datasource:ds1:file:name: sentinel-rules.json # 规则文件

3.3 流量控制:限流

       在 Sentinel 中,我们可以通过注解或 API 来控制资源的流量。以限流为例,下面演示如何通过注解方式来限制访问频率。

使用注解定义资源
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")@SentinelResource(value = "hello", blockHandler = "handleException")public String hello() {return "Hello, Sentinel!";}public String handleException(BlockException ex) {return "Request blocked by Sentinel";}
}

       在这个例子中,@SentinelResource 注解标记了一个需要被流量控制的资源,并指定了当流量超限时的处理方法 handleExceptionvalue 表示资源的名称。

设置限流规则

       Sentinel 允许在代码中动态设置限流规则。你可以使用如下代码来设置限流规则:

import com.alibaba.csp.sentinel.slots.block.FlowException;
import com.alibaba.csp.sentinel.slots.block.FlowRule;
import com.alibaba.csp.sentinel.slots.block.FlowRuleManager;import java.util.ArrayList;
import java.util.List;public class FlowControlExample {public static void main(String[] args) {// 1. 创建限流规则List<FlowRule> rules = new ArrayList<>();FlowRule rule = new FlowRule();rule.setResource("hello"); // 资源名称与接口上的 value 相同rule.setGrade(RuleConstant.FLOW_GRADE_QPS); // 设置限流策略为 QPSrule.setCount(5); // 设置每秒最大 5 个请求rules.add(rule);// 2. 加载规则FlowRuleManager.loadRules(rules);}
}

       这样,当 /hello 接口的请求量超过设定的 QPS(每秒 5 个请求)时,Sentinel 将自动进行限流,阻止请求继续向后端服务传递。

3.4 熔断降级

       熔断降级可以通过配置规则来处理服务故障或不可用的情况。Sentinel 支持根据异常比例或平均响应时间来进行降级处理。

降级规则设置
import com.alibaba.csp.sentinel.slots.block.DegradeRule;
import com.alibaba.csp.sentinel.slots.block.DegradeRuleManager;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;public class DegradeRuleExample {public static void main(String[] args) {// 1. 创建降级规则List<DegradeRule> rules = new ArrayList<>();DegradeRule rule = new DegradeRule();rule.setResource("hello"); // 资源名称rule.setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT); // 基于异常数量降级rule.setCount(5); // 连续 5 次异常请求触发降级rule.setTimeWindow(30); // 降级的时间窗口为 30 秒rules.add(rule);// 2. 加载降级规则DegradeRuleManager.loadRules(rules);}
}

       在上述示例中,DegradeRule 配置了基于异常数量的降级策略:如果 /hello 接口连续出现 5 次异常,Sentinel 会自动将其降级,暂停请求处理一段时间。

3.5 控制台监控

       通过访问 Sentinel 控制台(默认在 http://localhost:8080)你可以实时监控资源的流量控制情况,包括 QPS、异常比例等信息。此外,还可以在控制台上动态调整规则,监控各个资源的健康状态。

4. 总结

       Sentinel 是一个强大的流量控制框架,能够帮助开发者有效地解决高并发、服务故障等问题,提升微服务架构的稳定性。在实际应用中,通过灵活地使用限流、熔断、降级等策略,能够帮助系统在流量高峰期保持高可用,避免单点故障引发全局崩溃。

相关文章:

Sentinel 介绍与使用指南:构建高可用、可靠的微服务架构

在微服务架构中&#xff0c;服务间的依赖和调用非常复杂&#xff0c;这也带来了高并发、大流量等挑战。 如何确保系统在高负载情况下仍能稳定运行&#xff0c;如何避免某个服务的故障影响整个系统的稳定性&#xff1f;Sentinel&#xff0c;作为一个轻量级的、专为分布式系统设计…...

异步请求在TypeScript网络爬虫中的应用

异步请求的重要性 异步请求是现代网络应用中不可或缺的一部分&#xff0c;特别是在网络爬虫领域。它允许爬虫在等待网络响应的同时继续执行其他任务&#xff0c;从而提高效率和性能。在JavaScript和TypeScript中&#xff0c;异步请求可以通过多种方式实现&#xff0c;包括回调…...

智能商业分析 Quick BI

Quick BI 是阿里云提供的一款智能商业分析&#xff08;BI&#xff09;工具&#xff0c;旨在帮助企业快速获取业务洞察、优化决策过程、提升数据分析效率。通过强大的数据可视化和分析功能&#xff0c;Quick BI 能够帮助用户轻松连接多种数据源、创建多维度的报表和仪表盘&#…...

[算法] [leetcode-75] 颜色分类

75 颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地 对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函…...

抖音短视频矩阵系统源码开发技术解析

开发概览&#xff1a; 抖音短视频矩阵系统的构建基于一系列现代技术栈&#xff0c;主要包括VUE, Spring Boot和Django。本文档旨在为开发者提供关于短视频矩阵系统源代码的开发与部署指南。 技术框架分析&#xff1a; 前端技术选型&#xff1a; 对于前端界面的构建&#xf…...

Linux(CentOS)安装 MySQL

CentOS版本&#xff1a;CentOS 7 三种安装方式&#xff1a; 一、通过 yum 安装&#xff0c;最简单&#xff0c;一键安装&#xff0c;全程无忧。 二、通过 rpm 包安装&#xff0c;需具备基础概念及常规操作。 三、通过 gz 包安装&#xff0c;需具备配置相关操作。 --------…...

头歌实训数据结构与算法-二叉树及其应用(第9关:二叉树的顺序存储及基本操作)

任务描述 本关任务&#xff1a;以顺序结构存储二叉树&#xff0c;编写前序、中序、后序及层次顺序遍历二叉树的算法&#xff0c;并计算二叉树深度、所有结点总数。 相关知识 二叉树的定义 二叉树的递归定义&#xff1a; 二叉树或者是一棵空树。 或者是一棵由一个根结点和两…...

打印进度条

文章目录 1.Python语言实现(1)黑白色(2)彩色&#xff1a;蓝色 2.C语言实现(1)黑白颜色(2)彩色版&#xff1a;红绿色 1.Python语言实现 (1)黑白色 import sys import timedef progress_bar(percentage, width50):"""打印进度条:param percentage: 当前进度百分比…...

【LLM】Langflow 的简单使用

(PS&#xff1a;爆肝整理&#xff0c;请不要吝啬你的点赞和收藏。) 什么是 Langflow &#xff1f;Langflow 是一种用于构建多智能体和RAG应用的可视化框架。它提供了个无需编码的 AI 生态系统&#xff0c;能够无缝集成各种常用工具和技术栈。Langflow 以 Python 为基础&#x…...

探索 DC-SDK:强大的 3D 地图开发框架

在现代 Web 开发中&#xff0c;地理信息系统&#xff08;GIS&#xff09;和 3D 地图可视化变得越来越重要。dc-sdk 是一个基于 Cesium 的开源 WebGL 地图开发框架&#xff0c;它提供了丰富的地图可视化功能和简单易用的 API&#xff0c;使开发者能够轻松地在 Web 应用中集成 3D…...

3.5mm耳机接口硬件连接

结构 以最复杂的结构为例 简单的结构无非就是没有MIC&#xff08;麦克风&#xff09;接口 上图的5就是Detect的作用 上面这两款产品都为3.5mm的音频插座&#xff0c;图一 为连接4节的音频座&#xff0c;而且有两个开关&#xff0c;1接地&#xff0c;2接MIC&#xff0c;3接左声…...

nvidia_gpu_exporter 显卡监控

导入 grafana/dashboard.json https://github.com/utkuozdemir/nvidia_gpu_exporter/blob/master/grafana/dashboard.json参考 nvidia_gpu_exporter...

聊聊 Mongod 以及 MongoDB 常用命令

Mongod mongod 是 MongoDB 数据库服务器的核心守护进程&#xff0c;它负责启动并管理 MongoDB 数据库实例。简单来说&#xff0c;mongod 是 MongoDB 数据库服务器程序&#xff0c;它负责处理数据存储、数据请求、数据复制等后台服务。运行 mongod 是启动 MongoDB 数据库的第一…...

webrtc 源码阅读 make_ref_counted模板函数用法

目录 1. 模板参数解析 1.1 typename T 1.2 typename... Args 1.3 typename std::enable_if::value, T>::type* nullptr 2. scoped_refptr 3. new RefCountedObject(std::forward(args)...); 4. 综合说明 5.在webrtc中的用法 5.1 peerConnectionFactory对象的构建过…...

僵尸进程,孤儿进程、守护进程以及wait函数,waitpid函数

僵尸进程 如果子进程退出&#xff0c;但是父进程没有调用 wait 或 waitpid 获取子进程的状态信息&#xff0c;那么子进程的进程描述符&#xff08;task_struct&#xff09;仍然保存在系统中&#xff0c;那么该子进程叫做僵尸进程 #include<iostream> #include<pthre…...

Kafka消息不丢失与重复消费问题解决方案总结

1. 生产者层面 异步发送与回调处理 异步发送方式&#xff1a;生产者一般使用异步方式发送消息&#xff0c;异步发送有消息和回调接口两个参数。在回调接口的重写方法中&#xff0c;可通过异常参数判断消息发送状态。若消息发送成功&#xff0c;异常参数为null&#xff1b;若发…...

Docker新手:在tencent云上实现Python服务打包到容器

1 使用docker的原因 一致性和可移植性&#xff1a;Docker 容器可以在任何支持 Docker 的环境中运行&#xff0c;无论是开发者的笔记本电脑、测试服务器还是生产环境。这确保了应用在不同环境中的行为一致&#xff0c;减少了“在我的机器上可以运行”的问题。 隔离性&#xff…...

什么是 Spring 的组件(Bean)

什么是 Spring 的组件&#xff08;Bean&#xff09;&#xff1f; Spring 会自动创建、初始化、装配和销毁这些对象。Spring 使用 IoC&#xff08;控制反转&#xff09; 和 DI&#xff08;依赖注入&#xff09; 的理念&#xff0c;将应用程序的对象交给 Spring 容器统一管理&am…...

PawSQL性能巡检平台 (3) - 慢查询采集和优化

在数据库运维管理中&#xff0c;慢查询一直是影响系统性能的重要因素。本文将详细介绍PawSQL数据库性能巡检平台在慢查询管理和优化方面的功能特性&#xff0c;帮助数据库管理员更好地应对性能挑战。 一、PawSQL巡检平台慢查询管理概述 PawSQL平台提供了全面的慢查询管理功能&…...

虚拟机Centos下安装Mysql完整过程(图文详解)

目录 一. 准备工作 1. 设置虚拟机静态IP 2. 卸载Mysql 3. 给CentOS添加rpm源 二. 安装MySQL 1. 安装mysql服务 2. 启动mysql服务 3. 开启MySQL开机自启动 4. 查看mysql服务状态 5. 查看mysql初始密码 6. 登录mysql &#xff0c;修改密码 7. 允许外部访问MySQL数据库…...

微服务保护-sentinel

为什么要有微服务保护&#xff1f; 微服务保护是为了避免微服务雪崩而出现的&#xff0c;每个微服务能处理的请求是有限的&#xff0c;如果一个微服务出现问题导致一个请求进入微服务的时间太久&#xff0c;就会导致大量去请求停滞在微服务内部&#xff0c;这样就会过分占用系统…...

Redis Java 集成到 Spring Boot

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;Redis &#x1f4da;本系列文章为个人学习笔…...

RabbitMQ实现生产者消费者

一.启动MQ 注意管理员身份进入cmd才行,我这里是在本地安装的MQ,推荐使用虚拟机安装 二.思路 官方解释RabbitMQ结构: 自我理解RabbitMQ结构: 其实RabbitMQ的服务器就像邮局一样,我们的生产者和消费者对于这个服务器来说都是消费者,因为服务器都可以向两者发送消息 环境准备 …...

stm32f103zet6 ds18b20

main.c // main.c #include "sys.h" #include "ds18b20.h"int main(void){ uart_init(9600);delay_init();while(DS18B20_Init()) //DS18B20初始化 {printf("error");delay_ms(200);}while(1){printf("%4.2f\r\n",Get_Temp());}}ds18…...

期权懂|期权入门知识:开通50ETF期权需要什么条件?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 开通50ETF期权需要什么条件&#xff1f; 一、基本资格要求 &#xff08;1&#xff09;年龄限制&#xff1a;投资者必须年满18周岁&#xff0c;具备完全民事行为能力。 &#…...

Linux day 1129

家人们今天继续学习Linux&#xff0c;ok话不多说一起去看看吧 三.Linux常用命令 3.1 Linux命令体验 3.1.1 常用命令演示 在这一部分中&#xff0c;我们主要介绍几个常用的命令&#xff0c;让大家快速感 受以下 Linux 指令的操作方式。主要包含以下几个指令&#xff1a; ls命…...

智能家居体验大变革 博联 AI 方案让智能不再繁琐

1. 全球AI技术发展背景及智能家居市场趋势 人工智能&#xff08;AI&#xff09;技术的飞速发展正在推动全球各行业的数字化转型。国际电信联盟与德勤联合发布《人工智能向善影响》报告指出&#xff0c;全球94%的商界领袖认为&#xff0c;人工智能技术对于其企业在未来5年内的发…...

git使用

git初始化 git init 指定要添加的文件 git add [文件名1] [文件名2] [文件名3] // 添加指定文件 git add . // 添加当前目录所有文件 将文件提交到本地仓库 git commit -m "备注信息" 添加远程仓库 git remote add origin [远程仓库地址] git remote -v // …...

嵌入科技的温情

嵌入式世界&#xff0c;是一个微小却无比精妙的宇宙。晶体管之间的脉动&#xff0c;仿佛是心跳的回响&#xff1b;代码中跳跃的逻辑&#xff0c;犹如人生中不可预知的转折。每一个嵌入式系统&#xff0c;都像是一个看不见的灵魂&#xff0c;将冰冷的机器唤醒&#xff0c;为生活…...

python利用selenium实现大麦网抢票

大麦网&#xff08;damai.cn&#xff09;是中国领先的现场娱乐票务平台&#xff0c;涵盖演唱会、音乐会、话剧、歌剧、体育赛事等多种门票销售。由于其平台上经常会有热门演出&#xff0c;抢票成为许多用户关注的焦点。然而&#xff0c;由于票务资源的有限性&#xff0c;以及大…...

PS等软件学习笔记

目录 一、ps基础操作快捷键 1、快速打开图片 2、屏幕画布变大变小 3、移动画布 4、CTRL回车&#xff0c;快速完成更改 5、还原 6、创建画布&#xff0c;CTRLN 7、复制图层&#xff0c;CTRLJ 8、一段文字行间距调整 9、反向选择&#xff0c;CTRLSHIFTI 10、抠图 二、…...

vue3学习笔记(9)-pinia、storeToRefs、getters

1.新的集中式状态&#xff08;数据&#xff09;管理库&#xff0c;redux vuex pinia 搭建 2.ref拆包 如果在reactive里面定义ref&#xff0c;则打印c时&#xff0c;无需.value 他自动拆包&#xff0c;如果直接在外面定义的ref则需要.value,他没有拆包 3.pinia存储读取数据 存…...

数据库基础知识---以MySQL为例

一、什么是MySQL 数据保存在不同的表中&#xff0c;而不是将所有数据放在一个大仓库内 二、特点 开源--免费下载跨平台--可以在多个操作系统进行运行性能好--可以出来大量数据简单--安装配置简单支持多种编程语言--可以与多种编程语言进行无缝集成 三、分类 DDL--数据定义…...

013-spring的注解整合第三方框架

给spring的ioc容器中添加对象 常用这3个方法...

使用ForceBindIP绑定应用到指定IP

前言 使用ForceBindIP工具&#xff0c;用户可以轻松地将特定应用程序绑定到指定的IP地址&#xff0c;从而确保应用程序的网络连接通过指定的网络适配器进行。通过在命令提示符下运行ForceBindIP并指定IP地址和应用程序的完整路径&#xff0c;用户能够控制应用程序的网络流量&a…...

python-LeetCode-两数之和

1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:# 创建一个哈希表用于存储值和索引num_to_index {}for i, num in enumerate(nums):# 计算目标值需要的补数complement target - num# 如…...

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(四)

文章目录 一、管理员角色功能实现1、添加教师功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、教师管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码下…...

大语言模型的token和向量

现在大语言模型火了&#xff0c;像 ChatGPT 什么的&#xff0c;能回答问题、写文章&#xff0c;。但它们为啥这么聪明呢&#xff1f;这就和向量、Token 有关系。那怎么通过向量、Token来理解我们的问题呢。看完这篇文章就知道了 token Token 就像是语言里的小积木&#xff0c…...

Hyperledger Fabric有那些核心技术,和其他区块链对比Hyperledger Fabric有那些优势

Hyperledger Fabric是一个模块化、权限化的企业级区块链平台&#xff0c;与比特币、以太坊等公有链相比&#xff0c;Fabric主要为私有链或联盟链设计&#xff0c;适用于企业应用。它包含多项核心技术&#xff0c;使其在企业级区块链应用中具有独特优势。以下是Fabric的核心技术…...

ThinkPHP 8高效构建Web应用-第一个简单的MVC应用示例

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 我们先实现一…...

【Goland】怎么执行 go mod download

1、终端的执行 go mod tidy 2、终端执行不行的话&#xff0c;就可以通过右击go.mod文件来执行&#xff1b; 3、也可以按住Ctrl点击这个包安装&#xff1b;...

SpringBoot入门案例

目录 一、SpringBoot入门 1. Spring Boot 简介&#xff08;脚手架&#xff09; 2. 微服务 微服务优点&#xff1a; 微服务缺点&#xff1a; 3. 环境准备 3.1 spring boot项目的创建 3.2 导入spring boot相关的依赖 3.5 编写主程序 3.4 编写相关的controller、service…...

自定义 Celery的logging模块

为什么需要自定义 Celery 日志 默认的 Celery 日志配置虽然满足基本需求&#xff0c;但在以下情况下可能需要进行自定义&#xff1a; 支持日志滚动&#xff1a;原生celery不支持日志滚动。更详细的日志信息&#xff1a;需要包含更多上下文信息&#xff0c;以便更好地理解任务…...

docker-开源nocodb,使用已有数据库

使用已有数据库 创建本地数据库 数据库&#xff1a;nocodb 用户&#xff1a;nocodb 密码&#xff1a;xxxxxx修改docker-compose.yml 默认网关的 IP 地址是 172.17.0.1&#xff08;适用于 bridge 网络模式&#xff09;version: "2.1" services:nocodb:environment:…...

【UE5】UnrealEngine源码构建1:tag为5.3.2源码clone

fatal: fetch-pack: invalid index-pack output clone unreal 速度很快,但是很容易失败Cloning into UnrealEngine... remote: Enumerating objects: 6511087, done. remote: Counting objects: 100% (196/196), done. remote: Compressing objects: 100% (50/50), done. erro…...

RoboMIND:多体现基准 机器人操纵的智能规范数据

我们介绍了 RoboMIND&#xff0c;这是机器人操纵的多体现智能规范数据的基准&#xff0c;包括 4 个实施例、279 个不同任务和 61 个不同对象类别的 55k 真实世界演示轨迹。 工业机器人企业 埃斯顿自动化 | 埃夫特机器人 | 节卡机器人 | 珞石机器人 | 法奥机器人 | 非夕科技 | C…...

FPGA自学之路:到底有多崎岖?

FPGA&#xff0c;即现场可编程门阵列&#xff0c;被誉为硬件世界的“瑞士军刀”&#xff0c;其灵活性和可编程性让无数开发者为之倾倒。但谈及FPGA的学习难度&#xff0c;不少人望而却步。那么&#xff0c;FPGA自学之路到底有多崎岖呢&#xff1f; 几座大山那么高&#xff1f;…...

讲一个自己写的 excel 转 html 的 java 工具

由来 这是一个从开发需求中诞生的工具&#xff0c;在工作中因为有一个 excel 转 html 的任务&#xff0c;又没找到一个专门做这方面的工具&#xff08;其他工具几乎都是简单的转换&#xff0c;无法还原 excel 样式&#xff0c;而且转换的宽高有点儿差距&#xff09;&#xff0…...

打破视障壁垒,百度文心快码无障碍版本助力视障IT从业者就业无“碍”

有AI无碍 钟科&#xff1a;被黑暗卡住的开发梦 提起视障群体的就业&#xff0c;绝大部分人可能只能想到盲人按摩。但你知道吗&#xff1f;视障人士也能写代码。 钟科&#xff0c;一个曾经“被黑暗困住”的人&#xff0c;他的世界&#xff0c;因为一场突如其来的疾病&#xff0c…...

爆改RagFlow

爆改RagFlow 一、Rag理论概述二、Ragflow解析参数说明三、♥ RagFlow源码解析核心代码流程梳理1、OCR识别2、版面分析3、parser功能3.1 PdfParser3.1.1 首先&#xff0c;初始化3.1.2 **pdf转图片** [来自工业界的知识库 RAG 服务(二)&#xff0c;RagFlow 源码全流程深度解析](h…...