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

Python Flask快速入门与进阶

第1章 课程简介本章内容会带领大家通览整体架构,功能模块,及学习建议。 让大家在一个清晰的开发思路下,进行后续的学习。同时领着大家登陆 http://movie.54php.cn/ 一起来演示一下项目。第2章 课程准备工作本章节是准备开发环境。会分别在windows 和 linux 操心系统 给大家演示如何安装开发环境所需的python3.7 和 数据库MySQL。 大家一定要使用自己熟悉的操作系统搭建开发环境第3章 Python3 基础知识讲解温习本章节是带领大家温习下python3的基础知识,包括基础语法,基础数据结构 以及非常重要的装饰器的讲解。 其中装饰器是重要知识让大家更好的学习和理解Flask架构做铺垫第4章 Flask框架简介本章节通过对比目前的常用Python MVC框架,让...阅读全文

博文 2019-12-18 23:34:37 buzzttys

goroutine和channel对tcp连接消息的收发

在看这篇文章之前,如果你没看过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-09-19 17:34:57 初级赛亚人

金融安全资讯精选 2017年第五期:WireX 僵尸网络袭击全球,金融企业如何选择安全的云

摘要: 2017年金融安全威胁演进趋势,纽约发布金融安全新政策,WireX 僵尸网络袭击全球,金融企业如何选择安全的云 3d4fd1956f53474cc9939731e71719b550aad415 【金融安全动态】 2017年金融安全威胁演进趋势。点击查看原文 概要:IT资讯服务公司Data Art的全球金融行业总监分享2017年金融行业的网络安全风险演进趋势。文章提出,金融行业里专业安全人才日渐短缺(当然,这个现象也存在于其他行业中),而安全运营的工作量日益增大,这之间的矛盾,让企业“自己做好安全”这件事变得越来越难。 点评:结合文章和我们的看法,2017年,针对金融行业的网络攻击将有两大趋...阅读全文

用Golang写一个搜索引擎(0x05)--- 文本相关性排序

上面我们已经说过了一些倒排索引的东西,并且也知道了如何来实现一个倒排索引完成检索功能,那么检索完了以后如何排序呢,这一篇简单的说一下倒排索引的文本相关性排序,因为排序实在是太复杂了,我们这里就说说文本的相关性排序,而且是最简单的TD-IDF排序,之后有机会可以再说说整个搜索的排序算法有些什么。 文本相关性排序 首先明白几个概念: Term,分词以后最小的单位,比如用Golang写一个搜索引擎,分词以后就是用,golang,写,一个,搜索引擎,那么每一个词就是一个Term。 TF(Term Frequency),Term在文章中出现的频率,就是当前term在文章中出现的频率,就是term次数/总term数,比如上文中的搜索引擎这个term的TF就是1/5,TF越高那么这篇文章中的这个词就越重要...阅读全文

博文 2017-02-09 08:18:07 吴yh坚

Django入门到进阶-更适合Python小白的系统课程

​Django入门到进阶-更适合Python小白的系统课程 完整无密 【点击下载】掌握Django的基础知识,学习Web的相关扩展知识,学会开发c/s服务与apiserver服务;学习多方面非Django内置模块的配置开发方法;学习真正生产环境的服务器最终部署方案;全面阐述Web开发的各个环节的知识点,让你在使用或不使用Django进行开发的情况下都可以顺利上手基于Python的Web服务,尽量涉及绝大部分Python Web开发的生态,并且做讲解知识浅中带细,易于理解,对初学者友好适合人群入门Python刚刚接触Web开发的同学做Python运维的同学(基于Django开发相关Web业务)做Python测试的同学技术储备要求掌握Python基础了解前端基础章节目录:第1章 Django入门...阅读全文

博文 2020-01-10 02:59:04 xiaohuihui

Go Module 工程化实践(二):go get 取包原理篇

接上篇: 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...阅读全文

博文 2019-03-07 00:34:39 JayL

go语言中数组和切片的区别 本人新手 高手勿喷

首先从定义中来区别 数组的概念就唠叨了 ,格式如下var balance [10] float32 第一个var是赋值符号 balance为数组名称 【10】为数组下表 float32 数组类型为浮点型 以上是数组的基本概念 重点在下面: var balance = []float32{1000.0, 2.0, 3.4, 7.0, 50.0},【】中不填写数字的形式,go语言中会根据元素的个数来设置数组的大小。或许会认为是动态数组 但是它不是 因为它的数量只是后面的元素来设定,但不是动态的 有什么区别 往下看: 切片的定义:代号(slice) go数组长度不可改变 上面没有数组下表的格式 是根据元素决定数组的大小 是设置 不是改变。而切片不同,与数组相比切片...阅读全文

Go database/sql文档

No.1 文档概要 在Golang中使用SQL或类似SQL的数据库的惯用方法是通过 database/sql 包操作。它为面向行的数据库提供了轻量级的接口。这篇文章是关于如何使用它,最常见的参考。 为什么需要这个?包文档告诉你每件事情都做了什么,但它并没有告诉你如何使用这个包。我们很多人都希望自己能快速参考和入门的方法,而不是讲故事。欢迎捐款;请在这里发送请求。 在Golang中你用sql.DB访问数据库。你可以使用此类型创建语句和事务,执行查询,并获取结果。下面的代码列出了sql.DB是一个结构体,点击 database/sql/sql.go 查看官方源码。 首先你应该知道一个sql.DB不是一个数据库的连接。它也没有映射到任何特点数据库软件的“数据库”或“模式”的概念。它是数据库的接口和...阅读全文

博文 2017-08-08 16:05:07 尼古拉斯河马

关于goroutine的一点点浅薄理解

###介绍 学习golang就不能不理解goroutine,关于goroutine的科普文章是http://studygolang.com/articles/1855, 这篇教程都第一次看就能看懂,写的非常好,当时以为会goroutine了,但是随着最近半个月的研究发现,如果只看了这篇文章就跟别人吹goroutine就真的贻笑大方了。 ### 我的学习启蒙 我对goroutine的进一步理解是通过这篇 http://morsmachine.dk/netpoller, 因为之前对epoll有些懂(只看过一点点科普文章),所以看这篇文章的时候我没怎么看懂,但是看懂了他说的问题,调用epoll按道理说一般是阻塞的,阻塞的情况下 scheduler 会将 M 拿走,将阻塞的 P 扔给 os...阅读全文

go结构体的使用

go中的struct可以实现oop中的类、方法。go语言中的struct成员可以是任何类型,如普通类型、复合类型、函数、struct、interface等。 入门 //定义 type User struct { name string email string password string } //声明 var user User var userref *User fmt.Println(user) //{} 默认初始化为零值 fmt.Println(userref) // 未初始化 userref = new(User) fmt.Println(userref) //&{ } //初始化 user = User{name: "liming", email: "liming@g...阅读全文

博文 2017-01-09 14:00:01 davidsu33

golang项目fork的问题

问题 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前又得改...阅读全文

博文 2017-04-28 12:24:04 Jale

大型互联网架构师谈:手把手教你如何成为年薪100的架构师 or CTO

​架构师也好,CTO也罢,这些IT领域的TOP职位,除了经验的积累外,更重要的是整个知识体系的建立,以及更重要的怎样来建立的方法论,以及不断考察自己是否适合成为一名架构师 or CTO的潜力?一个是技术专家领域,一个是技术、产品、情商、管理、协调等综合领域的掌握。未来我希望用一段时间在优知学院,给大家一起来探讨架构师、CTO这个系列,真正把架构师和CTO这事说清楚、讲彻底!怎样成为一名架构师凡事老的读者,都知道我一直强调学习是要建立知识体系,而不是仅仅学习其中一部分,或者全部都要掌握到精通这样的两极分化的思维误区。任何从0到1学习的人,都知道建立知识体系的重要性。从不会到会,从0到1,从入门到进阶,从简单到复杂,这个在早期的学习过程是非常有效,特别适合转行进入IT领域以及从0到1的同学。工作...阅读全文

博文 2018-12-05 16:44:04 Javaspring12

用Golang写一个搜索引擎 (0x00)--- 从零开始

很早就想写一系列的这样的文章了,之前在一个电商公司做搜索,对搜索引擎有一些认识,来到一个新的创业公司以后非常高兴还有机会继续做这方面的事情,虽然领域已经变了,而且不是做搜索了,但是技术还是那些技术,并且有机会接触到了Go语言,对于一个将近10年C/C++的程序员来说,Go的一些特质让我觉得非常舒服,可参见我之前的这篇文章。 从公司项目衍生出了一个自己的搜索引擎项目,然后有了这篇文章。 先聊聊目标吧,我希望实现一个这样的搜索引擎 使用Go语言实现,方便部署,最好就用一个二进制文件搞定一些,不需要安装任何依赖。 类似一个电商的搜索引擎,支持多字段的检索,不仅仅是文本的全文索引,还需要包括过滤功能(比如价格区间过滤),汇总功能(比如结果集中品牌数量汇总),基本的统计功能。 索引器和搜索器在一起,主...阅读全文

博文 2016-07-11 13:50:21 吴yh坚

2017 一些非常棒的 Sublime Text 3 主题

Sublime Text 是编程时非常流行的编辑器之一。Sublime 有些功能可以使编程变得有趣。Sublime 在打开速度、处理大文件效率、内存占用等多个方面相对于其他编辑器都有很大优势,并且它非常易于扩展。 在安装 Sublime Text 插件之前,我们需要先安装 Package Control,可以参考这篇文章来安装 Package Control。 本文整理了一些 2017 年非常棒的 Sublime Text 主题,希望你能从其中找到一款适合的。 1. Material Theme Material Theme 文档非常完善,并把 Material Design 设计语言引入到你的 Sublime Text 3 中,并且这款主题有非常多可以自定制的选项。 该主题提供了可视化的编...阅读全文

博文 2017-08-18 11:00:34 WEB资源网

Go的map中删除子map,内存会自动释放吗?

结论 在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 语言有一些我们常说的「坑」,有不少优秀的文章解释讨论过这些「坑」。这些文章所讨论的东西非常重要,尤其对 Go 的初学者来说,时不时就有人掉进这些小「坑」里。 但有个问题让我困惑了很久,为什么我几乎没碰到过这些文章里讨论的绝大部分「坑」?真的,大多数比较知名的比如 “nil interface” 或者 “slice append” 等我从来就没觉得困惑过。我从开始使用 Go 一直到现在总是以某种方式避开了这些形形色色的问题。 后来发现,我足够幸运的读了不少解释 Go 数据结构内部实现的文章并且学习了一些 Go 内部运行原理的基础知识。这些知识足够让我对 Go 有了深刻的认识,同时也避免了掉进各种各样的坑里。 记住维基百科的定义,「坑 是…有效的构造…但同时是反直觉的」 所以,你只有两个选...阅读全文

博文 2016-11-23 06:27:19 newt0n

golang进阶(六)——restful开发优雅处理error

前言 golang的error处理一直被人诟病,其实通过设计模式可以很好的处理error,这里就以restful开发为例讲下error优雅的处理 resuful开发中,error处理有两个目的,一可以将错误信息返回给用户,二要方便调试,为了达到优雅还要一点,不要到处都是各种if语言 当然作为优雅的代码还有一点要保证,就是尽量不写重复的代码 panic处理 在这里我们把panic处理一下,把panic的if判断也封装到一个方法里,并且包裹上堆栈信息(这里用到了github.com/pkg/errors包,具体使用在这里就不赘述了,可以看github上的文档),方便调试: func ThrowError(err error) { if err != nil { panic(errors.With...阅读全文

博文 2017-11-06 12:09:11 lastsweetop

头条后台研发面经(共三面)+架构师进阶路线分享

![image.png](https://static.studygolang.com/181216/d1248fff78c6b96bd28c7ced82b875ef.png) 后端研发工程师 找牛客大佬要到了白金码,跳过死亡笔试,直接视频面,面试从3点开始,断断续续到晚上8点结束。 每个面试官给我的感觉都是怎么这么高冷啊。 一面: 1 写一个题,找一个无序数组的中位数 2 写了个快排,然后让我找到无序数组第k大的一个数,我说先排序再找,实际上可以用快排的partition函数。 3 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少,nlgn。 4 操作系统了解么,Linux和windows 5 说说Linux的磁盘管理,一脸懵逼 6 Linux有哪些进程通...阅读全文

博文 2018-12-17 17:04:23 Javaspring12

Golang的TCP和UDP实现

这篇文章介绍了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...阅读全文

38.蛤蟆笔记go语言——进阶

38.蛤蟆笔记go语言——进阶 Go有指针,但是没有指针运算。不能用指针变量遍历字符串的各个字节。因此它们更象是引用而不是你所知道的来自于C的指针。指针非常有用。 Go同样也垃圾收集,也就是说无须担心内存分配和回收。 Go有两个内存分配原语,new和make。它们应用于不同的类型,做不同的工作,可能有些迷惑人,但是规则很简单。 用new分配内存 内建函数new本质上说跟其他语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型的零值。有一点非常重要:new返回指针。 这意味着使用者可以用new 创建一个数据结构的实例并且可以直接工作。 用make分配内存 回到内存分配。内建函数make(T,...阅读全文

博文 2016-07-09 11:00:03 notbaron

PyTorch入门到进阶 实战计算机视觉与自然语言处理项目

第1章 课程介绍-选择Pytorch的理由本章节主要介绍课程的主要内容、核心知识点、课程涉及到的应用案例、深度学习算法设计通用流程、适应人群、学习本门课程的前置条件、学习后达到的效果等,帮助大家从整体上了解本门课程的整体脉络。第2章 初识PyTorch框架与环境搭建本章节主要介绍PyTorch框架基础知识,对比其他的深度学习框架(比如:Tensorflow等),分析优缺点,以及介绍如何在Linux(Ubuntu16.04)系统下搭建Pytorch环境。第3章 PyTorch入门基础串讲主要介绍PyTorch框架中涉及到的基础知识、核心概念以及API,主要包括三个部分:1)Tensor以及相关的函数,2)Autograd机制以及相关函数,3)Torch.nn库。在介绍过程中,结合实际的例子进行...阅读全文

博文 2020-05-06 21:43:29 mature

For Range 的语义

## 前言 为了更好地理解本文中提及的内容,这些是需要首先阅读的好文章: 下面列出 4 篇文章的索引: - 1. [Go 语言机制之栈和指针](https://studygolang.com/articles/12443) - 2. [Go 语言机制之逃逸分析](https://studygolang.com/articles/12444) - 3. [Go 语言机制之内存剖析](https://studygolang.com/articles/12445) - 4. [Go 语言机制之数据和语法的设计哲学](https://studygolang.com/articles/12487) 在 Go 编程语言中,值语义和指针语义的思想无处不在。如前面的文章所述,语义一致性对于完整性和可读性至关...阅读全文

博文 2018-03-16 19:52:41 shniu

Golang学习历程

序:The 5 stages of learning Go (with examples)GO 语言学习的五个阶段(带例子)Github--GolangThe Go Programming LanguageGo 编程语言Go 编程语言 --------Github 学习篇 基础篇(菜逼) 视频 Go编程基础 书籍 Go语言圣经(中文版) Effective Go中文版 Go入门指南 网站 Google Go语言 进阶篇(探索者) 视频 Go Web 基础 Go名库讲解 书籍 看云Golang图书 中阶篇(大手) 视频 书籍 GO 命令教程雨痕的《go 语言学习笔记》 高手篇(大神) 视频 书籍 牛人篇(布道者) 视频 书籍 工具篇 # Go Walker - Go 语言在线 API 文档 G...阅读全文

博文 2017-03-05 19:42:26 紫若丹枫

【译】为GatsbyJS选择一个合适的后端

文链接 Picking a back-end for GatsbyJS 作者 Ross Whitehouse 不久之前,我又心血来潮想要把我的作品集站点重做一遍(大概六个月就会有这么一次),这回,我打定主意要学着用一用Gastby。但是事情好像还没这么简单。使用Gastby完成前端部分后,你打算怎么处理后端呢?看看这篇文章吧,现在我们有非常多的选择! Gastby 背景:为什么要用Gatsby? 要说还有什么东西的选择是比无头内容管理系统(Headless Content Management System, Headless CMS)的可选项更多的,那就只有静态站点生成器(Static Site Generator, SSG)了。我们可以用Hugo(基于Golang),Jekyll(基于R...阅读全文

博文 2018-11-23 01:34:41 吴子寒

[翻译]Go 数据结构

关于 Go 的内存结构在 Go 内存模型 中已经有介绍,但是内容相对简单,许多细节也一带而过。Ross Cox 的这篇文章 Go Data Structure 讲解得比较系统也很全面的一篇。翻译至此,希望能对大家有帮助。 2009 年的旧文,发现自己当时没有翻译完。所以再次做了增补和修改。如果我没记错,应该已经有人在 OSC 上发表过同一篇文章的翻译了。大家对照参考阅读吧。 ————翻译分隔线———— Go 数据结构 每当给新手介绍 Go 的时候,我发现为了建立起关于哪个操作成本更加高昂的正确观念,将 Go 如何为其值分配内存说明清楚会很有帮助。本文介绍了基础类型、结构体、数组和切片(slice)。 基本类型 先来看看几个简单的例子: 变量 i 的类型是 int,在内存中表现为一个 32 位...阅读全文

博文 2014-10-09 16:20:09 mikespook

go某函数执行超时触发器

#### 在群里讨论怎么限制某函数的执行时间,想了很久,终于找到非常简洁的写法,之所以在这里发表,是因为我见过太多新手写不对! 也许是许久没发文章,就闲来蛋疼发篇文章! #### 废话不多说,直接上2种我个人认为比较好的写法 ### (1)第1种是我目前能想到比较好且耗时时间很稳定的写法,但是不易懂,代码如下: ``` package main import ( "fmt" "time" ) var start time.Time var end time.Time func main() { test := func() { start=time.Now() time.Sleep(5e9) } limitTime1(test, 3e9)//可以将这里的时间改为超过5s end=time.N...阅读全文

博文 2019-12-26 16:58:40 anko

Golang环境配置与应用编译

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 老司机倾囊相授,带你一路进阶,来不及解释了快上车! Go 语言现在是越来越火了,出现在各个领域中,称它为21世纪的 C 语言一点都不为过,而且 Go 语言是 2009 年才发布的新语言,可以说它的特性是完全基于现代计算机来设计的,尤其它的看家本领 goroutine 协程,在高并发场景下使用简直不要太爽,非常适合写一些高性能中间件。 现在互联网发展得很快,我们也需要在空余时间培养第二技能,不然很快就会被互联网的发展潮流淘汰。而作为 Java 后端开发的我,早在 2017 年底的时候已经通过业余时间掌握了 Go 语言,并且还手写了一个微信支付 SDK 作为练手的开源项目,出乎意料地广受 ...阅读全文

博文 2019-06-03 23:34:18 掘金

Go语言高阶:调度器系列(1)起源

如果把语言比喻为武侠小说中的武功,如果只是会用,也就是达到四五层,如果用的熟练也就六七层,如果能见招拆招也得八九层,如果你出神入化,立于不败之地十层。 如果你想真正掌握一门语言的,怎么也得八层以上,需要你深入了解这门语言方方面面的细节。 希望以后对Go语言的掌握能有八九层,怎么能不懂调度器!? Google、百度、微信搜索了许多Go语言调度的文章,这些文章上来就讲调度器是什么样的,它由哪些组成,它的运作原理,搞的我只能从这些零散的文章中形成调度器的“概貌”,这是我想要的结果,但这还不够。 学习不仅要知其然,还要知其所以然。 学习之前,先学知识点的历史,再学知识,这样你就明白,为什么它是当下这个样子。 所以,我打算写一个goroutine调度器的系列文章,从历史背景讲起,循序渐进,希望大家能对...阅读全文

博文 2019-03-10 18:34:38 大彬

Go语言之unsafe

文章转自“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/p4ik3GsM3uGb6yvgVVxMdQ很多同学可能很奇怪,Go不是有指针类型了吗?为啥还需要这样一个unsafe的包呢,关键这个包的名字还是这么的让人不放心,叫做不安全包?而这个包又能够做什么呢,可以帮助我们解决那些问题呢?笔者在学习Go的时候,也被这些问题困扰着,于是便自己整理了这篇文章来讲解下,希望对大家有所帮助。1.指针类型介绍:对于Go语言的指针类型来说,指针类型的限制比较多,主要有四点,并且在Go语言的编译阶段就可以检测出来。限制1: 指针不可以进行数学计算。限制2:不同类型的指针不能够相互赋值。限制3:不同类型的指针不能够==或者!=的比较操作。限制4:不同类型的指针不能够相互转化。备注...阅读全文

博文 2019-12-31 14:45:15 ZhDavis

空结构体struct{}解析

本篇文章转自David的"The empty struct"一文,原文地址链接是http://dave.cheney.net/2014/03/25/the-empty-struct 。欢迎大家访问[我的博客](http://zuozuohao.github.io/),代码可以在[@Zuozuohao](https://github.com/Zuozuohao/GolangGOFPatterns)下载。 **Introduction** 这篇文章详细介绍了我最喜欢的Go数据类型,空结构体--struct{}。 空结构体是没有位段的结构体,以下是空结构体的一些例子: ``` type Q struct{} var q struct{} ``` 但是如果一个就结...阅读全文

Go Modules : v2 及更高版本

本文是一篇翻译文章: blog.golang.org/v2-go-modul… 原文作者:Jean de Klerk 和 Tyler Bui-Palsu 译者:befovy 校对:polaris1119 译文由 GCTT 原创编译,Go语言中文网 荣誉推出 简介 本文是 Go modules 系统的第四部分 Part 1: 使用 Go Modules 译文 Part 2: 迁移到 Go Modules 译文 Part 3: 发布 Go Modules 译文 Part 4: Go Modules : v2 及更高版本 (本文) 随着成功的项目逐渐成熟以及新需求的加入,早期的功能和设计决策可能不再适用。 开发者们可能希望通过删除废弃使用的功能、重命名类型或将复杂的程序拆分为可管理的小块来融入他们...阅读全文

博文 2019-12-05 15:34:23 半岛打铁匠

Go - 如何解析 JSON 数据?

概述 最近掉进需求坑了,刚爬上来,评估排期出现了严重问题,下面三张图很符合当时的心境。 谈需求 估排期 开始干 为啥会这样,我简单总结了下: 与第三方对接。 跨团队对接。 首次用 Go 做项目。 业务流程没屡清楚就出排期(大坑)。 需求调整后未进行调整排期(大坑)。 有了这次经验,后期关于如何评估排期也可以和大家唠唠。 废话不多说了,进入今天主题。 今天给大家分享用 Go 如何解析 JSON 数据,包含三种情况,强类型解析、弱类型解析、返回结构不确定 等。 JSON 结构 比如,请求了手机归属地的接口,json 数据返回如下: { "resultcode": "200", "reason": "Return Successd!", "result": { "province": "浙江", ...阅读全文

博文 2020-01-04 14:34:14 訢亮

Go gRPC进阶-超时设置(六)

前言 gRPC默认的请求的超时时间是很长的,当你没有设置请求超时时间时,所有在运行的请求都占用大量资源且可能运行很长的时间,导致服务资源损耗过高,使得后来的请求响应过慢,甚至会引起整个进程崩溃。 为了避免这种情况,我们的服务应该设置超时时间。前面的入门教程提到,当客户端发起请求时候,需要传入上下文context.Context,用于结束超时或取消的请求。 本篇以简单RPC为例,介绍如何设置gRPC请求的超时时间。 客户端请求设置超时时间 修改调用服务端方法 1.把超时时间设置为当前时间+3秒 clientDeadline := time.Now().Add(time.Duration(3 * time.Second)) ctx, cancel := context.WithDeadline(...阅读全文

博文 2020-04-26 10:26:03 FireworksEasyCool

一名十余年资深Java架构师的经验之谈

所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等。可能涉及到的东西包括了从硬件到软件的方方面面,实在是一言难尽。要想往架构师的方向发展首先要知道架构师是什么?架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。 天马行空架构师在软件开发的整个过程中起着很重要的作用。说的详细一些,架构师就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。架构师的主要任务不...阅读全文

博文 2018-12-11 18:34:45 Java高级技术

Go 获取磁盘使用情况(跨平台)

最近在项目中需要根据磁盘使用情况来做一下处理,发现没有什么标准库可以获取磁盘当前使用情况,在网上找了一段代码在 Linux 下运行可以,但在 Windows 跑会抛异常。 后来在网上找到了这篇文章,文章分别给出了两个平台各自获取磁盘使用情况的方法,在此基础上使用golang 的条件编译就可以实现跨平台获取了。 解决这个问题花了大半天,现在项目快结束了有时间就传到 gitlab 上了方便以后使用。 使用示例 获取包 go get gitlab.com/tingshuo/go-diskstate/ 使用 import "gitlab.com/tingshuo/go-diskstate/diskstate" import "fmt" // example func main() { state :...阅读全文

博文 2019-12-12 00:32:45 tingshuo123

如何快速掌握一门新技术/语言/框架...

IT行业中的企业特点是都属于知识密集型企业。这种企业的核心竞争力与员工的知识和技能密切相关。而如果你在企业中扮演的是工程师的角色的话,那么你的核心竞争力就是IT相关的知识与技能的储备情况。而众所周知,IT行业是一个大量产生新知识的地方,就拿Web前端举例,短短的5,6年时间,Web前端已经经历了数次变革,就目前来看变革还将继续下去。从以前的div+css网格化布局到JavaScript的方兴未艾,然后是各种JavaScript框架的百家争鸣,HTML5和CSS3的落地,移动web冲击下带来的响应式设计,jQuery,AngularJs,ReactJs等操作DOM元素截然不同的理念和方式,web component的标准化进程……为什么现在企业到处都在招前端工程师?好像突然之间,前端工程师成了...阅读全文

博文 2015-10-10 14:35:57 huang0925

Golang并发实践:笔记本秒变暖宝宝

早晨来到办公室,手是非常凉啊,一模笔记本,比手还凉,手指都快不能动了。歪脑筋一动,把笔记本编程暖手宝先暖暖手吧,这不就都暖和了。怎么变呢?当然是你学的Golang并发啦。 package main import ( "fmt" "time" ) // warm 未接到结束信号,不停使用CPU func warm(stop <-chan struct{}) { for { select { case <-stop: fmt.Println("Warm finish") default: } } } func main() { stop := make(chan struct{}) for i := 0; i < 100; i++ { go warm(stop) } t := time.NewT...阅读全文

博文 2018-12-13 09:34:43 大彬

go与众不同的类型

用go写了几个应用之后,对它的几个类型理解得可以说也比较到位。 数组 它跟C语言的数组一样,有固定的长度,声明之前必须很设定其长度。由于受C语言的影响,我一直把它当作指针来看待。其实,go的数组是个值类型,当把一个数组赋值给另一个数组时,是复制了本身给另一个数组。也就是说,当把数组当作参数进行传递时,会拷贝整个数组,当然也就与C语言的数组指针引用相比了,效率也就大打折扣了。go数组有一点必须知道,就是它的类型是包括了长度的。一个数组包含了长度,储存类型,实际值三个参数。[3]int与[4]int是两个不同的数组。 切片 数组的兄弟slice(切片),它是go中最常用到的类型,因为它是指针,而且没长度的限制,可以随时往里面加数据。所以它的性能不仅比数组高,而且更灵活。其实slice的数据结构里...阅读全文

博文 2014-10-04 19:26:27 descusr

年薪80万不一定当黑客,转型大数据开发【全套教程】拿走吧!

在这个时代,你的工作会背叛你,你的行业会背叛你,你的专业会背叛你,唯一不能背叛你的,是你的认知和你的能力!最近热剧《都挺好》这部剧的确反响很大,很现实,剧中的苏明哲本身也是IT出身,他已经到了中年,应该都知道做IT这一块的到了30岁后的思想会慢慢的落后,他老婆吴非说:“作为一个程序员,你的年龄已经很大了,我问你,你学新东西有年轻人快吗?”,没错,吴非的这句话正戳中了所有35岁左右的程序员的痛点! 对大数据以及人工智能概念都是模糊不清的,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流...阅读全文

博文 2019-05-02 11:34:38 正在简书上学习

2017/10/22展望的年前任务

接下来的任务: 1.django如何配置nginx //近期 2.dmbj程序写好 //近期 3.把常用软件安装包copy到硬盘 //近期 4.如何用docker部署python程序 //近期 5.找本linux的书,系统学一下。//兴趣一般 6.新电脑要安装ubuntu。//近期 7.golang的书要继续学,争取年前再看两本。//兴趣较大,怕没时间 8.在github上搭建一个静态的博客,以后博客写github了。//必做,时间不定。 9.学习mysql进阶知识,主从复制,索引啊 //必须,靠这个吃饭 10.看一本http协议的书。//兴趣较大,怕没时间 11.用golang爬取拉勾/简书/微博和我比较喜欢的网站,做成接口,django展示,github上开源。//必做,靠这个吃饭 12...阅读全文

博文 2017-10-22 15:04:44 zzjack

为什么我不会舍弃Python投奔Go语言

最近,由于一篇“为什么我不会舍弃Python投奔Go语言(英文)”的博客,我收到了大量的邮件,这篇文章中,作者说Go语言除了“用返回值来处理异常错误”这点外,其它的都非常好。我想写出一点东西,解释一下Go语言为什么这样做,这会对大家都有用。 本文作者:Russ Cox 在Go语言中,规定的方式是,函数返回错误信息。这没什么。如果一个文件并不存在,op.Open函数会返回一个错误信息。这没什么。如果你向你一个中断了的网络连接里写数据,net.Conn里的Write方法会返回一个错误。这没什么。这种状况在这种程序中是可以预料到的。这种操作就是容易失败,你知道程序会如何运行,因为API的设计者通过内置了一种错误情况的结果而让这一切显得很清楚。 从另一方面讲,有些操作基本上不会出错,所处的环境根本不...阅读全文

博文 2015-04-16 00:00:00 cometwo

Java程序员之间薪资对比,为什么差距这么大?

Java程序员之间薪资对照,为什么差距这么大?Java程序员这个岗位挣钱吗?能赚好多钱?有许多将要加入这一行业的年轻人同事都很想问这种问题,我想说的话“各行各业,行行出状元”想拿高薪未必非得做程序员,只不过通常情况下程序员这一岗位起薪更高,机遇也越多,当然不一样层级程序员薪资都不相同,让我们来认识一下java程序员的三大类:第一类:初入职场小白型初入职场的程序员,对Java开发技术尽数熟练掌握,开发环境了解的也比较熟练。可以将企业骨干核心程序员交由的日常任务进行的很出众,还可以按规定单独完成类,接口和算法的开发。重视方法,对具体的编程语言十分了解。小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起...阅读全文

博文 2019-01-08 18:55:46 javaGO007

[翻译]Go 数据结构

[翻译]Go 数据结构 http://mikespook.com/2013/12/%e7%bf%bb%e8%af%91go-%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84/#more-1775 2013/12/05mikespook发表回复 关于 Go 的内存结构在 Go 内存模型 中已经有介绍,但是内容相对简单,许多细节也一带而过。Ross Cox 的这篇文章 Go Data Structure 讲解得比较系统也很全面的一篇。翻译至此,希望能对大家有帮助。 2009 年的旧文,发现自己当时没有翻译完。所以再次做了增补和修改。如果我没记错,应该已经有人在 OSC 上发表过同一篇文章的翻译了。大家对照参考阅读吧。 ————翻译分隔线———— Go 数据结构 每当给新手...阅读全文

博文 2015-06-17 20:06:18 blogNote

Go语言的堆排序实现

关于堆排序的算法,可以参考我去年的文章《堆排序(HEAP SORT)》。那篇文章讲的是建立小顶堆进行的排序,这里说的是建立大顶堆建立的排序,差不多。 在Golang源码的sort包里,自带了排序函数。该函数可以对各种类型进行排序,只不过该类型需要实现三个函数,使得该类能够实现Interface接口。 type Interface interface { // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element with index j. Less(i, j int...阅读全文

测试后expvar.Map :加锁的map : sync.map = 0.75 : 1 : 3

### 如题,白白浪费我几天时间,偶发的并发bug不少,看我上篇文章就出现了各种bug,就不说了,现在来说个一定会出现的bug, ### 下面的代码在1.14.1版本是会报错的,结果不为1,但是我卸载后重新安装1.13.9之后就可以正常执行了!当然也可能是我的电脑原因,求大伙验证! ``` package main import ( "fmt" "sync" ) var wg sync.WaitGroup func main() { var m sync.Map for i := 0; i < 65536; i++ { m.Store(1, 1) } wg.Add(2) go Add(m) go sub(m) wg.Wait() fmt.Println(m.Load(1)) } func A...阅读全文

golang积累-接口指针与结构体指针

本文转自我发布在csdn的博客,原文:http://blog.csdn.net/qq_26981997/article/details/52608081, 欢迎指正。 对go做过开发的朋友都很熟悉interface。这几天在网上看到了篇文章,谈到了interface与nil判等的问题。题是好题,就进一步了解了一下。 ### 原题如下: **Nil接口并不是有Nil指针的接口** ```Go type Cat interface { Meow() } type Tabby struct {} func (*Tabby) Meow() { fmt.Println("meow") } func GetACat() Cat { var myTabby ...阅读全文

2019Flag

学习一门新语言 看12本书(专业三本,区块链二本,经济三本,其他四本) 出国一次,每一月去一次游泳馆,每星期锻炼四天,每天看一个小时书 早上坚持7点起床,七点半-八点半看书。晚上十二点之前睡觉 经济(薛兆丰经济学讲义,每日读点经济学,从零开始读懂经济学) 专业(Android开发艺术探索,Android进阶之光,Android进阶揭解密) 区块链(精通比特币) 其他(好的爱情) 从过年到现在已经有一个月,一个月看完了《好的爱情》《每天读点经济学》 《Android开发艺术探索》读了三章,《精通比特币》读了三章,三月开始学习golang 要看完《精通比特币》晚上睡觉有几天没有坚持在十二点之前睡觉,这个月要养成这个习惯,总体还不错 继续加油...阅读全文

博文 2019-03-10 11:34:42 问心2018