T100双档程序开发

  • 单双档程序的 (全新) 开发流程
  • r.t 建表
    • 1. 建立单头表
    • 2. 建立单身表
    • 3. 单身表 中建立主外键关联
    • 4. 建表完成执行操作
  • 双档 (全新) 完整开发
    • r.t 建表
    • 1. azzi900 建立 程序编号
    • 2. azzi910 建立 作业编号
    • 3. 设计器 - 签出规格和程序
    • 【4】 adzp168画面产生器(产生画面)???
    • 6. 设计器 - 规格(下载规格)
    • 7. 设计器 - 档案 - 开启档案(修改规格)
    • 【8】r.q 开窗,r.v 校验带值(根据需求设定)???
      • 表头开窗、校验带值、设置参考字段
      • 表身开窗、校验带值、设置参考字段
    • 9. 设计器 - 程序(下载程序)
    • 【10】 设计器 - 档案 - 开启档案,直接上传程序(修改程序)
      • 单头部分
        • 新增开窗①单号开窗需要传参数(参照表编号、程序编号)+ 开窗测试工具使用
        • 新增开窗①++ 将开窗要传的参数改为全局变量
        • 新增开窗②将单据日期默认为今天
        • 新增开窗③开窗传参(交易条件)
        • 校验带值 - 单据别
        • 根据 [税种] 带出 [含税否]
        • 根据 [币种] 带出 [汇率]
        • 查询开窗
        • 查询开窗 - 单号(自建开窗)
      • 单身部分
        • 项次自增
        • 表身根据[料号]带出[品名]和[规格]
        • 单身根据 [税种] 带出 [税率]
        • [数量]、[单价] 变化时要计算[含税金额]、[未税金额]、[税额]
        • 查询时单身部分[规格]不显示(新增时有的)
    • 12. azzi850 给程序授权
    • 13. r.r 执行程序
    • 14. azzi880 将程序挂到 menu
  • 单据别建立流程 ???
  • 双档程序源码分析
  • 总结

目录:【实习】T100学习笔记

单档程序和双档程序的区别
所谓单档程序相当于只有表头,下面的东西就相当于表头

而双档不仅有表头,还有表身,表身一般就是个表格。

单双档程序的 (全新) 开发流程

首先要通过 r.t (adzi140) 建立表

  1. azzi900 建立 程序代号
    程序代号是唯一的。
  2. azzi910 建立 作业代号
    一个程序代号可以被多个作业使用。
  3. 通过设计器 - 规格(签出规格)
    规格相当于画面。
  4. 通过设计器 - 程序(签出程序)
  5. adzp168 通过画面产生器产生画面
  6. 通过设计器 - 规格(下载规格)
  7. r.q 开窗,r.v 校验带值(根据需求设定)
  8. 通过设计器 - 程序(下载程序)
  9. 通过设计器 - 档案(开启规格档案)- 修改程序 - 上传程序
  10. 通过设计器 - 程序(下载程序)- 上传程序
    (先上传程序,没有报错再来修改对应逻辑)
  11. 通过 azzi850 给程序授权
  12. r.r 执行程序
  13. azzi880 将程序挂到 menu

r.t 建表

单头表 xmzyuc_t,字段为:订单单号、订单日期、业务人员、业务部门、客户编号、收款条件、交易条件、税种、币种、税率、含税否、汇率、发票类型、订单备注、基础资料档。

单身表 xmzzuc_t,字段为:项次、料号 (品名、规格)、单位 (单位名称)、订购数量、预计交货日期、税种、税率、单位、含税金额、未税金额、税额、紧急度、备注


单档程序只需要一张表,双档需要建多张表。

1. 建立单头表

单头一般是主档

企业代码、营运据点基本是必要的,其他按需求设置。

字段设置完毕后,【执行异动】

2. 建立单身表

单身一般是明细档

单身表单头表的主键位置需要一一对应,不然自动生成的SQL语句会关联错误。
单头表的顺序是:企业代码(主)、营运据点、单号(主)、…
单身表的顺序必须是:企业代码(主)、营运据点、单号(主)、…

单身表一定会比单头表多1个主键。

字段设置完毕后,【执行异动】

3. 单身表 中建立主外键关联

单身表中建立与单头表的主外键关联。

同时查出多张表的小技巧xmzyuc | xmzzuc

4. 建表完成执行操作

所有步骤完成后按照如下顺序操作:

  1. 单头【产出数据表纲要】、单身【产出数据表纲要】、
  2. 单头【产出数据表清单】、单身【产出数据表清单】
  3. 单头【产出数据表结构与规格设置】、单身【产出数据表结构与规格设置】

双档 (全新) 完整开发

注:双档和单档在整体流程上差不多,所以这里过程很简略,具体有哪个步骤忘记可以参考单档的文章(图片很全,很细)。

T100 单档程序开发(1)开发流程

r.t 建表

adzi170 可以查询数据表的内容

1. azzi900 建立 程序编号

点击【录入信息】,然后输入 [程序编号] 和 [程序名称],选择 [归属模块]

2. azzi910 建立 作业编号

由于是订单维护作业,还需要建立单据别,具体参考下面的单据别建立流程

3. 设计器 - 签出规格和程序

【4】 adzp168画面产生器(产生画面)???


点击【字段设置】,分别给单头单身以及查询方案设置字段

单头设置字段,注意 Table 必须选中单头表,画面结构要选中 Page:page_1

ps:上图少放了一个字段单据日期。。已补上,截图没有改

单身设置字段,Table 选中单身表,画面结构中选中 Table:s_detail1。单号是单头和单身的主键,单头里放了,单身不需要再放。

查询方案设置字段,查询方案一般放一些重要的单头字段

操作完以后,【保存底稿】、【生成画面】,弹出预览界面后关掉它。

6. 设计器 - 规格(下载规格)

7. 设计器 - 档案 - 开启档案(修改规格)

如果没有数据,【进阶功能】-【更新基础数据】、【重新产生基础数据】

注意,带开窗的组件有的需要自己转:右键,Concert Widget,ButtonEdit 即可。

【8】r.q 开窗,r.v 校验带值(根据需求设定)???

业务人员开窗 可以抄 资料所有者开窗
业务部门开窗 可以抄 资料所有部门开窗
所有的都可以抄 axmt500。。。。

表头开窗、校验带值、设置参考字段

业务人员开窗

业务人员参考语系


交易条件开窗

交易条件参考字段 ******************

太多了。。直接抄 axmt500 。。。。。

表身开窗、校验带值、设置参考字段

开窗抄 axmt500,参考字段需要点击要添加的列,右键 Add Reference Field,然后抄 axmt500

9. 设计器 - 程序(下载程序)

【10】 设计器 - 档案 - 开启档案,直接上传程序(修改程序)

将刚下载的程序直接【上传】一下,确保设计器默认生成的没有问题,再开始修改。

单头部分

新增开窗①单号开窗需要传参数(参照表编号、程序编号)+ 开窗测试工具使用

下图中,在 adzi210开窗设计器中可以看到,单号的开窗识别码要求传2个参数,分别是 参照表编号程序编号 ,需要我们在代码里添加。

  • 参照表编号 在下面的【单据别建立流程】中有讲,aooi100 中可以查看
  • 程序编号在代码里是个全局变量g_prog,本程序中即 cxmt666


如何知道对应的数据表字段?
在 aooi100 中查询过后,可知参照表编号为 S01
并且,我们将鼠标放上去,可以看见它是在哪个数据库中进行维护的。

查看 ooef_t 表,发现 ooef004 的确是参照表编号。


开窗测试工具的使用
在 adzi210开窗设计工具中,查出了对应的开窗识别码后,点击【开窗测试工具】,然后将对应的参数输入,点击右边的开窗,即可查出对应的值。

如果没有查出来,按照【单据别建立流程】检查一遍流程。


ON ACTION controlp INFIELD xmzyucdocno,即点击单号开窗的位置,写代码:

#add by lzy #2021/1/27 根据当前的据点找到对应的单据别参照表号
LET l_ooef004 = ''
SELECT ooef004 INTO l_ooef004 FROM ooef_t
WHERE ooefent = g_enterprise #企业编号=当前企业编号
AND ooef001 = g_site #组织编号=据点 #給予arg
LET g_qryparam.arg1 = l_ooef004
LET g_qryparam.arg2 = g_prog #程序编号:cxmt666

注:l_ooef004 需要在前面定义变量,我们在 cxmt666_input() 开头定义:

DEFINE l_ooef004 LIKE ooef_t.ooef004 #add by lzy#2021/1/27 单据别参照表号

学会这个以后,再有开窗需要传参的,都是以此类推!

新增开窗①++ 将开窗要传的参数改为全局变量

在 ① 里我们是用 l_ 开头的局部变量的方式写的,但是有时候很多开窗要传的参数是一样的,如果每次都要重新写,那将很麻烦,不如直接改成全局变量,后需要用到都可以拿来用。

将变量声明到 MAIN 上面的全局区域:

#add-point:自定義模組變數(Module Variable) (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="global.variable"
DEFINE  g_ooef004 LIKE ooef_t.ooef004 #add by lzy#2021/1/27 单据别参照表号
DEFINE  g_ooef024 LIKE ooef_t.ooef024 #add by lzy#2021/1/27 供应商编号
DEFINE  g_ooef019 LIKE ooef_t.ooef019 #add by lzy#2021/1/27 税区编号
#end add-point

xxxx_init() 的画面资料初始化区域写SQL查询:

#add-point:畫面資料初始化 name="init.init"
LET g_ooef004 = ''
LET g_ooef024 = ''
SELECT ooef004,ooef024,ooef019 INTO g_ooef004,g_ooef024,g_ooef019 FROM ooef_t
WHERE ooefent = g_enterprise #企业编号=当前企业编号
AND ooef001 = g_site #组织编号=据点
#end add-point

最后在 ON ACTION controlp INFIELD xxxxx 处给参数赋值即可。

新增开窗②将单据日期默认为今天

xxx_insert() 中的单头预设值处填写代码:

#add-point:單頭預設值 name="insert.default"
LET g_xmzyuc_m.xmzyucdocdt = g_today #add by lzy#2021/1/27 单据日期默认为今天
#end add-point

新增开窗③开窗传参(交易条件)

交易条件由 apmi012 维护。

直接在代码里给传入参数设为 '238' 即可。

LET g_qryparam.arg1 = '238' #交易条件

校验带值 - 单据别

校验带值都是写在 xxxx_input() 下的 AFTER FIELD xxxxx

比如要写单号 xmzyucdocno 的校验带值,写下面代码:

#add by lzy 单据别校验带值
IF NOT s_aooi200_chk_slip(g_site,'',g_xmzyuc_m.xmzyucdocno,g_prog) THENLET g_xmzyuc_m.xmzyucdocno = g_xmzyucdocno_t  NEXT FIELD CURRENT
END IF

客户编号校验带值,直接抄 axmt500,参数也要一起抄。。

#設定g_chkparam.*的參數
LET g_chkparam.arg1 = g_xmzyuc_m.xmzyuc003
LET g_chkparam.arg2 = g_site
#呼叫檢查存在並帶值的library
IF cl_chk_exist("v_pmaa001_3") THEN#檢查成功時後續處理
ELSE#檢查失敗時後續處理NEXT FIELD CURRENT
END IF

后面有问题的校验带值,都直接抄。。。

根据 [税种] 带出 [含税否]


要达到的效果主要是选择了 [税种] 以后,下面的 [税率] 和 [含税否] 也会自动有值。


现在开始不用记那么多套路了,抄axmt500就完事,上传报错就跟着报错信息改,比如下面的代码直接上传会报错,因为 l_success 和 l_oodb011 都没有定义,去axmt500里搜一下,看看它怎么定义的,直接拿过来来。

顺带一提,视频中老师一开始都是自己写的,讲道理真的看不懂,直到后面她开始抄axtm500。。。我也就学会了抄了。。

AFTER FIELD xmzyuc006#add-point:AFTER FIELD xmzyuc006 name="input.a.xmzyuc006"LET g_xmzyuc_m.xmzyuc006_desc = ''IF NOT cl_null(g_xmzyuc_m.xmzyuc006) THEN IF p_cmd = 'a' OR (p_cmd = 'u' AND (g_xmzyuc_m.xmzyuc006 <> g_xmzyuc_m_o.xmzyuc006 OR g_xmzyuc_m_o.xmzyuc006 IS NULL)) THEN              CALL s_tax_chk(g_site,g_xmzyuc_m.xmzyuc006)RETURNING l_success,g_xmzyuc_m.xmzyuc006_desc,g_xmzyuc_m.xmzyuc009,g_xmzyuc_m.xmzyuc008,l_oodb011                         IF NOT l_success THENLET g_xmzyuc_m.xmzyuc006 = g_xmzyuc_m_o.xmzyuc006LET g_xmzyuc_m.xmzyuc008 =  g_xmzyuc_m_o.xmzyuc008LET g_xmzyuc_m.xmzyuc009 =  g_xmzyuc_m_o.xmzyuc009NEXT FIELD CURRENT                     ELSE                    #passEND IF                       END IFLET g_xmzyuc_m_o.xmzyuc006 = g_xmzyuc_m.xmzyuc006LET g_xmzyuc_m_o.xmzyuc008 = g_xmzyuc_m.xmzyuc008LET g_xmzyuc_m_o.xmzyuc009 = g_xmzyuc_m.xmzyuc009END IF CALL s_desc_get_tax_desc1(g_site,g_xmzyuc_m.xmzyuc006) RETURNING g_xmzyuc_m.xmzyuc006_descDISPLAY BY NAME g_xmzyuc_m.xmzyuc006,g_xmzyuc_m.xmzyuc008,g_xmzyuc_m.xmzyuc009,g_xmzyuc_m.xmzyuc006_desc

根据 [币种] 带出 [汇率]

这个有坑!直接抄 axmt500也可能会跳进坑里。。。主要在于它似乎需要一个 [内外销] 字段来计算出汇率。。。但是这个字段在我的项目中并没有建,我只能在调函数s_axmt540_get_exchange的时候手动给这个参数传值,经过测试,只要传'2'就可以了。

#應用 a02 樣板自動產生(Version:2)
AFTER FIELD xmzyuc007LET g_xmzyuc_m.xmzyuc007_desc = ''IF NOT cl_null(g_xmzyuc_m.xmzyuc007) THEN IF p_cmd = 'a' OR (p_cmd = 'u' AND (g_xmzyuc_m.xmzyuc007 != g_xmzyuc_m_o.xmzyuc007 OR g_xmzyuc_m.xmzyuc010 IS NULL )) THEN   IF cxmt666_xmzyuc007_chk(g_xmzyuc_m.xmzyuc007) THEN#########这里的参数 '2' 是我手动传的,我的项目中没有[内外销]字段CALL s_axmt540_get_exchange('2',g_xmzyuc_m.xmzyuc007,g_xmzyuc_m.xmzyucdocdt) RETURNING g_xmzyuc_m.xmzyuc010   #modify--151118-00012#1 By shiun   新增傳入參數g_xmda_m.xmdadocdtLET g_xmzyuc_m_o.xmzyuc010 = g_xmzyuc_m.xmzyuc010DISPLAY BY NAME g_xmzyuc_m.xmzyuc010ELSE#檢查失敗時後續處理LET g_xmzyuc_m.xmzyuc007 = g_xmzyuc_m_t.xmzyuc007NEXT FIELD CURRENTEND IF #匯率取位IF NOT cl_null(g_xmzyuc_m.xmzyuc010) THENCALL s_curr_round(g_site, g_xmzyuc_m.xmzyuc007,g_xmzyuc_m.xmzyuc010,'3') RETURNING g_xmzyuc_m.xmzyuc010END IF#160711-00010#1-add-(E)                  END IF             END IF#170326-00004#3 by sakura add(S)CALL cxmt666_set_entry(p_cmd)CALL cxmt666_set_no_entry(p_cmd)#170326-00004#3 by sakura add(E)                        CALL s_desc_get_currency_desc(g_xmzyuc_m.xmzyuc007) RETURNING g_xmzyuc_m.xmzyuc007_desc DISPLAY BY NAME g_xmzyuc_m.xmzyuc007_descLET g_xmzyuc_m_o.xmzyuc007 = g_xmzyuc_m.xmzyuc007           #END add-point

查询开窗

单头的查询在 xxxx_constructCONSTRUCT BY NAME g_wc 里的 ON ACTION...

其他操作和【新增开窗】大体一样,T100生成的基本都是要求传参数的没有传或者传的不对,我们将参数写对就可以了。

如果【编辑时开窗】与【查询时开窗】设置的是一样的话,完全可以去把之前写好的编辑时开窗的内容拿过来就可以了。

查询开窗 - 单号(自建开窗)

自建步骤就是,随便复制一笔简单的,输入名字 cq_xxxxx,然后查询这笔再去修改它,修改成如下图,即可在代码里直接呼叫该开窗了。

呼叫开窗的操作如下:

ON ACTION controlp INFIELD xmzyucdocno#add-point:ON ACTION controlp INFIELD xmzyucdocno name="construct.c.xmzyucdocno"#查询时开窗 add by lzyINITIALIZE g_qryparam.* TO NULLLET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSECALL q_ooba002_1()                           #呼叫開窗DISPLAY g_qryparam.return1 TO xmzyucdocno  #顯示到畫面上NEXT FIELD xmzyucdocno                     #返回原欄位#END add-point

单身部分

项次自增

在 axmt500 xxxx_input > DIALOG > BEFORE INSERT 下的 #項次加1 处可以捞到代码;

然后放到自己项目中:

#add-point:modify段before備份 name="input.body.insert.before_bak"
#项次加一 add by lzy 2021/1/28
SELECT MAX(xmzzucseq)+1 INTO g_xmzzuc_d[l_ac].xmzzucseq FROM xmzzuc_tWHERE xmzzucent = g_enterprise AND xmzzucdocno = g_xmzyuc_m.xmzyucdocno
IF cl_null(g_xmzzuc_d[l_ac].xmzzucseq) OR g_xmzzuc_d[l_ac].xmzzucseq = 0 THENLET g_xmzzuc_d[l_ac].xmzzucseq = 1
END IF
#end add-point

表身根据[料号]带出[品名]和[规格]

ON ACTION controlp INFIELD xmzzuc001 处,主要的坑就是把原本的注释取消后要改成自己项目中的名字。。


例如下图是我的[品名]控件名称:

单身根据 [税种] 带出 [税率]

主要就是去 单身中税种字段对应的 AFTER FIELD xxxx,首先将 校验带值的参数写正确;
然后可以在后面直接加上这个:

#带出税率的值 add by lzy
CALL s_tax_chk(g_site,g_xmzzuc_d[l_ac].xmzzuc005)#注意:l_xmzyuc005_desc,l_hanshuifou是自定义的,需要这么多参数来接收函数的返回值RETURNING l_success,l_xmzyuc005_desc,l_hanshuifou,g_xmzzuc_d[l_ac].xmzzuc006,l_oodb011
IF NOT l_success THEN#pass
ELSE                    #pass
END IF

但是要注意,l_xmzyuc005、l_hanshuifou 需要我们自己定义,在input开头定义:

DEFINE  l_xmzyuc005_desc      LIKE type_t.chr100
DEFINE  l_hanshuifou          LIKE type_t.chr1

[数量]、[单价] 变化时要计算[含税金额]、[未税金额]、[税额]

了解一下这个函数 s_axmt500_get_amount_2

在azzq171中可进行查询

注意,当 [数量] 和 [单价] 都不为空的时候,才会去计算,所以要先判断非空。
然后当 [数量] 和 [单价] 改变后都会出发计算,所以要把下面的代码放在 [数量] 和 [单价]的 AFTER FIELD 部分。

#add-point:AFTER FIELD xmzzuc007 name="input.a.page1.xmzzuc007"
#当[数量]和[单价]都不为空的时候,才会去计算 add by lzy
IF NOT cl_null(g_xmzzuc_d[l_ac].xmzzuc007) AND NOT cl_null(g_xmzzuc_d[l_ac].xmzzuc003) THEN# s_axmt500_get_amount_2 是个公共函数,用来计算 未税金额、含税金额、税额CALL s_axmt500_get_amount_2(g_xmzzuc_d[l_ac].xmzzuc003,g_xmzzuc_d[l_ac].xmzzuc007,g_xmzzuc_d[l_ac].xmzzuc005,g_xmzyuc_m.xmzyuc007,g_xmzyuc_m.xmzyuc010)RETURNING g_xmzzuc_d[l_ac].xmzzuc009,g_xmzzuc_d[l_ac].xmzzuc008,g_xmzzuc_d[l_ac].xmzzuc010
END IF
DISPLAY BY NAME g_xmzzuc_d[l_ac].xmzzuc009,g_xmzzuc_d[l_ac].xmzzuc008,g_xmzzuc_d[l_ac].xmzzuc010 #显示到界面上
#END add-point

有的时候单身的数据要和单头数据保持一致,我们在BEFORE INSERT中可设置初始值。

#让单身的[税种]和单头的[税种]保持一致 add by lzy
LET g_xmzzuc_d[l_ac].xmzzuc005 = g_xmzyuc_m.xmzyuc006
#让单身的[税率]和单头的[税率]保持一致 add by lzy
LET g_xmzzuc_d[l_ac].xmzzuc006 = g_xmzyuc_m.xmzyuc008

查询时单身部分[规格]不显示(新增时有的)

单身表格的填充主要是在 xxxx_b_fill 方法中,如果遇到单身显示出问题可以去这里纠错。程序出现这种BUG很难用清晰的语言解释清楚并记录下来。。。记录个大体方向以后又遇到了再研究吧。

#上面的SQL有问题,单身中的[料号]本应该带出[品名]和[规格],
#但是现在查询时没有出现规格,问题应该出现在了填充单身b_fill那一块
#经过检查,上面的sql的确没有写[规格],因此在下面把它重新覆盖


12. azzi850 给程序授权

13. r.r 执行程序

14. azzi880 将程序挂到 menu

单据别建立流程 ???

1、azzi600 查询 24 系统分类码,在里面新增程序

2、azzi910 修改对应作业的默认单据性质

3、aooi199 里新增单据别

4、aooi200 里添加单据别,注意单据别编号跟aooi199新增的单据别编号一样

注意,对应参照表编号的查看,在 aooi100 中查询当前营运据点,即可看到。

在 aooi100 中查询过后,可知参照表编号为 S01
并且,我们将鼠标放上去,可以看见它是在哪个数据库中进行维护的。

查看 ooef_t 表,发现 ooef004 的确是参照表编号。

双档程序源码分析


type_g_xmzyuc_mm 结尾表示单头的数组;

  • DEFINE g_xmzyuc_m type_g_xmzyuc_m
    并且由程序可知它是个静态数组

type_g_xmzyuc_dd 结尾表示单身的数组。

  • DEFINE g_xmzzuc_d DYNAMIC ARRAY OF type_g_xmzzuc_d
    由程序可知它是个动态数组

总结

1、单头部分修改一般在 xxxx_inputDIALOGINPUT BY NAME .......

  • 开窗功能在 ON ACTION xxxx
  • 校验带值功能在 AFTER FIELD xxxx → 这个其实是过栏位

2、单身部分修改一般在 xxxx_inputDIALOGINPUT ARRAY ...

  • 开窗功能在 ON ACTION control INFIELD xxxx

3、adzi170 执行SQL,查看数据库中的数据

【实习之T100开发】T100 双档程序开发流程相关推荐

  1. IOS开发系列--IOS程序开发概览

    IOS开发系列--IOS程序开发概览 2014-08-04 19:42 by KenshinCui, 9983 阅读, 51 评论, 收藏, 编辑 概览 终于到了真正接触IOS应用程序的时刻了,之前我 ...

  2. 软件开发,web开发和应用程序开发的区别?

    软件开发: 软件开发是开发软件产品的过程,涉及分析用户的需求,然后设计.测试和开发软件以满足用户的这些需求或要求.软件是使用特定的编程语言开发的,这反过来又提高了业务质量.  Web开发: Web开发 ...

  3. iOS开发系列--IOS程序开发概览ios基础

    iOS开发系列--IOS程序开发概览 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的I ...

  4. T100开发全新双档程序详细步骤

    T100开发介绍 鼎捷T100 ERP是在tiptop的基础上做了大量的优化更新,最终诞生了一个强大的全新产品T100,如今已经发展到T100 3.0版本,功能也越来越完善,个人感觉,现在的T100E ...

  5. linux独立应用程序开发,Linux应用程序开发(一)

    Linux应用程序开发(一)---移植thttpd+Sqlite3+PHP5到arm linux(4) 移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容) 1,主机环境:VMare下Cen ...

  6. (Spring程序开发)简介程序开发步骤配置文件相关API

    1Spring简介 1.1 Spring是什么 Spring是分层的Java SE/EE应用full-stack 轻量级开源框架, 以IoC(Inverse Of Control:反转控制) 和**A ...

  7. 掌上游戏机开发指南——GBA程序开发入门

    1.GBA简介 Game Boy Advanced(GBA)是日本任天堂公司于2001年推出的一款32位掌上游戏机.它着重于游戏机的便携式,并且以2D游戏为主(3D游戏依然不错).GBA有十分高效硬件 ...

  8. 微信公众号开发和小程序开发

    一.简介 公众号开发,需要的后端技术,是把一个后台服务注册到公众号,这样用户通过微信发给公众号的消息,都经过微信转发到后台服务了,这个后台服务要在5秒内响应,如果没有响应则触发重试机制,重试3次没有响 ...

  9. 房地产小程序开发-地产小程序开发

    房地产小程序开发,地产小程序开发,房地产小程序开发制作,地产小程序定制开发. 地产行业借助改革开放政策腾飞了30年,随着互联网科技的发展,地产行业也由传统化像数字化.科技化发展,为行业赋予了新的定义, ...

最新文章

  1. 计算机word表格居中,word表格居中怎么弄
  2. 网站页面相关性从五个方面进行判断
  3. php this 代表什么,php中$this-是什么意义
  4. 可视化日历(Java实现)
  5. 利用计算机制作多媒体最后一步,福建省高中会考 多媒体技术应用 选择题专项练习十一(201206)(有答案)...
  6. python捕捉线程错误_Pythonrequests多线程抓取出现HTTPConnectionPoolMaxretiresexceeded异常...
  7. (转)The POM for 0.0.1-SNAPSHOT is missing, no dependency informat
  8. Selenium +Java自动化环境安装
  9. 王健林最好的时代过去了
  10. python数组的使用方法_使用Python记录数组的正确方法是什么
  11. 删除MyEclipse 6.5.1自带的Maven4MyEclipse
  12. LNK快捷方式漏洞利用方式 exp制作教程
  13. wangEditor关闭粘贴样式的过滤,解决小程序中xml溢出报错问题
  14. UniDrop:一种简单而有效的Transformer提升技术
  15. 基于SpringBoot的图书管理系统
  16. 一文读懂声纹采集、声纹识别、声纹数据库系统等声纹识别技术在公安业务领域的应用场景
  17. VOT目标跟踪测试中的测试效果展示
  18. 怎么把视频制作成GIF动态图?这几种制作方法很简单
  19. Unity:简单易懂小游戏
  20. 使用Mapper代理开发解决硬编码问题

热门文章

  1. 如何看待小米10的葫芦屏?
  2. 酒店上网用AC+AP模式,300余间房,需要申请多少宽带资源?
  3. 爱奇艺、优酷、腾讯独播内容均超70%,如果只能三选一,哪家会员最值得买?
  4. NFC的实用性有多高,真的是刚需吗?
  5. 里面的自带的字典在哪里_自带话放的声卡“秘密”
  6. Oracle获取一年中的所有日期和一个月中的所有日期
  7. 2019 7.14学习笔记
  8. 2018-2019-2 网络对抗技术 20165314 Exp7 网络欺诈防范
  9. delphi 用户可以点击格式修改进行模板修改
  10. 标准C程序设计七---120