一篇文章理解 golang 中切片与数组的关系

# 起始 在 golang 文档中,对数组与切片有一些详细的讲解,本文主要讲解数组与切片的关系 `由于是个人理解,可能有些偏差,烦请指正` ## 数组 golang 的数组比较简单,我们理解几个概念即可 1. 数组是固定长度与容量,并且具有相同类型的一组值 2. 此定义的数组长度为 5 ,那么容量也会固定为 5 3. 数组的索引都是从 0 开始的 ` 记住,我们在此定义了一个 int 类型的数组,长度容量均为 5,在后面的切片讲解中,我们将对此数组进行切...阅读全文

Go语言中文网 2020-03-06 14:00:25 yccphp

通过例子来学习 Go 和 Rust ---- RwLock 读写锁

读写锁顾名思义就是只允许单进程同时写,在数据没有被写的情况下允许多进程同时读,的锁。 rust 里和 Mutex 类似,使用RAII(Resource Acquisition Is Initialization)来保证在值被Drop的时候自动解锁。而 go 里依然是需要手动解锁。 举个改写自Go标准库测试的栗子 import ( . "sync" "sync/atomic" ) const NumIterations = 1000 const NumReaders = 1000 func wri...阅读全文

Segmentfault 2020-03-08 15:32:33 Tericoder

使用Go语言创建静态文件服务器

上篇关于Go模板库应用的文章最后我们留下一个问题,页面模板是通过CDN引用的BootStrap的css,js文件。到目前位置我们的服务器还无法伺服客户端的静态文件请求把服务器磁盘上的文件响应给客户端。使用和配置过Nginx服务器的一定知道Nginx天然支持静态资源的访问,那么我们是不是也要借助Nginx才能实现处理静态文件请求呢?其实不是,在最开始的文章我们说过“Go语言不需要依赖任何第三方组件就能构建并启动一个高并发的 HTTP 服务器。”,这篇文章就让我们了解一下如何用Go语言的net/ht...阅读全文

掘金 2020年03月06日 kevinyan

一位 Rust 开发者的 Go 初体验

作者介绍:Nick Cameron,PingCAP 研发工程师,Rust 语言核心成员。 感谢 Rust 语言中文社区伙伴们的翻译和审校: 翻译:尚卓燃 审校:吴聪、张汉东 过去几周,我一直在用 Go 语言编写程序。这是我首次在大型且重要的项目中使用 Go。在研究 Rust 的特性时,我也看了很多关于 Go 的内容,包括体验示例和编写玩具程序。但真正用它编程又是一种完全不同的体验。 我觉得把这次体验写下来应该会很有趣。在这篇文章中,我会尽量避免将 Go 与 Rust 进行过多的比较,不过,由于我...阅读全文

掘金 2020年03月06日 PingCAP

MapReduce:在大型集群上简化数据处理(1)

特别说明 这是一个由simviso团队所组织进行的基于mit分布式系统课程翻译的系列,由知秋带领和其他成员一起翻译的课程以及课程当中涉及的论文翻译。本文章参与人员 参与人员 参与范围 知秋 审校 虚生花 翻译 概要 MapReduce是一种编程模型,它是一种用于处理和生成大型数据集的实现。用户通过指定一个用来处理键值对(Key/Value)的map函数来生成一个中间键值对集合。然后,再指定一个reduce函数, 它用来合并所有的具有相同中间key的中间value 。现实生活中有许多任务可以通过该...阅读全文

Segmentfault 2020-03-08 12:32:34 知秋o

足球赔率数据爬虫分析一体化的项目

项目地址 [](https://github.com/monomania/...https://github.com/monomania/foot 项目介绍 热衷于足球多年,之余也会去研究一下,时间久了,都会有自己的心得. 但不可能每次都那么费劲的自己人工去看盘分析, 所以结合所学,就有这个项目.演示公众号: AI球探(ai00268) foot-parent 是一个集足球数据采集器,简单分析,同步到微信及其他发布平台一体化的项目. 程序采用go语言开发,项目结构清晰完整,非常容易入手并进行二次...阅读全文

Segmentfault 2020-03-07 23:32:34 aoe5188

使用Go语言创建静态文件服务器

上篇关于Go模板库应用的文章最后我们留下一个问题,页面模板是通过CDN引用的BootStrap的css,js文件。到目前位置我们的服务器还无法伺服客户端的静态文件请求把服务器磁盘上的文件响应给客户端。使用和配置过Nginx服务器的一定知道Nginx天然支持静态资源的访问,那么我们是不是也要借助Nginx才能实现处理静态文件请求呢?其实不是,在最开始的文章我们说过“Go语言不需要依赖任何第三方组件就能构建并启动一个高并发的 HTTP 服务器。”,这篇文章就让我们了解一下如何用Go语言的net/ht...阅读全文

Segmentfault 2020-03-08 14:32:33 Kevin

GO的第一天,声明和变量

其实之前有自学过go的基础,但是时隔蛮久的,然后也没有去经常性的使用,现在重头开始学习啦 声明 声明语句定义了程序的各种实体对象以及部分或全部的属性。Go语言主要有四种类型的声明语句:变量(var)、常量(const)、类型(type)和函数(func)实体对象的声明。一个Go语言编写的程序对应一个或多个以.go为文件后缀名的源文件中。每个源文件编写顺序是 说明该源文件是属于哪个包。 package main 包声明语句之后是import语句导入依赖的其它包 import "fmt" 然后是包一...阅读全文

Segmentfault 2020-03-08 10:32:32 Mr_J

leetcode_200

Golang: 思路:这题虽然是M*N的时间复杂度,但使用并查集,好像会极大的减少时间复杂度。推测起来,要么我执行了太多的修改操作,要么计算机在处理二维数组上难度大于一维数组。 代码如下: func numIslands(grid [][]byte) int { arr:=make([]int,len(grid)*len(grid[0])) for i,_:=range arr{ arr[i]=i } res:=0 r:=len(grid) c:=len(grid[0]) for i:=0;i<...阅读全文

简书 2020-03-05 21:33:09 淳属虚构

leetcode_547

Golang: 思路:简单的并查集问题 代码如下: func findCircleNum(M [][]int) int { res:=len(M) students:=make([]int,len(M)) for k,_ :=range students{ students[k]=k } for i:=0;i<len(M);i++{ for j:=i;j<len(M);j++{ if M[i][j]==1 { res-=UnionFriends(students,i,j) } } } retur...阅读全文

简书 2020-03-05 21:33:08 淳属虚构

leetcode_684

Golang: 思路:依旧是并查集 代码如下: func findRedundantConnection(edges [][]int) []int { arr:=make([]int,len(edges)) for k,_:=range arr{ arr[k]=k } for _,v:=range edges{ if findUnion(arr,v[0])!=findUnion(arr,v[1]) { UnionVertex(arr,v[0],v[1]) }else{ return []int{...阅读全文

简书 2020-03-05 21:33:07 淳属虚构

golang里面和证书相关的几个概念和函数

golang里面和证书相关的几个概念和函数API 什么是PEM, DER 证书是一个结构化的数据结构 结构化的数据结构可以按照ans.1的格式定义成字节流的方式。 把上述字节流使用DER进行编码,就得到证书的DER 把DER进行based64编码,就得到PEM 所以什么是PEM:it's just a base64 encoding of a DER-encoded stream 看一个例子: $ cat cert.pem -----BEGIN CERTIFICATE----- MIICFjCC...阅读全文

简书 2020-03-05 21:33:06 CodingCode

Python教程分享怎样高效学习Python

众所周知,Python语言简洁、功能强大,被看做是人工智能时代最佳的编程语言。然而golang语言的出现正在威胁Python的地位,试图取代Python成为机器学习以及AI的主流编程语言。有人好奇未来几年Python就业前景如何,如果想要从事Python开发又应该怎样高效学习Python呐?且看分析。 未来几年Python就业前景依旧广阔 Python使用广泛,且用途太多。它是一种编程语言,可以将数千个组件从单独的模块编译为整个的开发程序包。Python还有一个强大的社区,并有望在未来数十年间保...阅读全文

简书 2020-03-05 21:33:05 好程序员特训营

不用加减乘除做加法

题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路 1.此问题可以使用位运算求解。 2.两个数字异或(^)的话,可以得到两数相加不进位的结果;两个数字相与(&)的并左移一位,可以得到需要进位的位数。 例如:5+7 = 1100,第一位和第三位有进位(1010),不进位结果为(2) 101 ^ 111 = 0010 101 & 111 = 1010 可以写个循环,将异或结果与进位情况一直相与(&),若不为0,说明还是有进位情况,需要进行操作;若为0,则说...阅读全文

简书 2020-03-05 21:32:47 youzhihua

Golang 通过 Consul 实现分布式锁

Golang 通过 Consul 实现分布式锁 Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务...阅读全文

简书 2020-03-05 21:32:46 yixiao9206

golang 源码剖析(4): 垃圾回收

基本概念 三色标记和写屏障 起初所有的对象都是白色 扫描所有的可达对象,标记为灰色,放入待处理队列 从队列中提取灰色对象,将其引用的对象标记成灰色放入队列,自身标记为黑色 写屏障监视对象内存修改,重新标色或者放回队列. 当完成全部的扫描和标记工作后,剩余的只有白色和黑色两种,分别代表待回收和活跃对象,清晰操作只需将白色对象内存回收即可。 流程 可分为以下几步: 扫描 a. 设置STW(stop the world,暂停用户进程) . 这将导致所有的Ps都到GC的安全点.在这里无法做内存操作. b...阅读全文

简书 2020-03-05 21:32:43 darcyaf

10分钟将你的Go工程转换为Go Module模式

引言自从在Go 1.11和更高版本中引入了Go的新的依赖管理系统以来,GoLang开发人员已经接受了包版本控制解决方案。这样做的用户可以使用GoCenter存储库中的不可变公共Go 模块,并通过更健壮、更可靠的Go Pipeline获得更快的构建速度。但是,将现有的项目转换为使用Go Module并不总是很容易,尤其是如果该项目已经尝试过GoLang的其他包管理解决方案时。为了帮助GoLang社区正确地使用Go Module,我们将使用开源的etcd项目(Kubernetes使用的键值数据存储)...阅读全文

Go语言中文网 2020-03-05 18:25:06 JFrogChina