总结
大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。
麻烦帮忙转发一下这篇文章+关注我
…
========================================================================
分析一个查看函数的技巧,有两种方法:
r.r adzp280 函数名
- 设计器中,选中函数,鼠标右键【查看函式】或 快捷键 Ctrl + i
即可查看到该函数的最初定义:
===========================================================================
| 键符 | 意义说明 | 备注 |
| — | — | — |
| Ctrl + g | 执行作业 | |
| ESC | 结束功能、离开程序 | |
| alt + n / p /f / l | 下一笔/上一笔/第一笔/最后一笔 | n / p / l / f 也可以 |
| Ctrl + q | 查询数据 | 使用QBE |
| Ctrl + i | 新增数据 | |
| Ctrl + d | 删除数据 | |
| Ctrl + m | 更改数据 | |
| Ctrl + r | 复制数据 | |
| Alt + m | 切换查询方案与主窗体。 | 多用于单据作业 |
| Alt + s | 隐藏单头 | |
============================================================================================
一些常见的全局变量
g_enterprise
:企业编号
g_site
:营运据点
g_prog
:程序编号
g_today
:今天的日期,一般用来赋初值
我把 top_global.inc文件导出了…顺便转成了简体,放在这里有需要时查询:
SCHEMA ds
GLOBALS
#执行作业
DEFINE g_clienttype LIKE type_t.chr1 #A:GMA/W:GWC/D:GDC
DEFINE g_sessionkey LIKE type_t.chr20 #TT Session Key=TIME+PID
DEFINE g_parentsession LIKE type_t.chr20 #父层Session Key
DEFINE g_ancestsession LIKE type_t.chr20 #祖层Session Key
DEFINE g_parentprog LIKE type_t.chr20 #父层作业编号
DEFINE g_prog LIKE type_t.chr20 #作业编号 (gzzz001)
DEFINE g_prog_industry LIKE type_t.chr10 #作业归属行业包
DEFINE g_actdefault LIKE type_t.chr20 #预设开启动作
DEFINE g_code LIKE type_t.chr20 #程式编号 (gzza001)
DEFINE g_template_type LIKE type_t.chr10 #程式类别 (gzza002)
DEFINE g_sys LIKE type_t.chr5 #模组别 (gzza003)
DEFINE g_chkey LIKE type_t.chr1 #是否允许更改KEY (gzza006)
DEFINE g_need_err_log LIKE type_t.chr1 #是否需要将错误讯息写入log档 (gzza010)
DEFINE g_idle_seconds LIKE type_t.num5 #INPUT(ARRAY)时允许Idle的秒数 (gzza012)
DEFINE g_gui_type LIKE type_t.num5 #GUI Type
DEFINE g_errno LIKE type_t.chr10 #错误讯息代码
DEFINE g_success LIKE type_t.chr1 #sub判断是否执行成功
DEFINE g_sub_success LIKE type_t.num5 #跨元件判断是否执行成功 (不透过return回传时使用)
DEFINE g_errshow LIKE type_t.num5 #错误讯息显示 TRUE显示/FALSE不显示
DEFINE g_t100debug LIKE type_t.chr1 #如果=9,显示DEBUG讯息
DEFINE g_t100azg0d LIKE type_t.chr1 #如果=9,显示DEBUG讯息
DEFINE g_bgjob LIKE type_t.chr1 #Background job
DEFINE g_lang LIKE type_t.chr6 #介面语言别 (gzzy001)
DEFINE g_dlang LIKE type_t.chr6 #资料语言别 (gzzy003)
DEFINE g_argv DYNAMIC ARRAY OF STRING #所有外部参数
DEFINE g_company VARCHAR(72) #公司名称
DEFINE g_enterprise LIKE type_t.num5 #体系 Enterprise 代码
DEFINE g_dbs LIKE type_t.chr21 #实体资料库名称
DEFINE g_site LIKE type_t.chr10 #营运据点名称
DEFINE g_plant LIKE type_t.chr10 #实体营运中心名称
DEFINE g_legal LIKE type_t.chr10 #法人代码
DEFINE g_version LIKE type_t.chr20 #版本
DEFINE g_max_rec LIKE type_t.num10 #5 #Table最大显示/输入笔数
DEFINE g_max_browse LIKE type_t.num10 #5 #浏览器最大显示笔数
#作业时间
DEFINE g_today LIKE type_t.dat #系统日期
DEFINE g_time LIKE type_t.chr8 #Execution time
DEFINE g_timezone LIKE type_t.chr80 #时区
DEFINE g_lastdat LIKE type_t.dat #世界末日
#执行人员
DEFINE g_user LIKE type_t.chr20 #使用者工号
DEFINE g_account LIKE type_t.chr20 #使用者编号/帐号
DEFINE g_roles STRING #使用者角色清单 (串接报表需求)
DEFINE g_dept LIKE type_t.chr10 #使用者部门代号
DEFINE g_grup LIKE type_t.chr10 #禁止使用,请改使用 g_dept 这个变数 #170928-00025#1
#执行权限
DEFINE g_data_owner LIKE type_t.chr20 #使用者资料权限
DEFINE g_data_dept LIKE type_t.chr10 #部门资料权限
DEFINE g_data_site LIKE type_t.chr10 #营运中心资料权限
DEFINE g_data_group LIKE type_t.chr10 #(to delete)
DEFINE g_priv_col DYNAMIC ARRAY OF RECORD #画面栏位授权资料
colid LIKE type_t.chr80, # 栏位编号
auth LIKE type_t.chr1, # 授权动作 1/不可见 2/加密 3/不可修改
crypt LIKE type_t.chr10, # 加密方法
type LIKE type_t.chr10, # 遮罩取用类型
idx LIKE type_t.chr10 # 遮罩启用指标位置
END RECORD
DEFINE g_progmasked BOOLEAN #作业是否已加上栏位遮罩 TRUE/FALSE
DEFINE g_data_crtid LIKE type_t.chr20 #建立者资料权限 #180201-00054
DEFINE g_data_crtdp LIKE type_t.chr10 #建立者部门权限 #180201-00054
#UI画面设定
DEFINE gs_config_path STRING #config资料夹的路径.
DEFINE gs_4st_path STRING #4st档案预设路径
DEFINE gs_4ad_path STRING #4ad档案预设路径
DEFINE gs_4sm_path STRING #4sm档案预设路径
DEFINE gs_4tb_path STRING #4tb档案预设路径
DEFINE gs_4tm_path STRING #4tm档案预设路径
DEFINE g_action_choice STRING #ON ACTION的名称
DEFINE g_show_item_value LIKE type_t.num5 #是否显现COMBOBOX,RADIOGROUP的项目储
DEFINE g_head_disable LIKE type_t.num5 #单头目前是否隐藏
DEFINE g_hidden_4tm BOOLEAN #是否不载入TopMenu TRUE:不载入, FALSE:载入
DEFINE g_hidden_4tb BOOLEAN #是否不载入ToolBar TRUE:不载入, FALSE:载入
DEFINE g_pos LIKE type_t.chr21
DEFINE g_mind LIKE type_t.dat
DEFINE g_maxd LIKE type_t.dat
#显示错误讯息
DEFINE g_errparam RECORD
code LIKE gzze_t.gzze001, #错误讯息编码
extend STRING, #出现在开头的延伸讯息字串 (有需要再设定)
popup BOOLEAN, #开窗否(azzi920强制开窗时无作用)
type LIKE gzze_t.gzze007, #讯息类型0:警告, 1:错误, 2:资讯(可不设, 依照azzi920预设值)
replace DYNAMIC ARRAY OF STRING, #替换错误讯息及建议处理方式中的%变数 (有需要再设定)
columns DYNAMIC ARRAY OF STRING, #栏位清单(对照栏位值清单) (有需要再设定)
#columns DYNAMIC ARRAY OF LIKE dzeb_t.dzeb001, #栏位清单(对照栏位值清单) (有需要再设定)
#columns DYNAMIC ARRAY OF LIKE gzzd_t.gzzd003, #栏位清单(对照栏位值清单) (有需要再设定)
values DYNAMIC ARRAY OF STRING, #栏位值清单(对照栏位清单) (有需要再设定)
coll_vals DYNAMIC ARRAY OF STRING, #汇总讯息额外栏位 - 值 (有需要再设定)
sqlerr LIKE type_t.num5, #SQLCA.SQLERRD[2] 或 SQLCA.SQLCODE (有需要再设定,0则不显示)
exeprog LIKE type_t.chr20, #建议执行作业编号 (有需要再设定)
param STRING #JSON格式的参数 (有需要再设定)
END RECORD
#讯息中心
DEFINE g_msgparam RECORD
state STRING, #执行模式
data DYNAMIC ARRAY OF STRING, #表单资料
rpt_code STRING, #报表验证码
rpt_url STRING, #报表 url
rpt_file STRING #报表 file
END RECORD
DEFINE g_coll_title DYNAMIC ARRAY OF STRING #汇总讯息额外栏位 - 标题(限定最多20个栏位) (有需要再设定)
DEFINE g_errcollect DYNAMIC ARRAY OF RECORD
code STRING, #讯息代码
message STRING, #讯息内容
adv_msg STRING, #进阶讯息
extra DYNAMIC ARRAY OF STRING, #额外栏位资讯
gzze006 STRING, #程式人员详细讯息
sqlerrd2 LIKE type_t.num5, #SQLCA.SQLERRD[2] contains the last SERIAL or the native SQL error code.
exeprog LIKE type_t.chr20, #建议执行作业编号
param STRING #JSON格式的参数 (有需要再设定)
END RECORD
#开窗查询专用变数
DEFINE g_qryparam RECORD
state LIKE type_t.chr1, #程式的状态(i→INPUT,c→CONSTRUCT,预设为i)
construct LIKE type_t.chr1, #No Use
reqry LIKE type_t.num5, #是否需要先qry再显示资料(TRUE:需要,FALSE:不需要,预设为FALSE)
where STRING, #查询资料的条件(一@般是从gab_file.gab02来设定)
pagecount STRING, #每页最大浏览笔数
default1 STRING, #开窗之相关栏位一的预设值
default2 STRING, #开窗之相关栏位二的预设值
default3 STRING, #开窗之相关栏位三的预设值
default4 STRING, #开窗之相关栏位四的预设值
default5 STRING, #开窗之相关栏位五的预设值
default6 STRING, #开窗之相关栏位六的预设值
default7 STRING, #开窗之相关栏位七的预设值
default8 STRING, #开窗之相关栏位八的预设值
default9 STRING, #开窗之相关栏位九的预设值
default10 STRING, #开窗之相关栏位十的预设值
arg1 STRING, #查询资料的条件替换值一@
arg2 STRING, #查询资料的条件替换值二
arg3 STRING, #查询资料的条件替换值三
arg4 STRING, #查询资料的条件替换值四
arg5 STRING, #查询资料的条件替换值五
arg6 STRING, #查询资料的条件替换值六
arg7 STRING, #查询资料的条件替换值七
arg8 STRING, #查询资料的条件替换值八
arg9 STRING, #查询资料的条件替换值九
return1 STRING, #回传资料一
return2 STRING, #回传资料二
return3 STRING, #回传资料三
return4 STRING, #回传资料四
return5 STRING, #回传资料五
return6 STRING, #回传资料六
return7 STRING, #回传资料七
return8 STRING, #回传资料八
return9 STRING, #回传资料九
return10 STRING, #回传资料十
multiret_index LIKE type_t.num5, #No Use
multiret STRING, #No Use
ordercons STRING, #No Use
str_array DYNAMIC ARRAY OF STRING #因应开窗状态m,接收多组字串资料的多个栏位
END RECORD
#cl_chk_validate.4gl专用变数
DEFINE g_chkparam RECORD
where STRING, #外部额外设定的WHERE条件
default1 STRING, #相关栏位一的预设值
default2 STRING, #相关栏位二的预设值
default3 STRING, #相关栏位三的预设值
default4 STRING, #相关栏位四的预设值
default5 STRING, #相关栏位五的预设值
default6 STRING, #相关栏位六的预设值
default7 STRING, #相关栏位七的预设值
default8 STRING, #相关栏位八的预设值
default9 STRING, #相关栏位九的预设值
arg1 STRING, #外部参数一
arg2 STRING, #外部参数二
arg3 STRING, #外部参数三
arg4 STRING, #外部参数四
arg5 STRING, #外部参数五
arg6 STRING, #外部参数六
arg7 STRING, #外部参数七
arg8 STRING, #外部参数八
arg9 STRING, #外部参数九
return1 STRING, #回传资料一
return2 STRING, #回传资料二
return3 STRING, #回传资料三
return4 STRING, #回传资料四
return5 STRING, #回传资料五
return6 STRING, #回传资料六
return7 STRING, #回传资料七
return8 STRING, #回传资料八
return9 STRING, #回传资料九
ls_title STRING, #统一显示在错误讯息多语言前面的字串
err_str DYNAMIC ARRAY OF STRING #替换错误讯息代号和错误讯息上的%变数
END RECORD
#cl_jmail.4gl专用变数
DEFINE g_xml RECORD
file LIKE type_t.chr50, #XML档名(不含路径,档案产生在$TEMPDIR底下)
mailserver LIKE type_t.chr30, #MAIL SERVER IP
serverport LIKE type_t.chr5, #MAIL SERVER Port
#user LIKE type_t.chr30, #MAIL SERVER User #171023-00034#1 mark
user LIKE type_t.chr80, #MAIL SERVER User #171023-00034#1 add
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
更多笔记分享
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
[外链图片转存中…(img-7sWFH45H-1714876696541)]
[外链图片转存中…(img-Fo2d6nxF-1714876696541)]
更多笔记分享
[外链图片转存中…(img-vHdrExVY-1714876696542)]