golang
YongApple
LINUX C++ golang thrift libevent
展开
-
golang sort.Search的坑
{ arrInts := []int{13, 35, 56, 79} findPos := sort.Search(len(arrInts), func(i int) bool { return arrInts[i] == 35 }) fmt.Println(findPos) return }mai'ge'guan'zi...原创 2021-05-30 00:37:12 · 979 阅读 · 2 评论 -
fasthttp 线程池
文章目录1. fasthttp携程池关键结构体1. fasthttp 协程池背景2. fasthttp socket侦听逻辑3. fasthttp1. fasthttp携程池关键结构体去掉了部分不重要成员;type workerPool struct { // Function for serving server connections. // It must leave ...原创 2020-02-09 00:53:47 · 882 阅读 · 0 评论 -
一些Golang小技巧
今天给大家介绍3个我觉得比较有启发的Golang小技巧,分别是以下几个代码片段nsq里的select写文件和socketio模块里的sendfilefasthttp里对header的处理nsq里的select读在nsq中,需要读取之前磁盘上的,或者是从内存中直接读取,一般人都是先判断内存中有没有数据,然而,nsq另辟蹊径使用了select语句,把CSP模式用到了极致。源文件链接转载 2016-12-30 00:55:29 · 2326 阅读 · 0 评论 -
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 · 7224 阅读 · 2 评论 -
【译文】通过Go来处理每分钟达百万的数据请求
原文作者为Malwarebytes公司的首席架构师Marcio Castilho,博客原文地址 —— http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/前言目前Malwarebytes公司正在经历显著的发展,自从我一年前加入这家在硅谷的公司, 我的主要责任之一就是给一些快速发展的安转载 2016-12-20 18:21:42 · 517 阅读 · 0 评论 -
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 · 2991 阅读 · 0 评论 -
Golang官方如何支持加载动态库
Golang1.8官方支持加载动态库了,而且看起来功能很强大。 文档上面描述Plugin功能是协程并发安全的,而且支持高级数据类型(包括chan),同时不需要写任何C代码(以前或多或少需要写一些)。下面我们通过一些demo来看看如何使用golang plugin功能入门下面是一个简单的plugin 代码:package main// // No C code needed.i转载 2016-12-20 21:19:27 · 17042 阅读 · 1 评论 -
Golang部份特性的C++对比实现
今天看到一篇文章C++ 逐渐 Python 化>>, 我个人是认为这个说法是不成立的,但这里面的一些特性对比引起了我的兴趣。我想尝试下,Go语言所带的一些东西,在C++11中是如何做的,应当很有意思。所以刷刷刷,就有了下面的东西。 目录: 字符串字面值 变量初始化转载 2017-01-11 15:14:08 · 2967 阅读 · 0 评论 -
Go和HTTPS
转自 tony bai近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验。之前只是粗浅接触过HTTP(使用Golang开 发微信系列)。对HTTPS的了解则始于那次自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解。于是想趁这转载 2017-01-20 20:10:28 · 842 阅读 · 0 评论 -
NSQ源码分析之nsqlookupd
上篇文章介绍了NSQ整体概述以及拓扑结构;这篇文章开始分析下NSQ源码;NSQ主要由三个部分nsqd,nsqlookupd,nsqadmin以及一些工具组成,我们从简单的nsqlookupd开始分析源码;nsqlookupd是nsq管理集群拓扑信息以及用于注册和发现nsqd服务;所以,也可以把nsqlookupd理解为注册发现服务;当nsq集群中有多个nsqlookupd服务时,因为每个nsqd都转载 2016-12-30 00:44:44 · 1240 阅读 · 2 评论 -
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 · 9677 阅读 · 1 评论 -
NSQ源码剖析之nsqd
NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征,是一个成熟的、已在大规模生成环境下应用的产品。NSQ 由 3 个守护进程组成: nsqd 是接收、保存和传送消息到客户端的守护进程。 nsqlookupd 是管理的拓扑信息,维护着转载 2016-12-30 00:50:23 · 1453 阅读 · 0 评论 -
NSQ源码分析之概述
消息队列在互联网公司使用非常普遍,因此也促使我去学习研究消息队列的原理以及细节问题;之前也有接触过消息队列,最主要就是在异步处理方面,当然消息队列还解耦,流量削峰等功能;目前消息队列产品也比较多,例如kafka,ActiveMQ,RabbitMQ,NSQ等等;之前原本打算看kafka,但是处于学习成本(kafka是scala编写,之前scala接触的比较少),所以就先不看kafka,选择了NSQ;转载 2016-12-30 00:43:12 · 2278 阅读 · 0 评论 -
NSQ的设计特点:
nsq的设计特点:分布式的队列传输节点,能够避免传输节点的单点故障,确保消息一定会被传输一次, 但是这样可能引起消息被多次传输bound the memory footprint of a single process (by persisting some messages to disk)简化消费者和生产者的配置提供了一个简单明确的升级路线提升了效率nsqde的基本概念转载 2016-12-30 00:40:03 · 2429 阅读 · 0 评论 -
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 · 2235 阅读 · 0 评论 -
来自Google的TCP BBR拥塞控制算法解析
写本文的初衷一部分来自于工作,更多的来自于发现国内几乎还没有中文版的关于TCP bbr算法的文章,我想抢个沙发。本文写于2016/10/15! 本文的写作方式可能稍有不同,之前很多关于OpenVPN,Netfilter,IP路由,TCP的文章中,我都是先罗列了问题,然后阐述如何解决这个问题。但是本文不同!本文的内容来自于我十分厌恶的一个领域,其中又牵扯到我十分厌恶的一家公司-华夏转载 2016-12-21 12:03:43 · 1935 阅读 · 0 评论 -
GO语言构建高并发分布式系统实践
此文是根据周洋在【高可用架构群】中的分享内容整理而成,转发请注明出处。周洋,360手机助手技术经理及架构师,负责360长连接消息系统,360手机助手架构的开发与维护。不知道咱们群名什么时候改为“Python高可用架构群”了,所以不得不说,很荣幸能在接下来的一个小时里在Python群里讨论golang....360消息系统介绍转载 2016-12-24 14:00:01 · 9085 阅读 · 0 评论 -
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 · 1183 阅读 · 0 评论 -
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 · 3106 阅读 · 0 评论 -
Thrift 的TNonblockingServer运行原理分析
整理下thrift TNonblockingServer的工作流程,简单记录下, 因为处理过程比较复杂不具体分析了,TNonblockingServer的工作流程如下:–1– server 创建 多个 iothread 和 工作线程池 workpool thread (给iothread发消息的方式主要通过管道的方式进行 )–2– 传递listenfd 给 iothread转载 2016-12-29 13:27:22 · 696 阅读 · 0 评论 -
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 · 1468 阅读 · 1 评论 -
Debugging performance issues in Go programs
Let's assume you have a Go program and want to improve its performance. There are several tools available that can help with this task. These tools can help you to identify various types of hotspots转载 2017-01-06 19:12:48 · 474 阅读 · 0 评论 -
Go语言无孔不入的2016:跻身主流编程语言、国内大热、极速提升、尖端应用……
2015,Go迎来了全迸发的一年。时隔一年,回头再看,Go已跻身主流编程语言行列。在国内,Go的热度更是不凡。2016,对于Go来说,又是怎样的一年?前言Go语言已经7岁了!今年8月,Go 1.7如期发布。撰写本稿时,Go 1.8的测试版也出来了。我们正在热切盼望着明年2月的Go 1.8正式版。如果你关注TIOBE的编程语言排行榜就会发现,截止到2016年11月,Go语言从原先的第转载 2017-01-06 19:17:08 · 2135 阅读 · 0 评论 -
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 · 1420 阅读 · 0 评论 -
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 · 904 阅读 · 0 评论 -
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 · 433 阅读 · 0 评论 -
为Go语言GC正名-2秒到1毫秒的演变史
转载自:http://blog.csdn.net/erlib/article/details/51850912英文原文链接:https://blog.twitch.tv/gos-march-to-low-latency-gc-a6fa96f06eb7#.lrmfby2xs下面我们会介绍https://www.twitch.tv视频直播网站在使用G转载 2016-08-12 14:09:56 · 1298 阅读 · 0 评论