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

Golang 网络爬虫框架gocolly/colly 一

Golang 网络爬虫框架gocolly/colly 一 gocolly是用go实现的网络爬虫框架,目前在github上具有3400+星,名列go版爬虫程序榜首。gocolly快速优雅,在单核上每秒可以发起1K以上请求;以回调函数的形式提供了一组接口,可以实现任意类型的爬虫;依赖goquery库可以像jquery一样选择web元素。 gocolly的官方网站是http://go-colly.org/,提供了详细的文档和示例代码。安装colly: go get -u github.com/gocolly/colly/... 在代码中导入包: import "github.com/gocolly/colly" colly的主体是Collector对象,管理网络通信和负责在作业运行时执行附加的回掉...阅读全文

博文 2017-12-30 00:30:00 majianguo

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

分享 | 百度网盘高速下载方法汇总

在线免安装类1、在度盘资源分享网址“baidu”后面加上 “wp” 两个字母 这个方法之前介绍过:【工具分享】两个关于度娘的工具,非常不错!能用多久天知道,目前是最简便好用的方法。特点:免登陆,免下载安装软件2、油猴脚本+IDM这个方法第一次下载要先安装一些插件,然后用下载软件就可以实现高速下载。之前也介绍过:你还在吐槽百度网盘的下载速度吗?那就来试试这个吧【视频】百度网盘如何实现高速下载教程特点:免登陆,第一次要麻烦一些,后面就快了。 这个方法也比较好用,稳定性也还不错。关键就是要找对合适的脚本,最笨的方法就是挨个试,如果不行了就换。安装软件类1、速盘https://www.speedpan.com/speedpan-free.html 这款软件采用了Aria2多线程下载,支持免登陆网盘账...阅读全文

博文 2019-07-19 23:32:42 永恒君的百宝箱

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

【互联网早报】2017.11.21

## 国内新闻 1. 支付宝内测版遭曝光:马上将支持用Face ID支付 http://tech.sina.com.cn/mobile/n/n/2017-11-21/doc-ifynwnty6206785.shtml 2. 360重组议案过关股东大会500亿元资产注入在即 http://tech.sina.com.cn/i/2017-11-21/doc-ifynwxum7806388.shtml 3. 华策影视讨回乐视2.48亿债权 新乐视文娱业务或盘活 http://tech.sina.com.cn/it/2017-11-21/doc-ifynwxum7806435.shtml ## 国际新闻 1. 无人驾驶货运卡车技术企业「图森...阅读全文

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工程师

职位描述: 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

Ware - 轻松创建中间件层

Ware https://github.com/futurespaceio/ware 核心功能源自[martini][1], 喝杯martini,轻松创建属于自己的中间层。 目前正在使用Ware,开发一个静态生成器[Space][2],快速、简单、插件化。 "喝杯martini,梦回太空“ 简单例子: package main import ( "log" "github.com/futurespaceio/ware" ) func main() { w := ware.New() w.Use(func(c ware.Contex...阅读全文

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

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

载:罗辑思维在全链路压测方面的实践和工作笔记 业务的知名度越高,其背后技术团队承受的压力就越大。一旦出现技术问题,就有可能被放大,尤其是当服务的是对知识获取体验要求颇高的用户群体。提供知识服务的罗辑思维主张“省时间的获取知识”,那么其技术团队在技术实践方面是如何践行省时间的理念的呢?本文将还原罗辑思维技术团队在全链路压测上的构建过程,为您一探究竟。全链路压测知多少保障服务的可用性和稳定性是技术团队面临的首要任务,也是技术难题之一。例如,罗辑思维提供的是知识服务,服务的是在高铁、地铁和公交车等场所利用碎片时间进行学习,在凌晨、深夜都有可能打开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让协程交替输出

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 之前用Golang写过一篇关于下载的文章(https://my.oschina.net/90design/blog/1607131), 最后提到:如果新需求是同时下载,并且按循序下载,最近看到在论坛里有人又再问起,就想起来更新一下此问题。 开始 两个协程交替输出1-20 package main import "fmt" func main() { A := make(c...阅读全文

博文 2018-01-19 11:33:05 90design

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

基于 MySQL 的 ID 生成器 idgo

idgo是一个利用MySQL批量生成ID的ID生成器, 主要有以下特点: * 每次通过事务批量取ID,性能较高,且不会对MySQL造成压力. * 当ID生成器服务崩溃后,可以继续生成有效ID,避免了ID回绕的风险. 业界已经有利于MySQL生成ID的方案,都是通过:

REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();
这种方式生成ID的弊端就是每生成一个ID都需要查询一下MySQL,当ID生成过快时会对MySQL造成很大的压力. 这正是我写这个lib库的原因...阅读全文

开源项目 2015-12-24 16:00:00 flike

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

安装fabric hyperledger--by Skyh0625

hyperledger 是IBM的无币区块链,作为比较大联盟链项目,很多大公司都在研究,比如腾讯阿里,金融行业比如银行保险微众P2P企业等,作为杀手级应用,现在还没看很多,可能在信息存证,发票版权等项目有用上,炒区块链概念的外包公司也水涨船高,今天就重新再虚拟机上安装hyperledger(后面有精华) 1. 准备环境 首先我用的是Ubuntu18.04 LTS环境 这时就得用黑科技,通过ss方便实用,其它的就爱莫能助了 .bashrc写入 export http_proxy="http://192.168.157.1:1080" export https_proxy="http://192.168.157.1:1080" 安装go,官网推荐这样是最新版 sudo snap install ...阅读全文

博文 2019-06-26 00:32:42 skyh25

全面升级后的开源云盘不了解一下么?蓝眼云盘 2.0 发布

蓝眼云盘的 Github 地址,请随手点个 star,谢谢啦。 部分软件截图: 2018 年 1 月份的时候,蓝眼云盘 1.0 刚开发完毕,那时候一个 star 都没有。为了让自己的这个开源项目看起来像那么回事儿,我发第一篇文章, 经过一年时间的持续迭代,目前蓝眼云盘已经有了 600+的 star。 这次升级的关键词就是:更快,更人性化,更透明。更快是指后端重新梳理了架构,从而日志、异常、离线任务、配置文件等更加规范了,图片缩略图也增加了缓存功能,访问速度更快。更人性化是指增加了 UI 的安装向导,可以通过下一步,下一步的方式就配置好数据库和管理员账户。更透明是指增加了大盘监控,管理员可以非常直观的看到每天的 PV,UV 以及周环比日环比,文件占用空间等重要信息。 开源虽然不容易,但是看到大...阅读全文

博文 2019-01-08 23:34:45 李爽

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

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

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

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

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

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

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

Golang通过反射检测变量类型

What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 简单的记录一下吧。 package main import ( "reflect" "fmt" "strings" ) type Foo struct { A int `tag1:"Tag1" tag2:"Second Tag"` B string } func main(){ f := Foo{A: 10, B: "Salutations"} fPtr := &f m ...阅读全文

博文 2018-01-23 10:33:06 90design