iface

package
v0.0.0-...-9ab2669 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2019 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 包iface定义ipfs核心api,这是一组用于 与IPFS节点交互。

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrIsDir   = errors.New("this dag node is a directory")
	ErrNotFile = errors.New("this dag node is not a regular file")
	ErrOffline = errors.New("this action must be run in online mode, try running 'ipfs daemon' first")
)
View Source
var (
	ErrNotConnected = errors.New("not connected")
	ErrConnNotFound = errors.New("conn not found")
)
View Source
var ErrResolveFailed = errors.New("could not resolve name")

Functions

This section is empty.

Types

type AddEvent

type AddEvent struct {
	Name  string
	Path  ResolvedPath `json:",omitempty"`
	Bytes int64        `json:",omitempty"`
	Size  string       `json:",omitempty"`
}

type BadPinNode

type BadPinNode interface {
	//路径是节点的路径
	Path() ResolvedPath

	//err是将节点标记为坏节点的原因
	Err() error
}

bad pin node是一个被pin标记为坏的节点。请验证

type BlockAPI

type BlockAPI interface {
	//Put导入原始块数据,使用指定的设置对其进行哈希处理。
	Put(context.Context, io.Reader, ...options.BlockPutOption) (BlockStat, error)

	//获取解析路径的尝试并返回块中数据的读卡器
	Get(context.Context, Path) (io.Reader, error)

	//RM从本地BlockStore中删除由路径指定的块。
	//默认情况下,如果在本地找不到块,将返回错误。
	//
	//注意:如果固定了指定的块,它将不会被删除,也不会出错。
	//将被退回
	Rm(context.Context, Path, ...options.BlockRmOption) error

	//stat返回信息
	Stat(context.Context, Path) (BlockStat, error)
}

blockapi指定块层的接口

type BlockStat

type BlockStat interface {
	//大小是块的大小
	Size() int

	//path返回块的路径
	Path() ResolvedPath
}

blockstat包含有关块的信息

type ChangeType

type ChangeType int

ChangeType表示ObjectChange中的更改类型

const (
	//将链接添加到图表时设置diffAdd
	DiffAdd ChangeType = iota

	//从图表中删除链接时设置diffremove
	DiffRemove

	//在图表中更改链接时设置diffmod
	DiffMod
)

type ConnectionInfo

type ConnectionInfo interface {
	//id返回peerid
	ID() peer.ID

	//地址返回与对等机连接的多地址
	Address() ma.Multiaddr

	//方向返回建立连接的方式
	Direction() net.Direction

	//延迟向对等端返回上次已知的往返时间
	Latency() (time.Duration, error)

	//流返回与对等方建立的流的列表
	Streams() ([]protocol.ID, error)
}

ConnectionInfo包含有关对等机的信息

type CoreAPI

type CoreAPI interface {
	//unixfs返回unixfs API的实现
	Unixfs() UnixfsAPI

	//block返回block api的实现
	Block() BlockAPI

	//DAG返回DAG API的实现
	Dag() DagAPI

	//name返回name api的实现
	Name() NameAPI

	//key返回key api的实现
	Key() KeyAPI

	//pin返回pin api的实现
	Pin() PinAPI

	//object api返回对象api的实现
	Object() ObjectAPI

	//DHT返回DHT API的实现
	Dht() DhtAPI

	//Swarm返回Swarm API的实现
	Swarm() SwarmAPI

	//pubsub返回pubsub API的实现
	PubSub() PubSubAPI

	//resolvepath使用unixfs resolver解析路径
	ResolvePath(context.Context, Path) (ResolvedPath, error)

	//resolvenode使用unixfs解析路径(如果尚未解析)
	//解析程序,获取并返回解析的节点
	ResolveNode(context.Context, Path) (ipld.Node, error)

	//WITHOPTIONS基于此实例创建coreapi的新实例
	//应用的一组选项
	WithOptions(...options.ApiOption) (CoreAPI, error)
}

coreapi为go程序定义到ipfs的统一接口

type DagAPI

type DagAPI interface {
	DagOps

	//获取解析和获取由路径指定的节点的尝试
	Get(ctx context.Context, path Path) (ipld.Node, error)

	//树返回由路径指定的节点内的路径列表。
	Tree(ctx context.Context, path Path, opts ...options.DagTreeOption) ([]Path, error)

	//批量创建新的dagbatch
	Batch(ctx context.Context) DagBatch
}

dagapi指定到ipld的接口

type DagBatch

type DagBatch interface {
	DagOps

	//提交将节点提交到数据存储并向网络公布它们
	Commit(ctx context.Context) error
}

dagbatch是dagapi的批处理版本。dagbatch的所有实现 应该是螺纹安全的

type DagOps

type DagOps interface {
	//使用指定的格式和输入编码放置插入数据。
	//除非与withcodec或withhash一起使用,否则默认值为“dag cbor”和
	//使用“sha256”。
	Put(ctx context.Context, src io.Reader, opts ...options.DagPutOption) (ResolvedPath, error)
}

DAGOPS对可以一起批处理的操作进行分组

type DhtAPI

type DhtAPI interface {
	//findpeer查询DHT中与
	//对等体ID
	FindPeer(context.Context, peer.ID) (pstore.PeerInfo, error)

	//findproviders在DHT中查找能够提供特定值的对等方
	//给出了一个键。
	FindProviders(context.Context, Path, ...options.DhtFindProvidersOption) (<-chan pstore.PeerInfo, error)

	//向网络宣布您正在提供给定值
	Provide(context.Context, Path, ...options.DhtProvideOption) error
}

DHTAPI指定DHT的接口 注意:此API在不久的将来可能会被弃用,请参阅 https://github.com/ipfs/interface-ipfs-core/issues/249了解更多上下文。

type IpnsEntry

type IpnsEntry interface {
	//name返回ipnsentry名称
	Name() string
	//值返回ipnsentry值
	Value() Path
}

ipnsentry指定ipnsentries的接口

type IpnsResult

type IpnsResult struct {
	Path
	Err error
}

type Key

type Key interface {
	//键返回键名称
	Name() string

	//路径返回键路径
	Path() Path

	//id返回密钥peerid
	ID() peer.ID
}

key指定keyapi keystore中键的接口

type KeyAPI

type KeyAPI interface {
	//生成生成新密钥,并将其存储在指定的密钥库中
	//名称并返回其公钥的base58编码多哈希
	Generate(ctx context.Context, name string, opts ...options.KeyGenerateOption) (Key, error)

	//重命名将oldname键重命名为newname。返回键以及是否另一个键
	//密钥被覆盖,或出现错误
	Rename(ctx context.Context, oldName string, newName string, opts ...options.KeyRenameOption) (Key, bool, error)

	//列表列出存储在密钥库中的密钥
	List(ctx context.Context) ([]Key, error)

	//self返回“main”节点键
	Self(ctx context.Context) (Key, error)

	//移除从密钥库中移除密钥。返回已删除密钥的IPN路径
	Remove(ctx context.Context, name string) (Key, error)
}

keyapi指定到keystore的接口

type NameAPI

type NameAPI interface {
	//发布宣布新的IPN名称
	Publish(ctx context.Context, path Path, opts ...options.NamePublishOption) (IpnsEntry, error)

	//解析尝试解析指定名称的最新版本
	Resolve(ctx context.Context, name string, opts ...options.NameResolveOption) (Path, error)

	//搜索是解析的一个版本,它在发现路径时输出路径,
	//缩短第一次进入的时间
	//
	//注意:默认情况下,从通道读取的所有路径都被认为是不安全的,
	//除了最新的(通道读取缓冲区中的最后一个路径)。
	Search(ctx context.Context, name string, opts ...options.NameResolveOption) (<-chan IpnsResult, error)
}

nameapi指定IPN的接口。

IPN是一个pki命名空间,其中名称是公钥的散列值,并且 私钥允许发布新的(签名的)值。在发布和 解析,使用的默认名称是节点自己的peerID,它是 它的公钥。

可以使用.key API列出并生成更多名称及其各自的键。

type ObjectAPI

type ObjectAPI interface {
	//新建创建新的空(默认情况下)DAG节点。
	New(context.Context, ...options.ObjectNewOption) (ipld.Node, error)

	//将导入的数据放入Merkledag
	Put(context.Context, io.Reader, ...options.ObjectPutOption) (ResolvedPath, error)

	//get返回路径的节点
	Get(context.Context, Path) (ipld.Node, error)

	//数据返回节点数据的读卡器
	Data(context.Context, Path) (io.Reader, error)

	//链接返回lint或节点包含的链接
	Links(context.Context, Path) ([]*ipld.Link, error)

	//stat返回有关节点的信息
	Stat(context.Context, Path) (*ObjectStat, error)

	//addlink在指定路径下添加链接。子路径可以指向
	//必须存在的专利中的子目录(可以重写
	//使用WITHCREATE选项)。
	AddLink(ctx context.Context, base Path, name string, child Path, opts ...options.ObjectAddLinkOption) (ResolvedPath, error)

	//rmlink从节点中删除链接
	RmLink(ctx context.Context, base Path, link string) (ResolvedPath, error)

	//AppendData将数据追加到节点
	AppendData(context.Context, Path, io.Reader) (ResolvedPath, error)

	//setdata设置节点中包含的数据
	SetData(context.Context, Path, io.Reader) (ResolvedPath, error)

	//diff返回将第一个对象转换为
	//第二。
	Diff(context.Context, Path, Path) ([]ObjectChange, error)
}

objectapi指定merkledag的接口并包含有用的实用程序 用于操作Merkledag数据结构。

type ObjectChange

type ObjectChange struct {
	//更改类型,可以是:
	//*diffadd-添加了一个链接
	//*diffremove-删除了一个链接
	//*diffmod-修改了链接
	Type ChangeType

	//更改链接的路径
	Path string

	//在更改前保持链接路径。注意,当一个链接
	//加上,这将是零。
	Before ResolvedPath

	//更改后保持链接路径。注意,当一个链接
	//删除后,将为零。
	After ResolvedPath
}

ObjectChange表示图形中的更改

type ObjectStat

type ObjectStat struct {
	//cid是节点的cid
	Cid cid.Cid

	//numlinks是节点包含的链接数
	NumLinks int

	//BlockSize是原始序列化节点的大小
	BlockSize int

	//linksize是链接块节的大小
	LinksSize int

	//data size是数据块节的大小
	DataSize int

	//累积大小是树的大小(块大小+链接大小)
	CumulativeSize int
}

ObjectStat提供有关DAG节点的信息

type Path

type Path interface {
	//字符串以字符串形式返回路径。
	String() string

	//命名空间返回路径的第一个组件。
	//
	//例如,path“/ipfs/qmhash”,调用namespace()将返回“ipfs”
	Namespace() string

	//如果保证此路径指向的数据
	//不要改变。
	//
	//请注意,解析的可变路径可以是不可变的。
	Mutable() bool
}

路径是API中使用的路径的通用包装器。可以解析路径 使用API中的一个resolve函数传递给一个cid。

路径必须以有效前缀作为前缀:

*/ipfs-不可变的unixfs路径(文件) */ipld-不可变的ipld路径(数据) */ipns-可变名称。通常解析为不可变路径之一

func Join

func Join(base Path, a ...string) Path

将提供的段附加到基路径

func ParsePath

func ParsePath(p string) (Path, error)

parsePath将字符串路径解析为路径

type Pin

type Pin interface {
	//固定对象的路径
	Path() ResolvedPath

	//引脚类型
	Type() string
}

pin保存有关pinned资源的信息

type PinAPI

type PinAPI interface {
	//添加创建新的pin,默认为递归-固定整个引用的pin
	//树
	Add(context.Context, Path, ...options.PinAddOption) error

	//ls返回此节点上固定对象的列表
	Ls(context.Context, ...options.PinLsOption) ([]Pin, error)

	//rm删除由路径指定的对象的pin
	Rm(context.Context, Path) error

	//更新将一个管脚更改为另一个管脚,跳过对中匹配路径的检查
	//老树
	Update(ctx context.Context, from Path, to Path, opts ...options.PinUpdateOption) error

	//验证验证固定对象的完整性
	Verify(context.Context) (<-chan PinStatus, error)
}

pinapi指定Pining的接口

type PinStatus

type PinStatus interface {
	//OK指示是否已验证PIN正确。
	Ok() bool

	//bad nodes从pin返回任何坏(通常丢失)节点
	BadNodes() []BadPinNode
}

pinstatus保存有关pin运行状况的信息

type PubSubAPI

type PubSubAPI interface {
	//LS按名称列出订阅的主题
	Ls(context.Context) ([]string, error)

	//对等方列出我们当前发布的对等方
	Peers(context.Context, ...options.PubSubPeersOption) ([]peer.ID, error)

	//将消息发布到给定的pubsub主题
	Publish(context.Context, string, []byte) error

	//订阅给定主题的消息
	Subscribe(context.Context, string, ...options.PubSubSubscribeOption) (PubSubSubscription, error)
}

pubsubapi指定到pubsub的接口

type PubSubMessage

type PubSubMessage interface {
	//From返回消息到达的对等方的ID
	From() peer.ID

	//数据返回消息体
	Data() []byte

	//seq返回消息标识符
	Seq() []byte

	//主题返回此邮件设置为的主题列表
	Topics() []string
}

pubsub message是单个pubsub消息

type PubSubSubscription

type PubSubSubscription interface {
	io.Closer

	//下一步返回下一条传入消息
	Next(context.Context) (PubSubMessage, error)
}

pubsubscription是一个活动的pubsubscription

type ReadSeekCloser

type ReadSeekCloser interface {
	io.Reader
	io.Seeker
	io.Closer
	io.WriterTo
}

readseekCloser实现读取、复制、查找和关闭的接口。

type Reader

type Reader interface {
	ReadSeekCloser
	Size() uint64
	CtxReadFull(context.Context, []byte) (int, error)
}

type ResolvedPath

type ResolvedPath interface {
	//cid返回路径引用的节点的cid。剩余的
	//路径保证在节点内。
	//
	//实例:
	//如果有3个链接对象:qmroot->a->b:
	//
	//CIDB:=“foo”:“bar”:42
	//CIDA:=“B”:“/”:CIDB
	//cidroot:=“a”:“/”:cida
	//
	//并解析路径:
	//
	//*“/ipfs/$cidroot”
	//*调用cid()将返回'cidroot'
	//*调用root()将返回'cidroot'
	//*调用remains()将返回“
	//
	//*“/ipfs/$cidroot/a”
	//*调用cid()将返回“cida”
	//*调用root()将返回'cidroot'
	//*调用remains()将返回“
	//
	//*“/ipfs/$cidroot/a/b/foo”
	//*调用cid()将返回'cidb'
	//*调用root()将返回'cidroot'
	//*调用remains()将返回'foo'
	//
	//*“/ipfs/$cidroot/a/b/foo/bar”
	//*调用cid()将返回'cidb'
	//*调用root()将返回'cidroot'
	//*调用remains()将返回'foo/bar'
	Cid() cid.Cid

	//根返回路径根对象的cid
	//
	//例子:
	//如果有3个链接对象:qmroot->a->b,并解析路径
	//“/ipfs/qmroot/a/b”,根方法将返回对象qmroot的cid
	//
	//有关更多示例,请参见cid()方法的文档
	Root() cid.Cid

	//余数返回路径的未解析部分
	//
	//例子:
	//如果有两个链接对象:qmroot->a,其中a是cbor节点
	//包含以下数据:
	//
	//“foo”:“bar”:42_
	//
	//解析/ipld/qmroot/a/foo/bar时,余数返回“foo/bar”
	//
	//有关更多示例,请参见cid()方法的文档
	Remainder() string

	Path
}

resolved path是解析为最后一个可解析节点的路径

func IpfsPath

func IpfsPath(c cid.Cid) ResolvedPath

ipfs path从提供的cid创建新的/ipfs路径

func IpldPath

func IpldPath(c cid.Cid) ResolvedPath

ipld path从提供的cid创建新的/ipld路径

func NewResolvedPath

func NewResolvedPath(ipath ipfspath.Path, c cid.Cid, root cid.Cid, remainder string) ResolvedPath

NewResolvedPath创建新的ResolvedPath。此函数不执行任何检查 并被解析器实现使用。输入错误可能 引起恐慌。小心轻放。

type SwarmAPI

type SwarmAPI interface {
	//
	Connect(context.Context, pstore.PeerInfo) error

	//断开与给定地址的连接
	Disconnect(context.Context, ma.Multiaddr) error

	//peers返回我们连接到的对等机列表
	Peers(context.Context) ([]ConnectionInfo, error)

	//knownaddrs返回此节点知道的所有地址的列表
	KnownAddrs(context.Context) (map[peer.ID][]ma.Multiaddr, error)

	//localaddrs返回已宣布的侦听地址列表
	LocalAddrs(context.Context) ([]ma.Multiaddr, error)

	//listenaddrs返回所有侦听地址的列表
	ListenAddrs(context.Context) ([]ma.Multiaddr, error)
}

swarmapi指定libp2p swarm的接口

type UnixfsAPI

type UnixfsAPI interface {
	//添加将读卡器中的数据导入到merkledag文件中
	//
	//TODO:关于如何在许多不同的场景中使用它的一个长期有用的注释
	Add(context.Context, files.Node, ...options.UnixfsAddOption) (ResolvedPath, error)

	//get返回路径引用的文件树的只读句柄
	//
	//请注意,此API的某些实现可能应用指定的上下文
	//到对返回文件执行的操作
	Get(context.Context, Path) (files.Node, error)

	//ls返回目录中的链接列表
	Ls(context.Context, Path) ([]*ipld.Link, error)
}

unixfsapi是IPF中不可变文件的基本接口 注意:这个API是大量WIP,保证经常中断。

Directories

Path Synopsis
此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 此源码被清华学神尹成大魔王专业翻译分析并修改 尹成QQ77025077 尹成微信18510341407 尹成所在QQ群721929980 尹成邮箱 yinc13@mails.tsinghua.edu.cn 尹成毕业于清华大学,微软区块链领域全球最有价值专家 https://mvp.microsoft.com/zh-cn/PublicProfile/4033620

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL