Golang应用领域

1.区块链的应用开发区块链应用区块链技术,简称BT(Blockchain technology),也被称为分布式账本技术,是一种互联网数据库技术,其特点时去中心化、公开透明,让每个人均可参与数据库记录。2.后台的服务应用后端服务器应用美团后台流量支撑程序,支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标(qps,latency)等功能。3.云计算/云服务后台应用盛大云CDN(内容分发网络)应用范围:CDN的调度系统、分发系统、监控系统、短域名服务,...阅读全文

简书 2020-02-20 09:32:45 阿泽记录生活记录爱

1.golang从零搭建游戏服务器框架 之 实现最简单的回显服务器

写在前面的话 首先,我是一个golang语言的初学者, 这里纯粹是学习笔记,以便以后返回来查找,防止遗忘。文章内容来源于 刘丹兵老师的教程, 大家可以直接去看老师的视频来进行学习。 需求分析 搭建一个最基础的服务器框架,实现客户端向服务器发送一条数据,服务器将该数据返回到客户端 根据需求,对服务器进行如下的设计 图片.png 编码实施 首先,先建立我们的目录结构 在自己golang环境的src目录下 新建文件下 zinx,这是我们游戏框架的名称(沿用了视频中的名称), 然后,在zinx目录下新建...阅读全文

简书 2020-02-20 09:32:44 孟安乐Aaron

golang的排序功能

golang的排序功能 首先明确两个基础概念 排序基本上针对slice类型 可排序的元数据类型有整数,浮点数,和字符串 接着讨论元数据类型的排序 sort模块提供了函数给元数据类型排序。 func Ints(a []int) func Float64s(a []float64) func Strings(a []string) 然后到排序怎么处理呢 func Reverse(data Interface) Interface 这个函数的用法很奇怪,下面用例子说明: 数据类型sort.Interf...阅读全文

简书 2020-02-20 09:32:43 CodingCode

golang语言map的并发和排序

golang语言map的并发和排序 map的并发问题 golang缺省的map不是thread safe的,如果存在读写并发的使用场景,必须在外面使用lock机制。 包sync里面引入一个安全map; type Map struct func (m *Map) Store(key, value interface{}) func (m *Map) Load(key interface{}) (value interface{}, ok bool) func (m *Map) Range(f fu...阅读全文

简书 2020-02-20 09:32:42 CodingCode

Go语言的诞生小故事

1.Go语言的核心开发团队-三个大牛Ken Thompson(肯-汤普森):1983年图灵奖(Turing Award)和1988年美国国家技术将(National Medal of Technology)得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言,同时也是贝尔实验室(Ball Labs)的Unix团队,和Plan 9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8字节编码。Robert Giese...阅读全文

简书 2020-02-20 09:32:42 阿泽记录生活记录爱

Dig101:Go之灵活的slice

Dig101: dig more, simplified more and know more Slice作为go常用的数据类型,在日常编码中非常常见。相对于数组的定长不可变,slice使用起来就灵活了许多。 0x01 slice 到底是什么? 首先我们看下源码中slice结构的定义 // src/runtime/slice.go type slice struct { array unsafe.Pointer len int cap int } slice数据结构如上,Data指向底层引用的数...阅读全文

Segmentfault 2020-02-21 15:32:39 newbmiao

图解kubernetes资源QOS机制实现原理

QOS是k8s中一种资源保护机制,其主要是针对不可压缩资源比如的内存的一种控制技术,比如在内存中其通过为不同的Pod和容器构造OOM评分,并且通过内核的策略的辅助,从而实现当节点内存资源不足的时候,内核可以按照策略的优先级,优先kill掉哪些优先级比较低(分值越高优先级越低)的Pod,今天来分析下背后的实现 1.关键基础特性 1.1 一切皆文件 在Linux中一切皆文件,控制CGroup本身也是通过配置文件进行的,这是我创建的一个内存Lmits为200M的Pod的容器的配置 # pwd /sys...阅读全文

Segmentfault 2020-02-21 15:32:39 仔仔

golang快速入门[5.2]-go语言是如何运行的-内存概述

前文golang快速入门[2.1]-go语言开发环境配置-windowsgolang快速入门[2.2]-go语言开发环境配置-macOSgolang快速入门[2.3]-go语言开发环境配置-linuxgolang快速入门[3]-go语言helloworldgolang快速入门[4]-go语言如何编译为机器码golang快速入门[5.1]-go语言是如何运行的-链接器前言总的来说一个程序的生命周期可以概括为: 编写代码 => 编译 => 链接 => 加载到内存 => 执行在上一篇文章中,我们详细介...阅读全文

51CTO博客 2020-02-19 15:18:18 jonson_jackson

从游击队到正规军(三):基于Go的马蜂窝旅游网分布式IM系统技术实践

本文由马蜂窝技术团队电商交易基础平台研发工程师"Anti Walker"原创分享。 一、引言 即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商。 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣、食、住、行等方方面面。从消费金额来看,往往单次消费额度较大。对目的地的陌生、在行程中可能的问题,这些因素使用户在购买前、中、后都存在和商家沟通的强烈需求。可以说,一个好用的 IM 可以在一定程度上对企业电商业务的 GMV 起到促进作用。 本文我们将结合马蜂窝旅游电商IM系统的发...阅读全文

Segmentfault 2020-02-21 15:32:38 JackJiang

ETCD探索

ETCD探索 梗概 这篇文章旨在从源码角度分析ETCD MVCC、Lease、Watch的实现,帮助我们更好的使用ETCD。 ETCD是什么? 这是ETCD官网给出的解释,ETCD是一个KV存储。现在有太多的KV存储中间件,我们为什么要选择ETCD呢?原因就是这句话:"distributed", "reliable",ETCD是一个分布式的、可靠的KV存储。相比于Redis,ETDC不够快,但足够安全,可靠。每一个中间件都有自己的特点,我选择ETCD有两个原因: ETCD是GO写的,所以GO用起...阅读全文

Segmentfault 2020-02-21 15:32:37 HammerMax

ETCD探索-Lease

ETCD探索-Lease 梗概 租约,是ETCD的重要特性,用于实现key定时删除功能。与Redis的定时删除功能基本一致。 猜想 我们通常是这么使用Lease的,首先申请一个租约:lease,然后将这个租约赋给一对KeyValue。ETCD-Lease的实现不难,在讨论怎么实现之前,可以先猜测下。我的直观想法: func putWithLease(key string, value string, ttl int) { go func() { time.Sleep(ttl * time.Sec...阅读全文

Segmentfault 2020-02-21 15:32:37 HammerMax

ETCD探索-Watch

ETCD探索-Watch 梗概 watch是mvcc包中的一个功能,之所以拿出来说,是因为它确实有很重的逻辑。watch是监听一个或一组key,key的任何变化都会发出消息。某种意义上讲,这就是发布订阅模式。 对比 既然Watch机制就是发布订阅模式,我们通过对比Kafka,来更深入了解Watch。首先说明结论: ETCD没有消费者组的概念,所以不能代替Kafka 对比其他方面呢: ETCD Kafka 消费方式 监听一个Key 订阅一个Topic 生产方式 Put(Key, Value) Pr...阅读全文

Segmentfault 2020-02-21 15:32:34 HammerMax

ETCD探索-MVCC

ETCD探索-MVCC MVCC MVCC模块ETCD的存储模块,是ETCD核心模块。 作为一个开源项目,其代码的封装是值得我们学习的。MVCC作为底层模块,对上层提供统一的方法,而这些方法都定义在kv.go这个文件中,很像一个头文件(.h)。我们可以只看kv.go以及配合kv_test.go就可以知道mvcc包是怎么用的。 kv.go type KV interface { ReadView WriteView // Read creates a read transaction. Read(...阅读全文

Segmentfault 2020-02-21 15:32:34 HammerMax

Go语言之父详述切片与数组的不同

切片是Go 语言核心的数据结构,然而刚接触 Go 的程序员经常在切片的工作方式和行为表现上被绊倒。比如,明明说切片是引用类型但在函数内对其做的更改有时候却保留不下来,有时候却可以。究其原因是因为我们很多人用其他语言的思维来尝试猜测 Go 语言中切片的行为,切片这个内置类型在 Go 语言底层有其单独的类型定义,而不是我们通常理解的其他语言中数组的概念。 文章翻译自罗伯·派克发布在 Go Blog 中的文章,文中详述了切片是如何被设计出来的以及其与数组的关联和区别,以及内置append函数的实现细节...阅读全文

掘金 2020年02月19日 kevinyan

leetcode_1207

Golang: 思路:先对数组进行排序,然后计算每个元素出现了几次,存进map里,注意,这里map只是当作一个set来使用的,判断有没有出现重复而已。 代码如下: func uniqueOccurrences(arr []int) bool { if len(arr)<=1 { return true } sort.Ints(arr) m:=make(map[int]int) temp:=1 for i:=1;i<len(arr);i++{ if arr[i]!=arr[i-1] { if _,...阅读全文

简书 2020-02-19 15:32:51 淳属虚构

leetcode_1200

Golang: 思路:这题稍微抓住一个点,在一个有序数组里,最小元素差总是出现在两个相邻的元素间,于是这题就变成了,排序,然后一次遍历。 代码如下: func minimumAbsDifference(arr []int) [][]int { sort.Ints(arr) min:=arr[1]-arr[0] var res [][]int for i:=1;i<len(arr);i++{ if arr[i]-arr[i-1]<min { min=arr[i]-arr[i-1] res=[][]...阅读全文

简书 2020-02-19 15:32:51 淳属虚构

leetcode_1189

Golang: 思路:这个,建立个数组,对应'a','b','l','o','n',每当出现'a','b','n'时,对应数组位置加二,出现'l','o'时,对应数组位置加一,然后遍历数组,找到最小值,除以2即可 代码如下: func maxNumberOfBalloons(text string) int { res:=make([]int,5) for i:=0;i<len(text);i++{ switch text[i] { case 'b': res[0]+=2 case 'a': r...阅读全文

简书 2020-02-19 15:32:50 淳属虚构

leetcode_1033

Golang: 思路:直接把我的题解搬上来吧 对abc进行排序,假定排完序后abc依次递增 条件1:b-a=c-b=1时,最小移动步数为0 条件2:不满足条件1, 那么看下b-a或者c-b有没有小于等于2的,有,那么最小移动步数为1 条件3:不满足条件1 2,那么最小移动步数为2 最大移动步数: 注意,这里是我不太理解的。我觉得以我对题意的理解,这题最大步数不是这么算的,比如 a=0,b=4,c=14 我可以先将a移动到7的位置,移动次数为7,移动后,位置变成[4,7,14] 再将4移动到10,...阅读全文

简书 2020-02-19 15:32:48 淳属虚构

leetcode_1030

Golang: 思路:遍历所有可能出现的r和c,求出曼哈顿距离存进map里,key为曼哈顿距离,value为一个二维数组。全部遍历完成后,根据key值递增,取相应key下的二维数组,全部导进res中,最后返回res 代码如下: func allCellsDistOrder(R int, C int, r0 int, c0 int) [][]int { var res [][]int mp:=make(map[int][][]int) for i:=0;i<R;i++{ for j:=0;j<C;...阅读全文

简书 2020-02-19 15:32:47 淳属虚构

leetcode_1029

Golang: 思路:还是照抄我的题解。 这题题意很明显是贪心了,那么以什么作为尺度呢? 毫无疑问的,应该是一个人去A点和去B点的花费之差 简单来说,我们看[1,1000],那么这个人应该去A点,因为会便宜999元 再来看[10,20],[1,1000],那么第二个人应该去A点,第一个人去B点。因为第一个人去A去B最多便宜10元,第二个人去A去B则可能便宜999元,这就是贪心在这一题的尺度了。 代码如下: type intS [][]int func (s intS) Len() int { r...阅读全文

简书 2020-02-19 15:32:46 淳属虚构