🎨 style(markdown): format markdown files
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
```tsl
|
||||
R[i] := #函数名(参数…) with array(系统参数列表…) timeout N;
|
||||
```
|
||||
|
||||
其中,with 语句可指定网格运算子程中的系统参数,此输入可省
|
||||
|
||||
timeout
|
||||
@@ -353,6 +354,7 @@ begin
|
||||
SetGlobalCache(Cache, V);
|
||||
end;
|
||||
```
|
||||
|
||||
但这样存在几个问题:
|
||||
|
||||
一是全局缓存的设置是需要权限的,一旦采用这样的模式,代码只能运行在高权限下。
|
||||
@@ -368,6 +370,7 @@ begin
|
||||
SetGlobalCache(Cache, V);
|
||||
end;
|
||||
```
|
||||
|
||||
我们需要在 IsDataNeedReCalc 里来检查诸如外部数据的版本是否发生了变更等工作,往往这种检查对事件的耗费远远大于全局缓存的获取,这样又会影响到用户模型的效率。
|
||||
|
||||
##### 期望的方式
|
||||
@@ -377,6 +380,7 @@ end;
|
||||
```tsl
|
||||
if not GetGlobalCache(CacheName, V) then V := CalcDataCall();
|
||||
```
|
||||
|
||||
由于全局缓存系统管了生成,所以我们只需要取即可,如果系统未生成,我们直接进入计算模式。
|
||||
|
||||
##### 不推荐的模式
|
||||
@@ -384,6 +388,7 @@ if not GetGlobalCache(CacheName, V) then V := CalcDataCall();
|
||||
```tsl
|
||||
GetGlobalCache(CacheName, V);
|
||||
```
|
||||
|
||||
有的开发者会在升级应用后,将取数程序变成了最简单的模式,假设缓存的获得会成功,这样在项目实施中并无不可,假设数据的初始化和数据变更确定性由系统其他部分完成了,这样也带来了数据底层来源和上层应用分离的优势。
|
||||
|
||||
但在产品开发中,我们并不推荐如此模式,因为这样会带来了新的问题。
|
||||
@@ -497,4 +502,5 @@ Automonthreads 设置的是启动的监控管理线程的数量。
|
||||
```tsl
|
||||
// 如果初始化和监控 TSL 需要调用内外部的 TSL 函数来进行数据准备,设计者推荐用户采用 data:=sudo("modeluser",getcalcdata())的模式来进行数据的一些准备工作,因为 GetCalcData()这类的函数往往不需要任何特殊权限,这样可以最大限度地防止非授权代码的运行。
|
||||
```
|
||||
|
||||
如果我们仅仅只是利用初始化和监控进行一些系统性操作,设计者强烈建议不需要使用一些中间函数,将除了二进制函数外的实现直接在.TSL 里完成,这样做可以让这些代码可以独立运行。如果无法保障这一点,强烈建议将无需权限运行的内容以 sudo 模式来运行。
|
||||
|
||||
Reference in New Issue
Block a user