- 博客(25)
- 资源 (3)
- 收藏
- 关注
原创 kratos微服务实现file upload
1.在.proto 中定义好api和rpc的,定一个接受文件内容的字段bytes data = 1;2.在internal/server/http.go 中实现上传转换。2.1 实现上传handler。2.1 在NewHTTPServer中注册。
2025-03-18 09:42:38
131
原创 golang实现大文件读取
io.ReadAll 是一个方便的函数,可以将整个文件内容一次性读取到内存中,并返回一个字节切片。这在处理小文件或者需要一次性加载数据的情况下非常适用。1、在实际工作,我们需要读取大数据文件,文件可能上G百G,所以我们不可能一次性的读取到内存,io.readAll不可用,那么我们可以考虑分块,IO流的方式如io.copy.io.Copy 函数通过逐块的方式从源读取数据并将其写入目标,适用于流式传输大文件。实时内存占用:854KB,文件大小102M。
2024-04-01 14:52:56
335
1
原创 golang实现分片下载及断点续载
在我们实际工作中,有时候下载的的东西过大,导致下载失败!重新下载又需要重新开始下载!故,实现一个分片下载及继续在上次下载的方法,附带下载进度;
2023-10-11 17:40:21
1024
原创 Docker: Failed to get D-Bus connection, Operation not permitted
主要是privileged: true和command: /usr/sbin/init。在docker容器中Centos7执行。systemctl命令时,报上面错。用docker run 特权模式。
2023-04-24 13:51:20
566
原创 golang执行ip addr list并获取网卡及其绑定ip
获取不到未绑定ip的网卡,于是打算使用linux ip指令获取,于是记录一下笔记;最近工作中需要获取系统网卡及绑定ip,方便管理ip,最开始使用golang的。1.golang 执行ip add list 获取结果。
2023-04-14 10:36:43
696
原创 golang实现WebSSH的功能
websocket主要是ws或wss协议,其原理就是http协议升级成ws协议,即ws是建立在http上的,所有路由正常写http的路由,然后处理一下websocket升级。在最近一次需求里,需要实现一个webSSH的功能,就是把terminal搬到web中来。此方法需要输入,输出,和错误,使用标准的输入及标准输出,能实现交互,但是我是需要接收websocket发的消息,及返回websocket输出。注: 实现read方法时,注意加个回车,不然指令是不会执行的,我在这里就卡了很久......
2023-04-12 18:19:32
1632
4
原创 golang实现下载计算进度
golang实现下载进度条,在网上的都是终端线上进度条,没有可以通过接口查询进度条的功能;网上都是使用mpb.Process实现的,于是自己写了一个;
2023-04-06 15:20:08
515
原创 gin中间件实现对查询缓存
在实际工作中,有时候需要对提供的api实现数据缓存,缓解数据压力.一般的做饭就是先查询是否有缓存,如果有则用缓存,没有就查询数据库。在中间件根据请求参数和api地址作为缓存key, 如果有缓存key,直接返回,没有则放行,从response中拿结果。在gin中的response其实是gin.context.writer,为实现这个功能,需要重新writer方法,但是每个方法都去实现一遍有点累,现考了到在中间件实现。
2023-03-07 13:39:03
522
原创 记录一个postgresql的duplicate key value violates unique constraint问题
postgreql duplicate key value violates unique constraint
2023-03-01 14:50:23
1050
原创 golang http服务实现多ip监听,及优雅重启
来实现多ip监听及优雅的重启,但是grace也是只能做到linux的重启和启动,应为window没有定义signal,这里需要吐槽一下window;最借鉴了一下另外一个开源包。而重启http服务,首先想到的是用endless来优雅的实现服务的重启,但是当多ip监听时,一个项目不能用一个endLess,多了会报错,且windows环境也无法实现重启;,是多grace的扩展,实现了http服务在window的多ip监听,但是重启一样报错(window 不支持signal), 只能再次修改开源包.
2022-11-14 17:00:00
1845
原创 二进制,确定某一个位值是1,计算可能的数字
以5位二进制为例def getNumberSet(i): bitNums = [1,2,4,8,16] #选定目标值 flag = bitNums[i] #从数组中删除目标值 del bitNums[i] # 目标值与数组中的每个求和 numSet = [] # 其他位都是0 numSet.append(flag) for a in getArraySubSet(bitNums): if len(a) ==
2022-03-19 14:37:07
287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人