基于go的云服务器记录

Posted by xnchen on March 31, 2021

[TOC]

Abstract


仓库地址:

github

时间记录


0331

  • 在responseClient方法中
    • 2.read image from client 原代码中是只检查输入图像文件。逻辑如下:
      • 如果有则给客户端发送1,默认输出图像存在并输出。
    • 这种流程有点奇怪。改为:
      • 检查输入图像文件,如果有则给客户端发送1,停止客户端的输入图像传送;
      • 如果没有则发给客户端发送0,表示正常流程,继续传送。
      • 接着检查输出文件,如果有则直接发送给客户端。
      • 如果没有则继续处理,并发送结果给客户端。

0401

  • 需要确认从安卓端发来的到底是什么格式的。目前默认go的[]byte格式都是自动编码

细节问题


  • Defer的使用规范
  • [错误示范]Go基于TCP协议的文件传输
  • Go基于socket的文件传输实际上不能参考网络blog!全是错的。以↑为例就是错的
    • 请看github.com/kyokoning/go_server/server中的写法
  • go-simplejson的文档简单索引
  • Goland的调试功能
    • 使用Goland
    • 安装go调试工具dlvgo get github.com/go-delve/delve/cmd/dlv
    • 在服务器{server_project}/cmd输入``dlv debug –headless –listen=:6464 –api-version=2`
    • goland的configuration:go remote里面设置host和port,运行即可
  • 私有库无法使用sublime merge的问题

如何使用GO运行Pytorch的模型


  1. Pytorch生成ONNX
  2. 在Linux上装GO
  3. 装GO版TensorFlow
    • 先安装C版TensorFlow: 官方文档
      • 不要用官方文档里的库,由于我们使用的Go版TF的fork版本对应问题(TF-2.3.1和c版2.4.0不能对应),我们下载fork repository里面列出的matching libs的C library(2.3.1)
      • 又因为该C library需要cuda10.1,又去下了个cuda10.1,只下载toolkit其它不用安装。
      • GO版TensorFlow只支持把C版TF安装在/usr/local中。
      • (下面都是因为没有把GOtensorflow安装在/usr/local导致的问题,不用看了)下面的不用看了 离谱。记得把/usr/local/lib更新到LD_LIBRARY_PATH和LIBRARY_PATH变量中
      • 成功安装
    • 安装GO版TF
      • 你妈的 官方文档就是傻逼
      • 用go.mod的replace方法,把官方的包替换成别人fock的包,然后用go mod tidy自己安装
      • 参考该问题下@mrene的回复
      • 自动安装好之后还是没有办法用官方案例,说是could not determine kind of name of C.TF_StringDecode/C.TF_StringEncode/C.TF_StringEncodeSize。我相信这是因为版本更新……