golang 的 gin 框架开发热重启探索

需求来源 作为一个新萌的假后端,开发接口时候经常需要修改调试重启素质三连。但是频繁修改和频繁的重启会导致非常麻烦。作为一个老前端,自然是厌恶手动重启这种劳心费力的操作的。于是就像找一个在开发环境快速热重启的方案。 工具 经过一番探索,找到以下开源项目: https://github.com/cosmtrek/air 项目中使用 按照该项目文档说法直接一波操作。 安装 go get -u github.com/cosmtrek/air 创建配置文件 在项目根目录创建一个名为 .air.conf 的...阅读全文

Segmentfault 2020-02-23 05:32:39 源泉

mysql查询过来的数据如何反射到结构体字段,具体实现方法的实现挺好用的

本文讲解的实例是从mysql查询过来的数据如何反射到结构体字段,具体实现方法如下代码; ** 文章转自go语言中文文档 [http://www.topgoer.com](http://www.topgoer.com/?from=studygolang "文章转自go语言中文文档http://www.topgoer.com") ** 代码目录: 1129 -common --common.go //是封装的代码 -main.go //是测试代码 代码...阅读全文

Go语言中文网 2020-02-22 10:59:50 lu569368

关于Golang过滤敏感信息的正确姿势

今天正好看到一篇关于敏感信息过滤的文章,这算做一个interface实际应用的一些举例和应用。 例子中介绍了一种比较常见的使用场景:使用JSON保存数据时的对诸如用户密码等信息进行保护时候应该做的事情。作者以使用JSON格式保存用户账户和密码为例,讲解了使用json.Unmarshaler接口类型过滤敏感信息。 比如,对于保存敏感数据的结构体: 1234567891011type Credentials struct { Email string `json:”email”` Password ...阅读全文

ipfans's Blog 2018-06-06 00:00 ipfans's Blog

编写测试友好的 Golang 代码

目前我们有大量的应用采用了 Golang 程序进行构建,但是在执行研发流程里我们会发现一些来自于静态编译程序的不便:相对于我们之前使用的 Python 语言程序而言,我们无法在程序功能的单元测试里大量的使用 Mock 方式来进行高效测试。 而这些东西往往可以在开发人员编写单元测试用例时有效的节省时间和一些额外的环境准备成本。因此,这也给我们的程序的单元覆盖率带来了很多麻烦的地方:一些依赖于额外验证和表现的情况或者小几率出现的情况需要复杂的模拟步骤,对开发进度和效率带来了一些额外的影响。如何编写一...阅读全文

ipfans's Blog 2016-04-18 00:00 ipfans's Blog

Tips:如何优雅的使用GDB调试Go

Tips: all for hands-free. Tips 系列:记录日常解决问题、解放双手的一些小技巧。 目的只有一个:不被重复的琐事麻痹,能偷懒的绝不手软。 今天聊聊如何优雅的使用GDB调试Go程序。 GDB有啥用? 想了解代码底层的话,它是一大利器,更别说定位问题啥的。 具体骚操作见曹大的使用 debugger 学习 golang 但GDB从安装到可用,可能有一大堆问题要解决(尤其在Mac上),我们怎么能优雅的使用它,避免陷入问题中,是本文的重点。 (涉及Docker和Mac两个平台上运...阅读全文

Segmentfault 2020-02-23 05:32:38 newbmiao

Golang 任务池

# Task Pool [GitHub地址](https://github.com/overtalk/task) Task Pool 是一个易于使用且高度可配置的 golang类库,专门用于任务的管理&执行,支持自定义次数的重发。 ## 功能特点 - 线程安全 - task pool 内所有的方法以及暴露的接口都是线程安全的 - 异步发送 - 调用 PushTask 方法后回立即返回,任务将会被传递到io线程中异步发送,不阻塞用户操作。 - 失败重试 - 用户可以通过设置...阅读全文

Go语言中文网 2020-02-21 16:07:59 qinhan_shu

图解kubernetes Pod生命周期事件生成器

PLEG(PodLifecycleEventGenerator)主要是用于周期性检测Pod的运行状态,从而对比Pod前后状态生成事件从而触发kubelet进行Pod容器状态的校证,让我们一起来初探下其内部实现机制 1. 图解设计 1.1 Pod事件生成 Pod事件生成主要是根据对应Pod前后的状态对比来实现,首先通过runtime来获取当前节点的所有Pod的列表,并将对应的状态进行保存,这样在下一个轮训周期就可以通过前后状态的对比去发现状态发生改变的Pod的容器,并且产生对应的事件 1.2 事件...阅读全文

掘金 2020年02月21日 8小时_2020

用faas实现issueops

本文教你如何白嫖实现足够自动的开发测试交付,面向读者最好满足以下条件: 足够穷 足够懒 issueops? 听过chatops,gitops还没听过issueops,顾名思义issueops就是在讨论issue的时候把ops的事给干了,讨论问题就把问题给解决,美哉。 kubernetes项目issue或者PR中会经常看到这样的东西: image.png 类似/kind feature 这样的指令是给机器人看的,这里就要介绍一位非常勤奋的小伙伴了: ci-robot.png 他叫k8s-ci-ro...阅读全文

简书 2020-02-21 14:33:00 sealyun

leetcode120

Golang: 思路:这题是基础DP,想一想就出来了,但是槽点满满,题目对于相邻这个定义的解释太扯淡了。搬我的题解过来吧。 初始: [2], [3,4], [6,5,7] 第一轮过后:3+2=5,4+2=6 [2], [5,6], [6,5,7] 第二轮过后:6+5=11,[5+5=10,5+6=11,取小值10],7+6=13 [2], [5,6], [11,10,13] 代码如下: func minimumTotal(triangle [][]int) int { if len(triang...阅读全文

简书 2020-02-21 14:32:50 淳属虚构

leetcode_746

Golang: 思路:简单DP,保持cost[0]、cost[1]不变,从i=2开始,状态转移方程是:cost[i]=min(cost[i-2],cost[i-1])+cost[i] 代码如下: func minCostClimbingStairs(cost []int) int { for i := 2; i < len(cost); i++ { cost[i] = min(cost[i-2], cost[i-1]) + cost[i] } return min(cost[len(cost)-...阅读全文

简书 2020-02-21 14:32:49 淳属虚构

[Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)

安全是软件开始中很重要的一个环节,在金融场景以及设计资产的场景下更是如此,在加密算法中主要使用较多加密方式分别是对称加密和非对称加密,对称加密中的代表是AES,DES,3DES等,非对称加密中使用比较多的是RSA,ECC等,最近火热的比特币中就使用ECC椭圆曲线算法,本篇文章主要是笔者在使用Golang在使用RSA中使用私钥加密公钥解密中遇到的问题,以及寻找的解决方案进行阐述,希望可以帮助到大家! 附上: 喵了个咪的博客:w-blog.cn gorsa-Github地址:https://gith...阅读全文

简书 2020-02-21 14:32:48 文振熙

[Golang软件推荐] Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家. 附上: 喵了个咪的博客:w-blog.cn go-commons-pool-Github地址:github.com/jolestar/go-commons-pool 1.连接池 在使用之前我们需要先了解清楚连接池的概念,总结下来...阅读全文

简书 2020-02-21 14:32:48 文振熙

[Golang软件推荐] Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家. 附上: 喵了个咪的博客:w-blog.cn go-commons-pool-Github地址:github.com/jolestar/go-commons-pool 1.连接池 在使用之前我们需要先了解清楚连接池的概念,总结下来...阅读全文

简书 2020-02-21 14:32:47 文振熙

吃葡萄

有三种葡萄,每种分别有a,b,c颗,有三个人,第一个只吃第一种和第二种葡萄,第二个人只吃第二种和第三种葡萄,第三个人只吃第一种和第三种葡萄。 适当安排三个人使得吃完所有葡萄,并且三个人中吃的最多的那个人吃得尽量少。 输入描述: 第一行数字T,代表数据组数 接下来T行,每行三个数a,b,c,数字用空格间隔 1 <= a, b, c <= 108,1 <= T <= 10 输出描述: 对于每组数据,输出一行一个数字表示三个人中吃的最多的那个人吃的数量。 例如: 输入 2 1 2 3 1 2 6 输出...阅读全文

简书 2020-02-21 14:32:45 CancerTiN

leetcode_357

Golang: 思路:简单DP,这里可以注意到,当n>10,即这个数字的长度>10后,所有这个长度的数字都会有重复的现象发生,所以也可以直接穷举。 代码如下: DP的放在这里,双百时空间复杂度 func countNumbersWithUniqueDigits(n int) int { if n<0{ return 10 } arr1:=make([]int,11) arr1[0],arr1[1]=1,10 temp:=9 flag:=9 for i:=2;i<len(arr1);i++{ te...阅读全文

简书 2020-02-21 14:32:44 淳属虚构

字节跳动国际化广告团队招人啦!

字节跳动国际化广告团队招人啦! KevinMatrix KevinMatrix May the force be with you! 我们是谁? TikTok Ads(https://ads.tiktok.com/)是字节跳动的国际化广告平台,支撑公司旗下TikTok、TopBuzz、BuzzVideo、Helo、Vigo、BaBe、News Republic等国际化App的商业变现。 平台的广告推荐技术领先业界,在确保用户体验的前提下,结合用户的消费兴趣和行为习惯,通过创意...阅读全文

Go语言中文网 2020-02-21 13:50:12 shaw

图解kubernetes Pod生命周期事件生成器

PLEG(PodLifecycleEventGenerator)主要是用于周期性检测Pod的运行状态,从而对比Pod前后状态生成事件从而触发kubelet进行Pod容器状态的校证,让我们一起来初探下其内部实现机制 1. 图解设计 1.1 Pod事件生成 Pod事件生成主要是根据对应Pod前后的状态对比来实现,首先通过runtime来获取当前节点的所有Pod的列表,并将对应的状态进行保存,这样在下一个轮训周期就可以通过前后状态的对比去发现状态发生改变的Pod的容器,并且产生对应的事件 1.2 事件...阅读全文

Segmentfault 2020-02-23 05:32:37 仔仔

Dig101:Go之聊聊struct的内存对齐

Dig101: dig more, simplified more and know more 经过前边几篇文章,相信你也发现了,struct几乎无处不在。 string,slice和map底层都用到了struct。 今天我们来重点关注下struct的内存对齐, 理解它,对更好的运用struct和读懂一些源码库的实现会有很大的帮助。 在此之前,我们先明确几个术语,便于后续分析。 字(word) 是用于表示其自然的数据单位,也叫machine word。字是电脑用来一次性处理事务的一个固定长度。 ...阅读全文

Segmentfault 2020-02-23 05:32:36 newbmiao

如何在Kubernetes中将Envoy用作负载均衡器

在当今分布式的世界中,单体架构越来越多地被多个,更小,相互连接的服务(不管是好是坏)所取代,代理和负载平衡技术似乎正在复兴。除了老玩家以外,近年来还涌现出几种新的代理技术,它们以各种技术实现,并以不同的功能进行普及,例如易于集成到某些云提供商(“云原生”),高性能和低内存占用,或动态配置。 可以说,两种最流行的“经典”代理技术是NGINX(C)和HAProxy(C),而其中的一些新成员是Zuul(Java),Linkerd(Rust),Traefik(Go),Caddy(Go)和Envoy(C+...阅读全文

Segmentfault 2020-02-23 05:32:36 iyacontrol