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

容器安全-核心概述

文章摘要

本文探讨了容器安全的四个核心类别,包括环境基础设施安全、镜像安全、运行时安全和生态安全。尽管 EDR 能提供主机安全层面的部分防护,但无法覆盖容器的镜像安全和生态安全。容器的镜像安全和生态安全问题,如镜像漏洞、恶意镜像、容器能力限制、强制访问控制等,都需要专门的解决方案。文章建议结合 EDR 的优势,针对容器环境的特殊性,扩展和增强安全能力,以实现全面的容器安全防护。

文章正文

Docker 是目前最具代表性的容器技术之一,对云计算及虚拟化技术产生了颠覆性的影响。

以 Docker 为代表的容器技术,直接运行于宿主机操作系统内核,因此对于容器安全,很多人会有着这样的疑问:EDR(Endpoint Detection and Response)等主机安全方案,能否直接解决容器安全的问题?

概括来说,容器 / 容器云安全,可以包括以下四个类别:
第一,就是容器环境基础设施的安全性,比如主机上的安全配置是否会影响到其上面运行的容器,主机上的安全漏洞是否会影响到容器,主机上的恶意进程是否会影响到容器,容器内的进程是否可以利用到主机上的安全漏洞等。
第二,是容器的镜像安全,这里包括镜像中的软件是否存在安全漏洞,镜像在构建过程中是否存在安全风险,镜像在传输过程中是否被恶意篡改等。
第三,是容器的运行时安全,比如运行的容器间隔离是否充分,容器间的通信是否是安全的,容器内的恶意程序是否会影响到主机或者其它容器,容器的资源使用情况是否是安全的等。
第四,是整个容器生态的安全性,比如 Docker/Kubernetes 自身的安全性如何,ServiceMesh/Serverless 对容器安全有什么影响,容器中安全密钥的管理和传统环境有什么不同,容器化后的数据隐私保护跟传统的数据隐私保护是否一致等。

从上述容器安全的核心问题来看,镜像的概念相对来说是容器所特有的,因此对于容器的镜像安全,EDR 是一定不会覆盖的。另外就是容器的生态安全,这块更多的是容器相关的技术栈带来的安全机遇和挑战,因此典型的 EDR 产品肯定也是无能为力的。

行文至此,开篇所提出的问题 “EDR 等主机安全方案,能否直接解决容器安全的问题?” 就已经有了初步的答案:肯定是不可以的。

EDR 既然现有的 EDR 产品不能直接用来解决容器安全的所有问题,那么对于容器环境面临的前述安全问题,EDR 能否解决其中的一部分呢?

先看一下 EDR 的定义是什么?典型的 EDR 产品又能做些什么?

Gartner 对于 EDR 给出了如下的定义:
EDR tools provide an ability to analyze and search detailed, current and historic endpoint data for traces of malicious activity and bring the high - risk data to an analyst's attention with additional capabilities to actively respond to those activities if necessary.

EDR 工具集提供一种分析 / 检索更详细 / 实时 / 历史的终端数据能力,进而发现恶意活动的痕迹,让安全分析师关注高风险的数据,并且在必要时积极的进行响应。

Gartner 的这个定义,看上去似乎有些抽象,简单一点的解释就是:通过收集终端上的各种数据,在这些数据中分析并发现恶意的活动,进而采取相应的防御手段。那么都会收集什么样的数据?收集到了这些数据又能发现什么样的恶意行为?

下面从 EDR 典型的设计架构开始,进行具体的解释。

1 典型架构
下图展示了 Gartner 给出的典型 EDR 架构,其主要包括两个部分:一部分是部署在待防护终端上的代理(Agent),这里的终端既可以是虚拟化的云主机,也可以是物理的服务器主机,还可以是办公的 PC 机,当然甚至也可以是更轻量的 IoT 终端设备(跟容器的可运行环境基本是一致的);另一部分则是控制平台,这里的控制平台既可以通过本地的集中化方式部署实现,也可以部署在云端,或者是采用云端和本地化混合的部署方式,不同的安全能力部署在不同的位置。

2 代理都收集什么样的数据?
(1)终端设备的基本元数据。包括 CPU、内存、网卡(IP、MAC)、操作系统、安装软件、硬件数据、Device 数据等。
(2)网络数据。包括终端设备上的 DNS 和 ARP 表以及其它实时网络数据、开放的端口以及相关的进程数据、终端的网络连接数据、可访问终端的 URL 数据等。
(3)运行时数据。包括终端上运行的进程 / 线程以及其对应的元数据、用户登录注销数据、进程间通信(IPC)数据、进程行为数据(例如数据读写)等。
(4)存储数据。文件(通常只包含特定的文件或者可执行文件)以及文件元数据(比如文件名 / 大小 / 类型、校验和等)、文件变更信息、syslog、主引导记录(MBR)信息等。
(5)其它数据。比如加载的 DLL、激活的设备驱动程序、已加载的内核模块、CMD 或者 PowerShell 历史命令等数据。

3 EDR 能发现什么恶意行为?
基于上述收集到的数据,EDR 通常可以应用于以下安全场景:
(1)主机风险检测。结合多种安全基线与规范要求,通过账户、网络、进程、系统配置等多维度风险检测,系统全面的发现不符合安全管理规范的主机。
(2)可疑行为检测。通过实时监控主机关键的风险入口,结合威胁情报以及相关安全规则,对端口扫描攻击、暴力破解攻击、恶意脚本攻击、系统漏洞攻击、Webshell 攻击等可疑行为进行高效快速的检测发现。
(3)威胁狩猎。平台收集的各种层面的数据,可以提供关于主机健康状况的大量信息。通过正确的筛选、挖掘,利用这些数据可以发现、追踪到更多潜在的威胁行为,主动的进行威胁捕获。
(4)阻止恶意行为。例如主机的微隔离,通过控制主机的进出站流量,实现对异常主机的隔离。

4 对比容器安全,有哪些是无法满足的?
根据前文对于容器安全核心问题的描述,以及 EDR 的功能概述,除了容器的镜像安全和容器生态安全之外,在主机安全以及容器运行时安全方面,EDR 确实能够不同程度的提供相关的安全检测和防护能力。

相同点:
(1)从功能层面,容器安全和 EDR 都要求实现其对应主机的安全,包括资源层面、权限层面、网络层面等多个方面,因此,对于容器安全来说,EDR 产品可以 100% 的进行功能的复用,保障容器环境的主机安全。
(2)从技术层面,在二者的主流技术实现路径上,均采用了 “平台 + 探针” 的技术架构,可以以最小的成本开销,实现安全能力的复用和整合。

不同点:
二者之间的不同点,主要来源于容器环境利用 namespace 和 cgroup 做了一层资源的隔离,因此:
(1)当前 EDR 所监测的数据,仅限于主机层面,对于容器内部的行为和活动,是没有有效的进行关联的,比如容器内进程行为的监控、容器内用户权限的监控等。
(2)在网络安全上,当前 EDR 更关注于主机的进出站网络流量,也就是主机物理网卡上的流量,而在容器环境中,还有相当大比例的网络通信存在于主机内部的容器之间,因此,这种容器间的东西向网络安全防护,当前 EDR 也是无法实现的。
(3)权限管理。容器环境之上,通常运行的基于微服务架构的业务应用,因此有着复杂的权限管理以及访问控制策略,虽然这些通常是由容器业务平台进行设计和实现,但是作为安全服务,是需要有能力对其进行监控和异常检测的。而 EDR 在这方面几乎还只停留在主机资源的权限管理上,这一点也是无法满足需求的。
(4)对于容器内应用的密钥管理、密钥隐藏等容器业务强相关的安全需求,EDR 也是无法满足的。

考虑到容器环境在技术实现上的特点,通过 EDR 实现容器安全确实有着一定的优势。但是考虑到容器环境又有着很多特殊性,在安全上还有很多特定的需求,因此,直接利用 EDR 去应对容器安全的问题,还是远远不够的。

比较好的解决办法就是,结合各家之所长,一方面有效的利用 EDR 在主机安全上可以做到的全面、深入的安全检测能力;另一方面,结合容器环境特定的需求,实现安全能力的有效扩展和延伸。这样,就可以尽可能高效的实现容器环境的安全防护了。

如何对容器安全能力扩展与延伸?

对于 Docker 容器在应用中可能面临的安全问题和风险进行了研究,并将 Docker 容器应用环境中的安全机制与相关解决方案分为容器虚拟化安全、容器安全管理、容器网络安全三部分进行分析。

一、从虚拟化安全到容器安全
1、传统虚拟化技术
虚拟化技术是实现硬件基础设施资源的充分利用、合理分配和有效调度的重要技术手段。例如,在基于 OpenStack 的典型 IaaS 服务中,云服务提供商可通过搭建设备集群建立资源池,并将服务器、存储和网络等底层资源进行弹性虚拟化提供给租户。
传统虚拟化技术以虚拟机为管理单元,各虚拟机拥有独立的操作系统内核,不共用宿主机的软件系统资源,因此具有良好的隔离性,适用于云计算环境中的多租户场景。

2、容器技术
容器技术可以看作一种轻量级的虚拟化方式,将应用与必要的执行环境打包成容器镜像,使得应用程序可以直接在宿主机(物理机或虚拟机)中相对独立地运行。容器技术在操作系统层进行虚拟化,可在宿主机内核上运行多个虚拟化环境。相比于传统的应用测试与部署,容器的部署无需预先考虑应用的运行环境兼容性问题;相比于传统虚拟机,容器无需独立的操作系统内核就可在宿主机中运行,实现了更高的运行效率与资源利用率。

Docker 是目前最具代表性的容器平台之一,它模糊了传统的 IaaS 和 PaaS 的边界,具有持续部署与测试、跨云平台支持等优点。在基于 Kubernetes 等容器编排工具实现的容器云环境中,通过对跨主机集群资源的调度,容器云可提供资源共享与隔离、容器编排与部署、应用支撑等功能。

Docker 容器技术以宿主机中的容器为管理单元,但各容器共用宿主机内核资源,分别通过 Linux 系统的 Namespaces 和 CGroups 机制实现资源的隔离与限制。

1)Namespaces
为了保证容器进程之间的资源隔离,避免相互影响和干扰,Linux 内核的 Namespaces(命名空间)机制提供了 UTS、User、Mount、Network、PID、IPC 等命名空间实现了主机名、用户权限、文件系统、网络、进程号、进程间通信等六项资源隔离功能。通过调用 clone () 函数并传入相应的系统调用参数创建容器进程,可实现对应资源内容的隔离,具体情况如表 1 所示。

表 1:Namespaces 隔离机制
命名空间 系统调用参数 隔离内容 Linux 内核版本
UTS CLONE_NEWUTS 主机名和域名 2.6.19
IPC CLONE_NEWIPC 信号量、信息队列和共享内存 2.6.19
PID CLONE_NEWPID 进程编号 2.6.24
Network CLONE_NEWNET 网络设备、网络栈、端口等 2.6.29
Mount CLONE_NEWNS 挂载点(文件系统) 2.4.19
User CLONE_NEWUSER 用户和用户组 3.8

对于某个进程而言,可通过查看 /proc/[PID]/ns 文件,获取该进程下的命名空间隔离情况。其中,每一项命名空间都拥有一个编号对其进行唯一标识,如果宿主机中两个进程指向的命名空间编号相同,则表示他们同在一个命名空间之下。

2)CGroups
CGroups(Control Groups,控制组)机制最早于 2006 年由 Google 提出,目前是 Linux 内核的一种机制,可以实现对任务组(进程组或线程组)使用的物理资源(CPU、内存、I/O 等)进行限制和记录,通过多种度量标准为各个容器相对公平地分配资源,以防止资源滥用的情况。

在实际应用中,CGroups 会为每个执行任务创建一个钩子,在任务执行的过程中涉及到资源分配使用时,就会触发钩子上的函数并对相应的资源进行检测,从而对资源进行限制和优先级分配。

CGroups 提供了资源限制(Resource Limitation)、优先级分配(Prioritization)、资源统计(Accounting)、任务控制(Control)四个功能,包含 blkio、cpu、cpuacct、cpuset、devices、freezer、memory、perf_event、net_cls、net_prio、ns、hugetlb 等子系统,每种子系统独立地控制一种资源,可分别实现块设备输入 / 输出限制、CPU 使用控制、生成 CPU 资源使用情况报告、内存使用量限制等功能。几个主要子系统的具体功能如表 2 所示。

表 2:CGroups 子系统
子系统 功能
blkio 为块设备(如磁盘、固态硬盘等物理驱动设备)设定输入 / 输出限制
cpu 通过调度程序控制任务对 CPU 的使用
cpuacct 生成任务对 CPU 资源使用情况的报告
cpuset 为任务分配独立的 CPU 和内存
devices 开启或关闭任务对设备的访问
freezer 挂起或恢复任务
memory 设定任务对内存的使用量限制,生成任务对内存资源使用情况的报告

3、安全性
传统虚拟化技术与 Docker 容器技术在运行时的安全性差异主要体现在隔离性方面,包括进程隔离、文件系统隔离、设备隔离、进程间通信隔离、网络隔离、资源限制等。

在 Docker 容器环境中,由于各容器共享操作系统内核,而容器仅为运行在宿主机上的若干进程,其安全性特别是隔离性与传统虚拟机相比在理论上与实际上都存在一定的差距。

二、Docker 容器安全风险分析
根据 Docker 容器的主要特点及其在安全应用中的实际问题,本文将 Docker 容器技术应用中可能存在的技术性安全风险分为镜像安全风险、容器虚拟化安全风险、网络安全风险等类型进行具体分析。

1、镜像安全风险
Docker 镜像是 Docker 容器的静态表示形式,镜像的安全决定了容器的运行时安全。

Docker 容器官方镜像仓库 Docker Hub 中的镜像可能由个人开发者上传,其数量丰富、版本多样,但质量参差不齐,甚至存在包含恶意漏洞的恶意镜像,因而可能存在较大的安全风险。具体而言,Docker 镜像的安全风险分布在创建过程、获取来源、获取途径等方方面面。

1)Dockerfile 安全问题
Docker 镜像的生成主要包括两种方式,一种是对运行中的动态容器通过 docker commit 命令进行打包,另一种是通过 docker build 命令执行 Dockerfile 文件进行创建。为了确保最小安装原则,同时考虑容器的易维护性,一般推荐采用 Dockerfile 文件构建容器镜像,即在基础镜像上进行逐层应用添加操作。

Dockerfile 是包含用于组合镜像命令的文本文件,一般由基础镜像信息(FROM)、维护者信息(MAINTAINER)、镜像操作指令(RUN、ADD、COPY 等)、容器启动时执行指令(CMD 等)四个部分组成,Docker 可通过读取 Dockerfile 中的命令创建容器镜像。

Dockerfile 文件内容在一定程度上决定了 Docker 镜像的安全性,其安全风险具体包括但不限于以下情况:
如果 Dockerfile 存在漏洞或被插入恶意脚本,那么生成的容器也可能产生漏洞或被恶意利用。例如,攻击者可构造特殊的 Dockerfile 压缩文件,在编译时触发漏洞获取执行任意代码的权限。
如果在 Dockerfile 中没有指定 USER,Docker 将默认以 root 用户的身份运行该 Dockerfile 创建的容器,如果该容器遭到攻击,那么宿主机的 root 访问权限也可能会被获取。
如果在 Dockerfile 文件中存储了固定密码等敏感信息并对外进行发布,则可能导致数据泄露的风险。
如果在 Dockerfile 的编写中添加了不必要的应用,如 SSH、Telnet 等,则会产生攻击面扩大的风险。

2)镜像漏洞
对于大多数一般的开发者而言,通常需要获取一系列基础镜像进行容器云的部署和进一步开发,因此,基础镜像的安全性在一定程度上决定了容器云环境的安全性。

镜像漏洞安全风险具体包括镜像中的软件含有 CVE 漏洞、攻击者上传含有恶意漏洞的镜像等情况。

① CVE 漏洞
由于镜像通常由基础操作系统与各类应用软件构成,因此,含有 CVE 漏洞的应用软件同样也会向 Docker 镜像中引入 CVE 漏洞。

镜像的获取通常是通过官方镜像仓库 Docker Hub 或网易、阿里云等提供的第三方镜像仓库。然而,根据对 Docker Hub 中镜像安全漏洞的相关研究,无论是社区镜像还是官方镜像,其平均漏洞数均接近 200 个,包括 nginx、mysql、redis 在内的常用镜像都含有高危漏洞。

② 恶意漏洞
恶意用户可能将含有后门、病毒等恶意漏洞的镜像上传至官方镜像库。2018 年 6 月,安全厂商 Fortinet 和 Kromtech 在 Docker Hub 上发现 17 个包含用于数字货币挖矿恶意程序的 Docker 镜像,而这些恶意镜像当时已有 500 万次的下载量。目前,由于 Docker 应用在世界范围内具有广泛性,全网针对 Docker 容器的攻击很多都被用于进行数字货币挖矿,为攻击者带来实际经济利益,损害 Docker 用户的正常使用。

3)镜像仓库安全
作为搭建私有镜像存储仓库的工具,Docker Registry 的应用安全性也必须得到保证。镜像仓库的安全风险主要包括仓库本身的安全风险和镜像拉取过程中的传输安全风险。
仓库自身安全:如果镜像仓库特别是私有镜像仓库被恶意攻击者所控制,那么其中所有镜像的安全性将无法得到保证。例如,如果私有镜像仓库由于配置不当而开启了 2357 端口,将会导致私有仓库暴露在公网中,攻击者可直接访问私有仓库并篡改镜像内容,造成仓库内镜像的安全隐患。

相关文章:

容器安全-核心概述

文章摘要 本文探讨了容器安全的四个核心类别,包括环境基础设施安全、镜像安全、运行时安全和生态安全。尽管 EDR 能提供主机安全层面的部分防护,但无法覆盖容器的镜像安全和生态安全。容器的镜像安全和生态安全问题,如镜像漏洞、恶意镜像、容…...

Golang实践录:在go中使用curl实现https请求

之前曾经在一个 golang 工程调用 libcur 实现 https的请求,当前自测是通过的。后来迁移到另一个小系统出现段错误,于是对该模块代码改造,并再次自测。 问题提出 大约2年前,在某golang项目使用libcurl进行https请求(参…...

nvrtc环境依赖

一 下载 1.1 添加nvidia的源(不同于pypi) pip install nvidia-pyindex 1.2 pip dowload 执行 pip download nvidia-cuda-runtime nvidia-cuda-python 会发现文件夹多了以下几个文件 而需要安装的则只有红框的三个文件, 二 安装 对红框的…...

【计算机视觉】OpenCV实战项目:GraspPicture 项目深度解析:基于图像分割的抓取点检测系统

GraspPicture 项目深度解析:基于图像分割的抓取点检测系统 一、项目概述项目特点 二、项目运行方式与执行步骤(一)环境准备(二)项目结构(三)执行步骤 三、重要逻辑代码解析(一&#…...

Redis持久化存储

我们知道Redis是将数据放在内存中的,那怎么做到持久化存储呢?很简单,就是内存存一份,硬盘也存一份.那么两个地方都存会不会影响效率?答案是影响是不大的,要看具体的策略.同时也要注意内存的数据和硬盘中的数据可能会有一点不同.这也是取决于策略的不同. Redis持久化存储的两个…...

网络检测工具InternetTest v8.9.1.2504 单文件版,支持一键查询IP/DNS、WIFI密码信息

—————【下 载 地 址】——————— 【​本章下载一】:https://drive.uc.cn/s/295e068b79314 【​本章下载二】:https://pan.xunlei.com/s/VOQDXguH0DYPxrql5y2zlkhTA1?pwdg2nx# 【百款黑科技】:https://ucnygalh6wle.feishu.cn/wiki/…...

elpis-core: 基于 Koa 实现 web 服务引擎架构设计解析

前言 内容来源于抖音【哲玄前端】大佬的《大前端全栈实践》课程,此课程是从零开始做一个企业级的全栈应用框架。此框架是基于koa.js构建的服务引擎,对BFF层的框架封装,让我感受颇深。 整体elpis项目架构设计 elpis-core设计思路 可以看到elpi…...

计算机网络-MPLS LDP基础实验配置

前面我们学习了LDP的会话建立、标签发布与交换、LDP的工作原理,今天通过一个基础实验来加深记忆。 一、LDP基础实验 实验拓扑: 1、IGP使用OSPF进行通告,使用Lookback接口作为LSR ID,LDP ID自动生成。 2、实验目的:使…...

搜索二维矩阵 II

存储m和n&#xff0c;用i表示行&#xff0c;j表示列&#xff0c;i从最后一行开始遍历&#xff0c;j从0开始遍历&#xff0c;当前值比目标值小j&#xff0c;反之i-- class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int…...

C++中如何实现一个单例模式?

单利模式是指对象在整个程序中只有一个实例&#xff0c;提供一个访问方法供全局访问。实现单例模式有如下要求&#xff1a; 1.私有化构造函数&#xff1a;将构造函数定义为私有&#xff0c;以防外部通过构造函数创建其它实例。 2.静态实例&#xff1a;在内部提供一个静态实例…...

进程与线程

进程与线程:计算机世界的"公司与员工" 进程与线程的本质区别 进程(Process)是计算机中独立运行的程序实例,拥有自己的内存空间和系统资源;而线程(Thread)是进程内的执行单元,共享所属进程的资源,但拥有独立的执行路径。 🏢 生活类比:想象一个大型企业的运…...

JDK 命令行工具大全与学习方法总结 —— 从帮助文档到高效实践

JDK 命令行工具大全与学习方法总结 —— 从帮助文档到高效实践 Java开发与运维过程中&#xff0c;JDK自带的命令行工具是定位问题、性能调优、编译调试的基石。本文全面梳理JDK常用命令工具、帮助文档的获取方式&#xff0c;并总结类似Linux命令行的学习方法&#xff0c;助你系…...

行业趋势与技术创新:驾驭工业元宇宙与绿色智能制造

引言 制造业发展的新格局&#xff1a;创新势在必行 当今制造业正经历深刻变革&#xff0c;面临着供应链波动、个性化需求增长、可持续发展压力以及技能人才短缺等多重挑战。在这样的背景下&#xff0c;技术创新不再是可有可无的选项&#xff0c;而是企业保持竞争力、实现可持…...

代码随想录算法训练营第三十九天(打家劫舍专题) | 198.打家劫舍、213.打家劫舍II、337.打家劫舍III

一、198.打家劫舍 题目链接&#xff1a;198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;动态规划&#xff0c;偷不偷这个房间呢&#xff1f;| LeetCode&#xff1a;198.打家劫舍_哔哩哔哩_bilibili 1. 思路 大家如…...

Linux514 rsync 解决方案环境配置

节点ab都改为NAT模式 网关和VMnet8网卡不一致 ping 不通外网 ping不通外网 是这里的问题吗 怎么突然就ping通了 没改啥啊 上面改了dhcp范围后 ping还是ping不通 为啥现在又ping通了 设置节点b 推测应该是dhcp范围问题 今日源码 节点b MX...

STM32F103_LL库+寄存器学习笔记23 - PWM波形输出及软件方式调整周期与占空比

导言 脉宽调制&#xff08;PWM&#xff09;是 STM32 定时器最常用的输出模式之一&#xff0c;广泛应用于电机驱动、LED 调光、伺服控制和功率管理等场景。本篇文章将以 TIM5 为例&#xff0c;从寄存器层面深入剖析 PWM 输出的原理与实现步骤。通过本篇博客&#xff0c;你不仅能…...

Canvas知识框架

一、Canvas基础 核心概念 Canvas是位图绘图区域&#xff0c;通过JavaScript&#xff08;或Python等&#xff09;动态绘制图形。 坐标系&#xff1a;左上角为原点 (0, 0)&#xff0c;x向右递增&#xff0c;y向下递增。 绘图流程&#xff1a; const canvas document.getElemen…...

【SSL证书系列】客户端如何验证https网站服务器发的证书是否由受信任的根证书签发机构签发

客户端验证HTTPS网站证书是否由受信任的根证书颁发机构&#xff08;CA&#xff09;签发&#xff0c;是一个多步骤的过程&#xff0c;涉及证书链验证、信任锚&#xff08;Trust Anchor&#xff09;检查、域名匹配和吊销状态验证等。以下是详细的验证流程&#xff1a; 1. 证书链的…...

spark小任务

import org.apache.spark.{Partitioner, SparkConf, SparkContext}object PartitionCustom {// 分区器决定哪一个元素进入某一个分区// 目标: 把10个分区器&#xff0c;偶数分在第一个分区&#xff0c;奇数分在第二个分区// 自定义分区器// 1. 创建一个类继承Partitioner// 2. …...

git push 报错:send-pack: unexpected disconnect while reading sideband packet

背景 新建了一个仓库&#xff0c;第一次push 代码文件&#xff0c;文件中有一个依赖的jar&#xff0c;有80MB&#xff0c;结果push的时候报错。 错误信息 error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 send-pack: unexpected disconnect whi…...

读入csv文件写入MySQL

### 使用 Spark RDD 读取 CSV 文件并写入 MySQL 的实现方法 #### 1. 环境准备 在使用 Spark 读取 CSV 文件并写入 MySQL 数据库之前&#xff0c;需要确保以下环境已配置完成&#xff1a; - 添加 Maven 依赖项以支持 JDBC 连接。 - 配置 MySQL 数据库连接参数&#xff0c;包括 …...

5.18-AI分析师

强化练习1 神经网络训练案例&#xff08;SG&#xff09; #划分数据集 #以下5行需要背 folder datasets.ImageFolder(rootC:/水果种类智能训练/水果图片, transformtrans_compose) n len(folder) n1 int(n*0.8) n2 n-n1 train, test random_split(folder, [n1, n2]) #训…...

腾讯云运营开发 golang一面

redis为什么单线程会快 每秒10w吞吐量 io多路复用 一个文件描述符整体拷贝&#xff1b;调用epoll_ctl 单个传递 内核遍历文件描述符判断是否有事件发送&#xff1b;回调函数列表维护 修改有事件发送的socket为可读或可写&#xff0c;返回整个文件描述符&#xff1b;返回链…...

spark数据压缩

### Spark 数据压缩方法及其实现 在大数据处理框架中&#xff0c;数据压缩是一个重要的环节&#xff0c;它不仅能够减少磁盘占用空间&#xff0c;还能降低网络传输成本。然而&#xff0c;在分布式计算环境中&#xff08;如 Spark&#xff09;&#xff0c;选择合适的压缩编解码…...

synchronized关键字详解

synchronized关键字详解 1. 基本概念与使用方式 作用:确保多个线程在访问共享资源时的互斥性,防止数据不一致。使用方式: 修饰实例方法:锁对象为当前实例(this)。public synchronized void instanceMethod() {// 同步代码 }修饰静态方法:锁对象为类的Class对象。public…...

React useState 的同步/异步行为及设计原理解析

一、useState 的同步/异步行为 异步更新&#xff08;默认行为&#xff09; • 场景&#xff1a;在 React 合成事件&#xff08;如 onClick&#xff09;或生命周期钩子&#xff08;如 useEffect&#xff09;中调用 useState 的更新函数时&#xff0c;React 会将这些更新放入队列…...

《社交应用动态表情:RN与Flutter实战解码》

React Native依托于JavaScript和React&#xff0c;为动态表情的实现开辟了一条独特的道路。其核心优势在于对原生模块的便捷调用&#xff0c;这为动态表情的展示和交互提供了强大支持。在社交应用中&#xff0c;当用户点击发送动态表情时&#xff0c;React Native能够迅速调用相…...

【Oracle专栏】清理告警日志、监听日志

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 今天在导入数据库时,发现之前可以导入,今天导入时居然报空间不足,于是检查是哪里占用空间比较大。检查回收站、归档日志,发现没有。然后检查告警日志、监听日志,发现果然占用空间比较大,于是进行…...

Ubuntu24.04编译ORB_SLAM的一系列报错解决

Ubuntu24.04编译ORB_SLAM的一系列报错解决 decay_t报错 报错信息&#xff1a;error: ‘decay_t’ is not a member of ‘std’&#xff1b;did you mean ‘decay’ 将CMakeLists.txt中第17行的c标准修改为c14即可&#xff1a; 修改前&#xff1a; CHECK_CXX_COMPILER_FLAG…...

Python × CARLA:如何在自动驾驶仿真世界里打造智能驾驶系统?

Python CARLA:如何在自动驾驶仿真世界里打造智能驾驶系统? 在人工智能与自动驾驶的浪潮中,真实世界的测试成本高昂,而自动驾驶仿真已成为开发者训练和测试 AI 驾驶算法的关键技术手段。其中,CARLA(Car Learning to Act)作为开源自动驾驶仿真平台,凭借其真实感强、高度…...

如何迁移 WSL 卸载 Ubuntu WSL

迁移 WSL 到其他盘区 假设您已经安装了 WSL 上的 Ubuntu 22.04 LTS&#xff0c;并且想要将其从 C 盘迁移到 D 盘。 查看 WSL 状态&#xff1a; 打开 PowerShell 或 CMD&#xff0c;运行以下命令查看当前安装的 WSL 发行版&#xff1a; wsl -l -v假设输出显示 Ubuntu-22.04 正在…...

【Linux】多路转接epoll、Linux高并发I/O多路复用

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 上篇文章&#xff1a;五种IO模型与阻塞IO以及多路转接select机制编写echoserver 下篇文章…...

【taro3 + vue3 + webpack4】在微信小程序中的请求封装及使用

前言 正在写一个 以taro3 vue3 webpack4为基础框架的微信小程序&#xff0c;之前一直没有记咋写的&#xff0c;现在总结记录一下。uniapp vite 的后面出。 文章目录 前言一、创建环境配置文件二、 配置 Taro 环境变量三、 创建请求封装四、如何上传到微信小程序体验版1.第二…...

在python中使用Json提取数据

文章目录 一、前言二、格式转换2.1 dumps函数2.2 loads函数2.3 错误处理 三、JSONPath模块四、JMESPath模块4.1 search函数4.2 基本语法4.2.1 基本查询4.2.2 投影4.2.3 管道4.2.4 多选4.2.5 函数 一、前言 官方文档&#xff1a;https://docs.python.org/zh-cn/3.12/library/js…...

备战菊厂笔试4

目录 39.组合总和 回溯&#xff08;单向剪枝&#xff09; 3102.最小化曼哈顿距离 利用曼哈顿距离的性质 3163.压缩字符串3 46.全排列 53.最大子数组和 39.组合总和 39. 组合总和 注意&#xff1a; set不能添加list得加元组 元组不可修改 sorted后得赋值 class So…...

白盒测试——基本路径测试法

一、实验名称 白盒测试——基本路径测试法 二、实验目的 白盒测试是结构测试&#xff0c;是依据被测程序的内部逻辑结构设计测试用例&#xff0c;驱动被测程序运行完成的测试&#xff0c;通过本实验希望&#xff1a; 1、掌握基本路径测试法的基本概念&#xff0c;用具体的例子…...

FFmpeg 与 C++ 构建音视频处理全链路实战(五)—— 音视频编码与封装

在前面的系列文章中&#xff0c;我们已经层层深入&#xff0c;从 MP4 与 FLV 封装格式的剖析&#xff0c;到 H.264 和 AAC 原理的探索&#xff0c;再到 FFmpeg 的解封装、解码&#xff0c;以及音频重采样、视频尺寸变化的代码实现&#xff0c;为音视频处理打下了坚实基础。而今…...

NNLM神经网络语言模型总结

一开始还以为很复杂&#xff0c;总结一下就是&#xff1a; NNLM 将某个单词前 n−1 个词各自转为 embedding&#xff0c;拼接成一个 (n−1)⋅d 维的向量&#xff0c;再通过隐藏层 输出层 softmax&#xff0c;预测下一个词的概率分布 可以发现&#xff0c;这个2003年提出的模…...

开源Heygem本地跑AI数字人视频教程

图文教程&#xff1a; 点击跳转 视频教程 资料包下载 点击下载&#xff1a;...

软件验收测试有哪些流程?与确认测试又有什么不同?

随着信息技术的飞速发展&#xff0c;软件的应用覆盖面越来越广泛&#xff0c;软件验收测试的重要性也愈发显著。软件验收测试是指在软件开发完成后&#xff0c;对软件进行的最后一次全面审核&#xff0c;以确保软件的功能和性能满足用户需求。这一阶段通常由客户进行&#xff0…...

一文了解 HTTP Content-Type:从基础到实战

一文了解 HTTP Content-Type&#xff1a;从基础到实战 在 Web 开发中&#xff0c;HTTP 请求头中的 Content-Type 是一个看似简单却至关重要的概念。它决定了浏览器和服务器如何解析和处理传输的数据。本文将带你全面掌握 Content-Type 的核心知识&#xff0c;涵盖常见类型、应…...

数学建模初等模型应用

一、目的 掌握初等模型的建模方法,对简单的初等模型能借助Matlab工具软件进行辅助建模、求解和检验。 二、实验内容与设计思想&#xff08;设计思路、主要代码分析&#xff09; 1、预测鱼的质量 &#xff08;1&#xff09;设计思路&#xff1a;使用线性回归模型预测鱼的质量…...

map和unordered_map

一、map和unordered_map的基本概念——它们是啥&#xff1f; map&#xff1a;是一种“有序的关联容器”&#xff0c;存放一组“键值对”&#xff0c;内部元素按键排序&#xff08;默认是升序&#xff09;&#xff0c;类似一本按字母排序的字典。 unordered_map&#xff1a;也是…...

【vue】脚手架

一、使用脚手架创建项目 1.打开编辑器终端 2.输入命令vue create 项目名 3.选择自定义配置&#xff0c;选以下几种常用的配置项&#xff08;空格选中或删除&#xff09; 二、常规操作 进入项目&#xff1a;cd 项目名 返回&#xff1a;cd .. 运行项目:npm run serve 停止项目:ct…...

PaddleNLP框架训练模型:使用SwanLab教程

PaddleNLP 是一款基于飞桨深度学习框架的大语言模型(LLM)开发套件&#xff0c;支持在多种硬件上进行高效的大模型训练、无损压缩以及高性能推理。PaddleNLP 具备简单易用和性能极致的特点&#xff0c;致力于助力开发者实现高效的大模型产业级应用。 你可以使用PaddleNLP快速进行…...

单向循环链表C语言实现实现(全)

#include<stdio.h> #include<stdlib.h> #define TRUE 1 #define FASLE 0//定义宏标识判断是否成功 typedef struct Node {int data;struct Node* next; }Node;Node* InitList() {Node* list (Node*)malloc(sizeof(Node));list->data 0;//创建节点保存datalist…...

数据结构:ArrayList简单实现与常见操作实例详解

目录 1.顺序表概念 2.自己实现 1.准备工作 接口 MyArrayList的定义 2.具体接口实现 添加 判满 扩容 查找 获得pos位置的值 和 更改pos位置的值 判空 删除 得到数组长度 清空数组 打印 3.ArrayList 1.简介 2.使用 1.ArrayList的构造 无参构造 有参构造&a…...

C++之fmt库介绍和使用(1)

C之fmt库介绍与使用(1) Author: Once Day Date: 2025年5月12日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 …...

嵌入式自学第二十一天(5.14)

gdb逻辑调试器: gcc 调试&#xff0c;发行版 gcc -g 调试版本&#xff0c;体积大&#xff0c;有源码。 一般调试&#xff1a;gdb a.out b n.c:行数 &#xff1a;设置断点&#xff0c;运行到这个位置&#xff0c;程序暂停。&#xff08;可以直接加行数&#xff09; r运行 n执行下…...

位与运算

只有当除数是 2 的幂次方&#xff08;如 2、4、8、16...&#xff09;时&#xff0c;取模运算才可以转换为位运算。 int b 19;int a1 b % 16; // 传统取模运算int a2 b & 15; // 位运算替代取模printf("b %d\n", b);printf("b %% 8 %d\n",…...