知行合一

致良知


  • 首页

  • 归档

  • 站点地图

区块链概况

发表于 2018-04-17 |

区块链的一些概念

区块链三要素

  • 共享帐本
  • 共识算法
    1. 工作量证明机制(PoW,Proof of Work)
    2. 股权证明机制(PoS,Proof of Stake)
    3. 委托股权证明机制(DPos,Delegated Proof of Stake)
    4. 瑞波共识机制(Ripple Consensus)
    5. 实用拜占庭容错算法(Practical Byzantine Fault Tolerance)
    6. 恒星共识协议(Stellar Consensus Protocol)
  • P2P网络

区块链类型

  • 公有链
  • 私有链
  • 联盟链

区块链应用方式

  • 密码学货币(Crypto Currency)
  • 分布式账本(DTL,Distributed Ledger Technology)
  • 智能合约(Smart Contract)

第一代区块链技术

  • bitcoin(比特币)– 推荐
    • 功能:密码学货币、几乎没有智能合约
    • 类型:公有链
    • 共识算法:工作量证明机制
    • 开发语言:c++
    • 状态:目前应用度高、扩展性差

第二代区块链技术

  • bitshares(比特股)
    • 开发者:BM
    • 功能:分布式账本,受限的智-能合约
    • 类型:主要是公有链
    • 共识算法:委托授权的权益证明机制
    • 开发语言:c++
    • 状态:没有形成核心团队
  • ripple(瑞波币)
    • 功能:分布式账本,目前不支持智能合约
    • 类型:主要是公有链
    • 共识机制:瑞波共识机制
    • 开发语言:c++
    • 状态:致力于与银行合作
  • HyperLedger(超级账本)
    • 功能:分布式账本、智能合约
    • 类型:主要是联盟链
    • 共识机制:实用拜占庭容错算法
    • 开发语言:go、python
    • 状态:致力于与金融行业
  • ethereum(以太坊)– 推荐
    • 开发者:V神
    • 功能:分布式账本、智能合约
    • 类型:主要是公有链
    • 共识算法:工作量证明机制,以后改成权益证明机制
    • 开发语言:go
    • 状态:目前应用度高、有明确规划
      • myetherwallet 钱包:https://www.myetherwallet.com
      • eth交易历史查询:https://etherscan.io/

第三代区块链技术

  • EOS – 推荐
    • 开发者:BM
    • 类型:公有链
    • 共识算法:DPOS,百万TPS
    • 特点:
      • 可以跨链、角色权限管理
      • 交易免费、EOS代币保值(DAPP的计算资源由其拥有的EOS代币量决定)
      • 开发dapp简易
    • 状态
      • 目前还没有开发完成,但已在以太坊发币
      • EOS官网:http://eos.io
      • EOS代币发行历史查看:http://eoschart.com/?lang=zh
    • 购买方式
      1. 在加密货币平台上,如OTCBTC上用支付宝购买一些ETH,100rmb左右
      2. 使用chrome浏览器,安装MetaMask,并注册帐号
      3. 将从OTCBTC平台上购买的货币转移到MetaMask帐号
      4. 在EOS官网众筹EOS币,到第二天取出EOS币,并转移到MetaMask帐号
  • IOTA
  • Cardano

Mongodb学习总结

发表于 2018-04-03 |

官方文档

https://www.mongodb.com/

http://docs.mongoing.com/index.html

http://www.mongodb.org.cn/

mongo的安装

1. 下载社区版本 https://www.mongodb.com/download-center?jmp=navcommunity
2. 安装目录下有哪些程序
程序 说明 使用说明
mongo mongo客户端 默认连接local:27017 用–help查看帮助
mongod mongo服务器 要先建立dbpath才能启动,可以用命令行创建,也可以根据服务器的配置来创建(一般配置systemLog和stroage:dbPath,使用yaml格式)。用mongod –install(-f configpath)在windows下注册成服务
mongodump 数据库备份 mongodump -h dbhost -d dbname -o dbdirectory
mongorestore 数据库恢复 mongorestore -h <:port> -d dbname
mongoexport 集合备份 mongoexport -d test -c students -o students.dat
mongoimport 集合恢复 mongoimport -d test -c students students.dat
mongofiles 存取文件 mongofiles put E:xxx.data/mongofiles get E:xxx.data
mongooplog oplog重放 mongooplog –port 20001 -u* –authenticationDatabase=admin –from=172.16.201.73:27017
mongoperf 独立检查mongoDB的I/O性能工具
mongos 集群工具
mongostat 状态监控工具
mongotop 性能监控工具

shell命令

操作类型 命令 说明
增 insert
删 remove
查 find 更加复杂的有条件查询:比较查询操作符,逻辑查询操作符,元素查询操作符,评价查询查询操作,Geospatia查询操作符,数组查询操作符,位查询操作符
改 update 字段更新操作符,数组更新操作符,位更新操作符
聚合 group查询操作符,管道聚合阶段
大类 说明
Collection https://docs.mongodb.com/manual/reference/method/#collection
Replication …
Cursor …
Sharding …
Database …
Subprocess …
Query Plan Cache …
Constructors …
Bulk Write Operation …
Connection …
User Management …
Native …
Role Management …

理论学习(基本概念)

  1. 基本类型

    对应bjson的格式

类型 类型 编号
Double 双精度 1
String 字符串 2
Object 对象 3
Array 数组 4
Binary data 二进制对象 5
Object id 对象id 7
Boolean 布尔值 8
Date 日期 9
Null 未定义 10
Regular Expression 正则表达式 11
JavaScript JavaScript代码 13
Symbol 符号 14
JavaScript (with scope) JavaScript代码(带范围) 15
32-bit integer 32 位整数 16
Timestamp 时间戳 17
64-bit integer 64 位整数 18
Min key 最小键 255
Max key 最大键 127
  1. 文档:是mongodb中数据的基本单元(类似于关系数据库的行,但比行要复杂),多个键及其关联的值放在一起就是文档。mongodb文件存储格式为bjson。

    • 示例{“firstName”:”egger”,”lastName”:”wong”}
    • 文档中的健/值是有序的
    • 文档中的值不仅可以是在双引号里的字符串,还可以是其他的类型,包括文档
    • mongodb区分类型和大小写
    • mongodb的文档不能有重复的键
    • 文档的键是字符串,除了少数情况,键可以使用任意的utf-8字符
      • 键不能含有\0,这个表示键的结束
      • .和$有特别的意义,只能在特定的环境下使用
      • 以下划线”_”开头的键是保留的(非严格要求)
    • 每个文档都有一个objectid,由客户端驱动生成,由”_id”表示

      ObjectId占用12字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串。由“时间戳” 、“机器名”、“PID号”和“计数器”组成。使用机器名的好处是在分布式环境中能够避免单点计数的性能瓶颈。使用PID号的好处是支持同一机器内运行多个mongod实例。最终采用时间戳和计数器的组合来保证唯一性

      • 时间戳 4个字节。从标准纪元开始,单位为秒
      • 机器名  3个字节。所在主机的唯一标识符。通常是机器主机名的散列值,机器名通过Md5加密后取前三个字节
      • PID  2个字节。为了确保在同一台机器上并发的多个进程产生的Objectld是唯一的,所以加上进程标识符(PID).注意到每次重启mongod进程后PID号通常会发生变化就可以了
      • 计数器  3个字节,表示的取值范围就是256256256=16777216。一个自动增加的计数器,确保相同进程同一秒产生的Obj ectld也是不一样的同一秒钟最多允许每个进程拥有2563 (16 777 216)不同的Objectld
0 1 2 3 4 5 6 7 8 9 10 11
时间戳 机器名 PID 计数器
  1. 集合:指一组文档(类似于关系数据库的表),可以看成没有模式的表

    • 集合是无模式的,文档的格式可以不一样。如{“name”:”egger”},{“age”:18}可以在一个集合中。一般来说,这种情况还是推荐改成多个集合
      • 把各种各样的模式的文档混在一起,对开发和维护都会产生麻烦
      • 在几个查询速度上会折损
      • 创建索引的时候,会附加结构,尤其是唯一索引,模式一样会更加高效
    • 命名,用utf-8字符串来表示集合,有下列要求
      • 集合名不能有空字符串
      • 集合名不能含有\0,这个表示集合名的结束
      • 集合名不能以”system.”开头,这个是为系统集合保留的前缀
      • 用户创建的集合名不能呢个含有保留字符
    • 子集合

      组织集合的一种惯例是使用”.”字符分开的按命名空间划分的子集合。在MongoDB中使用子集合来组织数据是很好的方法。

      例如,一个个人信息可能包含两个集合,分别是person.name和person.age。这样做的目的只是为了使组织结构更好些,也就是说person这个集合(这里根本就不需要存在)及其子集合没有任何关系。把数据库的名字放到集合名前面,得到就是集合的完全限定名,称为命名空间。命名空间的长度不得超过121字节,在实际使用当中应该小于100字节。

      很多MongoDB工具中都包含子集合。

      • GridFS是一种存储大文件的协议,使用子集合来存储文件的元数据,这样就与内容块分开了
      • MongoDB的Web控制台通过子集合的方式将数据组织在DBTOP部分.
      • 绝大多数驱动程序都提供语法糖,为访问指定集合的子集合提供方便。
  2. 数据库

    MongoDB中多个集合可以组成一个数据库。mongodb的单个实例可以容纳多个独立的数据库,每个都有自己的集合和权限,不同的数据库放在不同的文件中。

    数据库也通过名字来标识。为满足以下条件的utf-8字符串

    • 不能是空字符串
    • 不得含有’ ‘(空格)、.、$、/、\和\0 (空宇符)
    • 应全部小写
    • 最多64个字节

      有一些数据库名是保留的,可以直接访问这些特殊作用的数据库

    • admin

      从权限的角度来看,这是“root”数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。

    • local

      这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合

    • config

      当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

客户端驱动

待补充

实现原理

http://shift-alt-ctrl.iteye.com/blog/2255580

工具

待补充
1…34

Lucus Gu

32 日志
2 标签
RSS
© 2017 — 2019 Lucus Gu
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4