
go
文章平均质量分 71
ic_xcc
这个作者很懒,什么都没留下…
展开
-
mac环境把go项目打包成docker镜像推送至阿里云镜像仓库
最近项目需要通过 k8s 部署,所以需要将我的go后端项目打包成docker镜像,运行在指定的环境内,于是记录一下自己第一次在mac上把go项目打包进 docker镜像。原创 2023-04-06 16:24:22 · 1449 阅读 · 1 评论 -
【Go】参数验证,对象数组核验-validator
范围验证: 切片、数组和map、字符串,验证其长度;数值,验证大小范围lte:小于等于参数值,validate:“lte=3” (小于等于3)gte:大于等于参数值,validate:“lte=120,gte=0” (大于等于0小于等于120)lt:小于参数值,validate:“lt=3” (小于3)gt:大于参数值,validate:“lt=120,gt=0” (大于0小于120)原创 2022-12-20 17:55:30 · 3252 阅读 · 0 评论 -
linux安装go语言环境
因我们项目开发需要,经常需要在开发、演示、正式环境的服务器(linux 环境)中部署项目,因近期都是Go 开发的服务,所以在所难免需要在 linux环境下安装go的运行环境,就此记录一下吧。原创 2022-10-14 16:39:35 · 4616 阅读 · 0 评论 -
go使用RabbitMQ完成消息异步通信实践问题并解决记录
背景:因区块链项目需求,在同时间高并发大数据环境没法实时同步上链数据结果返回给业务后端(java实现的业务后端),所以考虑采用异步通信中间件,研发阶段选择了自己搭建rabbitMQ完成我们的需求替换到API请求返回的方式,做项目技术改造。涉及到跨语言通信,消息中间件,模式选择,消息体接收转换联调等一系列问题,仅此记录。需求:业务后端(java)提供上链信息结构体【生产者--发送消息】-->到go后端调用区块链上链方法【消费者--消费消息】-->调用上链智能合约返回结果后,根据不同情况返回上链结果【生产者原创 2022-07-08 17:41:56 · 2212 阅读 · 7 评论 -
GO语言规范
go语言规范原创 2022-06-30 13:56:50 · 989 阅读 · 0 评论 -
go 将字符串变量中的单引号、双引号和反单引号增加转义字符\
go 将字符串变量中的单引号、双引号和反单引号增加转义字符\前言问题解决前言因项目需要,上链存储的string类型字段种存在有引号包含的字符串,所以得将在字符串中出现单引号、双引号和反单引号的地方增加\符号才行,一个小tips记录一下问题单引号、双引号和反单引号增加转义字符例子:postman中参数传递为"data_content":"[{\"388377937822355457\":\"eyJhbGciOiJIUzI1NiIsInR56IndvbmRlcnMiLuser111\"}]"后原创 2021-12-17 16:28:47 · 2534 阅读 · 0 评论 -
golang int64 json.Unmarshal精度丢失问题并解决
golang int64 json.Unmarshal精度丢失问题并解决问题描述问题原因解决方法decode+UseNumber()问题描述近期项目遇到一个小问题,在postman测试我在上传数据溯源的时候,一个id类型为int64格式的查询返回和我查询参数id竟然后两位不同,例如:386170898069065728 变成 386170898069065700,也就是精度出现丢失,在进行debug之后将问题锁定在了json.Unmarshal方法上,因其他string类型的数据都正常按照上传的内容返回原创 2021-12-10 15:33:15 · 3129 阅读 · 0 评论 -
Golang批量更新数据进mysql数据库操作
Golang批量更新数据进mysql数据库操作前言结构体数据结构体参数结构体路由控制层数据库操作postman参数和效果json参数返回效果截图效果前言因最近项目需要,在模版表对应的字段表中存在一对多关系,需要根据模版id批量插入字段表中多条字段数据,于是记录一下实现步骤项目运用go :1.16.3版本;xorm数据库;gin框架结构;数据库mysql结构体数据结构体// 模版信息type Template struct { TemplateId int64 `json:"templa原创 2021-12-03 16:55:05 · 2822 阅读 · 2 评论 -
go项目启动报错:undefined:discovery.ChaincodeCell
一、问题背景近期新建一个go项目,但在启动时出现下图所示错误百度搜索好久没有相关问题解答,自己也搞了半天,最终问题解决如下二、问题及解决因我使用go mode(go 1.16版本)自动生成的import包依赖文件go.mod原版本如下:go 1.16require ( github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/garyburd/redigo v1.6.2 github.com/gin-gonic/gin v1.原创 2021-10-21 17:06:47 · 1752 阅读 · 14 评论 -
go使用jwt对前端用户身份通过token认证
文章目录一、导入工具包jwt-go生成token二、在登录验证接口中使用token生成方法三、解析前端请求头中的token四、中间件来验证客户端传递过来的token五、使用示例背景前沿:近期项目需要对前端提供的部分接口做身份认证拦截,需要在登录成功后生成一个token返回给前端,后续需要进行验证的接口需要在请求头中携带token才能正常请求数据一、导入工具包jwt-go生成token命令导入安装包go get -u github.com/dgrijalva/jwt-go可在使用时包头直接引原创 2021-09-23 15:11:18 · 2504 阅读 · 0 评论 -
Go 基于令牌桶实现的官方限流器实际使用
最近项目需要对新增做限流,就使用到了go官方提供的以令牌桶算法实现的限流器的使用,找了许多博文资料,自己亲测成功有效。主要导官方工具包"golang.org/x/time/rate"一:先附上代码1.抽出关键代码以工具包形式避免代码耦合度过高package limiterimport ( "golang.org/x/time/rate" "sync" "time")type Limiters struct { limiters *sync.Map}type Lim原创 2021-09-22 17:31:08 · 1239 阅读 · 2 评论 -
go mod vender package io/fs is not in GOROOT (/usr/local/go/src/io/fs)
一:问题解决最近写区块链相关项目时候,对于智能合约部署时对其进行vender时报错:io/fs is not in GOROOT (/usr/local/go/src/io/fs)搜索了一下是因为go版本问题,我原本是1.15.5的版本,后来升级到最新的1.17了(应该1.16就行),然后再次执行go mod vender就没毛病了二:mac 的go版本升级如果Mac 上有 Brew 的话,直接用 brew 可以进行安装和升级(brew upgrade go),因为我没有装所以就直.原创 2021-08-20 18:02:45 · 17649 阅读 · 2 评论 -
GOLand项目导包问题并解决
最近重新搞go项目,在我新mac上启动时候遇到引入包一直报红色提醒,于是记录一下问题遇见的问题有:无法解析目录:Cannot resolve directory 'xxx.xxx'在使用go mod ticl命令一直超时:go-lang:dial tcp 172.217.160.81:443: i/o timeout设置报错warning: go env -w GOPROXY=... does not override conflicting OS environm等。。。其实都是源原创 2021-07-22 15:46:55 · 2605 阅读 · 1 评论 -
【go】剑指offer07_重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7限制:0 <= 节点个数 <= 5000我的解题思路:利用前序遍历和中序遍历的特点,前序遍历第一个值为二叉树根节点,根据根节点...原创 2020-12-14 11:27:59 · 107 阅读 · 0 评论 -
【go】剑指offer06_从头到尾打印链表
题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000我的解题思路:遍历链表,将其值全部放到数组内,再反转数组func reversePrint(head *ListNode) []int { var array []int for head != nil{ array = append(array,head.Val)原创 2020-12-11 10:27:00 · 174 阅读 · 0 评论 -
【go】860_柠檬水找零
题目描述在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回true,否则返回 false。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取 3 张 5...原创 2020-12-10 09:56:31 · 132 阅读 · 0 评论 -
【go】剑指offer05_替换空格
题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000我的思路:定义新字符串,遍历目标字符串,如有空格用%20追加,否则就用相应字符追加即可func replaceSpace(s string) string { var str string for _,v :=range s{ if v =原创 2020-12-09 11:02:20 · 263 阅读 · 0 评论 -
【go】剑指offer04_二维数组中的查找
题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 ta...原创 2020-12-08 10:42:15 · 122 阅读 · 0 评论 -
【go】剑指offer03_数组中重复的数字
题目描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000我的解题思路:因为n给定长度,没有限制空间复杂度,就用一个足够长的字典表,遍历数组的时候如果字典表中的该值大于1则直接返回f...原创 2020-12-07 10:55:45 · 95 阅读 · 0 评论 -
【go】力扣34_在排序数组中查找元素的第一个和最后一个位置
题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输...原创 2020-12-01 10:34:44 · 859 阅读 · 0 评论 -
【go】力扣767_重构字符串
题目描述给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例1:输入: S = "aab"输出: "aba"示例 2:输入: S = "aaab"输出: ""注意:S 只包含小写字母并且长度在[1, 500]区间内。我的解题思路:遍历字符串用一个长度为26的桶数组记录每个字符的个数,以字符长度为外层for判断,内层遍历数组找到数量最大字母数组下标和数值以及第二大字母在数组下标和数值,将其拼接..原创 2020-11-30 15:19:40 · 136 阅读 · 0 评论 -
【go】力扣134_加油站
题目描述在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例1:输入:gas = [1,2,3,4,5]cost = [...原创 2020-11-18 11:22:37 · 144 阅读 · 0 评论 -
【go】力扣452_用最少数量的箭引爆气球
题目描述在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆..原创 2020-11-23 15:21:33 · 277 阅读 · 0 评论 -
【go】力扣222_完全二叉树的节点个数
题目描述给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2h个节点。示例:输入: 1 / \ 2 3/ \ /4 5 6输出: 6我的解题思路:dfs深度遍历二叉树求节点个数func countNodes(root *TreeNode) int { ...原创 2020-11-24 10:30:40 · 230 阅读 · 0 评论 -
【go】力扣1370_上升下降字符串
题目描述给你一个字符串s,请你根据下面的算法重新构造字符串:从 s中选出 最小的字符,将它 接在结果字符串的后面。从 s剩余字符中选出最小的字符,且该字符比上一个添加的字符大,将它 接在结果字符串后面。重复步骤 2 ,直到你没法从 s中选择字符。从 s中选出 最大的字符,将它 接在结果字符串的后面。从 s剩余字符中选出最大的字符,且该字符比上一个添加的字符小,将它 接在结果字符串后面。重复步骤 5,直到你没法从 s中选择字符。重复步骤 1 到 6 ...原创 2020-11-25 14:20:45 · 124 阅读 · 0 评论 -
【go】力扣164_最大间距
题目描述给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组中所有元素都是非负整数,且数值在 32 位有符号整数范围内。请尝试在线性时间复杂度和空间复杂度的条件下解..原创 2020-11-26 10:50:58 · 112 阅读 · 0 评论 -
【go】力扣142_环形链表||
题目描述:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1...原创 2020-10-10 15:02:02 · 339 阅读 · 0 评论 -
【go】力扣141_环形链表
题目描述给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head =原创 2020-10-10 11:12:12 · 746 阅读 · 0 评论 -
【go】力扣106_从中序与后序遍历序列构造二叉树
题目描述:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路:递归,利用中序和后序遍历二叉树的特点,后序遍历最末尾为根节点,找到根节点在中序遍历对应位置,以此为分界线,左侧为左子树节点集合,右侧为右子树节点集合...原创 2020-09-27 11:15:56 · 153 阅读 · 0 评论 -
【go】力扣235_二叉搜索树的最近公共祖先
题目描述:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出...原创 2020-09-27 10:48:37 · 171 阅读 · 0 评论 -
x509: certificate signed by unknow n authority
最近的go项目遇见这个问题,记录一下,问题起因是调用别的项目组接口时,接口由http更改为https,之前调试通过的调用接口推送信息方式返回的request请求报错如下:x509: certificate signed by unknow n authority几番查找之后修改完毕,更改如下1.引入 "crypto/tls" 包2.定义TLSClientConfig,忽略证书校验原写法//发起请求func Request(url string, header http.Header,原创 2020-09-08 16:26:04 · 4946 阅读 · 0 评论 -
go下载excel文件流接口前端跨域请求错误问题解决
好久未更新,最近的go项目需要后端提供下载excel的二进制文件流,写完前端调用时出现跨域请求错误问题,就此记录一下错误和解决方式以及部分代码一、问题暴露二、问题解决我的问题是:接口请求拦截未返回json数据的接口没有放开ps:还有一种可能性参考/* 下方这种方式应对处理 这种bug:http: wrote more than the declared Content-Length */ //extraHeaders := map[string]string{ // "C原创 2020-08-07 16:57:01 · 1612 阅读 · 0 评论