自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

andylau00j的专栏

linux c++ golang

  • 博客(20)
  • 收藏
  • 关注

转载 3种优雅的Go channel用法

写Go的人应该都听过Rob Pike的这句话Do not communicate by sharing memory; instead, share memory by communicating.相信很多朋友和我一样,在实际应用中总感觉不到好处,为了用channel而用。但以我的切身体会来说,这是写代码时碰到的场景不复杂、对channel不熟悉导致的,所以希望这篇文章能给大家带来

2016-12-30 00:56:56 7205 2

转载 一些Golang小技巧

今天给大家介绍3个我觉得比较有启发的Golang小技巧,分别是以下几个代码片段nsq里的select写文件和socketio模块里的sendfilefasthttp里对header的处理nsq里的select读在nsq中,需要读取之前磁盘上的,或者是从内存中直接读取,一般人都是先判断内存中有没有数据,然而,nsq另辟蹊径使用了select语句,把CSP模式用到了极致。源文件链接

2016-12-30 00:55:29 2315

转载 NSQ源码剖析之nsqd

NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征,是一个成熟的、已在大规模生成环境下应用的产品。NSQ 由 3 个守护进程组成: nsqd 是接收、保存和传送消息到客户端的守护进程。 nsqlookupd 是管理的拓扑信息,维护着

2016-12-30 00:50:23 1436

转载 NSQ源码分析之nsqlookupd

上篇文章介绍了NSQ整体概述以及拓扑结构;这篇文章开始分析下NSQ源码;NSQ主要由三个部分nsqd,nsqlookupd,nsqadmin以及一些工具组成,我们从简单的nsqlookupd开始分析源码;nsqlookupd是nsq管理集群拓扑信息以及用于注册和发现nsqd服务;所以,也可以把nsqlookupd理解为注册发现服务;当nsq集群中有多个nsqlookupd服务时,因为每个nsqd都

2016-12-30 00:44:44 1230 2

转载 NSQ源码分析之概述

消息队列在互联网公司使用非常普遍,因此也促使我去学习研究消息队列的原理以及细节问题;之前也有接触过消息队列,最主要就是在异步处理方面,当然消息队列还解耦,流量削峰等功能;目前消息队列产品也比较多,例如kafka,ActiveMQ,RabbitMQ,NSQ等等;之前原本打算看kafka,但是处于学习成本(kafka是scala编写,之前scala接触的比较少),所以就先不看kafka,选择了NSQ;

2016-12-30 00:43:12 2265

转载 NSQ的设计特点:

nsq的设计特点:分布式的队列传输节点,能够避免传输节点的单点故障,确保消息一定会被传输一次, 但是这样可能引起消息被多次传输bound the memory footprint of a single process (by persisting some messages to disk)简化消费者和生产者的配置提供了一个简单明确的升级路线提升了效率nsqde的基本概念

2016-12-30 00:40:03 2422

转载 Scaling NSQ to 750 Billion Messages

Since Segment’s first launch in 2012, we’ve used queues everywhere. Our API queues messages immediately. Our workers communicate by consuming from one queue and then publishing to another. It’s given

2016-12-30 00:31:45 428

转载 Go高性能编程技巧2

So You Wanna Go Fast?I originally proposed this as a GopherCon talk on writing “high-performance Go”, which is why it may seem rambling, incoherent, and—at times—not at all related to Go. The

2016-12-29 22:24:30 893

转载 Go高性能编程技巧

1. 线程ID,最好自己模拟实现。不要使用runtime库。性能损耗很大。最好别这么做。func GoID() int {var buf [64]byten := runtime.Stack(buf[:], false)idField := strings.Fields(strings.TrimPrefix(string(buf[:n]), "goroutine

2016-12-29 22:20:19 1409

转载 Go语言中Gob与Thrift的测试

Golang提供了一个服务器之间传输数据的包Gob。使用这个包可以轻松的在服务器之间传递Go语言内置类型的数据。使用的时候只需要调用 Encode 和 Decode 两个方法,不需要关注内部的数据传输细节。同时thrift从0.9.1版本(目前最新的thrift版本是0.9.2)开始,实现了对Go语言的支持。最近在重新设计日志系统,涉及到数据传输,就考虑到使用Gob还是Thtift。这里的关注点比

2016-12-29 14:16:13 1444 1

转载 Thrift 的TNonblockingServer运行原理分析

整理下thrift TNonblockingServer的工作流程,简单记录下, 因为处理过程比较复杂不具体分析了,TNonblockingServer的工作流程如下:–1– server 创建 多个 iothread 和 工作线程池 workpool thread (给iothread发消息的方式主要通过管道的方式进行 )–2– 传递listenfd 给 iothread

2016-12-29 13:27:22 686

转载 golang thrift 总结一下网络上的一些坑

我们以hello world来大概分析一下golang中的thrift包,并且扒一扒网络上有关thrift的一些坑 查看源码,服务器定义如下:(详见simple_server.go文件)type TSimpleServer struct { quit chan struct{} stopped int64 processorFactory

2016-12-28 19:31:49 3096

转载 golang thrift 源码分析,服务器和客户端究竟是如何工作的

首先编写thrift文件(rpcserver.thrift),运行thrift --gen go rpcserver.thrift,生成代码namespace go rpcservice RpcService { string SayHi(1: string name); void SayHello(1: string name);}搭建一个以二进制为传输

2016-12-28 19:21:30 1166

转载 GO语言构建高并发分布式系统实践

此文是根据周洋在【高可用架构群】中的分享内容整理而成,转发请注明出处。周洋,360手机助手技术经理及架构师,负责360长连接消息系统,360手机助手架构的开发与维护。不知道咱们群名什么时候改为“Python高可用架构群”了,所以不得不说,很荣幸能在接下来的一个小时里在Python群里讨论golang....360消息系统介绍

2016-12-24 14:00:01 9074

转载 来自Google的TCP BBR拥塞控制算法解析

写本文的初衷一部分来自于工作,更多的来自于发现国内几乎还没有中文版的关于TCP bbr算法的文章,我想抢个沙发。本文写于2016/10/15!        本文的写作方式可能稍有不同,之前很多关于OpenVPN,Netfilter,IP路由,TCP的文章中,我都是先罗列了问题,然后阐述如何解决这个问题。但是本文不同!本文的内容来自于我十分厌恶的一个领域,其中又牵扯到我十分厌恶的一家公司-华夏

2016-12-21 12:03:43 1928

转载 Golang官方如何支持加载动态库

Golang1.8官方支持加载动态库了,而且看起来功能很强大。 文档上面描述Plugin功能是协程并发安全的,而且支持高级数据类型(包括chan),同时不需要写任何C代码(以前或多或少需要写一些)。下面我们通过一些demo来看看如何使用golang plugin功能入门下面是一个简单的plugin 代码:package main// // No C code needed.i

2016-12-20 21:19:27 17008 1

转载 awesome-go

https://awesome-go.com/Awesome Go   A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python.ContributingPlease take a quick gander at the contribu

2016-12-20 19:44:06 2932

转载 【译文】通过Go来处理每分钟达百万的数据请求

原文作者为Malwarebytes公司的首席架构师Marcio Castilho,博客原文地址 —— http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/前言目前Malwarebytes公司正在经历显著的发展,自从我一年前加入这家在硅谷的公司, 我的主要责任之一就是给一些快速发展的安

2016-12-20 18:21:42 503

原创 google protobuffer 3.1.0安装

sudo权限wget https://github.com/google/protobuf/archive/v3.1.0.tar.gzyum install autoconfautomakelibtool./autogen.sh./configuremake && make install参考资料 protob

2016-12-08 11:30:51 2228

原创 cgo的一些经验. golang 调用 so 方法

int EC60789803D1(const char *CompanyTag, char *dataIn, int inlen, unsigned char *dataout, int outlen);// Encrypt{ var byteOutBuffer []byte byteOutBuffer = make( []byte, 2048 ) var outle...

2016-12-02 16:17:52 9655 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除