【转载】(Git)用动图展示10大Git命令

1.说明 git merge、git rebase、git reset、git revert、git fetch、git pull、git reflog…… 你知道这些 git 命令执行的究竟是什么任务吗? 如果你还有些分不清楚,那千万不能错过这篇文章。 在本文中,熟知JavaScript、TypeScript、GraphQL、Serverless、AWS、Docker和Golang的 21岁年轻软件顾问Lydia Hallie通过动图形式直观地介绍了这些常用git命令的工作过程, 包你过目不忘...阅读全文

简书 2020-05-21 19:33:14 木木与呆呆

golang for-select 优雅的退出

启动两个做为生产者的go-routing, 分别将数据生产的数据写入两个带缓冲的通道cha1,ch2 分别模拟在Main go-routing和 sub go-routing中通过for-select循环读取两个通道的值并打印 通过3种方式优雅的退出main go-routing exit for-select in go-routing https://play.golang.org/p/Ar4389-87QE package main import ( // "time" "fmt" ) f...阅读全文

简书 2020-05-21 19:32:47 夜空一起砍猩猩

Golang从入门到进阶系列:Go Modules机制

Go Modules机制是Go官方的包管理机制,从Go 1.11开始作为experiment feature引入,GO111MODULE是这个特性的开关。 GO111MODULE GO111MODULE有三个值:auto、on和off,默认值为auto,GO111MODULE的值会影响Go compiler的依赖管理模式 off:go compiler会始终使用GOPATH mode,无论要构建的源码目录是否在GOPATH路径下,go compiler都会在传统GOPATH和vendor目录下,...阅读全文

掘金 2020年05月21日 Damion

带你学够浪:Go语言基础系列-环境配置和 Hello world

文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 前面几周陆陆续续写了一些后端技术的文章,包括数据库、微服务、内存管理等等,我比较倾向于成体系的学习,所以数据库和微服务还有后续系列文章补充。 最近工作上比较多的 Golang 编程,现在很多互联网公司都在转向 Golang 开发,所以打算写一写有关 Go 语言学习的系列文章,目标是从 Go 基础到进阶输出一系列文章,沉淀下这些知识同时也给大家做参考,力...阅读全文

掘金 2020年05月21日 柠檬橙

面试官让我用channel实现sync包里的同步锁,是不是故意为难我?

Go语言提供了channel和sync包两种并发控制的方法,每种方法都有他们适用的场景,并不是所有并发场景都适合应用channel的,有的时候用sync包里提供的同步原语更简单。今天这个话题纯属是为了通过用channel实现同步锁的功能来学习掌握channel拥有的强大能力,并不适合在实际中使用。而且面试中有时候就是会出一些奇奇怪怪的题考应聘者对知识的理解以及灵活运用的应变能力。 大家仔细看看文章里用channel实现几种常用的同步锁的思路,没准儿哪次面试就碰上这样的面试官了呢。 今天,我将深入...阅读全文

掘金 2020年05月21日 kevinyan

面试官让我用channel实现sync包里的同步锁,是不是故意为难我?

Go语言提供了channel和sync包两种并发控制的方法,每种方法都有他们适用的场景,并不是所有并发场景都适合应用channel的,有的时候用sync包里提供的同步原语更简单。今天这个话题纯属是为了通过用channel实现同步锁的功能来学习掌握channel拥有的强大能力,并不适合在实际中使用。而且面试中有时候就是会出一些奇奇怪怪的题考应聘者对知识的理解以及灵活运用的应变能力。 大家仔细看看文章里用channel实现几种常用的同步锁的思路,没准儿哪次面试就碰上这样的面试官了呢。 今天,我将深入...阅读全文

Segmentfault 2020-05-26 23:32:34 Kevin

golang使用json格式实现增删查改

需求和思路 在一般的小项目或者一个小软件,例如客户端之类的小程序中,可能会需要数据的持久化.但是使用一般的数据库(Mysql)之类的不合适.使用sqlite3这种嵌入式的是个较好的方法,但是Go语言中sqlite3的库是C语言的,Cgo不支持跨平台编译.正是由于这种需求,才想到使用json格式将数据直接保存在文件中.具体的思路是怎么样呢? 在Go语言中如果要将数据转化成json格式的话,有两种格式 struct 和 map. 如果同时需要增删查改功能的话,将map作为中间格式是比较合适的.接下来...阅读全文

Segmentfault 2020-05-26 18:32:34 xingyys

golang 常用库

github.com/Arafatk/DataViz   对于常用数据结构的可视化,使用的graphviz。 github.com/astaxie/beego   beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设...阅读全文

Go语言中文网 2020-05-21 08:28:10 xiexiaoming

【go】sync

sync.once可以控制函数只能被调用一次。不能多次重复调用。 例如:保证channel 关闭只执行一次,避免关闭已关闭的channel导致panic type MyChannel struct { C chan T once sync.Once } func NewMyChannel() *MyChannel { return &MyChannel{C: make(chan T)} } func (mc *MyChannel) SafeClose() { mc.once.Do(func(){...阅读全文

Segmentfault 2020-05-26 10:32:33 阿阿阿黄

让我们一起啃算法----搜索插入位置

搜索插入位置( Search-Insert-Position ) 题干: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1: 输入: [1,3,5,6], 5 输入: 输出: 2示例 3: 输入: 输入: [1,3,5,6], 7 输入: 输出: 4示例 4: 输入: 输入: [1,3,5,6], 0 输入: 输出: 0来源:力扣 这题主要应用 二分查找 的思路来解题,题目是比较简单的,但...阅读全文

Segmentfault 2020-05-25 18:32:34 三斤和他的朋友们

gRPC负载均衡(自定义负载均衡策略)

### 前言 上篇文章介绍了如何实现gRPC负载均衡,但目前官方只提供了`pick_first`和`round_robin`两种负载均衡策略,轮询法`round_robin`不能满足因服务器配置不同而承担不同负载量,这篇文章将介绍如何实现自定义负载均衡策略--`加权随机法`。 `加权随机法`可以根据服务器的处理能力而分配不同的权重,从而实现处理能力高的服务器可承担更多的请求,处理能力低的服务器少承担请求。 ### 自定义负载均衡策略 gRPC提供了`V2PickerBuild...阅读全文

Go语言中文网 2020-05-20 17:12:40 939496716

Golang对象中的value与pointer

开宗明义 不是我喜欢装,要用什么value与pointer,而不说值与指针。实在是后面还要讲receiver时,实在不知道怎么说,但是value receiver与pointer receiver就好多了。 面向对象 如果一门编程语言哪一天不说面向对象了,那还真的是一件很奇怪的事情。即使是函数式语言,或者是C语言,都会以某种程度来说是怎么样实现面向对象的语义。面向对象,就是程序封装里面一道跨不过去的坎。 Golang中和面向对象形式上特别简单,就是给函数function定义加一个receiver...阅读全文

MAC环境下安装并配置golang开发环境

一、安装安装brew install go验证go version二、配置GOPATH1. 查看环境变量go env2. 配置环境变量cd ~ls -all查看是否有.bash_profile文件,如果没有,则vim创建。输入如下export GOPATH=/Users/zhangkaizhong/goexport GOBIN=$GOPATH/binexport PATH=$PATH:$GOBIN使立即生效source ~/.bash_profile三、说明GOROOT:安装目录(go语言安装目...阅读全文

简书 2020-05-20 16:53:41 zhangkaizhong

sync pool 源码分析

目的 Many Go programs and packages try to reuse memory either for locality reasons or to reduce GC pressure。 缓解GC压力 GC(garbage collector): 自动垃圾回收,减轻了程序员的压力 减轻压力的同时,也增加了运行时开销。 sync.pool应运而生,设计的目的是用来保存和复用临时对象,减小GC分配,降低GC压力。 Pool设计用意是在全局变量里维护的释放链表,尤其是被多个 ...阅读全文

简书 2020-05-20 16:53:40 7赢月

golang 和 C++ 的内存对齐

内存对齐规则 有效对齐值是固定值和结构体中最长数据类型长度中较小的那个。固定值系统默认为 32 位是 4, 64 位是 8,#pragma pack(n)设置了则是对应的 n。 结构体第一个成员的 offset 为 0,以后每个成员相对于结构体首地址的 offset 都是 min{该成员大小, 有效对齐值}的整数倍,如有需要编译器会在成员之间加上填充字节。 结构体的总大小为 有效对齐值 的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。 C++内存对齐 常见类型占用内存大小 类型/编译器...阅读全文

简书 2020-05-20 16:45:32 玖零儛