Go语言开篇

Go语言主要特性自动垃圾回收更丰富的内置类型函数多返回值错误处理Go语言引入了3个关键字用于标准的错误处理流程,这3个关键字分别为defer、panic和recover匿名函数和闭包类型和接口并发编程goroutine反射没有泛型语言的交互性Cgo和C语言的交互性Go语言的工程管理Go语言的运行代码:go run 和 go build传统工程<project> |--<src> |--<main> # 这里是程序的入口 |--main.go |--<code> # 这里放业务代码 |--<bin...阅读全文

51CTO博客 2021-01-19 21:52:16 mb6004f7ec10a08

Go的声明语法为什么是这样

作为 Go 语言的初学者,一定觉得 Go 语言的声明语法很奇怪,我当然也不例外。对于这个问题,Go 语言官方写了一篇博客来回答这个问题,我觉的挺有意思的,就把博客翻译了一下。总的来说, GO 的声明语法遵循一个原则,就是让声明可以从左往右读,由于指针沿用了 C 语言的风格,所以指针是一个例外,下面是原文的翻译。简介很多 Go 语言的初学者都会奇怪,为什么声明语法与 C 语言族(Rayjun注:C++,Java 等语言)的差异这么大。在这篇文章中,我们会对比着两种方式,并且解释为什么 Go 语言要...阅读全文

51CTO博客 2021-01-19 20:48:34 mb6004f7ec10a08

Go 自定义error错误

Go的error比较灵活.但是自身对error处理的机制有不太好用,我们可以自定义错误输出: 只要所有实现了 Error() 方法的对象都可以, 这里给个比较简单的demo,后续整理一个error的优化封装:package main import ("fmt") type NameEmtpyError struct { name string}//NameEmtpyError实现了 Error() 方法的对象都可以func (e *NameEmtpyError) Error() string {...阅读全文

51CTO博客 2021-01-19 18:51:54 mb6004f7ec10a08

Go 自定义error错误

Go的error比较灵活.但是自身对error处理的机制有不太好用,我们可以自定义错误输出: 只要所有实现了 Error() 方法的对象都可以, 这里给个比较简单的demo,后续整理一个error的优化封装:package main import ("fmt") type NameEmtpyError struct { name string}//NameEmtpyError实现了 Error() 方法的对象都可以func (e *NameEmtpyError) Error() string {...阅读全文

51CTO博客 2021-01-19 18:51:30 mb6004f7ec10a08

Centos7 安装godoc

前提 正确设置好 GOPATH和 GOROOT之后进行下边操作 GOPATH 程序的依赖包存放的位置. GOROOT golang的具体安装位置. 可以通过 go env 查看你当前的设置 下载 go tool git clone https://hub.fastgit.org/golang/tools.git $GOPATH/src/golang.org/x/tools 编译安装 打开 $GOPATH 目录 进入golang.org/x/tools/cmd/godoc 进行安装 cd $GOP...阅读全文

简书 2021-01-19 19:33:07 知然_强哥

我为什么要放弃 RESTful,选择拥抱 GraphQL

原文:https://www.toutiao.com/a6833818331884028419/ 作者:师兄睿谈 背景REST作为一种现代网络应用非常流行的软件架构风格,自从Roy Fielding博士在2000年他的博士论文中提出来到现在已经有了20年的历史。它的简单易用性,可扩展性,伸缩性受到广大Web开发者的喜爱。REST 的 API 配合JSON格式的数据交换,使得前后端分离、数据交互变得非常容易,而且也已经成为了目前Web领域最受欢迎的软件架构设计模式。 但随着REST API的流行和...阅读全文

简书 2021-01-19 19:33:07 TASKCTL

go基础(1)安装系统环境以及工具

go语言环境安装:下载地址:https://golang.google.cn/dl/ 下面有Linux Mac windows 各个版本的 安装贼简单 一直下一步下一步就可以了 ,会自动帮你把环境配置好, Windows默认地址在C:\Users\admin\go 然后是安装写代码的工具,我用的goland(看个人喜好),下载地址:https://www.jetbrains.com/go/OK 一切安装好,开始go之路阅读全文

简书 2021-01-19 19:32:39 茸茸布加拉提

杂七杂八的一些备忘

最新的备忘放在前面,便于查看。大话工控 这个网站名字虽然是工控,但是有很多视频,讲的是物联网。包括如何自己开发APP,服务器,还有物联网平台的一些东西。app invertor 是谷歌的一款积木式 app开发软件。上手很快,好像还能生成服务端代码。 谷歌推出一款名叫Google App Inventor的工具软件, Google App Inventor用户能够通过该工具软件使用谷歌的Android系列软件自行研发适合手机使用的任意应用程序。在此之前有关这款软件测试版本的使用细节已经由谷歌实验室...阅读全文

简书 2021-01-19 19:32:37 硬件老郭

golang 实现bitmap

type bitmap struct { keys []byte len int}func NewBitMap() *bitmap { return &bitmap{keys:make([]byte, 0), len:0}}func (b *bitmap)has(v int) bool { k := v /8 kv :=byte(v %8) if k >len(b.keys) { //todo not exist return false } if b.keys[k]&(1<<kv) != 0 ...阅读全文

简书 2021-01-19 19:32:37 GoSnail

Go 语言规范 - 编码风格篇

当前版本: v1.0.20201106GitHub: shockerli/go-code-guide命名规则站在调用者的角度,包不是给你自己用的简洁、且见名知义采用通用、大众熟知的缩写命名。比如buf而不是bufio如果缩写的名字会产生歧义,则放弃或换个文件名整个应用或包的主入口文件应当是 main.go,或与应用名称简写相同。比如:spiker 包的主入口文件是 spiker.go,应用的主入口文件是 main.go包名包名与目录名一致如果一个目录下同时出现多个 package,则编译失败:f...阅读全文

Segmentfault 2021-01-21 16:32:36 .container .car 等

字节跳动 Go RPC 框架 KiteX 性能优化实践

本文选自“字节跳动基础架构实践”系列文章。“字节跳动基础架构实践”系列文章是由字节跳动基础架构部门各技术团队及专家倾力打造的技术干货内容,和大家分享团队在基础架构发展和演进过程中的实践经验与教训,与各位技术同学一起交流成长。KiteX 自 2020.04 正式发布以来,公司内部服务数量 8k+,QPS 过亿。经过持续迭代,KiteX 在吞吐和延迟表现上都取得了显著收益。本文将简单分享一些较有成效的优化方向,希望为大家提供参考。前言KiteX 是字节跳动框架组研发的下一代高性能、强可扩展性的 Go...阅读全文

51CTO博客 2021-01-19 18:07:01 mb6004f7ec10a08

一道有趣的golang排错题

很久没写博客了,不得不说go语言爱好者周刊是个宝贝,本来想随便看看打发时间的,没想到一下子给了我久违的灵感。go语言爱好者周刊78期出了一道非常有意思的题目。我们来看看题目。先给出如下的代码:package main import ( "fmt" "time" ) func main() { ch1 := make(chan int) go fmt.Println(<-ch1) ch1 <- 5 time.Sleep(1 * time.Second) }请问这串代码的输出是什么。我最先想到的是5...阅读全文

51CTO博客 2021-01-19 17:52:42 mb6004f7ec10a08

Go中的***F***战

来自公众号:新世界杂货铺写在最前面“年年岁岁花相似,岁岁年年人不同”,没有什么是永恒的,很多东西都将成为过去式。比如,我以前在文章中自称“笔者”,细细想来这个称呼还是有一定的距离感,经过一番深思熟虑后,我打算将文章中的自称改为“老许”。关于自称,老许就不扯太远了,下面还是回到本篇的主旨。什么是***F***F英文全拼为Server Side Request Forgery,翻译为服务端请求伪造。***者在未能取得服务器权限时,利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。关于...阅读全文

51CTO博客 2021-01-19 17:44:18 mb6004f7a0e5cc3

业务方还在钉钉群里问来问去吗?《线上故障通知流程指引与落地实施》

当线上发生故障时,除了查看日志和排查异常之外,还有一件重要的事 —— 通知。因公司业务形态和属性不同,业务方也不同。如果业务方是公司其它组的同事(对内),那么可以考虑直接通知他。如果业务方是用户/客户(对外),那么最好先通知公司的运营/商务,由他们处理对外的事。如果没有基本流程,那么发生故障时一定会遇到这样的情况:业务方:哎,访问不了/没有数据,你看看是出什么问题了吗?业务方:你看看这个要多久才能恢复?领导:看看怎么回事。业务方:你们这故障大吗?领导:通知一下各个业务方,然后再处理问题。业务方:...阅读全文

Segmentfault 2021-01-21 16:32:35 .container .car 等

使用golang 做复杂流程自动化

### go webdriver #### 功能说明 `go-webdriver` 是使用golang 开发的一套基于 `w3c-webdriver` 协议开发的一套chrome 浏览器驱动, 该包依赖 `chromedriver` 浏览器驱动, `chrome ` 浏览器, 用程序控制模拟用户操作浏览器,功能类似 `selenium`。 #### 用途 * 模拟用户操作,配合用户操作,全自动化流程测试,或者半自动化测试 * 页面数据抓取,而不需要进行各种复杂的破解 ...阅读全文

Go语言中文网 2021-01-19 17:31:23 doelle

Go 内存管理(一)TCMalloc内存管理原理

一、TCMallocGo内存管理是基于TCMalloc基础上进行设计的,所以在学习Go内存管理之前先学习TCMalloc原理TCMalloc(Thread Cache Malloc)是线程级别的内存管理模式。TCMalloc优势:1、速度快2、减少锁竞争。对于小对象,只有在对应线程分配的空闲块不足的时候,才会使用到锁;对于大对象,TCMalloc尝试使用有效的自旋锁总结来说就是:最大化内存使用率,最小化分配时间。上图来自:https://wallenwang.com/2018/11/tcmall...阅读全文

51CTO博客 2021-01-19 15:24:21 mb6004f7a0e5cc3

dubbo-go 白话文 | 从零搭建 dubbogo 和 dubbo 的简单用例

本文将手把手教你使用 dubbogo 调用 dubbogo 或 dubbo 提供的服务提供方。前言本文基于 dubbogo 1.5.4 版本。最近开始参与 dubbogo 的一些开发测试,之前都是直接拿 samples 的例子验证功能,而这次为了复现一个功能问题,打算从零开始搭建一个 dubbo-go 和 dubbo 调用的工程,踩到了一些新人使用 dubbogo 的坑,把这个过程记录下供大家参考。通过本文你可以了解到:如何常规配置 dubbogo 消费方去调用 dubbo 和 dubbogo ...阅读全文

51CTO博客 2021-01-19 14:41:47 mb6004f7a0e5cc3