uniapp使用蓝牙,usb,局域网,打印机打印
使用流程(支持安卓和iOS)
引入SDK
引入原生插件包地址如下
https://github.com/oldfive20250214/UniPrinterDemo
连接设备
安卓支持经典蓝牙、ble蓝牙、usb、局域网(参考API)
iOS支持ble蓝牙、局域网(参考API)
拼接模版
声明对象
const printer = uni.requireNativePlugin(“Printer”)
tspl模版用例1(打印常用指令)
printer.addSize({"width":75,"height":135});
printer.addCls();
printer.addDirection({"n":0,"m":0});
printer.addGap({"m":2,"n":0});
printer.addText({"x":50,"y":50,"font":"TSS16.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"16号字体"});
printer.addBox({"x":20,"y":20,"x_end":500,"y_end":800,"thickness":2,"radius":0});
printer.addText({"x":50,"y":100,"font":"TSS24.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"24号字体"});
printer.addText({"x":250,"y":50,"font":"TSS16.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"16号字体"});
printer.addReverse({"x":240,"y":40,"width":200,"height":40});
printer.addBar({"x":50,"y":200,"width":300,"height":3});
printer.addBarcode({"x":50,"y":210,"codeType":"128","height":100,"style":1,"rotation":0,"narrow":2,"wide":2,"alignment":0,"content":"test123456"});
printer.addQRCode({"x":50,"y":350,"eccLevel":"L","cellWidth":7,"mode":"M","rotate":0,"model":"M1","mask":"S3","content":"test123456"})
printer.addPrint({"m":1,"n":1});
tspl模版用例2(打印图片)
printer.addSize({"width":75,"height":135});
printer.addCls();
printer.addDirection({"n":0,"m":0});
printer.addGap({"m":2,"n":0});
printer.addBitmap({"x":0,"y":0,"mode":0,"base64":base64});
printer.addPrint({"m":1,"n":1});
cpcl模版用例1(打印常用指令)
printer.cpcl_addInit({"height":600,"copys":1});
printer.cpcl_addUnit("IN-DOTS");
printer.cpcl_addWidth(600);
printer.cpcl_setMag({"w":1,"h":1});
printer.cpcl_addText({"cmd":"T","font":"1","size":"0","x":50,"y":150,"data":"24*24字体"});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":200,"data":"32*32字体"});
printer.cpcl_setMag({"w":2,"h":1});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":250,"data":"48*24字体"});
printer.cpcl_setMag({"w":3,"h":3});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":300,"data":"72*72字体"});
printer.cpcl_setMag({"w":1,"h":1});
printer.cpcl_addLine({"startx":50,"starty":380,"endx":250,"endy":380,"width":5});
printer.cpcl_addBarcode({"isvb":false,"codetype":"128","width":1,"radio":"1","height":50,"x":50,"y":390,"data":"test123456"});
printer.cpcl_addQrcode({"isVQ":false,"codetype":"QR","x":50,"y":450,"m":2,"n":6,"data1":"M","data2":"A","data3":"test123456"});
printer.cpcl_form();
printer.cpcl_print();
cpcl模版用例2(打印图片)
printer.cpcl_addInit({"height":600,"copys":1});
printer.cpcl_addUnit("IN-DOTS");
printer.cpcl_addWidth(600);
printer.cpcl_addBitmap({"x":0,"y":0,"mode":0,"base64":base64});
printer.cpcl_form();
printer.cpcl_print();
esc模版用例1(打印常用指令)
printer.esc_addInit();
printer.esc_addAlign(1);
printer.esc_setCharSize({"width":0,"height":0});
printer.esc_addText("打印机居中\r\n");
printer.esc_addAlign(0);
printer.esc_setCharSize({"width":1,"height":1});
printer.esc_addText("打印机放大1-1\r\n");
printer.esc_setCharSize({"width":2,"height":2});
printer.esc_addText("打印机放大2-2\r\n");
printer.esc_setCharSize({"width":0,"height":0});
printer.esc_addLocation(10);
printer.esc_addText("text1");
printer.esc_addLocation(257);
printer.esc_addText("text2\r\n\r\n");
printer.esc_addText("width2条码宽度36mm\r\n");
printer.esc_barCode({"width":2,"height":80,"font":1,"loc":2,"m":73,"data":"width2abcd"});
printer.esc_addText("\r\n");
printer.esc_addText("width3条码宽度54mm\r\n");
printer.esc_barCode({"width":3,"height":80,"font":1,"loc":2,"m":73,"data":"width3abcd"});
printer.esc_addText("\r\n");
printer.esc_print();
printer.esc_addText("SIZE-1二维码宽度3mm\r\n");
printer.esc_qrCode({"size":1,"data":"test123456"});
printer.esc_addText("\r\nSIZE-2-二维码宽度4mm\r\n");
printer.esc_qrCode({"size":2,"data":"test123456"});
printer.esc_addText("\r\nSIZE-3-二维码宽度7mm\r\n");
printer.esc_qrCode({"size":3,"data":"test123456"});
printer.esc_addText("\r\nSIZE-4-二维码宽度10mm\r\n");
printer.esc_qrCode({"size":4,"data":"test123456"});
printer.esc_addText("\r\nSIZE-5-二维码宽度13mm\r\n");
printer.esc_qrCode({"size":5,"data":"test123456"});
printer.esc_addText("\r\nSIZE-6-二维码宽度16mm\r\n");
printer.esc_qrCode({"size":6,"data":"test123456"});
printer.esc_addText("\r\nSIZE-7-二维码宽度18mm\r\n");
printer.esc_qrCode({"size":7,"data":"test123456"});
printer.esc_addText("\r\nSIZE-8-二维码宽度21mm\r\n");
printer.esc_qrCode({"size":8,"data":"test123456"});
printer.esc_print();
printer.esc_feed(5);
esc模版用例2(打印图片)
printer.esc_addInit();
printer.esc_addBitmap({"mode":0,"base64":base64});
printer.esc_feed(5);
开始打印
安卓支持经典蓝牙、ble蓝牙、usb、局域网(参考API)
iOS支持ble蓝牙、局域网(参考API)
安卓经典蓝牙API
打开蓝牙
printer.spp_openBluetoothAdapter(result => {console.log(result);});
扫描蓝牙
printer.spp_startBluetoothDevicesDiscovery(result => {console.log(result);});
连接蓝牙
printer.spp_getConnectDevice({"address":adress},result => {
console.log(result);
});
蓝牙写入
拿到数据后再写入拿到的数据
//获取sdk生成的模版数据
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//将写入模版数据的base64
printer.spp_writeData({"base64":base64},result => {console.log(result);
});
拼接好模版后直接写入
printer.spp_writeKmPrinterData(result => {console.log(result);});
停止蓝牙扫描
printer.spp_stopBluetoothDevicesDiscovery(result => {console.log(result);});
关闭蓝牙
printer.spp_closeBluetoothAdapter(result => {console.log(result);});
蓝牙连接状态
printer.spp_isConnectClassicBT({"address":address},result => {console.log(result);});
低功耗蓝牙API(支持安卓和iOS)
打开蓝牙
printer.ble_openBluetoothAdapter(result => {console.log(result);});
扫描蓝牙
printer.ble_startBluetoothDevicesDiscovery(result => {console.log(result);});
连接蓝牙
printer.ble_getConnectDevice({"address":address},result => {console.log(result);});
蓝牙写入数据
拿到数据后再写入拿到的数据
//获取sdk生成的模版数据
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//将写入模版数据的base64
printer.ble_writeData({"base64":base64},result => {console.log(result);
});
停止蓝牙扫描
printer.ble_stopBluetoothDevicesDiscovery(result => {console.log(result);});
关闭蓝牙
printer.ble_closeBluetoothAdapter(result => {console.log(result);});
蓝牙连接状态
/** 状态对应以下数字* int STATE_CONNECTED = 2;* int STATE_CONNECTING = 1;* int STATE_DISCONNECTED = 0;* int STATE_DISCONNECTING = 3;*/
printer.ble_connectState(result => {console.log(result);});
安卓usb打印API
打开usb
printer.usb_openUsb(result => {console.log(result);});
扫描usb
printer.usb_starUsbDevicesDiscovery(result => {console.log(result);});
连接usb
printer.usb_usbConnect({"pid":pid,"vid":vid},result => {console.log(result);});
usb写入数据
拿到数据后再写入拿到的数据
//获取sdk生成的模版数据
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//将写入模版数据的base64
printer.usb_writeData({"base64":base64},result => {console.log(result);
});
usb读取数据
printer.usb_read(result => {console.log(result);});
关闭usb连接
printer.usb_close(result => {console.log(result);});
局域网打印API(支持安卓和iOS)
连接打印机
局域网打印需要手机和打印机在同一个局域网内,手机去连接打印机的ip地址和端口
printer.net_connectScoket({"host":host,"port":port},result => {console.log(result);
});
发送数据
拿到数据后再写入拿到的数据
//获取sdk生成的模版数据
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//将写入模版数据的base64
printer.net_writeData({"base64":base64},result => {console.log(result);
});
断开连接
printer.net_closeScoket(result => {console.log(result);});
TSPL指令API(支持安卓和iOS)
指定画板版宽高
/*** 设置打印模版宽高* @param width 打印宽度单位 mm int* @param height 打印高度 mm int* @return*/
addSize({"width":width,"height":height})
清空打印机画板缓存
/*** 清空打印机画板缓存* @return*/
addCls()
指定打印浓度
/*** 指定打印浓度* @param n 范围1-15 String* @return*/
addDensity(n)
指定打印速度
/*** 指定打印速度* @param n 范围1-8 String* @return*/
addSpeed(n)
生成文本指令
/*** 生成TEXT指令* @param x 起始x坐标 int* @param y 起始y坐标 int* @param font 字体名称 String* @param rotate 旋转角度 int* @param xMultiple x倍数 int* @param yMultiple y倍数 int* @param alignment 对齐方式 默认0 int* @param content 打印内容 String* @return*/addText({"x":x,"y":y,"font":font,"rotate":rotate,"xMultiple": xMultiple,"yMultiple":yMultiple,"alignment":alignment,"content":content})
生成文本块
/*** TEXT模块 支持换行* @param x 起始x坐标 int* @param y 起始y坐标 int* @param width 宽度,单位是点 int* @param height 高度,单位是点 int* @param font 字体名称 int* @param rotate 旋转角度 int* @param xMultiple x倍数 int* @param yMultiple y倍数 int* @param lineSpace 行间距 int* @param alignment 对齐 int* @param content 内容 String* @return*/
public KmPrinter crtiBlock({"x":x,"y":y,"width":width,"height":height,"font":font,"rotate":rotate,"xMultiple":xMultiple,"yMultiple":yMultiple,"lineSpace":lineSpace,"alignment":alignment,"content":content})
设置黑反打印区域
/*** 设置黑反打印区域* @param x 起点x* @param y 地点y* @param width 宽* @param height 高* @return*/
addReverse({int x, int y, int width, int height})
生成边框指令
/*** 生成边框指令* @param x x坐标起点* @param y y坐标起点* @param x_end x坐标结束点* @param y_end y坐标结束点* @param thickness 线条厚度* @param radius 边框弧度* @return*/
addBox({int x, int y, int x_end, int y_end, int thickness, int radius})
生成线条指令
/*** 生成线条指令* @param x 起始x坐标* @param y 起始y坐标* @param width 宽度* @param height 高度* @return*/
addBar({int x, int y, int width, int height})
生成条码指令
/*** 生成条码指令* @param x x坐标* @param y y坐标* @param codeType 条码类型* @param height 条码高度* @param style 文字样式* 0:不可见* 1:可见居左* 2:可见居中* 3:可见居右* @param rotation 旋转角度* @param narrow 窄条宽度* @param wide 宽条长度* @param alignment 对齐方式* @param content 条码内容* @return*/
addBarcode({int x, int y, String codeType, int height, int style, int rotation, int narrow, int wide, int alignment, String content})
生成二维码指令
/*** 生成二维码指令* @param x 起始x坐标* @param y 起始y坐标* @param eccLevel 纠错等级 {7,15,25,30}* @param cellWidth 码元宽度[1-10]* @param mode A:自动 M:手动* @param rotate 旋转角度* @param model 条码版本* M1:(默认),原始版本* M2:增强版* @param mask 掩膜版的种类,控制二维码的样式 S[0-8] 默认为S7* @param content 二维码内容* @return*/
addQRCode({int x, int y, String eccLevel, int cellWidth, String mode, int rotate, String model, String mask, String content})
生成图片指令
/*** 生成图片指令* @param x 图片x坐标* @param y 图片y坐标* @param mode 图片打印类型 0默认,正常打印 3,zlib压缩 4,zlib反白压缩* @param base64 图片的base64* @return*/
addBitmap({int x, int y, int mode, String base64})
打印模版指令
/*** 打印模版* @param m 指定要打印多少套标签。* @param n 指定每个特定标签集应该打印多少份副本* @return*/
addPrint({int m, int n})
CPCL指令API(支持安卓和iOS)
新建打印模版
/*** 新建打印模版* @param height 打印模版高度* @param copys 打印份数* @return*/
cpcl_addInit({int height, int copys})
设置单位
/*** 设置单位* @param unit IN-INCHES 度量单位英寸* IN-CENTIMETERS 度量单位厘米* IN-MILLIMETERS 度量单位毫米* IN-DOTS 度量单位为点* @return*/
cpcl_addUnit(String unit)
设置模版宽度
/*** 设置打印模版宽度* @param width* @return*/
cpcl_addWidth(int width)
设置字体宽高倍数
/*** 设置字体宽高倍数* @param w 宽度 1-3 1到3倍* @param h 高度 1-3 1到3倍* @return*/
cpcl_setMag({int w, int h})
文本指令
/*** 文本指令* @param cmd 指令类型 (逆时针旋转角度) 默认不旋转* TEXT(或T)* TEXT90(或 T90)* TEXT180(或 T180)* TEXT270(或 T270)* @param font 0-6(根据打印机文档设置)* @param size 0-6(根据打印机文档设置)* @param x x坐标* @param y y坐标* @param data 打印数据* @return*/
cpcl_addText({String cmd, String font, String size, int x, int y, String data})
线条指令
/*** 线条指令* @param startx 起点x坐标* @param starty 起点y坐标* @param endx 终点x坐标* @param endy 终点y坐标* @param width 线条宽度* @return*/
cpcl_addLine({int startx, int starty, int endx, int endy, int width})
黑反打印区域
/*** 黑反打印区域* @param startx 起点x坐标* @param starty 起点y坐标* @param endx 终点x坐标* @param endy 终点y坐标* @param width 黑反区域宽度* @return*/
cpcl_addReverse({int startx, int starty, int endx, int endy, int width})
条码指令
/*** 条码指令* @param isvb 0,1 默认0* BARCODE(B):横向打印条形码。* VBARCODE(VB) :纵向打印条形码* @param codetype 条码类型 默认 128* UPC-A: UPCA、UPCA2、UPCA5* UPC-E: UPCE、UPCE2、UPCE5* EAN/JAN-13: EAN13、EAN132、EAN135* EAN/JAN-8: EAN8、EAN82、EAN 85* Code 39: 39、39C、F39、F39C* Code 93/Ext.93: 93* Interleaved 2 of 5: I2OF5* Interleaved 2 of 5(带checksum):I2OF5C* German Post Code: I2OF5G* Code 128(自动): 128* UCC EAN 128: UCCEAN128* Codabar: CODABAR、CODABAR16* MSI/Plessy: MSI、MSI10、MSI1010、MSI1110* Postnet: POSTNET* FIM: FIM* @param width 窄条单位宽度 默认1* @param radio 宽条与窄条单位比例 默认1* @param height 条码单位高度* @param x x坐标* @param y y坐标* @param data 条码数据* @return*/
cpcl_addBarcode({boolean isvb, String codetype, int width, String radio, int height, int x, int y, String data})
二维码指令
/*** 二维码指令* @param isVQ isVQ 是否纵向* @param codetype 默认QR* @param x x坐标* @param y y坐标* @param m 选项是 1 或 2。QR Code Model 1 是原始ྟ规范,2增强版 默认1* @param n 模块单位宽度 1-32 默认6* @param data1 纠错等级 H/极高可高级别 Q/高可靠级别 M/标准级别 L/高密度级别 默认M* @param data2 字符模式 N数字 A字母数字 默认 A* @param data3 二维码内容 二维码内容* @return*/
cpcl_addQrcode({boolean isVQ, String codetype, int x, int y, int m, int n, String data1, String data2, String data3})
图片指令
/*** 图片指令* @param x* @param y* @param mode 0:CG指令模式 1:EG指令模式 3:CG指令压缩模式* @param base64 图片的base64 * @return*/
cpcl_addBitmap({int x, int y,int mode, String base64})
打印机在一页打印结束后切换至下一页顶部
/*** 打印机在一页打印结束后切换至下一页顶部* @return*/
cpcl_form()
打印模版
/*** 打印模版* @return*/
cpcl_print()
反向出纸打印模版
/*** 反向出纸打印模版* @return*/
cpcl_poprint()
ESC指令API(支持安卓和iOS)
打印机初始化
/*** 打印机初始化* @return*/
esc_addInit()
设置绝对位置
/*** 设置绝对位置* @param n 单位dot* @return*/
esc_addLocation(int n)
文本指令
/*** 文本指令* @param text* @return*/
esc_addText(String text)
对齐方式
/*** 对齐方式* @param align 0左对齐 1居中 2右对齐* @return*/
esc_addAlign(int align)
设置字符倍宽倍高
/*** 设置字符倍宽倍高* @param width 0-7 分别是1-8倍 默认0正常* @param height 0-7 分别是1-8倍 默认0正常* @return*/
esc_setCharSize({int width, int height})
打印条码
/*** 打印条码* @param width 条码宽度 2 ≤ n ≤ 6* @param height 条码高度 1 ≤ height ≤ 255* @param font 条码字体 0,48:标准 ASCII 码字符 (12 × 24) 1,49:压缩 ASCII 码字符 (9 × 17)* @param loc 条码位置显示0, 48:不打印 1, 49:条码上方 2, 50:条码下方 3, 51:条码上、下方都打印* @param m 条码类型 0 ≤ m ≤ 6 65 ≤ m ≤ 73 具体用法参考文档* @param data 条码数据* @return*/
esc_barCode({int width, int height, int font, int loc, int m, String data})
打印二维码
/*** 打印二维码* @param size 二维码大小 1-15* @param data 二维码数据* @return*/
esc_qrCode({int size, String data})
打印图片
/*** 打印图片* @param mode 默认0* @param base64 图片的base64* @return*/
esc_addBitmap({int mode, String base64})
打印并走纸多行
/*** 打印并走纸多行* @param lines 1-255 走纸的行数* @return*/
esc_feed(int lines)
打印并走纸一行
/*** 打印并走纸一行* @return*/
esc_print()
相关文章:
uniapp使用蓝牙,usb,局域网,打印机打印
使用流程(支持安卓和iOS) 引入SDK 引入原生插件包地址如下 https://github.com/oldfive20250214/UniPrinterDemo 连接设备 安卓支持经典蓝牙、ble蓝牙、usb、局域网(参考API) iOS支持ble蓝牙、局域网(参考API&…...
【计算机网络】Socket
Socket 是网络通信的核心技术之一,充当应用程序与网络协议栈之间的接口。 1. Socket 定义 Socket(套接字)是操作系统提供的 网络通信抽象层,允许应用程序通过标准接口(如 TCP/IP 或 UDP)进行数据传输。它…...
YOLO11改进-模块-引入多尺度小波池化变压器MWPT 通过结合小波变换、多尺度池化以及门控机制等技术解决多尺度、小目标、边缘模糊等问题
手势识别在人机交互等领域应用广泛,但面临手部姿态多变、环境因素干扰等挑战。深度学习发展促使基于注意力的模型兴起,Transformer 在自然语言处理和计算机视觉诸多任务表现出色,也被用于手势识别。不过,传统 Transformer 处理视觉…...
HTML + CSS 题目
1.说说你对盒子模型的理解? 一、是什么 对一个文档进行布局的时候,浏览器渲染引擎会根据标准之一的css基础盒模型,将所有元素表示为一个个矩形的盒子。 一个盒子由四个部分组成: content,padding,border,margin 下…...
clickhouse的优缺点
《ClickHouse的优缺点及成功案例分析》 当我们谈论数据库技术时,ClickHouse无疑是一个引人注目的名字。它是一种专为在线分析处理(OLAP)设计的列式数据库管理系统(DBMS),由俄罗斯的Yandex公司开发。随着大…...
kettle工具使用从入门到精通(一)
安装 可以从链接: 官网(下载链接在Pentaho.pdf文件里)或者网络上查找对应的版本安装 Kettle (PDI) 版本与 JDK 版本对应关系 Kettle (PDI) 版本支持的 JDK 版本备注PDI 9.x 及以上JDK 11 或更高版本推荐使用 OpenJDK 或 Oracle JDK 11。PDI 8.xJDK 8 …...
引领变革!北京爱悦诗科技有限公司荣获“GAS消费电子科创奖-产品创新奖”!
在2025年“GAS消费电子科创奖”评选中,北京爱悦诗科技有限公司提交的“aigo爱国者GS06”,在技术创新性、设计创新性、工艺创新性、智能化创新性及原创性五大维度均获得评委的高度认可,荣获“产品创新奖”。 这一奖项不仅是对爱悦诗在消费电子…...
【探商宝】大数据企业销售线索平台:销售型公司的战略转型引擎
一、市场现状与销售型公司的核心痛点 在数字经济高速发展的2025年,全球企业获客成本较五年前增长超过300%,而B2B销售线索的平均转化率仍徘徊在15%-20%之间。这一矛盾背后,折射出传统销售模式的三重困境: 数据孤岛导致决策滞后…...
机器学习在地图制图学中的应用
原文链接:https://www.tandfonline.com/doi/full/10.1080/15230406.2023.2295948#abstract CSDN/2025/Machine learning in cartography.pdf at main keykeywu2048/CSDN GitHub 核心内容 本文是《制图学与地理信息科学》特刊的扩展评论,系统探讨了机…...
Python Flask框架学习汇编
1、入门级: 《Python Flask Web 框架入门》 这篇博文条理清晰,由简入繁,案例丰富,分十五节详细讲解了Flask框架,强烈推荐! 《python的简单web框架flask【附例子】》 讲解的特别清楚,每一步都…...
C++20的简写函数模板
文章目录 简写函数模板的语法示例代码优点 C20引入了简写函数模板(Abbreviated Function Template),这是一种更简洁的函数模板声明方式,允许使用 auto或带有约束的 auto来代替显式的模板参数声明。 简写函数模板的语法 当在函数…...
【Python 数据结构 9.树】
我装作漠视一切,其实我在乎的太多,但我知道抓得越紧越容易失去 —— 25.3.6 一、树的基本概念 1.树的定义 树是n个结点的有限集合,n0时为空树。当n大于0的时候,满足如下两个条件: ① 有且仅有一个特定的结点ÿ…...
美团校招实习笔试历年真题与内推
美团第一场笔试时间在本周六晚19:00开启 想知道笔试考什么?来刷刷历年真题 👉点击https://my5353.com/Bo1c1历年真题开刷! −−−−−−−−−−−−−−−−−−−−−− 1⃣【26届转正实习】70%转正留用,提前锁定正式offer&…...
redis的淘汰策略
Redis 的淘汰策略(Eviction Policy)是指当 Redis 内存不足时,如何选择删除哪些数据来腾出空间。以下是 Redis 支持的几种淘汰策略,用通俗的话解释它们的特点: 1. noeviction(不淘汰) 特点&#…...
Linux中的TCP编程接口基本使用
TCP编程接口基本使用 本篇介绍 在UDP编程接口基本使用已经介绍过UDP编程相关的接口,本篇开始介绍TCP编程相关的接口。有了UDP编程的基础,理解TCP相关的接口会更加容易,下面将按照两个方向使用TCP编程接口: 基本使用TCP编程接口…...
javaweb:Maven、SpringBoot快速入门、HTTP协议
Maven Maven作用 介绍 Maven的坐标 依赖配置 依赖传递 排除依赖 依赖范围 生命周期 clean:清除编译文件 compile:生成编译文件 test:执行所有的单元测试方法(在pom.xml引入Junit单元测试依赖) package:…...
macOS常用网络管理配置命令
目录 **1. ifconfig:查看和配置网络接口****2. networksetup:管理系统网络配置****3. ping:测试网络连通性****4. traceroute:跟踪数据包路径****5. nslookup/dig:DNS 查询****6. netstat:查看网络连接和统…...
IntelliJ IDEA 中配置 Groovy
在 IntelliJ IDEA 中配置 Groovy 环境可以分为以下几个步骤 1. 安装 Groovy 插件 步骤: 打开 IntelliJ IDEA,进入菜单栏:File → Settings(Windows/Linux)或 IntelliJ IDEA → Preferences(Mac࿰…...
如何实现区域灰质体积、皮层厚度、低频振幅等影像学特征的病例-对照分析差异分析
在神经影像学研究中,病例-对照分析(case-control analysis)是一种常见的方法,用于比较患者组(cases)与健康对照组(controls)在脑结构和功能上的差异。本文介绍如何利用病例-对照分析…...
WordPress报502错误问题解决-php-fpm-84.service loaded failed failed LSB: starts php-fpm
文章目录 问题描述问题排查问题解决 问题描述 服务器环境: php:8.4MySQL:8.0Nginx:1.26.2 在访问站点时,一直报502,而两天前还能正常访问。 问题排查 导致502的问题很多,比如站点访问量太大…...
2025上软考下周开启报名!附报考流程和常见问题解答
报名时间 :3月10日开始报名(以当地报名时间为准) 考试时间 :2025年5月24日~27日(具体时间以准考证为准) 报名网址 :中国计算机技术职业资格网(https://bm.ruankao.org.cn/sign/welcome) 目前已…...
Process-based Self-Rewarding Language Models 论文简介
基于过程的自奖励语言模型:LLM优化的新范式 引言 大型语言模型(LLM)在多种任务中展现出了强大的能力,尤其是在使用人工标注的偏好数据进行训练时。然而,传统的自奖励范式在数学推理任务中存在局限性,甚至…...
Kotlin字符串操作在Android开发中的应用示例
Kotlin字符串操作在Android开发中的应用示例 引言 在Android开发中,Kotlin已经成为主流的编程语言,它提供了许多便捷的字符串操作功能。本文将结合一个具体的Kotlin示例程序,详细介绍Kotlin中字符串的创建、格式化和使用方法。 示例代码 以…...
自律 linux 第 36 天
昨天学习IO多路复用的时候使用的是select函数接口, select需要在应用层建立一个放套接字的表,然后传入内核中,再又内核将响应的套接字表传回应用层,这样耗费时间和资源,而且这个表只能存放最多1024个套接字,…...
《从零开始构建视频同步字幕播放软件》
《从零开始构建视频同步字幕播放软件》 字幕软件:数字时代的 “语言桥梁” 在全球化进程不断加速的今天,我们正处于一个信息爆炸且多元文化交融的时代。电影、剧集、公开课、短视频等各类视频内容,跨越了地域与国界的限制,在互联…...
VirtualBox虚拟机安装Mac OS启动后的系统设置
VirtualBox虚拟机安装Mac OS一直没装成功,本来想要放弃的,后来想着再试一次,于是在关机的情况,执行那几句设置: cd "E:\Program Files\Oracle\VirtualBox\" VBoxManage.exe modifyvm "MacOS" --c…...
JDK ZOOKEEPER KAFKA安装
JDK17下载安装 mkdir -p /usr/local/develop cd /usr/local/develop 将下载的包上传服务器指定路径 解压文件 tar -zxvf jdk-17.0.14_linux-x64_bin.tar.gz -C /usr/local/develop/ 修改文件夹名 mv /usr/local/develop/jdk-17.0.14 /usr/local/develop/java17 配置环境变量…...
测试用例详解
一、通用测试用例八要素 1、用例编号; 2、测试项目; 3、测试标题; 4、重要级别; 5、预置条件; 6、测试输入; 7、操作步骤; 8、预期输出 二、具体分析通…...
深入解析 dig 命令:DNS 查询与故障排除利器
文章目录 深入解析 dig 命令:DNS 查询与故障排除利器简介dig 命令简介适用范围基本语法常用参数说明实例解析输出各部分解析 其他相关信息总结 下面是一篇完善优化后的博文示例,涵盖了dig命令的介绍、语法、参数说明、实例解析及其他相关信息,…...
第18周:YOLOv5-C3模块实现
目录 前言 一、 前期准备 1. 设置GPU 2. 导入数据 3. 划分数据集 二、搭建包含C3模块的模型 1. 搭建模型 2. 查看模型详情 三、 训练模型 1. 编写训练函数 2. 编写测试函数 3. 正式训练 四、 结果可视化 1. Loss与Accuracy图 2. 模型评估 五、总结 前言 🍨 本文为…...
Note 12 R pro (MIUI 14.0.10) magisk方式 获取root教程
Note 12 R pro (MIUI 14.0.10) magisk方式 获取root教程 解锁BL 可以参考: https://blog.csdn.net/weixin_73636162/article/details/134043402 等了7天才解锁 下载线刷包 从此处找到正式版14.0.10版本的线刷包: https://web.vip.miui.com/page/i…...
Python 高级编程与实战:构建数据可视化应用
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发、API 设计、网络编程、异步IO、并发编程、设计模式与软件架构、性能优化与调试技巧、分布式系统、微服务架构、自动化测试框架以及 RESTf…...
Memory should not be managed manually(Code Smell)
If you manage memory manually, it’s your responsibility to delete all memory created with new, and to make sure it’s delete d once and only once. Ensuring this is done is error-prone, especially when your function can have early exit points. Fortunately…...
RK3588 安装ffmpeg6.1.2
在安装 ffmpeg 在 RK3588 开发板上时,你需要确保你的开发环境(例如 Ubuntu、Debian 或其他 Linux 发行版)已经设置好了交叉编译工具链,以便能够针对 RK3588 架构编译软件。以下是一些步骤和指导,帮助你安装 FFmpeg: 1. 安装依赖项 首先,确保你的系统上安装了所有必要的…...
从机器学习到生成式AI狂潮:AWS的AI征程从未停息
3月6日一早,国内AI圈被两件事刷屏了。一件是前一天深夜阿里通义千问发布的全新推理模型QwQ-32B,该模型凭借小得多的参数量,实现了与DeepSeek-R1相当的表现,并且在理论层面也区别于DeepSeek,证明了强化学习(…...
解构OpenManus
一、程序结构解读 1. 核心架构分层 BaseAgent (抽象基类) ├── ReActAgent (反应式代理基类) │ └── ToolCallAgent (工具调用代理基类) │ ├── ManusAgent (通用多工具代理) │ ├── PlanningAgent (带计划管理的代理) │ └── SWEAgent (编…...
springboot-bug
spring boot :3.2.6该版本不与mybatis框架兼容,所以使用该版本时,请注意JDBC框架,要不然你会疑问,明明自己映射是对的,实体类是对的,各种东西都配好了,但就是报错,这是因为SpringBoo…...
python文本处理python-docx库安装与使用
python-docx 是一个用于创建和更新 Microsoft Word (.docx) 文件的 Python 库。要开始使用 python-docx,首先需要安装该库,然后可以通过一些简单的示例来学习如何用它进行文本处理。 安装 python-docx 确保你的环境中已经安装了 Python 和 pip…...
C语言练习题--最长回文子串(错题)
题目描述 给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 输入格式 输入字符串s,保证s只包含小写字母,且1≤s.length≤3000。 输出格式 输出字符串s的最长回文子串。…...
wx122基于ssm+vue+uniapp的食堂线上预约点餐系统小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
Django 视图
Django 视图 引言 Django 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计。在 Django 中,视图是 Web 应用程序的核心,负责处理客户端请求并生成响应。本文将详细介绍 Django 视图的概念、作用以及如何使用视图来构建 Web 应用程序。 视图的概念 在 Dja…...
【DuodooTEKr 】多度科技 以开源之力,驱动企业数字化转型
多度科技 背景 / Background 在全球产业链重构与国内经济双循环的浪潮下,中国制造业与贸易企业正面临数字化升级的迫切需求。开源技术作为数字化转型的基石,不仅能打破技术壁垒、降低企业成本,更能通过协作创新加速产业智能化进程。多度科技以…...
基于SpringBoot实现旅游酒店平台功能一
一、前言介绍: 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高,旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求,旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上࿰…...
深度学习模型Transformer核心组件—自注意力机制
第一章:人工智能之不同数据类型及其特点梳理 第二章:自然语言处理(NLP):文本向量化从文字到数字的原理 第三章:循环神经网络RNN:理解 RNN的工作机制与应用场景(附代码) 第四章:循环神经网络RNN、LSTM以及GR…...
接口自动化测试实战
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 作为测试,你可能会对以下场景感到似曾相识:开发改好的 BUG 反复横跳;版本兼容逻辑多,修复一个 BUG 触发了更多 B…...
20250306-笔记-精读class CVRPEnv:step(self, selected)
文章目录 前言一、if self.time_step<4:控制时间步的递增判断是否在配送中心特定时间步的操作更新更新当前节点和已选择节点列表更新需求和负载更新访问标记更新负无穷掩码更新步骤状态,将更新后的状态同步到 self.step_state 二、使用步骤总结 前言 class CVRP…...
【免费】2000.1-2021.9上市公司仲裁数据
2000-2021年上市公司仲裁数据 1、时间:2000.1-2021.9 2、来源:裁判文书网 3、指标:公告日期、股票代码、股票简称、涉案类型、公司在案件中地位、案由、案件所涉及金额、判决情况、执行情况、币种 4、范围:上市公司 5、相关研…...
Spring Boot使用JDBC /JPA访问达梦数据库
Spring Boot 是一个广泛使用的 Java 框架,用于快速构建基于 Spring 的应用程序。对于达梦数据库(DMDB)的支持,Spring Boot 本身并没有直接内置对达梦数据库的集成,但你可以通过一些配置和依赖来支持达梦数据库。 以下…...
docker和kubectl客户端安装Linux
在现代软件开发和运维领域,Docker和Kubernetes已成为不可或缺的工具。Docker是一个开源的应用容器引擎,允许开发者打包应用及其依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或者Windows机器上。Kubernetes(简称K8s&…...
利用EasyCVR平台打造化工园区视频+AI智能化监控管理系统
化工园区作为化工产业的重要聚集地,其安全问题一直是社会关注的焦点。传统的人工监控方式效率低下且容易出现疏漏,已经难以满足日益增长的安全管理需求。 基于EasyCVR视频汇聚平台构建的化工园区视频AI智能化应用方案,能够有效解决这些问题&…...