目前作者已知的EXCEL输出方式有3种:

1.GUI_DOWNLOAD函数输出(适用于简单无格式要求的输出)。

2.OLE输出(适用于对EXCEL格式输出有特殊要求的,但是因其填充数据和设置格式是基于一个个单元格去操作来完成的,所以速度很慢,在下面的DEMO中,202行6列的数据输出需要用时2分钟左右)。

3.DOI输出(可以嵌入屏幕容器中直接输出EXCEL,且所有方法封装在类中,编写起来更加简单)。

个人感觉OLE的学习最好方式是设置EXCEL输出为前端显示模式,然后一句句弄懂每句OLE语句的意义,知道每一个OLE语句等同于在EXCEL中做了什么样的操作。

例如你写完

CREATE OBJECT V_EXCEL 'EXCEL.APPLICATION'.
SET PROPERTY OF V_EXCEL 'VISIBLE' = .

你知道此时执行是打开了EXCEL应用,但是其中没有任何工作页,如下图:

当你在加上OLE语句

*  "新建一个工作区WORKBOOK
  CALL METHOD OF V_EXCEL 'WORKBOOKS' = V_BOOK.
  CALL METHOD OF V_BOOK 'ADD'.

你知道此时创建了一个工作区,其中自动插入了一个工作页,且其为激活状态,如下图:

当你像这样一句句的做完一个DEMO之后,相信你应该能熟练应用OLE来输出EXCEL。

下面给出一个OLE的简单DEMO程序:

输出目标:

源程序:

主程序:Z15540_OLE1
*&---------------------------------------------------------------------*
*& Report Z15540_0LE1
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z15540_OLE1. INCLUDE Z15540_OLE1_TOP.
INCLUDE Z15540_OLE1_F01. START-OF-SELECTION.
PERFORM FRM_GET_DATA. END-OF-SELECTION.
IF GT_ALV IS NOT INITIAL.
  PERFORM FRM_SET_LAYOUT.
  PERFORM FRM_FILL_FIELD.
  PERFORM FRM_DISPLAY_ALV.
ENDIF. 包含程序:Z15540_OLE1_TOP
*&---------------------------------------------------------------------*
*& 包含               Z15540_0LE1_TOP
*&---------------------------------------------------------------------*
TABLES:MARD,MARA,MAKT.
TYPE-POOLS:SLIS,OLE2.
DATA:BEGIN OF GS_ALV,
       MATNR TYPE MARD-MATNR,
       WERKS TYPE MARD-WERKS,
       LGORT TYPE MARD-LGORT,
       LABST TYPE MARD-LABST,
       MEINS TYPE MARA-MEINS,
       MAKTX TYPE MAKT-MAKTX,
     END OF GS_ALV.
DATA GT_ALV LIKE TABLE OF GS_ALV. DATA:GS_LAYOUT TYPE LVC_S_LAYO,
     GS_FCAT TYPE LVC_S_FCAT,
     GT_FCAT TYPE LVC_T_FCAT. DATA:V_EXCEL TYPE OLE2_OBJECT,
     V_BOOK TYPE OLE2_OBJECT,
     V_SHEET TYPE OLE2_OBJECT,
     V_RANGE TYPE OLE2_OBJECT,
     V_CELL TYPE OLE2_OBJECT,
     V_FONT TYPE OLE2_OBJECT,
     V_COLOR TYPE OLE2_OBJECT,
     V_BORDER TYPE OLE2_OBJECT,
     V_COLUMN TYPE OLE2_OBJECT. DATA GV_FILENAME TYPE STRING."文件路径 SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-.
SELECT-OPTIONS:S_WERKS FOR MARD-WERKS,
               S_LGORT FOR MARD-LGORT,
               S_MATNR FOR MARD-MATNR.
SELECTION-SCREEN END OF BLOCK BLK1. 包含程序:Z15540_OLE1_F01
*&---------------------------------------------------------------------*
*& 包含               Z15540_0LE1_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_GET_DATA .
  SELECT D~MATNR,
         D~WERKS,
         D~LGORT,
         D~LABST,
         A~MEINS,
         T~MAKTX
 INTO TABLE @GT_ALV UP TO  ROWS
 FROM MARD AS D INNER JOIN MARA AS A
 ON D~MATNR = A~MATNR
 LEFT OUTER JOIN MAKT AS T
 ON D~MATNR = T~MATNR
 WHERE D~WERKS IN @S_WERKS
 AND D~LGORT IN @S_LGORT
 AND D~MATNR IN @S_MATNR
 AND T~SPRAS = @SY-LANGU.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY_ALV .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
*     I_INTERFACE_CHECK        = ' '
*     I_BYPASSING_BUFFER       = I_BYPASSING_BUFFER
*     I_BUFFER_ACTIVE          = I_BUFFER_ACTIVE
      I_CALLBACK_PROGRAM       = SY-REPID
      I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
*     I_CALLBACK_TOP_OF_PAGE   = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME         = I_STRUCTURE_NAME
*     I_BACKGROUND_ID          = ' '
*     I_GRID_TITLE             = I_GRID_TITLE
*     I_GRID_SETTINGS          = I_GRID_SETTINGS
      IS_LAYOUT_LVC            = GS_LAYOUT
      IT_FIELDCAT_LVC          = GT_FCAT
*     IT_EXCLUDING             = IT_EXCLUDING
*     IT_SPECIAL_GROUPS_LVC    = IT_SPECIAL_GROUPS_LVC
*     IT_SORT_LVC              = IT_SORT_LVC
*     IT_FILTER_LVC            = IT_FILTER_LVC
*     IT_HYPERLINK             = IT_HYPERLINK
*     IS_SEL_HIDE              = IS_SEL_HIDE
*     I_DEFAULT                = 'X'
*     I_SAVE                   = ' '
*     IS_VARIANT               = IS_VARIANT
*     IT_EVENTS                = IT_EVENTS
*     IT_EVENT_EXIT            = IT_EVENT_EXIT
*     IS_PRINT_LVC             = IS_PRINT_LVC
*     IS_REPREP_ID_LVC         = IS_REPREP_ID_LVC
*     I_SCREEN_START_COLUMN    = 0
*     I_SCREEN_START_LINE      = 0
*     I_SCREEN_END_COLUMN      = 0
*     I_SCREEN_END_LINE        = 0
*     I_HTML_HEIGHT_TOP        = I_HTML_HEIGHT_TOP
*     I_HTML_HEIGHT_END        = I_HTML_HEIGHT_END
*     IT_ALV_GRAPHICS          = IT_ALV_GRAPHICS
*     IT_EXCEPT_QINFO_LVC      = IT_EXCEPT_QINFO_LVC
*     IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
* IMPORTING
*     E_EXIT_CAUSED_BY_CALLER  = E_EXIT_CAUSED_BY_CALLER
*     ES_EXIT_CAUSED_BY_USER   = ES_EXIT_CAUSED_BY_USER
    TABLES
      T_OUTTAB                 = GT_ALV
* EXCEPTIONS
*     PROGRAM_ERROR            = 1
*     OTHERS                   = 2
    .
  IF SY-SUBRC <> .
* Implement suitable error handling here
  ENDIF. ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_SET_LAYOUT .
  CLEAR GS_LAYOUT.
  GS_LAYOUT-ZEBRA = 'X'.
  GS_LAYOUT-COL_OPT = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILL_FIELD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_FILL_FIELD .
  PERFORM FRM_FILLFIELD USING: 'MATNR' '物料号',
                               'MAKTX' '物料描述',
                               'WERKS' '工厂',
                               'LGORT' '仓库',
                               'LABST' '非限制使用库存',
                               'MEINS' '数量单位'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILLFIELD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&      --> P_
*&---------------------------------------------------------------------*
FORM FRM_FILLFIELD  USING P_FIELDNAME TYPE LVC_FNAME
                          P_COLTEXT TYPE LVC_TXTCOL.
  CLEAR GS_FCAT.
  GS_FCAT-FIELDNAME = P_FIELDNAME.
  GS_FCAT-COLTEXT = P_COLTEXT.
  IF P_FIELDNAME = 'LABST'.
    GS_FCAT-QFIELDNAME = 'MEINS'.
  ENDIF.
  APPEND GS_FCAT TO GT_FCAT.
ENDFORM.
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'STANDARD'.
ENDFORM.
FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM "UCOMM获取返回的功能码
                        SELFIELD TYPE SLIS_SELFIELD."SELFIELD获取返回的行数据
  CASE UCOMM.
    WHEN 'EXCEL'. "点击保存,
      PERFORM FRM_EXCEL.
  ENDCASE.
ENDFORM.                    "USER_COMMAND
*&-------------------------------------------------------------------
*&---------------------------------------------------------------------*
*& Form FRM_EXCEL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_EXCEL .
  PERFORM FRM_FILE.
  "创建EXCEL对象
  CREATE OBJECT V_EXCEL 'EXCEL.APPLICATION'.
  "设置EXCEL前台显示
  SET PROPERTY OF V_EXCEL 'VISIBLE' = .
*  "新建一个工作页WORKBOOK
  CALL METHOD OF V_EXCEL 'WORKBOOKS' = V_BOOK.
  CALL METHOD OF V_BOOK 'ADD'.
  "获取当前SHEET页
  GET PROPERTY OF V_EXCEL 'ACTIVESHEET' = V_SHEET.
  "选中SHEET页
  CALL METHOD OF V_SHEET 'SELECT'.
  "更改当前SHEET页 名称
  SET PROPERTY OF V_SHEET 'NAME' = '可用库存量清单SHEET1'.   "填充标题和表头行
  PERFORM FRM_HEADER.
  "填充主体部分
  PERFORM FRM_BODY.
  "设置列宽自动优化(在数据填充完后调用)
  CALL METHOD OF V_EXCEL 'COLUMNS' = V_COLUMN.
  CALL METHOD OF V_COLUMN 'AUTOFIT'.
  "保存EXCEL
  PERFORM FRM_SAVE. ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CELL
*&---------------------------------------------------------------------*
*& text *&-------------------------------------------*&      --> P_1
*&      --> P_
*&      --> P_2
*&---------------------------------------------------------------------*
FORM FRM_CELL  USING    P_ROW "行号
                         P_COL "列号
                         P_VALUE "值
                         P_BOLD "加粗
                         P_SIZE "字体大小
                         P_UNDERLINE "下划线
                         P_FCOLOR "字体颜色
                         P_COLOR."背景颜色
  CALL METHOD OF V_EXCEL 'CELLS' = V_CELL
EXPORTING
  # = P_ROW
  # = P_COL.
  SET PROPERTY OF V_CELL 'VALUE' = P_VALUE.
  "生成字体对象  CALL METHOD OF V_CELL 'FONT' = V_FONT.  SET PROPERTY OF V_FONT 'BOLD' = P_BOLD."加粗
  SET PROPERTY OF V_FONT 'SIZE' = P_SIZE."字体大小
  SET PROPERTY OF V_FONT 'UNDERLINE' = P_UNDERLINE."下划线
  SET PROPERTY OF V_FONT 'COLORINDEX' = P_FCOLOR."字体颜色
  "生成背景颜色对象
  CALL METHOD OF V_CELL 'INTERIOR' = V_COLOR.
  SET PROPERTY OF V_COLOR 'COLORINDEX' = P_COLOR."背景颜色
  FREE OBJECT V_CELL."用完对象后释放 ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SAVE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&---------------------------------------------------------------------*
FORM FRM_SAVE .
  CALL METHOD OF V_SHEET 'SAVEAS'
    EXPORTING
      # = GV_FILENAME
      # = .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_HEADER
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text *&------------------------------------------------------------------FORM FRM_HEADER .
  "标题
  PERFORM FRM_CELL USING   '可用库存量清单'     ."行号 列号 值 加粗 字体大小 下划线 字体颜色(红) 背景颜色(蓝)
  PERFORM FRM_RANGE USING '' ''  -   ."左上角列号 右下角列号 合并 居中 边框格式 边框格式 边框粗细 边框颜色
  "表头行
  PERFORM FRM_CELL USING:   '工厂'     ,"行号 列号 值 加粗 字体大小 下划线 字体颜色(黑) 背景颜色(白)
                            '库存地点'     ,
                            '物料号'     ,
                            '物料描述'     ,
                            '可用非限制库存'     ,
                            '单位'     .
  PERFORM FRM_RANGE USING '' ''  -   ."左上角列号 右下角列号 合并 居中 边框格式 边框格式 边框粗细 边框颜色
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_RANGE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_RANGE USING P_ZS TYPE CHAR5"左上角列号
                     P_YX TYPE CHAR5"右下角列号
                     P_MERGECELLS "合并
                     P_ALIGNMENT "居中
                     P_LINESTYLE "边框格式
                     P_WEIGHT "边框粗细
                     P_BCOLOR."边框颜色
  CONCATENATE 'A' P_ZS INTO P_ZS.
  CONCATENATE 'F' P_YX INTO P_YX.
  CONDENSE P_ZS NO-GAPS.
  CONDENSE P_YX NO-GAPS.
  "创建RANGE对象
  CALL METHOD OF V_EXCEL 'RANGE' = V_RANGE
  EXPORTING
    # = P_ZS
    # = P_YX.
  "选中RANGE
  CALL METHOD OF V_RANGE 'SELECT'.
  SET PROPERTY OF V_RANGE 'MERGECELLS' = P_MERGECELLS."0不合并 1合并
  SET PROPERTY OF V_RANGE 'HORIZONTALALIGNMENT' = P_ALIGNMENT."居中   DO  TIMES.
    "创建BORDER对象
    CALL METHOD OF V_RANGE 'BORDERS' = V_BORDER    EXPORTING      # = SY-INDEX.
    "设置线条格式,粗细,颜色
    SET PROPERTY OF V_BORDER 'LINESTYLE' = P_LINESTYLE.
    SET PROPERTY OF V_BORDER 'WEIGHT' = P_WEIGHT.
    SET PROPERTY OF V_BORDER 'COLORINDEX' = P_BCOLOR.
  ENDDO.
  "用完释放对象
  FREE OBJECT V_RANGE.
  FREE OBJECT V_BORDER.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BODY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_BODY .
  DATA LV_ZS TYPE CHAR5."左上
  DATA LV_YX TYPE CHAR5."右下
  DATA LV_LINE TYPE I."输出内表总行数
  DATA LV_CURRENT TYPE I."当前填充的行号
  DESCRIBE TABLE GT_ALV LINES LV_LINE.
  LV_ZS = ."3 = 2(标题和表头行共计2行) + 1.
  LV_YX =  + LV_LINE."标题+表头+主体
  CONDENSE LV_YX NO-GAPS."去除空格
  "填充数据
  LOOP AT GT_ALV INTO GS_ALV.
    LV_CURRENT = SY-TABIX + ."从第3行开始填充主体数据
    "每行需填充6列的数据
    PERFORM FRM_CELL USING: LV_CURRENT  GS_ALV-WERKS     ,"行号 列号 值 加粗 字体大小 下划线 字体颜色(黑) 背景颜色(白)
                            LV_CURRENT  GS_ALV-LGORT     ,"行号 列号 值 加粗 字体大小 下划线 字体颜色(黑) 背景颜色(白)
                            LV_CURRENT  GS_ALV-MATNR     ,"行号 列号 值 加粗 字体大小 下划线 字体颜色(黑) 背景颜色(白)
                            LV_CURRENT  GS_ALV-MAKTX     ,"行号 列号 值 加粗 字体大小 下划线 字体颜色(黑) 背景颜色(白)
                            LV_CURRENT  GS_ALV-LABST     ,"行号 列号 值 加粗 字体大小 下划线 字体颜色(黑) 背景颜色(白)
                            LV_CURRENT  GS_ALV-MEINS     ."行号 列号 值 加粗 字体大小 下划线 字体颜色(黑) 背景颜色(白)
    CLEAR GS_ALV.
  ENDLOOP.
  "加边框
  PERFORM FRM_RANGE USING LV_ZS LV_YX  -   ."左上角列号 右下角列号 合并 居中 边框格式 边框格式 边框粗细 边框颜色
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_FILE .
*获取文件名
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      DEF_FILENAME     = '可用库存清单' "默认文件名
*     DEF_PATH         = ' '
      MASK             = ',EXCEL,*.XLS.' "文件类型
      MODE             = 'S' "S保存 O打开
      TITLE            = 'EXCEL保存' "弹出对话框标题
    IMPORTING
      FILENAME         = GV_FILENAME "输出的文件路径
*     RC               = RC
    EXCEPTIONS
      INV_WINSYS       = 
      NO_BATCH         = 
      SELECTION_CANCEL = 
      SELECTION_ERROR  = .
ENDFORM.

 



(原创)不带模板的OLE输出EXCEL的更多相关文章

  1. (原创)带模板的OLE输出EXCEL

    其实带模板的OLE输出EXCEL就是将要输出的EXCEL中一些拥有固定值(如标题,表头行等)的单元格先填充好数据和设置好格式后作为模板上传到SAP 中.这样后续在输出EXCEL时只需从SAP中将模板下 ...

  2. 2018年,请不要再使用OLE生成EXCEL文件

    输出EXCEL文件是ABAP开发工作中的常见需求,为了学习相关技术,我翻译过一篇文章:使用OLE2对象创建EXCEL文件,并且一度乐在其中. 最近几个月,经过与若干EXCEL打印程序的艰苦斗争,以及对 ...

  3. java动态生成带下拉框的Excel导入模板

    在实际开发中,由于业务需要,常常需要进行Excel导入导出操作.以前做一些简单的导入时,先准备一个模板,再进行导入,单有十几. 二十几个导入模板时,往往要做十几.二十几个模板.而且,当在模板中需要有下 ...

  4. 通过zabbix自带模板监控windowsPC机器

       通过zabbix自带模板监控windowsPC机器   作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.       欢迎加入:高级运维工程师之路 598432640 相信有很多 ...

  5. springmvc+mybatis下载项目自带模板

    1.首先如果要获取javaweb项目中的文件在哪,用到的代码:request.getSession().getServletContext().getRealPath("/WEB-INF/d ...

  6. xBIM IFC 输出 Excel 报表

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  7. Zabbix Server 自带模板监控更加灵活MySQL数据库

    Zabbix Server 自带模板监控更加灵活MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.zabbix-agent端配置 1>.修改zabbix的 ...

  8. Zabbix Server 自带模板监控有密码MySQL数据库

    Zabbix Server 自带模板监控有密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.Zabbix-agent端的配置 1>.为数据库设置密码 ...

  9. Zabbix Server 自带模板监控无密码MySQL数据库

    Zabbix Server 自带模板监控无密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.安装MariaDB 1>.安装MariaDB  [root ...

随机推荐

  1. 【BZOJ4555】求和(第二类斯特林数,组合数学,NTT)

    [BZOJ4555]求和(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_{i= ...

  2. 【HAOI2015】树上操作(树链剖分)

    题面 Description 有一棵点数为N的树,以点1为根,且树点有边权.然后有M个操作,分为三种: 操作1:把某个节点x的点权增加a. 操作2:把某个节点x为根的子树中所有点的点权都增加a. 操作 ...

  3. eclipse 启动报内存溢出的问题out of memory!

    这个问题困扰了我一个月,今天终于解决了,在网上尝试了好多方法都不行.启动的时候就报错,这里可能是jdk的内存太小了,需要加大jdk的内存. 加上这个就好了 -server -Xms512m -Xmx5 ...

  4. UWP 图片模糊

    先看一下效果: 这是微识别的个人中心页面,顶部有头像,以及背景图片模糊. 要实现这样的效果,有两种方法. 第一种麻烦点,也是我现在用的.想看简单的,翻到最后 1. 首先看一下xaml代码: <S ...

  5. PAT乙级-1043. 输出PATest(20)

    给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按"PATestPATest...."这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一 ...

  6. Unity程序们经常用到的网址(方便自己用,一直更新)

    浏览器收藏夹不好用,那就整理到这里吧 官方 API查询: https://docs.unity3d.com/ScriptReference/index.html 文档查询:https://docs.u ...

  7. git 使用方式

    一.常用操作命令 1.初始化操作 git config --global user.name '<name>' # 设置提交者名称 git config --global user.ema ...

  8. 简单了解C语言内嵌汇编

    最近看自旋锁的实现,自选锁的循环查找锁的主要实现类似如下,该实现使用到了内嵌的汇编(摘自sanos内核,源代码有2处实现,一处使用intel汇编,是没有问题的,另一处使用内嵌汇编语法,源代码中为cmp ...

  9. 元组tuple基本操作

    创建一个元组 tuple1=(1,2,3,4,5,6,7,8) tuple的标志仿佛是(),但是,有()不一定是元组,没有()不一定不是元组 tuple2=(1)#tuple2是一个整型 tuple3 ...

  10. java 10 中 var关键字用法

    引用:https://mp.weixin.qq.com/s/n1tcJ0CywSi0j-YycGPwxg what java10引入了局部变量折断 var用于声明局部变量. 如var user=new ...