golang interface浅谈

golang 的接口设计是这门编程语言的两大亮点之一,本文仅浅谈golang接口和其它语言(以C++为例)的区别。引用《Go语言编程》作者在书中的话,go语言中的接口是“非侵入式”的,而其它语言中的接口是“侵入式”的。因此,需要对非侵入式和侵入式分别理解才能理解清楚golang 接口的优点首先 让我们看看C++中的接口:在C++中,接口的实现必须要通过继承```cppinterface IFoo{ void Bar(); } class Foo: public ...阅读全文

2017-03-30 09:29:56 themoonstone
阅读:2891 评论:0

Gin实践 连载七 Golang优雅重启HTTP服务

优雅的重启服务 在前面编写案例代码时,我相信你会想到 每次更新完代码,更新完配置文件后就直接这么 ctrl+c 真的没问题吗,ctrl+c到底做了些什么事情呢? 在这一节中我们简单讲述 ctrl+c 背后的信号以及如何在Gin中优雅的重启服务,也就是对 HTTP 服务进行热更新 ctrl + c 内核在某些情况下发送信号,比如在进程往一个已经关闭的管道写数据时会产生SIGPIPE信号 在终端执行特定的组合键可以使系统发送特定的信号给此进程,完成一系列的动作 命令 信号 含义 ctrl + c S...阅读全文

2018-03-15 15:34:40 煎鱼
阅读:13113 评论:0

go语言之行--golang操作redis、mysql大全

一、redis 简介 redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写key-value存储系统,它由C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value类型的数据库,并提供多种语言的API。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支...阅读全文

阅读:1339 评论:0

Golang经典笔试题及答案(上篇)

转载于:黎跃春老师 1. 写出下面代码输出内容 package main import ( "fmt" ) func main() { defer_call() } func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer func() { fmt.Println("打印后") }() panic("触发异常") } 在这个案例中,触发异常这几个字打印...阅读全文

2018.10.09 11:11 小马哥_Magical
阅读:1296 评论:0

开发了5年android,我开始了go学习之旅

奥术大师 做了近5年的android开发,最近项目也是不怎么忙,空闲的时候总会思考一些事情,不过作为移动开发,我个人觉得很有必要学习后台开发,由于公司是Go语言开发的,了解go语言一段时间后,我发现go语言的强大。基于优雅的语法和其强大的并发性,我开启我的go学习之旅。 golang强大的数据库驱动 Go与PHP不同的地方是Go没有官方提供数据库驱动,而是为开发者开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,这样做有一个好处,只要按照标准接口开发的代码, 以后...阅读全文

2018-11-12 09:34:38 爱编码的coder
阅读:3169 评论:0

Golang 之协程详解

一、Golang 线程和协程的区别 备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。 进程、线程 和 协程 之间概念的区别 对于 进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法) 对于 协程(用户级线程),这是对内核透明的,也就是系统并不知道有协程的存在,是完全由用户自己的程序进行调度的,因为是由用户程序自己控制,那么就很难像抢占式调度那样做到强制的 CPU 控制权切换到其他进程/线程,通常只能进行 协作式调度,需要协程自己主动把控...阅读全文

2017-08-04 16:41 liang1101
阅读:12912 评论:0

Go Modules 详解

原文链接:Go Modules 详解 Go 1.11 和 Go 1.12 包含了初步的 Go Modules 支持,且计划在 2019 年 8 月发布的 Go 1.13 会在所有开发过程中默认使用 Go Modules。 Go Modules 是为了提升使用其他开发者代码,即添加**依赖项(模块、包)**时的体验,也是为了让代码的正确性、安全性得到保障。并且 Go Modules 可以使用 GOPROXY 环境变量来解决中国大陆无法使用 go get 的问题。 所以学习跟 Go Modules ...阅读全文

阅读:5133 评论:0

Go web 教程

GOPHER_AVATARS.jpg Go Web 新手教程 大家好,我叫谢伟,是一名程序员。 web 应用程序是一个各种编程语言一个非常流行的应用领域。 那么 web 后台开发涉及哪些知识呢? 模型设计:关系型数据库模型设计 SQL、ORM Restful API 设计 模型设计 web 后台开发一般是面向的业务开发,也就说开发是存在一个应用实体:比如,面向的是电商领域,比如面向的是数据领域等,比如社交领域等。 不同的领域,抽象出的模型各不相同,电商针对的多是商品、商铺、订单、物流等模型,社交...阅读全文

2019.06.21 00:14 谢小路
阅读:2453 评论:0

如何使用 Golang 处理 MySQL 的 binlog

大家好,我是 Artem,一名 Golang 开发。我们的团队花费了大量时间训练 MySQL binlog。这里整合一些简单用法,不会放过任何隐藏的陷阱。示例代码将在最后显示。 每次从数据库查询的返回结果中拉取用户信息时,主项目中会有高负载模块。此时使用缓存是一个不错的建议,但是什么时候重置缓存呢?这需要由数据来决定更新时间。 MySQL 的主从复制是一个很棒的设计。而我们的守护进程可以视为一个通过 binlog 获取数据的 slave,binlog 设置成 row 格式。这样就能使...阅读全文

2019-06-23 17:09:34 shani33
阅读:5407 评论:0

现代服务端技术栈介绍 —— Golang、Protobuf 和 gRPC

![](https://raw.githubusercontent.com/studygolang/gctt-images/master/modern-server/1_W_1gSpbn79xtYZw9_TBGPA.jpg) 身边多了一些新的服务端程序员,这一次,一切都与谷歌有关。自从谷歌开始在他们的生产系统中使用 Go 语言以来,`go` 语言的流行度快速地提升。从微服务架构创立至今,人们一直在关注像 `gRPC`、`Protobuf` 这样的现代数据通信解决方案。在这篇文章中,我将分别...阅读全文

2019-06-23 17:31:19 polaris
阅读:1426 评论:1

Go 回答之如何阅读 Go 源码

我的知乎回答,问题是关于如何阅读 Go 源码。地址。胡扯了些自己的想法。 Go 的源码在安装包的 src/ 目录下。怎么看它的源码呢?直接看吧!没人教的情况下,只能自己撸了。当然,这种内容一般也不会有人教。 怎么撸? Go 源码中,应该可分为与语言息息相关的部分,和官方提供的标准库。与语言实现相关的肯定是最难的,不是那么容易理解。可以先主要看标准库,其他的可以先大概了解下。 先把源码目录整体扫一遍,大概看看涉及了哪些模块,然后再挑自己喜欢的部分进行更深一步的学习与研究。建议每个目录都简单写个 h...阅读全文

2019-09-01 20:32:32 波罗学
阅读:1345 评论:0