2021-2022-1 20211427 《信息安全专业导论》第十周学习总结
作业信息
2020-2021-1信息安全专业导论|
2020-2021-1信息安全专业导论第十周作业
[学习目标] |信息系统
数据库与SQL
人工智能与专家系统
人工神经网络
模拟与离散事件
排队系统
天气与地震模型
图形图像|
作业正文
教材学习内容总结
信息系统是帮助组织和分析数据的软件。
数据库:结构化的数据集合。
SQL:结构化查询系统(Structured Query Language)是用于管理和查询数据的综合性关系数据库语言。
人工智能:研究对人类思维建模和应用人类智能的计算机系统的学科。
专家系统:基于人类专家的知识的软件系统。其使用一套规则来指导处理,因此又叫做基于规则的系统。专家系统的规则集合又叫做它的知识库。推理机是专家系统的一部分,决定了如何执行规则以及从而会得到什么结论。
人工神经网络:尝试模拟人体神经网络的计算机知识表示法。
模拟:设计复杂系统的模型并为观察结果而对改模型进行实验。
离散事件系统:指系统的状态在一些离散时间点上由于某种事件的驱动而发生变化。其数学模型很难用数学方程来表示。
离散事件模拟:由实体、属性和事件构成。实体表示真实系统中必须明确定义的对象,系统的特征或特性是对象。属性是一个特定实体的特征。事件是实体之间的相互作用。
排队系统:一种离散事件模型,它使用随机数表示事件的到达和持续。排队系统由服务器和等待服务的对象队列构成。
天气模型:一般来说,气象模型是以时间相关的流体力学和热力学的偏微分方程为基础的,这些方程的变量包括两个水平风速、垂直风速、气温、气压和水汽浓度。
计算生物学:一种通过计算机、应用数学以及统计学的知识解决生物学问题的交叉性学科。
地震模型:其能够预测地震波在地壳中的传播,地震波既可以来自自然事件,也可以来自人为事件。
计算机图形学是结合了计算机、科学和绘画艺术的领域,它依赖数学方程来模拟图像中要呈现的自然现象。计算机图形学把光的交互、对象的属性、对象的现状和物理属性结合在一起,以生成接近真实照片的图像。
教材学习中的问题和解决过程
问题1:什么是离散事件?
解决过程:计算机模拟离散事件模型的模拟编辑在离散事件模型中,系统的状态改变只出现在离散的时刻,称为离散事件
代码调试中的问题和解决过程
问题1:transitions开源库下载安装有问题
解决过程:在网上寻找教程解决。
[代码托管]
from statemachine import StateMachine
有限状态集合
positive_adjectives = ["great","super", "fun", "entertaining", "easy"]
negative_adjectives = ["boring", "difficult", "ugly", "bad"]
自定义状态转变函数
def start_transitions(txt):
# 过指定分隔符对字符串进行切片,默认为空格分割,参数num指定分割次数
# 将"Python is XXX"语句分割为"Python"和之后的"is XXX"
splitted_txt = txt.split(None, 1)
word, txt = splitted_txt if len(splitted_txt) > 1 else (txt,"")
if word == "Python":
newState = "Python_state" # 如果第一个词是Python则可转换到"Python状态"
else:
newState = "error_state" # 如果第一个词不是Python则进入终止状态
return (newState, txt) # 返回新状态和余下的语句txt
def python_state_transitions(txt):
splitted_txt = txt.split(None,1)
word, txt = splitted_txt if len(splitted_txt) > 1 else (txt,"")
if word == "is":
newState = "is_state"
else:
newState = "error_state"
return (newState, txt)
def is_state_transitions(txt):
splitted_txt = txt.split(None,1)
word, txt = splitted_txt if len(splitted_txt) > 1 else (txt,"")
if word == "not":
newState = "not_state"
elif word in positive_adjectives:
newState = "pos_state"
elif word in negative_adjectives:
newState = "neg_state"
else:
newState = "error_state"
return (newState, txt)
def not_state_transitions(txt):
splitted_txt = txt.split(None,1)
word, txt = splitted_txt if len(splitted_txt) > 1 else (txt,"")
if word in positive_adjectives:
newState = "neg_state"
elif word in negative_adjectives:
newState = "pos_state"
else:
newState = "error_state"
return (newState, txt)
if name== "main":
m = StateMachine()
m.add_state("Start", start_transitions) # 添加初始状态
m.add_state("Python_state", python_state_transitions)
m.add_state("is_state", is_state_transitions)
m.add_state("not_state", not_state_transitions)
m.add_state("neg_state", None, end_state=1) # 添加最终状态
m.add_state("pos_state", None, end_state=1)
m.add_state("error_state", None, end_state=1)
m.set_start("Start") # 设置开始状态
m.run("Python is great")
m.run("Python is not fun")
m.run("Perl is ugly")
m.run("Pythoniseasy")
from transitions import Machine
class Progress(object):
pass
model = Progress()
states = ['New', 'Ready', 'Waiting', 'Running', 'Terminated']
transitions=[
{'trigger': 'Admitted', 'source': 'New', 'dest': 'Ready'},
{'trigger': 'Input', 'source': 'Waiting', 'dest': 'Ready'},
{'trigger': 'Output', 'source': 'Waiting', 'dest': 'Ready'},
{'trigger': 'event_completion', 'source': 'Waiting', 'dest': 'Ready'},
{'trigger': 'event_wait', 'source': 'Running', 'dest': 'Waiting'},
{'trigger': 'Input', 'source': 'Running', 'dest': 'Waiting'},
{'trigger': 'Output', 'source': 'Running', 'dest': 'Waiting'},
{'trigger': 'Interrupt', 'source': 'Running', 'dest': 'Ready'},
{'trigger': 'Dispatch', 'source': 'Ready', 'dest': 'Running'},
{'trigger': 'Exit', 'source': 'Running', 'dest': 'Terminated'}]
machine=Machine(model=model,states=states,transitions=transitions,initial='New')
print(model.state)
model.Admitted()
print(model.state)
model.Dispatch()
print(model.state)
model.event_wait()
print(model.state)
model.Output()
print(model.state)
model.Dispatch()
print(model.state)
model.Exit()
print(model.state)
上周考试错题总结
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 1/1 | 8/8 | |
第二周 | 60/110 | 3/4 | 9/17 | |
第三周 | 80/190 | 1/5 | 8/25 | |
第四周 | 160/350 | 1/6 | 9/34 | |
第五周 | 450/800 | 1/7 | 13/47 | |
第六周 | 700/1500 | 1/8 | 16/63 | |
第七周 | 700/2200 | 3/11 | 16/79 | |
第八周 | 800/3000 | 1/12 | 16/95 | |
第九周 | 800/3800 | 1/13 | 16/111 | |
第十周 | 800/4600 | 1/14 | 16/127 |
-
计划学习时间:15小时
-
实际学习时间:16小时