ubuntu定时任务 gPRC SHA256加密算法
ubuntu设置cron定时执行任务
https://blog.csdn.net/leisurelen/article/details/106015948
GNU nano使用保存退出的说明
https://blog.csdn.net/weixin_44166997/article/details/93216783
rtsp
https://www.cnblogs.com/haibindev/p/7918733.html
gRPC
Remote Procedure Call 的缩写,中文译为远程过程调用(也可译为远程方法调用或远程调用),它是计算机通信协议,该协议可以实现调用远程服务就像调用本地服务一样简单,无需关心跨网络,跨平台,跨语言等问题。
gRPC 是通信协议基于 HTTP/2,支持多语言的 RPC 框架,使用 Protobuf 作为它的接口设计语言(IDL),可以通过 protoc 工具生成 Golang 语言的结构体,服务端接口和客户端 Stub。
gRPC 消息序列化方式通常使用 Protobuf,它是二进制格式,体积小,网络传输快,占用带宽流量少,调用性能更高,但是可读性差。不过,gRPC 也支持 JSON 序列化方式。
grpc 是 google 开源的 rpc 框架,使用 grpc 可以方便开发 rpc service;protobuf 是一种接口设计语言(IDL),grpc 框架使用的 IDL 是 protobuf。
编码流程归纳如下:
- 搭建 Golang 开发环境。
- 安装 protobuf 编译器 protoc 和插件
protoc-gen-go
、protoc-gen-go-grpc
,设置环境变量。 - 初始化项目
go mod init
。 - 编写 protobuf,生成 pb 文件,执行
go mod tidy
整理依赖包。 - 编写剩余 Golang 代码。
字符串拼接
https://www.cnblogs.com/mambakb/p/10352138.html
//方式1
s1 := "字符串"
s2 := "拼接"
s3 := s1 + s2
fmt.Print(s3) //s3 = "打印字符串"
//方式2 neuron常用
s3 := fmt.Sprintf("%s%s", s1, s2) //s3 = "打印字符串"
//方式3
var str []string = []string{serveIp, strconv.FormatInt(tcpPort,10)}
ipandPort := strings.Join(str, ":")
//方式4
func firmwarePackAccept(serveIp, fileName string, tcpPort int) string {
// 建立TCP监听
// ipandPort := fmt.Sprintf("%s:%d", serveIp, tcpPort)
var bt bytes.Buffer
bt.WriteString(serveIp)
bt.WriteString(":")
bt.WriteString(strconv.Itoa(tcpPort))
return bt.String()
}
//方式5
func firmwarePackAccept(serveIp, fileName string, tcpPort int) string {
// 建立TCP监听
// ipandPort := fmt.Sprintf("%s:%d", serveIp, tcpPort)
var build strings.Builder
build.WriteString(serveIp)
build.WriteString(":")
build.WriteString(strconv.Itoa(tcpPort))
return build.String()
}
Go之int整数与string字符串相互转换
https://blog.csdn.net/weixin_34185560/article/details/91438265
1.int整数转字符串
1.1fmt.Sprintf
1.2strconv.Itoa
1.3strconv.FormatInt
2.字符串转int整数
2.1strconv.Atoi
2.2strconv.ParseInt
TCP文件传输
https://www.cnblogs.com/yang-2018/p/11147418.html
filepath.Join() 指定绝对文件路径
HWID(Hardware Identification ) :硬件识别码
// firmwarePackAccept Tcp接收升级包文件
func firmwarePackAccept(serveIp, fileName string, tcpPort int) bool {
// 建立TCP监听
// ipandPort := fmt.Sprintf("%s:%d", serveIp, tcpPort)
var ipandPort strings.Builder
ipandPort.WriteString(serveIp)
ipandPort.WriteString(":")
ipandPort.WriteString(strconv.Itoa(tcpPort))
tcpListen, err := net.Listen("tcp", ipandPort.String())
if err != nil {
log.Error("Tcp listen failed,err:", err)
return false
}
defer tcpListen.Close()
// 获取升级包数据
conn, err := tcpListen.Accept()
if err != nil {
log.Error("Tcp connect failed,err:", err)
return false
}
defer conn.Close() // 关闭连接
//创建文件
f, err := os.Create(env.UpgradeFile)
if err != nil {
log.Error(err)
return false
}
defer f.Close()
for {
// 读取TCP client数据
buf := make([]byte, 2048)
n, err := conn.Read(buf)
if err != nil {
if err == io.EOF {
break
}
log.Error("read from client failed, err:", err)
return false
}
// 写入到文件
f.Write(buf[:n])
}
return true
}
组播
组播:在私有协议基础上添加Udp 组播发现功能,即设备监听某组播中消息,收到固定指令时,向另一组播中,发送自己的基础信息(包括设备ip ,端口号,Mac地址,设备别名),从而实现主动发现功能。
SN(Serial Number)是序列号,PN(Part Number)是设备序号(零件号、出厂的扫描码)。
SHA256加密算法
https://blog.csdn.net/u011583927/article/details/80905740/
SHA256是SHA-2下细分出的一种算法
SHA-2,名称来自于安全散列算法2(英语:Secure Hash Algorithm 2)的缩写,一种密码散列函数算法标准,由美国国家安全局研发,属于SHA算法之一,是SHA-1的后继者。
回到SHA256上,说白了,它就是一个哈希函数。
哈希函数,又称散列算法,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(或哈希值)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。
比特币就用的SHA256。
//md5加密
func Md5(src string) string {
m := md5.New()
m.Write([]byte(src))
res := hex.EncodeToString(m.Sum(nil))
return res
}
//Sha256加密
func Sha256Encipher(b []byte) string {
s:=sha256.New()
s.Write(b)
rst:=hex.EncodeToString(s.Sum(nil))
return rst
}
AES128加密
PTZ
P---Pan,中文含义为水平,代表云台水平方向移动控制;
T---Tilt,中文含义为垂直,代表云台垂直方向移动控制;
Z---Zoom,中文含义是焦距,代表镜头变焦控制。
聚集索引
聚集索引:叶结点包含了完整的数据记录。
回表
GM和GMP
钩子函数
500 504
https://blog.csdn.net/andong154564667/article/details/81062518
500(Internal Server Error):服务器遇到一个妨碍它为请求提供服务的错误。
501(Not Implemented):客户端发起的请求超出服务器的能力范围。
502(Bad Gateway):作为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应。
503(Service Unavailable):说明服务器现在无法为请求提供服务,将来可以。
504(Gateway Timeout):与408相似。
505(HTTP Version Not Support):服务器收到的请求使用了它无法或不愿意支持的协议版本。
100~199 100~101 信息提示
200~299 200~206 成功
300~399 300~305 重定向
400~499 400~415 客户端错误
500~599 500~505 服务器错误
重启和断电重启
RS-485串行总线标准
夏时令
继电器
(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
电机
电机(英文:Electric machinery,俗称“马达”)是指依据电磁感应定律实现电能转换或传递的一种电磁装置。
电机在电路中是用字母M(旧标准用D)表示,它的主要作用是产生驱动转矩,作为用电器或各种机械的动力源,发电机在电路中用字母G表示,它的主要作用是利用机械能转化为电能。
MSB/LSB码
https://blog.csdn.net/lx123010/article/details/103657114
1、LSB的意思是:全称为Least Significant Bit,在二进制数中意为最低有效位,一般来说,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。
2、MSB的意思是:全称为Most Significant Bit,在二进制数中属于最高有效位,MSB是最高加权位,与十进制数字中最左边的一位类似。
MSB(Most Significant Bit),意为最高有效位。若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。
镜像分层复用
https://www.cnblogs.com/CCTVCHCH/p/15125775.html
软件开发流程
- 数据库设计说明
- 需求评审记录
- 功能清单矩阵
- 开发手册
- 测试用例评审记录
开发板和单片机的区别
单片机只是一个芯片,要外加 一些外围电路才能实现常用的功能。
单片机开发板就是单片机主芯片加上一些常用电子器件而组成的电路板,方便初学者学习和实验上面常用的外设有LED灯、6个或8个数码管,独立按键,矩阵按钮,液晶显示屏等。
僵尸进程
云台开发流程
- 协议解耦PELCOD 和PELCOP
- 串口解耦 232 485 422
- 结构体,函数名
- 结构体,函数名代码评审
- 代码编写
串口
控制PTZ摄像机通过RS232串口直接或通过RS485,RS422,USB端口转换器。
- RS232串口通信 串行数据传输的一种形式,标准的9针DB9电缆(还有25针),双向传输
对二进制0使用正电压,二进制1使用负电压
缺点:只能连接一个设备,最远距离是50英尺(14.24米),最高传输速率20kbps,参考地来解析数据,抗干扰能力较弱 - RS485串行通信方式 可控制一个设备,还可以在一条通信总线上连接多个设备
RS485接口是半双工通信模式,即发送端发过去的控制命令,只管发出去,不管你收不收得到,停止命令往往发1,2条,同一时刻只能发送或接收
通常采用DB9接口,差分信号来解析数据,用A,B,2根线来传输差分信号,A接口DATA+,B接口DATA-
优点:最多可以连接32台设备,采用差分传输方式,传输距离1200米以上,不易受到电磁干扰影响 - RS422 规定采用4线,全双工,差分传输,多线通信的数据传输协议
采用平衡传输,单向/非可逆,有使能端或没有使能端的传输线
与rs485不同的是,不允许出现多个发送端而只能有多个接收端,
硬件构成上EIA-422相当于两组EIA-485,即两个半双工的EIA-485构成
主控发出去命令,接收端收到命令返回SCK命令给主控,叫回答命令,告知发送端我已收到命令,不用再发了 - USB 通用串行总线,外部总线标准,用于规范电脑与外部设备的连接和通讯
优点:传输快,使用方便,支持热插拔 - POE供电 (Power Over Ethernet)以太网供电,在现有的意外网Cat.5布线基础架构不做任何改动的情况下,在为一些基于IP的终端传输数据信号的同时,还能为此类设备提供直流供电技术。
Ubuntu20.04 定时关机
#晚上九点定时关机
00 21 * * * root /sbin/shutdown -h now