access里面的表达式运用_表达式生成器中几种常用符号的使用

时 间:2007-07-04 00:00:00

作 者:

摘 要:表达式生成器中几种常用符号的使用

正 文:

针对最近有ACCESS网友提出关于"表达式生成器中的几种常用符号怎么使用"的问题我们进行了简单介绍一下:

一、表达式生成器上的这些快捷按钮都有什么用途呢?

“+”、“-”、“*”、“/”这几个符号就代表数学运算中的“加”、“减”、“乘”、“除”四种运算符号。使用“&”符号可以使两个表达式强制连接在一起,比如: "数据库"&"使用指南" 将返回: "数据库使用指南",也就是将这两个字符串连接在一起,左面的字符串在前面,右面的字符串在后面。

“=”、“>”、“”这四个符号分别表示“等于”、“大于”、“小于”、“不等于”,它们都是用来判断某个条件是否为满足,例如: “ =34 ” 表示当某个值等于34时才算满足这个条件。 “<>"江阴" ” 表示当某个值不等于字符串“江阴”时才算满足了条件。

“And”、“Or”、“Not”这三个逻辑运算符是用来连接上面的这些条件表达式的。比如: “ >100 And <300 ” 就表示只有某个值大于100并且小于300时原能算条件满足; “ >100 Or <300” 则表示这个值要大于100或者小于300,实际上就是任何数都满足这个条件; “Not >100 ” 这个表达式则表示只要这个值不大于100 ,这个条件就算满足了。

还有一个“Like ”, 这个符号又怎么用呢?这个符号常常用在对一个字符型的值进行逻辑判断,是否这个值满足某种格式类型。所以通常“Like”并不单独使用,常常还要跟一些别的符号: “?”表示任何单一字符; “*”表示零个或多个字符; “#”表示任何一个数字; “[字符列表]”表示字符列表中的任何单一字符; “[!字符列表]”表示不在字符列表中的任何单一字符。我们一起看几个例子, Like "华西?" 则字符串“华西人”、“华西村”都满足这个条件; Like "华西*" 则字符串“华西”、“华西人”、“华西钢厂”这些都满足这个条件; Like "表#" 则字符串“表1”、“表2”都满足这个条件; Like "[江苏,无锡,江阴]" 则只有字符串“江苏”、“无锡”、“江阴”可以满足条件; Like "[!江苏,无锡,江阴]" 则只有字符串“江苏”、“无锡”、“江阴”不能满足条件。

Access软件网官方交流QQ群(群号:39785885)

Access源码网店

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
题,使用Python语言实现。 首先,需要定义主体S、客体O、环境E和操作O的集合: ```python subjects = ['S' + str(i) for i in range(1, 11)] objects = ['O' + str(i) for i in range(1, 11)] environments = ['E' + str(i) for i in range(1, 11)] operations = ['read', 'write', 'execute'] ``` 然后,需要将这些集合写入文本数据库: ```python with open('database.txt', 'w') as f: f.write('Subjects:\n') f.write('\n'.join(subjects)) f.write('\n\nObjects:\n') f.write('\n'.join(objects)) f.write('\n\nEnvironments:\n') f.write('\n'.join(environments)) f.write('\n\nOperations:\n') f.write('\n'.join(operations)) ``` 接下来,需要随机生成10000个访问控制策略。每个策略的主客体、环境相关规则由3-5个属性点布尔表达式组成: ```python import random attributes = ['attr1', 'attr2', 'attr3', 'attr4', 'attr5', 'attr6', 'attr7', 'attr8', 'attr9', 'attr10'] policies = [] for i in range(10000): policy = {} policy['target'] = {} policy['target']['subject'] = random.sample(subjects, 1)[0] policy['target']['object'] = random.sample(objects, 1)[0] policy['target']['environment'] = random.sample(environments, 1)[0] policy['rules'] = [] for j in range(random.randint(3, 5)): rule = {} rule['subject'] = random.sample(attributes, 1)[0] rule['object'] = random.sample(attributes, 1)[0] rule['environment'] = random.sample(attributes, 1)[0] rule['value'] = random.choice([True, False]) policy['rules'].append(rule) policy['decision'] = random.choice(['Permit', 'Deny']) policies.append(policy) ``` 随机生成10000个访问请求,每个请求,主客体、环境相关属性也随机生成3-5个: ```python requests = [] for i in range(10000): request = {} request['subject'] = {} for j in range(random.randint(3, 5)): request['subject'][random.sample(attributes, 1)[0]] = random.choice([True, False]) request['object'] = {} for j in range(random.randint(3, 5)): request['object'][random.sample(attributes, 1)[0]] = random.choice([True, False]) request['environment'] = {} for j in range(random.randint(3, 5)): request['environment'][random.sample(attributes, 1)[0]] = random.choice([True, False]) request['operation'] = random.sample(operations, 1)[0] requests.append(request) ``` 定义一个函数,实现访问控制决策: ```python def access_control_decision(policy, request): for rule in policy['rules']: if rule['subject'] in request['subject'] and rule['object'] in request['object'] and rule['environment'] in request['environment']: if request['subject'][rule['subject']] == rule['value'] and request['object'][rule['object']] == rule['value'] and request['environment'][rule['environment']] == rule['value']: return policy['decision'] return 'Deny' ``` 最后,对于每个访问请求,依次进行访问控制决策: ```python with open('result.txt', 'w') as f: for request in requests: decision = 'Deny' for policy in policies: if access_control_decision(policy, request) == 'Permit': decision = 'Permit' break f.write(str(request) + ': ' + decision + '\n') ``` 注意,在实际应用,访问控制策略的数量可能会更大,访问请求的频率也可能更高,因此需要对程序进行优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值