Go 语言在扫码支付系统中的成功实践

今天的内容主要分四个方面。第一,金融支付系统的一些特点;第二,我们的扫码支付系统技术选型;第三,系统迭代过程中的架构演进;第四,与 Go 相关的一些坑。 金融支付系统的一些特点 图 1 首先从业务流程入手,其实非常简单。一位消费者结账时,假如选择扫码支付的方式付款 100 元,产生一笔交易信息。如图 1 所示,我们看上面蓝色的线条,通过商家的收款产品,把这 100 元的交易信息送到我们的扫码支付系统,然后传递到后面的微信、支付宝或者其他支持扫码支付的相应钱包,完成这笔交易信息的传递,完成这笔交易...阅读全文

51CTO博客 2021-04-21 22:26:28 mob604756f0bbf4

Go读取通达信历史日线数据

突然间想使用Go从通达信读取A股历史行情信息,其实也蛮简单的。从通达信获取数据难点在于分析数据结构,而读取则各类语言分分钟搞定。 准备工作 1、下载安装通达信,通达信官网 2、下载历史行情数据 下载操作路径:系统->盘后数据下载 下载后数据按股票市场分别存放: 上海交易所:{通达信安装目录}\vipdoc\sh\lday*.day 深圳交易所:{通达信安装目录}\vipdoc\sz\lday*.day 通达信历史日线数据文件格式 每只股票一个day文件,如:sh000001.day。文件中每一天...阅读全文

51CTO博客 2021-04-21 22:21:08 mob604756f0bbf4

一周 Go World 新鲜事[Asta 优选]

1译)Go 语言的内存、指针详解这是一篇面向即将学习 go 语言并且对指针理念或者 go 的指针类型不是很了解的程序员的内容。 在公众号中回复(非评论)关键词“ 详解 ”即可阅读全文 2《高并发性能调试经验分享(上)》作者在4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug? 凑巧的是,不久之后作者就遇到了这样的问题。在一个项目中需要针对nginx事件框架和openssl协议栈进行了一些深度改造,以提升...阅读全文

51CTO博客 2021-04-21 22:18:25 mob604756f0bbf4

Go 在万亿级大数据平台开发中的实战

导语 迅猛发展的互联网将我们带入了大数据时代,大数据已经成为发展中不可或缺的力量支撑,大数据挑战和机遇并存,如何更好合理、灵活应用大数据是企业的关注所在。七牛大数据团队研发工程师孙健波为大家带来题为Go 在大数据开发中的实战经验的技术分享。以下是此次演讲内容整理。 作者介绍: 孙健波,InfoQ 专栏作者,硕士毕业于浙江大学计算机学院,2015 年底加入七牛,参与并负责七牛大数据平台整条链路多模块的架构设计以及开发工作,包括大数据计算引擎、时序数据库服务以及日志检索服务。在此之前主要研究和参与 ...阅读全文

51CTO博客 2021-04-21 22:17:06 mob604756f0bbf4

如何用Go打造亿级实时分布式出行平台|文末福利

前言 Grab是东南亚最大的出行平台,业务覆盖东南亚7个国家39个城市,APP下载量高达3600000次。随着业务量的持续增长,为了解决系统性能瓶颈,打造一套高可用的系统架构,Grab 从最开始的 rails、nodejs 到完全转向 Go。除了全部的后台服务,每天支撑亿万级数据处理的流式数据系统也是基于 Go 打造的。本文来自 Grab 高级工程师高超在 Gopher China 2017大会上的精彩分享,以下是对他演讲内容的整理。 Grab是一家东南亚出行平台,致力于解决东南亚人民的出行问题...阅读全文

51CTO博客 2021-04-21 22:11:49 mob604756f0bbf4

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

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

51CTO博客 2021-04-21 22:03:52 mob604756f0bbf4

Go大咖说第一期《比特币、区块链和Go开发》

个人介绍姜家志,2013 年开始接触比特币,之后开发了比太钱包,现在在比特大陆从事比特币相关的开发工作。 引言大家好,我是姜家志 首先感谢下谢大神的邀请,能有机会和大家进行交流,我是 2013 年开始接触比特币,当时花了很长时间在了解比特币原理和看比特币的源代码上。 之后我们发现比特币没有好用的钱包,就开发了 "比太钱包"(bither), 比太钱包是中国人开发的唯一的一个上 bitcoin.org 的钱包,截图中就是比太钱包。 另外的一个是 btc.com 钱包是我现在所在的公司开发的钱包,是...阅读全文

51CTO博客 2021-04-21 21:51:36 mob604756f0bbf4

Go2 到底长啥样?

此文翻译自Go官方博客 2007 年 9 月 25 日,Rob Pike,Robert Griesemer 和 Ken Thompson 一直在讨论一种新的编程语言,Rob 建议使用 “Go”。 第二年,Ian Lance Taylor 和我加入了这个团队,我们五个人共同构建了两个编译器和一个标准库,2009 年 11 月 10 日我们开源了相关代码 。 在接下来的两年中,在 Go 开源社区的帮助下,我们尝试了大大小小的变化,改进了 Go,并提出了 2011 年 10 月 5 日发布 Go 1 ...阅读全文

51CTO博客 2021-04-21 21:46:21 mob604756f0bbf4

Go插件系统

在Go 1.8版中引入了一个新的Go插件系统。 此功能使程序员可以使用动态链接库构建松散耦合的模块化程序,可以在运行时动态加载和绑定。 Go语言开发人员,不可避免地会遇到模块化代码的需要。 我们依靠多出来的流程设计如OS exec calls,sockets和RPC/GRPC(等等)的实现代码模块化。虽然这些方法可以很好地工作,但在许多情况下,它们的目的只是为了解决Go以前缺乏的插件系统。 在本文,我探讨了使用Go插件系统创建模块化软件的意义。 本文提供了一个功能齐全的示例,以及有关设计和相关影...阅读全文

51CTO博客 2021-04-21 21:43:13 mob604756f0bbf4

深入理解Go的interface

Understanding Go Interface0. 引言在 Golang 中,interface 是一个非常重要的概念和特性,之前写过两篇相关的文章:Golang “泛型编程”,谈一谈 Golang 的 interface 和 reflect。然后在 Gopher China 2017 的会上又有一个关于 interface 的 topic: understanding golang interface(Gopher China) — youtube,作者是 Francesc。故在此做一个...阅读全文

51CTO博客 2021-04-21 21:40:31 mob604756f0bbf4

Go 原生socket由浅入深

Linux提供了裸socket功能,允许您直接创建一个裸L3/L2数据包,绕过OS socket生成的协议头。这意味着您可以从头开始直接生成自己的链路层或IP层数据包,对检测网络流量或从头开始创建数据包来说这是非常有用的功能 可以使用SOCK_RAW socket类型(这要求进程具有CAP_NET_RAW功能或以root用户身份运行),使用socket()syscall在Linux上使用裸socket。 Go无法通过net包支持raw socket,但是syscalls可以通过syscall包获...阅读全文

51CTO博客 2021-04-21 21:24:55 mob604756f0bbf4

2017年最适合Go新手的十本书

计算机程序设计是写程序的艺术,工艺和科学,它定义了如何进行计算机操作。这里有十二本书,将教你如何使用GO编程语言编写程序。 Go是具有高级功能和干净语法的通用编程语言。由于Go编程语言可以在各种平台上使用,具有良好文档化的通用库。 Go是入门的理想语言。 使用Go语言编写软件的过程主要是,收集要求,找到解决方案,编写源代码以实现其解决方案,将源代码编译成可执行文件,测试和运行Go程序,使其工作。这些过程是迭代的,方法通常是重叠的,所以你会发现google官方指南提供更多关于GO编程语言的指导。 ...阅读全文

51CTO博客 2021-04-21 21:21:16 mob604756f0bbf4

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

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

51CTO博客 2021-04-21 21:58:59 mob604756f0bbf4

Golang 的内存管理(上篇)

Golang 的内存管理基于 tcmalloc,可以说起点挺高的。但是 Golang 在实现的时候还做了很多优化,我们下面通过源码来看一下 Golang 的内存管理实现。下面的源码分析基于 go1.8rc3。 1.tcmalloc 介绍关于 tcmalloc 可以参考这篇文章 tcmalloc 介绍,原始论文可以参考 TCMalloc : Thread-Caching Malloc。 2. Golang 内存管理下面的源码分析基于 go1.8rc3。 0. 准备知识这里先简单介绍一下 Golan...阅读全文

51CTO博客 2021-04-21 21:14:40 mob604756f0bbf4

Go调优神器trace介绍

你想知道你的Go程序在做什么吗? go tool trace可以向你揭示:Go程序运行中的所有的运行时事件。 这种工具是Go生态系统中用于诊断性能问题时(如延迟,并行化和竞争异常)最有用的工具之一。 在我之前的博客文章中,我提到我们在Pusher中使用go tool trace来跟踪为何Go垃圾收集器有很长的停顿时间。 在这篇博文中,我更加深入的介绍go toll trace。 go tool trace 试用go tool trace可以显示大量的信息,所以从哪里开始是个问题。 我们首先简要介...阅读全文

51CTO博客 2021-04-21 21:18:43 mob604756f0bbf4

你还在手撕微服务?快试试 go-zero 的微服务自动生成

0. 为什么说做好微服务很难?要想做好微服务,我们需要理解和掌握的知识点非常多,从几个维度上来说:基本功能层面并发控制&限流,避免服务被突发流量击垮服务注册与服务发现,确保能够动态侦测增减的节点负载均衡,需要根据节点承受能力分发流量超时控制,避免对已超时请求做无用功熔断设计,快速失败,保障故障节点的恢复能力高阶功能层面请求认证,确保每个用户只能访问自己的数据链路追踪,用于理解整个系统和快速定位特定请求的问题日志,用于数据收集和问题定位可观测性,没有度量就没有优化对于其中每一点,我们都需要用很长的...阅读全文

51CTO博客 2021-04-21 20:35:37 wx607fee5b9d0e6

[译]如何避免golang的坑

如何避免golang的坑坑是系统,程序或编程语言中有效的结构,它可以按指定的方式工作,但是以反直觉的方式工作,并且总是引发错误,因为很容易被调用,并且总是触发异常 Go编程语言有一些坑,有很多好文章解释这些坑。我发现这些文章非常重要,特别是对于go新手来说,因为我看到人们经常踩这些坑。 然而有一个问题困扰了我很长时间 - 为什么我从来没踩过这些坑?其中最有名的,像“nil interface”或“slice append”问题从来没有困扰我。我从第一天写go就在某种程度上避免了这些问题。为什么会...阅读全文

51CTO博客 2021-04-21 20:14:49 mob604756f0bbf4

[译]golang 1.8工具链改进

golang 1.8工具链改进本文是关于1.8开发周期中Go工具链改进的进度报告。 现在已经是11月了,golang1.8只剩最后的几个修改列表,剩余的会移到1.9发布,1.8版本于2017年2月发布。 对于本系列的更多内容,请阅读我上一篇关于9月份的Go 1.8工具链改进的文章,以及我在1.7版对Go工具链改进的文章。 更快编译自从2015年8月发布的Go 1.5以来,编译时间显着长于Go 1.4。 解决这种缓慢的工作开始于Go 1.7,并且仍在进行。 Robert Griesemer和Mat...阅读全文

51CTO博客 2021-04-21 20:10:13 mob604756f0bbf4

[译]Go语言内存布局

go语言内存布局在本文中,我将尝试解释Go如何在内存中构建结构体,以及结构体在字节和比特位方面是什么样子。 希望我会成功,否则本文将是非常沉闷和混乱的。 想象一下,你有一个如下的结构体。 type MyData struct { aByte byte aShort int16 anInt32 int32 aSlice []byte } 那么这个结构体究竟是什么呢? 从根本上说,它描述了如何在内存中布局数据。 这是什么意思?编译器又是如何展现出来呢? 我们来看一下。 首先让我们使用反射来检查结构中...阅读全文

51CTO博客 2021-04-21 20:07:31 mob604756f0bbf4