2023.12.31
之前的所有百讲课程,总计261
讲。IRIS
、Cache
编程知识的免费课程。第1
讲 IRIS
ObjectScript
简介
ObjectScript
特点第2
讲 初识ObjectScript
程序
第3
讲 语法规则
第4
讲 数据类型 - 字符串
第5
讲 数据类型 - 位串
第6
讲 数据类型 - 数字
第7
讲 数据类型 - 对象
第8
讲 数据类型 - 布尔
第9
讲 数据类型 - 日期
第10
讲 变量
ProcedureBlock
使用Global
^GETPPGINFO
Global
第11
讲 运算符 - 逻辑运算符
Not
运算符('
)第12
讲 运算符 - 算术运算符
+
)-
)*
)/
)**
)\
)#
)第13
讲 关系运算符
<
>
>=
<=
=
'=
[
'[
]
']
]]
']]
第14
讲 运算符 - 模式匹配
第15
讲 运算符 - 间接寻址
$TEXT
参数间接寻址第16
讲 命令梗概
第17
讲 命令 - 赋值命令
Set
命令Kill
命令
KILL
影响Zkill
命令New
命令Merge
命令第18
讲 命令 - 条件命令
if
,elseif
,else
命令IF
中使用QUIT
IF
中使用GOTO
第19
讲 命令 - 循环命令
For
命令while
命令Do While
命令第20
讲 命令 - 退出命令
Continue
命令Quit
命令Retrun
命令第21
讲 命令 - 输出命令
WRITE
命令
WRITE
WRITE
ZWRITE
命令ZZDUMP
命令ZZWRITE
命令WRITE
,ZWRITE
,ZZDUMP
,ZZWRITE
异同第22
讲 命令 - 调用命令
Do
命令第23
讲 命令 - 调用命令 - JOB
第24
讲 命令 - 调用命令 - JOB
- 使用多进程
第25
讲 命令 - 调用命令 - JOB
- 消息队列
第26
讲 命令 - 调用命令 - XECUTE
命令
第27
讲 命令 - 调用命令 - GOTO
命令
第28
讲 方法 - 方法概念
Routines
Subroutines
Functions
Label
Procedures
Methods
ClassMethods
SystemFunctions
Program
第29
讲 参数 - 参数传递
第30
讲 嵌入式代码
HTML
&html
标记语法JavaScript
SQL
第31
讲 多维数组
第32
讲 系统函数梗概
第33
讲 分隔函数 $PIECE
SET $PIECE
替换子字符串第34
讲 截取函数 $EXTRACT
SET $EXTRACT
替换子字符串DTM
模式下的$EXTRACT
第35
讲 长度函数 $LENGTH
,对齐函数 $JUSTIFY
,查找函数 $FIND
,反转函数 $REVERSE
第36
讲 转换函数 $ZCONVERT
第37
讲 替换函数 $REPLACE
,$TRANSLATE
,$CHANGE
$CHANGE
, $REPLACE
, $TRANSLATE
函数第38
讲 数组函数 - $LISTBUILD
SET $LISTBUILD
第39
讲 数组函数 - $LIST
$List
错误情况SET $LIST
替换元素第40
讲 $LIST
与$EXTRACT
和$PIECE
区别
第41
讲 数组函数 - $LISTDATA
第42
讲 数组函数 - $LISTFIND
第43
讲 数组函数 - $LISTGET
第44
讲 数组函数 - $LISTLENGTH
第45
讲 数组函数 - $LISTNEXT
第46
讲 效率 - 对比遍历取值$LISTDATA
,$LIST
,$LISTGET
,$LISTNEXT
第47
讲 数组函数 - $LISTSAME
第48
讲 数组函数 - $LISTFROMSTRING
,$LISTTOSTRING
第49
讲 数组函数 - $LISTUPDATE
第50
讲 数组函数 - $LISTVALID
第51
讲 示例 - 结合所有列表函数 - 总结
第52
讲 正则表达式
第53
讲 正则表达式函数 - $MATCH
Unicode
属性字符类型POSIX
字符类型Unicode
表示法
Unicode
编码范围Case
模式第54
讲 正则表达式函数 - $LOCATE
第55
讲 正则表达式函数 - $ZSTRIP
第56
讲 正则表达式类 - %Regex.Matcher
第57
讲 对比 MATCH
、LOCATE
、ZSTRIP
、%Regex.Matcher
异同
第58
讲 什么是宏?宏的简单使用
第59
讲 .inc文件的使用
inc
文件第60
讲 宏预处理器 - 定义指令 - #Def1Arg
、#Define
、#Dim
、##Continue
第61
讲 宏预处理器 - 条件指令 - #If
、#ElseIf
、#Else
、#EndIf
、#IfDef
、#IfNDef
、#UnDef
第62
讲 宏预处理器 - 编译指令 - #Execute
、##Expression
、##SafeExpression
、##Function
、##Lit
第63
讲 宏预处理器 - SQL
指令 - #Import
、#SQLCompile Audit
、#SQLCompile Mode
、#SQLCompile Path
、#SQLCompile Select
、##SQL
#Import
和#SQLCompile
区别第64
讲 宏预处理器 - 其他指令 - #Include
、#Show
、#NoShow
、#;
、##;
、##Quote
、##Unique
第65
讲 使用系统宏
%occStatus.inc
内的宏第66
讲 如何使用 %Status
数据类型
第67
讲 锁 - LOCK
命令
第68
讲 锁 - LOCK
命令的两种基本形式
LOCK
命令的两种基本形式
第69
讲 锁 - 独占锁
第70
讲 锁 - 共享锁
第71
讲 锁 - 升级锁
第72
讲 锁 - 立即解锁
第73
讲 锁 - 延迟解锁
第74
讲 锁 - 增量锁
第75
讲 锁 - 锁类型总结
第76
讲 锁 - ^$LOCK
结构化系统变量
第77
讲 锁 - 使用Portal
管理锁
第78
讲 锁 - 使用^LOCKTAB
实用程序
"?"
,显示帮助信息:D
删除一个锁。J
删除进程中的所有锁。C
删除系统中的所有锁。A
删除所有锁。第79
讲 锁 - 等待锁
第80
讲 锁 - 死锁
第81
讲 锁 - 注意点总结
第82
讲 代码规范 - 变量
第83
讲 代码规范 - 方法
第84
讲 代码规范 - 类
第85
讲 代码规范 - 锁
第86
讲 代码规范 - 事务
第87
讲 代码规范 - 陷阱
第88
讲 代码规范 - 空行
第89
讲 代码规范 - 格式
第90
讲 代码规范 - 注释
第91
讲 事务 - 什么是事务? 事务的特性
第92
讲 事务 - 事务命令
TSTART
TCOMMIT
TROLLBACK
<ROLLFAIL>
的几种情况SQL
命令与ObjectScript
命令对照第93
讲 事务 - 什么可回滚,什么不可回滚?
第94
讲 事务 - SQL
事务命令
SET TRANSACTION
START TRANSACTION
COMMIT
ROLLBACK
SAVEPOINT
%INTRANSACTION
第95
讲 事务 - $TLEVEL
变量
Terminal
显示事务层数SQL
命令和$TLEVEL
第96
讲 事务 - 嵌套事务的几种情况
第97
讲 事务 - 事务使用的基本示例
第98
讲 事务 - 事务提交方式
IMPLICIT
显式事务(自动事务)EXPLICIT
隐式事务(关闭自动事务)NONE
没有自动事务处理第99
讲 事务 - 并发事务带来的问题 - 脏读
第100
讲 事务 - 并发事务带来的问题 - 丢失更新
第101
讲 事务 - 并发事务带来的问题 - 不可重复读
第102
讲 事务 - 并发事务带来的问题 - 幻读
第103
讲 事务 - 并发事务带来的问题总结
第104
讲 事务 - 隔离级别 - READ UNCOMMITTED
READ UNCOMMITTED
(读取未提交数据)第105
讲 事务 - 隔离级别 - READ COMMITTED
READ COMMITTED
(读取已提交数据)第106
讲 事务 - 隔离级别 - REPEATABLE READ
REPEATABLE READ
(可重复读)第107
讲 事务 - 隔离级别 - SERIALIZABLE
SERIALIZABLE
(可串行化)第108
讲 事务 - 隔离级别 - 总结
SNAPSHOT
:快照第109
讲 事务 - 查看事务日志 - 增删改对日志的影响
INSERT
数据UPDATE
数据DELETE
数据第110
讲 事务 - 通过日志恢复被删除的数据
第111
讲 事务 - 开放性事务原理以及如何检测开放性事务
第112
讲 错误处理 - TRY
命令
TRY - CATCH
机制第113
讲 错误处理 - CATCH
命令
CATCH
命令有两种形式
CATCH
CATCH
第114
讲 错误处理 - THROW
命令
THROW
THROW
第115
讲 错误处理 - ZTRAP
命令
第116
讲 错误处理 - $ZTRAP
变量
第117
讲 错误处理 - 错误处理的工作机制原理
第118
讲 错误处理 - $ETRAP
变量
第119
讲 错误处理 - $ZERROR
变量以及常见错误类型
$ze
格式错误第120
讲 错误处理 - $ECODE
变量
第121
讲 错误处理 - $THROWOBJ
变量
第122
讲 错误处理 - TRY - CATCH
,$ZTRAP
,$ETRAP
区别与错误处理工具推荐
第123
讲 错误处理 - 堆栈 - $STACK
变量
第124
讲 错误处理 - 堆栈 - $ESTACK
变量
第125
讲 错误处理 - 堆栈 - $STACK
函数
$STACK
的单参数形式$STACK
的两个参数形式第126
讲 错误处理 - 堆栈 - 手写记录错误堆栈调用信息
第127
讲 错误处理 - 堆栈 - Terminal
中显示程序堆栈信息
Terminal
字母代码第128
讲 错误处理 - 堆栈 - %Stack
实用程序
第129
讲 错误处理 - 使用系统日志并查看错误堆栈信息
第130
讲 错误处理 - 使用%ERN
查看应用程序错误日志
第131
讲 错误处理 - 常见的返回值错误处理
^
、,
等。
JSON
处理错误方式返回。%Status
方式返回。SQLCODE
方式返回错误。第132
讲 错误处理 - 手写通用错误异常处理方式,包含日志,堆栈。
$Ztrap
与Try-Catch
双保险方式捕捉异常$Ztrap
方式捕捉ZTrap
抛出异常第133
讲 调试 - BREAK
命令 - 基本使用
BREAK
命令有三种形式BREAK
第134
讲 调试 - BREAK
命令 - 逐步逐行调试
BREAK Extended
参数以设置常规断点第135
讲 调试 - BREAK
命令 - 中断运行中的程序
Flag
参数第136
讲 调试 - ZBREAK
命令 - 基本使用
ZBREAK
帮助文档ZBREAK
BREAK
与ZBREAK
的区别第137
讲 调试 - ZBREAK
命令 - 使用断点和监视点
action
参数值第138
讲 调试 - ZBREAK
命令 - 跟踪并输出监视变量值
第139
讲 调试 - ZBREAK
命令 - 将调试信息输出到日志txt
txt
第140
讲 调试 - 使用Stuido
调试
第141
讲 调试 - 使用监视窗口与监视点
第142
讲 调试 - 根据进程调试
第143
讲 调试 - 调试CSP
页面
第144
讲 - 类 - 包 - 定义
第145
讲 - 类 - 包 - 包映射
第146
讲 - 类 - 包 - 使用包
ObjectScript
方法中引入包第147
讲 类 - 参数 - 定义使用类参数
第148
讲 类 - 参数 - 类参数类型
第149
讲 类 - 参数 - 运行时更改类参数值与参数关键字
第150
讲 类 - 方法 - 定义方法
.第151
讲 类 - 方法 - 使用类方法与实例方法
第152
讲 类 - 方法 - 方法关键字
Language
- 指定实现语言CodeMode
- 方法实现方式SqlProc
- 将方法映射为存储过程SqlName
- 自定义存储过程名称Abstract
- 抽象方法Final
- 指定方法为最终方法Private
- 指定方法为私有方法第153
讲 方法生成器 - 原理
第154
讲 方法生成器 - 可用对象简介与示例
第155
讲 方法生成器 - 父子类中的区别
第156
讲 类 - 对象 - %RegisteredObject
类
OREF
第157
讲 类 - 对象 - %RegisteredObject
类常用方法
第158
讲 类 - 对象 - 继承与父类类型转换
第159
讲 类 - 属性 - 简介
i%PropertyName
(实例变量)第160
讲 类 - 属性 - 常用关键字
InitialExpression
关键字 - 设置属性定义初始值Required
关键字 - 设置属性字段不能为null
MultiDimensional
- 关键字定义多维属性Aliases
- 为属性指定别名ReadOnly
- 指定属性为只读第161
讲 类 - 属性 - 计算属性
SqlComputed
关键字与SqlComputeCode
关键字SqlColumnNumber
关键字设置属性的SQL
列号SqlFieldName
设置SQL
字段名SqlComputeOnChange
关键字Transient
关键字Calculated
关键字第162
讲 类 - 属性 - 属性访问器
IDE
创建属性访问器PropGetStored()
方法 - 直接从磁盘加载数据第163
讲 类 - 数据类型类 - 简介
第164
讲 类 - 数据类型类 - 常用数据类型与映射
ODBC
,JDBC
SqlCategory
映射数据类型类OdbcType
映射数据类型类ClientDataType
分组的数据类型类第165
讲 类 - 数据类型 - 属性方法
第166
讲 类 - 数据类型 - 数据类型参数
第167
讲 类 - 数据类型 - 自定义数据类型类
第168
讲 类 - %Persistent
- 持久类简介与定义
SQL
映射关系ID
和OID
第169
讲 类 - %Persistent
- Storage
定义与Storage
类
%Storage.Persistent
存储类%Storage.SQL
存储类%Storage.Persistent
与%Storage.SQL
区别第170
讲 类 - %Persistent
- Global
使用
第171
讲 类 - %Persistent
- 生成ID相关事项
第172
讲 类 - %Persistent
- 哈希Global
第173
讲 类 - %Persistent
- 子类拓展使用
NoExtent
子类持久类第174
讲 类 - %Persistent
- 常用关键字
SqlTableName
关键字 - 设置表名称SqlRowIdName
关键字 - 设置ID
列名称SqlRowIdPrivate
关键字 - 隐藏ID
列StorageStrategy
关键字 - 指定Storage
DdlAllowed
关键字 - 指定是否可以使用DDL
语句第175
讲 类 - %Persistent
- 持久类常用方法
%Save()
- 保存对象%Save()
方法执行逻辑详解%Save()
回滚%Save()
事务%Id()
- 返回持久对象ID
%Oid()
- 返回持久对象OID
%ExistsId()
- 测试持久对象ID
是否存在%OpenId
- 打开保存的对象%OpenId()
情况分析%Reload()
- 重新加载对象%DeleteId()
- 根据ID
删除保存的对象%Delete()
根据OID
删除保存的对象%DeleteExtent()
- 删除所有保存的对象%KillExtent()
- 强制删除该表数据READONLY
参数 - 指定数据库为只读第176
讲 类 - %Persistent
- Swizzling
Swizzling
- 懒加载、交错存储、重组存储第177
讲 类 - %Persistent
- Extent
查询
第178
讲 类 - %Persistent
- 并发分析
concurrency
设置为 0
- 无锁。concurrency
设置为 1
- 保存后获取独占锁。concurrency
设置为 2
- 与1
相同concurrency
设置为 3
- 总是获取共享锁。concurrency
设置为 4
- 总是获取独占锁。$system.OBJ.SetConcurrencyMode
设置当前进程并发值第179
讲 类 - %Persistent
- 使用列存储
第180
讲 类 - 集合 - 简介
第181
讲 类 - 集合 - 使用列表集合
List
集合第182
讲 类 - 集合 - 使用数组集合
Array
集合第183
讲 类 - 集合 - 在持久类中使用基础数据列表
SQL
映射list
列表第184
讲 类 - 集合 - 在持久类中使用对象列表
list
列表第185
讲 类 - 集合 - 在持久类中使用序列化列表
list
列表第186
讲 类 - 集合 - 在持久类中使用基础数据数组
array
数组第187
讲 类 - 集合 - 在持久类中使用对象数组
array
数组第188
讲 类 - 集合 - 在持久类中使用序列化数组
array
数组第189
讲 类 - 集合 - 集合属性参数
STORAGEDEFAULT
参数SQLTABLENAME
参数SQLPROJECTION
参数第190
讲 流 - 简介
第191
讲 流 - 在持久类中使用流属性
第192
讲 流 - 常用方法和属性
%Stream
- 流常用方法和属性
Read()
- 从流的当前位置开始读取指定数量的字符。Write()
- 从当前位置开始,将数据追加到流中。如果位置未设置为流的末尾,则覆盖现有数据。Rewind()
- 移至流的开头。NewFileName()
- 为%Stream.FileCharacter
或%Stream.FileBinary
属性指定文件名。常用的属性
AtEnd
- 当读取遇到数据源的末尾时,设置为true
。Id
- 在%Location
指定的范围内,流实例的唯一标识符。Size
- 流的当前大小(以字节或字符为单位,取决于流的类型)。第193
讲 流 - 流中指定编码格式
TranslateTable
- 指定读取或写入%Stream.FileCharacter
流的字符集编码类型。Filename
- %Stream.FileBinary
流当前使用的文件名,文件名包含路径+文件名。第194
讲 流 - 复制视频文件
CopyFrom()
- 所有流都包含一个CopyFrom()
方法,该方法复制一个流填充到另一流。LinkToFile()
- 类似于Filename
属性,将文件流连接到名为Filename
的文件。如果指定的文件不存在,则在%Save()
后创建。第195
讲 流 - 在已有文件中追加数据
MoveToEnd()
- 移动到流的末尾。%Save()
- 当将流类用作独立对象时,使用%Save()
方法来保存流数据。第196
讲 流 - 使用gzip
压缩文件
第197
讲 流 - 通过嵌入式对象写入流
SQL
读取流SQL
写入流第198
讲 流 - 使用压缩流
第199
讲 %SerialObject
- 序列化对象简介
第200
讲 %SerialObject
- 序列化对象使用
第201
讲 类 - XData
- 介绍使用
XData
XML
示例JSON
示例YAML
示例第202
讲 类 - Projection
映射 - 介绍使用
第203
讲 类 - 关系 - 简介
第204
讲 类 - 关系 - 定义一对多关系
第205
讲 类 - 关系 - 删除一对多关系
第206
讲 类 - 关系 - 使用关键字OnDelete
第207
讲 类 - 关系 - 定义主子关系
第208
讲 类 - 关系 - 删除主子关系
第209
讲 类 - 关系 - 在SQL
查询中使用关系
第210
讲 类 - 关系 - 使用关系定义多对多关系
第211
讲 类 - 关系 - 使用外键定义多对多关系
第212
讲 Query
- 简介与基本使用
第213
讲 Query
- 自定义Query
基本使用
第214
讲 Query
- 通过%SQL.Statement
,%ResultSet
使用Query
%SQL.Statement
对象调用Query
%ResultSet
对象调用Query
第215
讲 Query
- 通过Json
数据或方法动态生成Query
第216
讲 Query
- 通过Select Sql
语句动态生成Query
第217
讲 Query
- 通过Query
生成动态Query
第218
讲 Query
- 支持传统的Query
并通过参数形式生成Query
列
第219
讲 Query
- 定义通用Query
,只需要实现Exceute
方法
第220
讲 Query
- 通过Query
生成Json
,通过Query
生成Csv
第221
讲 生命周期回调方法 - 从新建到保存
回调方法列表
%OnNew()
%OnAddToSaveSet()
%OnBeforeSave()
%OnAfterSave()
%OnSaveFinally()
%OnValidateObject()
%OnRollBack()
%OnClose()
%Save
回调示例
第222
讲 生命周期回调方法 - 从打开到删除
%OnOpen()
%OnOpenFinally()
%OnReload()
%OnConstructClone()
%OnAfterDelete()
%OnDelete()
%OnDeleteFinally()
%Delete
示例第223
讲 生命周期回调方法 - 索引
%OnBeforePurgeIndices()
%OnAfterPurgeIndices()
%OnBeforeBuildIndices()
%OnAfterBuildIndices()
%BuildIndices
示例第224
讲 填充工具 - Populate实用程序简介
%Library.PopulateUtils
填充方法列表Populate()
方法简介第225
讲 填充工具 - 集合属性
第226
讲 填充工具 - 引用序列化对象的属性
第227
讲 填充工具 - 关系
第228
讲 填充工具 - 引用持久对象的属性
第229
讲 填充工具 - 为非集合属性指定POPSPEC
参数
第230
讲 填充工具 - 为列表属性指定POPSPEC
参数
第231
讲 填充工具 - 为数组属性指定POPSPEC
参数
第232
讲 填充工具 - 通过SQL
表指定POPSPEC
参数
第233
讲 填充工具 - 基于另外一个属性生成
第234
讲 动态派发
%DispatchMethod()
%DispatchClassMethod()
%DispatchGetProperty()
%DispatchSetProperty()
%DispatchSetMultidimProperty()
第235
讲 动态派发 - 动态属性示例
第236
讲 JSON
- 简介
JSON
简介JSON
简单使用示例
第237
讲 JSON
- 使用JSON
文本构造器
JSON
构造函数创建动态实体JSON
文本构造器第238
讲 JSON
- 使用动态表达式和点语法
第239
讲 JSON
- 使用 %Set()
, %Get()
, %Remove()
%Set()
, %Get()
, %Remove()
%Set()
、%Get()
和%Remove()
以编程方式指定JSON
的键和值%Get()
和%Remove()
检索嵌套的动态实体第240
讲 JSON
- 链式动态实体方法
第241
讲 JSON
- 错误处理
第242
讲 JSON
- 序列化与反序列化
JSON
字符串JSON
字符串反序列化为动态对象JSON
字符串之间进行转换第243
讲 JSON
- 克隆JSON
对象
第244
讲 JSON
- 迭代JSON
%GetNext()
遍历动态实体第245
讲 JSON
- 解决JSON
字符串超长问题
Global
字符流Json
写入文件流第246
讲 JSON
- 动态数组中的null
值
第247
讲 JSON
- 在数组中使用%Remove
第248
讲 JSON
- 使用%Size()
的数组迭代
第249
讲 JSON
- 使用%IsDefined()
测试有效值
第250
讲 JSON
- 在动态数组中使用%Push
和%Pop
%Push()
和%Pop()
构建一个数组并销毁第251
讲 JSON
- 处理JSON
数据类型
%GetTypeOf()
返回值的数据类型oref
第252
讲 JSON
- 用%Set()
或%Push()
重写覆盖默认数据类型
%Set()
或%Push()
重写覆盖默认数据类型第253
讲 JSON
- 解析JSON
空值和布尔值
JSON
空值和布尔值第254
讲 JSON
- 解决Null
、空字符串和未赋值
Null
、空字符串和未赋值第255
讲 JSON
- 动态实体方法概览
创建、读取、更新、删除
%Set()
可以更改现有动态实体成员属性或元素的值,也可以创建新成员并为其赋值。%Remove()
删除现有成员。%Get()
检索成员的值。迭代数组
%GetIterator()
返回一个迭代器,其中包含指向动态实体每个成员的指针。%GetNext()
返回迭代器标识的成员的键和值,并将光标移到下一个成员。%Size()
返回成员数包括数组中未分配的元素。%IsDefined()
测试成员是否具有指定的值。堆栈功能
%Push()
将新元素添加到动态数组的末尾。%Pop()
删除数组的最后一个元素并返回其值。这些方法不适用于动态对象,因为对象属性不是按可预测的顺序存储的。序列化和反序列化
%FromJSON()
将JSON
字符串转换为动态实体。%FromJSONFile()
%ToJSON()
将动态实体序列化为规范JSON
字符串。数据类型
%GetTypeOf()
返回一个字符串,该字符串指示指定成员值的数据类型。%Set()
和%Push()
提供一个可选的第三个参数来显式地指定值的数据类型。第256
讲 JSON
- %JSON.Adaptor
- 简介,对象与JSON
互转
%JSON.Adaptor
JSON
字符串JSON
字符串导入到对象中第257
讲 JSON
- %JSON.Adaptor
- 使用参数映射
%JSONFIELDNAME
%JSONINCLUDE
%JSONIGNOREINVALIDFIELD
%JSONIGNORENULL
%JSONNULL
%JSONREFERENCE
%JSONIGNOREINVALIDFIELD
第258
讲 JSON
- %JSON.Adaptor
- 使用XData
映射块
第259
讲 JSON
- %JSON.Adaptor
- 格式化JSON
JSON
第260
讲 %Dictionary
- 是什么怎么用
第261
讲 %Dictionary
- 类成员对应哪些表