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

ESP32(MicroPython) 网页控制五自由度机械臂

ESP32(MicroPython) 网页控制五自由度机械臂

本程序通过网页控制五自由度机械臂,驱动方案改用PCA9685。

代码如下

#导入Pin模块
from machine import Pin
import time
from machine import SoftI2C
from servo import Servos
import network
import socket#定义LED控制对象
led1=Pin(15,Pin.OUT,Pin.PULL_DOWN)
i2c=SoftI2C(sda=Pin(26),scl=Pin(27),freq=10000)
servos=Servos(i2c,address=0x40)#连接的WIFI账号和密码
ssid = " "
password = " "#舵机默认角度
servos.position(0,90)
servos.position(1,90)
servos.position(2,90)
servos.position(3,90)
servos.position(4,90)#WIFI连接
def wifi_connect():wlan=network.WLAN(network.STA_IF)  #STA模式wlan.active(True)  #激活if not wlan.isconnected():print("conneting to network...")wlan.connect(ssid,password)  #输入 WIFI 账号密码while not wlan.isconnected():led1.value(1)time.sleep_ms(300)led1.value(0)time.sleep_ms(300)led1.value(0)return Falseelse:led1.value(0)print("network information:", wlan.ifconfig())return Truea0=90
a1=90
a2=90
a3=90
a4=90
#网页数据
def web_page():global a0global a1global a2global a3global a4html = """<html>
<head><meta name="viewport" content="width=device-width, initial-scale=1"><style>.button{display: inline-block; background-color: #971080; border: none; border-radius: 4px; color: white; padding: 8px 15px; text-decoration: none; font-size: 20px; margin: 2px; cursor: pointer;}a:link {text-decoration:none;}a:visited {text-decoration:none;}a:hover {text-decoration:none;}a:active {text-decoration:none;} html {font-family: Arial;display: inline-block;margin: 0px auto;text-align: center;}h2 { font-size: 1.5rem; }p { font-size: 1.5rem; }.units { font-size: 1rem; }.dht-labels{font-size: 1rem;vertical-align:middle;padding-bottom: 7px;}</style>
</head>
<body><h2>ESP32 Servo Control</h2><p><a href="/?d0">Servo0: <strong>""" + str(a0) + """</strong></a></p><p><a href="/?b00"><button class="button">0</button></a><a href="/?b01"><button class="button">10</button></a><a href="/?b02"><button class="button">20</button></a><a href="/?b03"><button class="button">30</button></a><a href="/?b04"><button class="button">40</button></a><a href="/?b05"><button class="button">50</button></a><a href="/?b06"><button class="button">60</button></a><a href="/?b07"><button class="button">70</button></a><a href="/?b08"><button class="button">80</button></a><a href="/?b09"><button class="button">90</button></a><a href="/?b0a"><button class="button">100</button></a><a href="/?b0b"><button class="button">110</button></a><a href="/?b0c"><button class="button">120</button></a><a href="/?b0d"><button class="button">130</button></a><a href="/?b0e"><button class="button">140</button></a><a href="/?b0f"><button class="button">150</button></a><a href="/?b0g"><button class="button">160</button></a><a href="/?b0h"><button class="button">170</button></a><a href="/?b0i"><button class="button">180</button></a></p><p><a href="/?d1">Servo1: <strong>""" + str(a1) + """</strong></a></p><p><a href="/?b10"><button class="button">0</button></a><a href="/?b11"><button class="button">10</button></a><a href="/?b12"><button class="button">20</button></a><a href="/?b13"><button class="button">30</button></a><a href="/?b14"><button class="button">40</button></a><a href="/?b15"><button class="button">50</button></a><a href="/?b16"><button class="button">60</button></a><a href="/?b17"><button class="button">70</button></a><a href="/?b18"><button class="button">80</button></a><a href="/?b19"><button class="button">90</button></a><a href="/?b1a"><button class="button">100</button></a><a href="/?b1b"><button class="button">110</button></a><a href="/?b1c"><button class="button">120</button></a><a href="/?b1d"><button class="button">130</button></a><a href="/?b1e"><button class="button">140</button></a><a href="/?b1f"><button class="button">150</button></a><a href="/?b1g"><button class="button">160</button></a><a href="/?b1h"><button class="button">170</button></a><a href="/?b1i"><button class="button">180</button></a></p><p><a href="/?d2">Servo2: <strong>""" + str(a2) + """</strong></a></p><p><a href="/?b10"><button class="button">0</button></a><a href="/?b21"><button class="button">10</button></a><a href="/?b22"><button class="button">20</button></a><a href="/?b23"><button class="button">30</button></a><a href="/?b24"><button class="button">40</button></a><a href="/?b25"><button class="button">50</button></a><a href="/?b26"><button class="button">60</button></a><a href="/?b27"><button class="button">70</button></a><a href="/?b28"><button class="button">80</button></a><a href="/?b29"><button class="button">90</button></a><a href="/?b2a"><button class="button">100</button></a><a href="/?b2b"><button class="button">110</button></a><a href="/?b2c"><button class="button">120</button></a><a href="/?b2d"><button class="button">130</button></a><a href="/?b2e"><button class="button">140</button></a><a href="/?b2f"><button class="button">150</button></a><a href="/?b2g"><button class="button">160</button></a><a href="/?b2h"><button class="button">170</button></a><a href="/?b2i"><button class="button">180</button></a></p><p><a href="/?d3">Servo3: <strong>""" + str(a3) + """</strong></a></p><p><a href="/?b30"><button class="button">0</button></a><a href="/?b31"><button class="button">10</button></a><a href="/?b32"><button class="button">20</button></a><a href="/?b33"><button class="button">30</button></a><a href="/?b34"><button class="button">40</button></a><a href="/?b35"><button class="button">50</button></a><a href="/?b36"><button class="button">60</button></a><a href="/?b37"><button class="button">70</button></a><a href="/?b38"><button class="button">80</button></a><a href="/?b39"><button class="button">90</button></a><a href="/?b3a"><button class="button">100</button></a><a href="/?b3b"><button class="button">110</button></a><a href="/?b3c"><button class="button">120</button></a><a href="/?b3d"><button class="button">130</button></a><a href="/?b3e"><button class="button">140</button></a><a href="/?b3f"><button class="button">150</button></a><a href="/?b3g"><button class="button">160</button></a><a href="/?b3h"><button class="button">170</button></a><a href="/?b3i"><button class="button">180</button></a></p><p><a href="/?d4">Servo4: <strong>""" + str(a4) + """</strong></a></p><p><a href="/?b30"><button class="button">0</button></a><a href="/?b41"><button class="button">10</button></a><a href="/?b42"><button class="button">20</button></a><a href="/?b43"><button class="button">30</button></a><a href="/?b44"><button class="button">40</button></a><a href="/?b45"><button class="button">50</button></a><a href="/?b46"><button class="button">60</button></a><a href="/?b47"><button class="button">70</button></a><a href="/?b48"><button class="button">80</button></a><a href="/?b49"><button class="button">90</button></a><a href="/?b4a"><button class="button">100</button></a><a href="/?b4b"><button class="button">110</button></a><a href="/?b4c"><button class="button">120</button></a><a href="/?b4d"><button class="button">130</button></a><a href="/?b4e"><button class="button">140</button></a><a href="/?b4f"><button class="button">150</button></a><a href="/?b4g"><button class="button">160</button></a><a href="/?b4h"><button class="button">170</button></a><a href="/?b4i"><button class="button">180</button></a></p>
</body>
</html>"""return html#程序入口
if __name__=="__main__":wifi_connect()#SOCK_STREAM表示的是TCP协议,SOCK_DGRAM表示的是UDP协议my_socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)  #创建socket连接# 将socket对象绑定ip地址和端口号my_socket.bind(('', 80))# 相当于电话的开机 括号里的参数表示可以同时接收5个请求my_socket.listen(5)while True:try:    # 进入监听状态,等待别人链接过来,有两个返回值,#一个是对方的socket对象,一个是对方的ip以及端口client, addr = my_socket.accept()print('Got a connection from %s' % str(addr))# recv表示接收,括号里是最大接收字节request = client.recv(1024)request = str(request)print('Content = %s' % request)b00 = request.find('/?b00')b01 = request.find('/?b01')b02 = request.find('/?b02')b03 = request.find('/?b03')b04 = request.find('/?b04')b05 = request.find('/?b05')b06 = request.find('/?b06')b07 = request.find('/?b07')b08 = request.find('/?b08')b09 = request.find('/?b09')b0a = request.find('/?b0a')b0b = request.find('/?b0b')b0c = request.find('/?b0c')b0d = request.find('/?b0d')b0e = request.find('/?b0e')b0f = request.find('/?b0f')b0g = request.find('/?b0g')b0h = request.find('/?b0h')b0i = request.find('/?b0i')b10 = request.find('/?b10')b11 = request.find('/?b11')b12 = request.find('/?b12')b13 = request.find('/?b13')b14 = request.find('/?b14')b15 = request.find('/?b15')b16 = request.find('/?b16')b17 = request.find('/?b17')b18 = request.find('/?b18')b19 = request.find('/?b19')b1a = request.find('/?b1a')b1b = request.find('/?b1b')b1c = request.find('/?b1c')b1d = request.find('/?b1d')b1e = request.find('/?b1e')b1f = request.find('/?b1f')b1g = request.find('/?b1g')b1h = request.find('/?b1h')b1i = request.find('/?b1i')b20 = request.find('/?b10')b21 = request.find('/?b21')b22 = request.find('/?b22')b23 = request.find('/?b23')b24 = request.find('/?b24')b25 = request.find('/?b25')b26 = request.find('/?b26')b27 = request.find('/?b27')b28 = request.find('/?b28')b29 = request.find('/?b29')b2a = request.find('/?b2a')b2b = request.find('/?b2b')b2c = request.find('/?b2c')b2d = request.find('/?b2d')b2e = request.find('/?b2e')b2f = request.find('/?b2f')b2g = request.find('/?b2g')b2h = request.find('/?b2h')b2i = request.find('/?b2i')b30 = request.find('/?b30')b31 = request.find('/?b31')b32 = request.find('/?b32')b33 = request.find('/?b33')b34 = request.find('/?b34')b35 = request.find('/?b35')b36 = request.find('/?b36')b37 = request.find('/?b37')b38 = request.find('/?b38')b39 = request.find('/?b39')b3a = request.find('/?b3a')b3b = request.find('/?b3b')b3c = request.find('/?b3c')b3d = request.find('/?b3d')b3e = request.find('/?b3e')b3f = request.find('/?b3f')b3g = request.find('/?b3g')b3h = request.find('/?b3h')b3i = request.find('/?b3i')b40 = request.find('/?b40')b41 = request.find('/?b41')b42 = request.find('/?b42')b43 = request.find('/?b43')b44 = request.find('/?b44')b45 = request.find('/?b45')b46 = request.find('/?b46')b47 = request.find('/?b47')b48 = request.find('/?b48')b49 = request.find('/?b49')b4a = request.find('/?b4a')b4b = request.find('/?b4b')b4c = request.find('/?b4c')b4d = request.find('/?b4d')b4e = request.find('/?b4e')b4f = request.find('/?b4f')b4g = request.find('/?b4g')b4h = request.find('/?b4h')b4i = request.find('/?b4i')if b00 == 6:servos.position(0,0)a0=0if b11 == 6:servos.position(0,10)a0=10if b02 == 6:servos.position(0,20)a0=20if b03 == 6:servos.position(0,30)a0=30if b04 == 6:servos.position(0,40)a0=40if b05 == 6:servos.position(0,50)a0=50if b06 == 6:servos.position(0,60)a0=60if b07 == 6:servos.position(0,70)a0=70if b08 == 6:servos.position(0,80)a0=80if b09 == 6:servos.position(0,90)a0=90if b0a == 6:servos.position(0,100)a0=100if b0b == 6:servos.position(0,110)a0=110if b0c == 6:servos.position(0,120)a0=120if b0d == 6:servos.position(0,130)a0=130if b0e == 6:servos.position(0,140)a0=140if b0f == 6:servos.position(0,150)a0=150if b0g == 6:servos.position(0,160)a0=160if b0h == 6:servos.position(0,170)a0=170if b0i == 6:servos.position(0,180)a0=180if b10 == 6:servos.position(1,0)a1=0if b11 == 6:servos.position(1,10)a1=10if b12 == 6:servos.position(1,20)a1=20if b13 == 6:servos.position(1,30)a1=30if b14 == 6:servos.position(1,40)a1=40if b15 == 6:servos.position(1,50)a1=50if b16 == 6:servos.position(1,60)a1=60if b17 == 6:servos.position(1,70)a1=70if b18 == 6:servos.position(1,80)a1=80if b19 == 6:servos.position(1,90)a1=90if b1a == 6:servos.position(1,100)a1=100if b1b == 6:servos.position(1,110)a1=110if b1c == 6:servos.position(1,120)a1=120if b1d == 6:servos.position(1,130)a1=130if b1e == 6:servos.position(1,140)a1=140if b1f == 6:servos.position(1,150)a1=150if b1g == 6:servos.position(1,160)a1=160if b1h == 6:servos.position(1,170)a1=170if b1i == 6:servos.position(1,180)a1=180if b20 == 6:servos.position(2,0)a2=0if b21 == 6:servos.position(2,10)a2=10if b22 == 6:servos.position(2,20)a2=20if b23 == 6:servos.position(2,30)a2=30if b24 == 6:servos.position(2,40)a2=40if b25 == 6:servos.position(2,50)a2=50if b26 == 6:servos.position(2,60)a2=60if b27 == 6:servos.position(2,70)a2=70if b28 == 6:servos.position(2,80)a2=80if b29 == 6:servos.position(2,90)a2=90if b2a == 6:servos.position(2,100)a2=100if b2b == 6:servos.position(2,110)a2=110if b2c == 6:servos.position(2,120)a2=120if b2d == 6:servos.position(2,130)a2=130if b2e == 6:servos.position(2,140)a2=140if b2f == 6:servos.position(2,150)a2=150if b2g == 6:servos.position(2,160)a2=160if b2h == 6:servos.position(2,170)a2=170if b2i == 6:servos.position(2,180)a2=180if b30 == 6:servos.position(3,0)a3=0if b31 == 6:servos.position(3,10)a3=10if b32 == 6:servos.position(3,20)a3=20if b33 == 6:servos.position(3,30)a3=30if b34 == 6:servos.position(3,40)a3=40if b35 == 6:servos.position(3,50)a3=50if b36 == 6:servos.position(3,60)a3=60if b37 == 6:servos.position(3,70)a3=70if b38 == 6:servos.position(3,80)a3=80if b39 == 6:servos.position(3,90)a3=90if b3a == 6:servos.position(3,100)a3=100if b3b == 6:servos.position(3,110)a3=110if b3c == 6:servos.position(3,120)a3=120if b3d == 6:servos.position(3,130)a3=130if b3e == 6:servos.position(3,140)a3=140if b3f == 6:servos.position(3,150)a3=150if b3g == 6:servos.position(3,160)a3=160if b3h == 6:servos.position(3,170)a3=170if b3i == 6:servos.position(3,180)a3=180if b40 == 6:servos.position(4,0)a4=0if b41 == 6:servos.position(4,10)a4=10if b42 == 6:servos.position(4,20)a4=20if b43 == 6:servos.position(4,30)a4=30if b44 == 6:servos.position(4,40)a4=40if b45 == 6:servos.position(4,50)a4=50if b46 == 6:servos.position(4,60)a4=60if b47 == 6:servos.position(4,70)a4=70if b48 == 6:servos.position(4,80)a4=80if b49 == 6:servos.position(4,90)a4=90if b4a == 6:servos.position(4,100)a4=100if b4b == 6:servos.position(4,110)a4=110if b4c == 6:servos.position(4,120)a4=120if b4d == 6:servos.position(4,130)a4=130if b4e == 6:servos.position(4,140)a4=140if b4f == 6:servos.position(4,150)a4=150if b4g == 6:servos.position(4,160)a4=160if b4h == 6:servos.position(4,170)a4=170if b4i == 6:servos.position(4,180)a4=180    response = web_page()client.send('HTTP/1.1 200 OK\n')client.send('Content-Type: text/html\n')client.send('Connection: close\n\n')client.sendall(response)client.close()except:pass

相关文章:

ESP32(MicroPython) 网页控制五自由度机械臂

ESP32&#xff08;MicroPython&#xff09; 网页控制五自由度机械臂 本程序通过网页控制五自由度机械臂&#xff0c;驱动方案改用PCA9685。 代码如下 #导入Pin模块 from machine import Pin import time from machine import SoftI2C from servo import Servos import networ…...

前端笔记_OAuth规则机制下实现个人站点接入qq三方登录

文章目录 ⭐前言⭐qq三方登录流程&#x1f496;qq互联中心创建网页应用&#x1f496;配置回调地址redirect_uri&#x1f496;流程分析 ⭐思路分解⭐技术选型实现&#x1f496;技术选型&#xff1a;&#x1f496;实现 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本…...

huggingface新作品:快速和简便的训练模型

AutoTrain Advanced是一个用于训练和部署最先进的机器学习模型的工具。它旨在提供更快速、更简便的方式来进行模型训练和部署。 安装 您可以通过PIP安装AutoTrain-Advanced的Python包。请注意&#xff0c;为了使AutoTrain Advanced正常工作&#xff0c;您将需要python > 3.…...

利用鸿鹄优化共享储能的SCADA 系统功能,赋能用户数据自助分析

摘要 本文主要介绍了共享储能的 SCADA 系统大数据架构&#xff0c;以及如何利用鸿鹄来更好的优化 SCADA 系统功能&#xff0c;如何为用户进行数据自助分析赋能。 1、共享储能介绍 说到共享储能&#xff0c;可能不少朋友比较陌生&#xff0c;下面我们简单介绍一下共享储能的价值…...

noSQL语句练习

Redis练习题 string list hash结构中&#xff0c;每个至少完成5个命令&#xff0c;包含插入 修改 删除 查询&#xff0c;list 和hash还需要增加遍历的操作命令 1、 string类型数据的命令操作&#xff1a; &#xff08;1&#xff09; 设置键值&#xff1a; 127.0.0.1:63…...

Spring:Bean生命周期

Bean 生命周期生命周期 Bean 生命周期是 bean 对象从创建到销毁的整个过程。 简单的 Bean 生命周期的过程: 1.实例化(调用构造方法对 bean 进行实例化) 2.依赖注入(调用 set 方法对 bean 进行赋值) 3.初始化(手动配置 xml 文件中 bean 标签的 init-method 属性值,来指…...

Vue自定义指令

需求1&#xff1a;定义一个v-big指令&#xff0c;和v-text功能类似&#xff0c;但会把绑定的数值放大10倍。 需求2&#xff1a;定义一个v-fbind指令&#xff0c;和v-bind功能类似&#xff0c;但可以让其所绑定的input元素默认获取焦点。 自定义指令函数式v-big&#xff1a; &l…...

SpringBoot+JWT实现单点登录解决方案

一、什么是单点登录? 单点登录是一种统一认证和授权机制&#xff0c;指在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的系统&#xff0c;不需要重新登录验证。 单点登录一般用于互相授信的系统&#xff0c;实现单一位置登录&#xff0c;其他信任的…...

中国国债发行数据集(2002-2023)

国债是由国家发行的债券&#xff0c;由于国债的发行主体是国家&#xff0c;所以它具有最高的信用度&#xff0c;被公认为是最安全的投资工具。国债按照交易市场的不同分为三类&#xff0c;即银行间市场国债、交易所市场国债和柜台市场国债&#xff1b;按照交易方式的不同分为三…...

曲师大2023大一新生排位赛-C.String题解

C.String 题目描述 众所周知&#xff0c;许师哥精通字符串。 一天&#xff0c;许师哥意外的获得了一个字符串&#xff0c;但他发现这个字符串并不是一个回文串&#xff0c;因此他非常生气。于是他决定从这个字符串中删除若干个字符使得 剩余的字符串为一个回文串。 回想回文串…...

Linux Ubuntu安装RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…...

什么是测试用例?如何设计?

在学习或者实际的测试工作中经常都会提到“测试用例”这个词&#xff0c;没错&#xff0c;测试用例是测试工作的核心&#xff0c;不管要做的是什么样的测试&#xff0c;在真正动手执行测试之前&#xff0c;我们都需要先根据软件需求来设计测试用例&#xff0c;之后再依据设计好…...

Maven —— 项目管理工具

前言 在这篇文章中&#xff0c;荔枝会介绍如何在项目工程中借助Maven的力量来开发&#xff0c;主要涉及Maven的下载安装、环境变量的配置、IDEA中的Maven的路径配置和信息修改以及通过Maven来快速构建项目。希望能对需要配置的小伙伴们有帮助哈哈哈哈~~~ 文章目录 前言 一、初…...

Ubuntu 命令行编辑文件后如何保存退出

在 Ubuntu 命令行中编辑文件后&#xff0c;可以使用以下步骤保存并退出&#xff1a; 按下键盘上的 Ctrl 键和 X 键组合&#xff0c;以退出编辑模式。如果文件已更改&#xff0c;你将看到提示&#xff0c;询问是否保存更改。按下 Y 键来确认保存更改&#xff0c;或按下 N 键取消…...

AHB协议理解

从小父亲就教育我&#xff0c;做一个对社会有用的人&#xff01; 目录 Chapter1 AHB Block Diagram Ginput signal lnput signals Output Signal Chapter3 Transfers AHB接口Overview Chapter6 Data Buses HWDATA HRDATA Chapter1 Introduction AHB: Advanced High-performanc…...

【UE5 多人联机教程】01-创建主界面

目录 工程地址 步骤 参考链接 工程地址 GitHub - UE4-Maple/C_MP_Lobby: 多人大厅教程项目 步骤 1. 先新建一个工程 2. 将下载的工程中的Plugins目录拷贝到自己新建的工程下 3. 打开工程&#xff0c;新建一个游戏实例 这里命名为“GI_Main” 在项目设置中设置游戏实例类为…...

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 五)

Styles装饰器&#xff1a;定义组件重用样式 如果每个组件的样式都需要单独设置&#xff0c;在开发过程中会出现大量代码在进行重复样式设置&#xff0c;虽然可以复制粘贴&#xff0c;但为了代码简洁性和后续方便维护&#xff0c;我们推出了可以提炼公共样式进行复用的装饰器St…...

React(3)

1.案例选项卡 import React, { Component } from reactexport default class App extends Component {state{tabList:[{id:1,text:"电影"},{id:2,text:"影院"},{id:3,text:"我的"}]}render() {return (<div><ul>{this.state.tabList…...

LangChain大型语言模型(LLM)应用开发(三):Chains

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…...

FPGA——点亮led灯

文章目录 一、实验环境二、实验任务三、实验过程3.1 编写verliog程序3.2 引脚配置 四、仿真4.1 仿真代码4.2仿真结果 五、实验结果六、总结 一、实验环境 quartus18.1 vscode Cyclone IV开发板 二、实验任务 每间隔1S实现led灯的亮灭&#xff0c;实现流水灯的效果。 三、实…...

React 第五十二节 Router中 useResolvedPath使用详解和注意事项示例

前言 useResolvedPath 是 React Router v6 提供的一个实用钩子&#xff0c;用于解析给定路径为完整路径对象。 它根据当前路由上下文解析相对路径&#xff0c;生成包含 pathname、search 和 hash 的完整路径对象。 一、useResolvedPath 核心用途 路径解析&#xff1a;将相对…...

JVM 内存溢出 详解

内存溢出 内存溢出指的是内存中某一块区域的使用量超过了允许使用的最大值&#xff0c;从而使用内存时因空间不足而失败&#xff0c;虚拟机一般会抛出指定的错误。 在Java虚拟机中&#xff0c;只有程序计数器不会出现内存溢出的情况&#xff0c;因为每个线程的程序计数器只保…...

基于LLaMA-Factory和Easy Dataset的Qwen3微调实战:从数据准备到LoRA微调推理评估的全流程指南

随着开源大模型如 LLaMA、Qwen 和 Baichuan 的广泛应用&#xff0c;其基于通用数据的训练方式在特定下游任务和垂直领域中的表现仍存在提升空间&#xff0c;因此衍生出针对具体场景的微调训练需求。这些训练涵盖预训练&#xff08;PT&#xff09;、指令微调&#xff08;SFT&…...

《前端面试题:CSS的display属性》

CSS display属性完全指南&#xff1a;深入理解布局核心属性 掌握display属性是CSS布局的基石&#xff0c;也是前端面试必考知识点 一、display属性概述&#xff1a;布局的核心控制 display属性是CSS中最重要、最基础的属性之一&#xff0c;它决定了元素在页面上的渲染方式和布…...

Next.js+prisma开发一

1.初始化Next.js项目 #按版本安装 npx create-next-app13.4.5 如果最新版本 执行&#xff1a;npx create-next-applatest2. 安装Prima和客户端 npm install prisma --save-dev npm install prisma/client3.初始化Prisma&#xff0c;以SQLit举例 # 初始化 Prisma 并配置 SQLi…...

LlamaIndex 工作流简介以及基础工作流

什么是工作流&#xff1f; 工作流是一种由事件驱动、基于步骤的应用程序执行流程控制方式。 你的应用程序被划分为多个称为“步骤&#xff08;Steps&#xff09;”的部分&#xff0c;这些步骤由“事件&#xff08;Events&#xff09;”触发&#xff0c;并且它们自身也会发出事…...

【机试题解法笔记】寻找最大价值的矿堆

题目 给你一个由 0(空地)、1(银矿)、2(金矿) 组成的的地图&#xff0c;矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。 假设银矿价值 1&#xff0c;金矿价值 2&#xff0c;请你找出地图中最大价值的矿堆并输出该矿堆的价值。 输入描述 地图元素信…...

[论文阅读] 软件工程 | 如何挖掘可解释性需求?三种方法的深度对比研究

如何挖掘可解释性需求&#xff1f;三种方法的深度对比研究 研究背景&#xff1a;当软件变复杂&#xff0c;我们需要“说明书” 想象你买了一台智能家电&#xff0c;却发现它的运行逻辑完全看不懂&#xff0c;按钮按下后毫无反应&#xff0c;故障时也不提示原因——这就是现代…...

ASP.NET Core 中间件深度解析:构建灵活高效的请求处理管道

在现代Web应用开发中&#xff0c;请求处理管道的设计和实现至关重要。ASP.NET Core通过其中间件(Middleware)系统提供了一种高度灵活、可扩展的方式来构建请求处理管道。本文将全面深入地探讨ASP.NET Core中间件的概念、工作原理、实现方式以及最佳实践&#xff0c;帮助开发者掌…...

AI编程规范失控?三大策略用Cursor Rules精准约束

​在 AI 编程时代,如何让助手精准理解您的项目规范?当团队协作时,如何确保每位开发者生成的代码风格统一?Cursor Rules 正是您需要的终极解决方案——它如同一位永不疲倦的架构师,通过预设规则控制 AI 的每一次代码生成、重构与补全行为。 本教程将带您深入 Cursor Rules…...