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代码放在在线预览网站中才能知道效果,这样很不方便,所以我们可以通过调用labelary官网提供的公有API,来实现在SAP端预览ZPL输出内容的功能,以下是调用测试代码:

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.hqwc.cn/news/318329.html

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

相关文章

多模态——旷视大模型Vary更细粒度的视觉感知实现文档级OCR或图表理解

概述 现代大型视觉语言模型&#xff08;LVLMs&#xff09;&#xff0c;例如CLIP&#xff0c;使用一个共同的视觉词汇&#xff0c;以适应多样的视觉任务。然而&#xff0c;在处理一些需要更精细和密集视觉感知的特殊任务时&#xff0c;例如文档级OCR或图表理解&#xff0c;尤其…

【信号处理:小波包转换(WPT)/小波包分解(WPD) 】

【信号处理&#xff1a;小波包转换&#xff08;WPT&#xff09;/小波包分解&#xff08;WPD&#xff09; 】 小波包变换简介WPT/WPD的基础知识WPT/WPD的主要特点The Wavelet Packet Transform 小波包变换前向小波数据包变换最佳基础和成本函数数学中波纹的最佳基础其他成本函数…

在Cadence中单独添加或删除器件与修改网络的方法

首先需要在设置中使能 ,添加或修改逻辑选项。 添加或删除器件&#xff0c;点击logic-part&#xff0c;选择需要添加或删除的器件&#xff0c;这里的器件必须是PCB中已经有的器件&#xff0c;Refdes中输入添加或删除的器件标号&#xff0c;点击Add添加。 添加完成后就会显示在R1…

Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

案例089:基于微信小程序的校园综合服务平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

静态网页设计——个人简介网站

前言 使用经典前端三件套HTMLCSSJavascript编写了一个关于个人简介的静态网页&#xff0c;可以根据自己的需要&#xff0c;十分简单的进行修改。 首页 首页由上方的菜单栏以及菜单栏下面的轮播图组成&#xff0c;再往下走&#xff0c;是关于自己的兴趣爱好的部分&#xff0c…

std::setlocale详解

头文件 #include <clocale>作用 std::setlocale是C标准库中的一个函数&#xff0c;用于设置当前程序的本地化&#xff08;locale&#xff09;环境。 setlocale 函数安装指定的系统本地环境或其一部分&#xff0c;作为新的 C 本地环境。 修改保持效果&#xff0c;并影…

后端杂七杂八系列篇一

后端杂七杂八系列篇一 ① MySQL选择合适的数据类型① Char与Varchar② Text与Blob ② EqualsAndHashCode(callSuper true)的作用③ mybatis-plus 相关① 主键生成策略② 使用Model实现CRUD③ Wrapper的用法① Wrapper的继承关系② 项目中最常用的warpper [LambdaQueryWrapper]…

drf知识--10

接口文档 # 后端把接口写好后&#xff1a; 登录接口&#xff1a;/api/v1/login ---> post---name pwd 注册接口 查询所有图书带过滤接口 # 前后端需要做对接&#xff0c;对接第一个东西就是这个接口文档&#xff0c;前端照着接口文档开发 公司3个人&#xff…

50、实战 - 利用 conv + bn + relu + add 写一个残差结构

上一节介绍了残差结构,还不清楚的同学可以返回上一节继续阅读。 到了这里,一个残差结构需要的算法基本都介绍完了,至少在 Resnet 这种神经网络中的残差结构是这样的。 本节我们做一个实战,基于之前几节中手写的 conv / bn 算法,来搭建一个残差结构。其中,relu 的实现和…

StratifiedGroupKFold解释和代码实现

StratifiedGroupKFold解释和代码实现 文章目录 一、StratifiedGroupKFold解释和代码实现是什么&#xff1f;二、 实验数据设置2.1 实验数据生成代码2.2 代码结果 三、实验代码3.1 实验代码3.2 实验结果3.3 结果解释 四、样本类别类别不平衡 一、StratifiedGroupKFold解释和代码…

AUTOSAR软件架构描述文档,AUTOSAR_EXP_LayeredSoftwareArchitecture

AUTOSAR软件架构描述文档&#xff0c;我们常见的经典的CP架构及OS双核等架构描述 下载链接&#xff1a;https://www.autosar.org/fileadmin/standards/R21-11/CP/AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf