Go语言中文网 为您找到相关结果 139

golang和java的http性能对比

公司要重构一个统计项目,统计部分要提供一个web收数的接口,因为统计系统的日志量十分大,所以对web服务的性能要求很严格,在技术选择的背景下做了golang和java的性能对比. 测试环境: mac pro 13.4.0 golang: go version go1.3.1 darwin/amd64 java: 1.7.0_71, 基于tomcat容器 测试工具 apache Ab工具: http://httpd.apache.org/docs/2.2/programs/ab.html 测试流程 golang使用源生的net/http服务搭建http项目,接口输出hello world java使用servlet 搭建web项目,接口同样输出hello world ab工具使用 ab -c ...阅读全文

博文 2015-01-13 08:00:06 dandy

Go语言程序的状态监控

Go是很实在的编程语言,从一开始就提供了很详细的运行状态信息。产品上线后的调优和排查疑难杂症都得靠这些状态信息。这边总结一些我们项目里用到的状态监控手段。 pprof Go自带了一个pprof工具,这个工具可以做CPU和内存的profiling,官方的博客有一篇文章介绍用法:《Profiling Go Programs》 官方的文章讲了怎么用自带的pprof工具分析数据,但是获得分析数据的部分比较单一,我在很长一段时间一直误以为cpuprof和memprof必须在程序启动时打开,其实cpuprof和memprof是可以在线打开和关闭的。 并且pprof模块其实不只是cpuprof和memprof这两个功能,其中还提供了Lookup功能用于获取堆状态信息、线程状态信息、 goroutine状态...阅读全文

博文 2014-10-13 14:54:27 达达

重量级爬虫软件Pholcus

# pholcus [![GoDoc](https://godoc.org/github.com/tsuna/gohbase?status.png)](https://godoc.org/github.com/henrylee2cn/pholcus) [![GitHub release](https://img.shields.io/github/release/henrylee2cn/pholcus.svg)](https://github.com/henrylee2cn/pholcus/releases) Pholcus(幽灵蛛)是一款纯Go语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批...阅读全文

高性能代理服务器Proxy-Go

Proxy 是 golang 实现的高性能 http,https,websocket,tcp 代理服务器,同时支持内网穿透。 ## Features - 链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理. - 通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征. - 智能HTTP代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理(前提是配置了上级代理)访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理. - 域名黑白名单,更加自由的控制网站的访问方式。 - 跨平台性,无论你是widows,linux,还是mac,甚至是树莓派...阅读全文

性能测试工具boom

Boom 是 google 一女工程师使用 Go 语言开发的类似 apache ab 的性能测试工具。相比 ab,boom跨平台性更好,而且更容易安装。 ##安装## `go get github.com/rakyll/boom` ##使用## ``` Usage: boom [options...] Options: -n Number of requests to run. -c Number of requests to run concurrently. Total number of requests cannot be smaller than the concurency level. -q Rate...阅读全文

开源项目 2014-10-31 07:42:35 rakyll

我们为什么选择Golang重构Worker系统

故事的起因在这里。 之前发了一篇帖子,讲了暴漫用golang重构了worker系统,有好多朋友问到语言选择的问题。 其实在用Golang重写我们的worker系统之前是做过很多调研的。 真正让我们下定决心的是 Parse的一篇文章:How We Moved Our API From Ruby to Go and Saved Our Sanity。 文中讲了Facebook的Parse团队为什么选择Golang代替Ruby。 我翻译下关键几点: Parse面临的问题 Parse跟暴漫的技术栈比较相似: 服务器Unicorn,部署使用Capistrano。在高流量面前很多问题都被指数级放大,在每次部署的时候 app server重启都要很长时间。并且Unicorn的重启并不是真正的‘gracef...阅读全文

博文 2015-09-09 19:54:01 长洪

NSQ 最新版本(0.3.5)官方文档中文版

NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub。NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。另外,官方还提供了拆箱即用Go和Python库。 本指南是 NSQ 官网 的中文翻译版本,基于最新版本 0.3.5 适用人群 本教程是给那些想详细了解如何使用 NSQ 分布式实时系统的开发人员编写的。 学习前提 在学习本教程之前,你需要对 Go 语言和计算机网络相...阅读全文

产品级 Go 语言微服务框架Go Chassis

Go Chassis 是华为云 CSE 开源的一个用 Go 语言编写的微服务快速开发框架。借助 CSE Go Chassis 进行微服务开发可最大化地降低开发门槛,提升产品上线速度,同时可以获得微服务运行时高可靠性保证、运行时动态治理等一系列开箱即用的能力。 作为业界首款商用级别的Go语言微服务框架,Go Chassis 已具备支持企业级应用的核心特性: **可定制的通信协议**:除了现有支持的 HTTP/ Highway RPC 协议外,用户可自行扩展协议。支持 Go Chassis 开发的应用与使用 Java Chassis 开发的应用互相通信,企业在进行微服务架构选择有更大的自由。 **使微服务更加健壮**:完善的服务治理(负载均衡、限流、熔断、降级等等),保障 Go 微...阅读全文

(转)Erlang和Go的并行化concurrent比较

说到concurrent,一般会想到Erlang和Go语言,这两种语言的主打特性都是concurrent,Erlang有着20多年的历史,是为简化开发电信大并发和高可靠性应用而发明的语言,Go是Google从2007年开始设计,2009年opensource出来的,Go属于一种system language,opensource的就算这两种语言吧,公司内私有的语言则有TNSDL,SDL的一个变种,以前写过一篇SDL和Erlang比较的文章(http://bookjovi.iteye.com/blog/1233299),这三种concurrent语言各有不同,下面看看: 1)语言设计 Erlang的实现基于虚拟机beam,Go是编译型语言,有着独成一体的compiler(不同于gcc,Go很好...阅读全文

博文 2015-02-10 01:00:02 vanadiumlin

可视化系统监控工具 Cloudinsight Agent

![image](http://static.oschina.net/uploads/img/201610/18113759_OZtU.jpg) 很高兴地宣布 Cloudinsight  Agent 在 BSD 开源协议下正式开源了。我们的工程师在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎大家参与到  Cloudinsight Agent 的开发和迭代中来。 **为什么要用 Golang 重写和开源** [**Cloudinsight**](http://cloudinsight.oneapm.com/)**是一个可视化系统监控工具,能够对数据指标进行聚合、分组、过滤、 管理、计算;并提供团队协作功能,共同管理数据和报警事件。而这些的关键,正是 Cloudinsigh...阅读全文

go实现高性能直播服务

livego go 实现直播服务 服务器部署 chmod 755 server.sh ./server.sh &(依赖go环境,有些情况需要用vim 打开 set ff=unix 然后:wq) 或者直接执行 ./LiveGoServer (不依赖go环境) 本地部署 直接执行 LiveGoServer.exe use 采用vue+webpack实现ui所有在config里日志在logs里http://localhost:8080/ (视频直播)http://localhost:8080/camera (录视频)(由于chrome的安全限制,建议在firefox下打开录视频页面) 使用效果 交流使用 交流群:337937322 项目地址:https://github.com/qieangel2...阅读全文

博文 2017-02-10 10:31:31 qieangel2013

md5与crc32性能对比

感觉MD5算法复杂度比crc32高很多,具体高多少呢?测试一下 // main.go package main import ( "crypto/md5" "fmt" "hash/crc32" ) func main() { data := []byte("test") fmt.Printf("%x", md5.Sum(data)) } func Crc32IEEE(data []byte) uint32 { return crc32.ChecksumIEEE(data) } func Md5(data []byte) [16]byte { return md5.Sum(data) } // main_test.go package main import "testing" func Be...阅读全文

博文 2017-02-09 08:09:02 李维

【北京,免费三餐,年14薪】golang程序猿在哪里?

**岗位职责:** 1.根据公司软件生产流程和规范,配合Android/iOS客户端开发组,完成服务器端接口设计和功能实现; 2.维护服务器,确保高可用性。 **任职要求:** 1.具备熟练阅读英文技术资料能力,习惯通过手册、google搜索、 stackoverflow、 serverfault等途径寻找问题答案; 2.了解Linux的使用,熟练使用命令行界面,能使用Linux服务器; 3.了解Linux编程,了解POSIX API、sockets编程,用C写过多进程/多线程的网络服务程序优先; 4.了解TCP/IP协议栈,HTTP协议...阅读全文

轻量级且高性能的 Golang 网络库gnet

[项目详情链接](https://taohuawu.club/go-event-loop-networking-library-gnet) `gnet` 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库。这个库直接使用 [epoll](https://en.wikipedia.org/wiki/Epoll) 和 [kqueue](https://en.wikipedia.org/wiki/Kqueue) 系统调用而非标准 Golang 网络包:[net](https://golang.org/pkg/net/) 来构建网络应用,它的工作原理类似两个开源的网络库:[libuv](https://github.com/libuv/libuv) 和 [libevent](ht...阅读全文

对比C, java, go 递归计算fibonacci(40) 的性能

// fibonacci.c #include int main() { printf("%d", fibonacci(40)); } int fibonacci(int n) { if (n < 2) { return 1; } return fibonacci(n - 2) + fibonacci(n - 1); } 编译: CFLAGS="-march=corei7-avx -O2 -pipe" && gcc fibonacci.c 运行:time ./a.out 结果:165580141 real 0m0.977s user 0m0.975s sys 0m0.002s // Fibonacci.java public class Fibonacci { publi...阅读全文

博文 2014-10-04 19:26:30 ZhouJunhua

熊猫TV招聘gopher

应聘邮箱: shenguanpu@panda.tv 应聘邮件标题为:"应聘XXX工程师-姓名"并随信附上: 你常上的3~5个网站(如方便请注明你的ID)、常用的开发工具; 你阅读过并推荐的3~5本技术类书籍; 你的简历。 工作地点:北京 望京soho 和王思聪一起创业 我们是谁? 从产品上来讲,熊猫现在还非常的年轻。一个正常视频网站的直播功能,再加上最精炼的用户交互,便把熊猫TV呈献给了各种迫不及待地用户们。 从技术上来讲,熊猫是有些积累的。技术团队均来自于一线互联网公司,大部分成员都有丰富的互联网和泛娱乐领域的业务产品经验,才能支撑熊猫迅速上线让大家High。 从大面上来讲,我们直接跳过小型,从中型系统起跳,目前已经到...阅读全文

go语言/IDE/golang/go语言list和slice性能测试

go语言/IDE/golang/go语言list和slice性能测试 package main import ( l "container/list" "fmt" "time" ) var ( name = "viney" ) func list() { names := l.New() t := time.Now() for i := 1; i <= 1000000; i++ { _ = names.PushFront(name) } fmt.Println("list: " + time.Now().Sub(t).String()) } func slice() { names := []string{} t := time.Now() for i := 1; i <= 1000000;...阅读全文

博文 2014-10-04 19:26:41 stephen830

北京招聘Go工程师1人,薪资高待遇好

我公司14年成立,完成两轮融资,目前正在招聘Go工程师1名,待遇:每月15-30K左右。周末法定都休息,五险一金,带薪年假,年终奖金。 要求:1、熟悉 Go 语言。2、有高负载 Server 实战经验。3、对计算机技术有发自内心的兴趣。 欢迎大家推荐,有丰厚推荐奖金。 联系:QQ 3407909729 有实战经验既可,不限年数...阅读全文

Erlang vs Go

1)设计 Erlang的实现基于虚拟机beam,Go是编译型语言,有着独成一体的compiler(不同于gcc,Go很好的解决了依赖的问题,所以编译go程序时不需向编译c程序那样指定include和library),TNSDL和GO类似,属于native执行。Erlang主要是为电信级应用服务的,而Go的concurrent则更具有通用性,这点主要体现在concurrent的设计,Erlang是基于process之间传递message,而Go是goroutine组成,再加上channel,Go通过把process和message解耦使得Go的设计更有通用性和灵活性,应用可以根据自己的需求决定是否需要channel的处理。routine加channel的设计在stackless python也...阅读全文

博文 2014-10-09 17:00:01 androidzhaoxiaogang

golang 性能分析

http://wangzhezhe.github.io/blog/2016/04/30/golang-gc/ Debugging performance issues in Go programs Profiling Go Programs http://shenfeng.me/go-gc-optimize-map.html http://www.cnblogs.com/gaochundong/p/hashtable_and_perfect_hashing.html#collision_resolution_chaining http://stackoverflow.com/questions/664014/what-integer-hash-function-are-good-that-a...阅读全文

博文 2016-07-29 16:00:01 B0-1

关于实现CRC16校验算法的两个函数

之前在2017年2月份发布过一个主题,也是关于CRC16的,现在我直接把函数写出来,希望能帮到有需要的朋友。对于在线监测设备数据传输标准来说,CRC16校验算法有基于通用modbus协议的,有基于环保局HJT-212协议的,以下两个函数算出来的结果都已通过现场数据包验证。 //通用modbus CRC校验算法 func modbusCRC(dataString string) string { crc := 0xFFFF length := len(dataString) for i := 0; i < length; i++ { //通用modbus取寄存器的低8位参与异或运算 crc = ((crc ...阅读全文

Go 唯一标识生成库 NUID

NUID 是一个高性能的唯一标识生成库,使用 GO 语言开发。 示例代码:

// Utilize the global locked instance
nuid := nuid.Next()

// Create an instance, these are not locked.
n := nuid.New()
nuid = n.Next()

// Generate a new crypto/rand seeded prefix.
// Generally not needed, happens automatically.
n.RandomizePrefix()阅读全文

一款golang实现的高性能持久化消息队列

https://github.com/LevinLin/OPQOPQAn Open sourced Persistent message QueueCode is tested under go1.4.2 (CAUTION: OPQ hasn't been tested in production environment so far)Features1.persistent message storage2.push model - push message to target service and block when failure3.easy to use - simple API whith HTTP POST method, no addtional client integr...阅读全文

博文 2017-05-05 06:56:35 levin

Android开发者必知的4个性能优化点

![2839725_610AndroidEvolution_1x.jpg](http://studygolang.qiniudn.com/151215/2dbc934753e3c7e4906b5fd6c41ee511.jpg) 在Android开发中,为避免各种各样的问题,开发人员需要对Android性能进行优化。而说到性能优化,熟悉安卓的童鞋应该都知道,包含很多方面,比如:I/O的优化、网络操作的优化、内存的优化、数据结构的优化等等。这么多优化的点,难免会出现有些被忽视的地方,今天小编和大家分享的就是在网上看到的一篇关于Android性能优化最易忽视的优化点,一起来看看吧。 一、ArrayList和Vector ArrayList和Vector都是内部以数组实现的Li...阅读全文

go 无锁队列

无锁队列适用场景: 两个线程之间的交互数据, 一个线程生产数据, 另外一个线程消费数据,效率高缺点:需要使用固定分配的空间,不能动态增加/减少长度,存在空间浪费和无法扩展空间问题package main import ( "fmt" "reflect" "strings" "time" )type LoopQueue struct{ start int end int length int name string data []interface{} } func (this* LoopQueue)InitQueue(length int, name string)bool{ if nil == this || length <= 0{ return false } this.data = ...阅读全文

博文 2017-07-08 03:52:48 jinjiashan

分布式 NoSQL 数据库Titan

Titan 是美图公司基于 [TiKV](https://www.oschina.net/p/tikv) 开发的一个 NoSQL 数据库,Titan 使用完全兼容 Redis 的通讯协议。 主要特性: 完全兼容 Redis 协议 完全支持强一致性的分布式事务 支持多租户模式 无缝扩展 高可用性 下面是 Titan 的一些性能测试结果: ![Get command benchmark](https://static.oschina.net/uploads/img/201811/19071751_sZAD.png) ![Set command benchmark](https://static.oschina.net/uploads/img/201811/19071752_fl...阅读全文

开源项目 2018-12-05 09:30:01 网友

Go1.1性能测试报告(和C差距在10%以内)

最近Go1.1正式发布, 根据官方的说法, Go1.1性能比Go1.0提升基本有30%-40%, 有时更多(当然也有不明显的情况). Go1.1的详细介绍: Go1.1新特性介绍(语言和库更完善/性能提高约30%). 这里是针对Go1.1和C语言的性能测试: 测试的重点是语言的性能, 当然也会受到标准库性能的影响. 测试环境 测试程序: $GOROOT/test/bench/shootout/timing.sh 硬件配置: Intel® Core™ i7-3770 CPU @ 3.40GHz; 16GB内存 操作系统: CentOS6.3 x86_64 补充: i7-3770是4核心8线程. gcc和gc版本: gcc -v gcc version 4.4.7 20120313 (Red H...阅读全文

博文 2015-05-08 11:33:34 chai2010

Goroutine协程池ants

ants是一个高性能的协程池,实现了对大规模goroutine的调度管理、goroutine复用,允许使用者在开发并发程序的时候限制协程数量,复用资源,达到更高效执行任务的效果。 功能: 1. 实现了自动调度并发的goroutine,复用goroutine 2. 提供了友好的接口:任务提交、获取运行中的协程数量、动态调整协程池大小 3. 资源复用,极大节省内存使用量;在大规模批量并发任务场景下比原生goroutine并发具有更高的性...阅读全文

深入Go UDP编程

用户数据报协议(User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报(package-oriented)的传输层协议,正式规范为 RFC 768。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验。 由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。但有些应用,比如TFTP,如果需要则必须在应用层增加根本的可靠机制。但是绝大多数UDP应用都不需要可靠机制,甚至可能因为引入可靠机制而降低性能。流媒体(流技术)、即时多媒体游戏和IP电话(VoIP)一定就是典型的UDP应用...阅读全文

博文 2016-10-20 16:00:01 jimoforever

Erlang和Go的并行化concurrent比较

说到concurrent,一般会想到Erlang和Go语言,这两种语言的主打特性都是concurrent,Erlang有着20多年的历史,是为简化开发电信大并发和高可靠性应用而发明的语言,Go是Google从2007年开始设计,2009年opensource出来的,Go属于一种system language,opensource的就算这两种语言吧,公司内私有的语言则有TNSDL,SDL的一个变种,以前写过一篇SDL和Erlang比较的文章(http://bookjovi.iteye.com/blog/1233299),这三种concurrent语言各有不同,下面看看: 1)语言设计 Erlang的实现基于虚拟机beam,Go是编译型语言,有着独成一体的compiler(不同于gcc,Go很好...阅读全文

博文 2014-10-16 13:00:01 chenyi8888

为什么学习go语言编程?

1. 从python开发角度看go语言 (1)部署简单:Go 编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖。完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。 (2)并发性好。Goroutine 和 channel 使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。 (3)良好的语言设计。Go 的设计是非常优秀的:规范足够简单灵活。 (4)执行效率高。虽然不如 C 但是已经超过C++和java,和解释型语言相比,更是相差一个数量级,比如python,ruby。 备注: 编译型语言:在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。 解释型语言:是在运行的...阅读全文

博文 2016-09-13 02:00:00 qq_17416741

阿里云高性能I/O云服务器+SSD云盘,1元抢购中…

阿里云高性能I/O云服务器+SSD云盘,1元抢购中… 在业务场景中,你是否经常会遇到这些问题?游戏客户出现卡顿,图片加载不出来,丢数据;用户量大,高并发读写,用户访问加载不出来,对数据安全和性能稳定要求高;测试的用例执行慢,应用的QPS慢,应用的RT长…… 经过几年的发展,越来越多的用户认可云计算的弹性、便捷、低成本等优势。云计算不但帮助用户减少IT基础设施的投入、而且帮助用户提升业务部署效率;因此,我们能看到越来越多的用户将其核心业务搬上云。由于核心业务涉及到大量的数据存取,存储性能的好坏将直接决定用户能否将其核心业务搬到云上。 为了解决用户核心业务上云的诉求,解决上述这些业务场景中的常见问题,我们推荐您选择云服务器(I/O优化实例)+SSD云盘(http://clic...阅读全文