ABAP ALV最常规写法及常用功能详解

目录
  • 先导
  • 流程顺序
    • 开发ALV的基本流程:
    • ALV 界面介绍
    • ALV 开发注意事项
  • ALV 基本参数
    • ALV 对象参数
    • ALV 参数控制Layout
    • ALV 参数控制Fieldcat
    • ALV定义事件
  • ALV DEMO
    • 1:声明alv
    • 2:定义内表
    • 3:读取数据
    • 4:字段配置 ALV格式控制.
      • 着重解释
    • 5:定义事件
    • 6:排序(常用功能)
    • 7:显示alv数据
    • 8:按钮操作标题栏等配置
  • 总结

先导

记得刚学ABAP的时候问这问那,问东问西,常常一个可能不怎么用的东西,扣了好久好久.群里的大佬就说,学那么多没必要,以后是会天天写ALV , 讲真 因为 SAP 很多东西都已经通过配置就可以实现, 我们还真就是做表单相关的东西比较多,不能说全部,也是大部分. 好巧今天看到群友问ALV 相关的内容,这里整理一下,希望帮助更多的人 ヾ(◍°∇°◍)ノ゙.

流程顺序

开发ALV的基本流程:

第1步:声明变量

定义ALV所要用到的类型池:TYPE-POOLS: SLIS

针对ALV的控制信息数据(Layout & Fieldcat)

第2步:定义内表
       存放自定义数据文件的数据,以及在ALV中显示

第3步:读取数据

读取数据存放至Internal Table

第4步:ALV格式控制

建立ALV显示样式(layout)和显示字段清单(Field Catalogs)

第5步:定义事件

建立事件清单(Event Catalogs)

第6步:显示ALV

调用ALV Function Module

第7步:用户事件

定义User按键处理事件

普通的ALV的流程如上图,包含所有常规流程.本质上是展示数据的报表. 以及常用语法的熟练使用,数据转换,逻辑计算等.

ALV 界面介绍

ALV组成3大部分

工具栏

标题栏

显示数据的网格控制器 (必要时可以隐藏工具栏和标题栏)

ALV 开发注意事项

注意事项:
1、在ALV中,需要注意所有需要显示的列,都必须在相应的内表中有对应的字段, 字段名字不能写错。
2、在SAP ABAP程序中,字符串的大小写很重要,在单引号包围的字符串中, 一般来说都应该用大写,特别是在调用一些系统的方法时传入字符串参数时。 
3、传入到ALV中的列对应的字段名称也必须使用大写字母,否则数据不会显示出来。 
4、使用宏定义或者子例程可以减少代码量,并且尽可能实现代码的复用。
5、注意在FORM里定义的变量在离开FORM后,就会被系统释放掉,回收内存空间。

ALV 基本参数

ALV 对象参数

ALV开发中两个重要的对象——FIELDCAT和LAYOUT:
    在调用ALV的函数中,除了定义所输出使用的内表之外,
    还有两个部分是必需确认的:列栏位属性和布局属性。
列栏位属性FIELDCAT :
    设置输出中具体字段的名称、类型、格式等属性;
    对于系统结构表,函数可参照此结构自动创建列属性,可以没有调用列栏位属性
布局属性LAYOUT:
    设置输出ALV列表的整体布局的属性,如输出字段的颜色、表格中的线条等。
    没有调用布局属性时,系统按默 认布局输出,不做任何调整。
两对象同属于类型组SLIS,在ALV开发中必须声明类型组SLIS

ALV 参数控制Layout

布局控制[layout]
 布局是用来控制整个ALV的一个布局,比如ALV的标题,是否可编辑,行颜色,列颜色.
 参照ALV的控制结构[LVC_S_LAYO],以后的例子我将详细介绍如何设置行颜色和列颜色.
 详细的结构说明(注意这些字段的取值,单引号内,' '空格代表否,'X' 代表是)
 
   字段名           描述             Value range
   CWIDTH_OPT          最优化宽度            SPACE, 'X'
   SMALLTITLE           小标题             SPACE, 'X'
   GRID_TITLE         标题,在网格和工具条之间       最长70个字符
   NO_HEADERS          列标题隐藏              SPACE, 'X'
   NO_HGRIDLN          隐藏水平线             SPACE, 'X'
   NO_MERGING          禁用单元格合并           SPACE, 'X'
   NO_ROWMARK    禁用系统自带的行选择'X'为D和A的时候隐藏     SPACE, 'X'
   NO_TOOLBAR          隐藏工具条             SPACE, 'X'
   NO_VGRIDLN          隐藏垂直线             SPACE, 'X'
   SEL_MODE           选择模式             SPACE, 'A', 'B', 'C', 'D'
   EXCP_CONDS           合计例外             SPACE, 'X'
   EXCP_FNAME         字段名称带有例外编码        最长30个字符
   EXCP_LED           例外作为 LED            SPACE, 'X'
   EXCP_ROLLN         例外文档的数据元素          SPACE, 'X'
   CTAB_FNAME      带有复杂单元格颜色编码的字段名称     最长30个字符
   INFO_FNAME     带有简单行彩色代码的字段名称        最长30个字符
   ZEBRA        可选行颜色,如果设置了,出现了间隔色带   SPACE, 'X'
   NO_TOTLINE          没有总计             SPACE, 'X'
   NUMC_TOTAL        可以对NUMC字段进行合计        SPACE, 'X'
   TOTALS_BEF     总计输出在第一行,小计在新的值之前      SPACE, 'X'
   STYLEFNAME     设置单元格,比如PUSHBUTTON          最长30个字符

ALV 参数控制Fieldcat

Fieldcat
 data: fieldcat type slis_t_fieldcat_alv with header line.
 it_fieldcat  =  fieldcat[]
 属性
  (用来定义表单中的各个列的相关信息)
   Fieldcat-col_pos = n.            输出列
   Fieldcat-tabname = ‘FIELDNAME’.      对应的内表字段名
   Fieldcat-seltext_s/m/l = ‘列名’.     输出列文本( _s:短文本  _l:长文本)
   Fieldcat-emphasize = ‘CX10’.    带有颜色的高亮列(其中X=(1-7)颜色同format)
   Fieldcat-hotspot = ‘X’.       作为热点显示可触发鼠标触发事件
   Fieldcat-currency = ‘CURRKEY’.   表 TCURX 中的货币名称
   Fieldcat-quantity(3)            计量单位
   Fieldcat-qfieldname           参考计量单位的字段名称
   Fieldcat-round = n.           四舍五入至小数位数下n 位
   Fieldcat-exponent = n.         浮点数的幂指数为n
   Fieldcat-key = ‘X’.           关键字段
   Fieldcat-icon = ‘X’.          作为图标输出
   Fieldcat-symbol = ‘X’.        输出作为符号
   Fieldcat-checkbox = ‘X’.      作为复选框输出
   Fieldcat-just = SPACE, 'R', 'L', 'C'.   对齐方式
   Fieldcat-lzero = ‘X’.          输出前导零
   Fieldcat-no_sign = ‘X’.        输出抑制符号
   Fieldcat-no_zero = ‘X’.        为输出隐藏零
   Fieldcat-edit_mask = SPACE, mask..  输出为mask的模式
   Fieldcat-fix_column = ‘X’.      固定列
   Fieldcat-do_sum = ‘X’.        总计列值总和
   Fieldcat-no_out = ‘X’.         列不输出
   Fieldcat-tech = ‘X’.         该字段为技术字段
   Fieldcat-outputlen = n        列的字符宽度为n
   Fieldcat-decimals_out = n     能控制小数点的位数为n 
   Fieldcat-datatype = C,I,N…   定义数据类型

ALV定义事件

* 建立事件清单(Event Catalogs)
*需定义事件块,否则出错
eventcat_ln-name  =  'TOP_OF_PAGE'.eventcat_ln-form  =  'PAGE_HEADER'.
APPEND  eventcat_ln  TO  eventcat.
事件块:
FORM PAGE_HEADER.
ENDFORM.

ALV DEMO

1:声明alv

代码

REPORT YALVDEMO1.
*第一步 :声明alv相关 变量
TYPE-POOLS:SILS.   "引入slis 包 定义 使用专门alv
data:LT_FIELDCAT  TYPE SLIS_T_FIELDCAT_ALV,   "存储fieldcat 内表, 列表标签相关
      LS_FIELDCAT  TYPE SLIS_FIELDCAT_ALV,
*WA_FIELDCAT  TYPE SLIS_FIELDCAT_ALV,      "定义使用工作区
*ls_fieldcat   like LINE OF     LT_FIELDCAT,
     LS_LAYOUT    TYPE SLIS_LAYOUT_ALV,     "ALV格式控制的结构体
     LT_EVENT TYPE slis_T_event  ,  " 事件的内表
     LS_EVENT TYPE slis_alv_event.  "事件的工作区
DATA:  pgm  LIKE  sy-repid.
DATA LT_SORT TYPE SLIS_T_SORTINFO_ALV .
DATA WA_SORT TYPE SLIS_SORTINFO_ALV.
DATA LS_SETTING TYPE LVC_S_GLAY.
DATA : LV_COLPOS TYPE INT2 .

着重解释

主要是生命变量
引入slis 包,   
建立内表,
定义变量

2:定义内表

代码

*第二部:定义内表
*定义类型.
TYPES:BEGIN OF ty_alvshow,
  CARRID TYPE SPFLI-CARRID,  "航线代码
  CITYFROM  type SPFLI-CITYFROM , "起飞城市.
  CITYTO TYPE SPFLI-CITYTO  , "目标城市
  FLDATE  type SFLIGHT-FLDATE  ,"起飞时间
  PLANETYPE TYPE  SFLIGHT-PLANETYPE ,"飞机类型
  SEATSMAX TYPE SFLIGHT-SEATSMAX ,"飞机容量
  END OF ty_alvshow.
*定义内表和工作区
data : LT_ALVSHOW TYPE TABLE OF ty_alvshow,  "定义内表
       WA_ALVSHOW  TYPE ty_alvshow.

着重解释

类型 可以直接写入字段类型中的 类型
或者干脆 直接写表名-字段  也可以.

3:读取数据

代码

*第三部:读取数据
select
a~CARRID  CITYFROM
CITYTO FLDATE
PLANETYPE SEATSMAX
FROM spfli as a inner  join  SFLIGHT as  b on a~CARRID = b~CARRID
  into  table LT_ALVSHOW   "内表需要增加table
  UP TO 10 ROWS.

4:字段配置 ALV格式控制.

代码

*第四部: ALV 的格式控制. layout
LS_LAYOUT-zebra = 'X'. "列输出位置
LS_LAYOUT-detail_popup = 'X' ."是否弹出详细明细窗口
LS_LAYOUT-detail_TITLEBAR = '详细信息'.
LS_LAYOUT-f2code = '&ETA' . "设置触发弹窗信息功能
LS_LAYOUT-colwidth_optimize = 'X' . "设置自动优化列宽.
"fieldcat 界面配置
lv_colpos = 1  . "字段显示为第几行
ls_FIELDCAT-fieldname  = 'CARRID'.   "那个字段
LS_FIELDCAT-col_pos = LV_COLPOS.
LS_FIELDCAT-key  = 'X'.
LS_FIELDCAT-DATATYPE = 'CHAR' .
LS_FIELDCAT-OUTPUTLEN = '10'.
LS_FIELDCAT-SELTEXT_M = '飞机id'.
APPEND LS_FIELDCAT to LT_FIELDCAT.
clear LS_FIELDCAT .
"fieldcat 界面配置
lv_colpos = LV_COLPOS + 1  . "字段显示为第几行
ls_FIELDCAT-fieldname  = 'CITYFROM'.   "那个字段
LS_FIELDCAT-col_pos = LV_COLPOS.
LS_FIELDCAT-key  = 'X'.
LS_FIELDCAT-DATATYPE = 'CHAR' .
LS_FIELDCAT-OUTPUTLEN = '30'.
LS_FIELDCAT-SELTEXT_M = '出发城市'.
APPEND LS_FIELDCAT to LT_FIELDCAT.
clear LS_FIELDCAT .
"fieldcat 界面配置
lv_colpos = LV_COLPOS + 1  . "字段显示为第几行
ls_FIELDCAT-fieldname  = 'CITYTO'.   "那个字段
LS_FIELDCAT-col_pos = LV_COLPOS.
LS_FIELDCAT-key  = 'X'.
LS_FIELDCAT-DATATYPE = 'CHAR' .
LS_FIELDCAT-OUTPUTLEN = '30'.
LS_FIELDCAT-SELTEXT_M = '到达城市'.
APPEND LS_FIELDCAT to LT_FIELDCAT.
clear LS_FIELDCAT .
"fieldcat 界面配置
lv_colpos = LV_COLPOS + 1  . "字段显示为第几行
ls_FIELDCAT-fieldname  = 'FLDATE'.   "那个字段
LS_FIELDCAT-col_pos = LV_COLPOS.
LS_FIELDCAT-key  = 'X'.
LS_FIELDCAT-DATATYPE = 'DATS' .
LS_FIELDCAT-OUTPUTLEN = '8'.
LS_FIELDCAT-SELTEXT_M = '到达时间'.
APPEND LS_FIELDCAT to LT_FIELDCAT.
clear LS_FIELDCAT .
"fieldcat 界面配置
lv_colpos = LV_COLPOS + 1  . "字段显示为第几行
ls_FIELDCAT-fieldname  = 'PLANETYPE'.   "那个字段
LS_FIELDCAT-col_pos = LV_COLPOS.
LS_FIELDCAT-key  = 'X'.
LS_FIELDCAT-DATATYPE = 'char' .
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-OUTPUTLEN = '20'.
LS_FIELDCAT-SELTEXT_M = '飞机类型'.
APPEND LS_FIELDCAT to LT_FIELDCAT.
clear LS_FIELDCAT .
"fieldcat 界面配置
*lv_colpos = LV_COLPOS + 1  . "字段显示为第几行
*ls_FIELDCAT-fieldname  = 'SEATSMAX'.   "那个字段
*LS_FIELDCAT-col_pos = LV_COLPOS.
*LS_FIELDCAT-key  = 'X'.
*LS_FIELDCAT-DATATYPE = 'int4' .
*LS_FIELDCAT-OUTPUTLEN = '20'.
*LS_FIELDCAT-SELTEXT_M = '飞机容量'.
*APPEND LS_FIELDCAT to LT_FIELDCAT.
*clear LS_FIELDCAT .
"fieldcat 界面配置
lv_colpos = LV_COLPOS + 1  . "字段显示为第几行
ls_FIELDCAT-fieldname  = 'SEATSMAX'.   "那个字段
LS_FIELDCAT-col_pos = LV_COLPOS.
LS_FIELDCAT-ref_fieldname = 'SFLIGHT' .
LS_FIELDCAT-do_sum = 'X' .
LS_FIELDCAT-SELTEXT_M = '飞机容量'.
APPEND LS_FIELDCAT to LT_FIELDCAT.
Clear LS_FIELDCAT .

着重解释

首先需要配置layout 相关内容

在配置每个字段的fieldcat .

注意:显示列数要设置逐级增加,并且要把内表数据覆盖内表 ,并清空内表数据.

5:定义事件

代码

LS_EVENt-name  = 'USER_COMMAND' ."用户响应事件
LS_EVENT-FORM = 'FORM_USER_COMMAND' .
APPEND LS_EVENT TO LT_EVENT .
CLEAR LS_EVENT .
LS_EVENT-name  = 'TOP_OF_PAGE' ."显示标题
LS_EVENT-form = 'FORM_TOP_OF_PAGE' .
APPEND LS_EVENT TO LT_EVENT .
CLEAR LS_EVENT .
LS_EVENt-name  = 'PF_STATUS_SET' ."显示状态栏
LS_EVENT-FORM = 'FORM_PF_STATUS_SET' .
APPEND LS_EVENT TO LT_EVENT .
CLEAR LS_EVENT .

6:排序(常用功能)

代码

*------第六步  排序
WA_SORT-fieldname = 'SEATSMAX'  .
WA_SORT-DOWN = 'X'.
APPEND WA_SORT TO LT_SORT .
CLEAR  wa_sort .   "清空工作区

7:显示alv数据

操作

光标要留在数据的位置,然后点 模式-->调用功能输入-->REUSE_ALV_GRID_DISPLAY
-->按回车.-->自动生成代码

代码

*第七部分显示alv
LS_SETTING-EDT_CLL_CB = 'X' .  "编辑单元格之后, 返回给程序编辑后的值.
pgm = sy-repid.  "回调对象
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
*   I_INTERFACE_CHECK        = ' '
*   I_BYPASSING_BUFFER       = ' '
*   I_BUFFER_ACTIVE          = ' '
   I_CALLBACK_PROGRAM       = pgm
   I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
   I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
  I_CALLBACK_TOP_OF_PAGE   = 'TOP_OF_PAGE'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME         =
*   I_BACKGROUND_ID          = ' '
*   I_GRID_TITLE  =
   I_GRID_SETTINGS          =  LS_SETTING  "编辑单元格之后, 返回给程序编辑后的值.
    IS_LAYOUT     = LS_LAYOUT
    IT_FIELDCAT   = LT_FIELDCAT
*   IT_EXCLUDING  =
*   IT_SPECIAL_GROUPS        =
   IT_SORT       = LT_SORT
*   IT_FILTER     =
*   IS_SEL_HIDE   =
*   I_DEFAULT     = 'X'
*   I_SAVE        = ' '
*   IS_VARIANT    =
    IT_EVENTS     = LT_EVENT
*   IT_EVENT_EXIT =
*   IS_PRINT      =
*   IS_REPREP_ID  =
*   I_SCREEN_START_COLUMN    = 0
*   I_SCREEN_START_LINE      = 0
*   I_SCREEN_END_COLUMN      = 0
*   I_SCREEN_END_LINE        = 0
*   I_HTML_HEIGHT_TOP        = 0
*   I_HTML_HEIGHT_END        = 0
*   IT_ALV_GRAPHICS          =
*   IT_HYPERLINK  =
*   IT_ADD_FIELDCAT          =
*   IT_EXCEPT_QINFO          =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER  =
*   ES_EXIT_CAUSED_BY_USER   =
  TABLES
    T_OUTTAB      = LT_ALVSHOW
  EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS        = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

解释

1:生成的代码都是注释的

2:选择使用的解除注释并赋值

8:按钮操作标题栏等配置

代码

*按钮 gui
FORM FORM_PF_STATUS_SET   USING RT_EXTAB TYPE SLIS_T_EXTAB   .
  SET PF-STATUS 'YALVDEMO1_GUI'.
ENDFORM.
*标题
FORM  FORM_TOP_OF_PAGE.
*定义数据 内表和工作区
  DATA LT_COMMENTARY TYPE SLIS_T_LISTHEADER.
  DATA WA_COMMENTARY TYPE SLIS_LISTHEADER.
  WA_COMMENTARY-TYP = 'H' .
  WA_COMMENTARY-INFO = '飞机飞行清单' .
  APPEND WA_COMMENTARY TO LT_COMMENTARY .
  WA_COMMENTARY-TYP = 'S' .
  WA_COMMENTARY-INFO = '中号标题' .
  APPEND WA_COMMENTARY TO LT_COMMENTARY .
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY = LT_COMMENTARY.
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
*   I_ALV_FORM               =
ENDFORM.
*用户操作按钮
FORM  FORM_USER_COMMAND  USING R_UCOMM LIKE SY-UCOMM
     RS_SELFIELD TYPE SLIS_SELFIELD  .
data : lt_SFLIGHT  TYPE table of SFLIGHT ,   "内表
    wa_SFLIGHT type  SFLIGHT.  "工作区
     IF R_UCOMM = 'ZYDD1' .
       MESSAGE '你触发了按钮' TYPE 'I'.
    ELSEIF R_UCOMM = 'Z_SAVE1' .
select  *  from SFLIGHT   into table  lt_SFLIGHT
        for ALL ENTRIES IN LT_ALVSHOW
  where CARRID = lt_alvshow-CARRID .
          ENDIF .
loop at lt_SFLIGHT into wa_SFLIGHT .   "从工作区取数 循环
READ TABLE LT_ALVSHOW into WA_ALVSHOW WITH KEY CARRID =  wa_SFLIGHT-CARRID .
if sy-SUBRC = 0 .
*MESSAGE  WA_ALVSHOW-PLANETYPE  TYPE 'I'.
  wa_SFLIGHT-PLANETYPE = WA_ALVSHOW-PLANETYPE .
  MODIFY  lt_SFLIGHT from  wa_SFLIGHT.  "内表更新
  ENDIF .
  CLEAR wa_SFLIGHT .
  CLEAR WA_ALVSHOW.
ENDLOOP.
update  SFLIGHT from table   lt_SFLIGHT.
  if sy-subrc = 0 .
    commit work .  "数据库提交
        MESSAGE '保存成功' TYPE 'I'.
    else .
      ROLLBACK work .
              MESSAGE '保存失败' TYPE 'I'.
      ENDIF.
ENDFORM  .

总结

这个demo 是最简单的DEMO 使用的是 系统内置表(飞机表) , 其中包含了用户操作,排序,求和等常规用户操作和界面优化 .

常规语法的通俗使用. 此demo还可以进一步优化,把常规重复性操作写入到函数或者宏中,后续会发更优化版本.

作为入门demo 可以让你充分了解ALV ,及ALV 常规用到的属性.

以上就是ABAP ALV最常规写法及常用功能详解的详细内容,更多关于ABAP ALV 写法功能的资料请关注我们其它相关文章!

(0)

相关推荐

  • APAP ALV进阶写法及优化详解

    目录 先导 流程搭建 流程讲解 INITIALIZATION. at SELECTION-SCREEN! START-OF-SELECTION End-OF-SELECTION . 数据准备 选择屏幕 INITIALIZATION  . at SELECTION-SCREEN . START-OF-SELECTION    . END-OF-SELECTION . 子程序和宏 总结 先导 上一期讲了在ABAP中,ALV的普通写法,流程以及相关属性,还讲了基本DEMO ,但是在真正开发中,不会写这

  • ABAP ALV最常规写法及常用功能详解

    目录 先导 流程顺序 开发ALV的基本流程: ALV 界面介绍 ALV 开发注意事项 ALV 基本参数 ALV 对象参数 ALV 参数控制Layout ALV 参数控制Fieldcat ALV定义事件 ALV DEMO 1:声明alv 2:定义内表 3:读取数据 4:字段配置 ALV格式控制. 着重解释 5:定义事件 6:排序(常用功能) 7:显示alv数据 8:按钮操作标题栏等配置 总结 先导 记得刚学ABAP的时候问这问那,问东问西,常常一个可能不怎么用的东西,扣了好久好久.群里的大佬就说,

  • Python标准库sys库常用功能详解

    目录 1.查看版本信息 2.四大实现详细信息 3.查看Python解释器的相关信息 3.设置python解释器信息 4.标准输入.输出和错误流 5.查看系统平台相关信息 6.其他 1.查看版本信息 # coding:utf-8 import sys # 获取 Python版本信息 print(sys.version) # 获取解释器中C的API版本 print(sys.api_version) # 获取Windows系统功能版本 print(sys.getwindowsversion()) #

  • Spring Boot整合Web项目常用功能详解

    前言 在Web应用开发过程中,一般都涵盖一些常用功能的实现,如数据库访问.异常处理.消息队列.缓存服务.OSS服务,以及接口日志配置,接口文档生成等.如果每个项目都来一套,则既费力又难以维护.可以通过Spring Boot的Starter来将这些常用功能进行整合与集中维护,以达到开箱即用的目的. 项目基于Spring Boot 2.1.5.RELEASE 版. 项目地址 整个项目分为如下几部分: spring-boot-autoconfigure: 具体的各功能实现,每个功能通过package的

  • Nginx常用功能详解

    一.NGINX目录保护及访问限制 Nginx保护目录的配置如下,目录密码保护文件是 /usr/local/nginx/htpasswd location ~ /admin { #admin为要保护的目录名称,location 的意思就是保护从网页根目录算起的admin 目录 auth_basic "PLEASE LOGIN"; #就是进入资料夹时会显示的信息 auth_basic_user_file /usr/local/nginx/htpasswd; #验证用户及密码文件,我这边设定

  • Python Asyncio 库之同步原语常用函数详解

    目录 前记 0.基础 1.Lock 2.Event 4.Condition 5.Semaphore 前记 Asyncio的同步原语可以简化我们编写资源竞争的代码和规避资源竞争导致的Bug的出现. 但是由于协程的特性,在大部分业务代码中并不需要去考虑资源竞争的出现,导致Asyncio同步原语被使用的频率比较低,但是如果想基于Asyncio编写框架则需要学习同步原语的使用. 0.基础 同步原语都是适用于某些条件下对某个资源的争夺,在代码中大部分的资源都是属于一个代码块,而Python对于代码块的管理

  • Linux终端命令行的常用快捷键详解

    history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 !?string? 执行含有string字符串的最新命令 Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令 Ctrl+s 与Ctrl+r类似,只是正向检索 Alt+< 历史列表第一项 Alt+> 历史列表最后一项 Ctrl+f 光标向前移动一个字符,相当与-> Ct

  • 基于字符串常用API(详解)

    API(Application Programming Interface):应用程序编程接口 使用Scanner 获取键盘录入的字符串 next() ; 在遇到空格的时候 会判定为当前的输入结束 空格之后的内容会收不到 nextLine(); 可以避免被空格中断 , 但是在于接收数字一起使用的时候会被干扰 创建字符串对象 public String(String original) ---> 通过字符串创建一个字符串对象 public String(char[] value) -=--> 通

  • Maven 配置文件 生命周期 常用命令详解

    当前,JVM生态圈主要的三大构建工具: Apache Ant(带着Ivy) Maven Gradle 对于初学者,Ant是最清晰的,只要读懂Xml配置文件你就能够理解它干了什么,但是ant文件很容易变的更加复杂.Maven有自己的工程目录规则和内置的构建生成周期,从而使构建文件更加简单.gradle有很多开箱即用的插件,语法更加短小精悍,易于理解. 在讲解maven之前这里我们先简单比较下Maven和Ant.下面是一个简单的Ant例子.这个例子可以看出我们需要明确的告诉Ant.我们想让他做什么.

  • pytorch 常用线性函数详解

    Pytorch的线性函数主要封装了Blas和Lapack,其用法和接口都与之类似. 常用的线性函数如下: 函数 功能 trace 对角线元素之和(矩阵的迹) diag 对角线元素 triu/tril 矩阵的上三角/下三角,可指定偏移量 mm/bmm 矩阵乘法,batch的矩阵乘法 t 转置 dot/cross 内积/外积 inverse 求逆矩阵 svd 奇异值分解 注意:矩阵的转置会使存储空间不连续,需调用它的.contiguous方法转为连续. 例如: import torch as t b

  • redis配置文件中常用配置详解

    此次安装的版本为: 5.0.3 [root@localhost local]# redis-server --version Redis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=afabdecde61000c3 打开redis.cof NETWORK # 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求 bind 127.0.0.1 #是否开启保护模式,默认开启.要是配置

随机推荐