案例需求说明

功能开发描述

将ERP系统已生成行状态为“等待退货”的退货订单(已登记),通过ODI工具生成WMS相应的退货订单。

基本业务需求

ERP系统生成已登记,行状态为“等待退货”退货订单,通过ODI工具同步至WMS系统自动生成对应的退货订单,在WMS系统订单管理系统超级用户下的订单;退货—订单管理器可查询到相应的订单。

功能实现思路

ERP系统生成已登记,已分配组织下行状态为“等待退货”退货订单后,通过ODI工具将订单信息同步至WMS,自动生成WMS对应的退货订单,且订单类型默认为“默认客户退货”,客户为默认为“默认客户”,价目表默认为“GPDC价目表”,销售人员默认为“No
Sales Credit”,具体的信息由ERP直接传至单头弹性域进行维护。在WMS系统订单管理系统超级用户下:订单;退货—订单管理器可查询到相应的订单。

功能设计

ODI首先迁移ERP系统未同步至WMS的满足同步条件的退货订单信息,并更新单据头的弹性域的ATTRIBUTE12为P,通过ODI Interface,进入WMS客制化接口表,更新ERP单据头的弹性域的ATTRIBUTE12为I,随后对WMS客制化接口表进行相应的转换,插入标准接口表,并提交请求,将接口表数据插入标准表,将处理状态回写至WMS和ERP客制化接口表。

ERP标准表同步标识说明

ERP退货订单单头与行弹性域字段ATTRIBUTE12为同步标识符号,其状态有三种。

N:该退货订单未同步
P:该退回订单数据数据已从标准表插入到了接口表中
I:该退回订单数据数据已经同步至WMS

ODI工具开发环境说明

潍柴全球配送WMS项目:潍柴WMS系统大部分数据(如SO\PO\MO等)都是从ERP系统获取的(初始化数据),然后在WMS系统中维护这些数据,并实时同步到ERP系统中。这些初始化数据和同步数据的迁徙媒介都是ODI。

ODI用户

源系统和目标系统中的ODI用户为CUXWMS。

资料库

ODI在ERP系统搭建环境,其TNS信息为:

WC_EBS_UAT =
(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=ebsuat.weichai.com)(PORT=1526))
(CONNECT_DATA=
(SERVICE_NAME=UAT) (INSTANCE_NAME=UAT)
)
)

主资料库(Master Repository) @ERP

Technology:Oracle
DBC:Driver oracle.jdbc.driver.OracleDriver
JDBC:URL jdbc:oracle:thin:@ ebsuat.weichai.com:1526:UAT
用户/密码:cuxwms/cuxwms

工作资料库(Work Repository) @ERP

数据库服务器

ERP系统的数据服务器:Topology Manager\Physical Architecture\Technologies\Oracle\WMS_ORACLE_ERP_R12

WMS系统的数据服务器:Topology Manager\Physical Architecture\Technologies\Oracle\WMS_ORACLE_SAL

物理架构

源系统CUX用户的物理架构


目标系统CUX用户的物理架构

逻辑架构

源系统CUX用户的逻辑架构:Topology Manager\Logical Architecture\Technologies\Oracle\WMS_ORACLE_ERP_CUX

目标系统CUX用户的逻辑架构:Topology Manager\Logical Architecture\Technologies\Oracle\WMS_ORACLE_SAL_CUX

上下文Context

ODI代理

物理代理

Topology Manager\Physical Architecture\Agents\OracleODIAgent

逻辑代理

Topology Manager\Logical Architecture\Agents\WMS_L_ODI_Agent

创建反向数据存储Datastores

反向的数据存储,是ODI接口开发的前提。反向分为两种:标准反向和客户化反向。
这里只涉及标准反向

源系统ERP

Designer\Models\CUX,右键模型CUX_ERP,选择Open,(或双击模型)

选择Reverse Engineer TAB 页,输入如下信息:

注:cux_iwms_rma_lines_iface是ERP中RMA行订单的接口表。

执行该页面Menu中Reverse Enginner按钮(上图的黄色部分)后模型CUX_ERP下就有了CUX_IWMS_RMA_LINES_IFACE。


同理,新建RMA头订单的接口表相应的DataStores:CUX_IWMS_RMA_HEADERS_IFACE。

目标系统WMS

与源系统ERP新建DataStores的方法一样,在Designer\Models\CUX\CUX_WMS下新建CUX_DWMS_RMA_HEADERS_IFACE 和CUX_DWMS_RMA_LINES_IFACE这两个Datastores。

Datastores反向失败原因分析

  1. 确保待反向的表/视图是属于当前Schema(数据源)。
  2. 确保ODI的Work Schema(CUXWMS)用户能访问到反向数据存储的数据源

创建Projects

创建floder

右键Projects WMS Distributed Deployment ,选择New Folder。

输入如下信息后保存。

创建Variables

新建组织代码变量

Designer\Projects\WMS
Distributed Deployment \Variables 右键NewVariable
输入如下信息,

Definition TAB页
Name: WMS_V_STANDALONE_ORG_CODE

其他信息默认即可。保存,创建组织代码Variable完成。

新建两个时间变量

与组织代码Variable的方法一样,输入如下信息,

Definition TAB页

Name: WMS_V_FROM_CREATION_DATE
Datatype: Alphanumeric
Keep History: No History
Default Value: null

其他信息默认即可。保存,创建起止时间Variable完成。

Definition TAB页

Name: WMS_V_TO_CREATION_DATE
Datatype: Alphanumeric
Keep History: No History
Default Value: null

其他信息默认即可。保存,创建终止时间Variable完成。

订单类型变量

与组织代码Variable的方法一样,输入如下信息,

Definition TAB页

Name: WMS_V_SO_ORDER_TYPE
Datatype: Alphanumeric
Keep History: No History
Default Value: null

其他信息默认即可。保存,创建订单类型Variable完成。

新建订单编号变量

与组织代码Variable的方法一样,输入如下信息,

Definition TAB页

Name: WMS_V_SO_ORDER_NUMBER
Datatype: Numeric
Keep History: No History

其他信息默认即可。保存,创建订单编号Variable完成。

新建ODISession个数变量

首先查看Designer\Projects\WMS Distributed Deployment \Variables下是否有ODISession个数变量,若无,新建。

Definition TAB页

Name: WMS_N_ODI_SESSION_COUNT
Datatype: Numeric
Keep History: No History
Default Value: 0

Refreshing TAB 页

Schema: WMS_ORACLE_WR_APPS
Select Query:

SELECT COUNT(*)FROM odim.snp_sessionWHERE sess_status = 'R'AND sess_name = '<%=odiRef.getSession("SESS_NAME")%>'AND context_code = '<%=odiRef.getSession("CONTEXT_NAME")%>'AND sess_no < '<%=odiRef.getSession("SESS_NO")%>'


其他信息默认即可。保存,创建ODISession个数Variable完成。

创建Interfaces

ODI接口开发是ODI开发的核心。基础接口一般用于ODI数据初期导入,运行一次。

创建ERP到WMS的Interface

Designer\Projects\ WMS Distributed Deployment \CUXWMS Import RMA\Interfaces 右键New Interface。

输入如下信息后保存。

Overview TAB页中的Definition TAB页
Name: CUX_DWMS_RMA_HEADERS_INTERFACE

Quick-Edit TAB页
Sources 添加源系统ERP RMA头订单接口表。
Filters 中过滤掉源系统ERP RMA头订单接口表的Process_status字段的值。
Mappings 中 Target Datastore 选择(下图中黄色部分是入口)目标系统WMS RMA头订单接口表。


完成后可在Mapping TAB页中看到如下源系统ERP RMA头订单接口表与目标系统WMS
RMA头订单接口表的相关逻辑信息。
Flow TAB页
源系统Datastore选择WMS LKM
Oracle to Oracle

目标系统Datastore选择WMS IKM Oracle Incremental Update,
Optons: UPDATE false

Controls TAB页
CKM
Selector: WMS CKM SQL

其他默认即可。保存,创建源系统到目标系统的RMA头订单接口表的接口完成。
同理,新建RMA行订单接口表相应的Interface。

创建WMS到ERP的Interface

与创建ERP到WMS的Interface的方法一样。在Designer\Projects\ WMS Distributed Deployment \CUXWMS Import RMA\Interfaces下新建CUX_IWMS_RMA_HEADERS_INTERFACE 和CUX_IWMS_RMA_LINES_INTERFACE。

需要注意,做WMS到ERP的接口目的是将WMS的RMA订单接口表的处理状态(PROCESS_STATUS)回写至ERP的RMA订单接口表的处理状态。

CUX_IWMS_RMA_HEADERS_INTERFACE接口的信息截图如下。

Overview TAB 页

Quick_Edit TAB 页

Mapping TAB 页

Flow TAB 页


Controls TAB 页

其他信息默认即可。保存。

等完成所有接口后,Designer\Projects
WMS Distributed Deployment \CUXWMS Import RMA\Interfaces下有四个接口

创建Procedures

创建ERP数据迁移Proceduce

Designer\Projects\WMS Distributed Deployment \CUXWMS Import RMA\Procedures 右键New Procedure

输入如下信息,
Definition TAB页
Name:populate_rma

Details TAB页
点击添加图标(绿色+图标),弹出窗口,输入如下信息
Name: Command 0
Schema: WMS_ORACLE_ERP_APPS

Command:

DECLAREl_organization_code VARCHAR2(40) := '#WMS_V_STANDALONE_ORG_CODE'; l_order_type    VARCHAR2(40) := '#WMS_V_SO_ORDER_TYPE';l_order_number NUMBER := '#WMS_V_SO_ORDER_NUMBER'; l_from_creation_date  VARCHAR2(40) := '#WMS_V_FROM_CREATION_DATE';l_to_creation_date   VARCHAR2(40) := '#WMS_V_TO_CREATION_DATE';x_return_status  VARCHAR2(1); x_return_message VARCHAR2(2000);done_exp EXCEPTION;BEGIN apps.cux_iwms_integration_processor.init_context('<%=odiRef.getSession("CONTEXT_NAME")%>');apps.cux_iwms_integration_processor.rma_syn_populate(x_return_status      => x_return_status,x_return_message     => x_return_message, p_organization_code  => l_organization_code,p_order_type         => l_order_type,p_order_number       => l_order_number,p_from_creation_date => l_from_creation_date,p_to_creation_date   => l_to_creation_date);IF x_return_status<>'S' THENRAISE done_exp;END IF;
END;



其他值默认即可。保存,Procedure创建完成了。

创建WMS提交标准表Procedure

与创建ERP数据迁移Procedure的方法一样。

Definition TAB页

Name: process_rma_syn
Target Technology: Oracle

Details TAB页

点击添加图标(绿色+图标),弹出窗口,输入如下信息

Name: Command 0
Schema: WMS_ORACLE_SAL_APPS
Transaction: Transaction 1
Commit: Commit
Command:

DECLAREx_return_status  VARCHAR2(1);x_return_message VARCHAR2(2000);done_exp EXCEPTION;
BEGIN  apps.cux_dwms_integration_processor.init_context('<%=odiRef.getSession("CONTEXT_NAME")%>');
apps.cux_dwms_integration_processor.rma_syn_done(
x_return_status   => x_return_status,
x_return_message  => x_return_message);IF x_return_status <> 'S' THENRAISE done_exp;END IF;END;

其他值默认即可。保存,Procedure创建完成了。

创建回写ERP标准表同步标识的Procedure

与创建ERP数据迁移Procedure的方法一样。

Definition TAB页
Name: complete_rma_syn
Target Technology: Oracle

Details TAB页
点击添加图标(绿色+图标),弹出窗口,输入如下信息
Name: Command 0
Schema: WMS_ORACLE_ERP_APPS
Transaction: Autocommit
Command:

DECLAREx_return_status  VARCHAR2(1); x_return_message VARCHAR2(2000);done_exp EXCEPTION;
BEGINapps.cux_iwms_integration_processor.complete_rma_syn(x_return_status      => x_return_status,x_return_message     => x_return_message);IF x_return_status<>'S' THENRAISE done_exp;END IF;
END;

其他值默认即可。保存,Procedure创建完成了。

创建提交Procedure

与创建ERP数据迁移Procedure的方法一样。

Definition TAB页

Name: commit_transaction
Target Technology: Oracle

Details TAB页

点击添加图标(绿色+图标),弹出窗口,输入如下信息
Name : Command 0
Schema: WMS_ORACLE_SAL_APPS
Transaction: Transaction 1
Commit: Commit
Command: Commit

其他值默认即可。保存,Procedure创建完成了。

创建回滚Procedure

与创建ERP数据迁移Procedure的方法一样。

Definition TAB页

Name: rollback _transaction
Target Technology: Oracle

Details TAB页

点击添加图标(绿色+图标),弹出窗口,输入如下信息
Name: Command 0
Schema: WMS_ORACLE_SAL_APPS
Transaction: Transaction 1
Commit: Commit
Command: rollback

其他值默认即可。保存,Procedure创建完成了。

等完成所有Procedures后,Designer\Projects\ WMS Distributed
Deployment \CUXWMS Import RMA\Procedures下有四个过程

创建和执行Packages

新建Packages

Designer\Projects\WMS Distributed Deployment \CUXWMS Import RMA\Packages 右键New Package

输入如下信息,

Definition TAB页

Name: CUXWMS Import RMA

Diagrams TAB页

将所有相关的Variables、Interfaces、Procedures、OdiSleep拖曳到Diagram TAB 页区域中。然后选择这两个箭头,对包中的接口和视图进行先后顺序的连接。注意,连接的顺序是包执行的顺序。


图中在变量WMS_V_STANDALONE_ORG_CODE图标的右下角有个绿色的三角符号,这个是必须设置的,意思就是流程的起始。

需要注意,图中的变量有三种状态(Type):
1、 问号+箭头的变量Type是Delcare Variable;
2、 问号+彩环的变量Type是Refresh Variable;
3、 判断+问号的变量Type是Evaluate Variable(如图);

ODI会默认第一个拖到包中的接口或是程序设为包执行的第一步。如果你想设置另外的为第一步执行,可以选中你需设置的接口或过程或变量,右键 选择First Step。

其他信息默认即可。保存,包创建完成了

执行

(Designer\Projects\WMS Distributed Deployment \CUXWMS Import RMA\Packages\CUXWMS Import RMA) 下选择Excute。弹出代理窗口。输入如下信息,

Context: GLOBAL
Agent: WMS_L_ODI_Agent
Log Level: 5

执行完,去Operator查看执行结果

创建和执行Scenarios

创建方案

创建方案一般用于接口或过程或包按设定的计划进行执行。

这里对包:CUXWMS Import RMA创建和执行方案。过程和接口创建和执行方案方式相同。

(Designer\Projects\WMS Distributed Deployment\CUXWMS Import RMA\Packages\CUXWMS Import RMA)
右键选择Generate Scenario


如没特殊需求,Name和Version的值默认即可。
点击OK,弹出场景参数窗口,启动参数。

点击OK,ODI生成了Scenarios文件,展开有刚新建的的Scenario。

执行方案

(Designer\Projects\WMS Distributed Deployment \CUXWMS Import RMA\Packages\CUXWMS Import RMA\Scenarios) 下选择创建好的方案选择Excute。

代理窗口

点击OK,弹出参数窗口。
当不勾选Latest Value列时,其Value可输入,否则取变量默认值。

点击OK。执行完,去Operator查看执行结果。

验证

同时检测目标系统数据库数据是否导入成功,源系统数据库数据是否更新成功。

目标系统

SELECT h.header_id,h. order_number,h.process_status,h.process_messageFROM cux_dwms_rma_headers_iface h  SELECT l.line_id,l.header_id, l.process_status,l.process_messageFROM cux_dwms_rma_lines_iface lSELECT h.header_id,h.order_numberFROM oe_order_headers_all hWHERE h.creation_date BETWEEN SYSDATE - 1 AND SYSDATE + 1



源系统

SELECT h.header_id, h.order_number, h.process_status
FROM cux_iwms_rma_headers_iface hselect h.order_number
from oe_order_headers_all h
where h.attribute12=‘I' --已同步标识


ODI请求

除了上述使用ODI工具外,还可建立手动提交请求,CUX:ERP系统RMA同步WMS。

main过程

参数主要包括:库存组织(必填),ERP环境版本(必填),订单类型(不必填),起始时间(必填项)、截止时间(必填项);订单编号(不必填)。

PROCEDURE main(errbuf       OUT NOCOPY VARCHAR2,retcode             OUT NOCOPY NUMBER,p_env_code          IN VARCHAR2,p_organization_code IN VARCHAR2,p_order_type        IN VARCHAR2 DEFAULT NULL,p_order_number      IN NUMBER DEFAULT NULL,p_date_from         IN VARCHAR2,p_date_to           IN VARCHAR2,p_scen_name         IN VARCHAR2,p_scen_number       IN VARCHAR2);

需要注意的是,时间的类型转换,参考方式如下。

l_date_from := fnd_conc_date.string_to_date(p_date_from);
l_date_to   := fnd_conc_date.string_to_date(p_date_to);

main过程内主要调用如下方法。

-- parameters
l_cmd_code := '-WMS_DISTRIBUTED_DEPLOYMENT.WMS_V_STANDALONE_ORG_CODE=' ||                 p_organization_code;
l_cmd_code := l_cmd_code || '-WMS_DISTRIBUTED_DEPLOYMENT.WMS_V_SO_ORDER_TYPE=' ||                  p_order_type;
l_cmd_code := l_cmd_code || '-WMS_DISTRIBUTED_DEPLOYMENT.WMS_V_SO_ORDER_NUMBER=' ||                  p_order_number;
l_cmd_code := l_cmd_code || '-WMS_DISTRIBUTED_DEPLOYMENT.WMS_V_FROM_UPDATE_DATE=' ||                  to_char(p_date_from, 'MM/DD/YYYYHH24:MI:SS');
l_cmd_code := l_cmd_code || '-WMS_DISTRIBUTED_DEPLOYMENT.WMS_V_TO_UPDATE_DATE='||                  to_char(p_date_to, 'MM/DD/YYYYHH24:MI:SS'); cux_wms_odi_pub.execute_odi_cmd(x_return_status     => x_return_status,x_msg_count         => x_msg_count,         x_msg_data          => x_msg_data,p_env_code          => p_env_code,p_organization_code => p_organization_code,p_scen_name         => p_scen_name,p_scen_version      => p_scen_number,p_extra_parameters  => l_cmd_code);

关于 cux_wms_odi_pub 公共包及如何在EBS环境配置ODI信息后续再补充。

发布至WMS

应用开发员(Application Development)\并发\可执行,新建可执行并发程序。

应用开发员(Application Development)\并发\程序,新建并发程序。

其参数如下。

提交ODI请求

数据仓库管理员职责下,Tool菜单上点击查看(V),选择请求。

RMA同步涉及的相关接口表及过程中相应Sql

接口表注意事项

RMA涉及头行订单两个标准表,所以相应源系统的接口表也应创建头行结构。

在创建接口表时需注意,除去需求所需要的标准表中的ID字段和弹性域字段外,统一存储标准表的NUMBER字段/DATE字段/FLAG字段和ID字段相关连表的Code字段。

目标系统接口表的相关字段类型要和源系统保持一致。

相应的Sql

通过上下文获取已分配的组织

相关SQL语句:

SELECT 'X'FROM fnd_lookup_values_vl flvWHERE 1 = 1AND flv.lookup_type = 'CUX_IWMS_SYNINV_MAPPING'AND flv.enabled_flag = 'Y'AND SYSDATE BETWEEN nvl(flv.start_date_active, SYSDATE - 1) AND nvl(flv.end_date_active, SYSDATE + 1)AND flv.tag = cux_dwms_integration_processor.g_ebs_envAND mp.organization_code = flv.lookup_code;

源系统中迁移数据Procedure

此过程中,当完成标准表到接口表的数据迁移后,要回写标准表的同步标识。

相关SQL语句:

UPDATE oe_order_headers_all hSET h.attribute12 = 'P'WHERE h.header_id IN(SELECT i.so_header_idFROM cux_iwms_rma_headers_iface i);UPDATE oe_order_lines_all lSET l.attribute12 = 'P'WHERE 1 = 1AND l.line_id IN(SELECT i.so_line_idFROM cux_iwms_rma_lines_iface i);

回写源系统标准表的同步标识Procedure

当源系统接口表数据同步至目标系统接口表后,应回写源系统标准表的同步标识,表明该数据已同步至源系统中。

相关SQL语句:

UPDATE oe_order_headers_all hSET h.attribute12 = 'I'WHERE h.header_id IN(SELECT i.so_header_idFROM cux_iwms_rma_headers_iface iWHERE i.process_status = 'PENDING');UPDATE oe_order_lines_all lSET l.attribute12 = 'I'WHERE l.line_id IN(SELECT i.so_line_idFROM cux_iwms_rma_lines_iface iWHERE i.process_status = 'PENDING');

WMS系统中提交标准表Procedure

验证接口表的数据,获取相应的ID。头行表验证成功后,提交接口表中该订单插入标准表的请求,并回写处理状态至接口表;否则不提交改订单请求。

ODI接口开发案例:RMA(客户退货订单)同步相关推荐

  1. CTP接口开发案例(内附源码)

    CTP接口开发(内附源码) 提示:在看本博客之前建议先阅读上期所官方的开发文档(SimNow官网中去下载CTP接口文件),然后在SimNow官网注册模拟账号. 提示:股票CTP接口和期货CTP接口类似 ...

  2. linux运行国信股票,国信期货CTP交易API接口开发服务

    国信期货CTP交易API接口开发服务是一款国信期货CTP_API接口开发,适用于客户自行开发交易软件接入CTP呕吐,支持windows.Linux.IOS,对于未及时登录及断线造成的行情数据丢失,CT ...

  3. 视频教程-Web前端开发仿美团/饿了吗移动App之高德地图接口对接案例-JavaScript

    Web前端开发仿美团/饿了吗移动App之高德地图接口对接案例 互联网编程行业10年开发和授课经验 曾任太极集团,外资企业等一线互联网python高级开发工程师 现任聚焦计算机技术有限公司项目组担任架构 ...

  4. Zebra 打印机 Android 端驱动接口开发及调用案例

    文章目录 Zebra 打印机 Android 端驱动接口开发及调用 GitHub 源码 开发步骤 环境配置 Zebra SDK 资源下载 Android 开发环境搭建 新建Android项目 新建 A ...

  5. 淘宝开放平台店铺订单管理oAuth2.0订单同步获取接口解决方案

    正常为了进行淘宝/天猫平台卖家订单商品oAuth2.0开发,首先我们需要做下面几件事情. 1.注册一个开发者账号,拥有订单管理相关应用标签:需要部署聚石塔. 2.然后为每个淘宝应用注册一个应用程序键( ...

  6. 客户退货服务新方案之技术对接教程

    文章目录 前言 1. 服务介绍 2. 服务优势 3.服务接口 4.总结 5.附言 前言 近几年来,我国电子商务交易规模越来越大,线上订单越来越多,退换货的情况也越来越常见.退换货环节是线上购物过程中的 ...

  7. 《实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)》

    <实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)> 基本信息 作者: 徐康明    辛洪郁 出版社:电子工业出版社 ISBN:9787121221378 上架时间:2014 ...

  8. 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

    使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...

  9. 《实战突击.php项目开发案例整合》.(明日科技).[PDF]ckook

    图书作者: 明日科技 图书编号: 9787121141140 图书格式: PDF 出 版 社: 电子工业出版社 出版年份: 2011 图书页数: 800-900 [内容简介] <实战突击:php ...

  10. 支付宝即时到账接口开发 - DEMO讲解

    支付宝即时到账接口开发 - DEMO讲解 环境要求 PHP5.0以上,且需要开启curl.openssl. 文档地址: https://doc.open.alipay.com/doc2/detail? ...

最新文章

  1. MYSQL水平拆分与垂直拆分
  2. mysql启动warning: World-writable config file
  3. 【caffe解读】 caffe从数学公式到代码实现2-基础函数类
  4. Python mat与array的区别
  5. lisp文字上标源码_创建文本/标注样式源码 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
  6. maven错误解决:编码GBK的不可映射字符
  7. 刚刚,贝佐斯宣布将辞任亚马逊 CEO 一职!
  8. 【汇编语言】【ARM扩展资料】汇编语言开发
  9. blackfriday markdown的自动换行 go lang 正则替换字符串时遇到的坑,转义解析其中的 $1 $name 等
  10. Linux 下构建域名服务器
  11. Java知多少(51)finally
  12. 怎样裁剪证件照片尺寸?怎么将电子证件照裁剪成一寸?
  13. iozone使用简介
  14. mysql deadlock found_MySQL遇到Deadlock found when trying to get lock,解决方案
  15. log file switch (archiving needed) 等待事件一例
  16. 印度要被宰 俄售印的航母和苏-30战斗机涨价!zt
  17. lab值意义_lab是什么意思?
  18. 高数 | 旋转体体积的一般公式
  19. 简洁大气用户登录页面手机端模板
  20. pasa查看mysql_某AutoEq数据库的解读及其使用

热门文章

  1. 安卓神器-kiwi browser
  2. ros::Rate loop_rate(10); loop_rate.sleep(); 在程序中是休眠到一定时间,并不占用CPU时间
  3. 回首2017,展望2018
  4. Mybatis学习笔记(二)
  5. linux删除arp绑定失败,我用这个命令后总是说“ARP项目删除失败:请求的操作需要提升...
  6. HTTP协议网络请求状态码
  7. Axure知识点:如何制作输入关键词模糊搜索功能?
  8. 青春期的我们……妥协…挣扎…惊醒
  9. 网络地址转换--PAT配置
  10. 蓝桥杯 扶老奶奶过街 (逻辑推理)