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

动手人形机器人(RL)

1 PPO的讲解

核心步骤,如策略网络和价值网络的定义、优势估计、策略更新、价值更新等基础功能的实现

2 代码构成

可能涉及

初始化,Behavior Clone

3 动手强化学习

import pytorch as torch
class actorcritic ##等待补充

 

4 PD Gains

在机器人学中,PD gains(比例 - 微分增益) 是指比例控制(Proportional control)和微分控制(Derivative control)中的增益参数,分别称为 P gain(比例增益)D gain(微分增益),它们是 PD 控制算法的核心组成部分,对机器人的运动控制性能起着关键作用。具体如下:

1. P gain(比例增益)

  • 作用:与机器人当前的误差(如位置误差、角度误差等)成正比,用于快速响应误差。例如,当机器人的机械臂需要移动到某个目标位置时,若实际位置与目标位置存在误差,比例增益会根据误差大小输出一个控制量,推动机械臂向减小误差的方向运动。
  • 影响:比例增益越大,系统对误差的响应越迅速,但过大的比例增益可能导致系统超调(即运动超过目标位置),甚至产生震荡,使机器人运动不稳定。

2. D gain(微分增益)

  • 作用:与误差的变化率成正比,用于预测误差的变化趋势。它能根据误差变化的快慢调整控制量,抑制超调,增加系统的稳定性。例如,当机械臂接近目标位置时,微分增益会检测到误差变化率减小,提前降低控制量,使机械臂平稳停止,避免冲过目标位置。
  • 影响:合适的微分增益可以改善系统的动态特性,减少调整时间;但微分增益过大可能使系统对噪声过于敏感(如传感器噪声会被放大影响控制),过小则难以有效抑制超调。

机器人学中的应用示例

在机器人的关节控制中,PD 控制常用于调节电机的输出。例如,若机器人某关节需要从当前角度转动到目标角度:

  • 当角度误差较大时,比例增益起主导作用,快速驱动关节向目标角度转动;
  • 随着角度误差减小,微分增益根据误差变化率调整输出,使关节平稳地停在目标角度,避免来回晃动。
## 机器人关节电机控制模式及参数class control:## 控制类型:位置控制、速度控制、扭矩控制control_type = 'P' # P: position, V: velocity, T: torques## PD驱动的参数## stiffness代表刚度系数k_p damping代表阻尼系数k_dstiffness = {'joint_a': 10.0, 'joint_b': 15.}  # [N*m/rad]damping = {'joint_a': 1.0, 'joint_b': 1.5}     # [N*m*s/rad]## 公式如下,与action的转化为什么要有这样的比例因子暂未明白# action scale: target angle = actionScale * action + defaultAngleaction_scale = 0.5## decimation: Number of control action updates @ sim DT per policy DT## 仿真环境的控制频率/decimation=实际环境中的控制频率decimation = 4

5 相关研究分享

1 CMU的H2O

Learning Human-to-Humanoid Real-Time Whole-Body TeleoperationLearning Human-to-Humanoid Real-Time Whole-Body Teleoperationhttps://human2humanoid.com/

2 leggedgym

ETH开发的库函数

https://github.com/leggedrobotics/legged_gymhttps://github.com/leggedrobotics/legged_gym

如何使用?:

  1. Train:
    python legged_gym/scripts/train.py --task=anymal_c_flat
    • To run on CPU add following arguments: --sim_device=cpu, --rl_device=cpu (sim on CPU and rl on GPU is possible).
    • To run headless (no rendering) add --headless.
    • Important: To improve performance, once the training starts press v to stop the rendering. You can then enable it later to check the progress.
    • The trained policy is saved in issacgym_anymal/logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt. Where <experiment_name> and <run_name> are defined in the train config.
    • The following command line arguments override the values set in the config files:
    • --task TASK: Task name.
    • --resume: Resume training from a checkpoint
    • --experiment_name EXPERIMENT_NAME: Name of the experiment to run or load.
    • --run_name RUN_NAME: Name of the run.
    • --load_run LOAD_RUN: Name of the run to load when resume=True. If -1: will load the last run.
    • --checkpoint CHECKPOINT: Saved model checkpoint number. If -1: will load the last checkpoint.
    • --num_envs NUM_ENVS: Number of environments to create.
    • --seed SEED: Random seed.
    • --max_iterations MAX_ITERATIONS: Maximum number of training iterations.
  2. Play a trained policy:
    python legged_gym/scripts/play.py --task=anymal_c_flat
    • By default, the loaded policy is the last model of the last run of the experiment folder.
    • Other runs/model iteration can be selected by setting load_run and checkpoint in the train config.

3 RL_rsl

https://github.com/leggedrobotics/rsl_rlhttps://github.com/leggedrobotics/rsl_rl

快速、简单地实现RL算法,旨在在GPU上完全运行。 这段代码是一个进化过程。rl-pytorchNVIDIA 的 Isaac GYM 发布。

使用框架的环境存储库:

  • Isaac Lab(建立在NVIDIA Isaac Sim之上):https://github.com/isaac-sim/IsaacLab
  • Legged-Gym(基于 NVIDIA Isaac Gym 构建):https://leggedrobotics.github.io/legged_gym/

PPO主要分支支持PPO和学生教师蒸馏,以及我们研究的其他功能。这些包括:

  • 随机网络蒸馏(RND)https://proceedings.mlr.press/v229/schwarke23a.html - 通过添加来鼓励探索 好奇心驱动的内在奖励。
  • 基于对称性的增强https://arxiv.org/abs/2403.04359 - 使学习的行为更加对称。

相关文章:

动手人形机器人(RL)

1 PPO的讲解 核心步骤&#xff0c;如策略网络和价值网络的定义、优势估计、策略更新、价值更新等基础功能的实现 2 代码构成 可能涉及 初始化&#xff0c;Behavior Clone 3 动手强化学习 import pytorch as torch class actorcritic ##等待补充 4 PD Gains 在机器人学中&…...

使用RabbitMQ实现异步秒杀

搭建RabbitMQ 在虚拟机上用docker搭建RabbitMQ&#xff0c;首先拉取镜像 docker run --privilegedtrue -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management mkdir -p /usr/local/docker/rabbitmq再创建rabbitmq容器&#xff0c;下面的命令已经能够创建之后…...

基于PyQt5的企业级生日提醒系统设计与实现

在企业人力资源管理场景中,员工生日提醒是一项重要的关怀功能。本文将以一个基于PyQt5开发的生日提醒系统为例,深入解析桌面应用程序开发中的关键技术实现,涵盖GUI设计、数据持久化、系统集成、动画效果等核心模块。 一、技术选型分析 1.1 PyQt5框架优势 跨平台特性:支持W…...

蓝桥杯嵌入式第16届——ADC模数转化部分

将外部的模拟信号转换为数字信号 &#xff08; ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 &#xff09; STM32 - ADC 笔记_stm32 adc电容-CSDN博客 引脚状况 STM32cubemx配置 ADC1配置 ADC2配置 代码部分 …...

拜特科技签约天津城投集团,携手共建司库管理系统

近日&#xff0c;拜特科技成功签约天津城市基础设施建设投资集团有限公司&#xff08;以下简称“天津城投集团”&#xff09;&#xff0c;携手共建司库管理系统。 自2015年结缘以来&#xff0c;拜特科技与天津城投集团已携手并进十年&#xff0c;构建了稳固且高效的合作桥梁。…...

Spring Boot 中集成 Knife4j:解决文件上传不显示文件域的问题

Spring Boot 中集成 Knife4j&#xff1a;解决文件上传不显示文件域的问题 在使用 Knife4j 为 Spring Boot 项目生成 API 文档时&#xff0c;开发者可能会遇到文件上传功能不显示文件域的问题。本文将详细介绍如何解决这一问题&#xff0c;并提供完整的解决方案。 Knife4j官网…...

Nuxt.js的useHead有哪些对象

在Nuxt.js框架中&#xff0c;useHead是一个用于操作页面<head>部分的辅助函数。它返回一个包含多个对象的集合&#xff0c;允许你轻松地在组件中修改或添加 HTML 的<head>内容。 具体来说&#xff0c;useHead 返回的对象集合包括&#xff1a; title: 用于设置页面…...

JavaScript的可选链操作符 ?.

JavaScript的可选链操作符&#xff08;Optional Chaining Operator&#xff09;是 ES2020&#xff08;ES11&#xff09; 引入的新特性&#xff0c;通过语法 ?. 简化对深层嵌套对象属性、方法或数组元素的访问&#xff0c;避免因中间值为 null 或 undefined 而引发的错误。 核…...

增长黑客:激活实验助力增长

激活实验是推动用户增长的重要手段。下面为大家详细介绍激活实验的关键步骤与重点解决问题 激活实验的三个关键步骤 1. 明晰 “啊哈时刻” 路径 “啊哈时刻” 指用户瞬间领悟产品价值的瞬间。要达成这一点&#xff0c;需明确用户体验到 “啊哈时刻” 的所有路径。以在线绘图工具…...

STM32低功耗

设置不同位来配置是哪种低功耗模式 WAKEUP引脚可以唤醒任何睡眠状态,但是只有待机模式是属于WAKEUP唤醒&#xff0c;其他模式都是属于中断唤醒&#xff0c;所以待机模式要使能EWUP引脚&#xff0c;还要手动清除唤醒标志位&#xff08;在进入待机模式前就要清除标志位&#xff…...

【精品PPT】2025固态电池知识体系及最佳实践PPT合集(36份).zip

精品推荐&#xff0c;2025固态电池知识体系及最佳实践PPT合集&#xff0c;共36份。供大家学习参考。 1、中科院化学所郭玉国研究员&#xff1a;固态金属锂电池及其关键材料.pdf 2、中科院物理所-李泓固态电池.pdf 3、全固态电池技术研究进展.pdf 4、全固态电池生产工艺.pdf 5、…...

头歌数据库【数据库概论】第10-11章 故障恢复与并发控制

第1关&#xff1a;数据库恢复技术 1、事务的&#xff08; A&#xff09;特性要求事务必须被视为一个不可分割的最小工作单元 A、原子性 B、一致性 C、隔离性 D、持久性 2、事务的&#xff08;C &#xff09;特性要求一个事务在执行时&#xff0c;不会受到其他事务的影响。 A、原…...

qt之opengl使用

使用qt中的openglWidget绘制一个三角形。自定义的类继承关系sunOpengl : public QOpenGLWidget,QOpenGLFunctions_3_3_Core 代码如下 /*----MainWindow.cpp----------------------------------------------*/ #include "mainwindow.h" #include "./ui_mainwin…...

Spark Core编程

一 Spark 运行架构 1 运行架构 定义 Spark 框架的核心是一个计算引擎&#xff0c;整体来说&#xff0c;它采用了标准 master-slave 的结构 如图所示 2 核心组件 Spark 框架有两个核心组件: 1)Driver 2)Spark 驱动器节点&#xff08;用于执行 Spark 任务中的 main 方法&…...

蓝桥杯 B3619 10 进制转 x 进制

题目描述 给定一个十进制整数 n 和一个小整数 x。将整数 n 转为 x 进制。对于超过十进制的数码&#xff0c;用 A&#xff0c;B ... 表示。 输入格式 第一行一个整数 n&#xff1b; 第二行一个整数 x。 输出格式 输出仅包含一个整数&#xff0c;表示答案。 输入输出样例 …...

spring mvc中不同服务调用类型(声明式(Feign)、基于模板(RestTemplate)、基于 SDK、消息队列、gRPC)对比详解

RestControllerAdvice 和 ControllerAdvice 对比详解 1. 基本概念 注解等效组合核心作用ControllerAdviceComponent RequestMapping&#xff08;隐式&#xff09;定义全局控制器增强类&#xff0c;处理跨控制器的异常、数据绑定或全局响应逻辑。RestControllerAdviceControll…...

敏捷迭代实战经验分享

一、敏捷迭代团队成员构成 比较高效的敏捷开发团队人员一般保持在7~10人左右,一般一个完整的敏捷迭代团队包含PM、BA、开发、测试、设计5类角色成员,由于不同项目的现状不同,可根据现实情况配置相应角色。 图:项目核心团队角色 二、敏捷实践活动 敏捷迭代的周期可以根据各…...

《从底层逻辑剖析:分布式软总线与传统计算机硬件总线的深度对话》

在科技飞速发展的当下&#xff0c;我们正见证着计算机技术领域的深刻变革。计算机总线作为信息传输的关键枢纽&#xff0c;其发展历程承载着技术演进的脉络。从传统计算机硬件总线到如今备受瞩目的分布式软总线&#xff0c;每一次的变革都为计算机系统性能与应用拓展带来了质的…...

服务器运维ACL访问控制列表如何配置

ACL(访问控制列表)在服务器运维中用于细粒度地控制用户或主机对资源的访问权限。正确配置ACL能有效限制未授权访问&#xff0c;增强系统安全性。以下是ACL的基本配置流程及示例&#xff0c;主要以Linux系统为例进行说明。 一、启用ACL支持 1. 检查文件系统是否支持ACL tune2fs …...

PIXOR:基于LiDAR的3D检测模型解析

目录 1、前言 2、PIXOR介绍 2.1. 什么是PIXOR&#xff1f; 2.2. PIXOR如何工作&#xff1f; 3、表现和应用 3.1、PIXOR的性能表现 3.2、PIXOR的应用场景 3.3、PIXOR的局限性与挑战 4. PIXOR的未来展望 5. 结语 1、前言 自动驾驶技术正以前所未有的速度发展&#xff…...

【OSG学习笔记】Day 2: 场景图(Scene Graph)的核心概念

今天课程分为两部分&#xff0c;第一部分我们学习一下Scene Graph理论知识&#xff0c;第二部分我们熟悉下OSG的源码。 第一部分&#xff08;Scene Graph&#xff09; 在OpenSceneGraph中&#xff0c;场景图&#xff08;Scene Graph&#xff09;通过树状层级结构高效管理3D对…...

虚幻5的C++调试踩坑

本地调试VS附加调试 踩坑1 预编译版本的UE5没有符号文件&#xff0c;无法调试源码 官方代码调试所需要的符号文件bdp需要下载导入。我安装的5.5.4是预编译版本&#xff0c;并非ue5源码。所以不含bdp文件。需要调试官方代码则需要通过EPIC中下载安装。右键UE版本&#xff0c;打…...

【软件测试】自动化测试框架Pytest + Selenium的使用

Pytest Selenium 是一种常见的自动化测试框架组合&#xff0c;用于编写和执行 Web 应用程序的自动化测试。Pytest 是一个强大的 Python 测试框架&#xff0c;而 Selenium 是一个用于浏览器自动化的工具&#xff0c;二者结合使用可以高效地进行 Web 应用的功能测试、UI 测试等。…...

蓝桥杯补题

方法技巧&#xff1a; 1.进行循环暴力骗分&#xff0c;然后每一层的初始进行判断&#xff0c;如果已经不满足题意了&#xff0c;那么久直接continue&#xff0c;后面的循环就不用浪费时间了。我们可以把题目所给的等式&#xff0c;比如说有四个未知量&#xff0c;那么我们可以用…...

2025年港口危货储存单位主要安全管理人员备考练习题

港口危货储存单位主要安全管理人员备考练习题&#xff1a; 单选题 1、依据《安全生产法》&#xff0c;危险物品的生产、储存单位的安全生产管理人员的任免&#xff0c;应当告知&#xff08; &#xff09;。 A. 主管的负有安全生产监督管理职责的部门 B. 当地人民政府 C. 行…...

openEuler欧拉系统配置local的yum源

1.下载iso openEuler | 开源社区 | openEuler社区官网 2.上传openEuler镜像文件至服务器&#xff08;例如上传至/home目录&#xff09; 3.创建挂载目录 #mkdir -p /mount/iso 4.镜像挂载 #mount -o loop /home/openEuler-22.03-LTS-x86_64-dvd.iso&#xff08;镜像上传目…...

AI比人脑更强,因为被植入思维模型【52】福格行为模型

giszz的理解&#xff1a;重要公式&#xff0c;是BMAT&#xff0c;行为动机能力触发点。也许是乘以。这个挺深刻的&#xff0c;在产品设计中&#xff0c;界面交互&#xff0c;都可以用到这样的思维模型。 一、定义 福格行为模型&#xff08;Fogg Behavior Model&#xff09;是由…...

DocLayout-YOLO:通过多样化合成数据与全局-局部感知实现文档布局分析突破

论文地址:https://arxiv.org/pdf/2410.12628 目录 一、论文概览:当YOLO遇见文档分析 二、创新点解析:两大核心技术 创新点1:Mesh-candidate BestFit合成算法 创新点2:全局-局部可控感知模块(GL-CRM) 三、实验结果:全面超越SOTA 主要指标对比(D4LA数据集) 消融…...

栈(算法)

在 C 里&#xff0c;栈是一种遵循后进先出&#xff08;LIFO&#xff09;原则的数据结构。下面从多个方面为你介绍 C 栈&#xff1a; 1. 使用标准库中的std::stack C 标准库提供了std::stack容器适配器&#xff0c;能方便地实现栈的功能。以下是简单示例&#xff1a; cpp #in…...

leetcode每日一题:子数组异或查询

引言 今天的每日一题原题是3375. 使数组的值全部为 K 的最少操作次数&#xff0c;比较水&#xff0c;可以分成2种情况&#xff1a; 存在比k更小的数&#xff0c;由于每次操作只能使得部分数变小&#xff0c;但是不能把任何数变大&#xff0c;所以肯定无法达成 不存在比k更小的…...

openEuler-22.03-LTS-SP3-x86_64 离线编译安装 nginx 1.20.1

openEuler-22.03-LTS-SP3-x86_64 离线编译安装 nginx 1.20.1 一、概述二、安装依赖1、安装 pcre、pcre-devel2、安装 zlib、zlib-devel3、安装 make、gcc、gcc-c3、编译 openssl5、安装 libtool6、编译 pcre-8.45 三、下载编译 nginx四、运行 nginx 一、概述 本文档适用于无法…...

使用Alamofire下载网站首页内容

用Alamofire库写一个下载网站首页内容的Swift代码。首先&#xff0c;我需要确认用户的需求。他们可能是在开发一个iOS应用&#xff0c;需要从某个网站获取首页的数据&#xff0c;比如HTML内容或者API数据。Alamofire是一个常用的Swift网络库&#xff0c;基于URLSession&#xf…...

服务器DNS失效

服务器异常 xx.t.RequestException: java.net.UnknownHostException: test.ac.xxxx.cn现象分析 本地测试正常&#xff0c;说明域名本身无问题。服务器 DNS 解析异常&#xff0c;导致 UnknownHostException。**服务器可正常解析 ****baidu.com**&#xff0c;说明网络正常&#…...

#无类域间路由(快速复习版)

判断两个无类&#xff08;CIDR&#xff09;地址是否属于同一个子网 &#x1f3af; 问题本质&#xff1a; 判断两个 IP 地址是否属于同一个子网&#xff0c;其实就是 对比它们的“网络地址”是否相同。 &#x1f50d; 原理步骤&#xff08;通用方法&#xff09; 我们按步骤来判…...

【Linux】jumpserver开源堡垒机部署

JumpServer 安装部署指南 本文档详细记录了 JumpServer 安装部署的过程、核心脚本功能说明以及后续管理使用提示&#xff0c;方便运维人员快速查阅和二次安装。 1. 前提条件 操作系统要求&#xff1a; 仅支持 Linux 系统&#xff0c;不支持 Darwin&#xff08;macOS&#xff0…...

Memcached缓存系统:从部署到实战应用指南

#作者&#xff1a;猎人 文章目录 一、安装libevent二、安装配置memcached三、安装Memcache的PHP扩展四、使用libmemcached的客户端工具五、Nginx整合memcached:六、php将会话保存至memcached Memcached是一款开源、高性能、分布式内存对象缓存系统&#xff0c;可应用各种需要缓…...

【rdma tx data flow问题】

rdma data flow问题 1 SQ_doorbell如何产生&#xff1f; --RDMA网卡doorbell寄存器触发&#xff1b;2 CPU如何访问网卡的Doorbell寄存器&#xff1f;3 为什么需要roce_qid_convert把local_qid转换成global_qid;4.WQE的format是什么&#xff1f;5.WQE在网卡硬件中的处理流程&…...

Vue 框架组件间通信方式

组件间通信方式 不管是 vue2 还是 vue3&#xff0c;组件通信方式很重要&#xff0c;以下是常见的几种通信方式&#xff1a; props&#xff1a;可以实现父子组件、子父组件、甚至兄弟组件通信自定义事件&#xff1a;可以实现子父组件通信全局事件总线 $bus&#xff1a;可以实现…...

React 第三十节 使用 useState 和 useEffect Hook实现购物车

不使用 redux 实现 购物车案例 使用 React 自带的 useState 和 useEffect Hook 即可实现购物车 export default function ShoppingCar() {// 要结算的商品 总数 以及总价const [totalNum, setTotalNum] useState(0)const [totalPerice, setTotalPerice] useState(0)// 商品…...

卷积神经网络CNN

目录 一、图像基础知识 图像基本概念 图像的加载 二、CNN概述 CNN概述 三、卷积层 卷积计算 Padding Stride 多通道卷积计算 PyTorch卷积层API 四、池化层 池化层计算 Stride Padding 多通道池化层计算 PyTorch 池化 API 五、图像分类案例 CIFAR10 数据集 …...

【大数据生态】Hive的metadata服务未开启

解决办法 进入到Hive的bin目录下,键入命令: #启动元服务 [atguiguhadoop102 bin]$ pwd /opt/module/hive-3.1.2/bin [atguiguhadoop102 bin]$ ./hive --service metastore & #启动hive [atguiguhadoop102 hive-3.1.2]$ pwd /opt/module/hive-3.1.2 [atguiguhadoop102 hiv…...

【RabbitMQ】死信队列

1.概述 死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;也就是没有被传到消费者的消息&#xff0c;或者即使传到了也没有被消费。当然有死信就有死信队列。死信队列就是用来存储死信的。 它的应用场景就是保证订单业务的消息数据不丢失&#xff0c;当消息消费发 生…...

区间 dp 系列 题解

1.洛谷 P4342 IOI1998 Polygon 我的博客 2.洛谷 P4290 HAOI2008 玩具取名 题意 某人有一套玩具&#xff0c;并想法给玩具命名。首先他选择 W, I, N, G 四个字母中的任意一个字母作为玩具的基本名字。然后他会根据自己的喜好&#xff0c;将名字中任意一个字母用 W, I, N, G …...

Typora使用笔记

文章目录 主题自动编号字体设置两端对齐Step1Step 2 代码块显示行号设置快捷键参考文献 主题自动编号 typora-theme-auto-numbering 字体设置两端对齐 Step1 切记从typora的偏好设置中打开主题所在的文件夹&#xff0c;并修改对应的css文件。&#xff08;以 github.css 为例…...

k8s部署grafana

先决条件 这里部署过程的前提是已经部署好storageclass,所以pv会根据pvc自动创建. 详情参考:k8s-StoargClass的使用-基于nfs_a volume that contains injected data from multiple-CSDN博客 直接开始: 部署pvc [rootmodule /zpf/grafana]$cat pvc.yml apiVersion: v1 kind…...

第三章:SQL 高级功能与性能优化

1. 窗口函数&#xff08;Window Functions&#xff09;​​ 用于在结果集的“窗口”&#xff08;指定行范围&#xff09;内执行计算&#xff0c;保留原数据行的同时生成聚合或排序结果。 ​​1.1 核心语法​​ SELECT column1,column2,[窗口函数] OVER (PARTITION BY 分组列…...

[ACM_3] n组数据 | getchar() | getline(cin,s)

目录 14. 第⼀⾏是⼀个整数n&#xff0c;表示⼀共有n组测试数据, 之后输⼊n⾏ 字符串 15. 第⼀⾏是⼀个整数n&#xff0c;然后是n组数据&#xff0c;每组数据2⾏&#xff0c;每⾏ 为⼀个字符串&#xff0c;为每组数据输出⼀个字符串&#xff0c;每组输出占⼀⾏ 16. 多组测试…...

富士相机照片 RAF 格式如何快速批量转为 JPG 格式教程

富士&#xff08;Fujifilm&#xff09;相机拍摄的 RAW 格式文件&#xff08;RAF&#xff09;因其高质量和丰富的图像信息而受到摄影师的喜爱。然而&#xff0c;RAF 文件通常体积较大且不易于分享或直接使用。为了方便处理&#xff0c;许多人选择将其转换为更通用的 JPG 格式。在…...

[特殊字符]【高并发实战】Java Socket + 线程池实现高性能文件上传服务器(附完整源码)[特殊字符]

大家好&#xff01;今天给大家分享一个 Java Socket 线程池 实现的高性能文件上传服务器&#xff0c;支持 多客户端并发上传&#xff0c;代码可直接运行&#xff0c;适合 面试、项目实战、性能优化 学习&#xff01; &#x1f4cc; 本文亮点&#xff1a; ✅ 完整可运行代码&a…...

2025 年天津消防设施操作员考试攻略:深挖地区特色考点​

天津作为重要的港口城市与工业基地&#xff0c;消防安全形势复杂多样&#xff0c;其消防设施操作员考试也带有鲜明的地区特色。​ 地区特色考点解析&#xff1a;天津化工产业发达&#xff0c;涉及众多危化品场所。因此&#xff0c;危化品储存场所的消防设施配置与应急处置成为…...