如何用一行代码表达程序员的自黑?
最近热播的《欢乐颂2》,把程序员又黑了一把…… 微博头条的这篇文章,各种黑程序员啊 http://weibo.com/ttarticle/p/show?id=230940412029445646074...阅读全文
最近热播的《欢乐颂2》,把程序员又黑了一把…… 微博头条的这篇文章,各种黑程序员啊 http://weibo.com/ttarticle/p/show?id=230940412029445646074...阅读全文
 入冬了,寒风呼啸,白雪飘飘,此刻窝在家里学习应当是极好的。为了满足大家的需求,小编火速为大家整理了史上最全的Docker资料 。本篇文章堪称冬季最佳读物,冬天和学习更配哦~ ##PPT获取方式: 1.关注时速云订阅号(**tenxcloud2**), 查看历史文章; 2.找到该篇文章分享至朋友圈; 3.把朋友圈分享截图发送至该公众号; 小编会及时把资料下载链接和提取码发给你,一大波Docker干货就是你的啦。 **Tips:**活动于**2016年12月31日**截止...阅读全文
Go模块是Go语言的依赖包管理工具。 Go模块的使用 1、Go1.11及以后版本才能使用。 2、Go1.11需要设置环境变量 GO111MODULE 为 on(新特性开关,按照Go语言惯例,mod首次在go1.11版本中使用,go1.12及以后版本这个设置应该不会用了)。 mod是模块英文modules的简写。 列举一些常用的命令行: go help mod查看帮助。 go mod init <项目模块名称>初始化模块,会在项目根目录下生成 go.mod 文件。参数<项目模块名称>是非必写的,但如果你的项目还没有代码编写,这个参数能快速初始化模块。如果之前使用其它依赖管理工具(比如dep,glide等),mod会自动接管原来依赖关系。 go mod tidy根据go.mod文件来处理依赖关系...阅读全文
最近在看golang连接mysql数据库的例子(Go-MySQL-Driver),但是想到连接数据库肯定会有连接多从库的需求,而且每个从库的权重也会不一样,参考<<权重轮询调度算法(Weighted Round-Robin Scheduling)>>这篇文章写了一个golang版本的权重轮询调度算法,请大家指教,不多说了直接上代码: package main import ( "fmt" "time" ) var slaveDns = map[int]map[string]interface{}{ 0: {"connectstring": "root@tcp(172.16.0.164:3306)/shiqu_tools?charset=utf8", "weight": 2}, 1: {"co...阅读全文
上次写了一篇有关kingshard架构设计的[文章](https://github.com/flike/kingshard/blob/master/doc/KingDoc/architecture_of_kingshard_CN.md),得到了很多热心网友的关注。其中有网友提到:希望再写一篇关于如何利用kingshard搭建一个可扩展的MySQL集群的文档。利用假期时间,写了一篇kingshard使用指南,在这篇文章中,我将结合自己对MySQL Proxy的理解,为大家讲述如何正确使用kingshard数据库中间件。 感兴趣的同学,请移步: https://github.com/flike/kingshard/blob/master/doc/KingDoc/how_to_use_ki...阅读全文
导读:机器学习和深度学习是近年技术的热点,面对众多的机器学习平台如何进行选择,这是一个很困扰的问题。本文对分布式机器学习(ML)平台中使用的设计方法进行了调查,并提出了未来的研究方向。本文比较了机器学习平台设计方法和使用指南,是我和 Kuo Zhang 和 Salem Alqahtani 同学合作而成。 我们在 2016 年秋天写了这篇文章,并在 ICCCN'17(温哥华)提交了这篇文章。 机器学习,特别是深度学习(DL)在语音识别,图像识别和自然语言处理以及推荐/搜索引擎方面取得了成功。 这些技术在自主驾驶汽车,数字卫生系统,CRM,广告,物联网等方面都有广泛的应用。随着这些资本进入进一步推动技术变革,我们已经看到许多机器学习平台。 由于训练中涉及到的巨大的数据集和模型大小,机器学习平台通...阅读全文
自本同步公众号:“灰子学技术”原文链接:https://mp.weixin.qq.com/s/uiP6tAoLRj13RZRQMNOkKA准确来说,Go语言没有类的概念,不过却有struct和interface,这篇文章主要来讲struct,因为笔者觉得这个和C++中的Class有些相似。在C++中Class有几个东西,一定要谈,它们分别是:public/protected/private属性,构造函数和析构函数,继承,函数重载。一、公私有属性1.C++中的公私有属性,一定要有关键字public, protected, private来修饰。并且这些属性的作用范围是针对类来说的,不是针对类的实例来说的,是编译阶段的概念。详细介绍参见我的另外一篇文章:private在C++中的范围2.Go中也...阅读全文
友情提示:此篇文章大约需要阅读 0分钟49秒,不足之处请多指教,感谢你的阅读。订阅本站 此文章首发于 Debug客栈 |https://www.debuginn.cn 从去年开始接触学习 Go 语言,一直没有一个明确的学习方向,只是一贯的跟着视频学习,虽自己做了衍生开发的项目,但是使用的技术也是 Go 语言中的冰山一角,近期在 Github 中找到了一个 Star 比较高的 Go语言学习成长路线图,才发现自己所学的仅仅是入门而已,若想得到一个体系化的进步,在最学习的过程中要追求的是高效率的量变,促使自己得到一个可量化的质变,这才是高效的学习。 今天将 Github 中此路线图放在此处,做一个 Flag,也作自己查缺补漏的一个加油站⛽️,作为 最有潜力的高并发语言之一,相信未来 Go 语言会解...阅读全文
文章从C中的线程栈引入问题,讲述Go的处理方式。 第一阶段处理方式:Segmented stacks(分段栈); 现阶段处理方式:Stack copying 想了解 Goroutine 、 Stack 和 GC 内部实现的可以看看这篇文章以及相关文章 [1.How Stacks are Handled in Go](http://blog.cloudflare.com/how-stacks-are-handled-in-go/) [2.Contiguous stacks](https://docs.google.com/document/d/1wAaf1rYoM4S4gtnPh0zOlGzWtrZFQ5suE8qr2sD8uWQ/pub) [3.Conve...阅读全文
本文译自 Semantic Import Versioning, Go & Versioning 的第 3 部分, 版权@归原文所有. 如何将不兼容的更改部署到现有软件包 ? 这是任何包管理系统中的根本挑战和决断. 问题的答案决定了所产生的系统的复杂性, 它决定了如何轻松或难以使用包管理. (它还决定如何轻松或难以实现包管理, 但用户体验更重要.) 为了回答这个问题, 这篇文章首先介绍了 Go 的导入兼容性规则: 如果旧包和新包具有相同的导入路径, 新软件包必须向后兼容旧软件包. 我们从 Go 一开始就主张这个原则, 但我们没有给它一个名字或者这样一个直接的陈述. 导入兼容性规则大大简化了使用不兼容版本的软件包的体验. 当每个不同版本具有不同的导入路径时, 关于给定导入语句的预期语义没有歧义...阅读全文
前几次去 ruby china, python china 一样,都是跟朋友去,然后打酱油的。 明明我主力是写C/C++的,唉。 自从来到ty的这一个多月以来,一直都是忙成狗的状态。 新员工想要开速适应,做出成绩,我想这些都是应该付出的。本计划这周四上线功能,在我经过了不间断的攻坚之后,似乎也有了些眉目。于是突然之间,我有了一点时间。我想,每天挤出一点时间来看讲师所讲的相关内容我应该还是可以的。 我想起了上学时候常说的话:平时上课不努力,考试临时抱佛脚。哈哈! 附: 45分钟技术分享1:主讲人:陈佳桦,议题:Go Web应用开发 45分钟技术分享2:主讲人:李霞,议题:我的Go实战经验 20分钟短演讲1: 主讲人:郝林,议题:Go并发编程 45分钟技术分享3:主讲人:刘奇,议题:Codis的...阅读全文
翻译自golang.org 介绍 这是一篇为熟悉c或c++语言的开发人员提供的介绍go语言的基础教程。本文不是综合性的语言指南,而更接近于语言规范。在你阅读本教程后,你可以继续阅读“如何更有效率的编写Go程序”这篇文章,更深入的了解这门语言应该如何被使用。同时,这里还提供了一个Go语言的三天教程:第一天,第二天,第三天。 接下来将通过一系列适度的例子程序来展现这门语言的关键特性。所有的程序都存放在/doc/progs/目录中。 程序片断都标注了该片断在原始文件中的行号。为了代码的清晰,空白行将被保留。 Hello,World 让我们以一种常用的方式开始我们的教程: 05 package main 07 import fmt "fmt" // Package implementing form...阅读全文
mac idea golang 配置 今天只写了最关键的地方 基本配置可以参见这篇文章 http://www.cnblogs.com/clivelee/p/3870186.html 由于golang plugin背墙了 所以idea1.4无法配置 1. 进入https://github.com/go-lang-plugin-org/go-lang-idea-plugin/releases/ 下载最新的插件 注意——-mac 直接下完整的zip文件 1.0.0 2. 打开plugins -》install plugin from disk 从硬盘安装 直接选择刚才下的zip文件 3 file - project structure - Sdks 配置go sdk 4 大功告成 $(functi...阅读全文

Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.
*这篇文章基于 Go 1.13 版本。有关内存管理的讨论在我的文章 ”[Go:内存管理与分配](https://medium.com/a-journey-with-go/go-memory-man...阅读全文今天照着例程想把工程管理好好研究下,忽然发现怎么都不自动生成bin目录,google半天,发现这篇文章 https://golang.org/doc/code.html 原来是GOBIN环境变量的问题,如果设置了这个环境变量,则不生成bin目录,可执行文件都存到GOBIN里了,删去,再试,ok了。 还是有必要把google的文档好好吃透下...阅读全文
Go in Go随着 Go 1.5 版本的开发,现在整个系统都是使用 Go 编写的(有一小部分汇编)C 已经成为过去时了。注: gccgo 仍然很强大 这篇文章主要探讨原始编译器 gcc为什么之前用 C 编写?启动(而且 Go 的主要目的不是作为一个编译器实现语言)为什么编译器使用 Go 重写?不单单是验证,我们还有更多实际的原因:Go 比 C 容易编写(实际上)Go 比 C 容易调试(即使没有调试器的情况下)Go 将成为你唯一需要会的语言,鼓励贡献 Go 有更好的模块化,工具链,测试工具,配置工具等等Go 很简单就能进行并行操作虽然看起来很多优势,但是还是夸的太早了:)设计文档: golang.org/s/go13compiler 为什么运行时也是用 Go 重写?我们有自己的 C 编译器来...阅读全文
阿里中间件是阿里集团负责业务底层共享技术及部分技术基础设施的。想了解更多可以戳这里:http://jm.taobao.org/about/ 岗位描述: - 扎实的 Linux 系统开发经验。 - 熟悉高并发、网络编程,熟悉系统高可用和稳定性方法策略。 - 两年以上工作经验,其中 golang 开发经验至少一年,并且愿意接触并学习Java;或者2年以上相关java研发工作经验,熟悉Java常见开发框架,有扎实的 Java 基础和丰富的 WEB 开发经验 - 熟悉系统高可用和稳定性方法策略,比如同城容灾、异地双活、异地多活等,有实战经验优先 - 精于架构设计、性能优化,有故障处理、监控、限流、降级、预案、容量规划实战经验优先 - 善于独立思考,有快速学习能力,不断突破技术瓶颈,...阅读全文
该篇文章首发于boyn.top,转载请声明 Go语言是面向对象的语言吗? 如果某个开发人员在学习Go之前,对于Java,C#那套面向对象设计方法很熟悉的人员,在学习Go的时候,面对Go中的结构体struct,接口interface等概念,也许会产生疑问:Go语言是一门面向对象的语言吗.这个问题的答案是:Yes and No. 我们来看看官方是怎么说的 Yes and no. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of “interface” in Go provides a dif...阅读全文
今年江湖大事繁起,又至寒冬,冻的不仅是温度,更是人心。这两天上班途中看到多个公众号和媒体发了很多 "XXX公司裁员50%" 等等诸如此类的文章,也真是撼动人心。寒冬,比以往来的更快一些。人在江湖,身不由己。在看看诸如博客园等IT人士聚集之地,各种 "35岁该何去何从"的文章比比皆是,非危言耸听。低头冥想一下,自己也在30+的被淘汰之路。一直在问自己为什么还要写诸如此类的博文?作为一个小老鸟,虽然今天是周末,但是我还是有话要说。持续学习廉颇老矣尚能饭否?用于我们IT,我觉得是一句很讽刺的话,许多跨进30+年龄段的"勇士"还只会curd,为什么只会curd,说来可笑,多半是自己不争气(此句接收反驳)。林子之大,xxxx。看到此文的人能否回忆一下多年来自己在学习之路上是否尽力?包括小编在内,每次想...阅读全文
链接: https://pan.baidu.com/s/1KS6mLWOkApVftQKxvU_qAw 提取码: k5qc 网上转载,侵权即删...阅读全文
我公司14年成立,完成两轮融资,目前正在招聘Go工程师1名,待遇:每月15-30K左右。周末法定都休息,五险一金,带薪年假,年终奖金。 要求:1、熟悉 Go 语言。2、有高负载 Server 实战经验。3、对计算机技术有发自内心的兴趣。 欢迎大家推荐,有丰厚推荐奖金。 联系:QQ 3407909729 有实战经验既可,不限年数...阅读全文
找机会可以实战一下。 这篇文章讲述如何使用新的 Web UI 调试内存使用。https://honeycomb.io/blog/2017/08/golang-observability-using-the-new-pprof-web-ui-to-debug-memory-usage...阅读全文
春节就要到了,每到年末就非常适合总结、反思,思考过去一年的成长(就),过去一年的收获,过去一年的改变,所以接下来两三周的时间,我想给大家分享一些技术以外的思考。 这次先跟大家分享关于未来的思考,职业目标和规划决定了你以后的职业高度、职业角色,你本来想成架构师、技术VP、CTO,结果就是没有了结果。 后面可能分享理财和读书等方面的思考,因为技术人,首先是一个人,那必然就有生活,生活就需要money,你不理财,最后只能一穷二白,辛辛苦苦一年的劳动,可能所剩无几,甚至负数了,几年后别人过着舒服的生活了,而你还在苦逼的挤公交、地铁。 读书是获取知识最廉价的方式,知识改变命运不是闹着玩的,读大学没用这些言论是扯淡的,你看那些CEO、CTO,或者你身边的非常牛的人,哪个不读书?如果你不喜欢读书,大概是心...阅读全文
这篇文章本不该有,但是我安装abigen的经历实在是太艰辛了,还是记录下吧。 1. 正确姿势 先说正确姿势,希望你能顺利。 一般来说,安装abigen命令,只需要三步就可以搞定的,下载,编译,安装。 go get github.com/ethereum/go-ethereum cd $GOPATH/src/github.com/ethereum/go-ethereum/ make make devtools abigen --help 2. 坑一之科学上网 在执行make devtools时,需要下载相关依赖,有golang.org的,也有github的,可怜的我一会开一会关,仍然不行,原因是Makefile里是这么写的 Makefile (看到-u了吧?你一定看到了!) 我不想修改Make...阅读全文
这里的内容大部分是从他人处整理得到 http://my.oschina.net/1123581321/blog/190942 时间戳 当前时间戳 fmt.Println(time.Now().Unix()) # 1389058332str格式化时间 当前格式化时间 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5 # 2014-01-07 09:42:20时间戳转str格式化时间 str_time := time.Unix(1389058332, 0).Format("2006-01-02 15:04:05") fmt.Println(str_...阅读全文
经过网上查找解决方法,也按照这篇文章修改了vscode 的配置,但依然无法进行代码提示。 参考:https://www.cnblogs.com/Dennis-mi/p/8280552.html { "go.autocompleteUnimportedPackages": true, "go.useCodeSnippetsOnFunctionSuggest": true, "go.gopath": "/home/chensl004/Workspace/go/", "go.useCodeSnippetsOnFunctionSuggestWithoutType": true, "go.inferGopath": true, "go.gotoSymbol.includeImports": true,...阅读全文
这篇文章想聊聊Golang语言下的设计模式问题,我觉得这个话题还是比较有意思的。Golang没有像java那样对设计模式疯狂的迷恋,而是摆出了一份“看庭前花开花落,望天空云卷云舒”的姿态。 单例模式: Gloang的单例模式该怎么写?随手写一个,不错,立马写出来了。但这个代码有什么问题呢?多个协程同时执行这段代码就会出现问题:instance可能会被赋值多次,这段代码是线程不安全的代码。那么如何保证在多线程下只执行一次呢?条件反射:加锁。。。加锁是可以解决问题。但不是最优的方案,因为如果有1W并发,每一个线程都竞争锁,同一时刻只有一个线程能拿到锁,其他的全部阻塞等待。让原本想并发得飞起来变成了一切认怂串行化。通过check-lock-check方式可以减少竞争。还有其他方式,利用sync/a...阅读全文
本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。 GO语言前景分析 这段时间比较忙,相信很多朋友大概都知道,如果不知道的话,可以参考我上篇文章跨维度的打击,是可以直接秒杀的,里面有介绍,大家可以看看。 抓住时代的趋势 在上篇文章中,也就是那个跨维度的打击,是可以直接秒杀的中,提到这个时代的问题,这次针对go语言的前景分析,其实我也想讲一下时代的问题。还记得2010年的时候,那个时候移动互联网时代刚刚兴起,很多以前做java的,也就是做J2EE的人(当时J2EE是红海),抓住了这个机会进行的转型,然后得到红利,甚至实现了人生的转变,这个真的不是夸张的。...阅读全文
关于Go 和Erlang的一些想法 原文链接:http://blog.erlware.org/some-thoughts-on-go-and-erlang/ 以下为本人翻译,仅用于交流学习,版权归原作者所有,转载请注明出处,请不要用于商业用途。 更新: 我发现我这篇文章没有把观点说明白。我并不是说Go不行或者应该改进,因为它跟Erlang是不一样的。我想说的是在可用性和低延迟不可缺少的高并发后端领域来说,Go仍然不能替代Erlang。 需要注意的是,我写这篇文章并不是要关于某一种语言比如Julia。我听说不仅仅在新项目里,还有在一些老项目要替换新语言里,Go慢慢成了Erlang的替代者。没有人说Julia也是这样,但是Go和Node.js却被一些人看作是Erlang的友好的替代者。Erlan...阅读全文
po 主是苦逼码农一枚,软件工程师,做服务端方向,主要写 nodejs & golang 偶尔写点 python,所以这是一篇刚刚拥有第一个开发板的小白写的小白文,以上是背景 前段时间为了改善生活买了一块树莓派3,装了 debian 8 jessie。 1. 换清华的源: sudo vi /etc/apt/sources.list 注释掉其他的源插入这两个: deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ jessie main non-fr...阅读全文
>>> geth 可执行文件怎么构建出来的? 上篇文章中讲,我们是通过 make all 构建出所有可执行文件。那么它到底做了些什么呢? make是一个构建工具,它依据指定规则来构建目标,而构建什么目标以及如何构建目标都写在了 makefile 文件中(当然你也可以不叫makefile) 推荐大家阅读这篇文章 http://www.ruanyifeng.com/blog/2015/02/make.html ,学习 makefile 文件的编写 可以看到以太坊源码根目录存在一个makefile文件,通过上面的学习应该知道了 make all 到底做了什么 GORUN = env GO111MODULE=on go run ... all: $(GORUN) build/ci.go instal...阅读全文
在看这篇文章之前,如果你没看过golang利用socket封装数据,那我建议你看下;同样,如果没看过goroutine和channel实现master-worker模式,同样建议你看下并理解之后再来看这篇文章。这篇文章主要是上两篇文章的结合使用。tcp消息的收发我们已经知道,socket是一个抽象层,其本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。所以我们队tcp消息的收发即对socket中几个接口的配合使用来完成。在golang利用socket封装数据这篇文章中,我们对tcp的消息有收发的处理。但是,成千上万个client发送到server端的tcp请求可能server端还能应付得过来(每个tcp连接开启一个...阅读全文
摘要: 2017年金融安全威胁演进趋势,纽约发布金融安全新政策,WireX 僵尸网络袭击全球,金融企业如何选择安全的云 3d4fd1956f53474cc9939731e71719b550aad415 【金融安全动态】 2017年金融安全威胁演进趋势。点击查看原文 概要:IT资讯服务公司Data Art的全球金融行业总监分享2017年金融行业的网络安全风险演进趋势。文章提出,金融行业里专业安全人才日渐短缺(当然,这个现象也存在于其他行业中),而安全运营的工作量日益增大,这之间的矛盾,让企业“自己做好安全”这件事变得越来越难。 点评:结合文章和我们的看法,2017年,针对金融行业的网络攻击将有两大趋...阅读全文
公司简介: 我们是一家北京的开发并运营互联网创新产品的公司。公司团队以技术为主导。在技术方面,倡导全面自动化、拥抱新技术。产品设计方面,倡导极简主义、注重细节。我们有海量用户的操盘经验,曾经把一款娱乐类 App 做到将近 1000 万用户,在苹果 App Store 香港区、台湾区下载量排行第一。公司得到了顶级 VC 的投资。 福利待遇: 满足你期待的薪资,而且试用期薪资不打折,入职即缴纳五险一金,带薪年假,团建聚餐,节日福利,生日福利,免费体检,免费工作餐,旅游等福利多多… Go 工程师--职位描述: - 熟悉 Go 语言 - 有高负载 Server 实战经验 - 对计算机技术有发自内心的兴趣 - 必须有无障碍阅读英文技术文献的能力 联系方式: ...阅读全文
上面我们已经说过了一些倒排索引的东西,并且也知道了如何来实现一个倒排索引完成检索功能,那么检索完了以后如何排序呢,这一篇简单的说一下倒排索引的文本相关性排序,因为排序实在是太复杂了,我们这里就说说文本的相关性排序,而且是最简单的TD-IDF排序,之后有机会可以再说说整个搜索的排序算法有些什么。 文本相关性排序 首先明白几个概念: Term,分词以后最小的单位,比如用Golang写一个搜索引擎,分词以后就是用,golang,写,一个,搜索引擎,那么每一个词就是一个Term。 TF(Term Frequency),Term在文章中出现的频率,就是当前term在文章中出现的频率,就是term次数/总term数,比如上文中的搜索引擎这个term的TF就是1/5,TF越高那么这篇文章中的这个词就越重要...阅读全文
接上篇: Go Module 工程化实践(一):基础概念篇。 2. go get 取包原理篇 不论是否开启Go Module功能,go get从版本控制系统VCS中取包的基础过程是类似的,除了在新的实现中不再循环拉取submodule子模块以外。 2.1 go get 基础取包流程 假设依赖包github.com/liujianping/foo不在本地,需要通过go get获取。发起以下命令: $: go get github.com/liujianping/foo 命令发出后: 2.1.1 第一步,正则匹配出依赖包的查询路径 go get可以指定具体包的import路径或者通过其自行分析代码中的import得出需要获取包的路径。但是import路径,并不直接就是该包的查询路径。在go ge...阅读全文
首先从定义中来区别 数组的概念就唠叨了 ,格式如下var balance [10] float32 第一个var是赋值符号 balance为数组名称 【10】为数组下表 float32 数组类型为浮点型 以上是数组的基本概念 重点在下面: var balance = []float32{1000.0, 2.0, 3.4, 7.0, 50.0},【】中不填写数字的形式,go语言中会根据元素的个数来设置数组的大小。或许会认为是动态数组 但是它不是 因为它的数量只是后面的元素来设定,但不是动态的 有什么区别 往下看: 切片的定义:代号(slice) go数组长度不可改变 上面没有数组下表的格式 是根据元素决定数组的大小 是设置 不是改变。而切片不同,与数组相比切片...阅读全文
No.1 文档概要 在Golang中使用SQL或类似SQL的数据库的惯用方法是通过 database/sql 包操作。它为面向行的数据库提供了轻量级的接口。这篇文章是关于如何使用它,最常见的参考。 为什么需要这个?包文档告诉你每件事情都做了什么,但它并没有告诉你如何使用这个包。我们很多人都希望自己能快速参考和入门的方法,而不是讲故事。欢迎捐款;请在这里发送请求。 在Golang中你用sql.DB访问数据库。你可以使用此类型创建语句和事务,执行查询,并获取结果。下面的代码列出了sql.DB是一个结构体,点击 database/sql/sql.go 查看官方源码。 首先你应该知道一个sql.DB不是一个数据库的连接。它也没有映射到任何特点数据库软件的“数据库”或“模式”的概念。它是数据库的接口和...阅读全文
###介绍 学习golang就不能不理解goroutine,关于goroutine的科普文章是http://studygolang.com/articles/1855, 这篇教程都第一次看就能看懂,写的非常好,当时以为会goroutine了,但是随着最近半个月的研究发现,如果只看了这篇文章就跟别人吹goroutine就真的贻笑大方了。 ### 我的学习启蒙 我对goroutine的进一步理解是通过这篇 http://morsmachine.dk/netpoller, 因为之前对epoll有些懂(只看过一点点科普文章),所以看这篇文章的时候我没怎么看懂,但是看懂了他说的问题,调用epoll按道理说一般是阻塞的,阻塞的情况下 scheduler 会将 M 拿走,将阻塞的 P 扔给 os...阅读全文
问题 4月份换了一份工作,新工作是使用golang开发。当我在代码仓库中fork了一份代码准备在自己的repo中开发时,发现golang的fork的问题。 源repo:example.com/group/tool.gitfork后: example.com/my/tool.git 于是我使用 go get example.com/my/tool 来下载我的repo准备工作时发现,GOPATH下面依然有group/tool。原因当然是代码中import包的时候都是这么使用的: import "example/group/tool/module" 于是我如果要正常运行的话就得把上面改成: import "example/my/tool/module" 然后开发完做pull request前又得改...阅读全文
很早就想写一系列的这样的文章了,之前在一个电商公司做搜索,对搜索引擎有一些认识,来到一个新的创业公司以后非常高兴还有机会继续做这方面的事情,虽然领域已经变了,而且不是做搜索了,但是技术还是那些技术,并且有机会接触到了Go语言,对于一个将近10年C/C++的程序员来说,Go的一些特质让我觉得非常舒服,可参见我之前的这篇文章。 从公司项目衍生出了一个自己的搜索引擎项目,然后有了这篇文章。 先聊聊目标吧,我希望实现一个这样的搜索引擎 使用Go语言实现,方便部署,最好就用一个二进制文件搞定一些,不需要安装任何依赖。 类似一个电商的搜索引擎,支持多字段的检索,不仅仅是文本的全文索引,还需要包括过滤功能(比如价格区间过滤),汇总功能(比如结果集中品牌数量汇总),基本的统计功能。 索引器和搜索器在一起,主...阅读全文
Sublime Text 是编程时非常流行的编辑器之一。Sublime 有些功能可以使编程变得有趣。Sublime 在打开速度、处理大文件效率、内存占用等多个方面相对于其他编辑器都有很大优势,并且它非常易于扩展。 在安装 Sublime Text 插件之前,我们需要先安装 Package Control,可以参考这篇文章来安装 Package Control。 本文整理了一些 2017 年非常棒的 Sublime Text 主题,希望你能从其中找到一款适合的。 1. Material Theme Material Theme 文档非常完善,并把 Material Design 设计语言引入到你的 Sublime Text 3 中,并且这款主题有非常多可以自定制的选项。 该主题提供了可视化的编...阅读全文
结论 在Go中,map中存放map,上层map执行delete,子层map占用的内存会释放,无需手动先释放子map内存,再在上层map执行删除。 实验 在C++中,如果使用了map包含map的数据结构,当要释放上层map的某一项时,需要手动释放对应的子map占用的内存,而在Go中,垃圾回收让内存管理变得如此简单。 package main import ( "log" "runtime" ) var lastTotalFreed uint64 var intMap map[int]int var cnt = 8192 func main() { printMemStats() initMap() runtime.GC() printMemStats() log.Println(len(int...阅读全文
Go 语言有一些我们常说的「坑」,有不少优秀的文章解释讨论过这些「坑」。这些文章所讨论的东西非常重要,尤其对 Go 的初学者来说,时不时就有人掉进这些小「坑」里。 但有个问题让我困惑了很久,为什么我几乎没碰到过这些文章里讨论的绝大部分「坑」?真的,大多数比较知名的比如 “nil interface” 或者 “slice append” 等我从来就没觉得困惑过。我从开始使用 Go 一直到现在总是以某种方式避开了这些形形色色的问题。 后来发现,我足够幸运的读了不少解释 Go 数据结构内部实现的文章并且学习了一些 Go 内部运行原理的基础知识。这些知识足够让我对 Go 有了深刻的认识,同时也避免了掉进各种各样的坑里。 记住维基百科的定义,「坑 是…有效的构造…但同时是反直觉的」 所以,你只有两个选...阅读全文
这篇文章介绍了Golang如何实现TCP和UDP传输,转自Mina Andrawos的Implementing UDP vs TCP in Golang。欢迎大家访问[我的博客](http://zuozuohao.github.io/),代码可以在[@Zuozuohao](https://github.com/Zuozuohao/GolangGOFPatterns)下载。 Go被称为可移植的系统编程语言,以其简洁的语法、易于部署和良好的性能受到后端程序员的欢迎。网络通信是后端服务软件的一个重要功能,目前存在大量的应用层的通信协议能够满足这个功能需求。构建这些协议的技术基础或是TCP、或是UDP,在这篇文章将简要介绍两种协议的Go语言实现。 TCP IN GO TCP作为HT...阅读全文