[Golang梦工厂]掌握这些Go语言特性,你的水平将提高N个档次(一)

前言: 这一栏是我个人公众号文章,在这里推荐一下我的公众号,专注于Golang相关技术;Golang面试、Beego、Gin、Mysql、Linux、网络、操作系统等。有需要的小伙伴可以关注一下 ,每天观看优质文章。没有使用这门语音,也可以关注一下,提前了解一下,相信你会爱上这门语言。 添加方式:公众号搜索 Golang梦工厂 或 扫描下方二维码 image 正文: 大家好,我是asong,这是我的第一篇原创文章。今天这篇文章主要来介绍Go语言一些特性。Go语言虽然语法简单,整个设计近乎完美,但...阅读全文

简书 2020-05-26 17:33:02 sunsong1997

Golang服务器热重启 - 基于Shutdown和Supervisor

所谓 热重启, 就是当关闭一个正在运行的进程时,该进程并不会立即停止,而是会等待所有当前逻辑继续执行完毕,才会中断。这就要求我们的服务需要支持一条重启命令,通过该命令我们可以重启服务,并同时保证重启过程中正在执行的逻辑不会中断,且重启后可以继续正常服务。 在go 1.8.x后,golang在http.Server里加入了Shutdown方法,用来控制优雅退出。什么是优雅退出? 简单说就是不处理新请求,但是会处理正在进行的请求,把旧请求都处理完再退出。 我的项目更新代码流程为:使用http.ser...阅读全文

简书 2020-05-26 17:32:51 Avery_up

Golang特性以及变量的使用方式

引言 Go语言(又称Golang)结合了编译语言的运行速度与脚本语言的开发速度,是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 Golang特性 环境变量之GOROOT、GOPATH、Path GOROOT: 指定了go sdk的安装目录 GOPATH: Golang的工作目录 Path: 指定了go sdk的bin目录 go run与go build go build可将.go文件编译成可执行文件,因为可执行文件打包了Golang的运行环境,所以文件变大了,...阅读全文

掘金 2020年05月26日 Zzceaon

我可能并不会使用golang interface

谈到interface,我们大致应该会有这样的疑问 interface是什么? 他跟面向对象语言中的接口有啥区别? 他的底层原理是什么样的? interface的优缺点是什么? interface有哪些常见的特殊情况和使用技巧? 上述大概涵盖了,我们的主要的疑问,有问题是好事儿,我们慢慢来看看。 1.什么是interface 在Go中,接口是一组方法签名。 当类型为接口中的所有方法提供定义时,就说实现了该接口。 它与OOP世界非常相似。 接口指定类型应具有的方法,类型决定如何实现这些方法。 例如...阅读全文

掘金 2020年05月26日 第八共同体

一款小巧的基于 Go 构建的 API 开发框架,可以快速进行业务开发,遵循 SOLID 设计原则

snake 一款适合于快速开发业务的Go框架,主要是提供API服务。 项目地址:https://github.com/1024casts/snake 技术栈 框架路由使用 gin 路由 中间件使用 gin 框架的中间件 数据库组件 gorm 文档使用 swagger 生成 配置文件解析库 viper 使用 JWT 进行身份鉴权认证 校验器 validator 也是 gin 框架默认的校验器,当前最新是v9版本 任务调度 cron 包管理工具 go module 测试框架 goConvey CI/...阅读全文

Segmentfault 2020-05-30 09:32:33 如来神掌

Golang 之 WaitGroup 源码解析

前言 如果我们有一个大的任务要做,我们会尝试将这个任务分解,分解完成之后并发交由 goroutine 去做,并且我需要当全部的任务完成之后再进行下面的步骤,在 sync 包下,就有这样一个东西适合上述情况,WaitGroup,今天我们来看看具体它是怎么实现的。 PS:在下面我统一用 wg 来简称 WaitGroup 使用 它的使用非常简单,如下: func main () { wg := sync.WaitGroup {} for i := 0; i < 10; i++ { wg.Add (1)...阅读全文

简书 2020-05-26 09:32:46 LinkinStar

Golang用300行代码实现内网穿透

原因分析 我们经常会遇到一个问题,如何将本机的服务暴露到公网上,让别人也可以访问。我们知道,在家上网的时候我们有一个 IP 地址,但是这个 IP 地址并不是一个公网的 IP 地址,别人无法通过一个 IP 地址访问到你的服务,所以在例如:微信接口调试、三方对接的时候,你必须将你的服务部署到一个公网的系统中去,这样太累了。 这个时候,内网穿透就出现了,它的作用就是即使你在家的服务,也能被其人访问到。 今天让我们来用一个最简单的案例学习一下如何用 go 来做一个最简单的内网穿透工具。 整体结构 首先我...阅读全文

简书 2020-05-26 09:32:45 LinkinStar

Jmeter与easyNmon监控结合,通过html实时查看监控结果

最近在github找到了一个nmon自动监控并生成HTML格式报告的工具:easyNmon,使用体验蛮不错的,这里介绍下它的安装及使用方法。 github地址:https://github.com/mzky/easyNmon 直接下载地址:https://github.com/mzky/easyNmon/releases/download/v1.9/easyNmon.tar.gz 一、关于easyNmon说明 工具下载地址:easyNmon 说明:为了方便多场景批量监控,作者用golang写了个...阅读全文

简书 2020-05-25 23:32:59 一如既往不再少年

5大最新云原生镜像构建工具全解析,3个来自Google,你了解几个?

1云原生大背景下的镜像构建在分享开始,我想先跟大家简单聊一下云原生,可能不会详细展开,而是带领大家了解一下云原生对镜像构建方面的影响。第一,在接触云原生相关的技术时,无论是要解决开发、测试环境的问题,还是解决日常开发、测试等相关的操作和流程,我们经常都会谈到持续集成。持续集成首先要做代码的集成,不同的feature一起交付,使用持续集成的理念尽快把代码合并,保证代码没有冲突,这是持续集成最简单的一些理念。在持续集成之后,要考虑做哪些业务的验证。验证之外,还需要有一些安全相关的策略。比如,在开发过...阅读全文

简书 2020-05-25 23:32:56 灵雀云

《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用

为了部署到生产环境中,需要考虑三个关键的质量属性:安全性,可配置性和可观测性。 开发安全的服务 需要实现安全性的四个方面: 身份验证。 访问授权。验证是否允许访问主体对指定数据完成请求的操作。 审计。跟踪用户在应用中执行的操作。 安全的进程间通信。最好采用传输层安全性(TLS)加密。 在微服务架构中实现安全性 由API Gateway处理身份验证。在请求转发给服务之前,就进行身份验证。这样的好处是: 身份验证集中于一个服务,安全漏洞的可能性要小的多。 身份验证集中于一个服务,其他服务更简单,更关...阅读全文

2020计专后台服务器开发方向应届生月薪深度分析盘点

2020秋招在即,今天的互联网行业应届生薪资情况如何?今天和大家一起聊聊~一、如何在北上广深杭拿到15K!1.算法题,各大公司笔试面试基本都考这个,别的不说,《剑指offer》所有题目背下来,leetcode刷个四五百题起码的吧。搞过ACM也可以,反正刷个四五百题是必须的。我也觉得考这些算法题很无语,但是大家都这么考,你不准备,那不挂你挂谁?2.数据结构,不说要彻底给面试官手推各种数据结构的均摊复杂度,也不要求你手写红黑树,至少AVL 哈希表堆这些简单的数据结构得自己实现过;链表、线性表必须熟悉...阅读全文

简书 2020-05-25 23:32:52 面试题小能手

Protobuf+gRpc Go语言微服务组件搭建

必备下载 由于protobuf设定的是定义中间文件并转为每个语言的文件,所以必须装一个protoc的编译器 https://github.com/protocolbuffers/protobuf/releases 而go则再需要一个插件 https://github.com/golang/protobuf/tree/master/protoc-gen-go go get -u github.com/golang/protobuf/protoc-gen-go 配置 protoc 将解压后的文件配置...阅读全文

简书 2020-05-25 23:32:51 三分归元币

Go学习总结笔记(一)

go version 1.13 基础语法 1. new(T) 和 make(T,args) 的区别? new(T) 返回对应T的指针类型,即*T,指针指向的数据其值为零值,make(T,args) 只能初始化 slice,map,chan这三种类型,T的初始化值也为零值,但是返回类型是T类型的引用,而不是指针类型。 2. slice 使用append()函数时,参数为slice和相同类型的元素时,有啥不同? slice追加slice时,需要在被追加的slice后面加...,追加元素时而不需要,具...阅读全文

简书 2020-05-25 23:32:50 在水之天

【IPFS】IPFS最新进展

协议实验室于5月7~8日举办了 IPFS Pinning Submit。由于疫情原因,这次会议是线上举行。今日得闲,看了几个视频。IPFS 0.5.0版本发布,进展很大,本文做一个简单梳理。主要内容来自IPFS Project Lead - Molly Mackinlay。 IPFS生态日渐完善 IPFS生态近期有比较大的发展,从内容分享、社交网络、身份服务、区块链应用、金融电子化等等各个方面。 非常重要的是,目前有比较多的浏览器开始支持IPFS,包括Firefox, Chrome, Brave...阅读全文

简书 2020-05-25 23:32:49 胡飞瞳

【架构师】职位合集: 服务端/器-go & Java、前端-业务 & 基础、移动端-iOS & Android、系统架构

服务端架构师岗位职责:1. 洞察业务发展,规划直播服务架构演进及推进落地;2. 参与直播大数据工程架构的规划工作;3. 发现现有服务的主要问题,解决关键技术难点的攻关,带领团队完成方案设计,并指导团队工作;4. 营造技术学习氛围,带领团队提升综合工程能力。任职要求:1. 本科及以上学历,具备 7 年以上的互联网研发从业经验;2. 具备扎实、全面的软件知识结构(算法数据结构、操作系统、软件工程、设计模式) ;3. 具备丰富 Unix/Linux 下的开发经验,有扎实的编码能力,良好的编码⻛格;4....阅读全文

简书 2020-05-25 23:32:42 IT互联网猎头Cathy

Go语言入门

GO语言 耳闻已久的Go语言,今天入门了解一下。 Go之所以火爆的原因之一是,拥有CoreOS,Kubernetes(Google),InfluxDB知名大客户,另外Docker也是Go语言所编写。 Go语言的功能特性(所有这些特性,以后慢慢学习了解) 并发支持 简单性和一致性 面向对象 指针 编译器 包管理 Go语言标准库地址 https://golang.org/pkg 官网https://studygolang.com/pkgdoc 中文 项目源码地址 https://github.com...阅读全文

Segmentfault 2020-05-30 07:32:34 onlythinking

Golang基础教程——字符串篇

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第6篇文章,这篇主要和大家聊聊golang当中的字符串的使用。 字符串定义 golang当中的字符串本质是只读的字符型数组,和C语言当中的char[]类似,但是golang为它封装了一个变量类型,叫做string。知道了string这个类型之后,我们就可以很方便地来初始化: var str string str1 := "hello world" var str2 = "hello world too" 复制代码...阅读全文

掘金 2020年05月25日 承志

让我们一起啃算法----加一

加一( Plus-One ) 题干: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。来源:力扣 题目比较简单,解题思路和 让我们一起啃算法----两数相加 差不多。 解题...阅读全文

Segmentfault 2020-05-30 07:32:34 三斤和他的朋友们