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

通过VSCode远程连接到CentOS7/Ubuntu18等老系统

通过VSCode远程连接到CentOS7/Ubuntu18等老系统

背景

VSCode的远程连接插件Remote SSH一直以来是简单好用的远程工具。然而,2025年2月之后的版本在远程安装vscode-server时,预编译的server依赖glibc 2.28,这就要求Linux远程机的glibc版本应不低于2.28,进而导致CentOS 7(glibc版本2.17),Ubuntu 18(glibc版本为2.27)都无法再使用VSCode的Remote SSH插件远程。

本文介绍两种解决方案:一是使用老版本VSCode;二是打补丁方案。

1. 最简单方案:换老版本VSCode(<=1.85)

请参考知乎文章

2. 补丁方案

该方案的操作流程如下:编译Crosstool-ng工具,并设置环境变量;下载.config文件,编译glibc2.28;配置sysroot环境变量;下载/编译安装patchelf供VSCode调用;

编译Crosstool-ng工具

根据VSCode官方推荐,使用Crosstool-ng编译新版本的glibc、gcc等工具链。

在Ubuntu系统运行以下命令以安装依赖项:

sudo apt-get update
sudo apt-get install -y gcc g++ gperf bison flex texinfo help2man make libncurses5-dev \
python3-dev autoconf automake libtool libtool-bin gawk wget bzip2 xz-utils unzip \
patch rsync meson ninja-build

而在CentOS系统需要使用yum install命令,不再赘述(注意CentOS与Ubuntu依赖库的名称也有所差异)。

然后下载Crosstool-ng源码,解压、配置、编译、安装:

wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.bz2
tar -xjf crosstool-ng-1.26.0.tar.bz2
cd crosstool-ng-1.26.0 && ./configure --prefix=/crosstool-ng-1.26.0/out
make
sudo make install

后续使用ct-ng命令之前,需要配置环境变量:

PATH=$PATH:/crosstool-ng-1.26.0/out/bin

方便起见,可以将这一句命令添加到~/.bashrc中。

编译glibc2.28

完成Crosstool-ng的编译安装和环境变量设置后,便可以在bash中调用ct-ng命令了。

为了编译glibc2.28工具链,还需要下载.config配置文件。不同架构cpu应使用不同的配置文件,例如intel的现代cpu使用x86_64-gcc-8.5.0-glibc-2.28:

mkdir toolchain-dir
cd toolchain-dir
wget https://github.com/microsoft/vscode-linux-build-agent/blob/main/x86_64-gcc-8.5.0-glibc-2.28.config
ct-ng build

利用wget获取该文件可能会失败,建议手动去github下载这一文件,拷贝到toolchain-dir目录中。
ct-ng build命令会自动寻找.config文件,根据其内容编译glibc和gcc。

清空环境变量LD_LIBRARY_PATH

在CentOS上使用scl的gcc工具集时或者用户自己为了开发时链接方便 设置了LD_LIBRARY_PATH环境变量,此时使用ct-ng编译时会报错:

[ERROR] Don’t set LD_LIBRARY_PATH. It screws up the build.

因此,需要运行如下指令临时删除LD_LIBRARY_PATH环境变量

unset LD_LIBRARY_PATH
CentOS平台的“小”问题

1.在CentOS 7系统中,可能出现如下错误:

/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lstdc++
Checking that gcc can statically link libstdc++

这是gcc找不到c/c++的标准静态库,无法完成静态链接测试导致的。
c/c++标准库真的不存在吗?运行命令locate libc.a尝试查找,若命令行没有任何输出,说明c标准静态库确实不存在。因此,运行如下命令安装静态库可解决问题:

yum install glibc-static libstdc++-static

2.报错

error: C++ compiler not available

则需要安装g++编译器:

sudo yum install gcc-c++

3.报错critical programs are missing or too old: make

即make版本太老,需要编译更新make。查看INSTALL文件发现,使用crosstoolchain编译glibc要求make的最低版本为4.0:

在这里插入图片描述

而CentOS7自带的make版本是3.8.2。因此,在运行ct-ng build命令之前,需要更新CentOS7的make

更新命令:

wget https://ftp.gnu.org/gnu/make/make-4.0.tar.gz
tar -xzf make-4.0.tar.gz 
cd make-4.0/
./config
./configure 
make
sudo make install

完成后,关闭当前终端,开启新的终端,运行make --version检查是否更新到最新版本。

  1. 报错找不到ncurse库:
sudo yum install ncurses-devel
  1. CentOS内核版本过旧

CentOS内核版本默认是3.10(2012年发布),而2025年以来,VSCode拒绝连接如此老旧的系统。因此有必要将其内核更新到5.x版本或更新。由于CentOS 7早已被结束支持,这里给出一种方案。

目前mirrors.coreix.net网站还提供CentOS 7的5.4版本内核下载,因此我们先从该网站下载内核的rpm包,然后依次安装它们:

cd Downloads/
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.278-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-doc-5.4.278-1.el7.elrepo.noarch.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.278-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-tools-5.4.278-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-tools-libs-5.4.278-1.el7.elrepo.x86_64.rpm
wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-tools-libs-devel-5.4.278-1.el7.elrepo.x86_64.rpm
sudo rpm -ivh kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpm 
sudo rpm -ivh kernel-lt-devel-5.4.278-1.el7.elrepo.x86_64.rpm 
sudo rpm -ivh kernel-lt-headers-5.4.278-1.el7.elrepo.x86_64.rpm
sudo rpm -ivh kernel-lt-tools-libs-5.4.278-1.el7.elrepo.x86_64.rpm 
sudo rpm -ivh kernel-lt-tools-5.4.278-1.el7.elrepo.x86_64.rpm 
sudo rpm -ivh kernel-lt-tools-libs-devel-5.4.278-1.el7.elrepo.x86_64.rpm
sudo rpm -ivh kernel-lt-doc-5.4.278-1.el7.elrepo.noarch.rpm 

更新内核后,运行命令rpm -qa | grep kernel查看已安装内核版本:

在这里插入图片描述
运行命令sudo cat /etc/grub2.cfg | grep menuentry|awk -F "'" '$1=="menuentry " {print i++ " : " $2}'查看内核序号,输出为:

0 : CentOS Linux (5.4.278-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.119.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-a82932c2dec3474eb46898bf0ef5e40d) 7 (Core)

然后根据序号将新内核设为默认启动内核:

grub2-set-default 0

最后重启电脑即可。运行uname -rs可查看系统版本号。若输出为

Linux 5.4.278-1.el7.elrepo.x86_64

则表示更新成功。

编译安装patchelf

patchelf是一个替换系统关键elf组件的工具,用于将上面ct-ng编译好的gcc工具链和新的glibc设置为远程连接进程的默认配置。
远程连接时,VSCode检测到远程系统的GLIBC版本过低,会启用patchelf,并查找数个环境变量(下节介绍),以尝试将系统默认的GLIBC替换成更新版本,以使远程连接正常运行。

在Ubuntu 18中,可以直接使用命令行安装patchelf

sudo apt-get install patchelf

安装完成后,运行命令检查patchelf版本:

patchelf --version

官方推荐使用0.18.0以及更新版本,0.17.x版本存在错误。

而CentOS 7中不存在patchelf的软件源,需要用户下载源码、手动编译:

cd ~
wget https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0.tar.gz
tar -zf patchelf-0.18.0.tar.gz
cd patchelf-0.18.0
./bootstrap.sh
./configure
make
sudo make install

patchelf的更多用法可以参考博客。
更多信息也可以访问patchelf的GitHub页面。

设置VSCode Server所需的sysroot环境变量

所谓的sysroot指的就是编译好的glibc库。按照上面数节的配置,编译的glibc2.28位于~/toolchain-dir,而patchelf位于/usr/local/bin/,因此这三个环境变量的配置为:

export VSCODE_SERVER_CUSTOM_GLIBC_LINKER=~/toolchain-dir/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/lib/ld-linux-x86-64.so.2
export VSCODE_SERVER_CUSTOM_GLIBC_PATH=~/toolchain-dir/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/lib
export VSCODE_SERVER_PATCHELF_PATH=/usr/local/bin/patchelf

将这三条命令加到~/.bashrc文件中。

如果编译时toolchain-dir不在$HOME下,则需要用户自行查找ld-*.so.2的路径。默认情况在编译完成的toolchain-dir目录下,深入数层后有sysroot子目录,如图所示:
在这里插入图片描述

VSCode所需的三个环境变量名和作用如表所示:

环境变量作用
VSCODE_SERVER_CUSTOM_GLIBC_LINKER利用ct-ng编译好的动态链接器ld-linux-x86-64.so.2路径(将被传递给patchelf的–set-interpreter选项)
VSCODE_SERVER_CUSTOM_GLIBC_PATH利用ct-ng编译好的glibc文件夹路径(将被传递给patchelf的–set-rpath选项)
VSCODE_SERVER_PATCHELF_PATH编译好的patchelf可执行程序路径

在Remote SSH扩展中添加远程连接

在VSCode中使用Ctrl+Shift+P组合键,输入“Remote-SSH”,选择下图所示的选项:
在这里插入图片描述

根据实际情况配置SSH命令行,输入密码,建立连接;稍候VSCode在远程配置完毕,将弹出如下提示框:
在这里插入图片描述

点击“允许”,即可连接到远程系统。大功告成!

3.结语

连接后在VSCode顶部依然会出现提示信息“你已连接到不受Visual Studio Code支持的OS版本”,如下图所示:

在这里插入图片描述
也就是说,未来可能不再支持使用本文的方法来实现老系统远程连接,用户应当考虑将系统升级到较新的LTS版本。

4.参考

/usr/bin/ld: cannot find -lc while compiling

Can I run VS Code Server on older Linux distributions?

相关文章:

通过VSCode远程连接到CentOS7/Ubuntu18等老系统

通过VSCode远程连接到CentOS7/Ubuntu18等老系统 背景 VSCode的远程连接插件Remote SSH一直以来是简单好用的远程工具。然而&#xff0c;2025年2月之后的版本在远程安装vscode-server时&#xff0c;预编译的server依赖glibc 2.28&#xff0c;这就要求Linux远程机的glibc版本应…...

Python在AI虚拟教学视频开发中的核心技术与前景展望

Python在AI虚拟教学视频开发中的核心技术与前景展望 一、引言&#xff1a;AI虚拟教学的技术革新 随着教育数字化转型加速&#xff0c;AI虚拟教学视频凭借个性化、沉浸式体验成为教育科技的新风口。Python以其强大的多模态处理能力、丰富的开源生态和跨领域兼容性&#xff0c;成…...

【金仓数据库征文】金仓数据库:开启未来技术脑洞,探索数据库无限可能

我的个人主页 我的专栏&#xff1a; 人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01; 点赞&#x1f44d;收藏❤ 目录 引言&#xff1a;数据库进化的下一站 —— 未来科技的无限可能金仓数据库简介&#xff1a;国…...

深入掌握Redis主从复制:原理、配置与生产级实践指南

一、主从复制核心价值与适用场景 1.1 核心价值矩阵 数据安全&#xff1a;多节点冗余存储&#xff0c;避免单点数据丢失 服务可用性&#xff1a;主节点故障时可快速切换从节点 性能扩展&#xff1a;通过横向扩展从节点提升读吞吐量 运维便利&#xff1a;从节点可承担备份、分…...

springboot如何管理多数据源?

静态多数据源管理 配置多个数据源 :创建多个数据源的配置类,通常使用 @ConfigurationProperties 注解来绑定配置文件中的数据源属性,并通过 @Bean 注解定义多个 DataSource Bean 。例如: 配置类: @Configuration public class DataSourceConfig {@Bean(name = "prima…...

基于风力推进器控制的小球实验装置设计与研究

目录 完整论文下载链接放在文章结尾,有需要自行下载。 目录 摘 要 1 引 言 2 概述 2.1 风控小球系统概述 2.2 本设计方案思路 2.3 研发方向和技术关键 2.4 主要技术指标 3 总体设计 4 硬件设计 4.1 单片机最小系统 4.2 供电接口电路 4.3 Openmv摄像头…...

Swift闭包(Closure)深入解析与底层原理

前言 在Swift开发中&#xff0c;闭包是一个非常重要且强大的特性。本文将深入探讨Swift闭包的底层实现原理&#xff0c;帮助开发者更好地理解和使用这一特性。 1. 什么是闭包 闭包是自包含的函数代码块&#xff0c;可以在代码中被传递和使用。它不仅可以像函数一样执行代码&…...

【DE-III】基于细节增强的模态内和模态间交互的视听情感识别

abstract 在视听情感识别(AVER)中,捕捉视频和音频模态之间复杂的时间关系是至关重要的。然而,现有的方法缺乏对局部细节的关注,如视频帧之间的面部状态变化,这会降低特征的可区分性,从而降低识别准确率。 为此,本文提出了一种用于AVER的细节增强的模态内和模态间交互…...

c++11 :智能指针

目录 一 为什么需要智能指针&#xff1f; 二 智能指针的使用及原理 1. RAII 2. auto_ptr 3. unique_ptr 4. shared_ptr 5. weak_ptr 三 内存泄漏 1.什么是内存泄漏&#xff0c;内存泄漏的危害 2. 如何避免内存泄漏&#xff1f; 一 为什么需要智能指针&#xff1f; …...

Linux解压tar.gz包的正确姿势(附赠防抓狂指南)

一、为什么你的解压命令总报错&#xff1f; 每次看到.tar.gz后缀是不是心里一紧&#xff1f;&#xff08;别装了&#xff01;我都看到你偷偷打开浏览器查命令的样子了&#xff09;这个在Linux界横行霸道的压缩格式&#xff0c;其实用对了方法比Windows的zip还简单。今天咱们不…...

MCP协议:让AI从“话痨”变“实干家”的神奇魔法

一、MCP 协议&#xff1a;AI 界的 “万能插头” 是啥来头&#xff1f; 1.1 从 “动口不动手” 到 “全能打工人” 你以为 AI 只会陪你聊天、写文案&#xff1f;那你可小瞧它啦&#xff01;MCP 协议&#xff08;Model Context Protocol&#xff09;&#xff0c;堪称 AI 的 “瑞…...

如何在SpringBoot中通过@Value注入Map和List并使用YAML配置?

在SpringBoot开发中&#xff0c;我们经常需要从配置文件中读取各种参数。对于简单的字符串或数值&#xff0c;直接使用Value注解就可以了。但当我们需要注入更复杂的数据结构&#xff0c;比如Map或者List时&#xff0c;该怎么操作呢&#xff1f;特别是使用YAML这种更人性化的配…...

记一次调用大华抓拍SDK并发优化

目录 一、问题分析 二、解决思路 三、贴代码 四、总结 一、问题分析 按惯例上问题&#xff1a; 设备告警采用高电平持续模式&#xff1a;一次开&#xff0c;不主动关就一直处于告警状态。 并发时多个请求下发 setDVRAlarmOutConfig&#xff0c;导致状态混乱。 “开 -&g…...

打破认知!没论文没竞赛,我的暑期实习上岸秘籍:简历要敢 “吹”,面试靠巧 “聊”

前言 以下教程仅针对本人的大大小小几十场暑期实习面试的经验总结&#xff0c;个人背景&#xff08;双9&#xff0c;无论文、无竞赛、无大厂实习、无奖。&#xff09;。简历几易其稿&#xff0c;相对于原来的初版&#xff0c;可谓是脱胎换骨&#xff0c;洗经易髓。 二月中旬开…...

为何 RAG 向量存储应优先考虑 PostgreSQL + pgvector 而非 MySQL?

构建检索增强生成&#xff08;RAG&#xff09;系统已成为释放大型语言模型&#xff08;LLM&#xff09;潜力的关键范式。通过将 LLM 的推理能力与外部知识库的实时、特定信息相结合&#xff0c;RAG 能够生成更准确、更相关、更值得信赖的回答。而这个“外部知识库”的核心&…...

LangChain LCEL表达式语言简介

LangChain表达式语言&#xff08;LCEL&#xff09;是专为构建AI应用链设计的声明式编程框架&#xff0c;通过管道符|实现组件无缝衔接&#xff0c;支持流式处理、异步调用等生产级特性。其核心优势在于零代码改动实现原型到生产的过渡&#xff0c;同时保持代码简洁性和可维护性…...

智能座舱背后的秘密:智能座舱测试如何“具身智能”

在上期文章《智能座舱背后的秘密&#xff1a;AI赋能测试如何改写驾乘体验》中&#xff0c;我们聊到了“智能座舱”已成为车企争夺用户心智的核心战场、智能座舱功能体验进化、AI赋能座舱测试将突破“场景覆盖、情感量化、角色/场景衍生”技术实现方面的三大困局&#xff0c;并在…...

鸿蒙-试一下属性字符串:除了Span之外,如何在同一个Text组件中展示不同样式的文字

文章目录 前言简介有哪些类型拉出来溜溜Text SpanStyledString其他CustomSpan先看一下构造函数onMeasure(measureInfo: CustomSpanMeasureInfo): CustomSpanMetricsonDraw(context: DrawContext, drawInfo: CustomSpanDrawInfo) 遗留问题 前言 在开发中&#xff0c;经常会遇到…...

今日最新漂亮的早上好图片祝福,最真的牵挂,永远的祝福

1、清晨的一个问候给你一个新的心情、一个祝福带给你新的起点、一个关心带给你一个新的愿望。祝福你心中常有快乐涌现&#xff01;早安&#xff01; 2、人过花甲万事休&#xff0c;唯有健康不可丢&#xff0c;荣华富贵皆浮云&#xff0c;逍遥自在渡岁月&#xff01;时光匆匆&am…...

MySQL 库的操作 -- 增删改查,备份和恢复,系统编码

文章目录 库的操作增删改查数据库的查看和创建查看当前位于哪个数据库中数据库的删除总结显示数据库的创建语句修改数据库 认识系统编码数据库的编码问题查看系统默认的字符集和效验规则校验规则对数据库的影响 数据库的备份和恢复备份还原备份的是一张表 查看数据库的连接情况…...

【c++11】c++11新特性(下)(可变参数模板、default和delete、容器新设定、包装器)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C 目录 前言 五、可变参数模板 1. 概念及简单定义 2. 包扩展 六、 default和delete 七、容器新设定 1. 新容器 2. 新接口 emplace系列接口 八、函数包…...

fps项目总结:生成武器子弹

文章目录 spawn actor&#xff1a;生成武器固定生成&#xff1a;因为武器的碰撞设为noCollision attach actor to component&#xff1a;将武器附加到骨骼上&#xff0c;成为mesh的子组件对齐到目标&#xff1a;对齐到插槽 子弹阻挡的前提是根组件为碰撞体子弹对碰撞体全是阻挡…...

大模型备案对模型训练语料的要求

昨天接到一位客户的咨询&#xff0c;说他们的模型还在开发阶段&#xff0c;想提前了解一下大模型备案政策中对于模型训练语料有什么具体要求&#xff0c;提前规避一下。客户确实有前瞻性&#xff0c;考虑得比较充分。训练语料在研发阶段至关重要&#xff0c;直接影响模型的性能…...

Ethan独立开发产品日报 | 2025-04-24

1. Peek AI个人财务教练&#xff0c;帮助你做出决策。 Peek的人工智能助手提供主动的跟踪服务——它会分析你的消费习惯&#xff0c;并以细腻而积极的方式帮助你调整这些习惯。没有评判&#xff0c;也没有负担。就像是为你的财务量身定制的Spotify Wrapped&#xff0c;完美贴…...

egg环境搭建

前言 egg.js 是由阿里开源的面向企业级开发的 Node.js 服务端框架&#xff0c;它的底层是由 Koa2 搭建。 Github&#xff1a;https://github.com/eggjs/egg&#xff0c;目前 14.8K Star&#xff0c;egg 很适合做中台。 安装 首先&#xff0c;你要 确保 Node 已经配置环境变量…...

Linux的基础指令

目录 1、Shell及运行原理 2、热键 3、Linux的基础知识 4、Linux的基础指令 4.1 man 4.2 clear&&history&&whoami 4.3 pwd 4.4 ls 4.5 cd 4.6 mkdir&&touch 1. mkdir 2. touch 4.7 rmdir&&rm 1. rmdir 2. rm 4.8 cp&&mv…...

第一部分:git基本操作

目录 1、git初识 1.1、存在的问题 1.2、版本控制器 1.3、git安装 1.3.1、CentOS平台 1.3.2、ubuntu平台 2、git基本操作 2.1、创建仓库 2.2、配置git 3、工作区、暂存区、版本库 4、基本操作 4.1、场景一 4.2、场景二 4.3、修改文件 5、版本回退 6、撤销修改 …...

Kafka和其他组件的整合

Kafka和其他组件的整合 1.Kafka和Flume的整合 需求1&#xff1a;利用flume监控某目录中新生成的文件&#xff0c;将监控到的变更数据发送给kafka&#xff0c;kafka将收到的数据打印到控制台&#xff1a; 在flume/conf下添加.conf文件&#xff0c; vi flume-kafka.conf # 定…...

学习AI必知的20大概念

&#x1f3af;AI开发者必知的20大概念 ​&#x1f916; 机器学习&#xff1a;基础算法和模型训练。 &#x1f9e0; 深度学习&#xff1a;复杂表示学习。 &#x1f310; 神经网络&#xff1a;非线性关系建模。 &#x1f5e3;️ NLP&#xff1a;文本处理和理解。 &#x1f441;️…...

VRRP与防火墙双机热备实验

目录 实验一&#xff1a;VRRP负载均衡与故障切换 实验拓扑​编辑一、实验配置步骤 1. 基础网络配置 2. VRRP双组配置 二、关键验证命令 1. 查看VRRP状态 2. 路由表验证 三、流量分析 正常负载均衡场景&#xff1a; 故障切换验证&#xff1a; 实验二&#xff1a;防火…...

【金仓数据库征文】——选择金仓,选择胜利

目录 第一部分&#xff1a;金仓数据库——开创数据库技术的新时代 1.1 金仓数据库的技术底蕴 1.2 高可用架构与灾备能力 1.3 分布式架构与弹性扩展能力 第二部分&#xff1a;金仓数据库助力行业数字化转型 2.1 电信行业&#xff1a;核心系统国产化替代 2.2 医疗行业&…...

微软官网Win10镜像下载快速获取ISO文件

如何从微软官网轻松下载win10镜像&#xff1f;win10镜像的下载方式主要包括两种&#xff1a; 目录 一&#xff1a;借助官方工具 二&#xff1a;直接微软官网通过浏览器进行下载。 三&#xff1a;实现方法与步骤&#xff1a; 1&#xff1a;利用微软官方提供的MediaCreationT…...

发放优惠券

文章目录 概要整体架构流程技术细节小结 概要 发放优惠券 处于暂停状态&#xff0c;或者待发放状态的优惠券&#xff0c;在优惠券列表中才会出现发放按钮&#xff0c;可以被发放&#xff1a; 需求分析以及接口设计 需要我们选择发放方式&#xff0c;使用期限。 发放方式分…...

【专题刷题】二分查找(二)

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码&#xff1b;&#xff…...

如何避免IDEA每次打开新项目都重复配置Maven?

每次打开新项目都要重新设置Maven路径&#xff1f;每次导入工程都要手动调整settings.xml&#xff1f;如果你也受够了IDEA这种“健忘”行为&#xff0c;那么这篇文章就是为你准备的&#xff01;今天我们就来彻底解决这个问题&#xff0c;让IDEA记住你的Maven配置&#xff0c;一…...

【Linux网络编程】应用层协议HTTP(实现一个简单的http服务)

目录 前言 一&#xff0c;HTTP协议 1&#xff0c;认识URL 2&#xff0c;urlencode和urldecode 3&#xff0c;HTTP协议请求与响应格式 二&#xff0c;myhttp服务器端代码的编写 HTTP请求报文示例 HTTP应答报文示例 代码编写 网络通信模块 处理请求和发送应答模块 结…...

深度解析之算法之分治(快排)

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

【金仓数据库征文】-金仓数据库性能调优 “快准稳” 攻略:实战优化,让数据处理飞起来

我的个人主页 我的专栏&#xff1a; 人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01; 点赞&#x1f44d;收藏❤ 目录 一、KingbaseES金仓数据库简介二、快速入门&#xff1a;金仓数据库下载与安装指南三、“快”…...

DPIN河内AI+DePIN峰会:共绘蓝图,加速构建去中心化AI基础设施新生态

近日&#xff0c;一场聚焦前沿科技融合的盛会——AIDePIN峰会在越南河内成功举办。此次峰会由DPIN、QPIN及42DAO等Web3领域的创新项目联合组织&#xff0c;汇聚了众多Web3行业领袖、技术专家与社区成员。峰会于2025年4月19日举行&#xff0c;其核心议题围绕去中心化物理基础设施…...

vscode和git 踩坑

git init经常 在 vscode push错误问题: 正确姿势&#xff1a;先 GitHub 上建仓库 → git clone 拉到本地 → 再用 VSCode 打开编辑 ❌ 不是&#xff1a;VSCode 里 git init → 再去 GitHub 选个仓库绑定 举个对比 操作流程是否推荐后果GitHub 创建仓库 → git clone → 用 VSC…...

C++11介绍

目录 一、C11的两个小点 1.1、decltype 1.2、nullptr 二、列表初始化 2.1、C98传统的{} 2.2、C11中的{} 2.3、C11中的std::initializer_list 三、右值引用和移动语义 3.1、左值和右值 3.2、左值引用和右值引用 3.3、引用延长生命周期 3.4、左值和右值的参数匹配 3…...

AI数字人:繁荣背后的伦理困境与法律迷局(8/10)

摘要&#xff1a;本文深入剖析 AI 数字人从虚拟走向现实的历程&#xff0c;阐述其融合多技术实现从静态到动态交互的跨越&#xff0c;爆发式应用于各领域带来的商业价值与社会影响&#xff0c;同时直面由此引发的伦理法律挑战&#xff0c;包括身份认同、数据隐私、责任归属及权…...

SOLID 原则在单片机环境下的 C 语言实现示例,结合嵌入式开发常见场景进行详细说明

1. 单一职责原则 (SRP) 定义:一个模块(函数/文件)只负责一个功能。 示例:传感器数据采集与处理分离 // SensorAdc.h - 仅负责ADC原始数据采集 typedef struct { uint16_t (*ReadRaw)(void); // 原始数据读取接口 } SensorAdc; // SensorProcessor.h - 仅负责数据处理…...

RT Thread 发生异常时打印输出cpu寄存器信息和栈数据

打印输出发生hardfault时,当前栈十六进制数据和cpu寄存器信息 在发生 HardFault 时,打印当前栈的十六进制数据和 CPU 寄存器信息是非常重要的调试手段。以下是如何实现这一功能的具体步骤和示例代码。 1. 实现 HardFault 处理函数 我们需要在 HardFault 中捕获异常上下文,…...

SQL 函数进行左边自动补位fnPadLeft和FORMAT

目录 1.问题 2.解决 方式1 方式2 3.结果 1.问题 例如在SQL存储过程中&#xff0c;将1 或10 或 100 长度不足的时候&#xff0c;自动补足长度。 例如 1 → 001 10→ 010 100→100 2.解决 方式1 SELECT FORMAT (1, 000) AS FormattedNum; SELECT FORMAT(12, 000) AS Form…...

Unity中数据和资源加密(异或加密,AES加密,MD5加密)

在项目开发中,始终会涉及到的一个问题,就是信息安全,在调用接口,或者加载的资源,都会涉及安全问题,因此就出现了各种各样的加密方式。 常见的也是目前用的最广的加密方式,分别是:DES、3DES、AES、MD5、XOR(异或) 其中DES、3DES、AES、MD5用在数据加密中偏多,特别是…...

C++初窥门径

const关键字 一、const关键字 修饰成员变量 常成员变量&#xff1a;必须通过构造函数的初始化列表进行初始化&#xff0c;且初始化后不可修改。 示例&#xff1a; class Student { private: const int age; // 常成员变量 public: Student(string name, int age) : age(ag…...

Spring知识点总结

目录 1.什么是spring&#xff1f;你对spring的理解&#xff1f; 2.spring的优缺点&#xff1f; 3.解释一下IOC和AOP&#xff1f; 4.IOC和DI的区别&#xff1f; 5.spring中管理对象注入的方式&#xff1f; 6.自动注入的注解有哪些&#xff1f; 声明bean的注解 Bean的生命…...

Oracle_开启归档日志和重做日志

在Oracle中&#xff0c;类似于MySQL的binlog的机制是归档日志&#xff08;Archive Log&#xff09;和重做日志&#xff08;Redo Log&#xff09; 查询归档日志状态 SELECT log_mode FROM v$database; – 输出示例&#xff1a; – LOG_MODE – ARCHIVELOG (表示已开启) – NO…...

【金仓数据库征文】-数据库界新兴前列者,本篇带你速懂金仓数据库!

最近写课程设计、搞毕设是不是被数据库折腾到崩溃&#xff1f;动不动就报错、数据迁移还超麻烦&#xff01;今天挖到个宝藏 —— 国产金仓数据库 KingbaseES&#xff0c;操作超简单&#xff0c;还自带 “翻译器” 帮你迁移数据&#xff01;性能强还稳定&#xff0c;关键完全免费…...