云渗透实战手册:云API攻防之云服务端点侦查
在云计算环境中的渗透,与传统渗透相比,新增加了许多新的攻击面,同时也因为云计算的特点我们需要转变渗透的思维,用云计算的方式去思考云渗透。
基础知识
在云渗透开始之前,我们需要首先阐述标题中提到的云服务端点概念。首先我们需要知道,云api通常被视为云计算的一个基础特征,用户通过访问api去管理对应的云服务。
在实际的使用中,往往会将调用云api的过程封装成sdk,供开发者使用。而在sdk的基础上,还会封装成更方便用户使用的client。
使用client发起的请求和直接调用云api实际上是一致的,以阿里云为例
这里aliyun CLI会先去访问location-readonly确定Endpoint再发起请求,最终发起的请求和在云api平台上发起的请求是一致。
这里的Endpoint,阿里云称为服务地址。实际上在不同的云他有不同的称呼,比如在腾讯云则称为请求域名。在移动云被称为终端节点。在aws和azure都被称为service endpoints。
由于endpoint本身就会有很多种意思,而上述的称谓都有出现歧义的情况,所以这里,我推荐百度搜索“云服务 endpoint url”,百度ai很贴心的解释了这个:
为了方便阐述,这个endpoint在本文被称为云服务端点。
然后,我们需要知道渗透的云归属的类别。云计算通过可以简单地分成公有云、私有云、混合云、多云。
公有云即我们所熟知的阿里云、腾讯云、华为云等对公众开放的云服务,公有云不限制消费者为特定群体,并且消费者在不同的云服务层次上所承担的责任按照责任共担模型来进行划分。
私有云是专属于某个企业或者组织的云,消费者只能是该企业成员。也有企业通过租用第三方云供应商的基础设施来搭建私有云,这种特殊的私有云被称为托管私有云。托管私有云只是让渡了部分建设权给第三方云供应商,云的归属主体仍然是企业。
混合云是由至少两种云组成,通过混合云管理层屏蔽了不同云之间的差异,将云视为一个整体。
多云是集中管理多个不同的云,与混合云不同的是,多云的各个云是相对独立的。
当我们在渗透非公有云时,完全的自建云需要我们得知云api具体用法和云服务端点地址,如果云api的实现方式是依据某个公有云来制作或直接托管公有云的话,则需要得知 云服务端点 和 依据的公有云即可。
那么无论怎么样,侦查云服务端点都是必不可少的一环。下面将用一个实战经历来讲述这个过程。
实战过程
在公司的一次攻防演练的过程中,我通过web的一个任意文件读取漏洞获取到目标服务器的数据库帐号密码,恰好这是一个开放ssh的linux公有云服务器,经过尝试发现,数据库帐号密码同服务器密码,于是很顺利地利用ssh登录到服务器中。
经过文件的翻找,我在这台服务器中找到了有一个配置文件,其中包括了一组accesskey密钥和secretkey密钥以及一个自建的云服务端点地址。通过这一个配置文件发起了对非公有云环境的横向,下面是攻击路线的概览:
关于云服务端点前面已经介绍,对于具体的实施可以参考k8s的apiserver处理来自 kubectl的请求。
我们注意3号攻击路线,这里我们分了两个分支,主要看右边的攻击路线,如下图所示,我们通过翻找文件,拿到了一个包含一组AKSK密钥和一个私有S3 云服务端点的python脚本
在这个python脚本中,目标使用了一个的aws s3的sdk,大致操作是通过向云服务端点请求对s3云服务进行操作,获取bucket内的一个object里的文件,并且读取里面的内容。
亚马逊AWS(Amazon Web Services (AWS) )是国外的一个云服务供应商,类似于国内的阿里云,s3是aws 提供的一项对象存储产品服务,类似国内的oss云存储桶。一个存储桶内有多个bucket,每个bucket内存放object,object通常就是具体的文件,文件的内容则是object的key。对象存储的结构如同所示:
经过侦查,我在4号攻击路线中发现这个云服务端点指向的地址IP是国内的一个非公有云IDC机房。
那么按照云计算划分方式,我们可以认为,这可能是一个托管s3云服务的混合云或者采用s3 云api规范的私有云。
为了方便阐述,我们暂且认定这是个私有云。
像这样的云,如果直接拿着accesskey密钥和secretkey密钥去aws-cli里面进行操作而忽视云服务端点的话,是无效的,因为aws-cli默认请求的云服务端点是aws自身的云服务端点。具体参考aws的官方文档:
当我得知这是一个对象存储并且使用自定义云服务端点时,我首先想到的是使用华为云的obs browser准备读取存储桶中的内容,即攻击路线5。
华为云的obs browser这款对象存储管理工具可以通过可视化的方式去管理对象存储类的资产,并且兼容s3协议支持自定义云服务端点 。
遗憾的是,当我在obs browser上通过指定云服务端点和填入accesskey密钥和secretkey密钥去访问目标,结果发现只能列出存储桶中bucket的名称,其他的栏目都是空的,当我点击bucket试图查看里面的文件时,发现无法进行。
后来经过测试发现,obs browser对于非华为云存储桶的支持程度是不一样的,有些需要在云服务端点中手动拼接region才能进入,有些则可以直接进,因此利用华为云obs browser管理其他云供应商的存储桶,是一种方法,但不一定好用。
既然无法使用可视化工具进行管理,我又回到最开始的脚本文件中,我重新审视并决定用aws-cli工具进行操作,因为脚本文件中使用了aws s3的sdk,那么无论目标是否为s3公有云,使用aws-cli进行发送请求必然是符合 云api请求规范的。
通过 --云服务端点-url 参数附加上指定的云服务端点 地址,如果目标有SSL证书强制校验的话,则需要在请求时附加上证书文件,这里不存在强制校验,仅仅只是要求使用https协议,所以可以直接--no-verify去跳过证书警告
在这里,我找到了一个py文件,里面有其他云数据库的帐号密码,可以继续横向即攻击路线6。
除此之外,我还思考了一个问题,面对私有云,能否可以像公有云一样,直接操作其他的资源,比如说我用s3 的云服务端点去实现类似 aws iam list-user (列举当前云的iam用户)的操作呢?
经过尝试我发现是不可以的,也就是攻击路线7遇到的情况,大致类似于下面的操作:
这里我通过阿里云改变云服务端点来模拟私有云的请求。当我们请求操作阿里云的rds(云数据库),不附加云服务端点,会使用默认云服务端点,请求正常。
请求操作rds,但云服务端点换为ram(访问控制服务)的云服务端点,则会报错:
请求操作ram,指定云服务端点为ram的云服务端点则正常使用:
通过这个简单的例子,可以得知,不同的操作实际上是去向不同的云服务端点发起请求,并且不能混用。
还有另一个非通用结论是,解析云服务端点为IP后,再放入--endpoint中请求也是无法正常操作的,大家可以尝试一下。
因此,由于不存在一个云服务端点可以处理所有云服务的情况,我们需要去做枚举云服务端点的操作才能横向到其他的云服务。
通过更仔细地观察脚本文件,我发现存储桶对应的云服务端点叫ossxxx.xxx.com,那么我们可以去猜测可能存在的访问控制云服务端点、云服务器云服务端点等其他云产品的云服务端点。
但按照aws的命名规则,对象存储叫s3,而阿里云的命名规则才是存储桶是oss,也就是说这里的云服务端点的命名并不遵循AWS的叫法,而是按照创建者自己理解的命名去制作的云服务端点。
综合考虑下来,我认为这个命名大概率会取某个公有云的相同命名。
为了去嗅探这个云服务端点,我开始搜集了aws、google cloud、azure、阿里云、腾讯云、华为云六家对应云服务的缩写,最终做成了一个字典:
https://github.com/shadowabi/S-BlastingDictionary/blob/main/CloudService.txt
如下图所示:
在制作完字典后,我发现直接用cli配合字典利用批处理来批量发送请求的动静有点大而且不够方便。因此我觉得还可以进一步操作,在最小动静的前提下实现自动侦查。
经过思考,我发现利用dns查询的方式是最隐蔽的探测域名的方法,并且利用dns的srv记录,若存在则可以以非爆破的形式完成端口发现的任务。
这个方法来源于同为狼组的Esonhugh师傅 的k8spider项目:
https://github.com/Esonhugh/k8spider
确定了第一步是DNS侦查之后,还需要去确定侦查到的结果尽可能过滤无用数据,因此我在此基础上,做了一款专门的工具,工作流程如下图 :
这是最终的成果: https://github.com/wgpsec/EndpointSearch
题外话:EndpointSearch这个工具不仅仅可用于探测非公有云的云服务端点,受到Black Hat 2023议题:Evading Logging in the Cloud: Bypassing AWS CloudTrail的启发,他也可以用于侦查公有云的非生产云服务端点。
通过这个流程,我们仅仅使用了web探活程度的动静就搜集到可能的云服务端点。由于互联网上众多的网络资产测绘引擎在不断扫描资产,因此这个动静将会掩盖在互联网众多扫描行为中。
有了这个工具,我通过攻击路线8横向到其他的云服务中。
如何防御
这取决于创建者是如何理解和使用云计算的,通常情况下,公有云的云服务端点是公开的,因为他的消费者是来自互联网的所有人,因此不会去限制对云服务端点的访问。换言之,创建者需要根据自己的业务需求去考虑是否做边界准入的限制。
既然云服务端点的边界准入限制不是必然存在的,就需要有更多的防线,在纵深防御策略的指导下,需要假设防线失效后的后续防护手段。
不限制准入不代表不需要警惕陌生的请求者,因此针对异地访问的告警机制是很有必要的。
然而,告警并不会真正拦截恶意的攻击者,他只是尽快通知管理员进行研判的一个手段,在实际实践中,管理员不看告警或者没有及时看告警的,又或者攻击者绕过告警发起攻击,也是可能的。
我们再次假设前两道防线都已经失效了,此时攻击者取得的成果大小取决于攻击者使用的AKSK权限有多高,这就涉及一个IAM身份管理的安全构建问题,是否遵循最小特权原则和职责分工原则。举个反面例子,长期使用主账号的AKSK,泄漏之后攻击者直接是管理员,相当于域环境下域管帐号被控制。
除此之外,事后能否利用操作审计进行溯源追踪,发现问题根源(AK泄漏事件的源头),这也是云安全构建需要关注的问题。
同样的,区别于公有云,云api可能会存在安全漏洞,例如越权问题。
公有云有权责共担模型,可以使消费者只需要关注非常小的一部分安全,而选择私有云或混合云,就需要承当更多的安全责任。
参考链接
https://recon.cloud
https://www.cloudflare.com/zh-cn/learning/security/api/what-is-a-cloud-api/
https://www.cloudflare.com/zh-cn/learning/security/api/what-is-api- endpoint/
https://docs.aws.amazon.com/general/latest/gr/rande.html#global- endpoints
https://learn.microsoft.com/en-us/cli/azure/use-azure-cli-rest-command?tabs=bash
https://ecloud.10086.cn/op-help-center/doc/article/48179
https://cloud.tencent.com/document/product/1278/46697
https://next.api.aliyun.com/product/Rds
https://cloud.google.com/vpc/docs/private-service-connect?hl=zh-cn
https://aws.amazon.com/cn/blogs/china/announcing-aws-cloud-control-api/
https://help.aliyun.com/zh/oss/user-guide/access-to-oss-resources-from-ecs-instances-by-using-an-internal-endpoint-of-oss?spm=a2c4g.11174283.0.i2
https://github.com/Esonhugh/k8spider
https://github.com/shadowabi/S-BlastingDictionary/blob/main/CloudService.txt
https://github.com/wgpsec/EndpointSearch
本文作者:
shadowabi,雪诺安全攻防工程师,狼组安全团队成员,CSA大中华区云渗透测试工作组成员
相关文章:
云渗透实战手册:云API攻防之云服务端点侦查
在云计算环境中的渗透,与传统渗透相比,新增加了许多新的攻击面,同时也因为云计算的特点我们需要转变渗透的思维,用云计算的方式去思考云渗透。 基础知识 在云渗透开始之前,我们需要首先阐述标题中提到的云服务端点概…...
PHP 爬虫之使用 Curl库抓取淘宝商品列表数据网页的方法
使用 PHP 的 cURL 库来抓取淘宝商品列表数据网页需要谨慎,因为淘宝等电商平台通常会有反爬虫机制,以防止数据被滥用。然而,如果你只是出于学习目的,并且了解并遵守了淘宝的robots.txt文件和相关的使用条款,你可以尝试使…...
Python基础小知识问答系列-可迭代型变量赋值
1. 问题: 怎样简洁的把列表中的元素赋值给单个变量? 当需要列表中指定几个值时,剩余的变量都收集在一起,该怎么进行变量赋值? 当只需要列表中指定某几个值,其他值都忽略时,该怎么…...
主流 Canvas 库对比:Fabric.js、Konva.js 和 Pixi.js
在前端开发中,HTML5 Canvas 是一个强大的工具,可以用来创建图形、动画和各种视觉效果。为了简化和增强 Canvas 的使用,社区中出现了许多库。本文将对比三种主流的 Canvas 库:Fabric.js、Konva.js 和 Pixi.js,分析它们的…...
backbone是什么?
在深度学习中,特别是计算机视觉领域,"backbone"(骨干网络)是指用于提取特征的基础网络。它通常是卷积神经网络(CNN),其任务是从输入图像中提取高层次特征,这些特征然后被用…...
四十篇:内存巨擘对决:Redis与Memcached的深度剖析与多维对比
内存巨擘对决:Redis与Memcached的深度剖析与多维对比 1. 引言 在现代的系统架构中,内存数据库已经成为了信息处理的核心技术之一。这类数据库系统的高效性主要来源于其对数据的即时访问能力,这是因为数据直接存储在RAM中,而非传统…...
HTML5的多线程技术:Web Worker API
Web Workers API 是HTML5的一项技术,它允许在浏览器后台独立于主线程运行脚本,即允许进行多线程处理。这对于执行密集型计算任务特别有用,因为它可以防止这些任务阻塞用户界面,从而保持网页的响应性和交互性。Web Workers在自己的…...
Java | Leetcode Java题解之第206题反转链表
题目: 题解: class Solution {public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode newHead reverseList(head.next);head.next.next head;head.next null;return newHead;} }...
660错题
不能局部求导,局部洛必达...
GAMES104:04游戏引擎中的渲染系统1:游戏渲染基础-学习笔记
文章目录 概览:游戏引擎中的渲染系统四个课时概览 一,渲染管线流程二,了解GPUSIMD 和 SIMTGPU 架构CPU到GPU的数据传输GPU性能限制 三,可见性Renderable可渲染对象提高渲染效率Visibility Culling 可见性裁剪 四,纹理压…...
Visual Studio 中的键盘快捷方式
1. Visual Studio 中的键盘快捷方式 1.1. 可打印快捷方式备忘单 1.2. Visual Studio 的常用键盘快捷方式 本部分中的所有快捷方式都将全局应用(除非另有指定)。 “全局”上下文表示该快捷方式适用于 Visual Studio 中的任何工具窗口。 生成࿱…...
K8S中的某个容器突然出现内存和CPU占用过高的情况解决办法
当K8S中的某个容器突然出现内存和CPU占用过高的情况时,可以采取以下步骤进行处理: 观察和分析: 使用kubectl top pods命令查看集群中各个Pod的CPU和内存占用情况,找出占用资源高的Pod。使用kubectl describe pod <pod-name>…...
Pointnet++改进即插即用系列:全网首发GLSA聚合和表示全局和局部空间特征|即插即用,提升特征提取模块性能
简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入GLSA,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理论介…...
如何选择适合自己的虚拟化技术?
虚拟化技术已成为现代数据中心和云计算环境的核心组成部分。本文将帮助您了解如何选择适合自己需求的虚拟化技术,以实现更高的效率、资源利用率和灵活性。 理解虚拟化技术 首先,让我们了解虚拟化技术的基本概念。虚拟化允许将一个物理服务器划分为多个虚…...
Spring动态代理详解
一,动态代理 我发现Spring框架中的动态代理是一种非常强大的机制,它可以在运行时为接口或类创建动态代理,然后通过这些代理在方法调用前后添加额外的行为。在后续Spring的AOP(面向切面编程)支持中扮演了关键角色。 二…...
Java微服务架构中的消息总线设计
Java微服务架构中的消息总线设计 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨在Java微服务架构中的消息总线设计。 一、什么是消息总线&…...
51单片机项目-点亮第一个LED灯(涉及:进制转换表、创建项目、生成HEX文件、下载程序到单片机、二极管区分正负极)
目录 新建项目选择型号添加新文件到该项目设置字体和utf-8编码二极管如何区分正负极原理:CPU通过寄存器来控制硬件电路 用P2寄存器的值控制第一个灯亮进制转换编译查看P2寄存器的地址生成HEX文件把代码下载到单片机中下载程序到单片机 新建项目 选择型号 stc是中国…...
安全管理中心测评项
安全管理中心 系统管理 应对系统管理员进行身份鉴别,只允许其通过特定的命令或操作界面进行系统管理操作,并对这些操作进行审计; 应通过系统管理员对系统的资源和运行进行配置、控制和管理,包括用户身份、系统资源配置、系统加…...
word 转pdf 中图片不被压缩的方法
word 转pdf 中图片不被压缩的方法 法1: 调节word 选项中的图片格式为不压缩、高保真 法2: 1: word 中的图片尽可能使用高的分辨率,图片存为pnd或者 tif 格式(最高清) 2: 转化为pdf使用打印机器,参数如下…...
Springboot+Vue3开发学习笔记《1》
SpringbootVue3开发学习笔记《1》 博主正在学习SpringbootVue3开发,希望记录自己学习过程同时与广大网友共同学习讨论。 一、前置条件 博主所用版本: IDEA需要破解,破解工具链接容易挂,关注私聊我单发。 Spring Boot是Spring提…...
grpc编译
1、cmake下载 Download CMakehttps://cmake.org/download/cmake老版本下载 Index of /fileshttps://cmake.org/files/2、gprc源码下载,发现CMAKE报错 3、使用git下载 1)通过git打开一个目录:如下grpc将放在D盘src目录下 cd d: cd src2&am…...
echarts-wordcloud:打造个性化词云库
前言 在当今信息爆炸的时代,如何从海量的文本数据中提取有用的信息成为了一项重要的任务。词云作为一种直观、易于理解的数据可视化方式,被广泛应用于文本分析和可视化领域。本文将介绍一种基于 echarts-wordcloud 实现的词云库,通过其丰富的…...
VMware虚拟机安装CentOS7.9 Oracle 11.2.0.4 RAC+单节点RAC ADG
目录 一、参考资料 二、RAC环境配置清单 1.主机环境 2.共享存储 3.IP地址 4.虚拟机 三、系统参数配置 1. 配置网卡 1.1 配置NAT网卡 1.2 配置HostOnly网卡 2. 修改主机名 3. 配置/etc/hosts 4. 关闭防火墙 5. 关闭Selinux 6. 配置内核参数 7. 配置grid、oracle…...
iOS 视图实现渐变色背景
需求 目的是要实现视图的自定义的渐变背景色,实现一个能够随时使用的工具。 实现讨论 在 iOS 中,如果设置视图单一的背景色,是很简单的。可是,如果要设置渐变的背景色,该怎么实现呢?其实也没有很是麻烦&…...
hive命令和参数
一.命令行模式 hive命令行 hive -H 查询hive的可用参数 hive -e "" 在hive命令中直接执行简单的sql语句 在hive命令中执行sql文件 hive -f 文件地址 在hive命令中新建hive变量 hive --hivevar mykey"myvalue" beeline命令行 先得启动hiveserver…...
『MySQL 实战 45 讲』22 - MySQL 有哪些“饮鸩止渴”提高性能的方法?
MySQL 有哪些“饮鸩止渴”提高性能的方法? 需求:业务高峰期,生产环境的 MySQL 压力太大,没法正常响应,需要短期内、临时性地提升一些性能 短连接风暴 短连接模式:执行很少的 SQL 语句就断开,…...
创建kset
1、kset介绍 2、相关结构体和api介绍 2.1 struct kset 2.2 kset_create_and_add kset_create_and_addkset_createkset_registerkobject_add_internalkobject_add_internal2.3 kset_unregister kset_unregisterkobject_delkobject_put3、实验操作 #include<linux/module.…...
实战:基于Java的大数据处理与分析平台
实战:基于Java的大数据处理与分析平台 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何利用Java构建高效的大数据处理与分析平台。…...
构建安全稳定的应用:Spring Security 实用指南
前言 在现代 Web 应用程序中,安全性是至关重要的一个方面。Spring Security 作为一个功能强大且广泛使用的安全框架,为 Java 应用程序提供了全面的安全解决方案。本文将深入介绍 Spring Security 的基本概念、核心功能以及如何在应用程序中使用它来实现…...
嵌入式STM32F103项目实例可以按照以下步骤进行构建和实现
嵌入式STM32F103项目实例可以按照以下步骤进行构建和实现: 1. 项目概述 目标:演示STM32F103开发板的基本功能,通过LED闪烁来实现。硬件需求:STM32F103开发板、LED灯、杜邦线、USB转串口模块(可选,用于调试…...
2024最新Stable Diffusion【插件篇】:SD提示词智能生成插件教程!
前言 今天我们介绍几款可以自动生成提示词的插件。所谓智能生成提示词,就是我们只需要输入非常少量的关键字,插件就会根据关键词提示信息帮助我们生成一系列关键字或者句子作为提示词。下面来和我一起看看吧。 一. SD智能提示词工具 之前的文章中和大…...
彻底学会Gradle插件版本和Gradle版本及对应关系
看完这篇,保你彻底学会Gradle插件版本和Gradle版本及对应关系,超详细超全的对应关系表 需要知道Gradle插件版本和Gradle版本的对应关系,其实就是需要知道Gradle插件版本对应所需的gradle最低版本,详细对应关系如下表格࿰…...
p2p、分布式,区块链笔记: 通过libp2p的Kademlia网络协议实现kv-store
Kademlia 网络协议 Kademlia 是一种分布式哈希表协议和算法,用于构建去中心化的对等网络,核心思想是通过分布式的网络结构来实现高效的数据查找和存储。在这个学习项目里,Kademlia 作为 libp2p 中的 NetworkBehaviour的组成。 以下这些函数或…...
ShareSDK iOS端如何实现小红书分享
下载SDK 请登陆官网 ,找到SDK下载,勾选需要的平台下载 导入SDK (1)离线导入将上述下载到的SDK,直接将整个SDK资源文件拖进项目里,如下图: 并且勾选以下3个选项 在点击Finish,…...
算法day1 两数之和 两数相加 冒泡排序 快速排序
两数之和 最简单的思维方式肯定是去凑两个数,两个数的和是目标值就ok。这里两遍for循环解决。 两数相加 敲了一晚上哈哈,结果超过int范围捏,难受捏。 public class Test2 {public static void main(String[] args) { // ListNode l1 …...
Rust监控可观测性
可观测性 在监控章节的引言中,我们提到了老板、前端、后端眼中的监控是各不相同的,那么有没有办法将监控模型进行抽象、统一呢? 来简单分析一下: 业务指标实时展示,这是一个指标型的数据( metric )手机 APP 上传的数…...
SVN 的忽略(Ignore)和递归(Recursively)以及忽略部分
SVN中忽略大家经常用到,但总是似懂非懂,下面就详细展开说明一下忽略如何设置。 两个忽略 通常设置忽略都是文件夹和里面的文件都忽略。 设置忽略我们通常只需要鼠标右键点击忽略就可以了,如图: 第一个忽略用的最多,…...
vue3开发过程中遇到的一些问题记录
问题: vue3在使用 defineProps、defineEmits、defineExpose 时不需要import,但是 eslint会报错error defineProps is not defined no-undef 解决方法: 安装 vue-eslint-parser 插件,在 .eslintrc.js 文件中添加配置 parser: vue-e…...
Jedis、Lettuce、RedisTemplate连接中间件
jedis就像jdbc一样,用于两个端直接的连接。 1.创建Spring项目 这里不过多赘述... 2.导入连接工具jedis 在pom文件中导入jedis的依赖。 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&…...
【C++】继承(详解)
前言:今天我们正式的步入C进阶内容的学习了,当然了既然是进阶意味着学习难度的不断提升,各位一起努力呐。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质量C学习 👈 &#…...
网络io与select,poll,epoll
前言 网络 IO,会涉及到两个系统对象,一个是用户空间调用 IO 的进程或者线程,另一个是内核空间的内核系统,比如发生 IO 操作 read 时,它会经历两个阶段: 1. 等待数据准备就绪 2. 将数据从内核拷贝到进程或…...
【Linux】多线程(一万六千字)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 线程的概念 线程的理解(Linux系统为例) 在Linux系统里如何保证让正文部分的代码可以并发的去跑呢? 为什么要有多进程呢? 为…...
sh脚本笔记2
test条件测试 语法 条件测试语法说明语法1:test <测试表达式>这是利用test命令进行条件测试表达式的方法。test命令和“<测试表达式>”之间至少有一个空格语法2:[ <测试表达式> ]这是通过[](单中括号)进行条件…...
js替换对象里面的对象名称
data为数组,val为修改前的名称,name为修改后的名称 JSON.parse(JSON.stringify(data).replace(/val/g, name)) ; 1.替换data里面的对象tenantInfoRespVO名称替换成tenantInfoUpdateReqVO 2.替换语句: 代码可复制 let tenantInf…...
鸿蒙开发设备管理:【@ohos.settings (设置数据项名称)】
设置数据项名称 说明: 本模块首批接口从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 本模块提供设置数据项的访问功能相关接口的说明及示例。 导入模块 import settings from ohos.settings;settings.getUri…...
STM32之五:TIM定时器(2-通用定时器)
目录 通用定时器(TIM2~5)框图 1、 输入时钟源选择 2、 时基单元 3 、输入捕获:(IC—Input Capture) 3.1 输入捕获通道框图(TI1为例) 3.1.1 滤波器: 3.1.2 边沿检测器…...
【分布式系统】监控平台Zabbix对接grafana
以前两篇博客为基础 【分布式系统】监控平台Zabbix介绍与部署(命令截图版)-CSDN博客 【分布式系统】监控平台Zabbix自定义模版配置-CSDN博客 一.安装grafana并启动 添加一台服务器192.168.80.104 初始化操作 systemctl disable --now firewalld set…...
操作系统真象还原:编写硬盘驱动程序
第13章-编写硬盘驱动程序 这是一个网站有所有小节的代码实现,同时也包含了Bochs等文件 13.1 硬盘及分区表 13.1.1 创建从盘及获取安装的磁盘数 要实现文件系统,必须先有个磁盘介质,虽然咱们己经有个虚拟磁盘 hd60M.img,但它只…...
firewalld防火墙(二)
一:firewalld高级配置 1:关于iptables的知识 iptables 是Linux系统中传统的命令行防火墙管理工具,它基于内核的netfilter框架工作,用于配置和管理网络规则集,比如过滤(允许/拒绝)进出的数据包…...
Android-悬浮窗口
在Android系统中,如果应用需要弹出一个悬浮窗口,就需要申请一项特殊权限 <uses-permission android:name"android.permission.SYSTEM_ALERT_WINDOW"/>在Android O之前的系统中申请了该权限后,再给对应的window设置 WindowM…...
伯克利、斯坦福和CMU面向具身智能端到端操作联合发布开源通用机器人Policy,可支持多种机器人执行多种任务
不同于LLM或者MLLM那样用于上百亿甚至上千亿参数量的大模型,具身智能端到端大模型并不追求参数规模上的大,而是指其能吸收大量的数据,执行多种任务,并能具备一定的泛化能力,如笔者前博客里的RT1。目前该领域一个前沿工…...
Redis基础教程(四):redis键(key)
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...
[Redis]哨兵机制
哨兵机制概念 在传统主从复制机制中,会存在一些问题: 1. 主节点发生故障时,进行主备切换的过程是复杂的,需要人工参与,导致故障恢复时间无法保障。 2. 主节点可以将读压力分散出去,但写压力/存储压力是无法…...
必须掌握的Linux的九大命令
ifconfig 命令用于配置和查看网络接口的参数。 ping 命令用于测试主机之间的网络连通性。 telnet用于通过Telnet协议连接到远程主机。 telnet 127.0.0.1 8000 telnet example.com telnet example.com 8080 iostat 命令用于报告 CPU 统计信息和 I/O 设备负载。 iostat&…...
3d模型成组后可以弯曲嘛?---模大狮模型网
在展览3D模型设计领域,创新与技术不断推动着模型的复杂性和功能性。一个常见的问题是,当3D模型成组后,是否可以灵活地弯曲或调整形态?本文将深入探讨这一问题,并探索现代设计中的可能性与挑战。 一、灵活性与设计需求 3D模型在展…...
【基础篇】第1章 Elasticsearch 引言
1.1 Elasticsearch简介 1.1.1 基本概念 Elasticsearch,一个开源的分布式搜索引擎,以其强大的搜索能力和实时数据分析能力,在大数据时代脱颖而出。它基于Apache Lucene库构建,旨在提供高效、可扩展且易于使用的全文检索解决方案。…...
15、Spring系统-AOP
ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定到底是使用JDK动态代理还是CGLIB技术: 代理对象创建过程 JdkDynamicAopProxy 在构造JdkDynamicAopProxy对象时,会先拿到被代理对象自己所实现的接口,并且…...
算法——链表
一、重新排队——蓝桥杯3255 1.2题解 思路 对1-n的数字进行m次操作得到的结果(每次移动的是x) 代码 #include <iostream> using namespace std; int main() {// 请在此输入您的代码int n,m;cin>>n>>m;int i1;int a[m][3];for(i;i…...
微服务架构-分支微服务设计模式
微服务架构-分支微服务设计模式 这种模式是聚合器模式的扩展,允许同时调用两个微服务链 分支微服务设计模式是一种用于构建大型系统的微服务架构模式,其核心思想是 将复杂的业务逻辑拆解为多个小的、相互独立的子系统,每个子系统由一个或多…...
操作系统 - 输入/输出(I/O)管理
输入/输出(I/O)管理 考纲内容 I/O管理基础 设备:设备的基本概念,设备的分类,I/O接口 I/O控制方式:轮询方式,中断方式,DMA方式 I/O软件层次结构:中断处理程序,驱动程序,…...
巴新山体滑坡,恐超670人遇难
据央视新闻客户端消息,记者26日获悉,据联合国国际移民组织估算,巴布亚新几内亚大规模山体滑坡的死亡人数已超670人。巴布亚新几内亚恩加省一村庄24日发生了大规模山体滑坡,截至26日,灾难发生已超过48个小时,官方仍未公布具体伤亡人数。有媒体称滑坡对当地至少4000人造成了…...
echart扩展插件词云echarts-wordcloud
echart扩展插件词云echarts-wordcloud 一、效果图二、主要代码 一、效果图 二、主要代码 // 安装插件 npm i echarts-wordcloud -Simport * as echarts from echarts; import echarts-wordcloud; //下载插件echarts-wordcloud import wordcloudBg from /components/wordcloudB…...