判断golang接口是否实现
笔者在阅读一些Golang代码的时候。常常会遇到一些以下写法 type IRouter interface { IRoutes Group(string, ...HandlerFunc) *RouterGroup } type RouterGroup struct { Handlers HandlersChain basePath string engine *Engine root bool } var _ IRouter = &RouterGroup{} 其实这个是为了验证某某接口是否被实现...阅读全文
为什么你们不喜欢使用switch,而是大量的 if...else if?
作者:熊爸爸的科技工坊请用5秒钟的时间查看下面的代码是否存在bug。 OK,熟练的程序猿应该已经发现Bug所在了,在第8行和第10行下面我没有添加关键字break; 这就导致这段代码的行为逻辑与我的设计初衷不符了。缺点一. 语法正确,逻辑错误这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生的事情,而这个语法错误在诸多的语法检查器上没有办法检查出来的,因为从语法角度来说是正确的!可是代码的处理逻辑却是错误的!...阅读全文
新技能:用 Python 写一个安卓 APP
作者:youerning原文链接:http://youerning.blog.51cto.com/10513771/1733534 前言 用 Python 写安卓 APP 肯定不是最好的选择,目前用Java和 kotlin 写的居多,但是肯定也是一个很偷懒的选择,而且实在不想学习 Java,再者,就编程而言已经会的就 Python与Golang(注:Python,Golang水平都一般),那么久Google了一下Python 写安卓的 APP 的可能性,还真行。 既然要写个APP,那么总得要有个...阅读全文
golang作业帮面试
1.channel实现go调度原理select和epoll的区别redis分布式锁redis缓存穿透,缓存雪崩时序数据库如何实现raft选举,高可用kafka的offset怎么管理kafka多个consumer group 消费同一个 partition 有问题吗?为什么同一个 consumer group 里不能消费同一个partition数据库中的乐观锁悲观锁程序中的乐观锁和悲观锁二叉搜索树,两个节点被交换了位置,怎么恢复消息队列消费端的推和拉有什么区别长链接转短链接设计作业帮(二面)前端g...阅读全文
Golang设计模式之抽象工厂模式
抽象工厂模式 GitHub代码链接 抽象工厂模式(Abstra Factory Pattern)是围绕一个超级工厂,创建其他的工厂。这种类型的设计模式属于创建型模式。 抽象工厂解决的问题 在工厂模式中,一个具体的工厂对应一种具体的产品。但是,有时候我们需要工厂可以提供多个产品对象,而不是单一产品对象。 我们首先要理解两个概念 产品等级结构 产品的等级结构就是产品的继承结构,如一个模型工厂,可以画出圆形,长方形和正方形的模型。这里抽象的模型工厂和具体的模型构成了产品等级结构。 产品族 在抽象工厂模...阅读全文
jenkins自动部署golang项目
一、服务器安装jenkins 1、docker拉取镜像 我这里安装的版本是2.222.3-centos docker pull jenkins/jenkins:2.222.3-centos 2、挂载本地目录 我这里映射本地数据卷的路径为/data/jenkins_home/,你想放别的地方可以自行修改 mkdir /home/jenkins_home 需要修改下目录权限,因为当映射本地数据卷时,/data/jenkins_home/目录的拥有者为root用户,而容器中jenkins用户的 uid...阅读全文
golang文件操作
## 包path/filepathjoin用来连接两个文件路径,我们应该使用join来拼接两个路径,因为它会进行分隔符的转换,可以自适应不同的系统。## dir和base获取文件夹和文件,可以使用dir和base## Ext获取文件的扩展名## ioutil```gopackage mainimport ( "fmt" "io/ioutil" "os")func main() { file, _ := os.Open("test.txt") defer file.Close() // ReadA...阅读全文
Go与PHP的语法对比
Go 是由 Google 设计的一门静态类型的编译型语言。它有点类似于 C,但是它包含了更多的优点,比如垃圾回收、内存安全、结构类型和并发性。它的并发机制使多核和网络机器能够发挥最大的作用。这是 GoLang 的最佳卖点之一。此外,Go 速度快,表现力强,干净且高效。这也是 Go 如此吸引开发者学习的原因。 PHP 是一种动态类型语言,它使新手更容易编写代码。现在的问题是,PHP 开发人员能否从动态类型语言切换到像 Go 这样的静态类型语言?为了找到答案,让我们对比一下 Go 和 PHP 之间的...阅读全文
Python MQTT 客户端对比
随着人工智能、大数据兴起的,Python 凭借着优雅的语言风格,丰富的库,以及平缓的入门曲线,搭上了时代的顺风车,成为了最热门的计算机编程语言之一,开始深入到物联网等各个领域中。 Python 上有许多优秀的 MQTT 客户端库,借助它们,我们可以以极少量的代码开发一个 MQTT 客户端应用。 本文收集了三个常见的 Python MQTT 客户端库,并从库的开发、使用复杂度等几个角度进行简单的对比以方便读者进行选择。同时,文章里也提供了简单的 Python 示例,您可以将示例代码复制到编缉器中直...阅读全文
王者荣耀背后的实时大数据平台用了什么黑科技?
简介: 实时方面主要是补足我们对游戏运营的体验,比如说在游戏里玩完一局或者做完一个任务后,立马就能得到相应的奖励,或者下一步的玩法指引。对用户来说,这种及时的刺激和干预,对于他们玩游戏的体验会更好。其实不单单是游戏,其他方面也是一样的,所以我们在做这套系统的时候,就是离线+实时结合着用,但主要还是往实时方面去靠拢,未来大数据的方向也是,尽量会往实时方向去走。 大家好我是许振文,今天分享的主题是《基于 Flink+ServiceMesh 的腾讯游戏大数据服务应用实践》,内容主要分为以下四个部分: ...阅读全文
请教一个interface格式解析的问题
代码是: ```go // 解析json infos := make(map[string]interface{}) err := json.Unmarshal([]byte(jsonListstr), &infos) if err != nil { // handle with error here log.Fatalf("json parse false: %v", err) } provinces := infos["ProvinceItems"] ...阅读全文
连怎么避免内存逃逸都不知道?怎么进BAT?
问题怎么避免内存逃逸?怎么答在runtime/stubs.go:133有个函数叫noescape。noescape可以在逃逸分析中隐藏一个指针。让这个指针在逃逸分析中不会被检测为逃逸。举例通过一个例子加深理解,接下来尝试下怎么通过 go build -gcflags=-m 查看逃逸的情况。执行go build -gcflags=-m main.go其中主要看中间一小段解释上段代码对A和ATrick同样的功能有两种实现:他们包含一个 string ,然后用 String() 方法返回这个字符串。但...阅读全文
1.golang安装
Windows 系统下安装 Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。 下载地址:https://studygolang.com/dl 默认情况下 .msi 文件会安装在 c:\Go 目录下。 这时候c:\Go\bin 目录应该在 Path 环境变量中,环境变量中会生成一个GOROOT,内容为你的go安装目录,一般在系统盘(C:)下。 image.png image.png 安装测试 go ver...阅读全文
关于Golang的那些事(六) -- 接口
接口类型是对其他类型行为的概括与抽象,通过使用借口,我们可以写出更加灵活和通用的函数,这些函数不用绑定在一个特性的类型实现上,很多面向对象的语言都有接口这个概念,Go语言的接口的独特之处在于它是隐式实现。换句话说,对于一个具体的类型,无需声明它实现了哪些接口,只要提供接口所必须的方法即可。这种设计让你无须改变现有类型的实现,就可以为这些类型创建新的接口,对于那些不能修改包的类型,这一点特别有用。 Go语言中还有另外一种类型称为接口类型,它是一种抽象类型,它并没有暴露所含数据的布局或者内部结构,当...阅读全文
Golang中使用 jwt生成token报错:key is of invalid type
接触Golang没多久,今天尝试在Beego框架中用jwt做用户身份验证 package controllers import ( "fmt" "github.com/astaxie/beego" "github.com/dgrijalva/jwt-go" "github.com/sirupsen/logrus" "time" ) type LoginController struct { beego.Controller } type LoginForm struct { Username s...阅读全文
Golang设计模式之工厂模式
工厂模式 GitHub代码链接](https://github.com/lee820/design-pattern-go) 1. 什么是工厂模式 Factory Pattern,属于创建型模式,它不会对用户暴露创建的逻辑。而是使用一个共同的接口来指向新创建的对象。 2. 工厂模式解决了什么问题 解决了接口的选择问题,我们现在只需要知道要获取的类名称,然后从工厂中直接获取就可以。在生成复杂对象时,可以使用工厂模式,这样用户就不必理解复杂对象的创建过程,只需要获取对象,并使用即可。 2.1 工厂模式...阅读全文
golang tcp 粘包拆包问题处理,完整demo
解决tcp粘包拆包问题,有多种处理方案,这里在数据包中添加数据包长度字段,按长度读取字节数据得到完整的数据包。定义的方法如下: 完整Demo下载: https://github.com/itchin/bytes-packet bytes-packet.go package bpacket import ( //"fmt" "bytes" "encoding/binary" ) var ( // 完整的数据包 packet = make([]byte, 0) // 缓存 cache = make(...阅读全文
Kubernetes+Dashboard安装部署
部署安装: 1)原密码编译安装,golang编译环境 2)二进制安装 文档 全程手动,ansible版,saltstak版 3)kubeadm 安装 网络要求. 1.0~1.14 4)minikube 开发者学习 5)yum 安装 1.5.2 本文采用kubeadm 安装、 一、(在 master 节点和 node 节点都要执行)Docker安装;** 1. 安装依赖包** yum install -y yum-utils device-mapper-persistent-data lvm2 2...阅读全文