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

用FileInfo.sys()获取文件的详细信息

使用os.Stat()获取FileInfo类型的数据后,我们就可以获取文件的信息,但信息也限于 type FileInfo interface { Name() string // base name of the file Size() int64 // length in bytes for regular files; system-dependent for others Mode() FileMode // file mode bits ModTime() time.Time // modification time IsDir() bool ...阅读全文

Go test 测试单个用例

通过 go help testflag 可以看出,可以使用 test.run 加正在表达式来指定要测试的用例。 如有以下用例在包 foo/test 中: func TestFoo(t *testing.T){} func TestFoo1(t *testing.T){} func TestAbc(t *testing.T){} go test -v foo/test 将测试所有的用例 (-v 表示输出详细信息,无论成功失败) go test -v -run TestFoo foo/test 将测试 TestFoo 和 TestFoo1 go test -v -run ^TestFoo$ foo/test 将只测试 TestFo...阅读全文

极客学院高薪诚聘Revel课程讲师

极客学院(jikexueyuan.com)是一家快速发展的IT职业在线教育平台,目前已有用户60W+。我们长期招聘兼职布道师。以下是详细信息。 在哪讲 兼职,在家录课,时间自己掌控。 给谁讲 极客学院,这是一家快速发展的IT职业在线教育平台,已拥有注册用户60W+。 讲什么 程序语言、前后端开发、移动开发、移动游戏、云计算、大数据、智能硬件&物联网、设计类等课程,从基础到高级任选(可多选,先到先选)。 急需Revel、WebGL课程讲师。 怎么讲 PPT+录音=视频的形式,无需真人上镜。 谁能讲 懂技术,会中文,爱分享。不需要有演讲或录课经验,你只负责讲,其他的交给我们,有规范的流程和专业的制作团队带你飞。 讲流程 布道师编写知识体系 ...阅读全文

golang中使用kafka

golang中比较好用的kafka client有 sarama confluent-kafka-go go_kafka_client optiopay-kafka siesta 其中 sarama的使用者应该是最多的, 然后还有一个sarama的cluster版本sarama-cluster 本文简单描述下sarama的一些简单使用 生产者接口 func producer_test() { fmt.Printf("producer_test\n") config := sarama.NewConfig() config.Producer.RequiredAcks = sarama.WaitForAll config.Producer.Partitioner = sarama.NewRand...阅读全文

博文 2018-09-29 18:34:37 yandaren

rete算法学习

在上篇博客中,介绍了策略型业务逻辑处理中几种选择,其中有一种选择就是利用规则引擎来进行逻辑处理。其实藏在规则引擎的底层中还是有很多算法的,其中有一种算法是rete算法,最近正好也关注算法,就简单的学习了一下,因为对这个算法理解的非常清楚,所以如果有有对这个算法熟悉的朋友,可以给予指正。 RETE算法是一个用于产生式系统的高效模式匹配算法。在一个产生式系统中,被处理的数据叫做working memory,用于判定的规则分为两个部分LHS(left-hand-side)和RHS(right hand side),分别表示前提和结论。主要流程可以分为以下步骤:Match:找出符合LHS部分的working memory集合Confilict resolution:选出一个条件被满足的规则Act:执...阅读全文

博文 2017-11-29 01:46:20 lfsf802

[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XML/YAML)

为了将我们写好的Server发布到服务器上,就要将我们的代码进行build打包,这样如果以后想要修改一些代码的话,需要重新给代码进行编译打包并上传到服务器上。 显然,这么做过于繁琐。。。因此常见的做法都是将Server运行中可能会频繁变更的变量、数值写入配置文件中,这样直接让程序从配置文件读取参数,避免对代码频繁的操作。 关于配置文件的格式,在这里推荐YAML 和XML~ XML是传统的配置文件写法,不过本人比较推荐yaml,他比XML要更加人性化,也更好写,关于yaml的详细信息可以参考: yaml官网 比如我们可以将Server监听的端口作为变量,写入配置文件 config.yaml 和 config.xml,放入代码的根目录下,这样当我们想要更换服务器端口的时候,只要在配置文件中修改p...阅读全文

博文 2015-11-01 09:00:01 ahlxt123

go语言中的defer、panic、recover处理异常

go语言中的defer就像c++中的析构函数,但是go语言中defer的对象是函数(或者对象的方法),defer能保证在函数结束最后执行该方法(函数),但是有例外:如果在定义的方法中defer定义的方法如果在panic后面,defer定义的方法就无法执行到。 panic 是用来表示非常严重的不可恢复的错误的。在Go语言中这是一个内置函数,接收一个interface{}类型的值作为参数。panic 的作用就像我们平常接触的异常。不过Go可没有try…catch,所以,panic一般会导致程序挂掉(除非recover)。所以,Go语言中的异 常,那真的是异常了。你可以试试,调用panic看看,程序立马挂掉,然后Go运行时会打印出调用栈。 但是,关键的一点是,即使函数执行的时候 panic了,函数...阅读全文

博文 2016-02-13 11:00:01 kc87654321

golang编译的exe程序设置图标和右键的详细信息

第一步:Windows 下载MinGW 第二步:新建一个.rc文件,加入文件名为 demo.rc 输入内容 IDI_ICON1 ICON "cefclient.ico" 其中 cefclient.ico 是你的ico的地址 第三步:MinGW 执行 windres -o demo.syso demo.rc 需要将demo.syso放到需要编译的go目录下 第四步: go build 编译出exe程序 第五步:需要一个工具,叫做 ResourceHacker , 可以在网上直接搜索下载 第六步:使用ResourceHacker打开编译出的exe程序,点击添加使用脚本模板 第七步:在弹出框里选择VERSION_INFO 第八步: 在新建的文件中修改信息即可,信息的字段说明可以参考如下地址内容 h...阅读全文

博文 2017-11-08 06:00:00 medivhjay

Go 的诞生与发展概述

导语:古语有云:“往古者,所以知今也”。在决定学习探究 Go 语言之前,了解一下它的诞生背景与发展脉络是很有必要的。这不仅能解开我们心中关于 Google 为什么要重复“造轮子”的疑惑,还有助于我们理解这门语言的设计哲学和应用场景。 Go 诞生前夕:Google 正“负重”前行 时间回溯到 2007 年,那个时候,GitHub 还未问世,Intel 也才在前一年刚推出自家的第一个多核微处理器 Core 2(微处理器,简单来说,就是将 CPU 的所有元件都放入同一块芯片中的东东)。彼时的 Google 已然成长为一家全球科技巨头,与之相随的便是行数与复杂度不断增长的代码量。这些数以百万计的代码行运行在数以百万计的机器上。它们大多由 C++、Java,并辅以 Python 写成,每天都有成千上万...阅读全文

控制数据权限的 Docker 项目Notary

公证项目包括服务器和客户端,用于运行和与受信任的集合进行交互。 有关详细信息,请参阅[服务体系结构文档](https://github.com/docker/notary/blob/master/docs/service_architecture.md)。 公证人的目标是使互联网更加安全,方便人们发布和验证内容。 我们经常依靠TLS来保护与内部存在缺陷的Web服务器的通信,因为服务器的任何妥协都可以使恶意内容替代合法内容。 使用公证人,发布商可以使用高度安全的密钥离线签名内容。 一旦发布商准备提供内容,他们可以将其签名的受信任的集合推送到公证服务器。 消费者可以通过安全渠道获取发行商的公开密钥,然后可以与任何公证服务器或(不安全)镜像进行通信,只依靠发布者的密钥来确定收到的内容的有效性...阅读全文

gslang——原生golang/RPC描述语言简介

gslang背景知识 gslang是采用go语言编写的RPC描述语言,最初它被用来描述gscluster网络服之间的接口调用契约;而gscluster项目本身是我在tap4fun时开发的一个游戏服务端框架,所以能够看到gscluster里面有很多与游戏相关的概念。但是框架本身是为mico-service而生的,所以你可以将它应用到任何你觉得合适的地方,不必局限于游戏服务器。 gslang是一个完整的RPC描述语言,它与thrift定位相同。没有直接采用thrift的原因是: 在开发gslang的时候,thrift对golang的支持并不完善; 根据项目需要,需要hack代码生成的过程例如:profile,debug 代码; gslang前端解析器在github上的位置:这里 语言特性 gsl...阅读全文

博文 2015-05-20 04:00:05 yayanyang

容器监控之 cadvisor

现如今大大小小的公司在生产环境中已或多或少的使用到了容器,那对于容器的监控(CPU, 内存,网络请求)是如何处理的呢?接下来我们带大家来学习一下: docker stats 对 cadvisor 众所周知 dokcer stats 可以查看运行的 Docker 镜像的运行状态,例如: image 这种方式比较原始,因为你无法通过 http 的方式来获取数据,而且没有界面,数据可视化还需要做大量的工作。 由于 dokcer stats 有这些问题,所以 cadvisor 诞生了。 cadvisor 不仅可以搜集一台机器上所有运行的容器信息还提供基础查询界面和 http 接口,方便 Prometheus 进行数据抓取。 正是因为 cadvisor 与 Prometheus 的完美结合,所以它成为...阅读全文

博文 2019-05-27 17:34:50 51reboot

golang中的类型和接口

Go语言的类型定义非常接近于C语言中的结构(struct),甚至直接沿用了struct关键字。相比而言,Go语言并没有直接沿袭C++和Java的传统去设计一个超级复杂的类型系统,不支持继承和重载,而只是支持了最基本的类型组合功能。 巧妙的是,虽然看起来支持的功能过于简洁,细用起来你却会发现,C++和Java使用那些复杂的类型系统实现的功能在Go语言中并不会出现无法表现的情况,这反而让人反思其他语言中引入这些复杂概念的必要性。我们在第3章中将详细描述Go语言的类型系统。 Go语言也不是简单的对面向对象开发语言做减法,它还引入了一个无比强大的“非侵入式”接口的概念,让开发者从以往对C++和Java开发中的接口管理问题中解脱出来。在C++中,我们通常会这样来确定接口和类型的关系: // 抽象接口 ...阅读全文

博文 2016-06-14 03:00:00 hellochenlu

Go 1.3 Beta1 发布,支持谷歌 NaCL

Google今天发布了Go语言1.3 beta1版本。 Go 1.3并没有引入新的语言功能,只是进行了一些功能改进,并解决了该语言中的一些bug和用户的反馈。 Go 1.3的主要改进如下: 显著改进了链接器和编译器,可以更快地编译程序,尤其是大型应用程序。 Go编译器生成二进制代码的性能得到了改善,内存占用更少,现在有一个更快、更高效的垃圾回收器,以及一个重写的正则表达式处理程序。 新增了4个支持平台:Oracle Solaris、Plan 9、FreeBSD、Google的NaCL(Native Client)。 不再支持Windows 2000 详细信息:http://tip.golang.org/doc/go1.3 下载地址:https://code.google.com/p/go/w...阅读全文

博文 2014-10-09 16:00:06 wangguo评论(4)

基础问题:关于【named type】 和 【unnamed type】

【https://golang.org/ref/spec#Types 】--->这是关于type的描述。里面有两句: Types may be named or unnamed. Named types are specified by a (possibly qualified) type name; unnamed types are specified using a type literal, which composes a new type from existing types. 有点不大理解,因为下面没有举出例子。所以还是不懂什么叫named type,什么叫unnamed type。 本来想跳过,以后再慢慢接触,可是另一个地方又出现这个named和 unnamed...阅读全文

RSA到底是谁加密?

RSA到底是谁加密? RRSA加密是最常用的非对称加密方式,原理是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。 但你一定会碰到过,两个开发者争执:到底是由谁加密,谁解密? 看完这篇文章,你就会明白这一切。 规范怎么说 我们先来看看权威库open_ssl的文档描述,它定义了四个方法 RSA_private_decrypt RSA_private_encrypt RSA_public_decrypt RSA_public_encrypt 看起来似乎私钥和公钥都可以用来进行加密解密? 但是仔细查看 RSA_public_decrypt 和RSA_private_encrypt的描述都是:low level signature operations...阅读全文

博文 2020-05-06 21:32:46 boywus

如何将本地数据库迁移到云数据库RDS上?

如何将本地数据库迁移到云数据库上? 使用数据传输服务 (DTS) 将本地数据库迁移到 阿里云的云数据库RDS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。接下来我们将学习下如何使用DTS将本地数据库迁移到RDS上。 背景 DTS 支持 SQL Server 数据结构迁移和全量迁移。 1. DTS支持结构迁移的对象有:表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、自定义类型、plan guid、rule、default。 2. 全量迁移 DTS 会将本地数据库迁移对象的数据全部迁移到目标实例。如果在迁移过程中有增量更新的话,这些增量不会被迁移到目标库。所以建议在业务无写入时,使用 DTS 进行全量数据迁移。 迁移限制 将本地数据库迁移到 RD...阅读全文

自适应建站系统

自适应建站系统体验版20.17系统终于对外开放啦! 自从H5出来之后,自适应网站慢慢走向舞台。但是自适应建站系统却迟迟没有对公众开放。 现在有一个自适应建站系统对外开放了,但并不是免费的,需要20.17元! 详细信息: 主题:新春体验 版本:自适应全能版 原价:596元/年 时间:2017-02-15日结束 适用网站:除商城、分销网站外的所有网站! 活动地址:http://www.iisp.com/special/v9activity/index.php?s=ashle...阅读全文

分布式trace原理-dapper总结

项目上微服务,由于日志会散落在各个microservice,多主机甚至多数据中心,发现debug是非常地痛苦,同时新鲜血液的培训和沟通成本也会随之增加。因此,在思考引入分布式的trace,一方面能够更好提供debug手段,另一方面由于可以可视化调用链,因此相信新人更加能够快速入手。 我在网上google了一些分布式的trace解决方案,包括twitter的Zipkin, Uber的Jaeger以及sourcegraph的Appdash. 发现所有的工具背后原理都是参考dapper--google关于分布式trace的一篇技术报告。因此有必要对原文进行研究。 1.Dapper的原理 1.1 Trace的数据结构 Dapper的目标是提供可扩展,低开销,透明的分布式trace系统,其原理实际上非...阅读全文

博文 2019-07-17 00:32:45 大雄good

go beego模板嵌套list

{{range $k,$v :=.Names}} {{end}} 节点 名称 执行体 描述 状态 操作 {{.Name}} {{range $k1,$v1 :=$.List}}{{if eq $v.Name $v1.Node}} {{end}}{{end}} {{.Name}} {{.Exe}} {{.Desc}} {{.State}} 运行|停止 {{range .Categoryjieduan}} {{.Id}} {{.Title}} {{.Views}} {{range $.Categoryzhuanye}} {{.Title}} {{range $.Categorychengguo}} {{.Title}} {{end}} {{end}} {{end}...阅读全文

博文 2016-10-28 14:00:02 MR1269427885

go in action

需求 公司要实现大中台战略,以往的后台都是基于传统的技术架构实现的系统。 系统在性能及扩展性上都存在有客观的局限性。 如何将传统系统的原子性服务或组合服务提供给中台是需要解决的一个问题。 概要设计 原子性的服务,通过直连数据模型,并将其转化为RESTFULL的方式来实现。 组合服务通过接口适配转换及转化为统一RESTFULL的方式来实现。 详细设计 原子性服务设计 服务列表 服务编号 服务名称 备注 模型元数据 schema/base/${MODEL_NAME} 如果${MODE_NAME}为空,则是全部信息 模型属性元数据 schema/prop/${PROP_NAME} 如果${PROP_NAME}为空,则是全部信息 模型主键元数据 schema/primary_key/${PRIMAR...阅读全文

博文 2019-07-17 14:33:50 do_young

HTTP 调试工具 RequestHub

RequestHub 用来接收 HTTP 请求,并在浏览器显示请求详细信息,然后将请求转发到指定 URL。你可以把当它当成是一个 HTTP 的代理服务。 使用方法:

$ requesthub -h
Usage of requesthub:
  -config="": YAML Configuration File
  -p=54321: which port to bind to
  -r=256: max requests to store
  -username="": HTTP Basic Auth Username for ac...阅读全文

金山云api签名(go语言)

1.前言 云计算是当下非常流行的技术,各互联网公司基本上都在使用着不同云厂商的资源。我们要查看或者操作购买的云计算资源,一般都通过控制台登录直接操作。但是如果我们要批量操作资源,或者是开发自己的平台调用资源,那么我们该怎么办呢?其实各云计算厂家都提供了资源操作的接口,api和sdk。其中,api接口需要我们自行实现接口的签名认证,再调用厂商的各种方法,然后二次开发;sdk是厂商已经封装好的操作接口,我们可以直接调用,再在此基础上做开发。 2.代码实现 本文主要用go语言实现了金山云的api签名,并使用生成的签名调用金山云提供的DescribeInstance查看云主机的详细信息。 package main import ( "bytes" "crypto/hmac" "crypto/sha2...阅读全文

博文 2020-02-10 16:33:16 Rainbowhhy

科学安装 golang package

问题出现: 由于 The Great China Wall 的存在 我们下载包的时候,经常会遇到如下图所示的 timeout 下载 package timeout 优雅的解决方法: 开启 goproxy 代理 export GOPROXY=https://mirrors.aliyun.com/goproxy/ 小白步骤 打开一个终端 输入export GOPROXY=https://mirrors.aliyun.com/goproxy/ 执行自己的下载方法 go get 等等 你会发现,快了很多。 尤其是每当遇到万恶的 golang.org/x/ 更方便的写法 如果你是 Linux 或者 mac,将export GOPROXY=https://mirrors.aliyun.com/gopro...阅读全文

博文 2019-08-23 23:32:48 千罹

今日威胁情报(2019/3/5)

APT活动1、火眼报告APT40。该组织至少在2013年开始运作。该组织专门针对工程、运输和国防工业,特别是在这些部门与海事技术重叠的地方。最近,还观察了具有战略重要性的国家的具体目标,包括柬埔寨,比利时,德国,香港,菲律宾,马来西亚,挪威,沙特阿拉伯,瑞士,美国和英国。https://www.fireeye.com/blog/threat-research/2019/03/apt40-examining-a-china-nexus-espionage-actor.html2、Sharpshooter APT组织被关联到朝鲜 Lazarus Group。这是一篇同源分析的报告。报告中TTP特征与Lazarus一致。使用的样本核心代码与Lazarus一致。使用的木马相似。参考:https://...阅读全文

博文 2019-03-05 18:34:41 千鸟阁安全头条

图像相似性比较实践

2008年TinEye上线了图片搜索,开始是注册制,后来逐步放开。2011年, Google也上线了相似图片搜索,通过用户上传的图片,可以搜索相似的图片。参考文档中提供了一些介绍图像搜索的一些文章, 尤其是阮一峰2011年和2013年两篇普及性的文章,可以帮助你了解图像相似搜索的原理。 图像相似性搜索应用广泛、除了使用搜索引擎搜索类似图片外,像淘宝可以让顾客直接拍照搜索类似的商品信息、应用在商品购物上。也可以应用物体识别比如拍图识花等领域。目前我在调研图片鉴权的方案,通过一张图片和图片库中的图片进行比对,来确定这张图片是否侵权,或者退一步讲,图片库中是否包含和这张图片类似。 这个需求和目前深度学习应用中的图像识别还不一样, 图像识别是需要将图像中的物体识别出来, 猫啊狗啊什么的,而我所要做的...阅读全文

博文 2018-12-23 21:22:16 smallnest

Ubuntu 19.04 正式发布

Ubuntu 19.04 版于日前正式发布,代号「Disco Dingo」,中文翻译为“舞动的灵犬”(非官方)。这一版本的支持周期是九个月,结束于 2020 年 1 月。这一版本的 Ubuntu 由 Linux 5.0 版内核驱动,默认工具链已迁移至 glibc 2.29 / gcc 8.3。新的桌面版搭载了 GNOME 3.32 版,带来了效能提升以及分数倍缩放(GNOME 此前默认仅支持整数倍缩放)等特性改进。[yiji]关于名称[/yiji]Disco 这个词其实既是名词又是动词,常常指一种派对或者聚会,人们在闪耀的灯光下跳舞,而 “Dingo” 则是一种澳大利亚原生的野狗,它的颜色有点像沙滩上的沙子。Disco Dingo 合在一起,意即”舞动的灵犬“。以下是一些重要变化:[erji...阅读全文

博文 2019-05-18 21:35:01 肀肀

一行Golang代码引发的血案——全网最详细分析2020年3月Let’s Encrypt证书吊销事故

Let’s Encrypt作为一家免费提供SSL证书的组织,旨在推进互联网向更安全的HTTPS迁移,受到了大量小型网站的支持和认可。然而很多站长在3月3日收到了来自Let’s Encrypt名为ACTION REQUIRED: Renew these Let's Encrypt certificates by March 4的邮件,警告站长尽快更新证书。那么为什么需要更新证书?不更新证书有什么危害?如何更新证书?本文将为读者分析本次Let’s Encrypt证书漏洞事故的真相。 目录0x01 事故概览0x02 事故详情1. CAA是什么?2. CAA有什么用?0x03 事故分析0x04 一行Golang代码引发的血案0x05 解决事故0x06 避免事故 0x01 事故概览 首先摘录一下邮件中...阅读全文

博文 2020-03-08 15:51:41 untitled.pw

Inside Qt Series (一):Let’s go, Starting From the QObject

QObject 这个 class 是 QT 对象模型的核心,绝大部分的 QT 类都是从这个类继承而来。这个模型的中心特征就是一个叫做信号和槽(signal and slot)的机制来实现对象间的通讯,你可以把一个信号和另一个槽通过 connect(…) 方法连接起来,并可以使用 disconnect(…) 方法来断开这种连接,你还可以通过调用 blockSignal(…) 这个方法来临时的阻塞信号, QObject 把它们自己组织在对象树中。当你创建一个 QObject 并使用其它对象作为父对象时,这个对象会自动添加到父对象的 children() list 中。父对象拥有这个对象,比如,它将在它的析构函数中自动删除它所有的 child 对象。你可以通过 findChild() 或者 fin...阅读全文

用bytomswap进行“跨链”资产转换

bytom是专注资产领域的公有区块链平台,最近开发者社区基于比原做了一款资产转换平台。我们可以在上面通过自己现有的资产在比原上发行资产。然后达到资产转换的目的。 一. 以太币资产转换成比原上的资产 首先打开bytomswap, 网址:https://www.bytomswap.io然后我们选择我们要交换的资产,我们可以发现支持很多种交换的资产。因为笔者刚好手里有以太币(ETH),所以就用imToken钱包里的以太币(ETH)来做资产交换,然后在比原上发行自己的资产。在接收地址中输入比原钱包的地址。点击Next。(imToken和bycoin都可以在Apple store 非大陆区搜到)然后我们看到下图出现一个ETH的二维码地址,这个地址主要是作为我们转账ETH的二维码地址。通过imToken...阅读全文

博文 2019-01-17 11:34:46 比原链Bytom

golang实现gitlab commit注释校验hook

最近和项目成员约定了git commit规则,但是约定归约定,要保证大家都执行,还是需要程序来做些校验工作。大致的约定如下:comment 格式::#69 fix something bug其中的start为在redmine版本管理中指定的关键字,具体参见redmine的”配置“ -> "版本库" -> "在提交信息中引用和解决问题" 中的配置。废话不多说,直接上代码: package main import ( "encoding/json" "fmt" "io/ioutil" "net/http" "os" "os/exec" "regexp" "strconv" "strings" ) type COMMIT_TYPEstring const ( OK CO...阅读全文

博文 2018-08-15 15:34:57 ricktian_e963

k8s 概念梳理 搭建集群 基本操作

k8s 核心概念思维导图 集群搭建 https://www.kubernetes.org.cn/4387.html 入门操作 创建查看集群 kubectl get nodes -o wide # 查看集群节点信息 kubectl cluster-info # Display cluster info 显示集群信息 部署应用 kubectl run my-ngx --image=nginx:latest --port=80 # 部署应用 发布应用 kubectl expose deployment my-ngx --type='NodePort' --port=80 # 发布应用 kubectl get services/my-ngx # 查看kel服务 kubectl describe se...阅读全文

博文 2018-11-12 14:34:42 江上清风游

Go 语言中命名规范——如何简短却更具描述性

> 在计算机科学与技术中,有两件事情最难,第一是缓存无效,第二就是给一些东西命名 —— Phil Karlton 上面的话可不是一个笑话。写代码很容易,但是阅读起来却很痛苦。你是否有想知道一个变量具体指什么或者某个包的具体含义是什么这种类似的经历?这就是为什么我们需要一些规则和约定。 不过,约定虽然能够让我们的生活变得更轻松,但是也容易被高估和滥用。设置一些合理的命名约定和规则非常重要,不过盲目的遵循它也可能带来很多弊端。 在这篇文章里面,我将介绍在[Go](https://golang.org/)中,一些重要的变量命名约定(官方的以及非官方的规则)以及在什么场景下会存在滥用的情况,特别是那些短变量命名的场景。篇幅有限,包和文件的命名以及项目结构命名有关的内容不在本文讨论范围内,他们应该可以...阅读全文

博文 2020-05-31 12:21:49 JYSDeveloper

有,总比没有要好:Go依赖管理工具dep

介绍 早期的Golang被很多开发者所诟病的一个问题就是依赖包的管理。Golang 1.5 release版本的发布之前,只能通过设置多个GOPATH的方式来解决这个问题,例如:我两个工程都依赖了Beego,但A工程依赖的是Beego1.1,B工程依赖的是Beego1.7,我必须设置两个GOPATH来区分,并且在切换工程的时候GOPATH也得切换,无比痛苦。终于终于在Golang 1.5 release 开始支持除了GOROOT和GOPATH之外的依赖查询,那就是vender,于是很多大佬开始造轮子,造得比较好的应该是dep和glide。 主角出场 今天的主角是dep,Golang的官方依赖工具,用来管理和下载工程依赖的工具,以下是官方的介绍 dep is a prototype depen...阅读全文

Ubuntu 19.04 正式发布

Ubuntu 19.04 版于日前正式发布,代号「Disco Dingo」,中文翻译为“舞动的灵犬”(非官方)。这一版本的支持周期是九个月,结束于 2020 年 1 月。这一版本的 Ubuntu 由 Linux 5.0 版内核驱动,默认工具链已迁移至 glibc 2.29 / gcc 8.3。新的桌面版搭载了 GNOME 3.32 版,带来了效能提升以及分数倍缩放(GNOME 此前默认仅支持整数倍缩放)等特性改进。[yiji]关于名称[/yiji]Disco 这个词其实既是名词又是动词,常常指一种派对或者聚会,人们在闪耀的灯光下跳舞,而 “Dingo” 则是一种澳大利亚原生的野狗,它的颜色有点像沙滩上的沙子。Disco Dingo 合在一起,意即”舞动的灵犬“。以下是一些重要变化:[erji...阅读全文

博文 2019-05-18 21:35:00 肀肀

由一个问题引发对文件描述符的研究

故事的起因 一次一个同事给我发了一段简单的代码,问我这段代码有什么问题? package main import ( "fmt" "os" ) func main() { f, err := os.Open("/test.txt") if err != nil { fmt.Println(err) } fmt.Println(f.Name(), "opened successfully") } 看到这段代码后不加思索的回答,文件没有close,他说错,可能当时我们没在一个频道上,“err处理没有return”。 又仔细的看了下代码,发现err的处理代码块后使用了f.Name(),这个是存在问题的,因为当open发生错误时,返回的文件句柄则为nil,下文直接使用f.Name()。这种错误对于初...阅读全文

golang mod详细分析

文章来自于一篇不错的外籍博客,请耐心阅读,真心感觉挺不错的 Introduction to Go Modules (A Russian translation of this post is available: Введение в модули Go.) The upcoming version 1.11 of the Go programming language will bring experimental support for modules, a new dependency management system for Go. A few days ago, I wrote a quick post about it. Since that post went live, t...阅读全文

博文 2019-11-01 17:33:42 aside section._1OhGeD

Golang 学习之三 beego详细分析

beego 详细脱坑教程https://blog.csdn.net/yang731227/article/category/7994348Golang 之数据库xorm ,数据库驱动Drivers SupportDrivers for Go's sql package which currently support database/sql includes:Mysql: github.com/go-sql-driver/mysqlMyMysql: github.com/ziutek/mymysql/godrvPostgres: github.com/lib/pqTidb: github.com/pingcap/tidbSQLite: github.com/mattn/go-sqlite3M...阅读全文

博文 2019-02-23 17:34:44 技术流刘

剥开比原看代码17:比原是如何显示交易的详细信息的?

作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockc... 在上上篇文章里,我们还剩下一个小问题没有解决,即前端是如何显示一个交易的详细信息的。 先看对应的图片: 这个图片由于太长,分成了两个,实际上可以看作一个。 那么这个页面是怎么来的呢?这是在前面以列表的方式显示交易摘要信息后,可以点击摘要信息右上角的“查看详情”链接打开。 那我们在本文看一下,比原是如何显示这个交易的详细信息的。 由于它分成了前后两端,那么我们跟以前一样,把它再分成两个小问题: 前端是怎么向后台发送请求,并显示数据的 后端是如何拿到相应的数据发送给前台的 需要说明的是,这个表格中...阅读全文

博文 2018-07-23 16:34:48 比原链Bytom

Golang GC导致的文件描述符不可用

现象1. 压力测试时,使用syscall.Accept得到 bad file descriptor,server直接无法响应。原因1. syscall.Accept使用的fd来源是在自己代码初试化的时候通过TCPListener.FIle().Fd()直接拿到,且在自己的代码中通过int 类型保存了这个返回的系统fd,后续直接使用int 类型存储的fd值进行epoll相关操作2.事实上Golang 的实现实现中TCPListener.FIle() 返回的*os.FIle不是TCPListener原有的*os.File对象,而是dup(拷贝)一份,同时这个dup动作中会使用系统调用对于原来的系统fd也执行一次dup,进而生产一份新的额系统fd3.TCPListener.FIle().Fd() ...阅读全文

博文 2019-07-07 01:02:39 luofanyuguai

golang之反射

反射这个概念绝大多数语言都有,比如Java,PHP之类,golang自然也不例外,反射其实程序能够自描述和自控制的一类机制。 比如,通过PHP的反射,你可以知道一个类有什么成员,有什么方法。而golang,也能够通过官方自带的reflect包来了解各种变量类型及其信息。 下面我们通过一个例子查看反射的基本用法。 话不多说,直接贴代码: package main import ( "fmt" "reflect" ) type Order struct { ordId int customerId int callback func() } func reflectInfo(q interface{}) { t := reflect.TypeOf(q) v := reflect.ValueOf(...阅读全文

博文 2019-10-12 17:02:49 aside section ._1OhGeD

Go语言性能优化-两数之和算法性能研究

好多人都在刷leetcode,今天我也注册了一个玩玩,发现里面好多都是算法题,好吧,毕业十来年,学的那点可怜的数学知识,全都还给学校了。好了闲话少说,言归正传,让我们看看今天在里面我尝试的第一道题,有点意思, 不只是单纯的算法,还有数据和是否适合的问题。 承题 点开题库,看了第一题,我们看看这道题: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 用了这么多文字描述,其实总结起来就是:数组里那两个数想加等于目标值,找出来这两个数的索引。 题是不难...阅读全文

博文 2018-10-17 19:44:34 飞雪无情

汇总文件的相关操作

**我们在进行文件的相关操作时,往往不明白在哪种情况下使用那些函数,每次查百度导致开发效率低下,我这里列举一些方便以后查询:** * **读取整个文件** * **从文件的某个位置开始,进行读、写n个字符操作** * **拷贝文件到另一个文件,或拷贝文件的前面n个字符到另一个文件** * **将多个文件汇聚到一个文件来进行操作** * **将多个字符同时写到多个文件中** * **获取文件的相关信息(名称、大小、是否为文件夹、文件权限、创建、最后访问、最后修改时间、绝对路径、重命名操作、是否存在)** * **获取文件夹的所有文件** * **将一个文件的内容写入到另一个文件中,可控制写入内容** **1、读取整个文件** ```go func test1() { f, err := os....阅读全文

博文 2018-07-31 15:23:01 embiid

Go练习 - PProf分析练习

Introduction 先说一下这次要做什么, 我们每天都需要同步一次本部门人员详细信息. 但是只有两个接口可用: 获取所有人员姓名 根据指定姓名, 查询详细信息的接口 在获得详细信息以后需要筛选出本部门的人员信息, 也就是org字段中包含云部门的数据, 筛选出的数据算是最新人员名单, 对比数据库中已有的数据, 做增量更新(也就是不存在的补上就够了). brain fuck ???? 我刚拿到这个任务简直无语, 真他妈无聊到批爆 ... fuck! 但是又隐约想起这似乎是我以前遇到过的一个面试题, 简单想想好像没什么嘛, 但是在30万的数量级, daily basis的情况下. 任何微小的浪费都会被放大, 这样一下就有意思了, 能做肯定是能做, 但是怎么做会比较"快", 比较"经济"(不浪...阅读全文

博文 2020-01-16 20:34:17 xiaohan.liang?