首页 文章 精选 留言 我的

精选列表

搜索[开发者接入],共10002篇文章
优秀的个人博客,低调大师

Fizz Gateway网关接入gRPC指南

#前提条件 Fizz网关v1.5.0或以上版本 (安装教程(opens new window)) gRPC服务 本文使用的gRPC服务样例:https://github.com/wehotel/fizz-examples/tree/master/fizz-example-grpc(opens new window) 本文后面使用的接口为findById, 接口会回显入参的ID和返回name字段,JSON如下: { "name": "call findById", "id": "入参ID" } #服务和接口维护 把gRPC服务实例和接口集中维护,方便在服务编排里多次调用。因网关是通过泛化调用gRPC接口,所以gRPC服务本身需启用反射功能,请参考样例: server = ServerBuilder.forPort(port) .addService(new UserService()) .addService(new ShoppingCartService()) // 开启gRPC反射 .addService(ProtoReflectionService.newInstance()) .build(); 进入Fizz管理后台, 打开RPC管理 -> 服务管理, 点击新增填写服务名和实例等信息,多个实例用逗号分隔,网关会轮询调用。 打开RPC管理 -> 接口管理, 点击新增把你需要的接口录入到系统,没有用到的接口可以不录入 #服务编排调用gRPC接口 打开服务编排 -> 接口列表,新增一个接口, 选择所属服务(如:func-test), 如果还没有服务可点击右边的新增服务按钮添加, 接口路径为/grpc/user/findById, 如图: 选择前面步骤录入的grpc接口, 并设置grpc接口入参,采用引用值引用服务编排接口的Query参数, 关于参数的配置可参考文档:(服务编排-数据转换(opens new window)) 配置服务编排接口的输出: 保存接口 #配置路由 打开网关管理 -> 路由管理, 点击新增配置以下路由 #测试 回到服务编排的接口,点击测试. 填写Query参数id=666, 服务编排接口是透传了gRPC服务的findById的数据,得到以下结果: #发布 服务编排接口需要发布才可以对外提供服务,打开编排审核 -> 我的申请,新增一个发布申请,为了方便操作选择超级管理员为审核人 打开待审核列表,审核上一步的单子: 打开我的申请,点击申请单的查看操作: 发布接口: #访问正式接口 访问http://[网关IP]:8600/proxy/func-test/grpc/user/findById?id=666 结果:

优秀的个人博客,低调大师

Bytom矿池接入协议指南

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 矿机配置 https://gist.github.com/HAOYUatHZ/a47400bde4a138825faef415387b532c 固件升级 https://service.bitmain.com.cn/support 两个都要刷,先后顺序没关系 update_1000.tar.gz 升级时间较长,升级期间请勿断电 配置节点 测试时可以考虑切换到 testnet 分支降低难度使cpu挖矿也能出块,./bytomd init --chain_id testnet 或 ./bytomd init --chain_id solonet init/node 初始化/启动时可以加上 -r "your/directory" 指定数据目录,若目录不存在则会自动新建该目录 流程 1、初始化节点先建个账户、地址,不然就挖到空地址 2、矿地址支持自定义,包括 非本地钱包地址 3、API doc 4、矿池向节点 getwork get-work 得到的 block_header 是动态压缩变长的需要进行解析 使用 golang 的话可以利用 "github.com/bytom/protocol/bc/types" 中 block_header.go 中的函数 UnmarshalText 使用别的语言的话参考 "github.com/bytom/protocol/bc/types" 中 block.go 中的函数 UnmarshalText, readFrom, ReadVarintXXX. ReadVarintXXX 需要参考 go函数 binary.ReadUvarint 5、解析完后进行下发 通信格式参考 https://github.com/Bytom/B3-Mimic/blob/master/docs/STRATUM-BTM.md - 收到任务有 login 和 矿池主动下发, 没走 getjob, 只走 login 和 池主动下发 - 这俩都是用 submit 提交 逻辑参考 https://github.com/Bytom/B3-Mimic/blob/master/main.go - Version, Height, Timestamp, Bits 要转小端 - 关于 target + btc.com 分享了一段 antpool 的代码 ~, 并说 target 用以对 bits 对应的 difficulty 放松难度,用来使矿机在单位时间内能够有提交,然后矿池再验证~ var Diff1 = StringToBig("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF") func GetTargetHex(diff int64) string { padded := make([]byte, 32) diffBuff := new(big.Int).Div(Diff1, big.NewInt(diff)).Bytes() copy(padded[32-len(diffBuff):], diffBuff) buff := padded[0:4] targetHex := hex.EncodeToString(Reverse(buff)) return targetHex } 矿池下发的targethex是拿 标准难度(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) / 一个难度值得出的 这个值叫做矿池难度 一般会动态调整 保证矿机提交 share 的频率是稳定的 比如1分钟提交三次 提交得快了就会增加这个值 慢了就会降低这个值 target 是 16 进制的难度,1, 1024, …..等等,和前导 0 的个数有关,动态调整用来保证矿机每分钟至少提交三次,用来计算矿机算力以及防止矿机算力作弊 ffff3f00 对应 1024,c5a70000 对应 100001 6、提交完之后矿池需要做验证 header_hash 使用 golang 的话可以利用 "github.com/bytom/protocol/bc/types" 中 types.BlockHeader{} 的 Hash() 使用别的语言的话参考 https://github.com/Bytom/B3-Mimic/blob/master/docs/blhr_hash_V3.go 然后就要开始用 tensority 算 hash 结果 很遗憾现在 go 版本、cpp_openblas 版本、cpp_simd 版本都达不到理想的验证效果, 如果想做一个可用的矿池目前有必要上 gpu, 可以考虑 n 卡 1050,或者阿里云服务器 P4 cpp 的 tensority 逻辑在这里,并指出了如何针对 gpu 进行优化的建议,这样矩阵乘法能够跑进 2.5 ms, 整个 tensority 大概 6 ms init matlist 有开销,seed 其实 256 个区块才改变一次, 遇到新的 seed 每次 gpu tensority 可能需要 100 ms,但做了 cache 的话 init matlist 可以忽略,可以认为每次 tensority 只需要不超过 6 ms 用 golang 可以 cgo 调用 c 代码,参考 https://github.com/Bytom/bytom/blob/dev-ts-simd/mining/tensority/algorithm.go 改好 gpu 版本后可以参照这个进行调用 7、验证通过后使用 submit-work 接口进行提交 提交的结果 也是 BlockHeader type 的 使用 golang 的话可以利用 "github.com/bytom/protocol/bc/types" 中 block_header.go 中的函数 MmarshalText 使用别的语言的话参考 "github.com/bytom/protocol/bc/types" 中 block.go 中的函数 MarshalText, WriteTo, WriteVarintXXX. WriteVarintXXX 需要参考 go函数 binary.PutUvarint 8、retarget 见上面,动态调整使矿机每分钟提交三次 9、收益计算 略 批量转账 主网地址 bm 开头,长度普通地址42,多签62 工具 https://github.com/Bytom/bytom/tree/master/tools/sendbulktx 每次发币都会生成新的找零地址 bytom input有21个的限制

优秀的个人博客,低调大师

docker registry接入ceph Swift API

ceph存储操作 创建用户 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 (ceph-rgw)[root@ceph-node01/] #radosgw-adminusercreate--uid=registry--display-name="registry" { "user_id" : "registry" , "display_name" : "registry" , "email" : "" , "suspended" :0, "max_buckets" :1000, "auid" :0, "subusers" :[], "keys" :[ { "user" : "registry" , "access_key" : "3JHGH0WDQO5LG2HTF6UX" , "secret_key" : "jt8KzI8XUagl2KTX0XkdFTP39mkcD9774ql4ZbDp" } ], "swift_keys" :[], "caps" :[], "op_mask" : "read,write,delete" , "default_placement" : "" , "placement_tags" :[], "bucket_quota" :{ "enabled" : false , "max_size_kb" :-1, "max_objects" :-1 }, "user_quota" :{ "enabled" : false , "max_size_kb" :-1, "max_objects" :-1 }, "temp_url_keys" :[] } 创建swift用户 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 (ceph-rgw)[root@ceph-node01/] #radosgw-adminsubusercreate--uid=registry--subuser=registry:swift--access=full { "user_id" : "registry" , "display_name" : "registry" , "email" : "" , "suspended" :0, "max_buckets" :1000, "auid" :0, "subusers" :[ { "id" : "registry:swift" , "permissions" : "full-control" } ], "keys" :[ { "user" : "registry" , "access_key" : "3JHGH0WDQO5LG2HTF6UX" , "secret_key" : "jt8KzI8XUagl2KTX0XkdFTP39mkcD9774ql4ZbDp" } ], "swift_keys" :[ { "user" : "registry:swift" , "secret_key" : "dfRwo00KoOTw3IJJJCrRpFqIinaEFSEvxCuBxXa5" } ], "caps" :[], "op_mask" : "read,write,delete" , "default_placement" : "" , "placement_tags" :[], "bucket_quota" :{ "enabled" : false , "max_size_kb" :-1, "max_objects" :-1 }, "user_quota" :{ "enabled" : false , "max_size_kb" :-1, "max_objects" :-1 }, "temp_url_keys" :[] } 配置registry访问 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 storage: swift: authurl:http: //192 .168.48.213:6780 /auth/v1 username:registry:swift password:dfRwo00KoOTw3IJJJCrRpFqIinaEFSEvxCuBxXa5 container:registry cache: layerinfo:inmemory maintenance: uploadpurging: enabled: false delete: enable : true health: storagedriver: enabled: true interval:10s threshold:3 据java接口可知必要参数为:username,password,authurl http://docs.ceph.com/docs/master/radosgw/swift/java/ 测试验证 1 2 3 4 5 6 7 8 9 [root@gx-yun-084069~] #dockerpushpaas/golang:1.6.2 Thepushreferstoarepository[registry.vclound.com /paas/golang ] d966b83f8000:Pushed 6fe25112314d:Pushed 4d8ac510a6fe:Pushing[===================>]126.2MB /318 .1MB 5aee74d2e9d0:Pushing[=========================>]68.6MB /134 .4MB 338cb8e0e9ed:Pushing[=========================>]67.77MB /131 .2MB d1c800db26c7:Pushed 42755cf4ee95:Pushing[==============================>]75.38MB /125 .1MB 查看ceph是否已上有golang 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 (ceph-rgw)[root@ceph-node01/] #radoslspools rbd .rgw.root default.rgw.control default.rgw.data.root default.rgw.gc default.rgw.log volumes default.rgw. users .uid default.rgw. users .keys default.rgw.meta default.rgw. users .email default.rgw. users .swift default.rgw.buckets.index default.rgw.buckets.data (ceph-rgw)[root@ceph-node01/] #rados--pooldefault.rgw.buckets.datals|grepgolang 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_manifests/tags/1 .6.2 /current/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_uploads/32bfc9f1-d07f-4def-8fc7-3fd4099e2607/startedat 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/0ffc1204e0abead91aa6678abffa44739455c7b95b96b108eefc2f29d6001fdf/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/ab30c63719b10dd434ddbe896879bd9b637fe4e16749a94d3dc827450dc2a437/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_uploads/5e016d36-55dc-41c9-945d-85c18399723e/startedat 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/d8a921df8ce9d2b00d139bc78f0a2036f1960204281570d5794ad0e0c9f32ceb/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_uploads/377a0560-0beb-4f2d-87c2-2173bfa15e3f/data 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/b0850b14d0d144ceecb975d0b296d7630c5c8658054535164c8a5ea55a3fa627/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_manifests/tags/1 .6.2 /index/sha256/3b746975638c2640b41de2f6669fb4a6d24d5c218c008b359d21148a580b2178/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_uploads/32bfc9f1-d07f-4def-8fc7-3fd4099e2607/data 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_uploads/5e016d36-55dc-41c9-945d-85c18399723e/data 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_uploads/d51b6005-d7d2-4981-ad27-284914e21159/startedat 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_manifests/revisions/sha256/3b746975638c2640b41de2f6669fb4a6d24d5c218c008b359d21148a580b2178/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_uploads/377a0560-0beb-4f2d-87c2-2173bfa15e3f/startedat 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/c6072700a24252bd71f6c5d2cabf5978ddf324a959b05bad417d8b3789f8df33/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/d34bc98c277053d749016539968fbde53f0e095713988ccc780505b9c3d37187/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_manifests/revisions/sha256/3b746975638c2640b41de2f6669fb4a6d24d5c218c008b359d21148a580b2178/signatures/sha256/134a8ac27aa47d9ef953be3968d2c899cb1ed8efd7a3e4ce066abeba2c8a3b98/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_uploads/d51b6005-d7d2-4981-ad27-284914e21159/data 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/8ecba0e9bd481f27b172d1a0ff04269981946aa1aaa91da3b2f41380031ed865/link 208d0ff3-767d-4edc-ac3f-fb55689374cb.44103.1_files /docker/registry/v2/repositories/paas/golang/_layers/sha256/5c90d4a2d1a8dfffd05ff2dd659923f0ca2d843b5e45d030e17abbcd06a11b5b/link pull镜像 1 2 3 4 5 6 7 8 9 10 11 [root@gx-yun-084069~] #dockerpullpaas/golang:1.6.2 Tryingtopullrepositoryregistry.vclound.com /paas/golang ... 1.6.2:Pullingfromregistry.vclound.com /paas/golang 5c90d4a2d1a8:Alreadyexists ab30c63719b1:Alreadyexists c6072700a242:Alreadyexists 0ffc1204e0ab:Alreadyexists d8a921df8ce9:Alreadyexists d34bc98c2770:Alreadyexists Digest:sha256:3b746975638c2640b41de2f6669fb4a6d24d5c218c008b359d21148a580b2178 Status:Downloadednewerimage for registry.vclound.com /paas/golang :1.6.2 本文转自 qwjhq 51CTO博客,原文链接:http://blog.51cto.com/bingdian/1893658

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册