SAP ABAP ZPL打印

前言

本文用于简单介绍在SAP中使用ZPL语言进行打印的开发步骤,由于对ZPL语言并不是很熟悉,所以ZPL相关的部分并不会很深入,主要介绍在SAP端如何动态填充ZPL内容及预览、打印。


什么是ZPL

ZPL是斑马条码打印机工业型号用的编程语言。利用这些编程语言,编辑好一个打印的指令集,发送给条码打印机,条码打印机就会把ZPL所绘制的标签打印出来。

ZPL语言代码片段:

^XA^FX Top section with logo, name and address.
^CF0,60
^FO50,50^GB100,100,100^FS
^FO75,75^FR^GB100,100,100^FS
^FO93,93^GB40,40,40^FS
^FO220,50^FDIntershipping, Inc.^FS
^CF0,30
^FO220,115^FD1000 Shipping Lane^FS
^FO220,155^FDShelbyville TN 38102^FS
^FO220,195^FDUnited States (USA)^FS
^FO50,250^GB700,3,3^FS^FX Second section with recipient address and permit information.
^CFA,30
^FO50,300^FDJohn Doe^FS
^FO50,340^FD100 Main Street^FS
^FO50,380^FDSpringfield TN 39021^FS
^FO50,420^FDUnited States (USA)^FS
^CFA,15
^FO600,300^GB150,150,3^FS
^FO638,340^FDPermit^FS
^FO638,390^FD123456^FS
^FO50,500^GB700,3,3^FS^FX Third section with bar code.
^BY5,2,270
^FO100,550^BC^FD12345678^FS^FX Fourth section (the two boxes on the bottom).
^FO50,900^GB700,250,3^FS
^FO400,900^GB3,250,3^FS
^CF0,40
^FO100,960^FDCtr. X34B-1^FS
^FO100,1010^FDREF1 F00B47^FS
^FO100,1060^FDREF2 BL4H8^FS
^CF0,190
^FO470,955^FDCA^FS^XZ

上面这段ZPL代码所输出的图形如下所示:

下面是ZPL预览的官方网站,通过该网站可以快速的根据ZPL代码,预览实际输出的条码样式

Labelary Online ZPL Viewer

同时该网站也提供了标准的公有的API供外部调用:

其中postman的测试用例有四个,将测试的json文件下载出来导入postman后,即可自行测试执行效果,后续在SAP端实现ZPL预览的效果就是调用的该API来实现的:

关于ZPL的更多信息可以参考下面这篇博客,或者访问官方文档:

斑马打印机ZPL语言编程实战_zpl指令-CSDN博客

ZPL 命令信息和详细信息 (zebra.cn)


如何生成ZPL语言 

对于不熟悉ZPL语言的开发者,我们需要借助Zebra Desiner工具来生成ZPL代码。

下载地址:ZebraDesigner 3 Software Support & Downloads | Zebra

安装好Zebra Desiner之后,打开软件,新建标签,借助左侧的工具,我们可以快速的画出一个想要的标签模板:

点击上方的打印按钮:

勾选打印至文件按钮,再点击打印,即可将标签对应的ZPL语言代码下载至本地: 

将文本中的ZPL代码粘贴至在线预览网站,可以看到被解析为我们所绘制的标签图形


SAP中开发步骤

注:或许有其他更好的方式来实现在SAP中调用ZPL打印,本文方式仅是一种解决方案。

跟我们平时所做的smartforms,adobe forms打印相同,我们都需要通过变量来传参,所以我们要做的是,通过Zebra Designer调整好标签内容的样式及位置之后,将其中需要用变量替换的内容,用占位符来代替,然后通过ABAP代码来替换掉其中的占位符,再将替换后的内容进行打印或者预览即可,下面做一个demo来演示完整的开发步骤:

1.用占位符替换ZPL代码中的固定值:

此处将原本的固定值2A01,2100替换为占位符 %PLANT% 和 %LOCATION%

注:条形码可以按照替换值的方式正常替换,但是二维码的大小会根据内容长短而变化,如果要保证二维码大小固定,应该只能通过补空格等方式来保证内容长度一致,即可保证二维码大小一致,实际上通过各种Desiner生成的二维码其实是可以固定大小的,即使内容长度不一致,原理大概是将二维码转成图片再通过Z64或者其他编码去加密生成的,SAP端尚不知道有什么好办法来实现这种效果。

2.将替换后的ZPL代码上传至SAP:

使用SO10长本文来存储ZPL代码是一个不错的选择,为了区分属于自开发的内容,我们最好创建自定义的文本ID。

2.1 SE75创建文本ID

2.2 SO10保存ZPL代码 

3.使用ABAP代码读取并替换内容 

首先使用READ_TEXT读取上一步存储的ZPL代码,然后用 REPLACE ALL OCCURRENCE 关键字将占位符替换为根据实际业务取出来的值。

*&---------------------------------------------------------------------*
*& Form frm_get_zpl
*&---------------------------------------------------------------------*
*& Get ZPL code and replace the value
*&---------------------------------------------------------------------*
FORM frm_get_zpl .DATA:lt_tline     TYPE text_line_tab,lt_tline_ret TYPE text_line_tab,lv_string    TYPE string.CALL FUNCTION 'READ_TEXT'EXPORTING
*     CLIENT                  = SY-MANDTid                      = 'ZDEM'language                = sy-languname                    = 'ZDEMO_ZPL'object                  = 'TEXT'
*     ARCHIVE_HANDLE          = 0
*     LOCAL_CAT               = ' '
*   IMPORTING
*     HEADER                  =
*     OLD_LINE_COUNTER        =TABLESlines                   = lt_tlineEXCEPTIONSid                      = 1language                = 2name                    = 3not_found               = 4object                  = 5reference_check         = 6wrong_access_to_archive = 7OTHERS                  = 8.IF sy-subrc <> 0.
*   Implement suitable error handling hereMESSAGE ID sy-msgidTYPE sy-msgtyNUMBER sy-msgnoWITH sy-msgv1sy-msgv2sy-msgv3sy-msgv4.RETURN.ENDIF.* Convert to stringCALL FUNCTION 'IDMX_DI_TLINE_INTO_STRING'EXPORTINGit_tline       = lt_tlineIMPORTINGev_text_string = lv_string.REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN lv_string WITH space.REPLACE ALL OCCURRENCES OF '%PLANT%'    IN lv_string WITH '2A01'.REPLACE ALL OCCURRENCES OF '%LOCATION%' IN lv_string WITH '2100'.gv_zpl_string = lv_string.ENDFORM.
4.打印至打印设备

使用NEW-PAGE PRINT ONNEW-PAGE PRINT OFF+WRITE来实现将ZPL代码输出至打印设备,打印结果可以在SP01中看到。

打印设备根据实际情况选择,如果需要SAP中配置Zebra打印机,可以参考下面的这篇博客。

Zebra 标签打印 – SAP 中的配置 |SAP 博客

*&---------------------------------------------------------------------*
*& Form frm_print_zpl
*&---------------------------------------------------------------------*
*& Print ZPL to SP01
*&---------------------------------------------------------------------*
FORM frm_print_zpl .DATA:lt_string     TYPE STANDARD TABLE OF string,lv_zpl_string TYPE string.NEW-PAGE PRINT ONDESTINATION 'PM42'COPIES 1LIST NAME spaceLIST DATASET spaceIMMEDIATELY 'X'KEEP IN SPOOL 'X'LINE-COUNT 60000LINE-SIZE 1023LAYOUT 'G_RAW'NEW LIST IDENTIFICATION 'X'SAP COVER PAGE spaceNO DIALOGNO-TITLENO-HEADING.lv_zpl_string = gv_zpl_string.REPLACE ALL OCCURRENCES OF '^FS' IN lv_zpl_string WITH |^FS{ cl_abap_char_utilities=>cr_lf }|.SPLIT lv_zpl_string AT cl_abap_char_utilities=>cr_lf INTO TABLE lt_string.LOOP AT lt_string INTO DATA(ls_string).WRITE:ls_string.NEW-LINE.ENDLOOP.NEW-PAGE PRINT OFF.MESSAGE 'ZPL Printed' TYPE 'S'.
ENDFORM.

5.在SAP端预览ZPL输出内容 

通常我们要知道ZPL的输出内容,需要将ZPL代码放在在线预览网站中才能知道效果,这样很不方便,所以我们可以调用他们提供的公有API,以下是调用测试代码:

5.1 获取ZPL二进制内容
*&---------------------------------------------------------------------*
*& Form frm_preview_zpl
*&---------------------------------------------------------------------*
*& Preview ZPL as PDF
*&---------------------------------------------------------------------*
FORM frm_preview_zpl .DATA:lv_request_data TYPE string,lv_responsex    TYPE xstring,lo_http_client  TYPE REF TO if_http_client,lv_url          TYPE string,lv_response     TYPE string,lv_msgty        TYPE c,lv_msgtx        TYPE string.lv_url = 'http://api.labelary.com/v1/printers/8dpmm/labels/7x8/' .CALL METHOD cl_http_client=>create_by_urlEXPORTINGurl                = lv_urlIMPORTINGclient             = lo_http_clientEXCEPTIONSargument_not_found = 1plugin_not_active  = 2internal_error     = 3OTHERS             = 4.IF sy-subrc <> 0.
*   Implement suitable error handling hereMESSAGE ID sy-msgidTYPE sy-msgtyNUMBER sy-msgnoWITH sy-msgv1sy-msgv2sy-msgv3sy-msgv4.EXIT.ENDIF.* Set header to get pdflo_http_client->request->set_header_field(name  = 'Accept'value = 'application/pdf').* Set content-typelo_http_client->request->set_content_type(content_type = 'application/x-www-form-urlencoded').* Content of ZPL request datalv_request_data = gv_zpl_string.* Set request bodylo_http_client->request->set_cdata( data = lv_request_data ).* Set request methodlo_http_client->request->set_method( 'POST' ).* Send requestlo_http_client->send(EXCEPTIONShttp_communication_failure = 1http_invalid_state = 2).IF sy-subrc <> 0.lo_http_client->get_last_error( IMPORTING message = lv_msgtx ).MESSAGE lv_msgtx TYPE 'S' DISPLAY LIKE 'E'.RETURN.ENDIF.* Receive response dataCALL METHOD lo_http_client->receiveEXCEPTIONShttp_communication_failure = 1http_invalid_state         = 2http_processing_failed     = 3.IF sy-subrc <> 0 .lo_http_client->get_last_error( IMPORTING message = lv_msgtx ).MESSAGE lv_msgtx TYPE 'S' DISPLAY LIKE 'E'.RETURN.ENDIF.* Get response bodylv_responsex = lo_http_client->response->get_data( ).* Convert XSTRING to BinaryCALL FUNCTION 'SCMS_XSTRING_TO_BINARY'EXPORTINGbuffer     = lv_responsexTABLESbinary_tab = gt_pdf_binary.CALL SCREEN 9000.
ENDFORM.
5.2 将二进制内容在SAP屏幕容器中展示
*&---------------------------------------------------------------------*
*& Form frm_display_pdf
*&---------------------------------------------------------------------*
*& Show PDF
*&---------------------------------------------------------------------*
FORM frm_display_pdf .
* Create container objectCREATE OBJECT go_pdf_containerEXPORTINGcontainer_name = 'PDF'.* Creare pdf objectCREATE OBJECT go_pdf_objectEXPORTINGparent = go_pdf_container.* Load PDF binary dataCALL METHOD go_pdf_object->load_dataEXPORTINGtype                   = 'application'subtype                = 'pdf'IMPORTINGassigned_url           = gv_pdf_urlCHANGINGdata_table             = gt_pdf_binaryEXCEPTIONSdp_invalid_parameter   = 1dp_error_general       = 2cntl_error             = 3html_syntax_notcorrect = 4OTHERS                 = 5.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.RETURN.ENDIF.CALL METHOD go_pdf_object->show_dataEXPORTINGurl      = gv_pdf_urlin_place = abap_true.
ENDFORM.

输出效果:

SAP端显示PDF的实现可以参考Jerry老师的这篇文章:

如何在 SAPGUI 里显示上传到 ABAP 服务器的 PDF 文件_abap屏幕加载pdf文件-CSDN博客


完整测试代码

ZPL代码:
^XA
~TA000
~JSN
^LT0
^MNW
^MTT
^PON
^PMN
^LH0,0
^JMA
^PR6,6
~SD15
^JUS
^LRN
^CI27
^PA0,1,1,0
^XZ
^XA
^MMT
^PW900
^LL600
^LS0
^FT119,162^A0N,42,43^FH\^CI28^FDHello ABAP^FS^CI27
^FT119,215^A0N,42,43^FH\^CI28^FDHello DeveloperMrMeng^FS^CI27
^BY2,3,61^FT119,308^BCN,,Y,N
^FH\^FD>;123456789012^FS
^FO382,247^GB454,239,2^FS
^FO385,300^GB452,0,2^FS
^FO607,250^GB0,237,2^FS
^FT160,482^BQN,2,5
^FH\^FDLA,123456789012^FS
^FT445,292^A0N,42,43^FH\^CI28^FDPlant^FS^CI27
^FT646,292^A0N,42,43^FH\^CI28^FDLocation^FS^CI27
^FT452,397^A0N,42,43^FH\^CI28^FD%PLANT%^FS^CI27
^FT684,397^A0N,42,43^FH\^CI28^FD%LOCATION%^FS^CI27
^LRY^FO717,101^GB120,0,120^FS^LRN
^LRY^FO691,74^GB120,0,120^FS^LRN
^PQ1,0,1,Y
^XZ
ABAP代码:
*&---------------------------------------------------------------------*
*& Report ZPRTEST_ZPL_DEMO
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zprtest_zpl_demo.DATA:gv_zpl_string    TYPE string,gt_pdf_binary    TYPE STANDARD TABLE OF raw255,gv_ok_code       TYPE sy-ucomm,go_pdf_object    TYPE REF TO cl_gui_html_viewer,go_pdf_container TYPE REF TO cl_gui_custom_container,gv_pdf_url       TYPE char255.PARAMETERS:p_print RADIOBUTTON GROUP gp1 DEFAULT 'X',p_prev  RADIOBUTTON GROUP gp1.INITIALIZATION.%_p_print_%_app_%-text = 'Print'.%_p_prev_%_app_%-text  = 'Preview'.START-OF-SELECTION.
* Get ZPL code and replace valuePERFORM frm_get_zpl.CASE abap_on.WHEN p_print.
*     Print ZPL to print spoolPERFORM frm_print_zpl.WHEN p_prev.
*     Preview ZPL as PDFPERFORM frm_preview_zpl.WHEN OTHERS.ENDCASE.
*&---------------------------------------------------------------------*
*& Form frm_print_zpl
*&---------------------------------------------------------------------*
*& Print ZPL to SP01
*&---------------------------------------------------------------------*
FORM frm_print_zpl .DATA:lt_string     TYPE STANDARD TABLE OF string,lv_zpl_string TYPE string.NEW-PAGE PRINT ONDESTINATION 'PM42'COPIES 1LIST NAME spaceLIST DATASET spaceIMMEDIATELY 'X'KEEP IN SPOOL 'X'LINE-COUNT 60000LINE-SIZE 1023LAYOUT 'G_RAW'NEW LIST IDENTIFICATION 'X'SAP COVER PAGE spaceNO DIALOGNO-TITLENO-HEADING.lv_zpl_string = gv_zpl_string.REPLACE ALL OCCURRENCES OF '^FS' IN lv_zpl_string WITH |^FS{ cl_abap_char_utilities=>cr_lf }|.SPLIT lv_zpl_string AT cl_abap_char_utilities=>cr_lf INTO TABLE lt_string.LOOP AT lt_string INTO DATA(ls_string).WRITE:ls_string.NEW-LINE.ENDLOOP.NEW-PAGE PRINT OFF.MESSAGE 'ZPL Printed' TYPE 'S'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_preview_zpl
*&---------------------------------------------------------------------*
*& Preview ZPL as PDF
*&---------------------------------------------------------------------*
FORM frm_preview_zpl .DATA:lv_request_data TYPE string,lv_responsex    TYPE xstring,lo_http_client  TYPE REF TO if_http_client,lv_url          TYPE string,lv_response     TYPE string,lv_msgty        TYPE c,lv_msgtx        TYPE string.lv_url = 'http://api.labelary.com/v1/printers/8dpmm/labels/7x8/' .CALL METHOD cl_http_client=>create_by_urlEXPORTINGurl                = lv_urlIMPORTINGclient             = lo_http_clientEXCEPTIONSargument_not_found = 1plugin_not_active  = 2internal_error     = 3OTHERS             = 4.IF sy-subrc <> 0.
*   Implement suitable error handling hereMESSAGE ID sy-msgidTYPE sy-msgtyNUMBER sy-msgnoWITH sy-msgv1sy-msgv2sy-msgv3sy-msgv4.EXIT.ENDIF.* Set header to get pdflo_http_client->request->set_header_field(name  = 'Accept'value = 'application/pdf').* Set content-typelo_http_client->request->set_content_type(content_type = 'application/x-www-form-urlencoded').* Content of ZPL request datalv_request_data = gv_zpl_string.* Set request bodylo_http_client->request->set_cdata( data = lv_request_data ).* Set request methodlo_http_client->request->set_method( 'POST' ).* Send requestlo_http_client->send(EXCEPTIONShttp_communication_failure = 1http_invalid_state = 2).IF sy-subrc <> 0.lo_http_client->get_last_error( IMPORTING message = lv_msgtx ).MESSAGE lv_msgtx TYPE 'S' DISPLAY LIKE 'E'.RETURN.ENDIF.* Receive response dataCALL METHOD lo_http_client->receiveEXCEPTIONShttp_communication_failure = 1http_invalid_state         = 2http_processing_failed     = 3.IF sy-subrc <> 0 .lo_http_client->get_last_error( IMPORTING message = lv_msgtx ).MESSAGE lv_msgtx TYPE 'S' DISPLAY LIKE 'E'.RETURN.ENDIF.* Get response bodylv_responsex = lo_http_client->response->get_data( ).* Convert XSTRING to BinaryCALL FUNCTION 'SCMS_XSTRING_TO_BINARY'EXPORTINGbuffer     = lv_responsexTABLESbinary_tab = gt_pdf_binary.CALL SCREEN 9000.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.SET PF-STATUS 'STATUS_9000'.PERFORM frm_display_pdf.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.gv_ok_code = sy-ucomm.CASE gv_ok_code.WHEN 'QUIT' OR 'BACK' OR 'EXIT'.LEAVE PROGRAM.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form frm_display_pdf
*&---------------------------------------------------------------------*
*& Show PDF
*&---------------------------------------------------------------------*
FORM frm_display_pdf .
* Create container objectCREATE OBJECT go_pdf_containerEXPORTINGcontainer_name = 'PDF'.* Creare pdf objectCREATE OBJECT go_pdf_objectEXPORTINGparent = go_pdf_container.* Load PDF binary dataCALL METHOD go_pdf_object->load_dataEXPORTINGtype                   = 'application'subtype                = 'pdf'IMPORTINGassigned_url           = gv_pdf_urlCHANGINGdata_table             = gt_pdf_binaryEXCEPTIONSdp_invalid_parameter   = 1dp_error_general       = 2cntl_error             = 3html_syntax_notcorrect = 4OTHERS                 = 5.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.RETURN.ENDIF.CALL METHOD go_pdf_object->show_dataEXPORTINGurl      = gv_pdf_urlin_place = abap_true.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_get_zpl
*&---------------------------------------------------------------------*
*& Get ZPL code and replace the value
*&---------------------------------------------------------------------*
FORM frm_get_zpl .DATA:lt_tline     TYPE text_line_tab,lt_tline_ret TYPE text_line_tab,lv_string    TYPE string.CALL FUNCTION 'READ_TEXT'EXPORTING
*     CLIENT                  = SY-MANDTid                      = 'ZDEM'language                = sy-languname                    = 'ZDEMO_ZPL'object                  = 'TEXT'
*     ARCHIVE_HANDLE          = 0
*     LOCAL_CAT               = ' '
*   IMPORTING
*     HEADER                  =
*     OLD_LINE_COUNTER        =TABLESlines                   = lt_tlineEXCEPTIONSid                      = 1language                = 2name                    = 3not_found               = 4object                  = 5reference_check         = 6wrong_access_to_archive = 7OTHERS                  = 8.IF sy-subrc <> 0.
*   Implement suitable error handling hereMESSAGE ID sy-msgidTYPE sy-msgtyNUMBER sy-msgnoWITH sy-msgv1sy-msgv2sy-msgv3sy-msgv4.RETURN.ENDIF.* Convert to stringCALL FUNCTION 'IDMX_DI_TLINE_INTO_STRING'EXPORTINGit_tline       = lt_tlineIMPORTINGev_text_string = lv_string.REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN lv_string WITH space.REPLACE ALL OCCURRENCES OF '%PLANT%'    IN lv_string WITH '2A01'.REPLACE ALL OCCURRENCES OF '%LOCATION%' IN lv_string WITH '2100'.gv_zpl_string = lv_string.ENDFORM.

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

M3u8视频地址如何转为mp4视频

在当今数字化的时代&#xff0c;视频格式的转换已成为日常需求。M3u8格式的视频由于其分段的特性&#xff0c;常常给播放和编辑带来不便。而MP4格式则因其通用性和高质量而广受欢迎。那么&#xff0c;如何将M3u8视频地址转换为MP4格式呢&#xff1f;接下来&#xff0c;我们将为…

JRT代码结构调整和示例

之前一直没建表专门使用ORM的api&#xff0c;做模板设计器需要建表&#xff0c;就一边开发设计器一般测试和调整ORM的api&#xff0c;只有做业务才能知道哪些api使用别扭&#xff0c;写了设计器之后改进了ORM的api以方便业务操作数据库。新写法差不多是ORM操作数据库的稳定api了…

向日葵远程控制软件MySQL5.7的安装与配置

目录 一. 向日葵远程控制软件 1.1 简介 1.2 选择原因 1.3 安装及使用 1.4 使用场景 二. MySQL5.7 安装与配置 2.1 什么是MySQL 2.2 安装 MySQL5.7 2.2.1 安装步骤 2.2.2 内部连接 2.2.3 外部连接 三. 思维导图 一. 向日葵远程控制软件 1.1 简介 向日葵电脑版是一款拥有多年…

Java基础-----集合类(四)

文章目录 1. Iterator和ListIterator1.1 简介1.2 常用方法 2. remove方法2.1 比较foreach方式和迭代器方式删除元素2.2 找原因 -- 迭代器删除操作源码 1. Iterator和ListIterator 1.1 简介 1.Iterator 可以遍历List集合&#xff0c;也可以遍历Set集合&#xff1b; ListIterat…

05-SpringCloud-RabbitMQ-概述

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&am…

Linux安装rabbitMq RPM安装 以及带延迟插件

rabbitmq安装 文档中rabbitmq下载链接 以及延迟插件 网盘下载 目前下载文件中版本已经过多个服务器安装测试 完全成功 1.安装执行 rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force --nodeps rpm -ivh libnsl-2.34-28.el9_0.x86_64.rpm --force --nodeps rpm -ivh e…

京东商品详情API:数据分析和挖掘以优化销售策略

京东商品详情API提供的数据分析和挖掘功能可以帮助商家优化销售策略&#xff0c;提高销售额和用户转化率。以下是一些可能的应用场景&#xff1a; 商品关联分析&#xff1a;通过分析商品之间的关联规则&#xff0c;商家可以发现哪些商品经常一起被购买&#xff0c;从而制定捆绑…

c++ / day04

1. 整理思维导图 2. 全局变量&#xff0c;int monster 10000;定义英雄类hero&#xff0c;受保护的属性string name&#xff0c;int hp,int attck&#xff1b;公有的无参构造&#xff0c;有参构造&#xff0c;虚成员函数 void Atk(){blood-0;}&#xff0c;法师类继承自英雄类&a…

跟cherno手搓游戏引擎【1】:配置与入口点

环境配置&#xff1a; 编译环境&#xff1a;VS2019 创建两个项目&#xff1a; 设置Sandbox为启动项&#xff1a; 设置sandbox的配置属性-常规-输出目录\中间目录为如下&#xff1a; 预处理定义&#xff1a;为了配置一些只有windows才能用的函数。 设置YOTOEngin&#xff08;我…

【大数据HA】keepalived结合haproxy实现高可用的HMS

背景 上一篇实现了haproxy代理后端HMS服务实现高可用。但是对于haproxy还是单点故障&#xff0c;所以需要对haproxy进一步做HA&#xff0c;实现真正的后端服务的HA。 要实现haproxy的HA&#xff0c;需要使用到keepalived&#xff0c;使用keepalived是VIP虚拟IP服务&#xff0…

【2023 CCF 大数据与计算智能大赛】基于TPU平台实现超分辨率重建模型部署 基于预训练ESPCN的轻量化图像超分辨率模型TPU部署方案

2023 CCF 大数据与计算智能大赛 《基于TPU平台实现超分辨率重建模型部署》 作品名&#xff1a;基于预训练ESPCN的轻量化图像超分辨率模型TPU部署方案 队伍名&#xff1a;Absofastlutely 蒋松儒 计算机科学与技术系 硕士 南京大学 中国-江苏 kahsoltqq.com 吕欢欢 计算…

经典卷积神经网络-VGGNet

经典卷积神经网络-VGGNet 一、背景介绍 VGG是Oxford的Visual Geometry Group的组提出的。该网络是在ILSVRC 2014上的相关工作&#xff0c;主要工作是证明了增加网络的深度能够在一定程度上影响网络最终的性能。VGG有两种结构&#xff0c;分别是VGG16和VGG19&#xff0c;两者并…

01-SpringCloud微服务入门

1.认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.1.单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;打…

如何利用Oracle官方网站不登录账号下载和安装非最新版本的JDK(版本自由选择)

一、JDK概述 JDK(Java Development Kit)是Java开发工具集,是针对Java编程语言的软件开发环境。它包含了Java编译器、JRE(Java运行时环境)以及其他一些用于开发、调试和测试Java应用程序的工具,是Java开发人员的必备工具。 二、JDK下载 进入Oracle官方网站,我们很容易发…

桌面天气预报软件 Weather Widget free mac特点介绍

Weather Widget free for Mac多种吸引人的小部件设计可供选择&#xff0c;可以随时了解天气&#xff01;还可以在Dock和菜单栏中为您提供简短的天气预报或当前状况的概述。 Weather Widget free for Mac软件介绍 始终在桌面上使用时尚的天气小部件来随时了解天气&#xff01;多…

逻辑回归(LR)----机器学习

基本原理 逻辑回归&#xff08;Logistic Regression&#xff0c;LR&#xff09;也称为"对数几率回归"&#xff0c;又称为"逻辑斯谛"回归。 logistic回归又称logistic 回归分析 &#xff0c;是一种广义的线性回归分析模型&#xff0c;常用于数据挖掘&#…

FA发放云桌面并与FC对接

&#xff08;7&#xff09;分配桌面&#xff08;该组为刚刚创建的域名用户和组&#xff09;&#xff0c;确认无误&#xff0c;直接发放 &#xff08;8&#xff09;可在任务中心查看发放的进度 3、FA的登录流程 &#xff08;1&#xff09;登录WI&#xff1a;客户端访问VLB&…

springcloud alibaba整合sentinel并结合dashboard控制面板设置规则

目录 一、springcloud alibaba整合sentinel二、采用代码方式设置流控规则三、结合dashboard控制面板设置规则3.1、准备工作3.2、设置全局异常处理3.3、编写测试接口3.4、结合dashboard控制面板设置规则3.4.1、流控规则设置并测试——QPS3.4.2、流控规则设置并测试——线程数3.4…

【Unity嵌入Android原生工程】

Unity嵌入Android原生工程 本章学习,Unity模块嵌入Android## 标题Unity导出Android工程创建Android Studio工程Unity嵌入到Andorid StudioAndroid原生代码跳转到Unity场景工作需要嵌入原生工程,并实现热更,记录一下 工具,Unity2023.3.14,Android Studio 2022.3.1 patch3 Un…

《JVM由浅入深学习【四】 2023-12-24》JVM由简入深学习提升分享

JVM由简入深学习提升分享四 1.JVM中java堆的特点及作用2. JVM中对象如何在堆内存中分配3. JVM堆内存中的对象布局 1.JVM中java堆的特点及作用 是线程共享的一块区域虚拟机启动时就创建了是虚拟机中内存占用很大的一块存放所有的实例对象和数组GC主要的作用区域可分为新生代&am…