2020-06-24:如何在写代码中,安全的关闭连接?

image.png 参考答案如下: java: 1.finally; 2.try-with-resource,类必须实现AutoCloseable接口; 3.finalize(),不一定安全,慎用。 c#: 1.finally; 2.using,类必须实现IDisposable接口; 3.析构,不一定安全,慎用。 golang: 1.defer; 2.runtime.SetFinalizer,析构,不一定安全,慎用。 python: 1.finally+hasattr+callalble; fi...阅读全文

简书 2020-06-25 00:33:16 福大大架构师每日一题

Golang之实用的命令行工具包cobra

cobra简介 Cobra 是一个非常实用(流行)的golang包,很多优秀的开源应用都在使用它,包括 Docker 和 Kubernetes 等,它提供了简单的接口来创建命令行程序。同时,Cobra 也是一个应用程序,用来生成应用框架,从而开发以 Cobra 为基础的应用。 主要功能 简易的子命令行模式,如 app server, app fetch 等等 完全兼容 posix 命令行模式 嵌套子命令 subcommand 支持全局,局部,串联 flags 使用 cobra 很容易的生成应用程...阅读全文

简书 2020-06-25 00:33:15 炎鸿

以注册mysql驱动举例init()函数的注册行为(golang)

​ Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。 ​ 但是import _ "github.com/go-sql-driver/mysql" 的意义不是很好理解。 ​ 为此,我通过自己写的三个简单程序,演示init()的注册行为。 ​ 代码的目录组织结构如下: awesomeProject/talkischeap/main.go //主函数 awesomeProject...阅读全文

51CTO博客 2020-06-24 10:55:51 moakia

【golang】gorm出现incorrect datetime value '0000-0-0 00:00:00' for column问题

因为mysql的8.0以上版本不支持零日期格式,导致gorm插入默认数据出错。 解决方法一:修改代码中struct 1、把日期类型time.Time改为指针类型*time.Time 2、设置数据库日期可以为null 解决方案二:修改数据库配置(最快捷) 1、输入 show variables like 'sql_mode',如下: 2020-06-24 09-36-46 的屏幕截图.png 把NO_ZERO_DATE去掉 2、输入指令 set global sql_mode='ONLY_FULL...阅读全文

简书 2020-06-24 18:32:46 dongzaidong

learn go with tests 学习笔记(七)反射

声明 因为反射的概念比较重要,结合learn go with tests示例,并搜集了一些反射的文章,汇总整理为此文。也至此,learn go with tests 学习笔记完结,撒个花~ 本文主要内容来自于掘金文章: 作者:吴德宝AllenWu 链接:https://juejin.im/post/5a75a4fb5188257a82110544 知识点 反射概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-re...阅读全文

简书 2020-06-24 18:32:45 硌手小石头

# Tendermint ABCI 接口介绍

概述 Tendermint项目通过分层的理念将区块链应用构建划分成3层: P2P网络层, 共识层以及应用层, 项目本身提供了P2P网络层以及Tendermint共识协议层的实现, 并且定义了通用的ABCI接口来支持与上层应用的交互. ABCI接口的定义支持应用层的深度定制, Tendermint项目本身只负责P2P网络通信以及共识过程, 而交易检查和执行, 存储状态更新, PoS中的奖惩与验证者集合更新以及链上治理等都可以由应用层根据需要进行定制 通过ABCI接口进行交互时, 根据传统的C/S模...阅读全文

简书 2020-06-24 18:32:45 CoinExChain

封装govmomi操作vsphere

最近由于公司需求,需要云管平台操作vsphere,大致看了govmomi源码后用golang封装了操作vsphere的常用方法: TestFindAllVM 列出vsphere中所有vm名及其uuid TestFindVMByUuid 根据uuid查找vm TestVMPowerOff 关闭vm TestVMPowerOn 开启vm TestResizeVMCPU 修改vm cpu TestResizeVMMem 修改vm 内存 TestCreateDisk vm新增磁盘 TestVMDesto...阅读全文

简书 2020-06-24 18:32:43 brownchen

Golang 之context库用法

1. context Golang 中的context 是Go语言在 golang1.7 发布时新增的标准包 目的是增强Golang开发中并发控制技术 简单来讲当一个服务启动时,可能由此服务派生出多个多层级的 goroutine , 但是本质上来讲每个层级的 goroutine 都是平行调度使用,不存在goroutine '父子' 关系 , 当其中一个 goroutine 执行的任务被取消了或者处理超时了,那么其他被启动起来的Goroutine 都应该迅速退出,另外多个多层的Goroutine ...阅读全文

简书 2020-06-24 18:32:42 楚江云

性能提升40%: 腾讯 TKE 用 eBPF 绕过 conntrack 优化 K8s Service

Kubernetes Service 用于实现集群中业务之间的互相调用和负载均衡,目前社区的实现主要有userspace,iptables和IPVS三种模式。IPVS模式的性能最好,但依然有优化的空间。该模式利用IPVS内核模块实现DNAT,利用nf_conntrack/iptables实现SNAT。nf_conntrack是为通用目的设计的,其内部的状态和流程都比较复杂,带来很大的性能损耗。 腾讯云 TKE 团队 开发了新的IPVS-BPF模式,完全绕过nf_conntrack的处理逻辑,使用...阅读全文

掘金 2020年06月24日 腾讯云原生

Golang技巧之默认值设置的高阶玩法

从别人的代码中吸取养分!让自己成长 最近使用 GRPC 发现一个设计特别好的地方,非常值得借鉴。 我们在日常写方法的时候,希望给某个字段设置一个默认值,不需要定制化的场景就不传这个参数,但是 Golang 却没有提供像 PHP、Python 这种动态语言设置方法参数默认值的能力。 低阶玩家应对默认值问题 以一个购物车举例。比如我有下面这样一个购物车的结构体,其中 CartExts 是扩展属性,它有自己的默认值,使用者希望如果不改变默认值时就不传该参数。但是由于 Golang 无法在参数中设置默认...阅读全文

掘金 2020年06月24日 大愚Talk

Golang技巧之默认值设置的高阶玩法

最近使用 GRPC 发现一个设计特别好的地方,非常值得借鉴。 我们在日常写方法的时候,希望给某个字段设置一个默认值,不需要定制化的场景就不传这个参数,但是 Golang 却没有提供像 PHP、Python 这种动态语言设置方法参数默认值的能力。 低阶玩家应对默认值问题 以一个购物车举例。比如我有下面这样一个购物车的结构体,其中 CartExts 是扩展属性,它有自己的默认值,使用者希望如果不改变默认值时就不传该参数。但是由于 Golang 无法在参数中设置默认值,只有以下几个选择: 提供一个初始...阅读全文

Segmentfault 2020-06-30 10:32:33 大愚Talk

Go 每日一库之 cli

简介 cli是一个用于构建命令行程序的库。我们之前也介绍过一个用于构建命令行程序的库cobra。在功能上来说两者差不多,cobra的优势是提供了一个脚手架,方便开发。cli非常简洁,所有的初始化操作就是创建一个cli.App结构的对象。通过为对象的字段赋值来添加相应的功能。 cli与我们上一篇文章介绍的negroni是同一个作者urfave。 快速使用 cli需要搭配 Go Modules 使用。创建目录并初始化: $ mkdir cli && cd cli $ go mod init gith...阅读全文

掘金 2020年06月24日 darjun

Go 每日一库之 cli

## 简介 cli是一个用于构建命令行程序的库。我们之前也介绍过一个用于构建命令行程序的库cobra。在功能上来说两者差不多,cobra的优势是提供了一个脚手架,方便开发。cli非常简洁,所有的初始化操作就是创建一个cli.App结构的对象。通过为对象的字段赋值来添加相应的功能。 cli与我们上一篇文章介绍的negroni是同一个作者urfave。 快速使用 cli需要搭配 Go Modules 使用。创建目录并初始化: $ mkdir cli && cd cli $ go mod init g...阅读全文

Segmentfault 2020-06-30 09:32:44 darjun

Cannot assign requested address出现的原因及解决方案(转)

Cannot assign requested address出现的原因及解决方案 今天使用golang多线程请求服务时,出现Cannot assign requested address错误 网上找了下原因,大致上是由于客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多...阅读全文

简书 2020-06-24 01:32:57 hewolf

go env学习3

这里以centos7为参考来看 centos7 GO111MODULE="on" // 这里是做了go get国内加速处理GOARCH="amd64" // 运行架构GOBIN="" //GOCACHE="/root/.cache/go-build"GOENV="/root/.config/go/env" // 修改版env文件存储GOEXE="" //是否产生exe文件GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="linux" // 运行环境GONOPROXY="...阅读全文

简书 2020-06-24 01:32:56 rosekissyou