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

线上Golang程序 GC调优一例

13 Nov 2013 线上Golang程序 GC调优一例 Golang 是一个很有意思的语言,第一次看它介绍时,就很喜欢。半年前加入美团,有机会用它写了几个线上程序。其中一个程序Router,每天需要转发几千万的请求。由于需要根据请求内容决定route路径,它需要加载几十万deal(美团单)的信息到内存供查询。问题来了,用map装的几十万数据让gc很辛苦。 Deal数据 // Deal的定义 type DealTiny struct { Dealid int32 Classid int32 Mttypeid int32 Bizacctid int32 Isonline bool Geocnt int32 } gc停顿 用go写一个简单的Web程序,设置GOGCTRACE环境变量为1后启动程...阅读全文

博文 2014-11-03 14:42:37 沈锋

为Go语言GC正名-2秒到1毫秒的演变史

英文原文链接:https://blog.twitch.tv/gos-march-to-low-latency-gc-a6fa96f06eb7#.lrmfby2xs 下面我们会介绍https://www.twitch.tv视频直播网站在使用Go过程中的GC耗时演变史。 我们是视频直播系统且拥有数百万的在线用户,消息和聊天系统全部是用Go写的,该服务单台机器同时连接了50万左右的用户。在Go1.4到1.5的版本迭代中,GC得到了20倍的提升,在1.6版本得到了10倍的提升,然后跟Go的Runtime开发组进行交流后,在1.7版本又得到了10倍的提升(在1.7之前,我们进行了大量的GC参数调优,在1.7中这些调优都不需要了,原生的runtime就可以支持),总共是2000倍!!!具体的GC停止时间...阅读全文

博文 2016-07-11 17:40:43 erlib

golang cpuprofile分析

http://www.philo.top/2015/05/29/golangProfilingAndGC/ Philo 关注Golang与Docker技术 HomeArchivesAboutDonateGeekP weibo github 5月 29 2015 技术 golang调优之clock ticks 本blog的来源 昨天在找工作面试的时候我与面试官聊到了golang的问题。当然讨论的热点就是调优与GC。 结果面试变成了技术讨论与研究,聊了接近一个小时,真的很开心。 下面的研究内容来自goblog https://blog.golang.org/profiling-go-programs 我也只是想浓缩一遍上面的内容方便大家研习。当然文章可能比较老了。 因此我在这里重新走一遍大神之路...阅读全文

博文 2015-11-17 16:00:01 caoshulin1989

C中调用go中的回调函数

在用go包装某些c库时(如glut),需要将go函数当作回调函数传递给c库(如glutDisplayFunc(&draw)中的draw函数,我想将go写的函数传过去),应该怎么做?我写了一个示例,但一直不成功,不知道为什么?麻烦知道的帮我解答一下。 代码如下: /* test.h */ extern void SetFunc(); /* test.c */ #include "test.h" #include "_cgo_export.h" void SetFunc() { InternalFunc(); } /* test.go */ package main // #include "test.h" import "C" ...阅读全文

主题 2013-04-19 09:03:40 shikuijie

golang文件传输服务

续上篇,本篇介绍一个完整的golang文件传输服务器。 完整的代码可以看服务器,客户端 网络使用的框架如上篇介绍,这里就不再复述. 首先定义3个命令码: const ( request_file = 1 file_size = 2 transfering = 3 ) request_file用于请求文件传输,附带的命令参数是文件key. file_size用于通告客户端文件的大小. transfering用于传输文件内容,附带参数是文件内容的二进制数据. 服务器的文件配置示例 ../learnyouhaskell.pdf=haskell ../golang.1.1.2.chm=golang ../NodeJS.pdf=NodeJS 上面的文件配置了3个文件可供传输=左边是文件路径,右边是请求...阅读全文

博文 2014-10-04 19:25:59 sniperHW

Go 调优技术

## 内存管理 在开始探索 Go 调优技术和工具之前,我们需要先了解一下 Go 内存模型,它可以帮助我们理解内存是如何使用的。 Go 实现的是 _并行的_ [标记-清除垃圾回收器](http://wiki.c2.com/?MarkAndSweep)。在 _传统的_ 标记-清除模型中,垃圾回收器会先让程序停下来(也就是,“stop the world”),然后查找已经失效的对象,并把这些对象清理掉(也就是,释放内存)。因为程序在运行中会移动引用(references),导致垃圾的识别和清理出现困难。同时,垃圾回收也会导致延迟和其他的问题。在 Go 语言中 [GC 是并发执行的](https://blog.golang.org/go15gc),所以 GC 执行时,用户可能不会注意到暂停或者延迟。...阅读全文

博文 2017-12-20 15:38:13 polaris

golang heap profile分析

http://www.philo.top/2015/05/29/golangProfilingAndGC2/ Philo 关注Golang与Docker技术 HomeArchivesAboutDonateGeekP weibo github 5月 29 2015 技术 golang调优之GC Continue 在上篇中,主要针对个函数使用时间来对程序分析进行调优。 在本片中由于发现GC使用时间过长来对程序进行分析。 针对内存进行调优。 内存调优,查找什么位置引发GC时间过多 第二个版本的pprof结果 1 2 3 4 5 6 7 (pprof) top5 Total: 1652 samples 197 11.9% 11.9% 382 23.1% scanblock 189 11.4% 23....阅读全文

博文 2015-11-17 12:00:01 caoshulin1989

MGO 设计调优。

MGO 设计调优。 真的是那句话,不是你不行,知识你不了解。而已。 肯定是不能加两个索引了。 索引的代价实在是太大了,不但占用内存还还大量损失查询性能,真心不能忍耐啊。 设计的时候DBRef肯定是需要的,直接用有意义的ID查询肯定是性能最好的。 控制key的数量肯定是必须的。比如说用户数量就是key的数量这就够了。别整那么多。collection不然损失性能。 如果真的想控制数量的话,那么数据关联肯定是十分必须的。 流量控制肯定也是必须的。 流量的来源在于Find直接返回所有查询结果。卧槽。直接吃掉所有流量。 直接用FindOne 避免查询多个结果回来肯定是必须的 FindOne就够了吗?我确实遇到这个坑了。在博文中已经提到关于这种情况适用filter的方法了。直接参考就OK了。 1Find...阅读全文

博文 2015-03-07 21:33:30 jianyingLi

PuGo 一次内存泄露的调优

我刚刚写好新的博客程序 Pugo,欢迎试用和体验。这两天我把个站 fuxiaohei.me 迁移到新的博客程序。但是,经过一天的运行,发现内存从启动的 14MB 上升到了 228 MB。显然程序发生内存泄露,所以也开始以下调优过程。 PPROF pprof 是 Golang 自带的调试工具,有很多可用的工具。pprof 的调试方式有代码的方式和 HTTP 方式。其中 HTTP 调试比较方便,加入很简单的代码: import _ "net/http/pprof" // pprof 的 http 路由注册在自带路由上 go func() { http.ListenAndServe("0.0.0.0:6060", nil) // 启动默认的 http 服务,可以使用自带的路由 }() 访问 htt...阅读全文

博文 2016-04-17 14:46:46 傅小黑

studygolang filter模块阅读小结

##Filter模块与Hanlder## Hanlder是一种已知类型的回调方法,由使用者提供,可以抽象出一个type func类型来接受这种方法 type HandlerFunc func(http.ResponseWriter, *http.Request) 然后给该方法添加一个方法用来在触发该方法的调用 func (f HandlerFunc) ServeHTTP(rw http.ResponseWriter, req *http.Request) { // 执行当前Route的FilterChain filterChain := CurrentRoute(req).FilterChain if filterChain != nil { ...阅读全文

Golang FlameGraph(火焰图)

简介 安装 go get github.com/uber/go-torch # 再安装 brendangregg/FlameGraph export PATH=$PATH:/absolute/path/FlameGraph-master # 还需要安装一个graphviz用来画内存图 yum install graphviz 代码修改 import "net/http" import _ "net/http/pprof" func main() { // 主函数中添加 go func() { http.HandleFunc("/program/html", htmlHandler) // 用来查看自定义的内容 log.Println(http.ListenAndServe("0.0.0.0:...阅读全文

博文 2017-11-01 13:03:07 城寒

golang之runtime.SetFinaliz

在实际的编程中,我们都希望每个对象释放时执行一个方法,在该方法内执行一些计数、释放或特定的要求,以往都是在对象指针置nil前调用一个特定的方法,golang提供了runtime.SetFinalizer函数,当GC准备释放对象时,会回调该函数指定的方法,非常方便和有效。 参考: Go 语言中手动内存管理 go语言之初始化的构造函数 Go和C如何共享内存资...阅读全文

MongoDB 存储过程的使用以及性能调优方案

MongoDB 存储过程的使用以及性能调优方案。 AUTH:PHILO 在2012年的一个blog里面看到了一个关于性能问题 虽然MongoDB给了我们很多驱动可以用,但是都没有mongodb的shell来的方便。就比如说最近需要做的DBRef嵌套类型的数据要做CRUD如果使用mog驱动的话会非常麻烦。因此我们这里来做个试验,首先给test数据库添加初始化数据添加Server-side script以及测试 mongo 添加数据 1234567891011121314151617181920db.people.insert({"_id":"test","phone","233333"}) //输入原始数据// 数据库修改函数// update之后返回修改后的数据。peopleUpdate=f...阅读全文

博文 2015-03-07 21:34:23 jianyingLi

Go语言HTTP测试及程序性能调优

这篇要讲的东西,主要是HTTP,WebSocket的测试及如何调优Go程序的一些方法. 分下面几个内容: 一.httptest测试包 二.性能测试 三.怎么利用参数分析和调优程序 四.在运行中实时监控调优 一.httptest测试包 对于HTTP和WebSocket测试,Go标准库有一个HTTP测试框架.在"http/httptest"包下. go1.5.1\go\src\net\http\httptest 怎么用可以在源码目录看例子,也可以上官网看看这个例子: https://golang.org/src/net/http/request_test.go 里面各种用法还是很全的. 如果想亲自动手试试. https://golang.org/doc/articles/wiki/ 有个很完整的...阅读全文

博文 2015-12-15 12:00:00 xcltapestry

[LogInsight] (已更新)招聘 GoLang/C/C++ , 数据库研发,全文检索 ,前端工程师

#公司介绍 北京百泉众合数据科技有限公司,即LogInsight,成立于2015年,是中国 ITOA(IT运维分析)市场的一支生力军,并立志成为中国 ITOA 领域的领头羊。 机器数据,即由计算机,应用或者其他机器在无人工干预下产生的数据。机器数据是增长最快、最复杂也最富含价值的大数据中的一种, 大数据中,90%的数据是机器数据 。LogInsight,致力于开发机器数据\日志的分析平台,期望帮助广大的企业及开发者,实现机器数据价值的洞察,并转变为业务创新及竞争优势。 LogInsight 核心技术团队主要来自国内外顶尖的互联网公司,在的大数据,搜索引擎,日志分析领域有着非常丰富的技术积累,拥有世界级的搜索引擎实现技术。 #核心技术团队简介 **李沫南:** C...阅读全文

介绍一些有助于写出更好Go程序的工具

前面讲了测试和性能调优之类,这篇主要讲如何利用Go提供的一些工具和参数,帮助写出更好的代码. 一. golint 检查代码规范 二. go vet 检查代码存在的隐患 三. -race 检查是否有race condition 一. golint 检查代码规范 /* golint 例子 Author: xcl Date: 2015-11-22 */ package main import ( "fmt" ) const fooId = "blah" var var_name int type hidden struct{} func Exported() hidden { return hidden{} } type T struct{} func main() { Exported() } ...阅读全文

博文 2015-12-22 20:00:02 xcltapestry

招Go语言及后端开发

职位描述: 1、 负责公司互联网产品的后端软件设计、开发、维护、及测试; 2、 持续重构后端软件及代码; 岗位要求: 1. 精通C++,Java,Node JS语言或至少其中一种; 2. 2年以上互联网后端开发,或其他通讯类开发经验; 3. 熟悉Go语言及后端开发,有成熟Go语言开发案例优先; 4. 熟悉SQL或NoSQL数据库开发; 5. 了解分布式系统,熟悉并发处理并调优; 6. 熟悉微服务架构,有微服务开发经验优先; 7. 热爱编程且好学,有志于成为全栈工程师或正在努力成为全栈工程师者尤佳; 8. 熟悉LINUX服务器的安装、配置和调优;熟悉常用开发环境如Apache、PHP、MySQL、Nginx、MongoDB、Redis、MQTT 、NSQ等的搭建、设置...阅读全文

坐标上海:GO服务器开发工程师,年薪30万-36万+年终奖+期权,招聘2人,欢迎来撩微信18650196973

岗位要求:Go语言 2年工作经验便可 1、主要的工作职责是服务器子系统的功能开发、性能调优、水平扩容、运维等工作。 2、在资深人员的指导下,负责新功能的方案设计和技术评审等。能力突出者将承担调度算法等核心岗位。 职位要求: 1、开发和维护大型分布传输网络的服务器系统,主要包括分布式集群高并发的系统设计及开发、数据处理、及算法开发和现有系统的运维改进。 2、系统性能优化,持续提升系统性能、保证系统的安全、稳定、快速运行。要求3年以上服务器后台开发经验或名牌大学相软件工程、计算机相关专业1年以上服务器开发经验; 3、精通Go语言开发,了解C, Linux以及服务器开发的基础,有分布式高可用、高性能后台服务的开发、维护经验; 4、熟悉MYSQL redis\postgreSQL\MQ...阅读全文

golang版本的通用时间轮 Timewheel

一个通用的timewheel工具类 通用粗精度的timewheel,只启动一个timer,可监听任意多的到期时间,放入的用户数据可以是任何类型。 接口说明: 1. Start: 开始一个timewheel ; 2. SetCallback: 设置时间到期时的回调函数,回调函数中不可作过于耗时的操作,以免卡住timewheel的正常运行; 3. Add: 添加需要监控的对象,务必在Start调用后再调用此接口; 4. Stop: 停止此timewhee...阅读全文

cgo 随笔(golang)

结构体应用 //结构体定义如下 // test.h struct test { int a; int b; int c; } 在golang中的调用如下: 1 package name 2 3 4 import "C" //这个是必须要包含的,如果要调用cgo 5 6 // #cgo linux CFLAGS: -l. //这个是声明查找头文件的位置 是在本目录 7 // #include "test.h" 8 9 10 func testt() { 11 var vt C.struct_test //这个是结构体的调用方法 12 .... 13 ..... 14 } 15 16 17 1...阅读全文

博文 2014-10-04 19:25:56 sn-dnv-aps

Golang回调函数实例二则

1.定义 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 2.机制 定义一个回调函数 提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者 当特定的事件或条件发生时,调用者使用函数指针调用回调函数对事件进行处理 例1.这是一个简单的回调例子,调用函数test时,调用真正的实现函数add package main import "fmt" type Callback func(x, y int) int // 提供一个接口,让外部去实现 func test(x, ...阅读全文

博文 2017-07-27 02:06:18 iCaptain

golang实现的一个小游戏–猜数字

文同步至:http://www.waylau.com/golang-game-guess-numbe/ 随机生成一个数字,输入一个数字看是否匹对,匹配则结速,反之提示是大了还是小了, 代码如下: package main import ( "bufio" "fmt" "math/rand" "os" "strconv" "time" ) var ( endNum int //设置生成数的范围 ) func main() { i := createRandomNumber(endNum) //fmt.Println("生成规定范围内的整数:", i) //本句调试用 fmt.Println("请输入整数,范围为:0-", endNum) flag := true reader := bufio...阅读全文

博文 2014-11-19 01:00:02 kkkloveyou

为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视频直播网站在使用Go过程中的GC耗时演变史。 我们是视频直播系统且拥有数百万的在线用户,消息和聊天系统全部是用Go写的,该服务单台机器同时连接了50万左右的用户。在Go1.4到1.5的版本迭代中,GC得到了20倍的提升,在1.6版本得到了10倍的提升,然后跟Go的Runtime开发组进行交流后,在1.7版本又得到了10倍的提升(在1.7之前,我们进行了大量的GC参数...阅读全文

博文 2016-08-16 01:00:05 andylau00j

Google资深工程师深度讲解Go语言

课程地址:http://icourse8.com/go_pachong.html
课程地址:http://icourse8.com/go_pachong.html
课程目录第1章 课程介绍第2章 基础语法第3章 内建容器第4章 面向“对象”第5章 面向接口第6章 函数式编程第7章 错误处理和资源管理第8章 测试与性能调优第9章 Goroutine第10章 Channel第11章 http及其他标准库第12章 迷宫的广度优先搜索第13章 开始实战项目第14章 单任务版爬虫第15章 并发版爬虫第16章 数据存储和展示第17章 分布式爬虫第18章 课程总结 class Solution: def isMonotonic(self, A: List[int])...阅读全文

博文 2019-05-24 20:35:12 zhongjunr

高效日志库 BLog4go Go

BLog4go 是高性能日志库。创新地使用“边解析边输出”方法进行日志输出,同时支持回调函数、日志淘汰和配置文件。可以解决高并发,调用日志函数频繁的情境下,日志库造成的性能问题。 ** 快速启动: **

package main

import (
    log "github.com/YoungPioneers/blog4go"
    "fmt"
    "os"
)

// optionally set user defined hook for logging
type MyHook struct {
    som...阅读全文

golang esl api

通过ESL 调取FS的状态,比如show calls : 用golang eventsocket 实现 conn, err := eventsocket.Dial("192.168.5.32:8021","ClueCon") if err != nil { this.emitError(so, 413) return "" } ev, _ := conn.Send(fmt.Sprintf("api show calls")) calls := strings.Split(ev.Body, "\n") for i := 1; i < len(calls)-3; i++ { //处理每一条记录 ...阅读全文

博文 2016-01-12 03:00:00 logo-fox

招聘Golang工程师

招聘一位Golang的工程师,我们的坐标在北京东直门交通枢纽。 待遇是15-30K 职位描述: 1. 负责公司大数据平台分布式数据收集系统的架构、设计和开发工作 2. 负责分布式数据收集系统的性能监控和持续优化; 3. 跟踪分布式系统事务处理、分布式消息队列、实时传输协议等相关技术领域的发展趋势,并主动发起改良计划。 职位要求: 1. 优秀的代码能力,熟练掌握GO语言,对C/C++有掌握优先考虑; 2. 具有解决高并发问题的实战经验和分布式系统的研发经验; 3. 熟练掌握HTTP,TCP/IP等网络传输协议的工作原理,并有相关协议的调优经验; 4. 了解Nginx HTTP/STREAM框架工作原理的优先; 5. 熟练掌握Rabb...阅读全文

Go语言开发学习教程

Go语言开发学习教程 Go语言开发学习教程目录如下: Go语言开发(一)、Go语言简介http://blog.51cto.com/9291927/2126775Go语言开发(二)、Go语言基础http://blog.51cto.com/9291927/2127825Go语言开发(三)、Go语言内置容器http://blog.51cto.com/9291927/2129969Go语言开发(四)、Go语言面向对象http://blog.51cto.com/9291927/2130132Go语言开发(五)、Go语言面向接口http://blog.51cto.com/9291927/2130244Go语言开发(六)、Go语言闭包http://blog.51cto.com/9291927/213030...阅读全文

博文 2018-07-08 11:35:14 天山老妖S

TiDB与gRPC的那点事

作者|黄东旭 编辑|雨多田光 通过对 gRPC 的诞生背景与设计原则的介绍,作者分享了 TiDB 选择 gRPC 的原因,并介绍了在这个过程中为了适应 TiDB 而对 gRPC 做出的调整与完善。最后,关于性能方面,介绍了调优的思路。 如果有关注 TiDB 的朋友可能注意到,我们在上个月的 RC3 版本中已经完成了将 TiDB 中的 RPC 框架替换成了 gRPC,这个工作其实已经铺垫了快一年了,如果装逼一点说的话,其实 gRPC 开源的第一天看了一眼设计和哲学,就决定在 TiDB 中使用它。今天抽空写一下背后的一些思考和在这个过程中的一些经验,本次分享不太会介绍大家怎么去用 gRPC,可能更加偏向一些为什么的问题。 gRPC 背景介绍 其实做分布式系统那么久,几乎也是天天和 RPC 打交道...阅读全文

博文 2017-08-09 11:30:59 黄东旭

golang实现的一个小游戏–猜数字

文同步至:http://www.waylau.com/golang-game-guess-numbe/ 随机生成一个数字,输入一个数字看是否匹对,匹配则结速,反之提示是大了还是小了, 代码如下: package main import ( "bufio" "fmt" "math/rand" "os" "strconv" "time" ) var ( endNum int //设置生成数的范围 ) func main() { i := createRandomNumber(endNum) //fmt.Println("生成规定范围内的整数:", i) //本句调试用 fmt.Println("请输入整数,范围为:0-", endNum) flag := true reader := bufio...阅读全文

博文 2014-10-04 19:26:13 kkkloveyou

【上海招聘】拼多多急招golang开发工程师,高薪福利佳,2年不到估值20亿美金的电商公司邀你加入!

你会 Go, node.js, 也会 angular.js ?请你一定要快来!!! 不熟悉以上技术栈,但会java/python/php,有丰富的服务端搭建经验,愿意学golang,还等什么 ! 拼多多于2015年9月正式上线,是专注于C2B拼团的第三方社交电商平台。 在不到2年的时间里,已拥有超1亿付费用户,单月交易额近70亿元。C轮估值20亿美金。 不啰嗦,放JD 聊天系统服务端开发工程师 岗位职责: 1、负责聊天系统服务端的技术架构及开发,确保系统的高可靠性和海量用户同时在线请求; 2、完善IM系统基础设施建设,提升开发和运维效率。 3、深入理解IM系统架构,发现和解决系统技术问题; 岗位要求: 1、热爱技术,并有较好有的逻辑分析能力,善于学习...阅读全文

Golang性能调优(go-torch, go tool pprof)

Go语言已经为开发者内置配套了很多性能调优监控的好工具和方法,这大大提升了我们profile分析的效率。此外本文还将重点介绍和推荐uber开源的go-torch,其生成的火焰图更方便更直观的帮我们进行性能调优。我也是在实际一次的性能调优中,接触到go-torch,非常棒。 go tool pprof简介 Golang内置cpu, mem, block profiler Go强大之处是它已经在语言层面集成了profile采样工具,并且允许我们在程序的运行时使用它们,使用Go的profiler我们能获取以下的样本信息: cpu profiles mem profiles block profile Golang常见的profiling使用场景 基准测试文件:例如使用命令go test . -be...阅读全文

博文 2017-11-22 10:10:15 WaltonWang

使用 Elastic Stack 来监控和调优 Golang 应用程序

Golang 因为其语法简单,上手快且方便部署正被越来越多的开发者所青睐,一个 Golang 程序开发好了之后,势必要关心其运行情况,今天在这里就给大家介绍一下如果使用 Elastic Stack 来分析 Golang 程序的内存使用情况,方便对 Golang 程序做长期监控进而调优和诊断,甚至发现一些潜在的内存泄露等问题。 Elastic Stack 其实是一个集合,包含 Elasticsearch、Logstash 和 Beats 这几个开源软件,而 Beats 又包含 Filebeat、Packetbeat、Winlogbeat、Metricbeat 和新出的 Heartbeat,呵呵,有点多吧,恩,每个 beat 做的事情不一样,没关系,今天主要用到 Elasticsearch、Me...阅读全文

博文 2017-03-05 23:00:34 Medcl

Go、Nginx、Php、Nodejs谁能胜出紫禁之巅

声明:这里的测试框架都是很常用的框架,不去跟一些奇葩但是所谓性能极高的框架进行对比 由于我们在项目中大量使用Iris和nginx这两个Web框架(纯Go语言实现,零内存拷贝),同时也听过很多人问Go的Http性能对比nginx、对比nodejs到底如何,有鉴于此,今天我们就来做一个Web框架性能真实比拼。 测试环境图: 下面从多个维度对4个框架进行对比:Nginx VS Nginx-php-fpm VS Iris VS nodejs-Express一、 Nginx 并发压力测试100 - 100K 第一张图是在不同并发压力下,每秒处理的请求数 第二张是每秒吞吐的数据量 第三张是99.9%、平均、标准方差的延迟统计,可以看出有0.01%的请求延迟在2秒左右 第四张是单线程统计 (这些图后面不会...阅读全文

博文 2016-10-06 14:00:06 abv123456789

Golang学习[函数]

函数的结构如下 func(p mytype) funcname(q int)(r,s int){return 0,0} 函数有很多特点 多值返回 Go可以返回多值 延迟代码 在defer后指定函数会在退出的时候调用 func ReadWrite() bool { file.Open("fileName") defer file.Close() //.... } 变参 func myfunc(arg ...int){ } 回调 func callback(y int,f func(int)){ f(y) ...阅读全文

博文 2015-11-26 21:00:01 jingmiaowill

on the go way (一)服务器并发

服务器并发的方式有很多种 1.通过多进程或者多线程的方式,现在这种模式基本上已经不用 2.epoll和IOCP回调的方式,不符合人们的习惯 3.使用协程(轻量级线程,创建、销毁的代价很小),协程在逻辑上上顺序执行 其中属于erlang和golang在协程并发方面做的比较好 package mainimport ( "fmt")func getResult(data []int, res chan int) { var sum int sum = 0 for _, v := range data { sum += v } res <- sum}func main() { var res = make(chan int) var data = []int{1, 2, 3, 4, 5, 6, 7,...阅读全文

博文 2016-03-22 11:00:06 OneDream

前端开发

职位诱惑:
中欧商学院创始团队,产品还没启动已经拿到天使轮
岗位职责:
1.1年(含)以上相关工作经验。
2.期望共同学习,快速成长。
3.良好的责任心、学习和沟通能力,能积极面对压力。
4.熟练掌握HTML、CSS、JavaScript,es5。
5.熟练使用npm、webpack,nodejs等前端工具链。
6.有Rxact、Vue经验者优先。
7.有一定浏览器调优能力。
薪水: 10-20K
联系地址:david.yang@transferease.cn
...阅读全文

Go语言的垃圾回收算法被吹过头了?与Java相比如何?

译者|薛命灯 编辑|小智 Go语言正在构建的垃圾收集器(GC),似乎并不像宣传中那样的,技术上迎来了巨大突破。那么,与Java语言作对比之后,该怎么选择呢? 写在前面 最近,我读到一些大肆宣传Go语言最新垃圾回收器的文章,这些文章对垃圾回收器的描述让我感到有些厌烦。这些文章有些是来自Go项目。他们宣称GC技术正迎来巨大突破。下面Go团队在2015年8月发布的新垃圾回收器的启动声明:https://blog.golang.org/go15gcGo正在构建一个划时代垃圾回收器,2015年,甚至到2025年,或者更久……Go 1.5的GC把我们带入了一个新时代,垃圾回收停顿不再成为使用新语言的障碍。应用程序可以很容易地随着硬件进行伸缩,而且随着硬件越来越强大,GC不再是构建可伸缩软件的阻碍。一个新...阅读全文

博文 2017-10-16 14:39:02 薛命灯 译

华为云 NoSQL 招聘

招聘岗位:华为云NoSQL内核开发/测试,要求如下 1、3年以上C/C++、Java开发经验,熟悉Linux下性能调优和debug工具,有良好的编码习惯 2、熟悉 NoSQL 产品,如:MongoDB/Cassandra/Redis/RocksDB/InfluxDB等 3、有分布式存储背景者优先;对事务、一致性、扩展性、高可用等领域有自己的见解者优先 学历本科及以上,工作地杭州、深圳、西安 欢迎推荐,欢迎转发 简历投递邮箱: wangruyi1@huawei.co...阅读全文

招聘 | 钱多、活少、前景好的“程序员”

致:不想被客户指点江山只想开心工作的程序员 有这么一类人:工作高端大气上档次,工资是低调奢华接地气,叫做“程序猿”,也叫“攻城狮”,但是往往城还没攻下来,头发就先掉下来。没有过年过节这一说,就连结婚这个神圣时刻,遇到系统bug也得立刻解决,最喜欢听的一句话就是:同志快醒醒,客户说不改需求了。实际上熬夜加班找bug修bug是常态,没周末没夜生活,还常常遇到周五快下班被客户提各种要求指点江山的神马鬼情况……亲爱的程序员快点投奔甲方吧,我们需要你MeshX 我们是一家全球性区块链公司——缦星链盟,致力于MeshX Chain数字网络运管生态的建设。在北京中关村,西安创新港,深圳生态园,美国圣何塞等地均设有分布式办公地点;我们倡导去中心化的自组网运管网络系统,追求畅快的数据链接,极致的产品体验,丰富...阅读全文

博文 2018-09-10 10:34:41 MashX缦星链盟

golang之runtime.SetFinaliz

在实际的编程中,我们都希望每个对象释放时执行一个方法,在该方法内执行一些计数、释放或特定的要求,以往都是在对象指针置nil前调用一个特定的方法,golang提供了runtime.SetFinalizer函数,当GC准备释放对象时,会回调该函数指定的方法,非常方便和有效。 不过值得注意的是,指针构成的 "循环引⽤" 加上 runtime.SetFinalizer 会导致内存泄露...阅读全文

博文 2017-02-07 03:56:40 henrylee2cn

Golang工程师

职位描述: 1. 使用 Go 语言开发稳健可扩展的后端服务 2. 为实现服务的高可用,进行必要的调优 3. 通过单元测试、自动化以及代码审查等提升优化代码质量 职位要求: 1. 两年以上 Go 服务端经验 2. 熟悉C/C++ 或 Rust至少一年开发经验 3. 熟悉 Linux、Redis、关系型数据库(MySQL,PostgreSQL)、消息队列、Docker 4. 熟悉IP/TCP VLAN SDN 等网络协议(加分) 5. 能够熟练阅读和理解纯英文开发文档(加分) 6. 熟悉华为 思科等网络设备的配置和命令(加分) 7. 有Github开源作品/个人Blog(加分) 工作地址 北京市丰台区航丰一号时代财富天地2112-2113...阅读全文

阿里P8架构师十年的开发经验以及职业生涯规划

初级程序员:做一些静态的界面; 程序员:做一些增删改查的小模块; 中级程序员:做逻辑较复杂的模块; 高级程序员:做核心模块; 项目经理:系统的整体架构; 部门经理:多项目的管理; 总裁:多部门以及企业的发展规划。 那么你想成为这些程序员中的哪一类呢?你的技术又能达到哪一类呢? 我认为,随着你工作年限的增长、对生活对生命认识的深入,应当不断思考几个问题: 我到底适不适合当一名程序员? 我到底应不应该一辈子以程序员为职业? 我对编程到底持有的是一种什么样的态度,是够用就好呢还是不断研究? 想清楚这几个问题最少不会让你每一年都在原地踏步。 程序员的工资: 说到程序员那么肯定首先会想到的就是BAT互联网三大巨头,下面我们就用阿里的一份级别评定及工资等级来看看程序员的工资。 阿里薪资结构:一般是12+...阅读全文

博文 2018-10-22 19:20:04 Java007

工欲性能调优,必先利其器(1)

最近在排查 TiDB 性能问题的时候,通过工具发现了一些问题,觉得有必要记录一下,让自己继续深刻的去理解相关工具的使用,也同时让同学们对类似问题的时候别再踩坑。 使用 iostat 定位磁盘问题 在一个性能测试集群,我们选择了 AWS c3.4xlarge 机型,主要是为了在一台机器的两块盘上面分别跑 TiKV。在测试一段时间之后,我们发现有一台 TiKV 响应很慢,但是 RocksDB 并没有相关的 Stall 日志,而且慢查询也没有。 于是我登上 AWS 机器,使用 iostat -d -x -m 5 命令查看,得到如下输出: Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await...阅读全文

博文 2017-06-21 02:16:02 siddontang

Go语言·Web调优详解

前言 很早以前crypto/tls(TLS长连接库)和net/http的性能不敢恭维,因此我们都使用Nginx做反向代理,但是Go1.8将要来了,这种格局即将被打破了! 我们最近尝试性的将Go1.8编译的服务暴漏到了外网,结果发现crypto/tls 和net/http都得到了极大的提升:稳定性、性能以及服务的可伸缩性! crypto/tls 现在已经是2016年了,我们不可能再去裸奔在互联网了,因此基于TLS是必然的选择,所以我们需要crypto/tls这个库。好消息就是在1.8下,该库的性能得到了很大的提升,性能表现堪称十分优秀,而且安全性也非常出色。 默认推荐的配置类似 [Mozilla标准] (https://wiki.mozilla.org/Security/Server_Side...阅读全文

博文 2017-10-23 06:05:15 孙飞撩技术