golang
文章平均质量分 64
秋之秋
也就普通的码农一个,专专心心干份小工作,拿份小工资,平时话不多,长相一般,性格温和,耐心值高,单身求撩。
爱好:游戏,电影,散步,不太爱运动。
展开
-
基于有道API的命令行词典(golang版)
Godict本项目地址近期一直再使用golang语言开发一些工具,相关的后端技术链(golang+orm+postgresql+gin+jwt+logrus)和对应前端的技术链(vue+iview+axios+vue-router)基本已经打通了,项目地址。但是想到除了这一套前后端的东西外,命令行的一些操作也是不可避免的。因此就找到了cobra这个应用广泛的第三方命令行库,并借这个小项目练一下...原创 2020-02-02 13:48:31 · 1788 阅读 · 0 评论 -
一个TCP长连接设备管理后台工程(八)---TCP服务器整合
TCP服务器前面的所有内容都是为了实现一个基于jtt808协议的TCP服务器而做的工作,我们现在需要吧上面讲解的内容整合起来,让各个模块协调工作,完成一整套的服务流程。配置加载先说一下配置加载,对于一个应用程序,为了增加其灵活性,不可避免的需要使用配置文件。综合个方面考虑,我选择使用toml格式的配置文件,解析库使用"github.com/BurntSushi/toml"# config...原创 2020-02-02 13:35:45 · 515 阅读 · 0 评论 -
一个TCP长连接设备管理后台工程(七)---数据库操作
数据库操作数据库部分我使用postgresql,为了简化上层调用,我又使用了xorm。库导入import ( "github.com/go-xorm/xorm" _ "github.com/lib/pq")创建一个全局引擎指针var engine *xorm.Engine定义一个初始化函数,用来初始化数据库相关的一些内容:func xormInit(driverName s...原创 2020-02-02 13:33:46 · 288 阅读 · 0 评论 -
一个TCP长连接设备管理后台工程(六)---封包器与处理器
封包器上面介绍了过滤器,过滤器实际就是一个能够处理粘包和拆包的解析器,和封包器的作用正好相反。但是封包器会很简单,因为封包没有粘包和拆包的处理。代码如下://Packer is proto Packer apifunc Packer(msg Message) []byte { data := make([]byte, 0) tempbytes := codec.Word2Bytes(m...原创 2020-02-02 13:31:43 · 355 阅读 · 0 评论 -
一个TCP长连接设备管理后台工程(五)---帧过滤器
帧过滤器帧过滤器的作用就是,从接收到的buff中,过滤出有效的完整jtt808数据包。由于是tcp通讯,那么这其中不可避免的会涉及到数据包的两个常规处理:拆包和粘包。拆包和粘包的简要说明:假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下4种情况。(1)服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包;(2)...原创 2020-02-02 13:29:08 · 388 阅读 · 0 评论 -
一个TCP长连接设备管理后台工程(四)---jtt808协议解析
协议解析从前面内容我们可以发现,808协议是一个很典型的协议格式:固定字段+变长字段其中固定字段用来检测一个帧格式的完整性和有效性,所以一般会包含一下内容:帧头+变长字段对应的长度+校验。由于这一段的数据格式固定,目的单一,所以处理起来比较简单。变长字段的长度是由固定字段终端某一个子字段的值决定的,而且这部分的格式比较多变,需要灵活处理。这一字段我们通常称为Body或者Apdu。我们首...原创 2020-02-02 13:26:10 · 2026 阅读 · 0 评论 -
一个TCP长连接设备管理后台工程(三)---TCP应用层协议说明
TCP协议整合JTT808协议前面简单说明了基于golang的net库进行TCP通讯。现在我们需要将现有的协议整合进去。行业内车辆终端一般都是对接交通部的JTT808协议,此处我们要实现的是JTT808-2019版本。消息结构标识位消息头消息体校验码标识位0x7e0x7e标识位应采用0x7e表示,若校验码、消息头以及消息体中出现0x7e及0x7d,则要...原创 2020-02-02 13:18:50 · 585 阅读 · 1 评论 -
一个TCP长连接设备管理后台工程(二)---后端模型
后端模型终端ATCPServer终端B终端CPostgresqlHTTPServerClientAClientBClientC后端需要设计两个服务器,一个TCP,一个HTTP。TCP主要处理与终端的长连接交互,一个TCP连接对应一台终端设备,终端设备唯一标识使用IMEI。HTTP处理与前端的交互,前端需要获取所有可用的终端设备列表,向指定的终端发送命令。所以,为了方便从ip找到对应终端,然后从...原创 2020-02-02 13:13:36 · 364 阅读 · 0 评论 -
一个TCP长连接设备管理后台工程(一)---概述
一个TCP长连接设备管理后台工程(一)概述这个项目最初只是用来进行一个简单的协议测试用的,而且是一个纯粹的后端命令行工程。只是后面想着只有命令行,操作也不太方便,于是便有了添加一个ui的想法。golang项目要配ui,最佳的还是配一个前端界面。而我本人并非前端出生,js功底太差,所以就想着用vue了。而且作为一个技术人员,ui界面设计也比较差,所以就打算找一个现成的ui框架来用,尝试了ant...原创 2020-02-02 13:10:14 · 941 阅读 · 0 评论 -
Golang学习笔记一:go安装配置
安装要点环境变量:golang的环境变量一般只用设置两个即可:GOROOT和GOPATH - GOROOT是golang软件安装位置的根目录,比如/usr/bin,这个环境变量一般会有一个默认值,如果没有修改默认的安装路径,那么一般可以不用管这个变量。当然,如果GOROOT/bin如果不再path中的话,还是要添加以下的。 - GOPATH这个是针对go的工作空间而言的,位置可以随...原创 2018-08-18 11:52:32 · 276 阅读 · 0 评论