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

SAP_ABAP_接口技术_RFC远程函数实践总结

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型,ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977

 SAP接口常用的有这5种:PI、远程RFC、API、Webservice、IDOC

SAP_ABAP_接口技术_PI实践总结_企业数字化建设者的博客-CSDN博客
SAP_ABAP_接口技术_RFC远程函数实践总结_企业数字化建设者的博客-CSDN博客

SAP_ABAP_接口技术_API实践总结_企业数字化建设者的博客-CSDN博客
SAP_ABAP_接口技术_Webservice实践总结_企业数字化建设者的博客-CSDN博客

一、背景介绍

  1. 函数模块: 在 SAP 系统中,函数模块是预定义的业务逻辑单元,可以被其他程序调用。RFC 机制允许通过网络调用远程系统中的函数模块。

  2. 远程调用: RFC 允许在一个 SAP 系统中调用另一个 SAP 系统中的函数模块,即使这些系统可能位于不同的服务器上。

  3. 同步和异步调用: RFC 调用可以是同步的(等待调用返回结果)或异步的(不等待返回结果)。同步调用适用于需要等待结果的情况,而异步调用适用于不需要立即获取结果的情况。

  4. RFC 目标: 在调用 RFC 函数模块之前,需要定义 RFC 目标。RFC 目标描述了要调用的远程系统和目标函数模块。这些目标可以在事务代码 SM59 中配置。

  5. 事务和批处理: RFC 调用可以在事务内或批处理作业中执行。这使得可以在不同系统之间传递数据并处理业务流程。

  6. 安全性: RFC 调用可以通过网络进行,因此安全性是一个关键问题。SAP 提供了各种身份验证和授权机制来确保数据的安全传输和处理。

实现步骤

1.1 SE37-->创建函数-->创建输入输出参数-->编写代码

1.2 启用远程的函数模块

1.3 代码样例

FUNCTION zfm_mm_140.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IH) TYPE  ZSMM140HEADER
*"  EXPORTING
*"     VALUE(STATUS) TYPE  CHAR2
*"     VALUE(MESSAGE) TYPE  CHAR255
*"  TABLES
*"      ITAB STRUCTURE  ZSMM140ITEM
*"----------------------------------------------------------------------
*程序名:
*程序描述:MM-140_采购订单收货退货接口
*----------------------------------------------------------------------
*创建日期        ABAP开发顾问    业务顾问
*2019.09.17.             zlog_save1 'ZFM_MM_330'.zlog_save2 'B'.
*-----------------------------------------------------------------------DATA ls_gh TYPE bapi2017_gm_head_01.DATA ls_gi TYPE bapi2017_gm_item_create.DATA lt_gi TYPE TABLE OF bapi2017_gm_item_create.DATA ls_poitem TYPE bapimepoitem.DATA lt_poitem TYPE TABLE OF bapimepoitem.DATA ls_poitemx TYPE bapimepoitemx.DATA lt_poitemx TYPE TABLE OF bapimepoitemx.DATA ls_return TYPE bapiret2.DATA lt_return TYPE TABLE OF bapiret2.DATA gr_ebeln TYPE RANGE OF ekpo-ebeln. "采购订单号DATA gw_ebeln LIKE LINE OF gr_ebeln.DATA lv_message_str(255) TYPE c.IF itab[] IS NOT INITIAL."1.==========为检查逻辑所需要准备的数据源CLEAR itab.LOOP AT itab[] INTO itab.gw_ebeln-sign = 'I'.gw_ebeln-option = 'EQ'.gw_ebeln-low = itab-po_number.gw_ebeln-high = ''.APPEND gw_ebeln TO gr_ebeln.ENDLOOP.DELETE ADJACENT DUPLICATES FROM gr_ebeln COMPARING low.SELECT ekpo~ebeln,"采购订单号ekpo~ebelp,"项次ekpo~retpo,"采购退货订单标识 X:采购退货订单ekpo~werks "工厂FROM ekpoWHERE ekpo~ebeln IN @gr_ebelnINTO TABLE @DATA(lt_ekpo)."查找未打删除标识的来料单号SELECTztmm_incom_list~incom,   "来料单号ztmm_incom_list~item,   "来料单项次ztmm_incom_list~ebeln,  "采购凭证ztmm_incom_list~ebelp,   "项目ztmm_incom_list~loekzFROM ztmm_incom_list WHERE ztmm_incom_list~loekz IS INITIAL AND ztmm_incom_list~incom = @ih-incomINTO TABLE @DATA(lt_incom_list)."取工厂和库存地点SELECTt001l~werks,t001l~lgortFROM t001lINTO TABLE @DATA(lt_t001l)."取物料过账日志表SELECTztmm_140~incom,ztmm_140~item,ztmm_140~mblnr "物料凭证编号FROM ztmm_140 WHERE ztmm_140~incom = @ih-incomINTO TABLE @DATA(lt_ztmm_140)."2.==========接口传入参数进行检查LOOP AT itab[]  ASSIGNING FIELD-SYMBOL(<ls_itab>)."  传入的采购订单及项次若为空,则返回错消息“采购订单、项次不能为空”;IF <ls_itab>-po_number IS INITIAL OR <ls_itab>-po_item IS INITIAL.<ls_itab>-type = 'E'.<ls_itab>-message = '采购订单、项次不能为空'.CONTINUE.ENDIF."根据传入采购订单及项次取退货标识(EKPO-RETPO),EKPO-RETPO =‘X’为退货采购订单;若采购订单及项次不是退货采购订单,"则传入的来料单(INCOM)及来料单项次ITEM不为空,否则提示“非采购退货单,来料单及项次不能为空”READ TABLE lt_ekpo INTO DATA(ls_ekpo) WITH KEY ebeln = <ls_itab>-po_number ebelp = <ls_itab>-po_item.IF sy-subrc = 0.IF ls_ekpo-retpo = 'X'."EKPO-RETPO =‘X’退货采购订单<ls_itab>-retpo = 'X'."根据传入的的采购订单及项次从EKPO取RETPO,若RETPO = ‘X’,则给161;其他情况给101<ls_itab>-move_type = '161'."移动类型ELSE."采购订单<ls_itab>-move_type = '101'."移动类型"若采购订单及项次不是退货采购订单,"则传入的来料单(INCOM)及来料单项次ITEM不为空,否则提示“非采购退货单,来料单及项次不能为空”IF <ls_itab>-item IS INITIAL OR ih-incom IS INITIAL .<ls_itab>-type = 'E'.<ls_itab>-message = '及来料单以及项次ITEM不为空'.CONTINUE.ENDIF.ENDIF.ELSE.<ls_itab>-type = 'E'.<ls_itab>-message = '采购订单以及行项目不存在'.CONTINUE.ENDIF."若库存地点为空,则返回错误消息“库存地点不能为空;IF <ls_itab>-stge_loc IS INITIAL.<ls_itab>-type = 'E'.<ls_itab>-message = '库存地点不能为空'.CONTINUE.ENDIF."根据传入的采购订单号及项次从EKPO取 工厂(EKPO-WERKS);根据传入的库存地点及刚取到的PO 工厂判断在table T001l 是否存在,不存在返回错误消息“库存地XXX在工厂YYY 不存”READ TABLE lt_ekpo INTO DATA(ls_ekpo_werks) WITH KEY ebeln = <ls_itab>-po_number ebelp = <ls_itab>-po_item.IF sy-subrc = 0.READ TABLE lt_t001l INTO DATA(ls_t001l) WITH KEY werks = ls_ekpo_werks-werks lgort = <ls_itab>-stge_loc.IF sy-subrc <> 0.<ls_itab>-type = 'E'.<ls_itab>-message = '库存地'&& <ls_itab>-stge_loc &&'在工厂'&& ls_ekpo_werks-werks &&'不存'.CONTINUE.ENDIF.ELSE.<ls_itab>-type = 'E'.<ls_itab>-message = '传入的采购订单和项次在采购订单表 ekpo中,不存在'.CONTINUE.ENDIF."若未税价格(NETPR)为空或价格基数PEINH为空或购买税代码(MWSKZ)空,则返回错误消息“未税价格,价格基数及税代码都不能为空”;IF <ls_itab>-netpr IS INITIAL OR <ls_itab>-peinh IS INITIAL OR <ls_itab>-mwskz IS INITIAL.<ls_itab>-type = 'E'.<ls_itab>-message = '未税价格,价格基数及税代码都不能为空'.CONTINUE.ENDIF."若传入的来料单(INCOM)及来料单项次ITEM不为空,则根据来料单、项次 及ZTMM_INCOM_LIST-LOEKZ 等于空,判断来料单及项次在ztable ZTMM_INCOM_LIST 是否存在,不存在,则返回错误消息“来料单XXXXX 项次YY在SAP 不存在”READ TABLE lt_incom_list INTO DATA(ls_incom_list)  WITH KEY incom = ih-incom item = <ls_itab>-item.IF sy-subrc <> 0.<ls_itab>-type = 'E'.<ls_itab>-message = '传入的来料单号已经项次在 ZTMM_INCOM_LIST表中不存在'.CONTINUE.ELSE."根据传入的来料单(INCOM)及来料单项次ITEM 及ZTMM_INCOM_LIST-LOEKZ 等于空条件,"从table ZTMM_INCOM_LIST取采购订单号(EBELN)及项次(EBELP),如果取到的采购订单号及项次与接口传入的订单号及项次不一致,"则返回错误消息“来料单XXXXX 项次YY 对应的采购订单号及项次不匹配”;IF ls_incom_list-ebeln = <ls_itab>-po_number AND ls_incom_list-ebelp = <ls_itab>-po_item."相等通过ELSE."不相等<ls_itab>-type = 'E'.<ls_itab>-message = '来料单'&& ih-incom &&'项次' && <ls_itab>-po_item && '对应的采购订单号及项次不匹配'.CONTINUE.ENDIF.ENDIF."若传入的来料单(INCOM)及来料单项次ITEM不为空,根据传入的来料单(INCOM)及来料单项次和上述新建ztable Zpo_gr"能取到不为空的物料凭证(MBLNR),则提示“来料单XXX 项次之前已经入库”的错误消息READ TABLE lt_ztmm_140 INTO DATA(ls_ztmm_140) WITH KEY incom = ih-incom item = <ls_itab>-item.IF sy-subrc = 0.IF ls_ztmm_140-mblnr IS NOT INITIAL.<ls_itab>-type = 'E'.<ls_itab>-message = '来料单'&& ih-incom &&'项次'&& <ls_itab>-item &&'之前已经入库'.CONTINUE.ENDIF.ENDIF.ENDLOOP."3.==========对检查通过的记录进行业务处理LOOP AT itab[] ASSIGNING FIELD-SYMBOL(<ls_tb>) WHERE type <> 'E' .IF <ls_tb>-retpo = 'X'. "退货订单,直接过账ELSE. "非采购订单,更改PO价格在过账ls_poitem-po_item = <ls_tb>-po_item." 行项目ls_poitemx-po_item = <ls_tb>-po_item." 行项目ls_poitemx-po_itemx = 'X'." 行项目ls_poitem-net_price = <ls_tb>-netpr ."净价ls_poitemx-net_price = 'X'.ls_poitem-price_unit = <ls_tb>-peinh."价格单位ls_poitemx-price_unit = 'X'.ls_poitem-tax_code = <ls_tb>-mwskz."税码ls_poitemx-tax_code = 'X'.APPEND ls_poitem TO lt_poitem.APPEND ls_poitemx TO lt_poitemx.CALL FUNCTION 'BAPI_PO_CHANGE'EXPORTINGpurchaseorder = <ls_tb>-po_numberTABLESreturn        = lt_returnpoitem        = lt_poitempoitemx       = lt_poitemx.IF sy-subrc = 0.READ TABLE lt_return INTO ls_return INDEX 1.IF sy-subrc = 0.<ls_tb>-type = ls_return-type.<ls_tb>-id = ls_return-id.<ls_tb>-number = ls_return-number.<ls_tb>-message = ls_return-message.<ls_tb>-log_no = ls_return-log_no.<ls_tb>-log_msg_no = ls_return-log_msg_no.<ls_tb>-message_v1 = ls_return-message_v1.<ls_tb>-message_v2 = ls_return-message_v2.<ls_tb>-message_v3 = ls_return-message_v3.<ls_tb>-message_v4 = ls_return-message_v4.<ls_tb>-parameter = ls_return-parameter.<ls_tb>-row = ls_return-row.<ls_tb>-field = ls_return-field.<ls_tb>-system = ls_return-system.ENDIF.CLEAR ls_return.IF lines( lt_return ) > 1.lv_message_str = ''.LOOP AT lt_return INTO ls_return.lv_message_str = lv_message_str && ls_return-type && ls_return-message && ','.ENDLOOP.<ls_tb>-message = lv_message_str.ENDIF.IF <ls_tb>-type = 'S'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "BAPI事务提交EXPORTINGwait = 'X'.ELSE.CONTINUE.ENDIF."20190927 zhongjz add : ---------------------------------------------------------------------------------------------strat"   根据当前记录的采购订单及行项目从EKPO取最新的价格(EKPO-NETPR)、价格基数(EKPO-PEINH)和税码(EKPO-MWSKZ),"只要有一个字段的值和对应传入的值不相等,则说明价格更新更新失败,继续下一条,否则继续当前采购订单收货SELECT ekpo~ebeln  FROM ekpoWHERE ekpo~ebeln =  @<ls_tb>-po_numberAND ekpo~ebelp = @<ls_tb>-po_itemAND ekpo~netpr =  @<ls_tb>-netprAND ekpo~peinh = @<ls_tb>-peinhAND ekpo~mwskz = @<ls_tb>-mwskzINTO TABLE @DATA(lt_ekpo_update_success).IF sy-subrc = 0 AND lt_ekpo_update_success IS NOT INITIAL."po价格等更新检查通过clear lt_ekpo_update_success.ELSE."po价格等更新检查未通过<ls_tb>-type = 'E'.<ls_tb>-message = '价格更新失败'.CONTINUE.ENDIF."20190927 add : ---------------------------------------------------------------------------------------------end.ELSE.<ls_tb>-type = 'E'.<ls_tb>-message = '价格更新失败'.CLEAR ls_poitem.REFRESH lt_poitem.CLEAR ls_poitemx.REFRESH lt_poitemx.CONTINUE.ENDIF.CLEAR ls_poitem.REFRESH lt_poitem.CLEAR ls_poitemx.REFRESH lt_poitemx.ENDIF."过账。CLEAR ls_return.REFRESH lt_return.ls_gh-pstng_date = ih-pstng_date."过帐日期ls_gh-doc_date = ih-doc_date."凭证日期ls_gh-ref_doc_no = ih-incom."参考凭证编号 -来料单号ls_gh-bill_of_lading = ih-bill_of_lading."收货时提单号ls_gh-header_txt = ih-header_txt."凭证抬头文本ls_gi-material_long = <ls_tb>-material."物料编号ls_gi-plant = <ls_tb>-plant."工厂ls_gi-stge_loc = <ls_tb>-stge_loc."库存地点ls_gi-batch = <ls_tb>-batch. "批号ls_gi-move_type = <ls_tb>-move_type. "移动类型ls_gi-entry_qnt = <ls_tb>-entry_qnt."以录入项单位表示的数量CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'EXPORTINGinput    = <ls_tb>-entry_uomlanguage = sy-languIMPORTINGoutput   = <ls_tb>-entry_uom.ls_gi-entry_uom = <ls_tb>-entry_uom."条目单位ls_gi-po_number = <ls_tb>-po_number. "采购订单号ls_gi-po_item = <ls_tb>-po_item. "采购凭证的项目编号ls_gi-item_text = <ls_tb>-item."项目文本ls_gi-mvt_ind = 'B'. "移动标识 fix value B 表示采购订单收货APPEND ls_gi TO lt_gi.CALL FUNCTION 'BAPI_GOODSMVT_CREATE'EXPORTINGgoodsmvt_header  = ls_ghgoodsmvt_code    = '01'IMPORTINGmaterialdocument = <ls_tb>-materialdocument  "物料凭证编号matdocumentyear  = <ls_tb>-matdocumentyear   "物料凭证年度TABLESgoodsmvt_item    = lt_gireturn           = lt_return.IF sy-subrc = 0.IF <ls_tb>-materialdocument IS NOT INITIAL.<ls_tb>-type = 'S'.ENDIF.READ TABLE lt_return INTO ls_return INDEX 1.IF sy-subrc = 0.<ls_tb>-type = ls_return-type.<ls_tb>-id = ls_return-id.<ls_tb>-number = ls_return-number.<ls_tb>-message = ls_return-message.<ls_tb>-log_no = ls_return-log_no.<ls_tb>-log_msg_no = ls_return-log_msg_no.<ls_tb>-message_v1 = ls_return-message_v1.<ls_tb>-message_v2 = ls_return-message_v2.<ls_tb>-message_v3 = ls_return-message_v3.<ls_tb>-message_v4 = ls_return-message_v4.<ls_tb>-parameter = ls_return-parameter.<ls_tb>-row = ls_return-row.<ls_tb>-field = ls_return-field.<ls_tb>-system = ls_return-system.CLEAR ls_return.IF lines( lt_return ) > 1.lv_message_str = ''.LOOP AT lt_return INTO ls_return.lv_message_str = lv_message_str && ls_return-type && ls_return-message && ','.ENDLOOP.<ls_tb>-message = lv_message_str.ENDIF.ENDIF.IF <ls_tb>-type = 'S'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "BAPI事务提交EXPORTINGwait = 'X'."20190927 zhongjz update :注释ELSE.CONTINUE. 代码如下:
*        ELSE.
*          CONTINUE.ENDIF.ELSE.<ls_tb>-type = 'E'.<ls_tb>-message = '过账失败'.CLEAR ls_gh.CLEAR ls_gi.REFRESH lt_gi.CLEAR ls_return.REFRESH lt_return.CONTINUE.ENDIF.CLEAR ls_gh.CLEAR ls_gi.REFRESH lt_gi.CLEAR ls_return.REFRESH lt_return.ENDLOOP."==============4.对过账成功的记录 记录log到ztmm_140.DATA ls_tlog TYPE ztmm_140.DATA lt_tlog TYPE TABLE OF ztmm_140.DATA lv_date LIKE sy-datum.DATA lv_time LIKE sy-uzeit.DATA lv_tzone LIKE  tzonref-tzone.DATA lv_tstamp LIKE tzonref-tstamps.lv_date = sy-datum.lv_time = sy-uzeit.CONVERT DATE lv_date TIME lv_time INTO TIME STAMP lv_tstamp TIME ZONE lv_tzone."20190927 zhongjz upate : "不仅仅是成功的记录存入log table, 所有成功或者失败的都需要存入log table"
*    LOOP AT itab ASSIGNING FIELD-SYMBOL(<ls_itab_success>) WHERE materialdocument IS NOT INITIAL AND type = 'S'.LOOP AT itab ASSIGNING FIELD-SYMBOL(<ls_itab_success>).ls_tlog-z_tiwmstamp = lv_tstamp. "时间搓ls_tlog-incom = ih-incom."来料单号ls_tlog-item = <ls_itab_success>-item."项次ls_tlog-ebeln = <ls_itab_success>-po_number."采购凭证编号ls_tlog-ebelp = <ls_itab_success>-po_item."采购凭证的项目编号ls_tlog-budat = ih-pstng_date."凭证中的过账日期ls_tlog-bldat = ih-doc_date."凭证中的凭证日期ls_tlog-frbnr = ih-bill_of_lading."收货时提单号ls_tlog-bktxt = ih-header_txt."凭证抬头文本ls_tlog-werks = <ls_itab_success>-plant."工厂ls_tlog-matnr = <ls_itab_success>-material."物料编号ls_tlog-lgort = <ls_itab_success>-stge_loc."库存地点ls_tlog-charg = <ls_itab_success>-batch."批号ls_tlog-erfmg = <ls_itab_success>-entry_qnt."以录入项单位表示的数量ls_tlog-z_erfme = <ls_itab_success>-entry_uom."条目单位ls_tlog-netpr = <ls_itab_success>-netpr."净价ls_tlog-mwskz = <ls_itab_success>-mwskz."销售/购买税代码ls_tlog-peinh = <ls_itab_success>-peinh."价格单位ls_tlog-mblnr = <ls_itab_success>-materialdocument."物料凭证编号ls_tlog-mjahr = <ls_itab_success>-matdocumentyear."物料凭证的年份ls_tlog-z_type = <ls_itab_success>-type."单字符标记ls_tlog-z_wmssage = <ls_itab_success>-message."Char255APPEND ls_tlog TO lt_tlog.ENDLOOP.MODIFY ztmm_140 FROM TABLE lt_tlog.CLEAR ls_tlog.REFRESH lt_tlog.*    status = 'S'.
*    message = ''.ELSE.status = 'E'.message = '行项目不能为空!'.ENDIF.*-----------------------------------------------------------------------zlog_save2 'R'.
ENDFUNCTION.

相关文章:

SAP_ABAP_接口技术_RFC远程函数实践总结

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型&#xff0c;ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977 SAP接…...

计算机 --> 磁盘 --> 分区

一、分区&#xff1b;步骤较完整&#xff0c;未测试 网址&#xff1a;电脑硬盘怎么分区&#xff1f;C盘/D盘/E盘......快来创建自己的DIY磁盘吧&#xff01;_e盘怎么创建_布 迪的博客-CSDN博客...

3D视觉测量:形位公差 平面度测量(附源码)

文章目录 0. 测试效果1. 基本内容2. 实现方法3. 代码实现4. 参考文章目录:3D视觉测量目录微信:dhlddxB站: Non-Stop_0. 测试效果 1. 基本内容 平面度是一个表达平面平整程度的度量指标,它描述了一个表面与一个理想平面之间的偏差程度。在工程和制造领域,平面度是一个重要的…...

vmware虚拟机远程开发

目录 1. 下载vmware2. 下载ubuntu镜像3. 安装4. 做一些设置4.1 分辨率设置4.2 语言下载4.3 输入法设置4.4 时区设置 5. 直接切换管理员权限6. 网络6.1 看ip6.2 ssh 7. 本地编译器连接远程服务器7.1 创建远程部署的配置7.2 文件同步7.3 远程启动项目 8. ubuntu安装golang环境8.1…...

Web安全——穷举爆破上篇(仅供学习)

Web安全 一、概述二、常见的服务1、burpsuite 穷举后台密码2、burpsuite 对 webshell 穷举破解密码3、有 token 防御的网站后台穷举破解密码3.1 burpsuite 设置宏获取 token 对网站后台密码破解3.2 编写脚本获取token 对网站后台密码破解 4、针对有验证码后台的穷举方法4.1 coo…...

POJ 3045 Cow Acrobats 二分+优先队列

一、题目大意 题目中给出了N头牛&#xff0c;这些牛要互相叠罗汉&#xff0c;牛i承担的风险risk[i]为牛i上面的牛的质量之和sum[i]&#xff08;如果上面没有牛就是0&#xff09;减去牛i的力量strength[i]&#xff0c;即risk[i]sum[i]-strength[i] 我们要优化这个叠罗汉的顺序…...

手写实现call() apply() bind()函数,附有详细注释,包含this指向、arguments讲解

手写实现call() apply() bind()函数是很经典的问题&#xff0c;但是能掰扯清楚的文章确实不算多&#xff0c;于是笔者才决定写下本文&#xff0c;希望能给读者带来一些启发&#xff0c;如有错误欢迎指正。 目录 补充知识 函数中的this指向 类数组对象arguments call() 原理…...

MySQL中日期、时间直接相减的坑

前言 在牛客网上写一道 SQL 题时&#xff0c;需要计算两个日期之间相隔的秒数&#xff0c;我在写的时候直接将两个日期进行相减&#xff0c;得出来的值却不是相差的秒数。 情景再现 我在 MySQL 中进行了测试&#xff0c;得出的结论是&#xff1a;如果日期类型直接相减&#…...

漏洞发现-web应用发现探针类型利用(43)

关于在真实环境下面&#xff0c;这个漏洞该如何发现 这里老师把它分成了三块第一类是 #已知cms 如常见的dedecms&#xff0c;discuz&#xff0c;wordpress等源码结构&#xff0c;这些都是网上比较知名的php源码的cms的名称&#xff0c;这是我们在国内常见的几个程序&#xf…...

专门针对开发人员,攻击者利用Rust获取操作系统信息

近日&#xff0c;研究人员在 Rust 编程语言的 crate 注册表中发现了一些恶意软件包&#xff0c;专门针对开发人员。 Phylum 在上周发布的一份报告中称&#xff0c;这些库是由一个名为 "amaperf "的用户在 2023 年 8 月 14 日至 16 日之间上传的。现已删除的软件包名…...

PHP8的箭头函数-PHP8知识详解

php 7.4 引入了箭头函数&#xff08;Arrow Functions&#xff09;&#xff0c;并在 PHP 8 中得到了进一步改进和扩展。 箭头函数是一种更简洁的匿名函数形式&#xff0c;它们提供了一种更便捷的方式来定义轻量级的、单行的回调函数。 箭头函数的语法如下&#xff1a; fn (参…...

初识PHP编程:探索Web开发的起点

初识PHP编程&#xff1a;探索Web开发的起点 PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛使用的服务器端脚本语言&#xff0c;专门用于Web开发。它的强大功能和简单易学的语法使得它成为初学者和专业开发者的首选。在本文中&#xff0c;我们将探索什么是PHP&…...

Git——Windows平台创建gitee私有仓库详解

目录 1. 安装git 2. gitbash配置 2.1 设置 2.2 生成key 2.3 项目管理 2.3.1 本地新建 2.3.2 clone远程仓库的工程到本地改文件 1. 安装git 默认安装。 2. gitbash配置 2.1 设置 打开gitbash&#xff0c;设置用户名和邮箱&#xff1a; git config --global user.name …...

Git基础教程-常用命令整理:学会Git使用方法和错误解决

目录 一、了解Git的基本概念 二、Git的安装和配置 Git的安装 Git的配置 用户信息 文本编辑器 差异分析工具 查看配置信息 三、Git的基本操作 基本原理 基本操作命令 基本操作示例 场景一&#xff1a;创建新仓库 场景二&#xff1a;拉取并编辑远程仓库 四、常见问…...

Ops实践 | 国产化KylinOS系统中快速部署企业内部高性能DNS服务器、时间同步服务器 (精选)...

各位看友&#xff0c;由于微信公众号推送机制改变&#xff0c;现在需要设置为星标才能收到的本公众号推送消息哟。关注回复【学习交流群】加入【安全开发运维】答疑交流群 请朋友们【多多点击文中的广告】&#xff0c;支持作者更新更多文章。 目录: 本文为作者原创文章&#xf…...

stm32之IIC协议

主要通过两个层面来讲&#xff1a;物理层、协议层。 IIC是一个同步半双工串行总线协议。 一、物理层&#xff08;通信模型&#xff09; 1、最早是飞利浦公司开发的这个协议&#xff0c;最早应用到其产品上去。 2、两线制&#xff08;两根信号线&#xff09; 其中SCL为时钟…...

范式 事务 多表查询

范式 概念&#xff1a;设计数据库时&#xff0c;需要遵循的一些规范。要遵循后边的范式要求&#xff0c;必须遵循前边的所有范式要求 第一范式&#xff1a; 数据库表的每一列都是不可分割的基本数据项 这样子就不满足第一范式 这样子就满足第一范式 存在问题&#xff1a; 数…...

基于白鲸算法优化的BP神经网络(预测应用) - 附代码

基于白鲸算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于白鲸算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.白鲸优化BP神经网络2.1 BP神经网络参数设置2.2 白鲸算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…...

java并发编程 ReentrantLock详解

文章目录 1 概要2 相关文章3 例子4 方法详解4.1 lock()4.2 unlock()4.3 tryLock()4.4 其他公平锁 总结 1 概要 ReentrantLock 通过实现Lock接口的行为&#xff0c;提供锁机制。但是实现委托给了内部的Sync&#xff0c;Sync extends AbstractQueuedSynchronizer&#xff0c;继承…...

Java获取文件内容IO流

文章目录 InputStream和ReaderScannerNIO外传 一般读取文件类的使用字符流即可 InputStream和Reader InputStream和Reader是Java IO中的两个重要的抽象基类&#xff0c;InputStream是二进制流&#xff0c;Reader是字符流。使用InputStream或者Reader读取文件内容可以帮助我们…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...