Go接口之nil != nil

本文来自“灰子学技术”,原文链接如下所示:https://mp.weixin.qq.com/s/ZBd1UcIJFk_DonkxVNgERA一、引出话题:在开始这个话题之前,我们先看一段代码以及其输出结果,代码如下所示: Output: 从上面的输出结果来看,GetA()返回的类型为*A就算赋值为nil,也不等于nil。看到这里笔者觉得很奇怪,明明是GetA()返回值是nil,为什么nil的判断条件是false呢?二、原因分析:在研究了interface之后,笔者发现了真相,原来Go语言中的in...阅读全文

【TiDB@丰巢】支付平台的迁移之旅

因为本文是我第一次发表在 丰巢技术团队 公众号上,所以在简书上发表只能算是转载。丰巢第一次在生产环境实际使用TiDB,是在2018年,其场景是每天产生一亿条以上数据的推送平台,当时我们还发了一篇文章,被PingCAP官方收录:TiDB at 丰巢:尝鲜分布式数据库。这次,因为实际的项目需要,我们选择了QPS和数据一致性要求更高的支付平台,作为第二个迁移到TiDB上的项目。由于丰巢的所有支付,都会通过该平台产生,所以其稳定性和性能,都是重中之重了,而这次的迁移之旅,也就特别的漫长和曲折。1. 支付...阅读全文

MySQL如何控制用户输错密码尝试次数?

目录 生产环境MySQL死锁如何监控及如何减少死锁发生的概率 MongoDB有哪些优秀特性及适合的场景是什么 GO语言对比其他的编程语言有何优势?实际生产环境如何取舍? 一个大事务,有很多更新,现在被回滚了,但是又着急关机重启,怎么办才好? 如何降低UPDATE/DELETE时WHERE条件写错,或者压根没写WHERE条件带来的影响 MySQL如何控制用户输错密码尝试次数? 一、生产环境MySQL死锁如何监控及如何减少死锁发生的概率 首先,死锁并不是"锁死",死锁是由于两个或两个以上会话锁等待产...阅读全文

Segmentfault 2019-11-21 13:32:45 吕青珊

Go接口之nil != nil

本文来自“灰子学技术”,原文链接如下所示:https://mp.weixin.qq.com/s/ZBd1UcIJFk_DonkxVNgERA一、引出话题:在开始这个话题之前,我们先看一段代码以及其输出结果,代码如下所示:​Output: ​从上面的输出结果来看,GetA()返回的类型为*A就算赋值为nil,也不等于nil。看到这里笔者觉得很奇怪,明明是GetA()返回值是nil,为什么nil的判断条件是false呢?二、原因分析:在研究了interface之后,笔者发现了真相,原来Go语言中的i...阅读全文

Go语言中文网 2019-11-21 09:18:36 ZhDavis

企业级Android应用架构设计与开发

​企业级Android应用架构设计与开发Android初中级岗位竞争激烈,中高级岗位却供不应求,差别在哪里?架构能力!大厂招聘中,架构能力已是必备要求。本课程以企业级Android App的架构设计与功能开发,带你初探Android组件化架构、实战各类通用组件,学会构建高扩展性、高可靠性、高可维护性的Android工程,掌握一线互联网公司的工程架构与管理方式适合人群想要晋升为Android中高级的开发者想要获得架构能力的Android开发人员技术储备要求Android基础知识掌握Java语言有设...阅读全文

Go语言中文网 2019-11-21 03:37:13 fengwomei

玩转算法系列--图论精讲 面试升职必备(Java版)

​玩转算法系列--图论精讲 面试升职必备(Java版)图论算法是所有计算机专业的同学必学的基础知识;也是在算法,数据结构,离散数学等领域的重要内容;是面试,升职,计算机专业考研,考博的必考内容;更是计算机网络,编译原理,社交网络算法等领域的基础。但是,由于图论算法本身的复杂性和抽象性,让大多数同学头疼不已。在这个课程中,bobo老师将用其独到的问题讲解方式,庖丁解牛,深入浅出,让大家在这个课程中,真正地玩转图论算法。适合人群准备大厂面试的同学;准备竞赛, 考研的同学;对计算机基础算法感兴趣, 渴...阅读全文

Go语言中文网 2019-11-21 03:34:45 taiyangneng

Mac下安装golang

前言:越来越多人开始走学习golang之路,包括我身边的一些技术同事给自己“充电”新技术,能在未来工作中更好的生存发展。个人使用Mac环境,下面大概简述一安装过程:一、准备工作官网下载安装包:备注:目前最新稳定版本是v1.9开发工具包又分为安装版和压缩版。安装版是Mac和Windows特有的,他们的名字类似于:go1.9.darwin-amd64.pkggo1.9.windows-386.msigo1.9.windows-amd64.msi安装版,有点傻瓜式安装,环境路径都默认好,操作起来比较简...阅读全文

浅谈 CI/CD for kubernetes

生产环境如果准备上 kubernetes,那么必然绕不开如何高效进行 CI/CD 集成的话题。本文拟探讨常见的一些流程和方法,仅供参考。 最常见的 kubernetes 上的 app 发布方式 kubectl apply -f app.yaml kubectl apply -k ./app helm template <app-name> ./app --set vaules.tag.name=tag -n <namespace> > app.yaml && kubectl apply -f a...阅读全文

golang调试工具Delve

Devle是一个非常棒的golang 调试工具,支持多种调试方式,直接运行调试,或者attach到一个正在运行中的golang程序,进行调试。 线上golang服务出现问题时,Devle是必不少的在线调试工具,如果使用docker,也可以把Devle打进docker镜像里,调试代码。 安装Devle 安装Devle非常简单,直接运行go get 即可: go get -u github.com/derekparker/delve/cmd/dlv 如果你的go版本为1.5请先设置环境变量GO15V...阅读全文

51CTO博客 2019-11-20 14:50:03 阿泽Aze

golang rabbitmq的使用(五)

先说一个实际的业务场景:Client端有一个请求需要进行耗时处理或者查询,这个处理在Server端做。Server 端处理完后通知给请求的Client端。这种场景可以称之为RPC(Remote Procedure Call) 有两个点说明一下: <1>Client端发送请求给Server端可以简单定义一个Queue。Client作为Producer发布消息,Server端作为Cosumer消费消息 <2>Server端处理完耗时处理后需要将处理结果返回给请求的客户端。 可以在Client声明一个...阅读全文

Segmentfault 2019-11-21 13:32:44 麦穗儿

Go 中 recover 与 panic 区别

概念panic 与 recover 是 Go 的两个内置函数,这两个内置函数用于处理 Go 运行时的错误。 panic用于主动抛出错误, recover 用来捕获panic 抛出的错误。 func main() { //捕获 异常 defer func() { if p := recover(); p != nil { fmt.Printf("panic recover! p: %v", p) //类型判断 str, ok := p.(string) if ok { err := errors....阅读全文

Segmentfault 2019-11-21 13:32:43 风云

从go的channel谈起

先来温故一下channel的概念: Channels are a typed conduit through which you can send and receive values with the channel operator, <-. 一种管道类型,通过<-操作符接收或发送数据,我们通过一个实例来了解一下管道的特性 启动两个线程, 一个输出 1,3,5,7…99, 另一个输出 2,4,6,8…100 最后 STDOUT 中按序输出 1,2,3,4,5…100 初看一下,很容易想到要用...阅读全文

go mod使用踩坑

尝试使用了go mod去管理包,按照官方的文档指引https://blog.golang.org/using-go-modules进行实践。 整个过程中出现了几个问题: gomod文件应该放在哪里? 首先项目得在GOPATH以外的任意目录,再执行 go mod init [根目录名] 目录组织结构: wwwroot-------go.mod -------main.go -------hello/hello.go ------------/hello_test.go 使用go mod 时依赖包下...阅读全文

简书 2019-11-20 19:32:48

golang中文件以及文件夹路径相关操作

获取目录中所有文件 使用包: io/ioutil 使用方法: ioutil.ReadDir 读取目录 dirmane 中的所有目录和文件(不包括子目录) 返回读取到的文件的信息列表和读取过程中遇到的任何错误 返回的文件列表是经过排序的 FileInfo type FileInfo interface { Name() string // base name of the file Size() int64 // length in bytes for regular files; system-...阅读全文

手把手教你,COS公链互动操作!

作为领先的内容公链,COS公链的代码全部开源免费。开源地址:https://github.com/coschain/ 看过上一篇文章《0基础,开启COS公链本地化运行》的朋友,相信已经在本地搭建了COS公链。这次,我们开启COS公链互动模式,看看都有哪些好玩儿的互动? 区别于中心化的内容平台,Contentos内容生态里的账户系统分为“本地账户”和“链上账户”两种。 本地账户是一份 keystore 文件,放置在 ~/.coschain文件夹下。一个本地账户存储了一对 contentos 的公私...阅读全文

Segmentfault 2019-11-21 13:32:43 内容链Contentos

GO代码实现判断字符编码格式及编码格式转换(utf-8、gbk)

# 引入 C/C++的实现请看[https://www.jianshu.com/p/a83d398e3606](https://www.jianshu.com/p/a83d398e3606) 最近使用go开发http服务,在使用http进行通信时,发现接收报文中如果包含中文字符(非utf-8编码),直接使用go将二进制格式数据转换成字符串文本会出现乱码的情况。因为golang中的字符编码格式是utf-8,如果是其他类型的编码,例如gbk,那么直接转码后出现乱码也就理所当然了。 ...阅读全文

Go语言中文网 2019-11-20 16:23:24 bubbleGarden

Golang ServeMux 是如何实现多路处理的

之前出于好奇看了一下 Golang net/http 包下的部分源码,今天想还是总结一下吧。由于是第一次写文章且抱着忐忑的心情发表,可能有些语义上的不清楚,谅解一下,或者提出修改的建议! 简介 net/http 包里的 server.go 文件里注释写着:ServeMux is an HTTP request multiplexer. 即 ServeMux 是一个 HTTP 请求的 "多路处理器",因为 ServeMux 实现的功能就是将收到的 HTTP 请求的 URL 与注册的路由相匹配,选择...阅读全文

开源游戏服务器框架汇总(2019-11-20)

有哪些开源游戏服务器框架,值得学习呢。基于node.js 、java、C#、golang 、c++、python 等技术栈有各种各样的游戏框架。 本文收集一些比较常用的 github上star和fork有一定数量的较为完整的框架 skynet 云风大神的框架这个基本上使用很多的, c+lua的框架。 skynet只能算是网络层的轮子但是因为其众多的用户还是很不错的 https://github.com/cloudwu/skynet A lightweight online game framew...阅读全文