1. 前言

前面我们使用cleos完成过转账的功能,这篇文章我们尝试使用RPC API的方式进行转账。在测试网络/主网络转账EOS,在测试网络转账代币。

官方文档:https://github.com/EOSBlock/EOS-Tutorials/blob/master/EN/transfer-tokens-using-RPC.md

2. 大致流程

使用RPC API转账的流程如下:

  1. abi_json_to_bin 将转账信息由json格式序列化为bin格式字符串

  2. get_info 获取当前最新的区块编号

  3. get_block 根据区块编号获取区块详情

  4. get_required_keys(可省略) 传入当前拥有的公钥、bin字符串,区块等信息,筛选出签署交易需要的公钥

  5. sign_transaction 传入上面获取的相关参数,通过钱包中私钥对交易进行签署

  6. push_transaction 根据第五步获取的签名信息,将交易提交到区块链上

3. 详细流程

3.1 在测试网络转账EOS

3.1.1 查看余额

先查看两个交易账号的EOS余额:

api
http://jungle.cryptolions.io:18888/v1/chain/get_currency_balanceparams
{"code":"eosio.token", "account":"testnetyy111", "symbol":"eos"}
{"code":"eosio.token", "account":"testneths111", "symbol":"eos"}returntestnetyy111
["9641.6587 EOS"
]
testneths111
["0.0000 EOS"
]

3.1.2 将交易信息由JSON格式序列化为BIN格式字符串

testnetyy111100 EOS给testneths111

api
http://jungle.cryptolions.io:18888/v1/chain/abi_json_to_binparams
{"code":"eosio.token","action":"transfer","args":{"from":"testnetyy111","to":"testneths111","quantity":"100.0000 EOS", "memo":"hi there"}}return
{"binargs": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"
}

获取到binargs

3.1.3 获取当前最新的区块编号

api
http://jungle.cryptolions.io:18888/v1/chain/get_infoparams
无return
{"server_version": "cc9decff","chain_id": "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca","head_block_num": 13800828,"last_irreversible_block_num": 13800496,"last_irreversible_block_id": "00d29430d9809c633ddf3cc5c01613b58105394502e9846515c87274765c6d05","head_block_id": "00d2957ccb42d63c2d643c0a1b0b98da69c462b94a62ed434a0e565035bab90b","head_block_time": "2018-09-11T05:39:10.000","head_block_producer": "lioninjungle","virtual_block_cpu_limit": 200000000,"virtual_block_net_limit": 1048576000,"block_cpu_limit": 199900,"block_net_limit": 1048576,"server_version_string": "v1.2.4-dirty"
}

获取到head_block_num

3.1.4 根据区块编号获取区块详情

api
http://jungle.cryptolions.io:18888/v1/chain/get_blockparams
{"block_num_or_id":"13800828"}return
{"timestamp": "2018-09-11T05:39:10.000","producer": "lioninjungle","confirmed": 0,"previous": "00d2957b0e343f2ffa7640591ac1f27ed0ac89d2869e0a9c0576f065a31ee1cc","transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000","action_mroot": "22546c1e4c12d53a55c60d0ccb7196baa0afb05993612d2cf0591d7bf8fd8d34","schedule_version": 219,"new_producers": null,"header_extensions": [],"producer_signature": "SIG_K1_KXFvmHtXMnDhp8V7CpHuGoYch3whWorL2Fr7nArevzTmC2tXsKRXHCkHiF9myRpbbx3cTShba64jWveKATr49k3Bonp7aw","transactions": [],"block_extensions": [],"id": "00d2957ccb42d63c2d643c0a1b0b98da69c462b94a62ed434a0e565035bab90b","block_num": 13800828,"ref_block_prefix": 171729965
}

获取到timestamp 和ref_block_prefix

3.1.5 筛选出签署交易需要的公钥

钱包中可能有很多公钥存在,调用此方法可以筛选出完成此次交易需要的公钥。如果已明确应该使用的公钥,那可以省略此方法。

首先调用API打开并解锁钱包,然后获取所有的公钥。这部分内容在EOS开发(八)RPC API都有使用介绍。

参数说明:

  • available_keys 钱包中的公钥

  • account 合约名称。这里是转账EOS,使用的是eosio.token

  • actor 调用者。这里相当于转账方

  • permission 使用的权限类型

  • data 之前生成的bin字符串

  • name 调用的合约方法。这里调用的是转账方法transfer

  • expiration 过期时间。这里将timestamp加上了20分钟。可以根据需要来增加时长

  • ref_block_num 前面获取的最新区块号

  • ref_block_prefix 前面获取的ref_block_prefix

api
http://jungle.cryptolions.io:18888/v1/chain/get_required_keysparams
{"available_keys": ["EOS6cnhSLTn4eSUEqS4nC8frYTsVsjeH2M3hos1TUeCgme2Yim5Q5","EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc","EOS7RkP6aevKjN1CiKSqo44Gi1HhPYBczGFgSduBXBD7uHUFhg2qC","EOS7sGb8DfutGgpuMmnDhG1d2stVETfpkrHQ6HhVRJJaPXRqLay2E"],"transaction": {"actions": [{"account": "eosio.token","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265","name": "transfer"}],"context_free_actions": [],"context_free_data": [],"delay_sec": 0,"expiration": "2018-09-11T05:59:10.000","max_kcpu_usage": 0,"max_net_usage_words": 0,"ref_block_num": 13800828,"ref_block_prefix": 171729965,"signatures": []}
}return
{"required_keys": ["EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc"]
}

获取到实际需要的公钥EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc

3.1.6 签署交易

参数说明:

  • ref_block_num 前面获取的最新区块号

  • ref_block_prefix 前面获取的ref_block_prefix

  • expiration 过期时间。这里将timestamp加上了20分钟。可以根据需要来增加时长

  • account 合约名称。这里是转账EOS,使用的是eosio.token

  • name 调用的合约方法。这里调用的是转账方法transfer

  • actor 调用者。这里相当于转账方

  • permission 使用的权限类型

  • data 之前生成的bin字符串

  • EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc 签署此交易的公钥。实际上是由钱包中对应的私钥来签

  • 038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca 链id。注明当前处于主网/测试网/私有网络。这里显示的为测试网络

api
http://127.0.0.1:8888/v1/wallet/sign_transactionparams
[{"ref_block_num": 13800828,"ref_block_prefix": 171729965,"expiration": "2018-09-11T05:59:10.000","actions": [{"account": "eosio.token","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"}],"signatures": []},["EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc"], "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca"
]return
{"expiration": "2018-09-11T05:59:10","ref_block_num": 38268,"ref_block_prefix": 171729965,"max_net_usage_words": 0,"max_cpu_usage_ms": 0,"delay_sec": 0,"context_free_actions": [],"actions": [{"account": "eosio.token","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"}],"transaction_extensions": [],"signatures": ["SIG_K1_K9eDsXiqEMkJs8wPwEjiN6hL1h2Bm3gGQtUheidFczWNdBmDF24AUuPmiosi9CwtEW3jPFPao7HYWLJ63ic3TggjnoKtJF"],"context_free_data": []
}

获取到signatures

3.1.7 提交交易

参数说明:

  • expiration 过期时间。这里将timestamp加上了20分钟。可以根据需要来增加时长

  • ref_block_num 前面获取的最新区块号

  • ref_block_prefix 前面获取的ref_block_prefix

  • account 合约名称。这里是转账EOS,使用的是eosio.token

  • name 调用的合约方法。这里调用的是转账方法transfer

  • actor 调用者。这里相当于转账方

  • permission 使用的权限类型

  • data 之前生成的bin字符串

  • signatures 签署交易后生成的签名字符串

api
http://jungle.cryptolions.io:18888/v1/chain/push_transactionparams
{"compression": "none","transaction": {"expiration": "2018-09-11T05:59:10.000","ref_block_num": 13800828,"ref_block_prefix": 171729965,"context_free_actions": [],"actions": [{"account": "eosio.token","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"}],"transaction_extensions": []},"signatures": ["SIG_K1_K9eDsXiqEMkJs8wPwEjiN6hL1h2Bm3gGQtUheidFczWNdBmDF24AUuPmiosi9CwtEW3jPFPao7HYWLJ63ic3TggjnoKtJF"]
}return
{"transaction_id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc","processed": {"id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc","receipt": {"status": "executed","cpu_usage_us": 1537,"net_usage_words": 17},"elapsed": 1537,"net_usage": 136,"scheduled": false,"action_traces": [{"receipt": {"receiver": "eosio.token","act_digest": "45d232c72b5ca003627bc411ff9881286fd411239ceac528b98e6fb33a50919e","global_sequence": 32142292,"recv_sequence": 1716642,"auth_sequence": [["testnetyy111",37]],"code_sequence": 3,"abi_sequence": 3},"act": {"account": "eosio.token","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": {"from": "testnetyy111","to": "testneths111","quantity": "100.0000 EOS","memo": "hi there"},"hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"},"elapsed": 942,"cpu_usage": 0,"console": "","total_cpu_usage": 0,"trx_id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc","inline_traces": [{"receipt": {"receiver": "testnetyy111","act_digest": "45d232c72b5ca003627bc411ff9881286fd411239ceac528b98e6fb33a50919e","global_sequence": 32142293,"recv_sequence": 16,"auth_sequence": [["testnetyy111",38]],"code_sequence": 3,"abi_sequence": 3},"act": {"account": "eosio.token","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": {"from": "testnetyy111","to": "testneths111","quantity": "100.0000 EOS","memo": "hi there"},"hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"},"elapsed": 100,"cpu_usage": 0,"console": "","total_cpu_usage": 0,"trx_id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc","inline_traces": []},{"receipt": {"receiver": "testneths111","act_digest": "45d232c72b5ca003627bc411ff9881286fd411239ceac528b98e6fb33a50919e","global_sequence": 32142294,"recv_sequence": 7,"auth_sequence": [["testnetyy111",39]],"code_sequence": 3,"abi_sequence": 3},"act": {"account": "eosio.token","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": {"from": "testnetyy111","to": "testneths111","quantity": "100.0000 EOS","memo": "hi there"},"hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004454f5300000000086869207468657265"},"elapsed": 23,"cpu_usage": 0,"console": "","total_cpu_usage": 0,"trx_id": "4efb2687ef59c9a677da68264eb409d71aca66d7e3df4b35ee34f59e13783ffc","inline_traces": []}]}],"except": null}
}

3.1.8 查询转账完成后的余额

testnetyy111  "9541.6587 EOS"
testneths111  "100.0000 EOS"

3.2 在测试网络转账代币

3.2.1 先查询余额

api
http://jungle.cryptolions.io:18888/v1/chain/get_currency_balanceparams
{"code":"testnetyy111", "account":"testnetyy111", "symbol":"ray"}
{"code":"testnetyy111", "account":"testneths111", "symbol":"ray"}returntestnetyy111
["99999800.0000 RAY"
]
testneths111
["200.0000 RAY"
]

3.2.2 将交易信息由JSON格式序列化为BIN格式字符串

testnetyy111100 RAY给testneths111

api
http://jungle.cryptolions.io:18888/v1/chain/abi_json_to_binparams
{"code":"testnetyy111","action":"transfer","args":{"from":"testnetyy111","to":"testneths111","quantity":"100.0000 RAY", "memo":"hello there"}}return
{"binargs": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"
}

3.2.3 获取当前最新的区块编号

api
http://jungle.cryptolions.io:18888/v1/chain/get_infoparams
无return
{"server_version": "cc9decff","chain_id": "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca","head_block_num": 13807658,"last_irreversible_block_num": 13807329,"last_irreversible_block_id": "00d2aee1e209a3a21f0c1bf3a9b3b79322c27cb48353d9e28f17286b0daaa58b","head_block_id": "00d2b02afdedb3e0f487026946a7a56be8f331aecebb8b04faff03cf566a0fb6","head_block_time": "2018-09-11T06:36:50.000","head_block_producer": "astraealions","virtual_block_cpu_limit": 200000000,"virtual_block_net_limit": 1048576000,"block_cpu_limit": 199900,"block_net_limit": 1048576,"server_version_string": "v1.2.4-dirty"
}

3.2.4 根据区块编号获取区块详情

api
http://jungle.cryptolions.io:18888/v1/chain/get_blockparams
{"block_num_or_id":"13807658"}return
{"timestamp": "2018-09-11T06:36:50.000","producer": "astraealions","confirmed": 0,"previous": "00d2b029ac9a6eb269c6ea4f8bb3f2961d948f1f0ca3cd0cc4640ceadc95d37b","transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000","action_mroot": "0b1b4f510e0cdd272052fe0f3f9b1e74c7c6f83253409d943c3394eefbb7762e","schedule_version": 219,"new_producers": null,"header_extensions": [],"producer_signature": "SIG_K1_KZZ4giS7WxbSt3i6rcdZqgBWGzpE9XXq8A88kkSDDt9s8MbB2Vs1VEdMDoGYAeqTVUqX25xszU2cBwfHkbEvooPnZSm5FR","transactions": [],"block_extensions": [],"id": "00d2b02afdedb3e0f487026946a7a56be8f331aecebb8b04faff03cf566a0fb6","block_num": 13807658,"ref_block_prefix": 1761773556
}

3.2.5 筛选出签署交易需要的公钥

这里省略这一步了,因为我们明确知道需要的公钥为EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc

3.2.6 签署交易

这里的参数account变为testnetyy111,因为其是代币合约

api
http://127.0.0.1:8888/v1/wallet/sign_transactionparams
[{"ref_block_num": 13807658,"ref_block_prefix": 1761773556,"expiration": "2018-09-11T06:56:50.000","actions": [{"account": "testnetyy111","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"}],"signatures": []},["EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc"], "038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca"
]return
{"expiration": "2018-09-11T06:56:50","ref_block_num": 45098,"ref_block_prefix": 1761773556,"max_net_usage_words": 0,"max_cpu_usage_ms": 0,"delay_sec": 0,"context_free_actions": [],"actions": [{"account": "testnetyy111","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"}],"transaction_extensions": [],"signatures": ["SIG_K1_KXFAydwhD6u74pxQcTakiGCjtSuUw9PBsFb7ETxh1ULqjFkXqfyaoL34TkEmZi7iBTgUQZqUJRcVYYkrLWZxbVybRUArNX"],"context_free_data": []
}

3.2.7 提交交易

api
http://jungle.cryptolions.io:18888/v1/chain/push_transactionparams
{"compression": "none","transaction": {"expiration": "2018-09-11T06:56:50.000","ref_block_num": 13807658,"ref_block_prefix": 1761773556,"context_free_actions": [],"actions": [{"account": "testnetyy111","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"}],"transaction_extensions": []},"signatures": ["SIG_K1_KXFAydwhD6u74pxQcTakiGCjtSuUw9PBsFb7ETxh1ULqjFkXqfyaoL34TkEmZi7iBTgUQZqUJRcVYYkrLWZxbVybRUArNX"]
}return
{"transaction_id": "27c120548fee4e0ca31bc779ba85eb61ea4a2c5204043b696800d6cdb11da48b","processed": {"id": "27c120548fee4e0ca31bc779ba85eb61ea4a2c5204043b696800d6cdb11da48b","receipt": {"status": "executed","cpu_usage_us": 1176,"net_usage_words": 17},"elapsed": 1176,"net_usage": 136,"scheduled": false,"action_traces": [{"receipt": {"receiver": "testnetyy111","act_digest": "28d41460e20878bc412281b80c4d46ce174a4a48e8c7caf9ef28a13383e72d9e","global_sequence": 32149270,"recv_sequence": 17,"auth_sequence": [["testnetyy111",40]],"code_sequence": 1,"abi_sequence": 1},"act": {"account": "testnetyy111","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": {"from": "testnetyy111","to": "testneths111","quantity": "100.0000 RAY","memo": "hello there"},"hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"},"elapsed": 782,"cpu_usage": 0,"console": "","total_cpu_usage": 0,"trx_id": "27c120548fee4e0ca31bc779ba85eb61ea4a2c5204043b696800d6cdb11da48b","inline_traces": [{"receipt": {"receiver": "testneths111","act_digest": "28d41460e20878bc412281b80c4d46ce174a4a48e8c7caf9ef28a13383e72d9e","global_sequence": 32149271,"recv_sequence": 8,"auth_sequence": [["testnetyy111",41]],"code_sequence": 1,"abi_sequence": 1},"act": {"account": "testnetyy111","name": "transfer","authorization": [{"actor": "testnetyy111","permission": "active"}],"data": {"from": "testnetyy111","to": "testneths111","quantity": "100.0000 RAY","memo": "hello there"},"hex_data": "1042f03eab99b1ca1042c02dab99b1ca40420f000000000004524159000000000b68656c6c6f207468657265"},"elapsed": 14,"cpu_usage": 0,"console": "","total_cpu_usage": 0,"trx_id": "27c120548fee4e0ca31bc779ba85eb61ea4a2c5204043b696800d6cdb11da48b","inline_traces": []}]}],"except": null}
}

3.2.8 查询转账完成后的余额

testnetyy111 "99999700.0000 RAY"
testneths111 "300.0000 RAY"

转自:https://blog.csdn.net/akai9898/article/details/83447788

使用RPC的接口转账相关推荐

  1. 介绍一个用于EOS区块链的RPC API接口的PHP开发包SDK

    作为我们Block Producer对社区利益的承诺的一部分,我们希望专注于构建有助于提高EOS平台采用率的工具/应用程序.与大多数大型应用程序一样,当你只有少量或过时的文档并且缺乏工具来帮助你进行入 ...

  2. Java基础学习总结(168)——为什么推荐在RPC的接口中入参和出参都不要使用枚举

    前言: 为什么推荐在RPC的接口中入参和出参都不要使用枚举.最近,我们的线上环境出现了一个问题,线上代码在执行过程中抛出了一个IllegalArgumentException,分析堆栈后,发现最根本的 ...

  3. PHP 支付宝 “(单笔转账接口)转账到支付宝账号”

    目录 前言 一.服务层 二.控制层 1.控制层 2.接口返回参数实例 前言 单笔转账接口 | 网页&移动应用 准备: 1:应用的证书(证书申请和配置可以参考我另一篇分享"支付宝 '应 ...

  4. 【STP生成树】(桥ID、根桥、cost、RPC、接口ID、BPDU报文格式、端口选举举例)-20211216.20211217

    目录 一.生成树STP技术背景 1.前言 2.二层交换机的冗余性与环路 二.生成树协议 1.生成树协议​​ 2.生成树能动态感知网络拓扑的变化,调整阻塞或放行端口 生成树: 通过交互报文感知网络拓扑的 ...

  5. postman调用rpc服务器接口_RPC 原理

    RPC 是什么 (what) Remote Procedure Call,缩写为 RPC 远程过程调用 客户端和服务器端约定好一个接口 (eg: SOA api 里边的接口) 客户端调用接口的时候,去 ...

  6. 使用RPC的接口创建账户

    1.POST http://127.0.0.1:8888/v1/chain/abi_json_to_bin (序列化新建账号的 json) {"code": "eosio ...

  7. 阿里支付接口 转账 java 代码

    阿里支付接口的验证机制和普通接口不同,采用的是证书验证,使用支付宝开放平台助手 ---> 生成密钥获取csr文件 公司注意些支付对应的支付宝程序所在的公司的名称. 得到生成好的3个文件 放入对应 ...

  8. 为什么阿里巴巴RPC接口不允许使用枚举类型?

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:今天给大家推荐 6 个 Spring Boot 项目,拿来就可以赚钱! 个人原创100W+访问量博客:点击前往, ...

  9. 转账到支付宝账户接口常见问题

    1.单笔转账接口是否有异步通知? 新版单笔转账接口(alipay.fund.trans.uni.transfer)支持异步回调,可通过在应用网关设置异步地址进行接收,异步通知转账单据状态变更通知相关参 ...

最新文章

  1. OpenStack社区正式接受UnitedStack有云Steth项目
  2. 2021年春季学期-信号与系统-第九次作业参考答案-第四小题
  3. 动作捕捉技术,VR体验沉浸感的“助燃剂”
  4. linux nginx漏洞修复,nginx-1.14.1 和 nginx-1.15.6 发布,修复HTTP/2和MP4模块中的漏洞
  5. Java IO流之缓冲流
  6. 二级c语言无纸化三合一_学习攻略|计算机二级考试重点及注意事项
  7. 分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0
  8. linux脚本算术函数,Linux基础之bash脚本编程初级-变量与算术运算
  9. Mysql中SQL语句不使用索引的情况
  10. springboot 的 RedisTemplate 的 execute 和 executePipelined 功能的区别redis
  11. 假如啤酒只有七天生命
  12. docker宿主机访问容器_干货来啦!带你初探Docker逃逸
  13. 核心单词Word List 5
  14. 四、初识python编程-程序结构(课时11-13)
  15. 名编辑电子杂志大师教程 | 仿古书翻页
  16. 处理WIN7任务栏通知区域图标异常问题
  17. Linux下输出大字、艺术字--figlet
  18. php zend optimizer,【原创】ZendOptimizer 的安装
  19. windows10驱动 x64--- 驱动实现遍历VAD树(六)
  20. 开源项目之饭否 for Android

热门文章

  1. 前缀表达式(波兰表达式)介绍及其代码实现(Java)
  2. SETP7 Basic V11 SP1
  3. 伺服控制-canopen
  4. matlab基础与应用——常用命令整理
  5. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅③简单入门安信可TB-02开发开发板轻松接入天猫精灵,语音控制冷暖灯so easy!
  6. 【OpenCV】透视变换 仿射变换
  7. 远程无法访问syn服务器,ping回显请求超时time out故障处理过程
  8. vuecli添加和移除插件_7 款优秀 Vim 插件帮你打造完美 IDE!
  9. 《笨方法学 Python 3》42.对象、类及从属关系
  10. 思考免费OA系统能否满足企业管理需求