RERCS系统开发实战案例-Part05 FPM Application的Feeder Class搜索组件的实施
1、通过事务码 SE24对Feeder Class实施
1)接口页签的简单说明:
① IF_FPM_GUIBB:通用UI构建块,整个UIBB模块的基础接口;
② IF_FPM_GUIBB_SEARCH:通用搜索UI构建块,搜索组件UIBB的基础接口;
③ IF_FPM_GUIBB_LIST:通用列表UI构建块,列表组件UIBB的基础接口;
④ IF_FPM_GUIBB_OVS_SEARCH:FPM搜索:用于相关搜索的特殊OVS接口,用于特殊搜索条件字段扩展(例如搜索帮助引用等);
⑤ IF_FPM_GUIBB_OVS:接口提供回调方法使用OVS(Object Value Selector)与POWL(Personal Object Worklist),添加IF_FPM_GUIBB_OVS_SEARCH时会自动带出该接口,一般是嵌套使用;
备注:IF_FPM_GUIBB_OVS_SEARCH提供GUIBB搜索的搜索条件,IF_FPM_GUIBB_OVS返回搜索条件的结果。
IF_FPM_GUIBB_OVS包括以下四个方法:
HANDLE_PHASE_0:OVS配置,通过调用IF_WD_OVS->set_configuration返回配置的字段;
HANDLE_PHASE_1:OVS初始化字段;
HANDLE_PHASE_2:获取数据,通过调用IF_WD_OVS->set_output_table返回配置字段的结果;
HANDLE_PHASE_3:设置返回值;
2)Feeder Class中的基本方法:在接口页签继承的接口,自然也会把其中的方法继承过来;
备注:后续列表组件List UIBB的FeederClass的实施便是此处的List UIBB的方法
3)搜索组件Search UIBB方法的实施(包括OVS的方法);
①、方法IF_FPM_GUIBB_OVS_SEARCH~SET_CURRENT_SEARCH_CRITERIA:传递当前搜索界面的信息
METHOD IF_FPM_GUIBB_OVS_SEARCH~SET_CURRENT_SEARCH_CRITERIA.MT_SEARCH_CRITERIA = IT_FPM_SEARCH_CRITERIA.ENDMETHOD.
②、方法IF_FPM_GUIBB_OVS~HANDLE_PHASE_0:配置OVS返回值字段;
METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_0 .DATA: LS_COLUNM_TEXT TYPE WDR_NAME_VALUE.DATA: LT_COLUNM_TEXT TYPE WDR_NAME_VALUE_LIST.DATA: LV_HEADER_TEXT TYPE STRING.CASE IV_FIELD_NAME.WHEN 'ZJBBM'.LV_HEADER_TEXT = '总监部'.LS_COLUNM_TEXT-NAME = 'ORGID'.LS_COLUNM_TEXT-VALUE = '总监部编码'.APPEND LS_COLUNM_TEXT TO LT_COLUNM_TEXT.CLEAR LS_COLUNM_TEXT.LS_COLUNM_TEXT-NAME = 'ORGNM'.LS_COLUNM_TEXT-VALUE = '总监部名称'.APPEND LS_COLUNM_TEXT TO LT_COLUNM_TEXT.CLEAR LS_COLUNM_TEXT.CALL METHOD IO_OVS_CALLBACK->SET_CONFIGURATIONEXPORTINGGROUP_HEADER = LV_HEADER_TEXTCOLUMN_TEXTS = LT_COLUNM_TEXTCOL_COUNT = 2ROW_COUNT = 20.ENDCASE.
ENDMETHOD.
③、方法IF_FPM_GUIBB_OVS~HANDLE_PHASE_1:
无实施要求,直接激活;
④、方法IF_FPM_GUIBB_OVS~HANDLE_PHASE_2:获取配置字段的值;
METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_2 .DATA: LV_QYBM TYPE PHINR.DATA: LT_ZJB TYPE STANDARD TABLE OF TS_ORG.DATA:LT_ZJBBM TYPE TABLE OF ZSJBBM,LS_ZJBBM TYPE ZSJBBM.CASE IV_FIELD_NAME.WHEN 'ZJBBM'.READ TABLE MT_SEARCH_CRITERIA ASSIGNING FIELD-SYMBOL(<FS_SEARCH_CRITERIA>) WITH KEY SEARCH_ATTRIBUTE = 'QYBM'.IF SY-SUBRC = 0.LV_QYBM = <FS_SEARCH_CRITERIA>-LOW.ENDIF.IF LV_QYBM IS NOT INITIAL.DATA(LT_ZJBBM_FIXED_VALUES) = ZRRE_CL_LIB_CCM_UTIL=>GET_ZJB_FIXED_VALUES( IV_QYBM = LV_QYBM ).SORT LT_ZJBBM_FIXED_VALUES BY VALUE.ENDIF.CALL FUNCTION 'ZFM_GET_RCS_AUTH'EXPORTINGIV_OBJECT = 'ZRRE_CONT'TABLESOT_JBBM = LT_ZJBBM.LOOP AT LT_ZJBBM_FIXED_VALUES ASSIGNING FIELD-SYMBOL(<FS_FIXED_VALUES>).READ TABLE LT_ZJBBM INTO DATA(PS_ZJBBM) WITH KEY ID = '*'."* 号直接汇总IF SY-SUBRC = 0.APPEND INITIAL LINE TO LT_ZJB ASSIGNING FIELD-SYMBOL(<FS_ZJB>).<FS_ZJB>-ORGID = <FS_FIXED_VALUES>-VALUE.<FS_ZJB>-ORGNM = <FS_FIXED_VALUES>-TEXT.ELSE.READ TABLE LT_ZJBBM INTO LS_ZJBBM WITH KEY ID = <FS_FIXED_VALUES>-VALUE.IF SY-SUBRC = 0."非 * 号按照授权范围汇总APPEND INITIAL LINE TO LT_ZJB ASSIGNING FIELD-SYMBOL(<FS_ZJBBM>).<FS_ZJBBM>-ORGID = <FS_FIXED_VALUES>-VALUE.<FS_ZJBBM>-ORGNM = <FS_FIXED_VALUES>-TEXT.ENDIF.ENDIF.ENDLOOP.SORT LT_ZJB BY ORGID.CALL METHOD IO_OVS_CALLBACK->SET_OUTPUT_TABLEEXPORTINGOUTPUT = LT_ZJB.ENDCASE.
ENDMETHOD.
⑤、方法IF_FPM_GUIBB_OVS~HANDLE_PHASE_3:设置返回值;
METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_3 .FIELD-SYMBOLS: <FS_ZJB> TYPE TS_ORG.DATA: LO_FPM TYPE REF TO IF_FPM.LO_FPM ?= CL_FPM_FACTORY=>GET_INSTANCE( ).CASE IV_FIELD_NAME.WHEN 'ZJBBM'.ASSIGN IO_OVS_CALLBACK->SELECTION->* TO <FS_ZJB> .IF <FS_ZJB> IS ASSIGNED.CALL METHOD IO_OVS_CALLBACK->CONTEXT_ELEMENT->SET_ATTRIBUTE(NAME = IO_OVS_CALLBACK->CONTEXT_ATTRIBUTEVALUE = <FS_ZJB>-ORGID ).CREATE OBJECT EO_FPM_EVENTEXPORTINGIV_EVENT_ID = 'HANDLE_ENTERED'.ENDIF.ENDCASE.
ENDMETHOD.
⑥、方法IF_FPM_GUIBB~INITIALIZE:初始化UIBB页面,根据BOPF的常量接口的SC_BO_KEY指定BO对象
METHOD IF_FPM_GUIBB~INITIALIZE.MO_FPM ?= CL_FPM_FACTORY=>GET_INSTANCE( ).MO_SRV_MGR = /BOBF/CL_TRA_SERV_MGR_FACTORY=>GET_SERVICE_MANAGER( ZRRE_IF_YSYFBL_C=>SC_BO_KEY ).ENDMETHOD.
⑦、方法IF_FPM_GUIBB~GET_PARAMETER_LIST:获取表单提供程序支持的参数列表;
无实施需求,直接激活。
⑧、方法IF_FPM_GUIBB_SEARCH~GET_DEFINITION:搜索条件字段引用搜索帮助等;
DATA: LT_ENUMERATION TYPE FPMGB_T_NAMEVALUE,LT_FIXED_VALUE TYPE WDR_CONTEXT_ATTR_VALUE_LIST.EO_FIELD_CATALOG_ATTR ?= CL_ABAP_TABLEDESCR=>DESCRIBE_BY_NAME( 'ZRRE_S_BO_YSYFBL_ROOT_C' ).APPEND VALUE #( NAME = 'PRJID' DDIC_SHLP_NAME = 'ZRRE_H_PRJ' ) TO ET_FIELD_DESCRIPTION_ATTR.APPEND VALUE #( NAME = 'LIFNR' DDIC_SHLP_NAME = 'ZRRE_H_BP' ) TO ET_FIELD_DESCRIPTION_ATTR.CLEAR:LT_FIXED_VALUE,LT_ENUMERATION.LT_FIXED_VALUE = ZRRE_CL_LIB_CCM_UTIL=>GET_QY3_FIXED_VALUES( ).LT_ENUMERATION = CORRESPONDING #( LT_FIXED_VALUE MAPPING NAME = TEXT ).APPEND VALUE #( NAME = 'QYBM' ENUMERATION = LT_ENUMERATION MAX_1_VALUE = ABAP_FALSE ) TO ET_FIELD_DESCRIPTION_ATTR.APPEND VALUE #( NAME = 'ZJBBM' OVS_NAME = 'ZRRE_CL_FD_YSYFBL_SEARCH' MAX_1_VALUE = ABAP_FALSE ) TO ET_FIELD_DESCRIPTION_ATTR.
⑨方法IF_FPM_GUIBB_SEARCH~GET_DATA:发起SEARCH操作事件,用于搜索条件下一步获取数据;
METHOD IF_FPM_GUIBB_SEARCH~GET_DATA.DATA: LO_SRV_MGR TYPE REF TO /BOBF/IF_TRA_SERVICE_MANAGER,LO_FPM TYPE REF TO IF_FPM.DATA: LT_SELECTION_PARAMETERS TYPE /BOBF/T_FRW_QUERY_SELPARAM,LS_SELECTION_PARAMETERS TYPE /BOBF/S_FRW_QUERY_SELPARAM,LS_QUERY_OPTIONS TYPE /BOBF/S_FRW_QUERY_OPTIONS.DATA CORE_OBJECT TYPE REF TO /BOBF/IF_TRA_SERVICE_MANAGER .DATA: LS_RSDS TYPE RSDSSELOPT.DATA: LV_AUTH TYPE BOOLEAN.DATA:LT_JBBM TYPE TABLE OF ZSJBBM,LS_JBBM TYPE ZSJBBM,LS_MESSAGES TYPE FPMGB_SEARCH_S_T100_MESSAGE,LS_QUERY_SELPARAM TYPE /BOBF/S_FRW_QUERY_SELPARAM,LV_MSG TYPE STRING.LO_FPM ?= CL_FPM_FACTORY=>GET_INSTANCE( ).LO_SRV_MGR = /BOBF/CL_TRA_SERV_MGR_FACTORY=>GET_SERVICE_MANAGER( ZRRE_IF_YSYFBL_C=>SC_BO_KEY ).CASE IO_EVENT->MV_EVENT_ID.WHEN 'FPM_EXECUTE_SEARCH'.LOOP AT CT_FPM_SEARCH_CRITERIA ASSIGNING FIELD-SYMBOL(<FS_FPM_SEARCH>) WHERE LOW IS NOT INITIAL.LS_SELECTION_PARAMETERS-ATTRIBUTE_NAME = <FS_FPM_SEARCH>-SEARCH_ATTRIBUTE.TRY.LS_RSDS = CL_FPM_GUIBB_SEARCH_CONVERSION=>TO_ABAP_SELECT_OPTION( IS_FPM_SEARCH_ROW = <FS_FPM_SEARCH> ).CATCH CX_FPMGB.CONTINUE.ENDTRY.LS_SELECTION_PARAMETERS-SIGN = LS_RSDS-SIGN.LS_SELECTION_PARAMETERS-OPTION = LS_RSDS-OPTION.LS_SELECTION_PARAMETERS-LOW = LS_RSDS-LOW.LS_SELECTION_PARAMETERS-HIGH = LS_RSDS-HIGH.APPEND LS_SELECTION_PARAMETERS TO LT_SELECTION_PARAMETERS.CLEAR LS_SELECTION_PARAMETERS.ENDLOOP.IF MV_MAXLINES IS NOT INITIAL.LS_QUERY_OPTIONS-MAXIMUM_ROWS = MV_MAXLINES.ENDIF."不输入总监部情况下 获取权限内所有总监部READ TABLE LT_SELECTION_PARAMETERS INTO DATA(LS_SEL) WITH KEY ATTRIBUTE_NAME = 'ZJBBM'.IF SY-SUBRC <> 0.CALL FUNCTION 'ZFM_GET_RCS_AUTH'EXPORTINGIV_OBJECT = 'ZRRE_CONT'TABLESOT_JBBM = LT_JBBM.IF LT_JBBM[] IS INITIAL.MESSAGE E237(/RER/CO) INTO LV_MSG.LS_MESSAGES-MSGID = SY-MSGID.LS_MESSAGES-MSGNO = SY-MSGNO.LS_MESSAGES-SEVERITY = 'E'.APPEND LS_MESSAGES TO ET_MESSAGES.RETURN.ENDIF.READ TABLE LT_JBBM INTO DATA(PS_JBBM) WITH KEY ID = '*'.IF SY-SUBRC <> 0.LOOP AT LT_JBBM INTO LS_JBBM WHERE ID <> '*'.LS_QUERY_SELPARAM-ATTRIBUTE_NAME ='ZJBBM'.LS_QUERY_SELPARAM-SIGN = 'I'.LS_QUERY_SELPARAM-OPTION = 'EQ'.LS_QUERY_SELPARAM-LOW = LS_JBBM-ID.APPEND LS_QUERY_SELPARAM TO LT_SELECTION_PARAMETERS.ENDLOOP.ENDIF.ENDIF.LO_SRV_MGR->QUERY(EXPORTINGIV_QUERY_KEY = ZRRE_IF_YSYFBL_C=>SC_QUERY-ROOT-SELECT_BY_ATTRSIT_SELECTION_PARAMETERS = LT_SELECTION_PARAMETERSIS_QUERY_OPTIONS = LS_QUERY_OPTIONSIV_FILL_DATA = ABAP_TRUEIMPORTINGET_DATA = MT_RESULT ).IF MT_RESULT[] IS INITIAL.MESSAGE E229(/RER/CO) INTO LV_MSG.LS_MESSAGES-MSGID = SY-MSGID.LS_MESSAGES-MSGNO = SY-MSGNO.LS_MESSAGES-SEVERITY = 'E'.APPEND LS_MESSAGES TO ET_MESSAGES.RETURN.ENDIF.CALL METHOD LO_FPM->RAISE_EVENT_BY_IDEXPORTINGIV_EVENT_ID = 'REFRESH'.ENDCASE.ENDMETHOD.
其他无实施需求方法不再一一列举了。
到此,Search UIBB对应Feeder Class的基本实施已完成。
相关文章:
RERCS系统开发实战案例-Part05 FPM Application的Feeder Class搜索组件的实施
1、通过事务码 SE24对Feeder Class实施 1)接口页签的简单说明: ① IF_FPM_GUIBB:通用UI构建块,整个UIBB模块的基础接口; ② IF_FPM_GUIBB_SEARCH:通用搜索UI构建块,搜索组件UIBB的基础接口&…...
算法常见手写代码
1.NMS def py_cpu_nms(dets, thresh):"""Pure Python NMS baseline."""#x1、y1、x2、y2、以及score赋值x1 dets[:, 0]y1 dets[:, 1]x2 dets[:, 2]y2 dets[:, 3]scores dets[:, 4]#每一个检测框的面积areas (x2 - x1 1) * (y2 - y1 1)#按…...
数据结构9——排序
一、冒泡排序 冒泡排序(Bubble Sort),顾名思义,就是指越小的元素会经由交换慢慢“浮”到数列的顶端。 算法原理 从左到右,依次比较相邻的元素大小,更大的元素交换到右边;从第一组相邻元素比较…...
分布式锁实现方案-基于Redis实现的分布式锁
目录 一、基于Lua看门狗实现 1.1 缓存实体 1.2 延迟队列存储实体 1.3 分布式锁RedisDistributedLockWithDog 1.4 看门狗线程续期 1.5 测试类 1.6 测试结果 1.7 总结 二、RedLock分布式锁 2.1 Redlock分布式锁简介 2.2 RedLock测试例子 2.3 RedLock 加锁核心源码分析…...
MTK7628+MT7612 加PA定频数据
1、硬件型号TR726A5G121-DPA PC9.02.0017。如下所示: 2、WIFI5.8 AC模式 42(5120MHz)信道,80带宽 3、WIFI5.8 AC模式 38(5190MHz)信道,40带宽 4、WIFI5.8 AC模式 36(5180 MHz&…...
[信号与系统]关于双线性变换
前言 本文还是前置知识 双线性变换法 双线性变换法(Bilinear Transform)是一种用于将模拟滤波器转换为数字滤波器的方法。它通过将模拟域中的s平面上的传递函数映射到数字域中的z平面上的传递函数来实现这一转换。双线性变换法保证了频率响应在转换过…...
763. 划分字母区间
题目:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表…...
【PostgreSQL】AUTO_EXPLAIN - 慢速查询的日志执行计划
本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。 一、介绍 在本文中,我们将了解 PostgreSQL AUTO_EXPLAIN功能的工作原理,以及为什么应该使用它来收集在生产系统…...
讯飞星火超自然语言合成的完整Demo
依赖文件和功能 requirements.txt 该文件列出了所需的依赖包。 data.py 定义了应用的配置信息,如APPId,APIKey,APISecret等。包含请求数据和请求URL。 main.py 主程序,设置了WebSocket连接,定义了处理消息的各个回调函…...
封装一个上拉加载的组件(无限滚动)
一、封装 1.这个是在vue3环境下的封装 2.整体思路: 2.1传入一个elRef,其实就是一个使用页面的ref。 2.2也可以不传elRef,则默认滚动的是window。 import { onMounted, onUnmounted, ref } from vue; import { throttle } from underscore;ex…...
WHAT - 高性能和内存安全的 Rust(二)
目录 1. 所有权(Ownership)2. 借用(Borrowing)不可变借用可变借用 3. 可变性(Mutability)4. 作用域(Scope)综合示例 了解 Rust 的所有权(ownership)、借用&am…...
办理河南建筑工程乙级设计资质的流程与要点
办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求&…...
分类算法和回归算法区别
分类算法和回归算法在机器学习中扮演着不同的角色,它们的主要区别体现在输出类型、应用场景以及算法目标上。以下是对两者区别和使用场景的详细分析: 一、区别 1.输出类型: 分类算法:输出是离散的类别标签,通常表示为…...
利用Frp实现内网穿透(docker实现)
文章目录 1、WSL子系统配置2、腾讯云服务器安装frps2.1、创建配置文件2.2 、创建frps容器 3、WSL2子系统Centos服务器安装frpc服务3.1、安装docker3.2、创建配置文件3.3 、创建frpc容器 4、WSL2子系统Centos服务器安装nginx服务 环境配置:一台公网服务器(…...
怎么用Excel生成标签打印模板,自动生成二维码
环境: EXCEL2021 16.0 问题描述: 怎么用excel生成标签打印模板自动生成二维码 解决方案: 在Excel中生成标签打印模板并自动生成二维码,可以通过以下几个步骤完成: 1. 准备数据 首先,确保你的Excel表…...
java基于ssm+jsp 美食推荐管理系统
1前台首页功能模块 美食推荐管理系统,在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容,如图1所示。 图1前台首页功能界面图 用户注册,在注册页面可以填写用户名、密码、姓名、联系电话等…...
数据分析:置换检验Permutation Test
欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 置换检验是一种非参数统计方法,它不依赖于数据的分布形态,因此特别适…...
【React】使用Token做路由权限控制
在components/AuthRoute/index.js中 import { getToken } from /utils import { Navigate } from react-router-domconst AuthRoute ({ children }) > {const isToken getToken()if (isToken) {return <>{children}</>} else {return <Navigate to"/…...
机器学习周记(第四十四周:Robformer)2024.6.17~2024.6.23
目录 摘要ABSTRACT1 论文信息1.1 论文标题1.2 论文摘要1.3 论文引言1.4 论文贡献 2 论文模型2.1 问题描述2.2 Robformer2.2.1 Encoder2.2.2 Decoder 2.3 鲁棒序列分解模块2.4 季节性成分调整模块 摘要 本周阅读了一篇利用改进 Transformer 进行长时间序列预测的论文。论文模型…...
JAVA学习笔记DAY10——SpringBoot基础
文章目录 SpringBoot3 介绍SpringBoot 快速入门SpringBootApplication SpringBoot 配置文件统一配置管理Yaml 配置优势tips SpringBoot 整合 SpringMVC静态资源拦截器 interceptor SpringBoot 整合 DruidSpringBoot 整合 MybatisSpringBoot 整合 tx aopSpringBoot 打包 SpringB…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
