基本类型

nil

type(val) == “nil”

布尔值

false和nil为false

0为true

number

双精度,表示所有数字

string

‘和”都可以表示字符串

[[]]可以表示一块字符串

+表示数学上的操作

..表示字符串上的操作

#表示字符串长度

table

可以是数组,也可以是字典

索引从1开始

function

可存在变量中

匿名函数

thread

线程和协程

userdata

自定义类型

struct和指针

变量

全局变量无需声明

变量全是全局变量,除非local声明为局部变量

局部变量作用域

同时赋值时,左右个数不匹配时会忽略or用nil补足

当table的索引为字符串时可用.操作符访问

多值赋值时仅值传递,不会变量传递

回收全局变量

循环

while … do … end

for i=begin, end, step do … end

begin, end, step一次性求值

pairs和ipairs:ipairs遇到nil则返回,ipairs从1开始遍历

未完

流程控制

if … then … end

if … then … else … end

函数

可有多个返回值

…表示可变参数

select(“#”,…) 来获取可变参数的数量

select(3,…) 表示从3开始到结束的所有参数列表

固定参数在变长参数前

运算符

//和/://表示整除,lua5.3后才有

..表示字符串拼接

#表示长度

运算符优先级

字符串

string.len

有中文用utf8.len

upper(), lower(), find(), reverse()

sub()

未完

数组

索引可为负数

迭代器

未完

table

当我们为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素。

table的操作

不能直接获得table的长度

模块和包

table创建模块

require调用模块

二、以太坊基本概念

10^18 wei = 1 ether

换钱包仅需发起交易把以太币转移到新地址

钱包中保存着私钥

助记词用于恢复私钥

EVM:全局性单体计算机,每个节点都运行着EVM的本地副本

账户

以太坊中有两种账户——外部账户EOA和合约账户

外部账户拥有私钥

合约账户具有智能合约代码并受其控制,也拥有地址,可以收发以太币

合约账户没有私钥,所有只有外部账户才能启动交易

智能合约

没细看!!!

编写,编译,部署,调用

交易中的data指定调用的合约函数和传入的参数,若未指定则调用默认函数(默认函数无函数名)

public:可被调用

payable:可接收以太币

由合约发起的交易叫内部交易

这章总的来说就是教我们怎么创建钱包,怎么交易,怎么创建合约,怎么交互

疑惑

  1. 智能合约可以撤销吗
  2. 怎么理解“可编程区块链的威力在于可以用去中心化的软件来控制资产!”?
  3. 调用智能合约函数算不算一次交易?——算的。
  4. 注册合约的目标地址为?
  5. 合约的地址和外部账户的地址都是怎么确定的?

一、什么是以太坊

以太坊:全球范围,单体状态,状态更改,通用可编程区块链

图灵完备,可被直接用作通用目的计算机

区块链都有哪些组件?以太坊的各个组件定义

共识规则、共识算法和激励规则之间的关系?

以太坊解决的问题:为了将区块链应用到更广泛的领域

什么是综述

综述型论文主要是研究者针对某一研究问题或专题,通过搜集大量相关文献资料,在仔细阅读并深入理解和消化实质内容的基础上,去粗取精,把能代表该研究(学术)领域前言水平的观点、论据及其研究成果等进行系统的汇总、整理,在此基础上进行系统的分析、论证和推论,最终得出自己的判断或结论,并对研究现状作出评论,发现问题,提出未来趋势等。

综述性论文不同于文献综述,两者有很大的区别的。综述型论文是一种论文文体,而文献综述只是论文中的一个部分而已,往往是开题报告、研究设计、研究方案或一些实证研究类论文的组成部分之一,并非一种文体,也非论文的全部,而综述型论文则是独立成篇的。

综述的目的

综述型论文至少可达到的基本目的有:让读者熟悉现有研究主题领域中有关研究的进展与困境;提供后续研究者的思考:未来研究是否可以找出更有意义与更显著的结果;对各种理论的立场说明,可以提出不同的概念架构;作为新假设提出与研究理念的基础,对某现象和行为进行可能的解释;识别概念间的前提假设,理解并学习他人如何界定与衡量关键概念;改进与批判现有研究的不足,推出另类研究,发掘新的研究方法与途径,验证其他相关研究。

对话样例

对话约束

我想问你一些关于xxx方向的问题。从现在开始,如果你的回答里出现专业术语,请在后面括号内添加英语缩写;如果你的回答中包含其他文章的句子,请在括号内加上文章名称和作者。

now, i want to ask you something about xxx. And from now on, if you have a technical word in your answer, abbreviate it in parentheses; if your answer includes sentences taken from another article, please include the article name and author in square brackets.

论文背景

请简要/详细告诉我xxx方向的起源/发展/应用/优势,并推荐至少x篇相关论文;

please tell me about the origin/development/application/advantage of xxx in brief/detail, and recommend some related article to me.

论文正文

请简要/详细告诉我xxx方向的主要技术,并推荐至少x篇相关论文;

please tell me something about xxx, and recommend some related article to me.

论文正文内容细化

请简要/详细告诉我xxx方向中”xx技术”的研究情况,并推荐至少x篇相关论文;

请简要/详细告诉我xxx方向中”不同的xx技术”的优势与劣势,并推荐至少x篇相关论文;

please tell me something about xxx in aspect of “xx”, and recommend some related article to me.

论文收尾

请告诉我xxx方向的前景/瓶颈/不足…以及原因

please tell me something about the future of edge detection in detail, in the style of a paragraph of an article of ieee

please tell me something about the shortcomings of Existing Edge Detection Methods in detail, in the style of a paragraph of an article of ieee

总结和摘要

please write a/an conclusion/abstract about everything we talk above.

存在的问题

引用文献可能不存在,解决办法:请告诉我x篇关于xxx方向xx技术的相关论文

biblatex引用格式问题,解决办法:给gpt引用的文献,让它生成biblatex的格式

参考资料

https://zhuanlan.zhihu.com/p/403971496

使用云

十四、云交付模型考量

14.1 云提供者角度

构建IaaS基本资源:虚拟服务器、云存储设备

虚拟服务器快照、自定义虚拟服务器镜像

PaaS:配备一组选择出来的应用开发和部署平台,以容纳不同的编程模型、语言和框架

SaaS:云服务通常是基于多租户环境的

SaaS依赖的一些架构:

14.2 云用户角度

访问IaaS服务:远程终端应用

一个典型的PaaS的IDE可以提供范围广泛的工具和编程资源

基于SaaS的云服务一般都提供通用的API

十五、成本指标与定价模型

15.1 商业成本指标

前期成本:获得与部署it资源的开销

持续成本:运行与保持it资源的开销

附加成本:资金成本、已支付成本(已有it资源)、集成成本(没搞懂)、锁定成本(服务可移植性)

15.2 云使用成本指标

网络使用

服务器使用

云存储设备使用

云服务使用:应用订购、用户数量、用户事务

15.3 成本管理考量

云服务生命周期

定义模型

十六、服务质量指标与SLA

服务可用性指标:运行时间百分比

服务可靠性指标:故障间隔时间

服务性能指标:执行功能的能力,完成操作的时间

服务可扩展性指标:为响应工作负载的增加而允许的it资源容量的改变

服务弹性指标:从灾难中恢复能力

云计算架构

课本上29种架构

十一、基本云架构

11.1 负载分布架构

负载均衡器

11.2 资源池架构

相同的IT资源由一个系统进行分组和维护

层级资源池:同级、嵌套

云存储设备、虚拟服务器

11.3 动态可扩展架构

基于预先定义的扩展条件从资源池中动态分配IT资源

水平扩展、垂直扩展、动态重定位

自动伸缩监听器、资源复制

11.4 弹性资源容量架构

根据负载变化分配和回收CPU与RAM资源

扩展逻辑在智能自动化引擎

垂直扩展

11.5 服务负载均衡架构

负载分布架构的变种

专门针对扩展云服务实现

11.6 云爆发架构

动态扩展架构的特殊形式

云数据中心和企业IT资源协同

11.7 弹性磁盘供给架构

动态存储供给

确保按照云用户实际使用的存储量进行精确计费

11.8 冗余存储架构

与主云存储设备中的数据保持同步

主设备失效时,存储设备网关把用户请求转向辅设备

十二、高级云架构

12.1 虚拟机监控器集群

多个虚拟机监控器构成集群

VIM通过常规心跳消息来监测虚拟机监控器的状态

12.2 负载均衡的虚拟服务器实例架构

容量看门狗系统:云使用监控器+容量计划器+VM在线迁移程序

不同粒度:用户请求、虚拟服务器实例和云负载均衡

12.3 不中断服务重定位架构

预先定义事件,触发云服务实现运行时复制或迁移

自动伸缩监听器、负载均衡器、云存储设备、虚拟机监控器、虚拟服务器

12.4 零宕机架构

复杂的故障转移系统

服务器会聚成一组,由容错系统控制

物理机不中断

故障转移系统、云存储设备、虚拟服务器

12.5 云负载均衡架构

在多个云之间进行负载均衡

12.6 资源预留架构

资源受限:IT资源没有足够的容量

资源借用:临时从其他资源池借用it资源

资源预留:IT资源没有足够的容量

12.7 动态故障检测与恢复架构

弹性看门狗系统

12.8 裸机供给架构

没有预装操作系统或其他任何软件的物理服务器

发现代理:一种监控代理,用于搜索并找到可用的物理机

部署代理:裸机供给的客户端

部署组件:用于安装操作系统

12.9 快速供给架构

实现大范围的IT资源供给的自动化

顺序管理器:组织自动化供给任务的顺序

顺序日志记录器:记录任务顺序

12.10 存储负载管理架构

使得LUN可以均匀地分布在可用的云存储设备上

LUN迁移:把LUN从一个存储设备移动到另一个上而无需中断

存储容量系统:则用来确保运行时工作负载均匀地分布在LUN上

十三、特殊云架构

13.1 直接IO访问架构

I/O虚拟化:虚拟服务器通过虚拟机监控器仿真连接访问物理I/O

直接IO访问架构:虚拟服务器直接访问物理服务器IO卡

13.2 直接LUN访问架构

存储LUN通过主机总线适配器HBA映射到虚拟机监控器中进行仿真存储

通过物理HBA卡向虚拟服务器提供LUN访问

13.3 动态数据规范化架构

处理冗余数据问题,建立重复删除机制

基于块的存储设备和基于文件的存储设备

13.4 弹性网络容量架构

给网络动态分配额外带宽

13.5 跨存储设备垂直分层架构

在不同的存储设备之间垂直扩展

13.6 存储设备内部垂直数据分层架构

数据分布于不同云存储设备可能是不被允许的

支持在单个云存储设备中进行垂直扩展的系统

13.7 负载均衡的虚拟交换机架构

提供多条上行链路来平衡多条上行链路或冗余路径之间的网络流量负载

13.8 多路径资源访问架构

应对链路失效

13.9 持久虚拟网络配置架构

网络配置信息进行集中存储,并复制到所有的物理机上

虚拟服务器迁移时,目的主机可以访问配置信息

13.10 虚拟服务器的冗余网络连接架构

应对物理链路失效

13.11 存储维护窗口架构

云存储设备需要进行停机维护,数据暂时迁移到复制的辅助设备上

云计算机制

课本上七八九章共20个机制

七、云基础设施机制

7.1 逻辑网络边界

vlan

隔离

7.2 虚拟服务器

模拟物理服务器的软件

最基本的云环境构建块

7.3 云存储设备

专门为基于云配置所设计的存储设备

安全性、完整性和保密性

数据存储逻辑单元:文件、块、数据集、对象

7.4 云使用监控

收集和处理IT资源的使用数据

监控代理:对数据流进行透明的监控和分析

资源代理:在资源软件级别监控预定义的且可观测事件的使用指标,比如:启动、暂停、恢复和垂直扩展

轮询代理:通过轮询IT资源来周期性地监控IT资源状态

7.5 资源复制

对同一个IT资源创建多个实例

加强IT资源的可用性和性能

使用虚拟化技术实现

7.6 已就绪环境

代表的是预定义的基于云的平台,包括预安装的IT资源

不同需求对应不同环境

八、特殊云机制

8.1 自动伸缩监听器

监控云服务用户和云服务之间的通讯

靠近防火墙

8.2 负载均衡器

把负载在两个或更多的IT资源上做负载均衡

可作为代理

8.3 SLA监控器

监控服务性能,满足QoS需求

8.4 按使用付费监控器

按照预先定义好的定价参数测量云资源使用,并生成使用日志用于计算费用

资源代理

监控代理

8.5 审计监控器

收集网络和IT资源的审计记录数据

8.6 故障转移系统

通过使用现有的集群技术提供冗余的实现来增加IT资源的可靠性和可用性

主动-主动:多个实例都活跃

主动-被动:一个实例活跃,其他实例待机,等待激活

8.7 虚拟机监控器

用来在物理服务器上生个虚拟服务器实例

虚拟机监控器通常受限于一台物理服务器,VIM可以管理多个虚拟机监控器,以此管理多个虚拟机服务器

8.8 资源集群

多个it资源实例分为一组

可用性、负载均衡能力、性能

8.9 多设备代理

需要创建映射逻辑来改变运行时交换的信息

使得云服务能够被更广泛的云服务用户程序和设备所使用

8.10 状态管理数据库

把状态数据卸载到数据库中

替代状态数据缓存在内存中的一种方法,用以降低程序占用的运行时的内存量

可扩展性

九、云管理机制

9.1 远程管理系统

制向外部云资源管理者提供工具和用户界面来配置并管理基于云的IT资源

能够建立一个入口以便访问各种底层系统的控制与管理功能

9.2 资源管理系统

帮助协调IT资源,以便相应云用户和云提供者执行的管理操作

核心是VIM

9.3 SLA管理系统

包含一系列商品化的云管理产品,提供SLA数据的管理、收集、存储、报告等功能

包含一个库,用于存储和检索被收集的基于预定义指标和报告参数的SLA数据

9.4 计费管理系统

用于收集和处理使用数据,用于计费和收费

十、云安全机制

加密

哈希

数字签名

PKI

身份与访问管理:认证、授权、用户管理、证书管理

单一登录SSO:使得一个云服务用户能够被一个安全代理认证并建立起一个安全上下文

10.7 基于云的安全组

云资源分割:为不同用户和组创建各自的物理和虚拟IT环境的过程,是虚拟化的基础

10.8 强化的虚拟服务器映像

对镜像进行安全配置:剥离不必要软件、关闭冗余程序等等

云计算基础

三、理解云计算

云计算的定义:一种分布式计算的特殊形式

数据(软件+平台+基础设施)服务

云使能技术

3.2 基本概念和术语

云:远程供给可扩展和可测量资源

it资源

云提供者:提供基于云的IT资源

云用户:使用基于云的IT资源

可扩展性:IT资源可以处理增加或减少的使用需求的能力

云服务:任何可以通过云远程访问的IT资源

云服务用户:访问云服务的软件程序

四、基本概念与模型

4.1 角色与边界

云计算的优势

风险

云提供者、云用户

云服务拥有者:拥有云服务的个人或者组织

云资源管理者:负责管理基于云的IT资源(包括云服务)的人或者组织

组织边界:一个物理范围,是一个组织拥有和管理的IT资源的集合

信任边界:一个逻辑范围,表明IT资源受信任的程度

4.2 云特性

随处访问、按需使用、可测量的使用、弹性、可恢复性、多租户

多租户:共享软件和实例

可恢复性:通过资源复制和故障转移

4.3 云交付模型

IaaS:由以基础设施为中心的IT资源组成,虚拟化技术和资源动态管理技术

PaaS:预先定义好的“就绪可用”的环境

SaaS:把软件程序定位成共享的云服务,呈现技术和多租户技术

4.4 云部署模型

公有云:是第三方所有的,通常向云用户组织提供商业化的云服务和IT资源

社区云

私有云:是仅被一家组织所拥有的,并且位于该组织的范围之内

混合云

五、云使能技术

5.1 宽带网络和Internet架构

宽带网络

5.2 数据中心技术

数据中心网络架构

胖树架构

微软网络架构VL2

Dcell

FiConn

BCube

网络管理SDN

部署

迁移:虚拟机操作系统复制

弹性能力:向上/下/内/外扩展

资源监控

资源调度技术:在线/离线

智能运维

5.3 虚拟化技术

虚拟机:将物理IT资源转换为虚拟IT资源的过程

寄生、裸金属架构

下面4种虚拟化技术:

  1. 硬件仿真:寄生
  2. 全虚拟化:最常见
  3. 半虚拟化:裸金属,性能最好
  4. 硬件辅助虚拟化:性能好

cpu虚拟化:核心问题是特权/敏感指令执行

内存虚拟化:影子页表、扩展页表

io虚拟化

容器

namespace进程视图

cgroups隔离进程的物理资源

rootfs容器镜像

网络虚拟化

桥接:交换机

NAT:路由器

存储虚拟化

5.4 Web技术

5.5 多租户技术

多租户技术

5.6 服务技术

面向服务架构SOA:将应用程序的不同功能单元(称为服务)通过接口和契约联系起来

restful

消息队列

微服务架构

无服务器架构

FaaS和BaaS

番外 大数据处理

云计算数据处理架构

分布式文件系统

hdfs

分布式数据库

NoSQL:非关系型数据库管理系统

MapReduce

六、基本云安全

保密性、完整性、真实性、可用性

流量窃听

恶意媒介

拒绝服务

授权不足

虚拟化攻击

信任边界重叠

WordCount

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static class doMapper extends Mapper<Object, Text, Text, IntWritable>{  
//第一个Object表示输入key的类型;第二个Text表示输入value的类型
//第三个Text表示表示输出键的类型;第四个IntWritable表示输出值的类型
public static final IntWritable one = new IntWritable(1);
public static Text word = new Text();
@Override
protected void map(Object key, Text value, Context context) throws IOException,InterruptedException
//抛出异常
{
StringTokenizer tokenizer = new StringTokenizer(value.toString(),"\t");
//StringTokenizer是Java工具包中的一个类,用于将字符串进行拆分
word.set(tokenizer.nextToken());
//返回当前位置到下一个分隔符之间的字符串
context.write(word, one);
//将word存到容器中,记一个数
}
}

public static class doReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
//参数同Map一样,依次表示是输入键类型,输入值类型,输出键类型,输出值类型
private IntWritable result = new IntWritable();
@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable value : values) {
sum += value.get();
}
//for循环遍历,将得到的values值累加
result.set(sum);
context.write(key, result);
}
}

样卷例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;

public class Test {
/*
* MapReduceBase类:实现Mapper和Reducer接口的基类
* Mapper接口:
* WritableComparable接口:实现WritableComparable的类可以相互比较。所有被用作key的类要实现此接口。
*/
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
/*
*LongWritable,IntWritable,Text是Hadoop中实现的用于封装Java数据类型的类,这些类实现了WritableComparable接口,
*都能够被串行化,便于在分布式环境中进行数据交换,可以视为long,int,String数据类型的替代。
*/
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();//Text实现了BinaryComparable类,可以作为key值

/*
* Mapper接口中的map方法:
* void map(K1 key, V1 value, OutputCollector<K2,V2> output, Reporter reporter)
* 映射一个单个的输入<K1,V1>对到一个中间输出<K2,V2>对
* 中间输出对不需要和输入对是相同的类型,输入对可以映射到0个或多个输出对。
* OutputCollector接口:收集Mapper和Reducer输出的<K,V>对。
* OutputCollector接口的collect(k, v)方法:增加一个(k,v)对到output
* Reporter 用于报告整个应用的运行进度
*/

public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
//每一行包括课程号、课程名称、学号、学生姓名、成绩(百分制),数据项由空格隔开。
String string = value.toString();
//按行分割
String[] strings = string.split("\n");
for (int i = 0; i < strings.length; i++) {
//以空格分割
String[] data = strings[i].split(" ");
//数组第5个元素是成绩
double score = Double.parseDouble(data[4]);
//以成绩进行分割
if (score < 60) {
k.set("不及格");
v.set(1);
} else if (score >= 60 && score < 70) {
k.set("一般");
v.set(1);
} else if (score >= 70 && score < 80) {
k.set("中等");
v.set(1);
} else if (score >= 80 && score < 90) {
k.set("良好");
v.set(1);
} else if (score >= 90) {
k.set("优秀");
v.set(1);
}
//生成key value键值对
context.write(k, v);
}
}

public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();

/*
* reduce过程是对输入键值对洗牌(Shuffing)形成<K2,list(V2)>格式数据(仅以test1.txt为例):
* (优秀[1,1,1,1...])
* 作为reduce的输入
*/
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int count = 0;
//遍历values
for (IntWritable v : values) {
int value = v.get();
count += value;
}
//汇总每个分数段的人数(求和)
context.write(key, new IntWritable(count));
}
}
public static void main(String[] args) throws Exception {
// 1 获取配置信息以及封装任务
Configuration configuration = new Configuration();
Job job = Job.getInstance(configuration);
// 2 设置jar加载路径
job.setJarByClass(RatingDemo.class);
// 3 设置map和reduce类
job.setMapperClass(MyMap.class);
job.setReducerClass(MyReduce.class);
// 4 设置map输出
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
// 5 设置最终输出kv类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
// 6 设置输入和输出路径
Path input = new Path("/input/report.txt");
FileInputFormat.addInputPath(job, input);
Path output = new Path("/output/result");
//判断output文件夹是否存在,如果存在则删除
if (output.getFileSystem(configuration).exists(output)) {
output.getFileSystem(configuration).delete(output);
}
FileOutputFormat.setOutputPath(job, output);
//等待计算完成
boolean completion = job.waitForCompletion(true);
if (completion) {
System.out.println("计算成功!");
} else {
System.out.println("计算失败!");
}
}
}
}

利用MapReduce的一些特性可以实现排序、去重、求和等等操作

传统支付技术-知识点

信任构建

PKI概念

PKI解决的问题

PKI和数字签名的区别

数字证书

CA,RA概念

使用PKI认证的流程

CRL证书吊销

CA之间的认证

层级证书下的信任传递

交叉证书概念

支付技术

卡支付的过程

无卡支付概念

SET概念

信封模式、双签名

SET的交易过程

SET怎么处理隐私保护和双花问题

盲签名

RSA盲签名

部分RSA盲签名

电子现金交易步骤

ECC盲签名

NetCash现金格式,流通方式

电子支票概念

0%