Author Topic: BTS2.0 代码底层类简谈.  (Read 3818 times)

0 Members and 1 Guest are viewing this topic.

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
telegram:ebit521
https://weibo.com/ebiter

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
唉!我是技术盲,以前写教程,都是看你们讨论,把讨论结果归纳起来,就成一篇文章了。现在你们很少集中讨论,我就跟不上了。顺便问一下,把vc++6.0的基础教程看几遍,能阅读懂bts的源代码么?
我不记得vc++6.0的基础教程里面有些什么了。你可以试试。估计有点困难。
BitShares committee member: abit
BitShares witness: in.abit

Offline agree

  • Sr. Member
  • ****
  • Posts: 225
    • View Profile
  • BitShares: agree
唉!我是技术盲,以前写教程,都是看你们讨论,把讨论结果归纳起来,就成一篇文章了。现在你们很少集中讨论,我就跟不上了。顺便问一下,把vc++6.0的基础教程看几遍,能阅读懂bts的源代码么?
bts id: agree

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
谢谢分享。

agree:你玩bts这么久还不知道代码是用什么写的?底层代码是C++,界面是reactjs
BitShares committee member: abit
BitShares witness: in.abit

Offline agree

  • Sr. Member
  • ****
  • Posts: 225
    • View Profile
  • BitShares: agree
我想知道代码是用什么语言写的,我只能看懂vb,别的都不懂。vb肯定写不了。
bts id: agree

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2881
  • 丑,实在是太丑了 !
    • View Profile
净土牛逼,我完全听不懂 +5% +5% +5%
MUSE witness:mygoodfriend     vote for me

Offline sudo

  • Hero Member
  • *****
  • Posts: 2255
    • View Profile
  • BitShares: ags

Offline BTSdac

  • Hero Member
  • *****
  • Posts: 1219
    • View Profile
  • BitShares: K1
最近几个朋友在问有关BTS代码的问题, 所以我把我最近看的东西简单整理一下.
BTS里有很多基础的类如raw ,static_variant ,reflect 都是放在fc库中,
而现在fc库基本没有任何技术介绍资料. 所以只有去看类的实现代码去了解用法,
raw: 包含两个关键的函数, pack 和unpack ,  每个函数分别有几十种模板特例, 根据函数重载和模板匹配规则, 编译系统在编译的时候就会生成模板实例,
pack:将变量数据(包含类)文件流化(变成二进制), 将数据压入sha256 离散函数的准备数据包中......
unpack: 将文件流(二进制)转换成变量数据(包含类),
在pack 和unpack 两个相反的过程中,如果被操作的数据不是变量而是类时,使用reflect将类展开, 并且分别对每个变量调用pack/unpack函数.  每个需要被pack和unpack 函数调用的对象需要实现重载 操作符<<  >>

static_variant  :
这个类和boost:variant 类 用途相同, 可以参考boost_variant 用法

reflect类
这个类包含了 多层的参数宏, 所以一个宏展开往往有几十行代码.  主要所用是用于raw:pack 和raw:unpack 两个函数展开类的.


« Last Edit: January 19, 2016, 01:00:39 pm by BTSdac »
github.com :pureland
BTS2.0 API :ws://139.196.37.179:8091
BTS2.0 API 数据源ws://139.196.37.179:8091