http://blog.itpub.net/10359218/viewspace-752601/

最近的项目上写了一个公用的API,很久以前就用EXCEL发布过报表,但从没想过写API来简化。。。

 
 
其实方法很简单,就是自已用EXCEL做个模板,然后另存为XML 电子表格,用TEXT工具打开后,看一下XML 代码就明白了。这个程序无非就是用请求的输出来打印这个XML代码而已.
 
主要功能:
1. 支持数据格式包括字符型,数值型,日期型
2. 支持单元格样式(这个写的比较不灵活,如果有新增样式,需要在sheet_start里增加
3. 支持公式及数组公式
4. 支持自动换行(在样式里)
5. 支持单元格合并(左右合并及上下合并)
6. 支持水平方向定位(INDEX)
 
注意:
在注册请求时,输出方式需定义为XML。请求执行完毕后,点输出,然后选择EXCEL打开即可
 

 
CREATE OR REPLACE PACKAGE BODY cux_common_report_util_pkg IS
 
  --*************************************************************************************
  --*              Copyright (c) XXXXXXXX, 2012
  --*                     All Rights Reserved
  --*************************************************************************************
  --** SYSTEM:                   EBS R12
  --** PROGRAM NAME:             cux_common_report_util_pkg.pls
  --** AUTHOR/EMAIL_ID:          Tony Liu
  --** DATE CREATED:             2013-1-13
  --** LATEST DATE MODIFIED:     2013-1-13
  --**
  --** DESCRIPTION:              用于发布输出格式为EXCEL的报表公用工具包
  --**
  --** INPUTS:
  --**
  --** OUTPUTS:                  N/A
  --**
  --** FUNCTION(S) CALLED:       N/A
  --**
  --** CAUTIONS:
  --**
  --**************************************************************************************
  --** Revision History
  --**   Date                   Revision Number        By         Reason/Defect
  --**-----------------------------------------------------------------------------
  --** 2013-1-13               1.0                     Tony Liu      Initial Version
  --**************************************************************************************
 
 
  --******************************************************************************
  -- Procedure: 输出信息到请求输出(OUTPUT)中
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE line(p_text IN VARCHAR2) IS
  BEGIN
    fnd_file.put_line(fnd_file.output, p_text);
    --dbms_output.put_line(p_text);
  END;
 
 
 
  --******************************************************************************
  -- Procedure: 输出XML文件的头部信息
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明:  author 传入提交请求的员工全名
  --        creation_date 格式为 to_char(sysdate,'yyyy-mm-ddhh24:mi:ss')
  --        company_name 传入xxxxxxx
  --******************************************************************************
  PROCEDURE sheet_start(p_author        IN VARCHAR2,
                        p_report_name   IN VARCHAR2,
                        p_creation_date IN VARCHAR2 DEFAULT to_char(SYSDATE,
                                                                    'yyyy-mm-dd hh24:mi:ss'),
                        p_company_name  IN VARCHAR2 DEFAULT 'XXXXXX') IS
  
    v_common_info1 VARCHAR2(32767);
    v_common_info2 VARCHAR2(32767);
    v_sheet_name   VARCHAR2(500);
    v_date         VARCHAR2(20);
    v_time         VARCHAR2(20);
    TYPE t_style_tbl IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER;
    v_style_tbl t_style_tbl;
  
  BEGIN
  
    v_date := substr(p_creation_date, 1, 10);
    v_time := substr(p_creation_date, 12);
  
    --XML 头信息
    v_common_info1 := '
                     

                      xmlns:o="urn:schemas-microsoft-com:office:office"
                       xmlns:x="urn:schemas-microsoft-com:office:excel"
                       xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
                       xmlns:html="http://www.w3.org/TR/REC-html40">
                       
                       ' || p_author ||
                      '
                       ' || p_author ||
                      '
                       ' || v_date || 'T' ||
                      v_time || 'Z
                       ' || p_company_name ||
                      '';
    v_common_info2 := '14.00
                       
                       
                       
                       
                       
                       11250
                       21420
                       120
                       15
                       False
                       False
                       ';
  
    --工作表缺省样式
    v_style_tbl(1) := '
                        //此为模板的默认style
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
    --参数使用的样式
    v_style_tbl(2) := '
                       //此为参数的默认style
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --报表标题的样式(自动换行)
    v_style_tbl(3) := '
                       //此为报表标题的默认style
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --列标题的样式(自动换行)
    v_style_tbl(4) := '
                       //此为报表列标题的默认style
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --普通日期样式
    v_style_tbl(5) := '
                       //此为日期型字段的默认style
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --高亮日期样式
    v_style_tbl(6) := '
                       //此为日期型字段的带背景色的style(黄色加强显示)
                       
                       
                       
                       
                       
                       
                       
                       
                      ';
  
    --普通会计数值样式
    v_style_tbl(7) := '
                       //此为会计用数值型字段的默认style
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --高亮会计数值样式
    v_style_tbl(8) := '
                       //此为会计用数值型字段的带背景色的style(黄色加强显示)
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --常规样式(自动换行)
    v_style_tbl(9) := '
                       //此为普通字段的style
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --常规高亮样式(自动换行)
    v_style_tbl(10) := '
                         //此为普通字段的的带背景色的style(黄色加强显示)
                         
                           
                           
                           
                           
                           
                           
                           
                         ';
    --会计(4位小数)样式
    v_style_tbl(11) := '
                       //此为会计用数值型字段的默认style(保留4位小数)
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --会计(4位小数)高亮样式
    v_style_tbl(12) := '
                       //此为会计用数值型字段的带背景色的style(保留4位小数,黄色加强显示)
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
  
    --会计样式(两位小数,负数加括号,0显示为'-')
    --样式:999,999,999.00 每三位一个分隔符999,999,999.00,负数用空号包住(123),如果是零 则是' - '
    v_style_tbl(13) := '                        
                       
                       
                       
                       
                       
                       
                       
                       
                                              
                                               
                        ';
  
    --会计样式(两位小数,负数加括号,0显示为'-', 并用黄色加亮)
    --样式:999,999,999.00 每三位一个分隔符999,999,999.00,负数用空号包住(123),如果是零 则是' - '
    v_style_tbl(14) := '                        
                       
                       
                       
                       
                       
                       
                       
                       
                       
                                            
                        ';
  
  
    --定义工作表名称
    IF p_report_name IS NULL THEN
      v_sheet_name := '';
    ELSE
      v_sheet_name := '';
    END IF;
  
    --输出XML头
    line(v_common_info1 || v_common_info2);
  
    --输出样式
    FOR i IN 1 .. v_style_tbl.count
    LOOP
      line(v_style_tbl(i));
    END LOOP;
  
    --样式结尾
    line('');
    --工作表名称
    line(v_sheet_name);
  
  
  
  END;
 
  --******************************************************************************
  -- Procedure: 输出XML文件的结尾信息
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE sheet_end IS
  BEGIN
    line('
             
             
             
             
             
             
             
             
              0
              0
             
             
             
             
              3
              4
             
             
              False
              False
             
           
            ');
  END;
 
 
  --******************************************************************************
  -- Procedure: 表格开始
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE table_start IS
  BEGIN
    line('');

  END;
 
 
  --******************************************************************************
  -- Procedure: 表格结束
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE table_end IS
  BEGIN
    line('

');

  END;
 
 
  --******************************************************************************
  -- Procedure: 初始化列宽
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE define_column(p_width IN NUMBER, p_span IN NUMBER DEFAULT NULL) IS
  BEGIN
    IF p_span IS NULL THEN
      line('');
    ELSE
      line('');
    END IF;
  END;
 
 
  --******************************************************************************
  -- Procedure: 输出报表标题
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明:   merge: 向右合并 值要比将合并的列小1,比如要合并3列,只需传入2
  --        merge_down: 向下合并
  --******************************************************************************
  PROCEDURE rpt_header(p_text       IN VARCHAR2,
                       p_merge      IN NUMBER DEFAULT NULL,
                       p_merge_down IN NUMBER DEFAULT NULL) IS
    v_merge      VARCHAR2(100);
    v_merge_down VARCHAR2(100);
  BEGIN
    IF p_merge IS NOT NULL
       AND p_merge > 0 THEN
      v_merge := 'ss:MergeAcross="' || p_merge || '"';
    END IF;
    IF p_merge_down IS NOT NULL
       AND p_merge_down > 0 THEN
      v_merge_down := 'ss:MergeDown="' || p_merge_down || '"';
    END IF;
  
    line('
               <cell '="" ||="" v_merge="" v_merge_down="" ||<="" div="">

         'ss:StyleID="s1">' || p_text ||
         '
          ');
  
  
  END;
 
 
  --******************************************************************************
  -- Procedure: 输出报表参数
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明:   merge:向右合并,值要比将合并的列小1,比如要合并3列,只需传入2
  --        merge_down: 向下合并
  --        index: 单元格的位置(水平第N列)
  --******************************************************************************
  PROCEDURE rpt_parameter(p_text       IN VARCHAR2,
                          p_merge      IN NUMBER DEFAULT NULL,
                          p_merge_down IN NUMBER DEFAULT NULL,
                          p_index      IN NUMBER DEFAULT NULL) IS
  
    v_merge      VARCHAR2(100);
    v_merge_down VARCHAR2(100);
    v_index      VARCHAR2(100);
  
  BEGIN
    IF p_merge IS NOT NULL
       AND p_merge > 0 THEN
      v_merge := 'ss:MergeAcross="' || p_merge || '"';
    END IF;
    IF p_merge_down IS NOT NULL
       AND p_merge_down > 0 THEN
      v_merge_down := 'ss:MergeDown="' || p_merge_down || '"';
    END IF;
    IF p_index IS NOT NULL
       AND p_index > 0 THEN
      v_index := 'ss:Index="' || p_index || '"';
    END IF;
  
    line('<cell '="" ||="" v_index="" v_merge="" v_merge_down="" ||<="" div="">

         'ss:StyleID="m1">' || p_text ||
         '');
  
  END;
 
 
  --******************************************************************************
  -- Procedure: 行开始
  -- 版本: 1.0row_start
  -- Author: 刘峰
  -- 说明:Height : 行高度
  --******************************************************************************
  PROCEDURE row_start(p_height IN NUMBER DEFAULT NULL) IS
    v_height VARCHAR2(100);
  
  BEGIN
    IF p_height IS NOT NULL
       AND p_height > 0 THEN
      v_height := 'ss:Height="' || p_height || '"';
    END IF;
    line('');
  END;
 
 
  --******************************************************************************
  -- Procedure: 行结束
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE row_end IS
  BEGIN
    line('');
  END;
 
 
  --******************************************************************************
  -- Procedure: 输出列标题
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明:  merge的值要比将合并的列小1,比如要合并3列,只需传入2
  --        merge_down: 向下合并
  --        index: 单元格的位置(水平第N列)
  --******************************************************************************
  PROCEDURE rpt_title(p_text       IN VARCHAR2,
                      p_merge      IN NUMBER DEFAULT NULL,
                      p_merge_down IN NUMBER DEFAULT NULL,
                      p_index      IN NUMBER DEFAULT NULL) IS
  
    v_merge      VARCHAR2(100);
    v_merge_down VARCHAR2(100);
    v_index      VARCHAR2(100);
    v_wrap       VARCHAR2(100);
  
  BEGIN
  
    IF p_merge IS NOT NULL
       AND p_merge > 0 THEN
      v_merge := 'ss:MergeAcross="' || p_merge || '"';
    END IF;
    IF p_merge_down IS NOT NULL
       AND p_merge_down > 0 THEN
      v_merge_down := 'ss:MergeDown="' || p_merge_down || '"';
    END IF;
    IF p_index IS NOT NULL
       AND p_index > 0 THEN
      v_index := 'ss:Index="' || p_index || '"';
    END IF;
  
    line('<cell '="" ||="" v_index="" v_merge="" v_merge_down="" ||<="" div="">

         'ss:StyleID="s2">' || p_text ||
         '');
  
  END;
 
 
  --******************************************************************************
  -- Procedure: 输出报表明细
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明: type 包括 String/Number/DateTime, 注意大小写
  --       formula 必须要以=开头
  --       merge的值要比将合并的列小1,比如要合并3列,只需传入2
  --        merge_down: 向下合并
  --        index: 单元格的位置(水平第N列)
  --        array_range: 数组公式
  --******************************************************************************
  PROCEDURE rpt_detail(p_text        IN VARCHAR2 DEFAULT NULL,
                       p_type        IN VARCHAR2 DEFAULT 'String',
                       p_formula     IN VARCHAR2 DEFAULT NULL,
                       p_style.       IN VARCHAR2 DEFAULT NULL,
                       p_merge       IN NUMBER DEFAULT NULL,
                       p_merge_down  IN NUMBER DEFAULT NULL,
                       p_index       IN NUMBER DEFAULT NULL,
                       p_array_range IN BOOLEAN DEFAULT FALSE) IS
  
    v_style.       VARCHAR2(50);
    v_merge       VARCHAR2(50);
    v_type        VARCHAR2(50);
    v_formula     VARCHAR2(30000);
    v_index       VARCHAR2(100);
    v_merge_down  VARCHAR2(100);
    v_array_range VARCHAR2(100);
  
  BEGIN
  
    IF p_type = 'Number' THEN
      v_type := '';
    ELSIF p_type = 'String' THEN
      v_type := '';
    ELSIF p_type = 'DateTime' THEN
      v_type := '';
    END IF;
  
    IF p_formula IS NOT NULL THEN
      v_formula := 'ss:Formula="' || p_formula || '"';
    END IF;
  
    IF p_style. IS NOT NULL THEN
      v_style.:= 'ss:StyleID="' || p_style. '"';
    ELSE
      v_style.:= 'ss:StyleID="s7"'; --常规格式
    END IF;
    IF p_merge IS NOT NULL
       AND p_merge > 0 THEN
      v_merge := 'ss:MergeAcross="' || p_merge || '"';
    END IF;
  
    IF p_merge_down IS NOT NULL
       AND p_merge_down > 0 THEN
      v_merge_down := 'ss:MergeDown="' || p_merge_down || '"';
    END IF;
  
    IF p_index IS NOT NULL
       AND p_index > 0 THEN
      v_index := 'ss:Index="' || p_index || '"';
    END IF;
  
    IF p_array_range THEN
      v_array_range := 'ss:ArrayRange="RC"';
    END IF;
  
    line('<cell '="" ||="" v_index="" v_merge="" v_merge_down="" ||<="" div="">

         v_style. ' ' || v_array_range || ' ' || v_formula || '>' ||
         v_type || p_text || '');
  END;
 
 
 
  --******************************************************************************
  -- Procedure: 示例代码
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE report_sample(errbuf OUT VARCHAR2, retcode OUT VARCHAR2) IS
  
    g_date_style.     VARCHAR2(10) := 's3'; --普通日期型
    g_date_h_style.   VARCHAR2(10) := 's4'; --高亮日期型
    g_number_style.   VARCHAR2(10) := 's5'; --普通会计数字
    g_number_h_style. VARCHAR2(10) := 's6'; --高亮会计数字
  
    g_normal_h_style. VARCHAR2(10) := 's7'; --通用型
    g_normal_style.   VARCHAR2(10) := 's8'; --高亮通用型
  
    g_number4_style.   VARCHAR2(10) := 's9'; --普通会计数字(保留4位小数)
    g_number4_h_style. VARCHAR2(10) := 's10'; --高亮会计数字(保留4位小数)
  
    v_person VARCHAR2(50);
  BEGIN
  
    --获取提交人名称
    BEGIN
      SELECT t.full_name
        INTO v_person
        FROM per_all_people_f t
       WHERE t.person_id =
             (SELECT fu.employee_id
                FROM fnd_user fu
               WHERE fu.user_id = fnd_global.user_id)
         AND nvl(t.effective_end_date, SYSDATE + 1) > SYSDATE;
    EXCEPTION
      WHEN OTHERS THEN
        SELECT fu.user_name
          INTO v_person
          FROM fnd_user fu
         WHERE fu.user_id = fnd_global.user_id;
    END;
  
    --定义XML头信息
    cux_common_report_util_pkg.sheet_start(p_author        => v_person,
                                           p_creation_date => to_char(SYSDATE,
                                                                      'yyyy-mm-dd hh:mi:ss'),
                                           p_company_name  => 'XXXXXX',
                                           p_report_name   => '测试报表');
  
    --表格开始
    cux_common_report_util_pkg.table_start;
  
    --定义列
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
  
    --输出报表标题
    cux_common_report_util_pkg.rpt_header('测试报表', 9);
  
    --输出报表参数
    cux_common_report_util_pkg.row_start;
    cux_common_report_util_pkg.rpt_parameter('参数1: WELCOME', 2);
    cux_common_report_util_pkg.rpt_parameter('参数2: HELLO', 2);
    cux_common_report_util_pkg.row_end;
  
    --输出报表列标题
    cux_common_report_util_pkg.row_start;
  
    cux_common_report_util_pkg.rpt_title('普通字符型');
    cux_common_report_util_pkg.rpt_title('高亮字符型');
    cux_common_report_util_pkg.rpt_title('普通数字型');
    cux_common_report_util_pkg.rpt_title('高亮数字型');
    cux_common_report_util_pkg.rpt_title('会计数字型');
    cux_common_report_util_pkg.rpt_title('高亮会计数字型');
    cux_common_report_util_pkg.rpt_title('普通日期型');
    cux_common_report_util_pkg.rpt_title('高亮日期型');
    cux_common_report_util_pkg.rpt_title('普通公式列');
    cux_common_report_util_pkg.rpt_title('高亮公式列');
  
  
    cux_common_report_util_pkg.row_end;
  
    --输出报表明细
    cux_common_report_util_pkg.row_start;
    --字符类型
    cux_common_report_util_pkg.rpt_detail(p_text  => '王小二',
                                          p_type  => 'String',
                                          p_style. => g_normal_style);
    cux_common_report_util_pkg.rpt_detail(p_text  => '男性',
                                          p_type  => 'String',
                                          p_style. => g_normal_h_style);
    --数值类型
    cux_common_report_util_pkg.rpt_detail(p_text  => '1234.345',
                                          p_type  => 'Number',
                                          p_style. => g_normal_style);
    cux_common_report_util_pkg.rpt_detail(p_text  => '345.456',
                                          p_type  => 'Number',
                                          p_style. => g_normal_h_style);
  
    cux_common_report_util_pkg.rpt_detail(p_text  => '34324.345',
                                          p_type  => 'Number',
                                          p_style. => g_number_style);
    cux_common_report_util_pkg.rpt_detail(p_text  => '34324.345',
                                          p_type  => 'Number',
                                          p_style. => g_number_h_style);
    --日期类型
    cux_common_report_util_pkg.rpt_detail(p_text  => to_char(trunc(SYSDATE),
                                                             'yyyy-mm-dd'),
                                          p_type  => 'DateTime',
                                          p_style. => g_date_style);
    cux_common_report_util_pkg.rpt_detail(p_text  => to_char(trunc(SYSDATE),
                                                             'yyyy-mm-dd'),
                                          p_type  => 'DateTime',
                                          p_style. => g_date_h_style);
  
    --公式类型
    cux_common_report_util_pkg.rpt_detail(p_text    => NULL,
                                          p_formula => '=rc[-6]+rc[-5]',
                                          p_type    => 'Number',
                                          p_style.   => g_number_style);
    cux_common_report_util_pkg.rpt_detail(p_text    => NULL,
                                          p_formula => '=rc[-5]+rc[-4]',
                                          p_type    => 'Number',
                                          p_style.   => g_number_h_style);
  
    cux_common_report_util_pkg.row_end;
  
    --表格结束
    cux_common_report_util_pkg.table_end;
  
    --工作表结束
    cux_common_report_util_pkg.sheet_end;
  END;
 
 
 
END cux_common_report_util_pkg;

EBS中 EXCEL 格式报表输出的公用API的更多相关文章

  1. python中json格式数据输出实现方式

    python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...

  2. ORACLE EBS xml publisher 报表输出字符字段前部"0"被EXCEL自动去掉问题

    http://www.cnblogs.com/lzsu1989/archive/2012/10/17/2728528.html   Oracle  EBS 提供多种报表的开发和输出形式,由于MS Ex ...

  3. Report_客制化报表输出Excel后去0问题(案例)

    2014-02-01 Created By BaoXinjian

  4. Oracle EBS R12 XML数据表格的Excel脚本报表

    http://www.cnblogs.com/quanweiru/archive/2012/07/28/2612680.html 一.概述 在EBS系统中,报表是一个非常重要的客户化开发内容,也是系统 ...

  5. EBS 多sheet页Excel动态报表开发过程

    http://zhangzhongjie.iteye.com/blog/1779891 .前言本文讲述的多Sheet页EXCEL报表开发方式和开发HTML,PDF这类报表的方法大致是一致的,唯一不同的 ...

  6. EBS中使用JAVA方式发送HTML格式邮件

    转自huan.gu专栏:http://blog.csdn.net/gh320/article/details/17174769 EBS中使用JAVA方式发送HTML格式邮件 一.开发工具:JDevel ...

  7. DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)

    /// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...

  8. 在Java中导出word、excel格式文件时JSP页面头的设置

    我们在JSP中往往会把一些表格里的东西需要导出到本地,一般都是导成word.excel格式的文件.这只需要在JSP页面头设置及在<head></head>标签中添加下面的代码: ...

  9. VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表

    原文:VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表 Excel具有强大的图表显示.分析功能,这点毋庸置疑,但是如果将常规MIS系统中的数据以报表的形式在Excel中显示,却并不那 ...

随机推荐

  1. MySQL表的相关操作

    操作数据表之前,必须先选择相应数据表所在的数据库 mysql> USE databaseName; -- 选择数据库 查看该数据库下的数据表 mysql> show tables; 确定数 ...

  2. SVN简明教程

    SVN简明教程 Posted on 2010-09-07 17:34 幻海蓝梦 阅读(7196) 评论(0)  编辑  收藏 所属分类: 版本管理  http://www.emsym.com/blog ...

  3. 蛋白序列GO号注释及问题

    #===============================      版本1  ===============================================InterProSc ...

  4. Reading CLR via c# 4th Edition

    In fact, at runtime, the CLR has no idea which programming language the developer used for thesource ...

  5. rails 查看项目的所有路由

    rails routes

  6. log4j介绍和使用

    1.apache推出的开源免费日志处理的类库 2.为什么需要日志?? 2.1 在项目中编写system.out.println();输出到控制台,当项目发布到tomcat后,没有控制台(在命令界面能看 ...

  7. 2018.10.31 NOIP训练 锻造(方程式期望入门题)(期望dp)

    传送门 根据题目列出方程: fi=pi∗(fi−1+fi−2)+(1−pi)∗(fi+1+fi)f_i=p_i*(f_{i-1}+f_{i-2})+(1-p_i)*(f_{i+1}+f_i)fi​=p ...

  8. hdu-1255(线段树求面积并)模板

    题目链接:传送门 思路: (1)建立线段的信息,每个线段存储l到r的线段的x位置和y的起始点与终点. 建立线段树的节点信息,每个节点代表一个区间的信息,x表示区间的横坐标的位置,l,r表示纵坐标的范围 ...

  9. Win7 VS2013环境使用cuda_7.5.18

    首先得吐槽下VS2015出来快一年了CUDA居然还不支持,没办法重装系统刚从2013升到2015,还得再装回一个2013用,只为学习CUDA... 然后安装的时候,如果你选择自定义组件安装,注意不要改 ...

  10. TCP/IP协议(4):网络层

    网络层上有IP.ICMP.IGMP等协议. 1.IP地址 在OSI模型中,三层网络层负责IP地址,IP数据报帧头中的源地址和目的地址就是指IP地址.IPV4类型IP地址为32位4个字节,IPV6类型I ...