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

来自腾讯架构师对,Redis的实践及思考

来自腾讯架构师对,Redis的实践及思考 导语:当面临存储选型时是选择关系型还是非关系型数据库?如果选择了非关系型的redis,redis常用数据类型占用内存大小如何估算的?redis的性能瓶颈又在哪里? 背景 前段时间接手了一个业务,响应时间达到10s左右。阅读源码后发现,每一次请求都是查询多个分表数据(task1,task2….),然后再join其他表(course,teacher..),时间全部花在了大量磁盘I/O上。脑袋一拍,重构,上redis! 为什么选择redis 拍脑袋做技术方案肯定是不行的,得用数据和逻辑说服别人才可以。 时延 时延=后端发起请求db(用户态拷贝请求到内核态)+ 网络时延 + 数据库寻址和读取 如果想要降低时延,只能减少请求数(合并多个后端请求)和减少数据库寻...阅读全文

博文 2019-08-23 23:32:50 勤奋的码农

线上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 沈锋

Golang - var 和 := 的使用

Go语言里面定义变量有多种方式。 使用var关键字是Go最基本的定义变量方式,有时也会使用到:=来定义变量。 定义变量 // 定义一个名称为“variableName”,类型为"type"的变量 // var variableName type var number int 定义变量并初始化值 // 初始化“variableName”的变量为“value”值,类型是“type” // var variableName type = value var number int = 10 同时初始化多个变量,又叫平行赋值 /* 定义三个类型都是"type"的变量,并且分别初始化为相应的值 vname1为v1,vname2为v2,vname3为v3 */ // var vname1, vname2,...阅读全文

博文 2017-03-05 19:58:12 莫尛莫

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

为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

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 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

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

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

Go的类型断言解析

经常地我们对一个接口值的动态类型是不确定的,如方法的形参为接口类型时,此时就需要检验它是否符合我们需要的类型。类型断言是一个使用在接口值上的操作。 如果对Golang的接口和接口值的概念不熟悉,看这里:Go的接口总结断言类型的语法:x.(T),这里x表示一个接口的类型,T表示一个类型(也可为接口类型)。一个类型断言检查一个接口对象x的动态类型是否和断言的类型T匹配。 类型断言分两种情况:第一种,如果断言的类型T是一个具体类型,类型断言x.(T)就检查x的动态类型是否和T的类型相同。 如果这个检查成功了,类型断言的结果是一个类型为T的对象,该对象的值为接口变量x的动态值。换句话说,具体类型的类型断言从它的操作对象中获得具体的值。 如果检查失败,接下来这个操作会抛出panic,除非用两个变量来接...阅读全文

博文 2017-10-20 08:06:27 susufufu

Go推出的主要目的之一就是G内部大东西太多了,系统级开发巨型项目非常痛苦,Go定位取代C++,Go以简单取胜(KISS)

以前为了做compiler,研读+实现了几乎所有种类的语言。现在看语法手册几乎很快就可以理解整个语言的内容。后来我对比了一下go和rust,发现go的类型系统简直就是拼凑的。这会导致跟C语言一样,需要高超的技巧才能写大程序。而rust则没有这种问题,每个部分的组成都很和谐。---------------------------------------------------------------------- Rust是挺优秀的,函数式本来就比命令式来的优雅。但同时也要看到,两种语言的定位不同。Go的定位是取代C(或C++),做所有软件的基础。而Rust想是一种划时代的语言,如果成功,将是颠覆性的。 但同时也应该看到,Go的目标简单,现在也比较稳定,可以使用了而Rust虽然很强大,但它还处...阅读全文

博文 2015-01-16 18:00:01 findumars

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...阅读全文

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 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

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

程序员如何看待京东泄密的?

针对近日传闻的“京东泄露的5千万用户数据”一事,今日,京东官方微博@京东发言人 回应称,确认这些数据不实京东账号数据,请勿造谣传谣。京东称,经过示例数据查验,确认这些数据不是京东账号数据,另外还提醒:买卖公民个人隐私数据涉嫌触犯刑法。以下为京东发言人声明全文:针对外界谣传“京东泄露的5千万用户数据”一事,京东经过示例数据查验,确认这些数据不是京东账号数据,请勿造谣传谣!另外提醒:买卖公民个人隐私数据涉嫌触犯刑法!​2016年,京东曾出现过一起12G数据包泄露事件,其中包括用户名、密码、邮箱、QQ号、电话号码、身份证等多个维度,数据多达数千万条。当时,京东发生声明称,该数据源于2013年Struts 2的安全漏洞问题,京东迅速完成了系统修复,同时针对可能存在信息安全风险的用户进行了安全升级提示...阅读全文

博文 2019-04-26 19:53:50 13113161761

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 { ...阅读全文

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

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

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 傅小黑

Go 反射:根据类型创建对象-第一部分(原始类型)

> 这是关于在 Go 中根据类型创建对象的博客系列两部分的第一部分。这部分讨论原始类型的对象创建 ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/go-reflect/cover1.png) Go 中的 reflect 包提供了根据执行过程中对象的类型来改变程序控制流的 API。 reflect 包提供了两个重要的结构 - Type 和 Value。 Type 是一个 Go 中任何类型的代表。换句话说,它可以被用于编码任何 Go 类型(例如:int , string , bool , myCustomType 等等)。Value 是一个 Go 中任何值的代表。换句话说,它可以被用于编码、操作任何...阅读全文

博文 2018-02-23 17:51:11 polaris

载:罗辑思维在全链路压测方面的实践和工作笔记

载:罗辑思维在全链路压测方面的实践和工作笔记 业务的知名度越高,其背后技术团队承受的压力就越大。一旦出现技术问题,就有可能被放大,尤其是当服务的是对知识获取体验要求颇高的用户群体。提供知识服务的罗辑思维主张“省时间的获取知识”,那么其技术团队在技术实践方面是如何践行省时间的理念的呢?本文将还原罗辑思维技术团队在全链路压测上的构建过程,为您一探究竟。全链路压测知多少保障服务的可用性和稳定性是技术团队面临的首要任务,也是技术难题之一。例如,罗辑思维提供的是知识服务,服务的是在高铁、地铁和公交车等场所利用碎片时间进行学习,在凌晨、深夜都有可能打开App,以及分布在海外的全球用户。这就需要得到App提供7*24的稳定高性能的服务和体验。在实际生产环境中,用户的访问行为一旦发生,从CDN到接入层、前端...阅读全文

博文 2019-02-24 13:34:42 meng_philip123

互联网大厂职位内推啦!!!

阿里巴巴大文娱事业群 Android技术专家 职位描述: 1.独立完成 android客户端程序的开发; 2.根据产品需求开发相关的移动产品; 3.验证和修正测试中发现的问题; 4.配合市场等其他部门,提供产品相关技术支持; 职位要求: 1.三年以上客户端开发经验,精通Android手机平台; 2.熟悉掌握至少一种主流手机平台编程语言(C,C++或Java等),有Java相关开发经验不少于2年; 3.精通android平台下的高性能编程及性能调优; 4.开发基础良好,理解设计模式,在项目或产品中有很好的设计实践; 5.有强烈的责任心和团队精神,善于沟通和合作;能独立完成设计和编码; 6.对Android的UI控件有实际使用和优化经验者优先;有前端开发经验者优先。 今日头条 前端开发工程师 薪...阅读全文

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

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

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

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

golang之runtime.SetFinaliz

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

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程序的工具

前面讲了测试和性能调优之类,这篇主要讲如何利用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

TiDB与gRPC的那点事

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

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

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

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

Java程序员进阶成为架构师,该掌握哪一些架构思维?

​很多人做java开发2,3年后,都会感觉自己遇到瓶颈。什么都会又什么都不会,如何改变困境,为什么很多人写了7,8年还是一个码农,工作中太多被动是因为不懂底层原理。公司的工作节奏又比较快,难有机会学习架构原理,也没人教,所以这个时候,学习架构原理,扩展思维,对自己以后职业生涯尤为重要。同样公司的两个新人,一个新人一点就通,学东西很快,有的人,学东西很慢,也很痛苦,处处都是新技术。为什么?因为那个人懂原理,万物都有规律,掌握了规律学其他东西原理相通,一触就会,不懂原理就会处处碰壁,学习很慢还很折磨。很多程序员会有一个苦恼,工作了很久,在公司一味的增删改查,得不到技术的提高,无缘底层代码,只会用不知其原理!总而言之,你缺少的不是努力,而是选择。选择比努力更重要。如果你不知道如何选择,那么我给你一...阅读全文

博文 2018-12-06 16:58:54 Javaspring12

为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

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

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

批处理GO的作用

--分析器会先分析下一个go前的所有代码,然后再执行,就算最后一步错,也会回滚到第一个语句的状态,换句话说,就是分析器会把go之间的语句作为一个事务,有错误的话会回滚到上一go之前。--可以在分析器下运行以下代码 create table temp(myint int)go --当这个go和下面的那个go没有的话,虽然这个语句正确,但是由于下面出错,这个表也不会创建的,--当只有这个go,没有下面的那个go的话,表temp会被创建,即使下面的语句出错。create function myfuntion(@int int)returns varchar(100)asbegindeclare @intvar varchar(100)set @intvar = 'asdfasd'return @i...阅读全文

博文 2015-09-25 06:00:00 jamex

招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等的搭建、设置...阅读全文

(游戏)招聘服务器工程师

成都一家集自研自发、代理发行于一体的移动游戏公司,现招募4名GOLANG服务器工程师以及3名C++工程师3,此项目是MMO手游Q版游戏,项目刚成立有渠道和资金,现急缺优秀的工程师加入,如果你是“千里马”就来吧,薪水不是问题,入职购买六险一金,有分红,有各种假期和福利。 1、5年以上游戏服务器开发经验, 3年以上Golang经验 2、熟练使用Linux环境,精通C/C++语言和Lua脚本语言 3、熟悉C++或Java,高并发的服务器架构,精通常用数据结构和算法 4、精通MySQL/redis数据库,能独立设计数据库表结构并做性能调优 5: 最重要的通过单元测试、自动化以及代码审查等提升优化代码质量 6、热爱游戏,责任心强,执行力强,具有强烈的团队合作精神和沟通能力 欢迎加QQ...阅读全文

golang版本的通用时间轮 Timewheel

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

Mgo库的常见坑总结

mgo库是一个很好用的MongoDB驱动。对我们来说,主力数据库是MongoDB,因此这个驱动对我们来说也是非常重要的。但是,mgo库有些问题算是一些坑,这里我做了一些简单的整理。 一些关于bson.ObjectId的问题 ObjectId为空的判断 如果你看bson.ObjectId定义的话,它是一个string类型的数据。但是如果你直接定义一个结构,并且生成对象时,这个对象并不是这样的。 我们首先定义一个结构体: type Home struct { ID bson.ObjectId `bson:"_id,omitempty"` Name string `bson:"name"` } 然后看看一个生成的内容 h := Home{Name: "123"} fmt.Println(h.ID)...阅读全文

博文 2017-02-10 15:41:08 kevin

go语言产生素数

package main // 生成2, 3, 4, ... 到 channel 'ch'中. func Generate(ch chan<- int) { for i := 2; ; i++ { ch <- i // Send 'i' to channel 'ch'. } } // 从管道复制值 'in' 到 channel 'out', // 移除可整除的数 'prime'. func Filter(in <-chan int, out chan<- int, prime int) { for { i := <-in // 接收值 'in'. if i%prime != 0 { out <- i // 传入 'i' 到 'out'. } } } func main() { ch := m...阅读全文

博文 2015-06-17 23:07:41 love_se

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

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

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

: 通过不到100行Go代码打造你自己的容器

备注:这个文章讲容器,讲的比较的浅显易懂。推荐,前期入行者看。 转: http://www.infoq.com/cn/articles/build-a-container-golang?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_news_clk Docker在2013年三月实现了开源发布,它的出现让软件开发行业对于现代化应用的打包以及部署方式发生了巨大的变化。紧随着Docker的发布,各种具有竞争性、致敬性以及支持性的容器技术纷纷涌现,为这一领域带来了极大的关注度,同时也引起了人们的反思。这一系列文章将解答读者的各种困惑,对如何在企业中实际使用容器进行分析。 这一系列文章首先将对容...阅读全文

博文 2016-06-24 09:00:00 jhj117

一名优秀的java程序员都具备了哪些能力,从而在大公司拿到高薪?

前言初级Java程序员成长为进阶程序员需要不断的积累和辅助,对于新手来说并非遥不可及,只要遵循一定的原则,比如,先养成几个通往成功的好的习惯,本文为大家带来一位前辈的习惯养成经验,供大家参考,如果受用,请把他们记在心里,贴在桌子上。1.要有责任心高级程序员在面对这些Bug时会从多个维度思考,Bug出现的时间、系统环境、硬件版本以及软件版本等等。接着修复问题,严格自测,上线后观察,一直会跟进到底,把影响降低到最小。他们会主动承担责任,为结果负责。面对各种问题时,不是第一时间为自己找借口,不是互相推脱,互相指责。而是,想尽一切办法解决问题,即使解决不了,也会给出最优选择。责任心在程序员的职业生涯中,具有最重要的指导意义,也是成为高级程序员必须具备的素质。2.掌握代码调试技巧众所周知,在移动互联网...阅读全文

博文 2018-11-04 21:27:35 Austh

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 薛命灯 译