GRPC-quick start

首先,确保你设置了代理: go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct 随后,安装 gRPC,如果你使用 go module,可以直接引用: import "google.golang.org/grpc" 当然,你也可以直接下载: go get -u google.golang.org/grpc 随后,下载一个和当前操作系统相关的 protocol buffer 编译器 wget https://gith...阅读全文

简书 2021-04-06 01:32:31 天命_风流

Go语言的2017年终总结

写在前面Google 的 Go 语言团队会在 2018 年初宣布 Go 1.10 正式版的发布。10 这个二位数也预示着 Go 语言的进一步成熟。据说,Go 2 也被提上了日程。Go 2 将会是大神们对 Go 语言的一次彻底反思和改进。虽然现在细节还没有被暴露出来,但是这已经足以让 Gopher(Go 语言爱好者)们激动不已了。会有泛型支持吗?GC 会变革吗?详细调参会可行吗?各种猜测已经在各个论坛和群组里层出不穷了。不过,饭要一口一口吃,肌肉要一点一点练。在憧憬未来之前,先让我们看看 Go 语...阅读全文

51CTO博客 2021-04-05 23:19:28 mb5fd86ddc9c8d5

Go入门 | 我的Go语言入门总结

听说Go语言的并发很牛逼,所以边摸鱼边把Go语言的入门语法学习了一遍,之后继续摸鱼学习进阶部分。习惯了边撸视频边写思维导图,所以直接 po 下导图的缩略图,有需要的朋友可以后台回复「Go导图」获取PDF版本。整个入门导图大概分为以下12点内容:第一个Go程序变量操作基础数据类型运算符分支结构与循环结构函数数组切片map结构体指针基础加强:深浅拷贝等以上单单只是咸鱼自己的总结,如有谬误烦请指正。字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字...阅读全文

51CTO博客 2021-04-05 17:42:46 mob604756e9577d

手撸golang etcd raft协议之9

手撸golang etcd raft协议之9 缘起 最近阅读 [云原生分布式存储基石:etcd深入解析] (杜军 , 2019.1) 本系列笔记拟采用golang练习之 raft分布式一致性算法 分布式存储系统通常会通过维护多个副本来进行容错, 以提高系统的可用性。 这就引出了分布式存储系统的核心问题——如何保证多个副本的一致性? Raft算法把问题分解成了四个子问题: 1. 领袖选举(leader election)、 2. 日志复制(log replication)、 3. 安全性(safe...阅读全文

简书 2021-04-05 16:32:32 老罗话编程

2021-04-04:给定一个非负数组arr,和一个正数m。 返回arr的所有子序列中累加和%m之后的最大值。

2021-04-04:给定一个非负数组arr,和一个正数m。 返回arr的所有子序列中累加和%m之后的最大值。 福大大 答案2021-04-04: 自然智慧即可。 1.递归,累加和。 2.动态规划,累加和。 3.动态规划,累加和%m。 4.双向动态规划,累加和%m。 代码用golang编写。代码如下: package main import ( "fmt" "math/rand" "sort" "time" ) func main() { rand.Seed(time.Now().Unix())...阅读全文

简书 2021-04-05 12:32:36 福大大架构师每日一题

Zap日志库

一、介绍在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能:1、能够将事件记录到文件中,而不是应用程序控制台。2、日志切割-能够根据文件大小、时间或间隔等来切割日志文件。3、支持不同的日志级别。例如INFO,DEBUG,ERROR等。4、能够打印基本信息,如调用文件/函数名和行号,日志时间等。二、默认的Go Logger在介绍Uber-go的zap包之前,让我们先来看看Go语言提供的基本日志功能。Go语言提供的默认日志包是https://golang.org/pkg/log/。...阅读全文

简书 2021-04-05 12:32:35 柯帆

SSH连接服务器后执行多条命令

[TOC] SSH连接服务器后执行多条命令 大家平时有没有遇到自己连接云服务器,ssh 连接上去之后,发现自己的一些小工具用不了 例如go build无法使用 ,由于我们安装配置golang 环境的时候,是在文件/etc/profile中写了配置,因此需要source 一下/etc/profile 那么是否可以在ssh 连接上服务器的时候就可以立即自动执行这一类命令呢? 我们的智慧无穷无尽,小工具也是非常的多,今天来讲述一下SSH连接服务器后执行多条命令可以如何做 1 使用分号隔开 使用 分号 ...阅读全文

简书 2021-04-05 12:32:33 小魔童哪吒

Go-Interface

Go 接口 Interface定义 在golang中,接口是一种抽象类型,接口可理解为一组方法的集合。 跟Struct结构一样,通过type来进行定义 type someInterface interface{ method1(params) returnValue method2(params) returnValue … } ps: 参数和返回值中的变量名可省略,只写参数类型即可。 一个对象只要实现了接口中的所有方法,那么就实现了这个接口 对于值类型的接口接收者,传入值类型变量,指针类型变量...阅读全文

简书 2021-04-05 12:32:33 SodaCrush

关于windows VScode环境下安装go插件不成功的解决方案

1、文件管理中创建目录 E:\software\go\src\golang.org\x 其中, E:\software\go\是我的go语言安装目录 2、下载相关工具到刚才创建的目录里 网址: https://github.com/golang/tools.git https://github.com/golang/lint.git linux环境下,直接用git clone, windows下,直接进网址下载的压缩包解压,然后将两个文件:tools和lint,拖进目录E:\software\g...阅读全文

简书 2021-04-05 12:32:33 宣河

Rust for cpp devs - Ownership

编程语言的内存管理一般有两种: 带垃圾回收机制的,如 Java,Golang,会在运行时检查不再使用的内存并回收,这样会牺牲程序的速度。 手动分配回收的,如 cpp。容易产生内存泄漏。 Rust 采用了第三种,即利用一系列关于所有权(ownership)的规则来管理内存。这些规则都是在编译时检查的,因此不会拖慢程序的速度。 所有权规则 Rust 有三条关于所有权的规则: Rust 的每个值都有一个 owner 变量 在同一时间,每个值有且仅有一个 owner 当离开 owner 作用域后,这个值...阅读全文

简书 2021-04-05 12:32:32 找不到工作

golang基础- 初体验

golang 简介golang是一门强类型,高并发,易上手的编程语言。为什么选择 golanggolang被称为云时代的c++,其极高的开发效率,天然的高并发能力,入门容易但天花板又很高。近几年来,golang在中国的火热程度极具上升,笔者所呆过的腾讯,新加坡上市外企均有大量部门转型为golang开发。环境安装下载goland配置GOPATH等环境变量代码路径严格按照golang推荐。代码执行示例代码package main func main() int { print "hello, wor...阅读全文

51CTO博客 2021-04-04 19:36:56 mob604756e80bb7

golang基础-内置数据结构

概述内置数据结构是一门语言的核心基石之一,了解了基本语法,内置数据结构,便可以胜任简单的开发。golang内置的数据结构比较少,有整形,浮点型,字符串,数组,切片(slice),map这几种。内置数据结构整形整形是指整数数据,golang支持有符号整型int,无符号整型uint。var a int //位数取决于机器 var a int16 //16位有符号整型 var a int32 //32位有符号整型 var a int64 //64位有符号整型 var a uint16 //16位有符号...阅读全文

51CTO博客 2021-04-04 19:36:32 mob604756e80bb7

golang基础-语法介绍

概要本章介绍golang基本的语法。golang语法相对来说比较简单,掌握本章内容即可满足语法方面的基本开发需要。局部变量定义func test1() { var a int // 定义临时变量a } 复制代码全局变量定义var a int // 定义全局变量a 复制代码变量初始化var b string = "apache" //数组初始化 var strAry = [10]string{"aa", "bb", "cc", "dd", "ee"} //切片初始化 var s = make([]...阅读全文

51CTO博客 2021-04-04 19:36:09 mob604756e80bb7

golang基础-高级数据结构

背景golang 不像c++,已经有stl这种通用的高级数据结构。所以如果想要栈,队列,链表等数据结构需要自己实现。下面介绍下常用的几种数据结构链表单链表是一种链式存取的数据结构,一个链表由一个或者多个节点组成,每个节点有一个指针指向下一个节点。 以下是一个节点为int的链表实现。package list type List struct { Head * ListNode length int } type ListNode struct { Next *ListNode Data int }...阅读全文

51CTO博客 2021-04-04 19:35:45 mob604756e80bb7

golang基础-高级特性概述

协程协程是golang最重要的一个特性。在协程出现之前,线程被作为调度的最小单位。协程可以理解是一种用户态,逻辑层面的线程。 通过协程,我们将很容易地实现高并发。 加入你要做三件事,假设要执行a,b,c三个方法。代码该怎么写?平常我们的写法就是a() b() c() 复制代码只有a做完了,才能做b,b做完了,才能做c。 但有了协程就可以go a() go b() go c() 复制代码三个同时进行,充分利用多核的性能。管道管道概念类似unix中管道(pipe)先进先出线程安全,多个gorouti...阅读全文

51CTO博客 2021-04-04 19:35:24 mob604756e80bb7

golang基础-和mysql打交道

mysql简介mysql是关系型数据库RDBMS(Relational database management system)的典型代表,也是后台开发中打交道最多的一个组件。go-sql-driver访问数据库插入操作func InsertUser(user bean.User) (bool){ //开启事务 tx, err := DB.Begin() if err != nil{ fmt.Println("tx fail") return false } //准备sql语句 stmt, err...阅读全文

51CTO博客 2021-04-04 19:35:00 mob604756e80bb7

golang基础-单元测试与mock

golang 单元测试单元测试介绍为了保证代码的质量,很多公司都会要求写单元测试。这里介绍两个指标,函数覆盖率:函数调用个数/函数个数,通常要求100%行覆盖率:走到的行的个数/总函数,通常要求>60%通过单元测试,我们可以针对不同场景进行测试,是研发自己对质量的把控。 笔者目前所在的公司对单元测试要求很高,并且有替代测试的趋势。go testgo的test一般以xxx_test.go为文件名,xxx并没有特别要求是要实测的文件名TestMain作为初始化testTestxxx(t* testi...阅读全文

51CTO博客 2021-04-04 19:34:35 mob604756e80bb7

golang基础-http server

golang实现一个简单的http server如果搜索golang http server,会发现网上有很多不同的写法,本节将介绍多种写法,并把他们的关系捋清楚。写法1直接传入函数func SayHello(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello")) } func main() { http.HandleFunc("/say_hello", SayHello) err := http.ListenAndS...阅读全文

51CTO博客 2021-04-04 19:31:11 mob604756e80bb7