ABAP-动态创建DATABASE/FUNCTION(风险)
警告:此程序仅供研究,请谨慎操作,切勿对系统标准数据表及功能函数进行测试(可能无法修复)。
程序:EWUCINS
- REPORT EWUCINS MESSAGE-ID US NO STANDARD PAGE HEADING.
- * Administrieren Cluster und parallele Tasks
- PARAMETERS: TESTRUN DEFAULT 'X', "test B(reak), C(alled)
- P_FKT() DEFAULT 'SIZ'."SIZ,INS,DEL
- TABLES: TAORA, TAINF.
- DATA: H_RUNTI TYPE F.
- DATA: BEGIN OF T_DBAFREE OCCURS ,
- NAME(),
- BYTES TYPE I,
- END OF T_DBAFREE,
- H_TABNAME LIKE DD02L-TABNAME VALUE 'EWUCLU'.
- DATA: BEGIN OF T_DBAONLINE OCCURS ,
- NAME(),
- STATUS(),
- END OF T_DBAONLINE.
- DATA: RC LIKE SY-SUBRC.
- AT SELECTION-SCREEN OUTPUT.
- *f sy-subty = '04'. "dialog
- IF TESTRUN <> 'C'. "dialog
- P_FKT = 'SIZ'.
- ENDIF.
- START-OF-SELECTION.
- *******************************************************
- * Write out Parameters
- *******************************************************
- PERFORM WRITE_PARMS.
- GET RUN TIME FIELD H_RUNTI.
- ************************************************************************
- * functions
- ************************************************************************
- CASE P_FKT.
- * available freespace in db ------------------------------------------*
- WHEN 'SIZ'.
- IF SY-DBSYS = 'ORACLE'
- OR SY-DBSYS = 'INFORMIX'.
- PERFORM SEL_DBAFREE.
- ELSE.
- * installation --------------------------------------------------------*
- * when 'INS'.
- TAORA-TABART = 'APPL0'.
- PERFORM CREATE_TABLE.
- PERFORM CREATE_FUNCTION.
- ENDIF.
- * drop ewuclu --------------------------------------------------------*
- WHEN 'DEL'.
- PERFORM DELETE_TABLE.
- ENDCASE.
- GET RUN TIME FIELD H_RUNTI.
- * IF testrun = 'B'. BREAK-POINT. ENDIF.
- WRITE: / 'runtime:', H_RUNTI,
- / 'endtime:', SY-UZEIT.
- COMMIT WORK.
- IF TESTRUN = 'C'. LEAVE PROGRAM. ENDIF. "called
- STOP.
- *----------------------------------------------------------------------*
- AT LINE-SELECTION.
- T_DBAFREE-name = SY-LISEL().
- WRITE: / T_DBAFREE-NAME, 'wurde ausgewählt'().
- PERFORM FIND_TABLE_DETAIL.
- PERFORM CREATE_TABLE.
- PERFORM CREATE_FUNCTION.
- *----------------------------------------------------------------------*
- FORM APPEND_DBAFREE.
- IF SY-SUBRC = . APPEND T_DBAFREE. ENDIF.
- ENDFORM.
- FORM APPEND_DBAONLINE.
- IF SY-SUBRC = . APPEND T_DBAONLINE. ENDIF.
- ENDFORM.
- *----------------------------------------------------------------------*
- FORM SEL_DBAFREE.
- CASE SY-DBSYS.
- WHEN 'ORACLE'.
- EXEC SQL PERFORMING APPEND_DBAFREE.
- SELECT TABLESPACE_NAME, SUM(NVL(BYTES,))/
- FROM DBA_FREE_SPACE
- GROUP BY TABLESPACE_NAME INTO :T_DBAFREE
- ENDEXEC.
- EXEC SQL PERFORMING APPEND_DBAONLINE.
- SELECT TABLESPACE_NAME, STATUS
- FROM DBA_TABLESPACES
- INTO :T_DBAONLINE
- ENDEXEC.
- LOOP AT T_DBAONLINE.
- IF T_DBAONLINE-STATUS = 'OFFLINE'.
- DELETE T_DBAFREE WHERE NAME = T_DBAONLINE-NAME.
- ENDIF.
- ENDLOOP.
- WHEN 'INFORMIX'.
- PERFORM LISTE_DBSPACES_CREATE.
- WHEN OTHERS.
- WRITE: / 'DB not implemented'. STOP.
- ENDCASE.
- SORT T_DBAFREE BY BYTES DESCENDING.
- IF TESTRUN <> 'C'.
- LOOP AT T_DBAFREE.
- IF SY-TABIX = .
- WRITE: / 'Tablespace', 'Freespace(KB)'.
- ENDIF.
- WRITE: / T_DBAFREE-NAME, T_DBAFREE-BYTES.
- ENDLOOP.
- * automatically find biggest freespace
- ELSE.
- LOOP AT T_DBAFREE.
- IF T_DBAFREE-NAME() <> 'PSAPROLL'
- AND T_DBAFREE-NAME() <> 'PSAPTEMP'
- AND T_DBAFREE-NAME() <> 'SYSTEM'.
- PERFORM FIND_TABLE_DETAIL.
- PERFORM CREATE_TABLE.
- PERFORM CREATE_FUNCTION.
- EXIT.
- ENDIF.
- ENDLOOP.
- ENDIF.
- ENDFORM.
- *----------------------------------------------------------------------*
- FORM FIND_TABLE_DETAIL.
- * tabellenart (appl0) bestimmt tablespace/dbspace
- CASE SY-DBSYS.
- WHEN 'ORACLE'.
- SELECT SINGLE * FROM TAORA WHERE TABSPACE = T_DBAFREE-NAME.
- WHEN 'INFORMIX'.
- TAINF-DBSPACES = T_DBAFREE-NAME.
- TRANSLATE TAINF-DBSPACES TO UPPER CASE. "#EC TRANSLANG
- SELECT SINGLE * FROM TAINF WHERE DBSPACES = TAINF-DBSPACES.
- TAORA-TABART = TAINF-TABART.
- ENDCASE.
- IF SY-SUBRC <> .
- * write: / 'tabart not found'.
- * exit.
- TAORA-TABART = 'APPL0'.
- IF SY-DBSYS = 'ORACLE'.
- DATA: PROG() OCCURS WITH HEADER LINE.
- TABLES: DD02L.
- PROG = 'report x. '. APPEND PROG.
- PROG = 'tables: dd02ora. '. APPEND PROG.
- IF SY-SAPRL >= '31I'.
- PROG = 'tables: ddstorage. '. APPEND PROG.
- ENDIF.
- PROG = 'form insert_dd02ora. '. APPEND PROG.
- CONCATENATE 'dd02ora-tabname = ''' H_TABNAME '''.' INTO PROG.
- APPEND PROG.
- CONCATENATE 'delete from dd02ora where tabname = '''
- H_TABNAME '''.' INTO PROG.
- APPEND PROG.
- PROG = 'dd02ora-source = ''USR''. '. APPEND PROG.
- PROG = 'dd02ora-useflag = ''X''. '. APPEND PROG.
- CONCATENATE 'dd02ora-tabspace = ''' T_DBAFREE-NAME '''.' INTO PROG.
- APPEND PROG.
- PROG = 'dd02ora-init = ''''. '. APPEND PROG.
- PROG = 'dd02ora-next = ''''. '. APPEND PROG.
- PROG = 'dd02ora-minext = ''''. '. APPEND PROG.
- PROG = 'dd02ora-maxext = ''''. '. APPEND PROG.
- PROG = 'dd02ora-pctinc = ''''. '. APPEND PROG.
- PROG = 'dd02ora-ofreelist = ''''. '. APPEND PROG.
- PROG = 'dd02ora-ofreegroup = ''''. '. APPEND PROG.
- PROG = 'dd02ora-opctfree = ''''. '. APPEND PROG.
- PROG = 'dd02ora-opctused = ''''. '. APPEND PROG.
- PROG = 'insert dd02ora. '. APPEND PROG.
- PROG = 'endform. '. APPEND PROG.
- DATA: H_GENPROG LIKE TRDIR-NAME.
- * break-point.
- GENERATE SUBROUTINE POOL PROG NAME H_GENPROG MESSAGE PROG.
- PERFORM INSERT_DD02ORA IN PROGRAM (H_GENPROG).
- ENDIF.
- ENDIF.
- ENDFORM.
- *----------------------------------------------------------------------*
- FORM CREATE_TABLE.
- DATA: I_DD02V_WA LIKE DD02V,
- I_DD09L_WA LIKE DD09L,
- I_DD03P_TAB LIKE DD03P OCCURS WITH HEADER LINE.
- * Header
- I_DD02V_WA-TABNAME = H_TABNAME.
- I_DD02V_WA-DDLANGUAGE = 'D'.
- I_DD02V_WA-DDTEXT = '_conv_ Cluster'.
- I_DD02V_WA-TABCLASS = 'TRANSP'.
- I_DD02V_WA-CONTFLAG = 'L'.
- * Technical Settings
- I_DD09L_WA-TABNAME = H_TABNAME.
- I_DD09L_WA-TABKAT = ''.
- I_DD09L_WA-TABART = TAORA-TABART.
- *_dd09l_wa-bufalow = 'N'.
- * Fields
- I_DD03P_TAB-TABNAME = H_TABNAME.
- I_DD03P_TAB-DDLANGUAGE = 'D'.
- I_DD03P_TAB-FIELDNAME = 'MANDT'.
- I_DD03P_TAB-POSITION = ''.
- I_DD03P_TAB-KEYFLAG = 'X'.
- I_DD03P_TAB-DATATYPE = 'CLNT'.
- I_DD03P_TAB-LENG = ''.
- APPEND I_DD03P_TAB.
- I_DD03P_TAB-FIELDNAME = 'RELID'.
- I_DD03P_TAB-POSITION = ''.
- I_DD03P_TAB-KEYFLAG = 'X'.
- I_DD03P_TAB-DATATYPE = 'CHAR'.
- I_DD03P_TAB-LENG = ''.
- APPEND I_DD03P_TAB.
- I_DD03P_TAB-FIELDNAME = 'UMSID'.
- I_DD03P_TAB-POSITION = ''.
- I_DD03P_TAB-KEYFLAG = 'X'.
- I_DD03P_TAB-DATATYPE = 'CHAR'.
- I_DD03P_TAB-LENG = ''.
- APPEND I_DD03P_TAB.
- I_DD03P_TAB-FIELDNAME = 'PAGENO'.
- I_DD03P_TAB-POSITION = ''.
- I_DD03P_TAB-KEYFLAG = 'X'.
- I_DD03P_TAB-DATATYPE = 'INT4'.
- I_DD03P_TAB-LENG = ''.
- APPEND I_DD03P_TAB.
- I_DD03P_TAB-FIELDNAME = 'CLUSTR'.
- I_DD03P_TAB-POSITION = ''.
- I_DD03P_TAB-KEYFLAG = ' '.
- I_DD03P_TAB-DATATYPE = 'INT2'.
- I_DD03P_TAB-LENG = ''.
- APPEND I_DD03P_TAB.
- I_DD03P_TAB-FIELDNAME = 'CLUSTD'.
- I_DD03P_TAB-POSITION = ''.
- I_DD03P_TAB-KEYFLAG = ' '.
- I_DD03P_TAB-DATATYPE = 'LRAW'.
- I_DD03P_TAB-LENG = ''.
- APPEND I_DD03P_TAB.
- CALL FUNCTION 'DDIF_TABL_PUT'
- EXPORTING
- NAME = H_TABNAME
- DD02V_WA = I_DD02V_WA
- DD09L_WA = I_DD09L_WA
- TABLES
- DD03P_TAB = I_DD03P_TAB
- * DD05M_TAB =
- * DD08V_TAB =
- EXCEPTIONS
- TABL_NOT_FOUND =
- NAME_INCONSISTENT =
- TABL_INCONSISTENT =
- PUT_FAILURE =
- PUT_REFUSED =
- OTHERS = .
- IF SY-SUBRC <> .
- MESSAGE e306(mq) WITH text-. "'Table create error'.
- ENDIF.
- CALL FUNCTION 'DDIF_TABL_ACTIVATE'
- EXPORTING
- NAME = H_TABNAME
- AUTH_CHK = 'X'
- * PRID = -1
- IMPORTING
- RC = RC
- EXCEPTIONS
- NOT_FOUND =
- PUT_FAILURE =
- OTHERS = .
- IF SY-SUBRC <> OR RC = .
- MESSAGE E341(MQ).
- LEAVE PROGRAM.
- ENDIF.
- CALL FUNCTION 'TRINT_TADIR_INSERT'
- EXPORTING
- * AUTHOR = SY-UNAME
- * MASTERLANG = ' '
- DEVCLASS = 'ECLU'
- * GENFLAG = ' '
- OBJECT = 'TABL'
- OBJ_NAME = 'EWUCLU'
- PGMID = 'R3TR'
- SRCSYSTEM = 'SAP'
- * IMPORTING
- * ES_TADIR =
- EXCEPTIONS
- OBJECT_EXISTS_GLOBAL =
- OBJECT_EXISTS_LOCAL =
- OTHERS = .
- IF SY-SUBRC = .
- MESSAGE e306(mq) WITH text-. "'tadir insert error'
- ENDIF.
- * SUBMIT EWUCADM
- * WITH TESTRUN = 'X'
- * WITH P_FKT = 'DIR'
- * WITH P_MAXTSK = ' '
- * WITH P_PROG = ' '
- * WITH P_BATCH = ' '
- * WITH P_RELID = ' '
- * WITH P_CLUSIZ = ' '.
- ENDFORM.
- *----------------------------------------------------------------------*
- FORM DELETE_TABLE.
- CALL FUNCTION 'DB_DROP_TABLE'
- EXPORTING
- * DBSYS = SY-DBSYS
- * NO_EXEC = ' '
- * PRID = 0
- * PROGNAME = ' '
- TABNAME = 'EWUCLU'
- * DB_CHECK_FLAG = ' '
- * IMPORTING
- * GENPROG =
- * SUBRC =
- EXCEPTIONS
- PROGRAM_NOT_GENERATED =
- PROGRAM_NOT_WRITTEN =
- TABLE_NOT_DROPPED =
- OTHERS = .
- IF SY-SUBRC <> . MESSAGE e306(mq) WITH text-. ENDIF.
- CALL FUNCTION 'DD_TABL_DEL'
- EXPORTING
- TABNAME = 'EWUCLU'
- DEL_STATE = 'A'
- * PRID = 0
- EXCEPTIONS
- OTHERS = .
- IF SY-SUBRC <> . MESSAGE e306(mq) WITH text-. ENDIF.
- CALL FUNCTION 'TRINT_TADIR_DELETE'
- EXPORTING
- OBJECT = 'TABL'
- OBJ_NAME = 'EWUCLU'
- PGMID = 'R3TR'
- EXCEPTIONS
- TADIR_ENTRY_NOT_EXISTING =
- OBJECT_EXISTS =
- OTHERS = .
- IF SY-SUBRC = . MESSAGE e306(mq) WITH text- . ENDIF.
- ENDFORM.
- *----------------------------------------------------------------------*
- FORM CREATE_FUNCTION.
- CALL FUNCTION 'FUNCTION_POOL_CREATE'
- EXPORTING
- POOL_NAME = 'ZCNV'
- * RESPONSIBLE = SY-UNAME
- SHORT_TEXT = '_conversion_'
- * NAMESPACE = ' '
- EXCEPTIONS
- NAME_ALREADY_EXISTS =
- NAME_NOT_CORRECT =
- OTHERS = .
- IF SY-SUBRC <> AND SY-SUBRC <> .
- MESSAGE e306(mq) WITH text-. "Function pool error
- ENDIF.
- DATA: I_RSEXC LIKE RSEXC OCCURS WITH HEADER LINE.
- DATA: I_RSEXP LIKE RSEXP OCCURS WITH HEADER LINE.
- DATA: I_RSIMP LIKE RSIMP OCCURS WITH HEADER LINE.
- DATA: I_RSFSO LIKE RSFSO OCCURS WITH HEADER LINE.
- DATA: I_RSTBL LIKE RSTBL OCCURS WITH HEADER LINE.
- DATA: I_RSCHA LIKE RSCHA OCCURS WITH HEADER LINE.
- TABLES: RS38L.
- I_RSIMP-PARAMETER = 'TESTRUN'.
- I_RSIMP-DBFIELD = 'TRDIR-SQLX'.
- APPEND I_RSIMP.
- I_RSIMP-PARAMETER = 'PROGNAME'.
- I_RSIMP-DBFIELD = 'TRDIR-NAME'.
- APPEND I_RSIMP.
- I_RSIMP-PARAMETER = 'FUNKTION'.
- I_RSIMP-DBFIELD = 'TRDIR-TYPE'.
- APPEND I_RSIMP.
- I_RSIMP-PARAMETER = 'UMSID'.
- I_RSIMP-DBFIELD = 'EWUCLU-UMSID'.
- APPEND I_RSIMP.
- I_RSIMP-PARAMETER = 'UMSI2'.
- I_RSIMP-DBFIELD = 'EWUCLU-UMSID'.
- APPEND I_RSIMP.
- I_RSIMP-PARAMETER = 'TSKNO'.
- I_RSIMP-DBFIELD = 'EWUCLU-RELID'.
- APPEND I_RSIMP.
- I_RSIMP-PARAMETER = 'RELID'.
- I_RSIMP-DBFIELD = 'EWUCLU-RELID'.
- APPEND I_RSIMP.
- I_RSIMP-PARAMETER = 'CLUSIZ'.
- I_RSIMP-DBFIELD = 'TRDIR-NAME'.
- APPEND I_RSIMP.
- CALL FUNCTION 'FUNCTION_CREATE'
- EXPORTING
- * CORRNUM = ' '
- FUNCNAME = 'Z_SUB_PROG'
- FUNCTION_POOL = 'ZCNV'
- * INTERFACE_GLOBAL = ' '
- REMOTE_CALL = 'X'
- SHORT_TEXT = '_conversion_'
- * SUPPRESS_CORR_CHECK = 'X'
- * UPDATE_TASK = ' '
- IMPORTING
- FUNCTION_INCLUDE = RS38L-INCLUDE
- TABLES
- EXCEPTION_LIST = I_RSEXC
- EXPORT_PARAMETER = I_RSEXP
- IMPORT_PARAMETER = I_RSIMP
- PARAMETER_DOCU = I_RSFSO
- TABLES_PARAMETER = I_RSTBL
- CHANGING_PARAMETER = I_RSCHA
- EXCEPTIONS
- DOUBLE_TASK =
- ERROR_MESSAGE =
- FUNCTION_ALREADY_EXISTS =
- INVALID_FUNCTION_POOL =
- INVALID_NAME =
- TOO_MANY_FUNCTIONS =
- OTHERS = .
- IF SY-SUBRC <> .
- IF SY-SUBRC <> .
- * write: / 'Irgendwas ist beim FUBA anlegen schiefgegangen', sy-subrc.
- MESSAGE e306(mq) WITH text-.
- ENDIF.
- EXIT.
- ENDIF.
- DATA: BEGIN OF PROG OCCURS ,
- LINE(),
- END OF PROG.
- * break-point.
- READ REPORT RS38L-INCLUDE INTO PROG.
- LOOP AT PROG.
- IF PROG-LINE = ' '.
- PROG-LINE = 'submit (progname)'. INSERT PROG INTO PROG.
- PROG-LINE = 'with testrun = testrun '. INSERT PROG INTO PROG.
- PROG-LINE = 'with p_fkt = funktion'. INSERT PROG INTO PROG.
- PROG-LINE = 'with p_umsid = umsid '. INSERT PROG INTO PROG.
- PROG-LINE = 'with p_umsi2 = umsi2 '. INSERT PROG INTO PROG.
- PROG-LINE = 'with p_tskno = tskno '. INSERT PROG INTO PROG.
- PROG-LINE = 'with p_relid = relid '. INSERT PROG INTO PROG.
- PROG-LINE = 'with p_clusiz = clusiz '. INSERT PROG INTO PROG.
- PROG-LINE = 'to sap-spool '. INSERT PROG INTO PROG.
- PROG-LINE = 'without spool dynpro '. INSERT PROG INTO PROG.
- PROG-LINE = 'and return. '. INSERT PROG INTO PROG.
- EXIT.
- ENDIF.
- ENDLOOP.
- INSERT REPORT RS38L-INCLUDE FROM PROG.
- ENDFORM.
- *----------------------------------------------------------------------*
- FORM LISTE_DBSPACES_CREATE.
- DATA: BUFSIZE TYPE I.
- PERFORM GET_DB_PARAMETER(RSINF000) USING 'BUFFSIZE' BUFSIZE.
- BUFSIZE = BUFSIZE / .
- * exec sql performing makedbspaces.
- * c.dbsnum,
- * sum(c.chksize) * :bufsize ,
- * into :dbspaces_chunks
- EXEC SQL PERFORMING APPEND_DBAFREE.
- SELECT D.NAME,
- SUM(C.NFREE) * :BUFSIZE
- FROM SYSMASTER:SYSDBSPACES D,
- SYSMASTER:SYSCHUNKS C
- WHERE C.DBSNUM = D.DBSNUM
- GROUP BY C.DBSNUM, D.NAME
- INTO :T_DBAFREE
- ENDEXEC.
- ENDFORM.
- *---------------------------------------------------------------------*
- FORM WRITE_PARMS.
- WRITE: / 'testrun:', TESTRUN,
- / 'funktion:', P_FKT(),
- / 'time:', SY-UZEIT,
- / '--------------------------------------------------'.
- ENDFORM.
ABAP-动态创建DATABASE/FUNCTION(风险)的更多相关文章
- bootstrap-multiselect 的简单使用,样式修改,动态创建option
1.bootstrap-multiselect 顾名思义基于bootstrap,bootstrap基于jquery,所以第一步,引入文件 bootstrap.css/ juery.js /bootst ...
- js动态创建和删除option
1.动态创建select function createSelect(){ var mySelect = document.createElement("select&q ...
- 动态创建selectjs 操作select和option
1.动态创建select function createSelect(){ var mySelect = document.createElement("select"); myS ...
- [SAP ABAP开发技术总结]反射,动态创建内表、结构、变量
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...
- js动态创建style节点(js文件中添加css)
ie6 不能 document.createElement('style') 然后append到head标签里.所以就找到这样个好文章 --------------------- 有很多提供动态创建 ...
- Unity进阶技巧 - 动态创建UGUI
前言 项目中有功能需要在代码中动态创建UGUI对象,但是在网上搜索了很久都没有找到类似的教程,最后终于在官方文档中找到了方法,趁着记忆犹新,写下动态创建UGUI的方法,供需要的朋友参考 你将学到什么? ...
- jQuery 绑定事件到动态创建的元素上
在进入主题之前,我们先来看一个前台页面经常用到的功能:点击页面输入框时自动选择其中文本. 很容易想到利用输入框的focus事件,当输入框获得焦点时,再调用jQuery的select()方法. Okay ...
- javascript学习笔记(四):事件处理函数和动态创建html标记。
1 HTML的事件属性 全局事件属性:HTML 4 增加了使事件在浏览器中触发动作的能力,比如当用户点击元素时启动 JavaScript. a. Window 事件属性,针对 window 对象触发 ...
随机推荐
- streamsets 集成 rabbitmq 以及benthos stream 处理框架
benthos 是一个stream 处理框架,streamsets 也是,但是两者可以通过不同的工具进行集成起来 一般我们可以使用http 服务,消息中间件(kafka.rabbitmq ...) 使 ...
- JUC集合之 ArrayBlockingQueue
ArrayBlockingQueue介绍 ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列. 线程安全是指,ArrayBlockingQueue内部通过"互斥锁&qu ...
- win7 配置微软的深度学习caffe
win7 配置微软的深度学习caffe 官方下载: https://github.com/Microsoft/caffe 然后 直接修改caffe目录下的windows目录下的项目的props文件 ...
- 分析报告:云之家V9 VS 钉钉3.5
http://news.yesky.com/hotnews/1/244252501.shtml 1.市场调研 1.1 企业需求 笔者所在单位是一家中型企业,企业流程和信息化基础较为成熟.随着移动互联网 ...
- ng-model的用法
参考: http://www.cnblogs.com/guanglin/p/5200097.html http://www.runoob.com/angularjs/ng-ng-cloak.html ...
- redis在PHP中的基本使用案例(觉得比较实用)
源地址 http://www.t086.com/article/4901
- 【Spring实战-2】Spring4.0.4整合Hibernate4.3.6
作者:ssslinppp 源程序下载:http://download.csdn.net/detail/ssslinppp/8751185 1. 摘要 本文主要讲解如何在Spring4.0. ...
- JsonCpp使用方法详解
JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读.编写.解析.jsoncpp是c++解析JSON串常用的解析库之一. jsoncpp中主要的类: ...
- 用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
作为主流开发语言, 用python 开发的程序越来越多. 方便的是大多linux系统里面都默认集成了python, 开发可以随时随地开始. 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试 ...
- bzoj2765 铁人双项比赛
Description 铁人双项比赛是吉林教育学院的一项传统体育项目.该项目比赛由长跑和骑自行车组成,参赛选手必须先完成k公里的长跑,然后完成r公里的骑车,才能到达终点.每个参赛选手所擅长的项目不同, ...