时序数据库

什么是时序数据库 简单来说时序数据库就是用来存储时序数据的数据库,而时序数据是基于时间一系列数据,一般来说时序数据是按照时间顺序记录的一序列数据,例如:对某个服务器的性能采集数据,就是一系列时序数据,某个时间点收集服务器的cpu、内存、io等,时间点+性能数据形成一个数据点,一序列的数据点就是时序数据。时序数据库就是专门用来存储这种时序数据的数据库,因为时序数据的特殊性,需要时序数据库能够支持快速的大批量写入、高性能搜索、聚合等 时序数据库的基本概念 metric: 度量,可以类比为关系数据库的...阅读全文

简书 2021-03-07 04:32:42 ayusong870

(一)gof 通过Epoll模型管理连接

本项目地址:gof 一个支持百万连接的websocket框架 本文提及的内容包含在:epoll.go 一、Epoll模型处理数据的流程 关于Linux Epoll模型的原理,这里就不在做过多介绍了,在Nginx、Redis等的网络并发模型方面,有诸多的详细解释。 Epoll模型中,应用是监听Epoll的Wait接口,来等待系统的推送,因此,比之select/poll等的实现方式略微复杂。 在整个Epoll模型的实现中,其主要的内容包括: 1、创建一个全局的句柄(以下称为 GlobalFd),并使...阅读全文

简书 2021-03-07 04:32:41 公式般欢笑

你的内存对齐了吗

谈到内存对齐,早年间玩Java的时候就能偶尔打打交道,为此Java8还提供了个语法糖@Contended来帮助我们解决高速缓存cacheline内存未对齐的伪共享问题。不过Go目前涉及到类似问题,比如内存对齐带来的原子操作的问题还是需要手动处理下,毕竟Russ Cox大佬也发话了 On both ARM and x86-32, it is the caller's responsibility to arrange for 64-bit alignment of 64-bit words acc...阅读全文

简书 2021-03-07 04:32:41 光华路程序猿

创建http service的不同姿势

Golang Golang创建WebServer其实很简单,并不需要象Java一样依赖配置web.xml、不需要写servlet、不需要Tomcat、更不需要Spring这类五花八门的第三方框架,Golang创建WebServer只需要Golang SDK自己足以,在我眼里beego、gin等这类所谓等封装式的框架也是多余的。 1. 最简单方式之一 package main import ( "fmt" "log" "net/http" ) // 这是接口响应和处理函数,从`r`读往`w`里写,...阅读全文

简书 2021-03-07 04:32:39 生活简单些

2021-03-06:go中,公共变量是协程安全吗?赋值操作是原子的吗?为什么?

2021-03-06:go中,公共变量是协程安全吗?赋值操作是原子的吗?为什么? 福哥答案2021-03-06: 这是面试中被问到的。实力有限,真正的答案还不知道。我的想法是a=1是原子操作,a=b不是原子操作。实际开发中,不大可能是a=1这种情况,可以说是协程不安全。 答案1:不是协程安全的,赋值非原子操作,需要加锁要么就做原子操作,否则会引起data race。 评论如下:题016_卓熊 7:39:15Go很多操作并没有做太多处理,还是沿用了c。所以公共变量非协程安全,赋值操作是否原子跟变量...阅读全文

51CTO博客 2021-03-06 22:43:02 福大大

go rpc

1. code1.1 data.godata.go 定义了rpc函数set、get的输入和输出的数据类型package dataconst ( OK = "OK" ErrNoKey = "ErrNoKey")type Err stringtype PutArgs struct { Key string Value string}type PutReply struct { Err Err}type GetArgs struct { Key string}type GetReply struct ...阅读全文

51CTO博客 2021-03-06 19:39:12 mb5fdb0a4002420

go rpc

1. code1.1 data.godata.go 定义了rpc函数set、get的输入和输出的数据类型package dataconst ( OK = "OK" ErrNoKey = "ErrNoKey")type Err stringtype PutArgs struct { Key string Value string}type PutReply struct { Err Err}type GetArgs struct { Key string}type GetReply struct ...阅读全文

51CTO博客 2021-03-06 19:39:06 mb5fdb0a4002420

2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMA

2021-03-05:go中,io密集型的应用,比如有很多文件io,磁盘io,网络io,调大GOMAXPROCS,会不会对性能有帮助?为什么?福哥答案2021-03-05: 这是面试中被问到的。实力有限,真正的答案还不知道。 答案1:调节这个参数影响的是P的个数,也就影响了M(线程)干活的个数。相当于你可以有更多的执行线程。先以网络io来说,网络io 在golang 里面是异步的,用epoll池做的io复用。每个网络调用其实都是异步的,发数据给到内存,调度权就可以让给其他goroutine了,所...阅读全文

51CTO博客 2021-03-06 00:05:51 福大大

Deep Learning部署TVM Golang运行时Runtime

Deep Learning部署TVM Golang运行时Runtime介绍TVM是一个开放式深度学习编译器堆栈,用于编译从不同框架到CPU,GPU或专用加速器的各种深度学习模型。TVM支持来自Tensorflow,Onnx,Keras,Mxnet,Darknet,CoreML和Caffe2等各种前端的模型编译。TVM编译模块可以部署在LLVM(Javascript或WASM,AMD GPU,ARM或X86),NVidia GPU(CUDA),OpenCL和Metal等后端上。TVM支持编程语言(...阅读全文

51CTO博客 2021-03-06 10:41:17 mb601cf79d3f881

golang中map与并发

map与并发 我们都知道golang最大的优势在于对并发场景的处理,那么map遇到并发场景会出现什么情况呢?我们先看一个例子 var wg sync.WaitGroup // var lock sync.Mutex func f1(k int, m map[int]int) { // lock.Lock() m[k] = k * k fmt.Println(k, m[k]) // lock.Unlock() wg.Done() } func main() { square := make(map...阅读全文

简书 2021-03-06 10:32:47 阿斯顿法

Golang+chromedp+goquery 简单爬取动态数据

[TOC] Golang+chromedp+goquery 简单爬取动态数据 兵长: 胖sir,最近一段时间正在使用golang来进行开发项目,慢慢的对golang有了一些了解,突然有一天,我想用golang来实现爬取网站上的数据,例如天气预报,每日一句等等,发现这些网站的数据都是javascript动态生成,苦恼呀,不知道如何才能把网站上的动态数据获取下来,为我所用呀,例如我抓取到动态数据之后发邮件给我哟 胖sir撩撩了自己的长发,温和的对兵长说,小伙子,golang做应用开发效率很快的,当然...阅读全文

简书 2021-03-06 10:32:47 小魔童哪吒

Go语言编码规范指导

From:茹姐 https://zhuanlan.zhihu.com/p/63250689 关键字 本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一个说明。该规范参考了 go 语言官方代码的风格制定。 一、 命名规范 命名是代码规范中很重要的一部分,统一的命名规则有利于提高的代码的可读性,好的命名仅仅通过命名就可以获取到足够多的信息。 Go在命名...阅读全文

简书 2021-03-06 10:32:44 潘晓华Michael

leetcode232 用栈实现队列 golang

解题思路 使用栈模拟队列, 栈的特性:先进后出 队列特性:先进先出。 所以可以使用2个栈,S1 pop的数据放到S2那么我们就可以保证 S2 pop出的数据是先进先出的。 代码里没有保证空指针出错。 这里自定义了一个stack,因为go里没有栈,所以用数组进行了模拟,并把栈的相关方法暴露出来。 代码 // 因为go 没有栈这样的数据结果,所以先实现一个栈出来。 type Stack struct{ A []int } func (s *Stack) Push(x int){ s.A = appe...阅读全文

简书 2021-03-06 10:32:43 lucasgao

leetcode503 下一个更大元素 II golang

503. 下一个更大元素 II 解题思路 模拟解法,利用下标优化。 设 A[i]表示数组中下一个大于nums[i]的下标,如果不存在则标记为i。 我们从后向前遍历数组,利用动态规划,所有大于当前下标 current_i 的都已经计算过了。 对于大于 current_i 的下标 j , 如果 nums[j] 大于nums[current_i],则A[i]=j 如果小于,则令 j = A[j],去下一个大于nums[j]的下标。这里有2个case需要处理 如果 j > i && A[j] == j ...阅读全文

简书 2021-03-06 10:32:43 lucasgao

数据结构6:栈、队列、堆

6.1 用两个栈实现一个队列 LeetCode No.232 题目描述:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty): 思路: 两个栈一个栈做队头(出元素),另一个栈做队尾(入元素) 每次push只需要push到尾栈 pop时如果头栈为空则将尾栈全部“倒入”头栈,如果头栈不为空取出栈顶元素返回,否则返回失败(此时队列为空)。 示例代码: type MyQueue struct { stack_head []int stack_t...阅读全文

简书 2021-03-06 10:32:43 HYIndex

手撸golang 基本数据结构与算法 网页排名/PageRank,随机游走

缘起 最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一) 本系列笔记拟采用golang练习之 网页排名(PageRank/佩奇排名), 随机游走 网页排名(PageRank,也叫作佩奇排名)是一种在搜索网页时对搜索结果进行排序的算法。 网页排名就是利用网页之间的链接结构计算出网页价值的算法。 在网页排名中,链入页面越多的网页,它的重要性也就越高。 假设没有链入页面的网页权重为1。 有链入页面的网页权重是其链入页面的权重之和。 如果一个网页链向多个页面,那么其链向的所有页面将平分它的权重...阅读全文

简书 2021-03-06 10:32:42 老罗话编程

如何写 Go 代码

sunset-5990540_1920.jpg 在学完 Go 的语法之后,就可以开始写代码了,但一个项目中不可能只有几个代码文件,而是由很多代码组成,下面这篇文章将告诉你如何组织这些 Go 代码。 原文地址:https://golang.org/doc/code 写在前面 这篇文档演示了基于 Go Modules(模块) 的包的开发流程,并介绍了获取、构建和安装 Go 模块、包、命令时使用的 Go 工具。 注意:这篇文章会假设你在使用 Go1.13或更高版本,并且没有设置 GO111MODULE...阅读全文

简书 2021-03-06 10:32:42 rayjun

手撸golang 基本数据结构与算法 网页排名/PageRank,随机游走

缘起最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)本系列笔记拟采用golang练习之网页排名(PageRank/佩奇排名), 随机游走网页排名(PageRank,也叫作佩奇排名)是一种在搜索网页时对搜索结果进行排序的算法。 网页排名就是利用网页之间的链接结构计算出网页价值的算法。 在网页排名中,链入页面越多的网页,它的重要性也就越高。 假设没有链入页面的网页权重为1。 有链入页面的网页权重是其链入页面的权重之和。 如果一个网页链向多个页面,那么其链向的所有页面将平分它的权重。 在网...阅读全文

Segmentfault 2021-03-10 01:32:33 ioly