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

PCL+Spigot服务器+python进行MC编程(使用Trae进行AI编程)---可以生成彩虹

1.安装PCL(网上有多个教程,此处不介绍,也可以绿色版免安装),

夸克网盘分享

PCL2启动器龙腾猫跃爱发电官网下载 - 第三方PCL2下载站

PCL2启动器下载_龙腾猫跃 - 爱发电官网

安装成功后我们选择1.18.2的版本,fabric版本可以使用最新的。

我之前安装地铁MTR模组时需要安装java,我安装的是jdk-17.0.16_windows-x64_bin.exe,有些模组不适配最新的java版本,用的是PCL 正式版 2.10.3\.minecraft\versions\1.18.2-Fabric 0.17.1\saves\鹤浦市v1.0

2.python_MC编程安装包中是针对1.18.2的版本

python环境我本地是anaconda的,在虚拟环境中安装mcpi,

pip install mcpi

运行D:\1workplace\2企业项目\我的世界\python_MC编程安装包\1.18.2中的spigot-1.18.2.jar即可启动local server。

修改目录下的eula.txt中eula=true

通过网盘分享的文件:python_MC编程安装包
链接: https://pan.baidu.com/s/1GTcyvG7YWbW4P0qL0S6JOQ?pwd=1234 提取码: 1234 

启动Spigot服务器(.jar文件的文件名可能不同)java -jar spigot-1.18.2.jar,或者直接双击spigot-1.18.2.jar

这样子本地服务器就起来了。

打开PCL的Plain Craft Launcher 2.exe(D:\1workplace\2企业项目\我的世界\PCL 正式版 2.10.3)

  • 启动Minecraft Java版并进入一个世界(单人/多人模式均可),我进的是多人模式

  • 如果是单人游戏,需要先开启局域网开放:

要看到***,joined the game

以及服务器但要有如下的显示:

打开Trae,打开文件夹,D:\1workplace\2企业项目\我的世界\python_MC编程安装包\MyAdventures,输入如下代码

from mcpi.minecraft import Minecrafttry:mc = Minecraft.create("localhost", 4711)# 获取玩家位置pos = mc.player.getPos()x, y, z = pos.x, pos.y, pos.z# 在玩家位置附近创建方块mc.setBlocks(x, y, z+3, x+5, y+5, z+8, 57)  # 57 是钻石块的IDprint("方块已创建在位置: ({}, {}, {})".format(x, y, z))except AttributeError as e:print(f"属性错误: {e}")print("请检查 mcpi 库的文档,确认正确的方法名来获取玩家位置。")
except Exception as e:print(f"发生错误: {e}")

如果显示没有MCPI,那就是要pip install mcpi,

在服务器端输入op cys,这样子玩家cys设置为管理者,则可以输入管理码,

会报错,

 File "d:\1workplace\2企业项目\我的世界\python_MC编 程安装包\MyAdventures\testMC.py", line 2, in <module>
    mc = Minecraft.create("localhost", 4711)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\cys2025\.conda\envs\stategrid\Lib\site-packages\mcpi\minecraft.py", line 376, in create
    return Minecraft(Connection(address, port))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\cys2025\.conda\envs\stategrid\Lib\site-packages\mcpi\connection.py", line 17, in __init__
    self.socket.connect((address, port))
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接

这个原因是RaspberryJuice没起得来,要把RaspberryJuice服务启动起来,可以这么操作:

netsh advfirewall firewall add rule name="MCPI" dir=in action=allow protocol=TCP localport=4711

然后重启服务器,java -jar spigot-1.18.2.jar或者运行Arun1.bat

要有如下界面,想办法把要把RaspberryJuice服务启动起来!!

造房子的代码如下:

''' 萌新小屋 1 '''
import mcpi.minecraft as minecraft
import mcpi.block as block
from math import *
mc = minecraft.Minecraft.create("localhost", 4711)origin_pos = mc.player.getTilePos()
# 5*6木制底板
mc.setBlocks(origin_pos.x - 1, origin_pos.y - 1, origin_pos.z - 1, origin_pos.x + 4, origin_pos.y - 1, origin_pos.z + 3, block.WOOD_PLANKS.id)# 墙壁
woodType = 1 # Spruce (up/down)
mc.setBlocks(origin_pos.x, origin_pos.y, origin_pos.z - 1, origin_pos.x, origin_pos.y + 2, origin_pos.z - 1, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y, origin_pos.z - 1, origin_pos.x + 3, origin_pos.y + 2, origin_pos.z - 1, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x, origin_pos.y, origin_pos.z + 3, origin_pos.x, origin_pos.y + 2, origin_pos.z + 3, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y, origin_pos.z + 3, origin_pos.x + 3, origin_pos.y + 2, origin_pos.z + 3, block.WOOD.id,woodType)
woodType = 0 # Oak (up/down)
mc.setBlocks(origin_pos.x - 1, origin_pos.y, origin_pos.z - 1, origin_pos.x - 1, origin_pos.y + 2, origin_pos.z - 1, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 4, origin_pos.y, origin_pos.z - 1, origin_pos.x + 4, origin_pos.y + 2, origin_pos.z - 1, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x - 1, origin_pos.y, origin_pos.z + 3, origin_pos.x - 1, origin_pos.y + 2, origin_pos.z + 3, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 4, origin_pos.y, origin_pos.z + 3, origin_pos.x + 4, origin_pos.y + 2, origin_pos.z + 3, block.WOOD.id,woodType)
woodType = 4 # Oak (east/west)
# mc.setBlocks(origin_pos.x + 1, origin_pos.y, origin_pos.z - 1, origin_pos.x + 2, origin_pos.y, origin_pos.z - 1, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 2, origin_pos.z - 1, origin_pos.x + 2, origin_pos.y + 2, origin_pos.z - 1, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 1, origin_pos.y, origin_pos.z + 3, origin_pos.x + 2, origin_pos.y, origin_pos.z + 3, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 2, origin_pos.z + 3, origin_pos.x + 2, origin_pos.y + 2, origin_pos.z + 3, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 4, origin_pos.z - 1, origin_pos.x + 2, origin_pos.y + 4, origin_pos.z - 1, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 4, origin_pos.z + 3, origin_pos.x + 2, origin_pos.y + 4, origin_pos.z + 3, block.WOOD.id,woodType)
woodType = 8 # Oak (north/south)
mc.setBlocks(origin_pos.x - 1, origin_pos.y, origin_pos.z, origin_pos.x - 1, origin_pos.y, origin_pos.z + 2, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x - 1, origin_pos.y + 2, origin_pos.z, origin_pos.x - 1, origin_pos.y + 2, origin_pos.z + 2, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 4, origin_pos.y, origin_pos.z, origin_pos.x + 4, origin_pos.y, origin_pos.z + 2, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 4, origin_pos.y + 2, origin_pos.z, origin_pos.x + 4, origin_pos.y + 2, origin_pos.z + 2, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y + 3, origin_pos.z - 1, origin_pos.x + 3, origin_pos.y + 3, origin_pos.z + 3, block.WOOD.id,woodType)
mc.setBlocks(origin_pos.x, origin_pos.y + 3, origin_pos.z - 1, origin_pos.x, origin_pos.y + 3, origin_pos.z + 3, block.WOOD.id,woodType)# 屋顶
stairType = 0 # Oak (Ascending east)
mc.setBlocks(origin_pos.x - 2, origin_pos.y + 2, origin_pos.z - 2, origin_pos.x - 2, origin_pos.y + 2, origin_pos.z + 4, block.STAIRS_WOOD.id, stairType)
mc.setBlocks(origin_pos.x - 1, origin_pos.y + 3, origin_pos.z - 2, origin_pos.x - 1, origin_pos.y + 3, origin_pos.z + 4, block.STAIRS_WOOD.id)
mc.setBlocks(origin_pos.x, origin_pos.y + 4, origin_pos.z - 2, origin_pos.x, origin_pos.y + 4, origin_pos.z + 4, block.STAIRS_WOOD.id)
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 5, origin_pos.z - 2, origin_pos.x + 1, origin_pos.y + 5, origin_pos.z + 4, block.STAIRS_WOOD.id)
stairType = 1 # Oak (Ascending west)
mc.setBlocks(origin_pos.x + 5, origin_pos.y + 2, origin_pos.z - 2, origin_pos.x + 5, origin_pos.y + 2, origin_pos.z + 4, block.STAIRS_WOOD.id, stairType)
mc.setBlocks(origin_pos.x + 4, origin_pos.y + 3, origin_pos.z - 2, origin_pos.x + 4, origin_pos.y + 3, origin_pos.z + 4, block.STAIRS_WOOD.id, stairType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y + 4, origin_pos.z - 2, origin_pos.x + 3, origin_pos.y + 4, origin_pos.z + 4, block.STAIRS_WOOD.id, stairType)
mc.setBlocks(origin_pos.x + 2, origin_pos.y + 5, origin_pos.z - 2, origin_pos.x + 2, origin_pos.y + 5, origin_pos.z + 4, block.STAIRS_WOOD.id, stairType)
stairType = 4 # Ascending east (upside down)
for i in range(2,5):j = 6 - imc.setBlock(origin_pos.x + i, origin_pos.y + j, origin_pos.z - 2, block.STAIRS_WOOD.id, stairType)mc.setBlock(origin_pos.x + i, origin_pos.y + j, origin_pos.z + 4, block.STAIRS_WOOD.id, stairType)
stairType = 5 # Ascending west (upside down)
for i in range(-1,2):j = i + 3mc.setBlock(origin_pos.x + i, origin_pos.y + j, origin_pos.z - 2, block.STAIRS_WOOD.id, stairType)mc.setBlock(origin_pos.x + i, origin_pos.y + j, origin_pos.z + 4, block.STAIRS_WOOD.id, stairType)
# 房顶
plankType = 3 # Jungle
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 4, origin_pos.z, origin_pos.x + 2, origin_pos.y + 4, origin_pos.z + 2, block.WOOD_PLANKS.id, plankType)
# 窗户 GLASS_PANE
mc.setBlocks(origin_pos.x - 1, origin_pos.y + 1, origin_pos.z, origin_pos.x - 1, origin_pos.y + 1, origin_pos.z + 2, block.GLASS.id)
mc.setBlocks(origin_pos.x + 4, origin_pos.y + 1, origin_pos.z, origin_pos.x + 4, origin_pos.y + 1, origin_pos.z + 2, block.GLASS.id)
# 门
mc.setBlocks(origin_pos.x + 1, origin_pos.y, origin_pos.z - 1, origin_pos.x + 2, origin_pos.y, origin_pos.z - 1, block.DOOR_WOOD.id, 0)

AI编程:提出如下prompt,构建20阶楼梯如下:

代码如下:

''' 萌新小屋 1 - 复杂二层房子 '''
import mcpi.minecraft as minecraft
import mcpi.block as block
from math import *
mc = minecraft.Minecraft.create("localhost", 4711)origin_pos = mc.player.getTilePos()
# 7*9木制底板 (扩展基础)
mc.setBlocks(origin_pos.x - 2, origin_pos.y - 1, origin_pos.z - 2, origin_pos.x + 5, origin_pos.y - 1, origin_pos.z + 4, block.WOOD_PLANKS.id)# 第一层墙壁
woodType = 1 # Spruce (up/down)
# 前墙
mc.setBlocks(origin_pos.x - 1, origin_pos.y, origin_pos.z - 2, origin_pos.x - 1, origin_pos.y + 3, origin_pos.z - 2, block.WOOD.id, woodType)
mc.setBlocks(origin_pos.x + 4, origin_pos.y, origin_pos.z - 2, origin_pos.x + 4, origin_pos.y + 3, origin_pos.z - 2, block.WOOD.id, woodType)
# 后墙
mc.setBlocks(origin_pos.x - 1, origin_pos.y, origin_pos.z + 4, origin_pos.x - 1, origin_pos.y + 3, origin_pos.z + 4, block.WOOD.id, woodType)
mc.setBlocks(origin_pos.x + 4, origin_pos.y, origin_pos.z + 4, origin_pos.x + 4, origin_pos.y + 3, origin_pos.z + 4, block.WOOD.id, woodType)
# 侧墙
mc.setBlocks(origin_pos.x, origin_pos.y, origin_pos.z - 2, origin_pos.x + 3, origin_pos.y + 3, origin_pos.z - 2, block.WOOD.id, woodType)
mc.setBlocks(origin_pos.x, origin_pos.y, origin_pos.z + 4, origin_pos.x + 3, origin_pos.y + 3, origin_pos.z + 4, block.WOOD.id, woodType)woodType = 0 # Oak (up/down)
# 前墙
mc.setBlocks(origin_pos.x, origin_pos.y, origin_pos.z - 2, origin_pos.x, origin_pos.y + 3, origin_pos.z - 2, block.WOOD.id, woodType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y, origin_pos.z - 2, origin_pos.x + 3, origin_pos.y + 3, origin_pos.z - 2, block.WOOD.id, woodType)
# 后墙
mc.setBlocks(origin_pos.x, origin_pos.y, origin_pos.z + 4, origin_pos.x, origin_pos.y + 3, origin_pos.z + 4, block.WOOD.id, woodType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y, origin_pos.z + 4, origin_pos.x + 3, origin_pos.y + 3, origin_pos.z + 4, block.WOOD.id, woodType)# 第二层地板
mc.setBlocks(origin_pos.x - 1, origin_pos.y + 3, origin_pos.z - 1, origin_pos.x + 4, origin_pos.y + 3, origin_pos.z + 3, block.WOOD_PLANKS.id, 1)  # Spruce planks# 第二层墙壁
woodType = 5 # Birch (up/down)
# 前墙
mc.setBlocks(origin_pos.x, origin_pos.y + 4, origin_pos.z - 1, origin_pos.x, origin_pos.y + 6, origin_pos.z - 1, block.WOOD.id, woodType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y + 4, origin_pos.z - 1, origin_pos.x + 3, origin_pos.y + 6, origin_pos.z - 1, block.WOOD.id, woodType)
# 后墙
mc.setBlocks(origin_pos.x, origin_pos.y + 4, origin_pos.z + 3, origin_pos.x, origin_pos.y + 6, origin_pos.z + 3, block.WOOD.id, woodType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y + 4, origin_pos.z + 3, origin_pos.x + 3, origin_pos.y + 6, origin_pos.z + 3, block.WOOD.id, woodType)
# 侧墙
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 4, origin_pos.z - 1, origin_pos.x + 2, origin_pos.y + 6, origin_pos.z - 1, block.WOOD.id, woodType)
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 4, origin_pos.z + 3, origin_pos.x + 2, origin_pos.y + 6, origin_pos.z + 3, block.WOOD.id, woodType)# 屋顶 (调整以适应新尺寸)
stairType = 0 # Oak (Ascending east)
mc.setBlocks(origin_pos.x - 3, origin_pos.y + 4, origin_pos.z - 3, origin_pos.x - 3, origin_pos.y + 4, origin_pos.z + 5, block.STAIRS_WOOD.id, stairType)
mc.setBlocks(origin_pos.x - 2, origin_pos.y + 5, origin_pos.z - 3, origin_pos.x - 2, origin_pos.y + 5, origin_pos.z + 5, block.STAIRS_WOOD.id)
mc.setBlocks(origin_pos.x - 1, origin_pos.y + 6, origin_pos.z - 3, origin_pos.x - 1, origin_pos.y + 6, origin_pos.z + 5, block.STAIRS_WOOD.id)
mc.setBlocks(origin_pos.x, origin_pos.y + 7, origin_pos.z - 3, origin_pos.x, origin_pos.y + 7, origin_pos.z + 5, block.STAIRS_WOOD.id)stairType = 1 # Oak (Ascending west)
mc.setBlocks(origin_pos.x + 6, origin_pos.y + 4, origin_pos.z - 3, origin_pos.x + 6, origin_pos.y + 4, origin_pos.z + 5, block.STAIRS_WOOD.id, stairType)
mc.setBlocks(origin_pos.x + 5, origin_pos.y + 5, origin_pos.z - 3, origin_pos.x + 5, origin_pos.y + 5, origin_pos.z + 5, block.STAIRS_WOOD.id, stairType)
mc.setBlocks(origin_pos.x + 4, origin_pos.y + 6, origin_pos.z - 3, origin_pos.x + 4, origin_pos.y + 6, origin_pos.z + 5, block.STAIRS_WOOD.id, stairType)
mc.setBlocks(origin_pos.x + 3, origin_pos.y + 7, origin_pos.z - 3, origin_pos.x + 3, origin_pos.y + 7, origin_pos.z + 5, block.STAIRS_WOOD.id, stairType)stairType = 4 # Ascending east (upside down)
for i in range(3, 6):j = 9 - imc.setBlock(origin_pos.x + i, origin_pos.y + j, origin_pos.z - 3, block.STAIRS_WOOD.id, stairType)mc.setBlock(origin_pos.x + i, origin_pos.y + j, origin_pos.z + 5, block.STAIRS_WOOD.id, stairType)stairType = 5 # Ascending west (upside down)
for i in range(-2, 1):j = i + 5mc.setBlock(origin_pos.x + i, origin_pos.y + j, origin_pos.z - 3, block.STAIRS_WOOD.id, stairType)mc.setBlock(origin_pos.x + i, origin_pos.y + j, origin_pos.z + 5, block.STAIRS_WOOD.id, stairType)# 房顶顶部
plankType = 3 # Jungle
mc.setBlocks(origin_pos.x + 1, origin_pos.y + 6, origin_pos.z - 1, origin_pos.x + 2, origin_pos.y + 6, origin_pos.z + 3, block.WOOD_PLANKS.id, plankType)# 窗户 GLASS_PANE
# 第一层窗户
mc.setBlocks(origin_pos.x - 1, origin_pos.y + 1, origin_pos.z - 1, origin_pos.x - 1, origin_pos.y + 2, origin_pos.z + 1, block.GLASS.id)
mc.setBlocks(origin_pos.x + 4, origin_pos.y + 1, origin_pos.z - 1, origin_pos.x + 4, origin_pos.y + 2, origin_pos.z + 1, block.GLASS.id)
# 第二层窗户
mc.setBlocks(origin_pos.x, origin_pos.y + 5, origin_pos.z - 1, origin_pos.x, origin_pos.y + 5, origin_pos.z - 1, block.GLASS.id)
mc.setBlocks(origin_pos.x + 3, origin_pos.y + 5, origin_pos.z - 1, origin_pos.x + 3, origin_pos.y + 5, origin_pos.z - 1, block.GLASS.id)
mc.setBlocks(origin_pos.x, origin_pos.y + 5, origin_pos.z + 3, origin_pos.x, origin_pos.y + 5, origin_pos.z + 3, block.GLASS.id)
mc.setBlocks(origin_pos.x + 3, origin_pos.y + 5, origin_pos.z + 3, origin_pos.x + 3, origin_pos.y + 5, origin_pos.z + 3, block.GLASS.id)# 门
mc.setBlocks(origin_pos.x + 1, origin_pos.y, origin_pos.z - 2, origin_pos.x + 2, origin_pos.y + 1, origin_pos.z - 2, block.DOOR_WOOD.id, 0)# 楼梯 (从第一层到第二层)
mc.setBlocks(origin_pos.x + 4, origin_pos.y, origin_pos.z, origin_pos.x + 4, origin_pos.y + 3, origin_pos.z, block.STAIRS_WOOD.id, 3)  # Oak stairs ascending south# 二楼阳台
mc.setBlocks(origin_pos.x + 4, origin_pos.y + 4, origin_pos.z - 1, origin_pos.x + 5, origin_pos.y + 4, origin_pos.z + 1, block.WOOD_PLANKS.id, 2)  # Birch planks
mc.setBlocks(origin_pos.x + 5, origin_pos.y + 1, origin_pos.z - 1, origin_pos.x + 5, origin_pos.y + 3, origin_pos.z + 1, block.FENCE.id)# 20阶楼梯
stair_x, stair_y, stair_z = origin_pos.x + 7, origin_pos.y, origin_pos.z
for i in range(20):mc.setBlock(stair_x + i, stair_y + i, stair_z, block.STAIRS_WOOD.id, 3)  # Oak stairs ascending south

以上都没有颜色,接下来是彩虹的建造:

Java 版本(1.12及以下)设计的旧版本中,方块是通过数字ID和数据值(如 35, 14)来标识的,但是Minecraft 1.18.2 使用了命名空间ID:从 Minecraft 1.13 开始,游戏引入了“扁平化”(Flattening),废除了数字ID,改用字符串ID(如 minecraft:red_wool)。mcpi 库发送的基于数字ID的指令对 1.18.2 的游戏核心是无效的。上述juicyraspberrypie更新到最新版本(也就是最后一个版本)juicyraspberrypie-1.18.1.jar,必须以字符串ID形式给出:

代码如下:

# 导入所需的库
import mcpi.minecraft as minecraft
from math import sin, pi# --- 现代化的 setBlock 函数 ---
# 既然我们知道插件支持字符串ID,我们就自己封装一个函数来发送它们
def set_block_modern(mc_conn, x, y, z, block_string):"""使用底层连接直接发送字符串ID来设置方块"""mc_conn.send(b"world.setBlock", int(x), int(y), int(z), block_string)# --- 主程序 ---
try:mc = minecraft.Minecraft.create()
except ConnectionRefusedError:print("错误:无法连接到 Minecraft。")exit()# 使用现代的字符串ID定义颜色,更清晰!
colors = ["minecraft:red_wool","minecraft:orange_wool","minecraft:yellow_wool","minecraft:lime_wool","minecraft:blue_wool","minecraft:light_blue_wool", # 用浅蓝代表靛色"minecraft:purple_wool"
]height = 60
width = 128try:pos = mc.player.getTilePos()x_start, y_start, z_start = pos.x, pos.y, pos.z + width // 2 + 15
except Exception as e:print(f"获取玩家位置失败: {e}")x_start, y_start, z_start = 0, 64, 0mc.postToChat("§a正在使用现代方法生成彩色虹!§r")for x in range(width):for color_index in range(len(colors)):rel_x = x - width // 2y = y_start + sin((x / width) * pi) * height + color_index# 获取当前循环的颜色字符串current_color_string = colors[len(colors) - 1 - color_index]# 使用我们自制的现代函数来放置方块!set_block_modern(mc.conn, x_start + rel_x, y, z_start, current_color_string)mc.postToChat("§b真正的彩色虹生成完毕!§r")

彩虹生成完毕!(腾讯元宝和Qwen都没有给出正确的code,最后是gemini2.5-pro给出的)

http://www.xdnf.cn/news/1328401.html

相关文章:

  • Hugging Face 核心组件介绍
  • 35岁对工作的一些感悟
  • Ansible 中的文件包含与导入机制
  • noetic版本/ubuntu20 通过moveit控制真实机械臂
  • 常见的对比学习的损失函数
  • DataAnalytics之Tool:Metabase的简介、安装和使用方法、案例应用之详细攻略
  • 数字ic后端设计从入门到精通14(含fusion compiler, tcl教学)半定制后端设计
  • plantsimulation知识点25.8.19 工件不在RGV中心怎么办?
  • c#联合halcon的基础教程(案例:亮度计算、角度计算和缺陷检测)(含halcon代码)
  • 力扣面试150(60/150)
  • 机器学习之决策树:从原理到实战(附泰坦尼克号预测任务)
  • Mac(七)右键新建文件的救世主 iRightMouse
  • 大数据MapReduce架构:分布式计算的经典范式
  • 20250819 强连通分量,边双总结
  • 从线性回归到神经网络到自注意力机制 —— 激活函数与参数的演进
  • 人工智能统一信息结构的挑战与前景
  • 比赛准备之环境配置
  • 进程间的通信1.(管道,信号)
  • LINUX 软件编程 -- 线程
  • 决策树(续)
  • LeetCode100-560和为K的子数组
  • 决策树1.1
  • 项目一系列-第5章 前后端快速开发
  • 项目管理.管理理念学习
  • react-quill-new富文本编辑器工具栏上传、粘贴截图、拖拽图片将base64改上传服务器再显示
  • LeetCode算法日记 - Day 16: 连续数组、矩阵区域和
  • 第4章 React状态管理基础
  • 算法训练营day56 图论⑥ 108. 109.冗余连接系列
  • 项目过程管理的重点是什么
  • Ansible 角色管理