Go 大数据生态迎来重要产品 CDS

项目地址:https://github.com/tal-tech/cdsClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它有着优异的性能,可以快速部署和运行。不过要想使用ClickHouse搭建起数仓用于数据分析,一个重要的问题就是数据如何进入ClickHouse?我们希望数据源的变化能够自动实时地被同步到ClickHouse,而且支持方便的动态的添加新的数据源(新的数据库,表),能够自动的生成对应数据源的schema。go-zero 团队使用go语言围绕Cl...阅读全文

Segmentfault 2020-11-27 12:32:38 kevinwan

go/golang vim 高亮显示

关于linux下,vim *.go 代码的高亮问题解决方案:golang的安装包自带了vim高亮插件,但只提供到了go1.3版本,后续版本不再集成(注意: go1.10大于go1.3)golang安装包下载https://golang.org/dl/这里我下载的是go1.3.3wget https://golang.org/dl/go1.3.3.linux-amd64.tar.gztar -zxvf go1.3.3.linux-amd64.tar.gzmkdir ~/.vimcp -r go/m...阅读全文

简书 2020-11-27 00:32:48 unspace

一看就懂的:MySQL数据页以及页分裂机制,别在说不会了

下面我们就一起看下,究竟什么是MySQL的数据页、数据区等概念。 二、数据页长啥样? 数据页长下面这样: image.png 三、什么是数据区? 在MySQL的设定中,同一个表空间内的一组连续的数据页为一个extent(区),默认区的大小为1MB,页的大小为16KB。16*64=1024,也就是说一个区里面会有64个连续的数据页。连续的256个数据区为一组数据区。 于是我们可以画出这张图: image 从直观上看,其实不用纳闷为啥MySQL按照这样的方式组织存储在磁盘上的数据。 这就好比你搞了个...阅读全文

简书 2020-11-27 00:32:48 马士兵老师

Go语言在循环中panic后还能继续执行for循环?

问题背景 如下的例子,要打印100以内能被5整除的数,以panic的方式选择出来并打印。 如果用下面的方式,执行到第一个panic就会跳出for循环 func main() { defer func() { if err:=recover();err!=nil{ log.Println(err) } }() for i := 0; i < 100; i++ { if i%5==0{ panic(fmt.Sprintf("%d 能被5整除,模拟panic",i)) } } } 只能输出第一个匹配项...阅读全文

聊聊TCP连接耗时的那些事儿

在互联网后端日常开发接口的时候中,不管你使用的是C、Java、PHP还是Golang,都避免不了需要调用mysql、redis等组件来获取数据,可能还需要执行一些rpc远程调用,或者再调用一些其它restful api。在这些调用的底层,基本都是在使用TCP协议进行传输。这是因为在传输层协议中,TCP协议具备可靠的连接,错误重传,拥塞控制等优点,所以目前应用比UDP更广泛一些。相信你也一定听闻过TCP也存在一些缺点,那就是老生常谈的开销要略大。但是各路技术博客里都在单单说开销大、或者开销小,而少...阅读全文

简书 2020-11-27 00:32:46 誉天education

golang笔记

切片和数组 var a [2]int 定义的是一个2长度的数组 var b []int 定义的是一个切片 b=a 这个赋值在语法上是不成立的 var matrixA [][2]int a=matrixA[0] 因为是数组的拷贝,这里进行值拷贝 var matrixB [][]int b = matrixB[0] 因为是切片的拷贝,这里只是一个指针引用,修改数组中的值会影响b 不定长参数/variadic function 参数定义形式 func sum(nums ...int) 这里的nums可...阅读全文

简书 2020-11-27 00:32:39 羽色云烟

关于Golang的结构体与指针不得不提的二三事

之前在学C++的时候,指针的用法就困惑了很久。后来有了计算机体系结构基础后,再加上Golang的一些说明,就突然明白了,之前纠结的点在哪里。 其实让我明白的只是因为Go tour中的两句话: Struct fields can be accessed through a struct pointer. 结构体字段可以使用结构体指针获取。 To access the field X of a struct when we have the struct pointer p we could wri...阅读全文

简书 2020-11-27 00:32:39 三水L

【go系列2】 关于go中与java C++中应该注意的语法糖以及不同点

背景 最近在用golang写k8s operator(其中涉及到informer controler )用于内部调度平台用,刚好借此机会能够与java版本的 informer controller进行对比,由于之前对golang没怎么接触过,遇到了和java c++不同的语法糖,现在列举一下: 具体不同 golang中struct golang中没有class的概念,但是有struct,而且可以给struct增加方法,如下: type Member struct { Id int `json:"...阅读全文

简书 2020-11-27 00:32:39 鸿乃江边鸟

Golang-接口(interface)

接口(interface) 接口是一种类型 最初的int、string、bool,再到稍微复杂的Array、Map、Slice。他们都称之为基础数据类型,以及到多维度符合类型的结构体。以及今日咱们所需要学习的接口。 在Go语言编程中,Go(强类型语言),也就是说必须是一种具体的类型,当我们需要只关注能调用它的什么方法,而不关注它是什么类型,该怎么办呢? Go语言中为了解决类似上面的问题,就设计了接口这个概念。接口区别于我们之前所有的具体类型,接口是一种抽象的类型。当你看到一个接口类型的值时,你不...阅读全文

简书 2020-11-27 00:32:39 Payne_Wu

聊聊golang的零值

序本文主要研究一下golang中的零值zero value初始化时没有赋值的变量的默认值如下:false for booleans0 for numeric types"" for stringsnil for pointers, functions, interfaces, slices, channels, and maps访问nil实例package main import ( "encoding/json" "fmt" ) // https://golang.google.cn/ref/...阅读全文

Segmentfault 2020-11-27 12:32:38 codecraft

Go语言中 os/exec 执行命令的五种姿势

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime --- 在 Golang 中用于执行命令的库是 `os/exec`,exec.Command 函数返回一个 `Cmd` 对象,根据不同的需求,可以将命令的执行分为三种情况 1. 只执行命令,不获取结果 2. 执行命令...阅读全文

Go语言中文网 2020-11-26 21:34:54 hello_wbm

超全整理!fmt.Printf 方法速查指南

![](http://image.iswbm.com/20200607145423.png) 在线博客:http://golang.iswbm.com/ Github:https://github.com/iswbm/GolangCodingTime ## 1. fmt 的三大函数对比 `fmt` 标准库是我们在学习和编写 Go 代码,使用最频繁的库之一。 在新手阶段,通常会使用 fmt 包的 打印函数来查看变量的信息。 这样的打印函数,有三个 1....阅读全文

Go语言中文网 2020-11-26 21:33:37 hello_wbm

【go系列2】 关于go中与java C++中应该注意的语法糖以及不同点

背景最近在用golang写k8s operator(其中涉及到informer controler )用于内部调度平台用,刚好借此机会能够与java版本的 informer controller进行对比,由于之前对golang没怎么接触过,遇到了和java c++不同的语法糖,现在列举一下:具体不同golang中structgolang中没有class的概念,但是有struct,而且可以给struct增加方法,如下:type Member struct { Id int `json:"id"` ...阅读全文

Segmentfault 2020-11-27 12:32:37 鸿乃江边鸟

Linux 容器和 Namespace

如今云原生技术可以说是互联网最火的概念之一,作为云原生技术的重要基石 -- “容器” 技术,想必从业者早有学习并大量的运用在工作和日常开发中。 假如有人问你 “什么是容器?”, 你的答案是什么? 容器就是 Docker 吗?它和虚拟化技术有什么区别和联系?它的实现原理又是什么? 这篇文章主要通过 容器和虚拟化技术的对比,容器和 Linux Namespace 的关系,以及 Namespace 的初体验 三个模块让大家更了解什么是容器,以及容器实现的底层技术支撑 -- Liunx...阅读全文

Go语言中文网 2020-11-26 17:45:00 wewin

免费送书啦!细数Github大神们的开源书籍!

作者 | 弗拉德 来源 | 弗拉德(公众号:fulade_me) Go 系列 2 《Mastering GO》 推荐语:本书适用于Golang程序员。您之前应该阅读有关Go的介绍性书籍。本书的内容包括但不限于并发、网络编程、垃圾回收、组合、GO UNIX系统编程、基本数据类型(Array,Slice,Map)、GO源码、反射,接口,类型方法等高级概念。阅读本书需要一定的编程经验。如果你在工作中使用Go或者业余时间爱好GO,那么这本书一定会让你对GO的理解更上一层楼。 领取地址 6 《Go语法树入...阅读全文

简书 2020-11-26 14:32:53 弗拉德x

为什么读源码之sync.Pool

前言我们为什么要读源码?因为我们只有深入到实现原理,才能了解他的优势,架构和核心原理能帮助我们快速定位问题。避免重复造轮子,借鉴思想。今天我们就来看下sync.pool的源码type Pool struct { noCopy noCopy local unsafe.Pointer // 本地固定大小的池子。等价于每个P一个池子 [p] p是索引ID localSize uintptr // 本地数组大小 // New optionally specifies a function to gene...阅读全文

Segmentfault 2020-11-27 12:32:37 xiaowei520

微服务框架Go-Micro集成Nacos实战之服务注册与发现

简介:本文主要介绍如何使用 Golang 生态中的微服务框架 Go-Micro(v2) 集成 Nacos 进行服务注册与发现。(Go-Micro 目前已经是 v3 版本,但由于某些原因项目已经更名为 nitro 具体原因大家可以去 github 中查看) 相关背景知识 Go-Micro Go Micro 是一个基于 Go 语言编写的、用于构建微服务的基础框架,提供了分布式开发所需的核心组件,包括 RPC 和事件驱动通信等。 它的设计哲学是「可插拔」的插件化架构,其核心专注于提供底层的接口定义和基...阅读全文

简书 2020-11-26 11:33:17 阿里云云栖号

微服务框架Go-Micro集成Nacos实战之服务注册与发现

相关背景知识 Go-Micro Go Micro 是一个基于 Go 语言编写的、用于构建微服务的基础框架,提供了分布式开发所需的核心组件,包括 RPC 和事件驱动通信等。 它的设计哲学是「可插拔」的插件化架构,其核心专注于提供底层的接口定义和基础工具,这些底层接口可以兼容各种实现。例如 Go Micro 默认通过 consul 进行服务发现,通过 HTTP 协议进行通信,通过 protobuf 和 json 进行编解码,以便你可以基于这些开箱提供的组件快速启动,但是如果需要的话,你也可以通过符合...阅读全文

简书 2020-11-26 11:33:03 阿里云技术