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

ABAP SALV实现弹出ALV选择

问题场景

需要弹出一个ALV并获取选择的数据

实现思路

  1. 跳转屏幕
  2. 弹出ALV(通过SALV
  3. 弹出ALV(通过REUSE_ALV_POPUP_TO_SELECT

实现效果

因为这里需要的是单选,所以没有多选列
在这里插入图片描述

实现代码

 MODULE sel_zfretype INPUT.DATA:lt_zmmt041 LIKE TABLE OF zmmt041,lt_twlad   LIKE TABLE OF twlad,lt_twlad01 LIKE TABLE OF twlad.DATA:lfdnr TYPE lfdnr_twlad.DATA: lt_msg TYPE rs_t_msg,ls_msg TYPE bal_s_msg.DATA: lf_one_msg_as_sys_msg TYPE flag.DATA go_alv TYPE REF TO cl_salv_table.DATA: go_functions  TYPE REF TO cl_salv_functions_list,go_selections TYPE REF TO cl_salv_selections,go_layout     TYPE REF TO cl_salv_layout,go_display    TYPE REF TO cl_salv_display_settings.DATA: gr_columns TYPE REF TO cl_salv_columns_table.DATA: gr_column TYPE REF TO cl_salv_column_table.DATA lt_rows TYPE salv_t_row.DATA:ls_row TYPE LINE OF salv_t_row.DATA:lv_wlzs LIKE zmmtydand-menge.DATA:BEGIN OF lt_sel OCCURS 1,zbjh       LIKE zmmt041-zbjh,zxmh       LIKE zmmt041-zxmh,zfylx      LIKE zmmt041-zfylx,zfylx_t    LIKE zmmt041-zfylx_t,zvendor    LIKE zmmt041-zvendor,name2      LIKE zmmt041-name2,zkunnr     LIKE zmmt041-zkunnr,name1      LIKE zmmt041-name1,zarea      LIKE zmmt041-zarea,zcity      LIKE zmmt041-zcity,zcountry   LIKE zmmt041-zcountry,zarea_t    LIKE zsdt010-zarea_t,zcity_t    LIKE zsdt010-zcity_t,zcountry_t LIKE zsdt010-zcounty_t,zdj        LIKE zmmt041-zdj,zdtszl     LIKE zmmt041-zdtszl,zsl        LIKE zmmt041-zsl,zbz        LIKE zmmt041-zbz.DATA:END OF lt_sel.DATA:lt_lfa1     LIKE TABLE OF lfa1 WITH HEADER LINE,lt_zsdt0101 TYPE TABLE OF zsdt010 WITH HEADER LINE.REFRESH:lt_zmmt041,lt_twlad,lt_twlad01."校验供应商IF g_wa_data-lifnr IS INITIAL.REFRESH lt_msg.CLEAR ls_msg.ls_msg-msgty = 'E'.ls_msg-msgid = 'ZMM01'.ls_msg-msgno = '113'.APPEND ls_msg TO lt_msg.IF lt_msg IS NOT INITIAL.cl_epic_ui_services=>show_messages_with_alog(it_messages       = lt_msgiv_one_msg_direct = lf_one_msg_as_sys_msg ).CLEAR:g_wa_item_fre-zfretype.RETURN.ENDIF.ENDIF."处理费用类型描述CHECK g_wa_item_fre-zfrename <> '运输费用'.IF g_wa_item_fre-zfrename EQ '运输费用'.RETURN.ELSE.SELECT SINGLE zfrename INTO g_wa_item_fre-zfrenameFROM zmmt037WHERE zfretype  = g_wa_item_fre-zfretype.ENDIF.CLEAR:g_wa_item_fre-zfredj,g_wa_item_fre-zfresl,g_wa_item_fre-zfretax,g_wa_item_fre-zfrecefy,g_wa_item_fre-zfreje."处理单价和税率SELECT * FROM zmmt041 INTO CORRESPONDING FIELDS OF TABLE lt_zmmt041WHERE zvendor =  g_wa_data-lifnr AND vstel = g_wa_data-vstelAND zwxp = g_wa_data-zwxp AND zfylx = g_wa_item_fre-zfretypeAND zstatus = '3' AND zyxqc < sy-datum AND zyxqd > sy-datumAND zwzc = g_wa_data-zwzc."modify by wangk at 20230214 其他费用选择逻辑变更"处理最小桶数/重量,过滤高于最小桶数/重量的lv_wlzs = 0.LOOP AT g_it_item.lv_wlzs = lv_wlzs + g_it_item-menge.ENDLOOP.DELETE lt_zmmt041[] WHERE zdtszl >= lv_wlzs.IF lt_zmmt041[] IS INITIAL.g_wa_item_fre-zfrejhw = 'X'.RETURN.ENDIF."选择报价REFRESH:lt_sel,lt_lfa1,lt_zsdt0101.MOVE-CORRESPONDING lt_zmmt041[] TO lt_sel[].SELECT * FROM lfa1 INTO CORRESPONDING FIELDS OF TABLE lt_lfa1FOR ALL ENTRIES IN lt_selWHERE lifnr = lt_sel-zvendor.SELECT * FROM zsdt010 INTO CORRESPONDING FIELDS OF TABLE lt_zsdt0101.LOOP AT lt_sel INTO DATA(ls_sel)."供应商READ TABLE lt_lfa1 WITH KEY lifnr = ls_sel-zvendor.IF sy-subrc = 0.ls_sel-name2 = lt_lfa1-sortl.ENDIF."三级地址IF ls_sel-zarea IS NOT INITIAL.READ TABLE lt_zsdt0101 WITH KEY zarea = ls_sel-zarea.IF sy-subrc = 0.ls_sel-zarea_t = lt_zsdt0101-zarea_t.ENDIF.ENDIF.IF ls_sel-zcity IS NOT INITIAL.READ TABLE lt_zsdt0101 WITH KEY zcity = ls_sel-zcity zarea = ls_sel-zarea.IF sy-subrc = 0.ls_sel-zcity_t = lt_zsdt0101-zcity_t.ENDIF.ENDIF.IF ls_sel-zcountry IS NOT INITIAL.READ TABLE lt_zsdt0101 WITH KEY zcounty = ls_sel-zcountry  zcity = ls_sel-zcity zarea = ls_sel-zarea.IF sy-subrc = 0.ls_sel-zcountry_t = lt_zsdt0101-zcounty_t.ENDIF.ENDIF.MODIFY lt_sel FROM ls_sel.CLEAR:ls_sel.ENDLOOP.TRY.cl_salv_table=>factory(IMPORTINGr_salv_table = go_alv"方法生成的ALV容器对象CHANGINGt_table      = lt_sel[] )."alv展示的数据CATCH cx_salv_msg.ENDTRY.go_functions = go_alv->get_functions( ).go_functions->set_all( 'X' )."设置默认按键go_selections = go_alv->get_selections( ).go_selections->set_selection_mode( if_salv_c_selection_mode=>single )."设置选择模式go_display = go_alv->get_display_settings( ).go_display->set_fit_column_to_table_size( 'X' )."列自适应gr_columns = go_alv->get_columns( ).gr_columns->set_optimize( 'X' ).gr_column ?= gr_columns->get_column( 'ZBZ' )."需处理的列gr_column->set_long_text( '备注' ).gr_column->set_medium_text( '备注' ).gr_column->set_short_text( '备注' ).
*gr_column->set_output_length( 15 ).gr_column ?= gr_columns->get_column( 'NAME2' )."需处理的列gr_column->set_long_text( '分包方' ).gr_column->set_medium_text( '分包方' ).gr_column->set_short_text( '分包方' ).gr_column ?= gr_columns->get_column( 'NAME1' )."需处理的列gr_column->set_long_text( '送达方' ).gr_column->set_medium_text( '送达方' ).gr_column->set_short_text( '送达方' ).gr_column ?= gr_columns->get_column( 'ZAREA_T' )."需处理的列gr_column->set_long_text( '目的城市(省)' ).gr_column->set_medium_text( '目的城市(省)' ).gr_column->set_short_text( '省' ).gr_column ?= gr_columns->get_column( 'ZCITY_T' )."需处理的列gr_column->set_long_text( '目的城市(市)' ).gr_column->set_medium_text( '目的城市(市)' ).gr_column->set_short_text( '市' ).gr_column ?= gr_columns->get_column( 'ZCOUNTRY_T' )."需处理的列gr_column->set_long_text( '目的城市(县//镇)' ).gr_column->set_medium_text( '目的城市(县//镇)' ).gr_column->set_short_text( '县/区/镇' ).gr_column ?= gr_columns->get_column( 'ZDTSZL' )."需处理的列gr_column->set_long_text( '最低桶数/重量' ).gr_column->set_medium_text( '最低桶数/重量' ).gr_column->set_short_text( '最低桶数/重量' ).gr_column ?= gr_columns->get_column( 'ZDJ' )."需处理的列gr_column->set_long_text( '单价' ).gr_column->set_medium_text( '单价' ).gr_column->set_short_text( '单价' ).gr_column ?= gr_columns->get_column( 'ZAREA' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZCITY' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZCOUNTRY' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZFYLX' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZBJH' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZXMH' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZVENDOR' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZKUNNR' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZSL' ).gr_column->set_visible( cl_salv_column_table=>false ).IF go_alv IS BOUND.go_alv->set_screen_popup(start_column = 10end_column  = 110start_line  = 5end_line    = 15 ).go_alv->display( ). "调用显示方法ENDIF.REFRESH:lt_rows.lt_rows = go_selections->get_selected_rows( ).IF lt_rows[] IS INITIAL.g_wa_item_fre-zfrejhw = 'X'.RETURN.ENDIF.LOOP AT lt_rows INTO ls_row.READ TABLE lt_sel INTO DATA(ls_zmmt041) INDEX ls_row.g_wa_item_fre-zfredj = ls_zmmt041-zdj.g_wa_item_fre-zfretax = ls_zmmt041-zsl.g_wa_item_fre-zfrejhw = ''.CLEAR:ls_row.ENDLOOP.
ENDMODULE.     

实现过程思路

  1. 因为屏幕这块做的比较多了,所以这次就想通过ALV实现,一开始使用的函数:REUSE_ALV_POPUP_TO_SELECT。使用这个函数遇到了1个问题:无法实现单选。一直没有找到解决方案,就放弃了。
  2. 采用SALV实现,系统提供了一个示例程序可以参考:SALV_TEST_TABLE_SELECTIONS
    使用这个方案也是需要解决几个问题:a.列的宽度自适应 b.隐藏列 c.实现单单选效果 d.修改列对应的描述 e.获取返回的数据
    问题a: 想通过下面这个方法实现
go_display = go_alv->get_display_settings( ).
go_display->set_fit_column_to_table_size( 'X' )."列自适应

但是调试一直不生效,没找到问题出在哪里。
后面通过另外一种方案实现:

gr_columns = go_alv->get_columns( ).
gr_columns->set_optimize( 'X' ).

成功达到了想要的效果。
问题b:
这里我想到了fieldcat,但是SALV的fieldcat是通过以下实现的

gr_column ?= gr_columns->get_column( 'ZAREA' ).
gr_column->set_visible( cl_salv_column_table=>false ).

问题c:

go_selections = go_alv->get_selections( ).
go_selections->set_selection_mode( if_salv_c_selection_mode=>single )."设置选择模式

这里有几种选择模式
在这里插入图片描述
问题d:

gr_columns = go_alv->get_columns( ).
gr_column ?= gr_columns->get_column( 'ZBZ' )."需处理的列
gr_column->set_long_text( '备注' ).
gr_column->set_medium_text( '备注' ).
gr_column->set_short_text( '备注' ).
*gr_column->set_output_length( 15 ).

gr_column下面有很多方法
在这里插入图片描述
这里面也有几个关于前导0的函数,我也是多次调试没有生效,截止到现在没有找到问题的原因,因为最近需求比较急,我就没花时间去深究。
问题e:
在display( )方法后面可以通过函数获取选择的行。

IF go_alv IS BOUND.go_alv->set_screen_popup(start_column = 10end_column  = 110start_line  = 5end_line    = 15 ).go_alv->display( ). "调用显示方法
ENDIF.REFRESH:lt_rows.
lt_rows = go_selections->get_selected_rows( ).LOOP AT lt_rows INTO ls_row.READ TABLE lt_sel INTO DATA(ls_zmmt041) INDEX ls_row.
ENDLOOP.

附加收获

下面是一段逻辑流,遇到的问题及解决方案:

  1. 编辑后保存不了——没有写FIELD
  2. 写了MODULE没有生效——需要计算的数据一定顺序一定在被计算的后面,比如下面的zfreje和zfrecefy是由zfredj和zfresl计算出来的,那么顺序上zfreje和zfrecefy要在上面
  3. 改了zfretype其他字段没有更新——因为zfretype的优先级最高,所以要放在最后,这样zfretype对应的MODULE才会覆盖前面的字段。
  LOOP AT g_it_item_fre.CHAIN.FIELD g_wa_item_fre-zno.FIELD g_wa_item_fre-zfreje.FIELD g_wa_item_fre-zfrecefy.FIELD g_wa_item_fre-zfredj MODULE js_zfreje ON REQUEST.FIELD g_wa_item_fre-zfresl MODULE js_zfreje ON REQUEST.FIELD g_wa_item_fre-zfretax.FIELD g_wa_item_fre-zfrejhw.FIELD g_wa_item_fre-zfretype MODULE sel_zfretype ON REQUEST.MODULE tab_item_fre_modify ON CHAIN-REQUEST.ENDCHAIN.FIELD g_wa_item_fre-boxMODULE tab_item_fre_mark ON REQUEST.ENDLOOP.

相关文章:

ABAP SALV实现弹出ALV选择

问题场景 需要弹出一个ALV并获取选择的数据 实现思路 跳转屏幕弹出ALV&#xff08;通过SALV&#xff09;弹出ALV&#xff08;通过REUSE_ALV_POPUP_TO_SELECT&#xff09; 实现效果 因为这里需要的是单选&#xff0c;所以没有多选列 实现代码 MODULE sel_zfretype INPUT.…...

git check-pick,git patch 与 git stash 详解

大家好&#xff0c;我是 17。 今天和大家聊一聊 git check-pick&#xff0c;git patch 与 git stash 的用法。 git cherry-pick 为什么要用 cherry-pick? 不适合 merge 的场景就可以考虑 cherry-pick。 试想下面这些场景 只想同步分支的部分提交。两个分支是两上完全独立…...

OA漏洞-到处搜集整理

一米OA getfile.jsp 任意文件读取漏洞 原文链接 漏洞复现 一米OA getfile.jsp 任意文件读取漏洞 一米OA协同办公系统,集成了OA办公自动化系统、手机客户端、专业报表工具,为全国千万企业用户提供全功能、性价比高的OA软件。一米OA getfile.jsp文件存在任意文件读取漏洞&am…...

web端接收读卡器卡片信息

项目背景 通过电脑连接的读卡器读取卡片信息&#xff0c;并由web页面接收和处理卡片信息。 读卡器抛出卡片信息流程 卡片贴近或放置到读卡器上读卡器解析卡片信息&#xff0c;并形成固定格式的字符串&#xff0c;包括的信息有&#xff1a;卡片写入的数据、卡片原数据&#x…...

BUUCTF-练习场-WEB-第一部分(8道)

[极客大挑战 2019]EasySQL 1payload&#xff1a;1 or 11#是闭合前面的查询语句&#xff0c;or 11恒成立&#xff0c;可以使用or句子绕过判断&#xff0c;#用于注释&#xff0c;注释后面的内容不再执行&#xff0c;所以该sql命令会返回表内所有内容&#xff0c;其实就是实现一个…...

Java Reflection 实战- Class类

Java Reflection 实战 - Class Java 反射使得在运行时检查类、接口、字段和方法成为可能&#xff0c;而不需要在编译时知道类、方法等的名称。也可以使用反射来实例化新对象、调用方法和获取/设置字段值。 Java反射的功能相当强大&#xff0c;可以说是非常有用。例如&#xff…...

背包问题理解思路(01背包、完全背包、分组背包)

这两天把经典的三个背包问题看了一下&#xff0c;网上大多文章是以代码和公式为主&#xff0c;因为平时没刷过算法题所以理解起来花了些时间&#xff0c;固写一篇文章记录理解思路&#xff0c;本文不包含代码实现&#xff08;理解了思路代码实现应该是小问题&#xff0c;网上一…...

Mr. Cappuccino的第39杯咖啡——Kubernetes之深入理解Pod

Kubernetes之深入理解PodPod相关概念Pod详细配置清单Pod核心配置Pod基本配置1. 创建yaml文件2. 创建namespace并根据yaml文件创建资源3. 查看namespace下的pod列表以及pod的详细信息Pod中多个容器的名称和端口号不能相同Pod镜像拉取策略Pod环境变量Pod端口相关设置Pod资源相关配…...

SqlSession 和 SqlSessionTemplate 简单使用及注意事项

1、SqlSession 简单使用 先简单说下 SqlSession 是什么&#xff1f;SqlSession 是对 Connection 的包装&#xff0c;简化对数据库操作。所以你获取到一个 SqlSession 就相当于获取到一个数据库连接&#xff0c;就可以对数据库进行操作。 SqlSession API 如下图示&#xff1a;…...

1. QSaveFile和QFile的简单使用

1. 说明 QSaveFile和QFile两个类都是用来操作文件的&#xff0c;区别在于QSaveFile在对文件进行写入时有一种保护机制&#xff0c;再写入出错时&#xff0c;不会对源文件中的内容进行操作。该类在执行写操作时&#xff0c;会先将内容写入到一个临时文件中&#xff0c;如果没有…...

工业4.0是如何优化垃圾处理行业的

如今&#xff0c;工业4.0正在影响着制造业和物流等行业&#xff0c;其发展潜力在未来还有望进一步扩大。一些全球领先的垃圾处理公司已经开始在水处理和废物回收等领域应用工业4.0。工业4.0的创新给这个领域带来了一些必要的改进。随着环境危机的加剧&#xff0c;垃圾处理行业面…...

vue 动画(transition)

一、 实现原理 在插入、更新、移除 DOM 元素时&#xff0c;在合适的时候给元素添加样式类名&#xff0c;配合 CSS 样式使用&#xff0c;实现动画效果。 通俗来讲&#xff0c;就是将要进行动画操作的 DOM 元素用 transition 标签包裹起来。在此html元素运动前&#xff0c;运动…...

Python 爬虫工程师面试经验分享,金三银四

&#x1f643; 作为一个 Python 爬虫工程师&#xff0c;我可以分享一些我在面试中的经验和建议。 首先一点是在面试中要表现自信、友好、乐于合作&#xff0c;同时对公司的业务和文化也要有一定的了解和兴趣&#xff0c;这些也是公司在招聘中看重的因素。 文章目录&#x1f55b…...

MySQL实战篇-MySQL 降配导致的实例宕机

问题描述 由于近期对服务器进行了降配&#xff0c;该mysql数据库会进行批量写入操作&#xff0c;直接导致实例宕机 查看错误日志: 2021-02-02T09:09:23.557505Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 16791ms. The settings might not be optimal. (fl…...

时隔多年,这次我终于把动态代理的源码翻了个地儿朝天

本文内容整理自 博学谷狂野架构师 动态代理简介 ​ Proxy模式是常用的设计模式&#xff0c;其特征是代理类与委托类有同样的接口&#xff0c;代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类&#xff0c;以及事后处理消息等。 用户可以更加结构图&#xff0…...

数据分析-深度学习 Tensorflow Day6

我们需要解决的问题&#xff1a;1&#xff1a; 什么是bp 神经网络&#xff1f;2&#xff1a;理解bp神经网络需要哪些数学知识&#xff1f;3&#xff1a;梯度下降的原理4: 激活函数5&#xff1a;bp的推导。1.什么是bp网络&#xff1f;引用百度知道回复&#xff1a;“我们最常用的…...

leaflet 设置多个marker,导出为一个geojson文件(066)

第066个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用L.marker设置多个markers, 通过数据重组,导出为geojson文件。 这里面 ayer instanceof L.Marker 是一个很重要的判断条件,可以灵活地去运用。 直接复制下面的 vue+openlayers源代码,操作2分钟即可…...

企业与第三方供应商合作时,会存在哪些安全风险?

随着现代社会的发展&#xff0c;企业供应链、产业供应链已日渐成熟。其中&#xff0c;供应商与企业的关系也由最初的纯粹买卖关系发展成了合作伙伴关系。在整个供应链体系中&#xff0c;供应商与其受众承担着供应链中环环相扣的责任&#xff0c;可以说&#xff0c;企业安全的薄…...

技术源自洛克希德·马丁,光场XR眼镜FYR解析

专注于医疗场景的一家XR眼镜厂商FYR&#xff08;全称&#xff1a;FYR Medical&#xff09;近期亮相&#xff0c;并宣布完成了260万美元A轮融资&#xff0c;本轮融资由NuVasive领投&#xff0c;资金将用于开发世界上第一个XR光场“放大镜”类产品。据青亭网了解&#xff0c;NuVa…...

剑指 Offer 10- II. 青蛙跳台阶问题(LeetCode 70. 爬楼梯)(动态规划打表)

题目&#xff1a; 链接&#xff1a;剑指 Offer 10- II. 青蛙跳台阶问题&#xff1b;LeetCode 70. 爬楼梯 难度&#xff1a;简单 相关博文&#xff1a;剑指 Offer 10- I. 斐波那契数列&#xff08;动态规划打表&#xff09; 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...