区块链
中本聪2008年发表了《比特币:一种点对点式的电子现金系统》的论文。
以太坊是2013年开创的项目。
区块 账户 共识 智能合约
本质上是一种健壮和安全的分布式状态机,五项核心能力:
存储数据
共有数据
分布式
防篡改与隐私保护
数字化合约
三个方面可信:
数据可信
合约履行
历史可证明
目前典型的区块链账本设计为区块的单链表结构,只有增加没有减少,全局来说只有顺序处理,无法实现并行度。
目前涉及到的知识:分布式 存储 密码学 网络通讯 芯片技术 经济学 法律等。
应用场景
供应链领域
金融领域
政务及公共服务领域
其他领域: 保险防欺诈、大数据安全
原则 面向业务、标准化、松耦合与模块化、安全可审计、简洁与效率。
对 python的认识
1.上下文管理器
with open('data.txt') as source, open('target.txt') as target:
target.write(source.read())
上下文管理器协议 需要实现 __enter__(), __exit__()
2.装饰器
装饰器本质上就是一个函数,这个函数接收其他函数作为参数,并将其以一个新的修改后的函数进行替换。
import functools
import inspect
def check_is_admin(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
func_args = inspect.getcallargs(f, *args, **kwargs)
print func_args
if func_args.get('username') != 'admin':
raise Exception("This user is not allowed to get food")
return f(*args, **kwargs)
return wrapper
@check_is_admin
def get_food(username, food=’chocolate’):
return “{0} get food: {1}”.format(username, food)
def main():
print get_food(‘admin’)
if __name__ == '__main__':
main()
装饰器不必检查参数username是基于位置的参数还是基于关键字的参数,而只需在字典中查找即可。
def makebold(fn):
def wrapped():
return "<b>" + fn() + "</b>"
return wrapped
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped
@makebold
@makeitalic
def hello():
return "hello world"
print hello() ## returns <b><i>hello world</i></b>
3.全局变量
4.时间复杂度
list实质上是一个数组
使用链表的时候,应该用collection.deque 双向链表
set的实现是hash标,判断元素是否在某个集合中使用set,时间复杂度低。
5.python中的else
循环使用else 不建议
try…except 中else 建议加else