自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 Gin v1.9.1启用HTTP2协议学习

随着golang版本的升级,新版的gin也进行了升级,下面学习一下如何使用新版gin框架并启用http2属性。Go 1.20 是一个重要的版本,引入了一些新功能和改进。改进了对 HTTP/2 的支持,包括更好的流控制和更好的服务器推送。HTTP/2的原理基于SPDY协议,并进行了改进和优化。HTTP/2使用二进制格式传输数据,而不是文本格式,从而减小了数据的大小和传输时间。它还支持多路复用,将多个HTTP请求和响应打包在同一个TCP连接中,从而减少了网络延迟和通信成本。

2023-06-07 16:13:53 1031

原创 Go语言中GBK字节数计算

Go语言GBK编码字节计算方式

2023-02-03 15:43:23 448

原创 Go语言和C语言数组的转换

本文主要介绍了两种不通语言之前字符串操作的一些方法,主要是字符串结尾符的处理,字符串长度的计算,理解后处理难度不大。

2022-11-16 10:37:56 401

原创 Go语言和C语言数组的转换

本文主要介绍了两种不通语言之前字符串操作的一些方法,主要是字符串结尾符的处理,字符串长度的计算,理解后处理难度不大。

2022-11-16 10:35:43 424

原创 paddlehub服务化之后预测脚本总结

paddlehub服务化之后预测脚本总结,如何发送预测请求

2022-10-11 21:16:04 241

原创 golang sqlx包db.Select查询查不到数据

sqlx db.Select在查询的时候,如果字段的默认值为NULL,查询时条件中带“某字段 IS NULL”则会查询不到数据。所以避免踩坑数据库的字段不要默认为NULL,尽量都设置默认值,db.Select查询条件的WHERE中不要带查询"IS NULL"的语句。其中,start_time为datetime类型,默认值为NULL。

2022-10-10 11:08:07 804

原创 如何优雅的在Gin框架中打印request body?

一、在Gin框架中打印request body前面有篇文章介绍了,通过在中间件中读取body的内容,然后在打印,最后在通过ioutil.NopCloser把读取的内容从新赋值给body,解决只能读一次问题。下面介绍另一种方式,避免多次Unmarshal和内存拷贝。二、使用gin.Context的set和get方法1.方法处理结束后调用c.Set要打印的值func LoginHandler(c *gin.Context){ // 假设loginDTO是接收POST方法传递的参数 var logi

2022-03-21 14:30:14 2982 3

原创 Gin中间件打印request.Body

Gin中间件打印Body EOF文件错误解决

2022-01-14 11:07:13 2951

原创 CGO和JNA性能对比

cgo,jna,c/c++

2022-01-06 17:14:58 1513

原创 Golang中的反射

Go 是一种静态语言,具有良好的反射支持。 本文将学习反射标准包中提供的反射功能。Method 方法:获取对象中导出的方法个数,通过编译可以获取每一个方法。如下获取http.Client中的方法:client := &http.Client{}// 获取对象对应的Typetc := reflect.TypeOf(client)// 遍历对象中所有的方法,通过NumMethod方法获取总个数for i := 0; i < tc.NumMethod(); i++ { fmt.Pr

2021-11-26 16:56:07 816

原创 CGO登录海康设备并使用Go1.17 unsafe包新特性

本文通过一个常用的登录设备的例子,演示学习go1.17 unsafe.Slice方法的使用。具体例子如下:package main/*#cgo CFLAGS: -I./libs/hiksdk-6.1.4.51/include/#cgo LDFLAGS: -L./libs/hiksdk-6.1.4.51/lib/ -lHCCore -lhcnetsdk#include "HCNetSDK.h"#include <unistd.h>#include <string.h>

2021-11-12 11:30:56 1318

原创 海康SDKHCNetSDK.h头文件修改为CGO可编译的

CGO海康SDK对HCNetSDK.h头文件修改1、NET_DVR_API 删掉;2、__std_call 删掉;3、#define xxx 删掉,只是定义;4、参数中含初始化值的语法删掉,如:= 5000= NULL= FALSE

2021-11-11 10:54:08 706

原创 go-reids使用lua脚本实现的一个分布式锁

直接上代码:var rdb *redis.Clientvar mutex sync.Mutex// Lock 上锁func Lock(ctx context.Context, lockName string, timeout string, uid string) bool { mutex.Lock() defer mutex.Unlock() lockLua := `if (redis.call('exists', KEYS[1]) == 0) then redis.call('h

2021-09-28 19:54:11 138

原创 CGO开发总结

CGO开发总结准备类型定义结构体转化回调函数处理指针处理内存处理准备在cgo开发过程中,我们需要调用c语言写好的第三方库功能,此时就需要进行适当的处理,不是所有的.h文件cgo都是可以编译的。此时根据编译时的提示信息,对源.h文件进行修改,直到编译不报错,但不能改变源.h文件中函数原型的声明。如果源.h文件改动比较麻烦,且好多函数用不到,则可以单独写一个.h文件,把相应的函数生命单独拿出来。最后,准备好提供对应平台的动态库或者静态库,用来编译链接使用。类型定义首先查看c语言中.h文件中类型的定义

2021-09-28 15:19:02 472

原创 Golang Arm H7芯片交叉编译环境配置

把交叉编译工具链加入到环境变量,然后设置go env,下面时要修改的部分:GOARCH="arm"GOARM="7"AR="arm-himix200-linux-ar"CC="arm-himix200-linux-gcc"CXX="arm-himix200-linux-gcc"设置完成之后,执行go build编译,最后放到嵌入式平台上运行即可。...

2021-09-28 09:58:48 302

原创 Golang 字符数组换字符串

在Go语言中,我们经常在字符串和切片之间进行转换,如:var a = "helloworld"var data = []byte(a) // 字符串转切片var b = string(data) // 切片转字符串以上代码相信大部分人不用思考都能理解,那么如何在byte数组和字符串之间进行转换呢?如下代码打印得结果是?func main() { ip := "192.168.1.1" var data0 [32]byte data := []byte(ip) copy(data0[:],

2021-09-27 18:05:24 3030

原创 macOS ffmepg ld: symbol(s) not found for architecture x86_64

macOS ffmepg ld: symbol(s) not found for architecture x86_64出现此问题的原因请检查链接的静态库或动态库是否编译正确

2020-08-02 20:24:53 372

CGO可直接编译的HCNetSDK.h头文件

CGO可直接引入并编译的海康SDK开发头文件。

2021-11-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除