切片的内部实现

最近比较忙也没有时间打理专栏,今天决定写一个关于切片的内部实现。 ---- 内部实现 ---- Go中的切片是一种数据结构,切片可以按照自己的方式增长或者减短,切片是一个很小的结构,在我的64位电脑上只有24字节,切片有三个字段如下: type slice struct { array unsafe.Pointer len int cap int } <img src="https://pic3.zhimg.com/v2-2391217d40d19e1e9875b4b518e7428a_b...阅读全文

知乎专栏 2017-08-08 23:59:31 诺唯

跨境电商平台为何抛弃C#转投Go的怀抱

前言:跨境电商平台如何将业务从 C# 转换到 Go 语言,并最终均使用 Go 来实现?怎样从零打造一整套 Go 服务体系?怎样避免遇到转型微服务的坑?本文将通过 ezbuy 的资深开发工程师陈冶在 Gopher China 2017大会上的分享做详细介绍。正文:我们的平台在整个 Go 语言转型过程中涉及到一些微服务的转型,牵扯到微服务,如何管理这些服务,包括环境,这次分享我会从开发环境的构建,微服务选型,分布式追踪和跨数据中心四个方面来说。 一、开发环境构建1、规范开发环境每个人都有自己开发的环...阅读全文

微信公众平台 2017-08-10 陈治

Typed nils in Go 2

This is an experience report about a gotcha in Go that catches every Go programmer at least once. The following program is extracted from a larger version that caused my co-workers to lose several hours today. package main import "fmt" type T struct{...阅读全文

Dave Cheney August 9, 2017 Dave Cheney

TiDB与gRPC的那点事

作者|黄东旭 编辑|雨多田光 通过对 gRPC 的诞生背景与设计原则的介绍,作者分享了 TiDB 选择 gRPC 的原因,并介绍了在这个过程中为了适应 TiDB 而对 gRPC 做出的调整与完善。最后,关于性能方面,介绍了调优的思路。 如果有关注 TiDB 的朋友可能注意到,我们在上个月的 RC3 版本中已经完成了将 TiDB 中的 RPC 框架替换成了 gRPC,这个工作其实已经铺垫了快一年了,如果装逼一点说的话,其实 gRPC 开源的第一天看了一眼设计和哲学,就决定在 TiDB 中使用它。今...阅读全文

微信公众平台 2017-08-09 黄东旭

Golang 学习笔记(1)—— 基础

本文为转载,原文:Golang 学习笔记(1)—— 基础 Golang介绍 Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的开发效率。Go语言语法灵活、简洁、清晰、高效。它的并发特性可以方便地用于多核处理器和网络开发,同时灵活新颖的类型系统可以方便地编写模块化的系统。go可以快速编译,同时具有垃圾内存自动回收功能,并且还支持运行时反射。Go是一个高效、静态类型,但是又具有解释语言的动态类型特征的系统级语法。 语言基础 第一个go程序 我们学习每一门语言都少不了一个hello...阅读全文

简书 2017.08.09 15:25 ChainZhang

10分钟让你明白MySQL是如何利用索引的

一、前言 在MySQL中进行SQL优化的时候,经常会在一些情况下,对MySQL能否利用索引有一些迷惑。 譬如: MySQL 在遇到范围查询条件的时候就停止匹配了,那么到底是哪些范围条件? MySQL 在LIKE进行模糊匹配的时候又是如何利用索引的呢? MySQL 到底在怎么样的情况下能够利用索引进行排序? 今天,我将会用一个模型,把这些问题都一一解答,让你对MySQL索引的使用不再畏惧 二、知识补充 key_len EXPLAIN执行计划中有一列 key_len 用于表示本次查询中,所选择的索引...阅读全文

墨链所填写的《SmartICO V1.1 待评估ICO项目问卷调查》

该问卷调查由墨链团队于2017年8月7日填写,墨链团队对所填内容真实性负责。免责声明:如无明显问题,我们将默认对贵方所填内容保持完全信任,任何由于所填内容的虚假、夸大等不诚信因素所造成的责任或影响,需要贵方自行承担。 问卷调查 说明:对问题作出回答时无需长篇累述,如无要求,通常每个问题的回答不建议超过200个字。1、请简述贵方的项目,包括但不限于应用场景、战略目标、核心技术创新、核心特点等(请用不多于200字尽可能让我们理解该项目)。墨链(InkChain),可概括为三个关键词:独创公有链、文化...阅读全文

简书 2017.08.09 11:15* 币圈王大炮

Golang官方依赖管理工具:dep

在这里声明一下,百度或者google看到的godep不是我这篇博文说的dep,那它们是什么关系呢?按照Peter Bourgon博文来说,它们的作者都有相同的人,但是一个是dep是官方版本,godep是第三方工具。 我今天介绍的是dep,之前也有介绍过glide,有兴趣的可以到Golang依赖管理工具:glide从入门到精通使用看看。 现在还有一个疑问是为什么官方现在要支持依赖管理了呢?我个人认为有如下原因(勿喷,如果不同或者遗漏欢迎留言补充): 第三方依赖管理很多,虽然很好用,但是很少可以兼...阅读全文

开源中国博客 2017-08-09 10:20:34 梦朝思夕

【GO语言】合理配置GOMAXPROCS提升一倍以上的性能

GOMAXPROCS 用默认的,就是CPU的硬件线程数目, 对于大部分IO密集的应用是不合适的。 至少应该配置到硬件线程数目的5倍以上, 最大256。 具体参见。 这是为什么呢? 我们来复习下Go的线程模型,M/P/G 三种对象,分别代表 操作系统线程、协程执行令牌、协程; 在任何情况下,Go运行时并行执行(注意,不是并发)的goroutines数量是小于等于P的数量的。 如果一个持有P的M,由于P当前执行的G调用了syscall而导致M被阻塞,那么: 注意 注意 注意 关键点:此时,GO的调度...阅读全文

开源中国博客 2017-08-09 10:14:40 LinkerLin

Go凭什么击败C++成为证券期货行情系统的首选语言

Golang 由于其高效快速、天然支持并发的显著优势,大大降低了服务的开发门槛,使得企业更易于直接架构业务,这些特性使得越来越多的传统公司技术部门选择拥抱 Go ,并结合自身业务特点摸索出了丰富的实践经验。在由 Go 中国和七牛云联合主办的 Gopher China2017中,来自金大师的技术经理张泽武详细分享了一个使用 Go 语言开发全套证券、期货、行情处理及分发系统。项目背景是在团队成员未完全到位的情况下,使用简单易用的 Go 语言后,用三个月的时间开发完成。并在随后的项目发展中,这套系统逐...阅读全文

微信公众平台 2017-08-09 张泽武

Go database/sql文档

No.1 文档概要 在Golang中使用SQL或类似SQL的数据库的惯用方法是通过 database/sql 包操作。它为面向行的数据库提供了轻量级的接口。这篇文章是关于如何使用它,最常见的参考。 为什么需要这个?包文档告诉你每件事情都做了什么,但它并没有告诉你如何使用这个包。我们很多人都希望自己能快速参考和入门的方法,而不是讲故事。欢迎捐款;请在这里发送请求。 在Golang中你用sql.DB访问数据库。你可以使用此类型创建语句和事务,执行查询,并获取结果。下面的代码列出了sql.DB是一个结...阅读全文

简书 2017.08.08 22:50* 尼古拉斯河马

新手 go 程序员的最佳实践

无意中在 medium 看到了一篇文章《Best practices for a new Go developer》,读完之后略有启发,摘录文章观点至此共飨,感兴趣读者可以直接阅读原文,原文很长也很散乱。 1工欲善其事必先利其器,真正写用 Go 编写代码之前先准备好你的环境,可以考虑从官方文档 How to Write Go Code。 Go 提供了非常优秀的工具来保证代码的风格和质量,比如:gofmt,godoc,goimports,学会使用它们。 对于新手来说不要着急一开始就想要完整的 Go...阅读全文

三月沙 2017-08-08 23:44 三月沙

理解 go 类型系统

type 的分类在 Go 中所有需要被定义和声明的对象都是 type,int,string,function,pointer,interface,map,struct 等等。 和大多数计算机语言一样,Go type 默认包含常用的基础数据类型,boolean,numeric and string,这些类型称为 pre-declarered types,这些基础的数据又可以进一步构成更复杂的类型 array,struct,map,slice,channel 等。 Type 可以是带名称和不带名称的...阅读全文

三月沙 2017-08-08 23:40 三月沙

golang解决import cycle not allowed的一种思路

项目中碰到了一些问题,使用了指针函数的思路来解决相应问题 在实际项目中,因为两个项目互相引了对方的一些方法,导致了循环引用的错误,原本可以使用http的请求来解决,经过其他人指导,发现了可以使用指针函数来解决 这里通过一个简单的例子来说明,首先是例子的结构,我们仅仅用到了这两个文件:ciconnector.go和rockettest.go 例子结构 原本设定的方法是这两个包里的函数互相调用,那么我们通过代码来看下怎么解决相应的问题。 首先是rockettest.go,这里调用了ciconnect...阅读全文

简书 2017.08.08 22:15 南尼喜嘛斯嘎

golang操作json

Encode golang和json的类型对应关系如下: bool类型 -- JSON的Boolean 整数,浮点数等数值类型 -- JSON的Number string -- JSON的字符串(带""引号) struct -- JSON的Object (再根据各个成员的类型递归打包) 数组或切片 -- JSON的Array []byte -- 会先进行base64编码然后转换为JSON字符串 map -- JSON的Object。key必须是string interface{} -- 按照内部...阅读全文

你想做区块链?讲师帮你更好理解区块链的商业逻辑!让我们一起报名EMBA国际总裁班学习吧~

“有有一种特别遗憾的选择叫 “啊,他们都报了国际总裁研修班,就我没时间去?!” 老板,果断一点,就现在 !” 作为总裁班最受学员追捧的课程。金融、保险、证券、物联网、通信、工业等行业最顶尖的精英学员加入区块链EMBA国际总裁研修班,他们马上将在北京会师碰面!EMBA总裁班首期本将于9月19号开课!!! 报名即可入学习班QQ群及微信群与老师和同学直接交流。 报名即享有本期学不会或考试通不过,下期免费再学待遇。 通过课程结业后,颁发“中国区块链EMBA总裁班”结业证书及工业和信息化领域急需紧缺人才培...阅读全文

简书 2017.08.08 16:49* 北邮区块链张权

区块链3.0时代:你现在所有的认知将会被颠覆

从区块链的价值被发现,到区块链应用实际落地之前,区块链一直是个概念性的东西。虽然各大媒体报刊将区块链炒得沸沸扬扬的,世界上诸多国家也对区块链给出了相应的重视,但是除了一些专业人士,很少有人知道它究竟有多重要。麦肯锡公司最近向美国联邦保险咨询委员会提交了一份区块链技术报告,报告把2009年以2016年称为“黑暗时代”,其间所有区块链解决方案都基于比特币,而区块链的新时代将从2016年开始,超过100种区块链技术解决方案已被探索。这意味着区块链已经走出了概念性阶段,接下来就将会跨入区块链3.0时代,...阅读全文

简书 2017.08.08 18:04 北邮区块链张权

在安全的防火墙内如何把 Atom 打造成一款 Golang 的开发利器

之前一直通过 VS Code 或者 Gogland 写 go,说实话个人感觉这两款编辑器对 golang 的支持是很不错的,不过最近看很多人也在使用 Atom 写 go,今天顺手尝试了一下,发现在我国伟大的防火墙的保护下,Atom 插件的安装还真没那么顺利,所以记录了一下解决方案:_ 方案 A: 下载对应系统的 Atom 下载对应系统 nodejs SDK 安装 Atom nodejs 到 PC 执行:npm install -g node-gyp-install 进入用户宿主目录下的:.ato...阅读全文

简书 2017.08.08 14:39* 谢烟客

关于缓存你需要知道的

About Cache 作后端开发的同学,缓存是必备技能。这是你不需要花费太多的精力就能显著提升服务性能的灵丹妙药。前提是你得知道如何使用它,这样才能够最大限度发挥它的功效,并抑制其副作用。本文将介绍最如何正确的添加和更新缓存。 开始之前 这部分将介绍在开始加缓存之前我们必须要做的事情。这步非常重要,如果没弄好,很有可能加了缓存反而不如不加。 为什么要用缓存?对于一个服务其性能瓶颈往往都在DB,传统关系型存储尤甚。我们在创建表的时候,并不会未所有的字段创建索引,这意味着如果我们需要读取非缓存数据...阅读全文