带EXCEL附件邮件发送相关代码

1.查看生成的邮件

2.1 非面向对象的方式(demo直接copy即可)

​
REPORT Z12.
DATA: IT_DOCUMENT_DATA TYPE SODOCCHGI1,IT_CONTENT_TEXT  TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,IT_PACKING_LIST  TYPE TABLE OF SOPCKLSTI1 WITH HEADER LINE,IT_RECEIVERS     TYPE STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE,LC_MAIL_ATTACH   TYPE STRING,LT_CONTENT_HEX   TYPE STANDARD TABLE OF SOLIX WITH HEADER LINE,LT_OBJECT_HEADER TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,LC_MAIL_XATTACH  TYPE XSTRING,LV_SEND_ALL      TYPE C,IT_MAKT          LIKE TABLE OF MAKT WITH HEADER LINE,FIR_DATE         TYPE SY-DATUM,MIMETYPE         TYPE CHAR64.
DATA: IT_ITAB TYPE TABLE OF ITAB WITH HEADER LINE,WA_ITAB TYPE ITAB.CONSTANTS:LC_TAB  TYPE C VALUE CL_BCS_CONVERT=>GC_TAB,       "excel换格符LC_CTRL TYPE C VALUE CL_BCS_CONVERT=>GC_CRLF.      "excel换行符PERFORM SEND_EMAIL.*&---------------------------------------------------------------------*
*&      Form  SEND_EMAIL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SEND_EMAIL.DATA SY_VLINE TYPE I.DATA:MBLNR TYPE STRING,   "物料凭证MATNR TYPE STRING,   "物料MJAHR TYPE STRING,   "年度MAKTX TYPE STRING.   "物料描述****邮件标题信息IT_DOCUMENT_DATA-OBJ_DESCR = '邮件主题1' .    "内容的简短描述IT_DOCUMENT_DATA-PRIORITY = '1'.             "优先次序  1~9  1:最高优先权IT_DOCUMENT_DATA-OBJ_NAME = 'OFFER'.IT_DOCUMENT_DATA-OBJ_LANGU = SY-LANGU.*****邮件正文信息IT_CONTENT_TEXT = '各位好:'.APPEND IT_CONTENT_TEXT.IT_CONTENT_TEXT = '  此邮件为测试邮件!!!!!!!'.APPEND IT_CONTENT_TEXT.DESCRIBE TABLE IT_CONTENT_TEXT LINES SY_VLINE.IT_DOCUMENT_DATA-DOC_SIZE = 255 * ( SY_VLINE - 1 ) + STRLEN( IT_CONTENT_TEXT ).  "SAPoffice 文档的大小(用于 API1)IT_PACKING_LIST-TRANSF_BIN = SPACE.IT_PACKING_LIST-HEAD_START = 1 .IT_PACKING_LIST-HEAD_NUM =  0 .IT_PACKING_LIST-BODY_START = 1. "控制从第几行开始读IT_PACKING_LIST-BODY_NUM = SY_VLINE."控制读到第几行IT_PACKING_LIST-DOC_TYPE = 'RAW'.APPEND IT_PACKING_LIST.***收件人信息IT_RECEIVERS-RECEIVER = 'MEIQIAN.LIANG@HAND-CHINA.COM'.  "收件人地址IT_RECEIVERS-REC_TYPE = 'U'.IT_RECEIVERS-COM_TYPE = 'INT'.IT_RECEIVERS-NOTIF_DEL =  'X'.IT_RECEIVERS-NOTIF_NDEL = 'X'.APPEND IT_RECEIVERS.CONCATENATE '物料'     LC_TAB'物料凭证' LC_TAB'物料描述' LC_TAB'年度'     LC_CTRL INTO LC_MAIL_ATTACH.   "lc_ctrl换行符CLEAR:MBLNR, MATNR, MJAHR, MAKTX.MBLNR  = '7777777'.MATNR  = '7777777'.MJAHR  = '7777'.MAKTX  = 'seven'."物料类型CONCATENATE LC_MAIL_ATTACHMATNR  LC_TABMBLNR  LC_TABMJAHR  LC_TABMAKTX  LC_CTRL INTO LC_MAIL_ATTACH.      "lc_ctrl换行符CLEAR:MBLNR, MATNR, MJAHR, MAKTX.MBLNR  = '8888888'.MATNR  = '8888888'.MJAHR  = '8888'.MAKTX  = 'seven'."物料类型CONCATENATE LC_MAIL_ATTACHMATNR  LC_TABMBLNR  LC_TABMJAHR  LC_TABMAKTX  LC_CTRL INTO LC_MAIL_ATTACH.      "lc_ctrl换行符MIMETYPE = 'APPLICATION/MSEXCEL;CHARSET=UTF-16LE'.CALL FUNCTION 'SCMS_STRING_TO_XSTRING'EXPORTINGTEXT     = LC_MAIL_ATTACHMIMETYPE = MIMETYPEIMPORTINGBUFFER   = LC_MAIL_XATTACHEXCEPTIONSFAILED   = 1OTHERS   = 2.IF SY-SUBRC = 0.CONCATENATE CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLE LC_MAIL_XATTACH INTO LC_MAIL_XATTACH IN BYTE MODE.ENDIF.CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' "将Xtring转化成二进制格式并保存到内表中EXPORTINGBUFFER     = LC_MAIL_XATTACHTABLESBINARY_TAB = LT_CONTENT_HEX."不知道干啥用的LT_OBJECT_HEADER = 'Seven test'.APPEND LT_OBJECT_HEADER.DESCRIBE TABLE LT_CONTENT_HEX LINES SY_VLINE.IT_PACKING_LIST-TRANSF_BIN = 'X'.IT_PACKING_LIST-HEAD_START = 1 .IT_PACKING_LIST-HEAD_NUM =  0 .IT_PACKING_LIST-BODY_START = 1.IT_PACKING_LIST-BODY_NUM = SY_VLINE.IT_PACKING_LIST-DOC_TYPE = 'XLS'.IT_PACKING_LIST-DOC_SIZE = 255 * SY_VLINE.IT_PACKING_LIST-OBJ_NAME = '附件名'.IT_PACKING_LIST-OBJ_DESCR = IT_PACKING_LIST-OBJ_NAME."文档名字APPEND IT_PACKING_LIST."方法1  无法指定发送人邮箱CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'EXPORTINGDOCUMENT_DATA              = IT_DOCUMENT_DATAPUT_IN_OUTBOX              = 'X'COMMIT_WORK                = 'X'IMPORTINGSENT_TO_ALL                = LV_SEND_ALL
*     NEW_OBJECT_ID              =TABLESPACKING_LIST               = IT_PACKING_LIST[]OBJECT_HEADER              = LT_OBJECT_HEADER[]
*     contents_bin               =CONTENTS_TXT               = IT_CONTENT_TEXT[]CONTENTS_HEX               = LT_CONTENT_HEX[]
*     object_para                =
*     object_parb                =RECEIVERS                  = IT_RECEIVERS[]EXCEPTIONSTOO_MANY_RECEIVERS         = 1DOCUMENT_NOT_SENT          = 2DOCUMENT_TYPE_NOT_EXIST    = 3OPERATION_NO_AUTHORIZATION = 4PARAMETER_ERROR            = 5X_ERROR                    = 6ENQUEUE_ERROR              = 7OTHERS                     = 8.*  "方法2  可以指定发送人邮箱
*  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
*    EXPORTING
*      DOCUMENT_DATA              = IT_DOCUMENT_DATA
*      PUT_IN_OUTBOX              = 'X'
*      SENDER_ADDRESS             = 'MEIQIAN.LIANG@HAND-CHINA.COM'
*      SENDER_ADDRESS_TYPE        = 'INT'
*      COMMIT_WORK                = 'X'
**     IP_ENCRYPT                 =
**     IP_SIGN                    =
**     IV_VSI_PROFILE             =
*    IMPORTING
*      SENT_TO_ALL                = LV_SEND_ALL
**     NEW_OBJECT_ID              =
**     SENDER_ID                  =
*    TABLES
*      PACKING_LIST               = IT_PACKING_LIST[]
*      OBJECT_HEADER              = LT_OBJECT_HEADER[]
**     CONTENTS_BIN               =
*      CONTENTS_TXT               = IT_CONTENT_TEXT[]
*      CONTENTS_HEX               = LT_CONTENT_HEX[]
**     OBJECT_PARA                =
**     OBJECT_PARB                =
*      RECEIVERS                  = IT_RECEIVERS[]
**     ET_VSI_ERROR               =
*    EXCEPTIONS
*      TOO_MANY_RECEIVERS         = 1
*      DOCUMENT_NOT_SENT          = 2
*      DOCUMENT_TYPE_NOT_EXIST    = 3
*      OPERATION_NO_AUTHORIZATION = 4
*      PARAMETER_ERROR            = 5
*      X_ERROR                    = 6
*      ENQUEUE_ERROR              = 7
*      OTHERS                     = 8.
*  IF SY-SUBRC <> 0.
**   Implement suitable error handling here
*  ELSE.
*  BREAK-POINT.
*  ENDIF.ENDFORM.                    "SEND_EMAIL​

非面向对象运行效果图:

如果要抄送则增加以下属性:

2.2面向对象的方法


REPORT Z1234.TABLES:MSEG,SSCRFIELDS,MARA,ZOWMS_DAYSTOCK_R,ADR6.
TYPE-POOLS:ICON,SLIS.TYPES: BEGIN OF TYS_DETAIL,TOTAL(100),SEL(1),STATUS(4),ITEM_STATUS(4),CYMENG         TYPE MSEG-MENGE, "差异数量XCHAR          TYPE MARC-XCHAR, "批次管理标识MAKTX          TYPE MAKT-MAKTX,LGOBE          TYPE T001L-LGOBE,MEINS          TYPE MARA-MEINS,LABST          TYPE MARD-LABST. "SAP库存INCLUDE STRUCTURE ZOWMS_DAYSTOCK_R.
TYPES:     END OF TYS_DETAIL.
DATA: GT_DETAIL     TYPE STANDARD TABLE OF TYS_DETAIL,GT_DETAIL_TMP TYPE TABLE OF TYS_DETAIL,GT_DETAIL_KEY TYPE TABLE OF TYS_DETAIL.DATA FUNCTXT TYPE SMP_DYNTXT.DATA: I_BDCDATA   LIKE BDCDATA OCCURS 0 WITH HEADER LINE.*ALV定义
DATA: GT_FIELDCAT TYPE LVC_T_FCAT,GV_CODE     LIKE SY-UCOMM,GW_LAYOUT   TYPE LVC_S_LAYO,I_CELLCLR   TYPE LVC_S_SCOL. "单元格颜色
TYPES: BEGIN OF SLIS_EXTAB,FCODE LIKE RSMPE-FUNC,END OF SLIS_EXTAB.
TYPES: SLIS_T_EXTAB TYPE SLIS_EXTAB OCCURS 1.
DATA:LS_CELLTAB TYPE LVC_S_STYL.
DATA LS_STABLE TYPE LVC_S_STBL.
DATA:GS_FIELDCAT TYPE LVC_S_FCAT.
DATA:GT_HEADER TYPE TABLE OF CHAR30,GV_CHAR30 TYPE CHAR30.
*子ALV调用
DATA:LT_FIELDCAT TYPE LVC_T_FCAT,LS_FCAT     TYPE LVC_S_FCAT,LS_SELFIELD TYPE SLIS_SELFIELD.SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-T02.
SELECT-OPTIONS: S_RECEP FOR ADR6-SMTP_ADDR NO INTERVALSMODIF ID MAL,"收件人S_SCR FOR ADR6-SMTP_ADDR  NO INTERVALS "抄送人MODIF ID MAL.
SELECTION-SCREEN END OF BLOCK BLK2 .END-OF-SELECTION.PERFORM FRM_SEND_MAIL.FORM FRM_SEND_MAIL .DATA: BCS_EXCEPTION        TYPE REF TO CX_BCS,ERRORTEXT            TYPE STRING,LCL_SEND_REQUEST     TYPE REF TO CL_BCS,LCL_DOCUMENT         TYPE REF TO CL_DOCUMENT_BCS,LCL_RECIPIENT        TYPE REF TO IF_RECIPIENT_BCS,LCL_SENDER           TYPE REF TO CL_CAM_ADDRESS_BCS,T_ATTACHMENT_HEADER  TYPE SOLI_TAB,WA_ATTACHMENT_HEADER LIKE LINE OF T_ATTACHMENT_HEADER,ATTACHMENT_SUBJECT   TYPE SOOD-OBJDES,SOOD_BYTECOUNT       TYPE SOOD-OBJLEN,MAIL_TITLE           TYPE SO_OBJ_DES,T_MAILTEXT           TYPE SOLI_TAB,WA_MAILTEXT          LIKE LINE OF T_MAILTEXT,SEND_TO              TYPE ADR6-SMTP_ADDR,SENT                 TYPE OS_BOOLEAN,LV_MAILNAME          TYPE SOOD-OBJDES,BINARY_CONTENT       TYPE SOLIX_TAB.DATA:LV_SMTP_ADDR          TYPE ADR6-SMTP_ADDR." Set mail subjectMAIL_TITLE     = '菜鸟&SAP库存比对邮件推送'.LV_MAILNAME = '菜鸟&SAP库存比对报表'." Set mail contextDATA(LV_STRING) = |您好,附件是菜鸟&SAP库存比对报表,请查阅,谢谢|.WA_MAILTEXT    = LV_STRING.APPEND WA_MAILTEXT TO T_MAILTEXT.CONCATENATE '事务码为:ZM390 程序为:ZMM390。' 'Job时间:' SY-DATUM '' SY-UZEIT INTO WA_MAILTEXT.APPEND WA_MAILTEXT TO T_MAILTEXT.TRY.
* Create send requestLCL_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
* Create new document with mailtitle and mailtextgLCL_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT( I_TYPE    = 'RAW' "#EC NOTEXTI_TEXT    = T_MAILTEXTI_LANGUAGE = SY-LANGUI_SUBJECT = MAIL_TITLE ).* add document to send requestLCL_SEND_REQUEST->SET_DOCUMENT( LCL_DOCUMENT ).*收件人LOOP AT S_RECEP.LV_SMTP_ADDR = S_RECEP-LOW.LCL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( LV_SMTP_ADDR  ).LCL_SEND_REQUEST->ADD_RECIPIENT( LCL_RECIPIENT ).ENDLOOP.* 抄送人LOOP AT S_SCR.LV_SMTP_ADDR = S_SCR-LOW.LCL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( LV_SMTP_ADDR ).LCL_SEND_REQUEST->ADD_RECIPIENT(I_RECIPIENT  = LCL_RECIPIENTI_EXPRESS    = 'X'I_COPY       = 'X'I_BLIND_COPY = ' 'I_NO_FORWARD = ' ' ).ENDLOOP.
*     添加抄送人*lcl_document->CLEAR LV_STRING.PERFORM FRM_SET_DOCUMENT_BODY  CHANGING BINARY_CONTENT.LCL_DOCUMENT->ADD_ATTACHMENT(I_ATTACHMENT_TYPE    = 'XLS'                        " 附件格式I_ATTACHMENT_SUBJECT = LV_MAILNAME                  " 附件名称
*      i_attachment_size    = size                         "附件大小I_ATTACHMENT_LANGUAGE = SY-LANGU
*      I_ATTACHMENT_HEADER   =I_ATT_CONTENT_HEX    = BINARY_CONTENT).            "附件内容LCL_SEND_REQUEST->SET_DOCUMENT( LCL_DOCUMENT ).SENT = LCL_SEND_REQUEST->SEND( I_WITH_ERROR_SCREEN = 'X' ).CATCH CX_BCS INTO BCS_EXCEPTION.ERRORTEXT = BCS_EXCEPTION->IF_MESSAGE~GET_TEXT( ).MESSAGE ERRORTEXT TYPE 'S' DISPLAY LIKE 'E'.ENDTRY.COMMIT WORK.ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_DOCUMENT_BODY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_BINARY_CONTENT  text
*----------------------------------------------------------------------*
FORM FRM_SET_DOCUMENT_BODY  CHANGING PT_BODY TYPE SOLIX_TAB.TYPES: BEGIN OF TY_DATA,WERKS  TYPE ZOWMS_DAYSTOCK_R-WERKS, "工厂MATNR  TYPE ZOWMS_DAYSTOCK_R-MATNR, "物料MAKTX  TYPE MAKT-MAKTX,             "物料描述LGORT  TYPE ZOWMS_DAYSTOCK_R-LGORT, "库存地点LGOBE  TYPE T001L-LGOBE,            "库存地点描述CHARG  TYPE ZOWMS_DAYSTOCK_R-CHARG, "批次LABST  TYPE MARD-LABST,             "SAP库存数量OMENGE TYPE ZOWMS_DAYSTOCK_R-OMENGE, "未结库存WMENGE TYPE ZOWMS_DAYSTOCK_R-WMENGE, "OFS未传明细TMENGE TYPE ZOWMS_DAYSTOCK_R-TMENGE, "SAP库存数量(含未结)SMENGE TYPE ZOWMS_DAYSTOCK_R-SMENGE, "WMS库存数量CYMENG TYPE MSEG-MENGE.             "差异数量TYPES: END OF TY_DATA.DATA:LV_STRING   TYPE STRING,LC_MIMETYPE TYPE CHAR64 VALUE 'APPLICATION/MSEXCEL;charset=utf-16le',LV_XATTACH  TYPE XSTRING,LV_VALUE    TYPE STRING,LV_FLAG     TYPE C.DATA:LT_MAIL TYPE TABLE OF TY_DATA,LS_MAIL TYPE TY_DATA.CLEAR:GT_HEADER.APPEND '工厂' TO GT_HEADER.APPEND '物料' TO GT_HEADER.APPEND '物料描述' TO GT_HEADER.APPEND '库存地点' TO GT_HEADER.APPEND '库存地点描述' TO GT_HEADER.APPEND 'SAP库存数量' TO GT_HEADER.APPEND '未结库存' TO GT_HEADER.APPEND 'OFS未传SAP数量' TO GT_HEADER.APPEND 'SAP库存数量(含未结未传)' TO GT_HEADER.APPEND 'WMS库存数量' TO GT_HEADER.APPEND  '差异' TO GT_HEADER.LOOP AT GT_HEADER INTO GV_CHAR30.CONDENSE GV_CHAR30.LV_STRING = |{ LV_STRING }{ GV_CHAR30 }{ CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB }|.ENDLOOP.LV_STRING = LV_STRING && CL_ABAP_CHAR_UTILITIES=>CR_LF."发送有差异的邮件数据MOVE-CORRESPONDING GT_DETAIL[] TO LT_MAIL[].DELETE  LT_MAIL[] WHERE CYMENG EQ '0.000'."判断是否发送批次字段的数据DATA(LV_LINES1) = LINES( GT_HEADER ).IF LV_LINES1 = '11'.LV_FLAG = 'X'.ENDIF.DATA(LV_LINES) = LINES( GT_FIELDCAT ).LOOP AT LT_MAIL ASSIGNING FIELD-SYMBOL(<FS_STURC>).DO LV_LINES TIMES.IF SY-INDEX = 6 AND LV_FLAG = 'X'.CONTINUE.ENDIF.ASSIGN COMPONENT SY-INDEX OF STRUCTURE <FS_STURC> TO FIELD-SYMBOL(<FS_VALUE>).IF SY-SUBRC = 0.LV_VALUE = <FS_VALUE>.CONDENSE LV_VALUE.DATA(LV_LEN) = STRLEN( LV_VALUE ) - 1.IF LV_LEN > 0.IF LV_VALUE+LV_LEN = '-'.LV_VALUE = '-' && LV_VALUE(LV_LEN).CONDENSE LV_VALUE NO-GAPS.CLEAR LV_LEN.ENDIF.ENDIF.ELSE.LV_VALUE = ''.ENDIF.IF LV_LINES <> SY-INDEX.LV_STRING = |{ LV_STRING }{ LV_VALUE }{ CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB }|.ELSE.LV_STRING = |{ LV_STRING }{ LV_VALUE }{ CL_ABAP_CHAR_UTILITIES=>CR_LF }|.ENDIF.ENDDO.ENDLOOP.CALL FUNCTION 'SCMS_STRING_TO_XSTRING'EXPORTINGTEXT     = LV_STRINGMIMETYPE = LC_MIMETYPEIMPORTINGBUFFER   = LV_XATTACHEXCEPTIONSFAILED   = 1OTHERS   = 2.
* Add the file header for utf-16le. .IF SY-SUBRC = 0.CONCATENATE CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLELV_XATTACH INTO LV_XATTACH IN BYTE MODE.ENDIF.CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'EXPORTINGBUFFER     = LV_XATTACHTABLESBINARY_TAB = PT_BODY.
ENDFORM.

面向对象效果如下:

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

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

相关文章

《他强由他强,清风拂山岗;他横由他横,明月照大江》之三

常见的设计模式 1.策略模式 使用场景 通俗来说,策略模式就像是让你有一个策略的工具箱,在不同的情况下选择最合适的策略来解决问题。 使用场景通常包括以下一些: 多重条件判断语句: 当一个操作包含大量的条件判断语句,并且这些分支具有不同的行为时,可以使用策略模式来…

docker runc升级1.1.12

上传runc-1.1.12制品至中控机 874e970eaa932a97de9888344ae08f24 runc.arm64 将所有节点的runc文件备份 所有节点(包括master+node) vim host [all] 10.1.0.183 ansible_password=Bigdata@Ksyun123 ansible_user=root ansible_port=22 10.1.0.249 ansible_password=Bigdata…

关于 vs2019 c++ 20规范,STL 库提供的标准分配器 alloctor 及其 traits 及涉及分配器交换的全局函数 _Pocs

(1) 我们写 c 代码&#xff0c;使用 STL 库中的模板&#xff0c;很少自己写对象的分配器。用 STL 中的分配器也够用。研究 STL 中的分配器也可以为咱们自己写分配器提供参考。 咱们会遇到这样的场景&#xff0c;例如交换两个容器对象&#xff1a; list a ,b ; a .swap (b) ; 这…

自建XXL-JOB调度平台教程

一、XXL-JOB简介 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。它支持通过Web界面进行管理调度任务&#xff0c;包括任务的增删改查、执行状态监控等。同时&#xff0c;XXL-JOB提供了Java、Spring Boot等多种接入方式&am…

C++中向量的操作vector

在C中&#xff0c;std::vector 是一个非常有用的动态数组容器&#xff0c;它允许你在运行时动态添加或删除元素&#xff0c;并且提供了许多方法来操作这些元素。下面是一些常见的 std::vector 操作&#xff1a; 创建一个 vector&#xff1a; #include <vector> std::vec…

像编排容器一样编排进程

背景 当前微服务架构大行其道&#xff0c;一个业务应用往往是由多个独立的服务构成&#xff0c;通过K8S&#xff0c;Docker Compose等容器编排工具&#xff0c;以及Jekins等DevOPS工具&#xff0c;我们也能够很方便的将服务发布到容器&#xff0c;并通过配置和编排轻松部署到线…

std::async、std::future

async和future std::async和std::thread都是C11标准库中实现多线程的类。async是一种异步执行任务的方式&#xff0c;它可以在后台线程中执行一个函数或者函数对象&#xff0c;并返回一个std::future对象&#xff0c;可以用来获取函数的返回值或者异常信息。它允许线程返回fut…

40道 Nginx 高频面试题

Nginx 是一款轻量级的 Web 服务器、反向代理服务器&#xff0c;由于它的内存占用少&#xff0c;启动极快&#xff0c;高并发能力强&#xff0c;在互联网项目中广泛应用。那么关于 Nginx 的核心面试题有哪些呢&#xff1f;今天给大家整理了40道Nginx 高频面试题&#xff0c;最近…

麒麟kylin-v10系统,虚拟机kvm的使用

kvm的使用 虚拟机新建 点击选择对应的iso文件 选择相应的系统 &#xff08;注意&#xff0c;如果这里没有相应的系统比如&#xff1a;windows&#xff0c;可以直接选择Generic default这是通用默认的意思&#xff09; 选择cpu 完成即可 等待安装完毕 网络设置-ssh连接 虚拟…

Electron+Vue+pyinstaller服务打包

electron环境安装略 1. electron的入口文件配置test.js, 需要在package.json 配置文件中指定main: src/test.js const { app, BrowserWindow } require(electron)const createWindow () > {const win new BrowserWindow({width: 800,height: 600})// win.loadFile(inde…

实体类和对象之间的关系是什么

实体类&#xff08;Entity Class&#xff09;和对象&#xff08;Object&#xff09;在面向对象编程&#xff08;OOP, Object-Oriented Programming&#xff09;和ORM&#xff08;Object-Relational Mapping&#xff09;框架如Hibernate中扮演着重要的角色。以下是它们之间的关系…

守好参数之门:防止 IllegalArgumentException 入侵的七大策略

1. 原因分析 java.lang.IllegalArgumentException 是 Java 中的一个运行时异常&#xff0c;它通常表示向方法传递了一个不合法或不适当的参数。这种异常不会由 Java 虚拟机自动抛出&#xff0c;而是由程序员在编写代码时通过显式地调用 throw 语句来抛出&#xff0c;或者在某些…

如何利用python选股

使用Python进行选股是一个复杂但有趣的过程,它结合了数据分析、统计建模和机器学习等多个领域的知识。 由于篇幅限制,我将提供一个概述性的框架和关键步骤,并尽量保持内容的精炼和深入。 一、引言 背景介绍:简述股市投资的重要性和复杂性,以及利用Python进行量化选股的优…

红龙工业设备制造有限公司亮相2024杭州数字物流技术设备展

参展企业介绍 温州红龙工业设备制造有限公司成立于2015年11月。是中国先进的工业皮带设备研发制造和工业皮带整体解决方案运营服务商&#xff0c;现主营皮带接头机、皮带热压机、皮带接驳机、皮带打齿机、输送带打齿机、输送带分层级、输送带导条机、输送带裁切机、高频机等工业…

力扣HOT100 - 84. 柱状图中最大的矩形

解题思路&#xff1a; 单调栈 对于一个高度height[ i ]&#xff0c;找左右两边均严格小于它的值。 class Solution {public int largestRectangleArea(int[] heights) {int n heights.length;int[] left new int[n];int[] right new int[n];Deque<Integer> mono_st…

HDFS集群间互访配置

HDFS集群间互访配置 目录 1 HDFS互访 1.1 前置条件 1.2 互访配置 2 NameService修改 HDFS互访

【element-plus】自动导入 + typescript 提示

1、自动导入 2、引用加载组件类型提示 第一步&#xff1a;安装自动导入功能所需的插件 npm install -D unplugin-vue-components unplugin-auto-import 第二步&#xff1a; vite版&#xff1a; // vite.config.ts import { defineConfig } from vite import AutoImport fr…

力扣:738. 单调递增的数字

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9示例 2: 输入: n 1234 输…

【无标题】C++ 读写文件 不同方法总结

在C中&#xff0c;有多种方法可以进行文件的读写操作。下面是一些常用的方法&#xff1a; 使用iostream库进行文件读写&#xff1a; 使用ifstream类进行文件读取操作&#xff0c;可以使用open()函数打开文件&#xff0c;然后使用>>运算符或getline()函数读取文件内容。例…

linux安装配置Docker保姆级教程

Docker到底是什么? Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱机制&#xff0c;相互之间…