第一节 如何用Go实现单链表

一、概念介绍 下面这副图是我们单链表运煤车队。 每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据。前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车厢,却不知道前面是哪节车厢拉的自己。第一节车厢没有任何车厢拉它,我们就叫它车头,第五节车厢后面拉其他 ... »

go微服务框架go-micro深度学习(二) 入门例子

上一篇帖子简单介绍了go-micro的整体框架结构,这一篇主要写go-micro使用方式的例子,中间会穿插一些go-micro的源码,和调用流程图,帮大家更好的理解go-micro的底层。更详细更具体的调用流程和细节,会在以后的帖子里详细讲解。 例子的github地址: gomicrorpc 跑一遍 ... »

解决go get golang.org上的包被墙的问题

:今天get grpc包的时候发现拉不下来被墙了,在github.com上搜索golang,进入仓库找到对应的包,下载下来,install了一下,拿到了一些丢失的依赖包,比如: 从github上的golang库中一个一个找到对应的包,下载下来解压到指定的目录中,再install grpc成功,问题解 ... »

go微服务框架go-micro深度学习(一) 整体架构介绍

产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线都会牵一发而动全身。项目微服务化,松耦合模块间的关系,是一个很好的选择,随然增加了维护成本,但是还是很值得的。 微服务化项目 ... »

游戏服务器所需知识点总结

之前在做注册登录服务器逻辑时,遇到的一些要点难点,记录于此。 一、基础必备技能 1,掌握至少一门用于后端开发的编程语言,如C/C++、Java、Go等; 2,理解TCP/UDP的机制,Socket编程,分包粘包实现的原理; 3,Protobuf协议,RPC协议; 4,数据库操作,例如MySQL,Re ... »

golang 使用pprof做性能优化

软件开发过程中,项目上线并不是终点。上线后,还要对程序的取样分析运行情况,并重构现有的功能,让程序执行更高效更稳写。 golang的工具包内自带pprof功能,使找出程序中占内存和CPU较多的部分功能方便了不少。加上uber的火焰图,可视化显示,让我们在分析程序时更简单明了。 pprof有两个包用来 ... »

gocommand:一个跨平台的golang命令行执行package

最近在做一个项目的时候,需要使用golang来调用操作系统中的命令行,来执行shell命令或者直接调用第三方程序,这其中自然就用到了golang自带的exec.Command. 但是如果直接使用原生exec.Command会造成大量的重复代码,网上搜了一圈又没有找到对exec.Command相应的封 ... »

I-team 博客全文检索 Elasticsearch 实战

一直觉得博客缺点东西,最近还是发现了,当博客慢慢多起来的时候想要找一篇之前写的博客很是麻烦,于是作为后端开发的楼主觉得自己动手丰衣足食,也就有了这次博客全文检索功能Elasticsearch实战,这里还要感谢一下‘辉哥’赞助的一台服务器。 <! more 全文检索工具选型 众所周知,支持全文检索的工 ... »

go 利用orm简单实现接口分布式锁

在开发中有些敏感接口,例如用户余额提现接口,需要考虑在并发情况下接口是否会发生问题。如果用户将自己的多条提现请求同时发送到服务器,代码能否扛得住呢?一旦没做锁,那么就真的会给用户多次提现,给公司带来损失。我来简单介绍一下在这种接口开发过程中,我的做法。 第一阶段: 我们使用的orm为xorm,提现表 ... »

golang 重构博客统计服务

欢迎关注楼主与他的小伙伴们的小站,每周分享一些技术文章,让我们在技术上一起成长 "戳这里,欢迎光临小站 _ " 作为一个后端开发,在docker,etcd,k8s等新技术不断涌现的今天,其背后的功臣golang在语言排行榜上持续走高,因此楼主也就开了这次使用golang自己开发的基础功能的二次装逼之 ... »

Golang vs PHP 之文件服务器

前面的话 作者为golang脑残粉,本篇内容可能会引起phper不适,请慎读! 前两天有同事遇到一个问题,需要一个能支持上传、下载功能的HTTP服务器。我刚好弄过,于是答应帮他搭一个。 HTTP服务器,首先想到的就是PHP + nginx。于是开撸,先写一个PHP的上传 好了,写好了!需求完成了!测 ... »

Hulu大规模容器调度系统Capos

Hulu是美国领先的互联网专业视频服务平台,目前在美国拥有超过2000万付费用户。Hulu总部位于美国洛杉矶,北京办公室是仅次于总部的第二大研发中心,也是从Hulu成立伊始就具有重要战略地位的分支办公室,独立负责播放器开发,搜索和推荐,广告精准投放,大规模用户数据处理,视频内容基因分析,人脸识别,视 ... »

golang实现mysql数据库备份

背景 navicat是mysql可视化工具中最棒的,但是,在处理视图的导入导出方面,它是按照视图名称的字母顺序来处理的,若视图存在依赖,在导入过程中就会报错。前面已经用python写了一个,但在使用过程中,遇到xfffd编码,python的pymysql会直接崩溃。发现golang没有这个问题,正好 ... »

Go 学习之路:Println 与 Printf 的区别

Println 和Printf 都是fmt包中公共方法;在需要打印信息时常用的函数,那么二函数有什么区别呢? 附上代码 运行结果 结果可知 Printf : 可打印出格式化的字符串, Println 不行; 稍做修改下 结果 原因 看到源码内容,相信你大致明白两函数的区别了吧~; 总结一句话: pr ... »

Golang Context 详细介绍

Golang context 本文包含对context实现上的分析和使用方式,分析部分源码讲解比价多,可能会比较枯燥,读者可以直接跳过去阅读使用部分。 一、简介 作者所讲的context的包名称是: "golang.org/x/net/context" ,希望读者不要引用错误了。 在godoc中对c ... »

golang 中 string 转换 []byte 的一道笔试题

背景 去面试的时候遇到一道和 string 相关的题目,记录一下用到的知识点。题目如下: 问以上代码的输出是什么。 分析 很容易可以看出 s 和 ps 代表同一个 string,b 和 pb 代表同一个 byte 的切片。关键在于 根据 "The Go Programming Language" 的 ... »

从零搭建基于golang的个人博客网站

"原文链接" : http://www.bugclosed.com/post/14 从零搭建个人博客网站需要包括云服务器(虚拟主机),域名,程序环境,博客程序等方面。 "本博客" 就是通过这几个环节建立起来的,下面总结梳理一下环节的具体过程。 云服务器 博客程序需要有一个服务器部署和运行,所以首先需 ... »

golang项目中使用条件编译

golang项目中使用条件编译 C语言中的条件编译 golang中没有类似C语言中条件编译的写法,比如在C代码中可以使用如下语法做一些条件编译,结合宏定义来使用可以实现诸如按需编译release和debug版本代码的需求 golang中的条件编译 golang支持两种条件编译的实现方式 build ... »

go redigo的简单操作

golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别上redigo更像一个client执行各种操作都是通过Do函数去做的,redis-go对函数的封装更好,相比之下redigo操作redis显得有些繁琐。但是官方更推荐redigo,所以项目中我使用了red ... »

golang 常见疑惑总结

经常会有一些朋友问go语言的一些问题和疑惑,其实好多问题在官方文档和stackoverflow里都有详细的讲解,只要你肯花时间读一遍官方文档和Effective Go基本上都有找到答案。本文总结一下大家经常问到的一些问题,长期更新。 代码都在github上, 地址 https://github.co ... »