[Introduction]匿名函数

定义 匿名函数没有函数名只有函数体,在需要函数时再定义函数。函数可以当作变量赋值传递,与回调函数相似。Go语言随时支持在代码中定义匿名函数。 如下为声明一个匿名函数,在定义时直接声明: func main() { log.Println("this is main func") func(name string) { log.Println("hello", name) }("Wzy_CC") } // out: // this is main func // hello Wzy_CC 也可以将...阅读全文

Segmentfault 2020-07-27 22:32:33 Wzy_CC

[Translation]Golang中的表驱动测试

翻译自<Table driven tests in Go> by Alex Pliutau 2018/08/07 原文链接 在practice-go中我们经常使用表驱动测试来测试所有可能的函数使用场景。例如FindAnagrams()函数对于给定输入返回字典中找到的字谜列表。 为了能够正确测试FindAnagrams()函数,我们需要测试各种情况,例如空输入,有效输入,无效输入等。我们可以修改不同断言来实现测试,但是使用表测试要容易得多。 假设有以下函数: FindAnagrams(string...阅读全文

掘金 2020年07月22日 Wzy_CC

[Translation]Golang中的表驱动测试

翻译自<Table driven tests in Go> by Alex Pliutau 2018/08/07 原文链接 在practice-go中我们经常使用表驱动测试来测试所有可能的函数使用场景。例如FindAnagrams()函数对于给定输入返回字典中找到的字谜列表。 为了能够正确测试FindAnagrams()函数,我们需要测试各种情况,例如空输入,有效输入,无效输入等。我们可以修改不同断言来实现测试,但是使用表测试要容易得多。 假设有以下函数: FindAnagrams(string...阅读全文

Segmentfault 2020-07-27 19:32:32 Wzy_CC

(1) Golang的初识

一、Go语言快速开发入门 1、需求 要求开发一个hello.go程序,可以输出hello,world 2、开发的步骤 go语言项目的目录结构的处理 3、Golang的执行流程 4、Go语言开发的注意事项 (1)Go源程序以".go"为扩展名; (2)Go应用程序的执行入口是main()函数; (3)Go语言严格区分大小写; (4)Go方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后面自动加入分号); (5)一行只能写一个语句; (6)Import的包或者定义的变量没有使用,编译无法...阅读全文

简书 2020-07-22 14:33:02 真是个点子王

Filecoin官方采访黑客松参赛团队 | 萤火虫IPFS矿机

欢迎来到Filecoin社区亮点系列的第六期~该系列的主题是用户和开发人员在Filecoin网络上构建基本工具和服务。我们希望这篇文章以及本系列的其他文章能激发您的兴趣,并为分布式Web构建世界一流的工具。看看Zondax联合创始人 Juan Leni的最新文章,该文章正在为Filecoin构建密码库,硬件钱包集成,分类账应用程序和GPU加速软件。 本周,我们将有四个团队参加HackFS,这是一个由协议实验室和ETH Global共同主办的为期一个月的黑客马拉松,旨在展示Web3的强大功能。参与...阅读全文

简书 2020-07-22 14:32:59 Firefly萤火虫科技

Filecoin官方AMA第六期 | 认识HackFS团队

欢迎来到Filecoin社区亮点系列的第六期,该系列的主题是用户和开发人员在Filecoin网络上构建基本工具和服务。 本周,我们将有四个团队参加HackFS,这是一个由协议实验室和ETH Global共同主办的为期一个月的黑客马拉松,旨在展示Web3的强大功能。参与者正在构建可以从分布式存储,Dapp和游戏,开发工具和defi集成中受益的所有东西。在整个月中,我们将与不同的团队一起检查,以更深入地研究他们的工作。本周,我们与以下人员进行了交谈:1、OMO Earth2、Pygate3、Unch...阅读全文

简书 2020-07-22 14:32:53 星际视界

编译一个malloc函数时,操作系统做了什么

北大信科计算机系面试时问到了这个问题,没答出来。这个问题涉及到操作系统的内存管理和系统调用功能。一、简单理解1. 堆内存管理我们常说的 malloc 函数是 glibc 提供的库函数。glibc 的内存管理使用的方法是 ptmalloc,除此之后还有很多其他内存管理方案,比如 tcmalloc (golang 使用的就是 tcmalloc)。ptmalloc 对于申请内存小于 128KB 时,分配是在堆段,使用系统调用 brk() 或者 sbrk()。如果大于 128 KB 的话,分配在映射区,...阅读全文

简书 2020-07-22 14:32:46 VINCENT1999

Go复合数据类型

复合数据类型:是以不同的方式组合基本类型可以构造出来的复合数据类型,在Golang中复合数据类型有数组、slice、map和结构体四种。 数组和结构体是聚合类型,它的值由许多元素或成员字段组成。数组是由同构的元素组成,也就是数组元素都是完全相同的类型;结构体则是异构元素组成。数组和结构体都是固定内存大小的数据结构,slice和map是动态数据结构,根据需要动态增长。 数组 由于数组是固定长度,所以在Golang中数组的使用不多,而是使用slice,也就是动态数组。 定义 var arr [n]t...阅读全文

简书 2020-07-22 14:32:45 我是木下先生

关于Golang中append函数

问题append是一个内置函数,用来在指定的slice后面添加1个或多个元素,并且返回一个新的slice。我们知道,每个slice在底层都有一个数组作为支撑,那么如果在append之后,如果修改了返回的slice,原数组的元素是否也会一起改动呢?分析这个问题的答案是:也许为什么呢?这就要从append函数的实现来看了。如果slice的底层数组有足够的空间,那么append函数被调用以后,并不会为新返回的slice分配一个新的数组,而是使用原来的数组。这样的话,当改动了新返回的slice以后,原数...阅读全文

简书 2020-07-22 14:32:44 18611805950

ARTS 第10周| LeetCode 23 Merge k Sorted Lists | Go 性能调优 | 项目管理很重要

ARTS ARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。 每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。 本周内容 本周你将看到: 多路归并排序的 Golang 实现。 Go 官方教你如何做性能分析。 项目经理真的很重要。 Algorithm 本周的算法题是一道链表和归并排序结合的题目:23. Merge k Sorted ...阅读全文

Segmentfault 2020-07-27 13:32:32 casmo澎湃哥

Golang sftp 实现,并发拷贝文件

本人通过ssh公钥、私钥先实现可以通过ssh登录到目标机器 ssh root@10.1.1.1 注意这里是免密登录 然后通过指定公钥的方式,实现golang sftp协议传输文件 package main //go run ops-sftp.go hosts 10.1.1.1,10.1.1.2 /workspace/test/w.txt /workspace/test/source.txt import ( "fmt" "ops-client/utils/sshClient" "os" "str...阅读全文

简书 2020-07-21 23:32:55 老王知识加油站

golang 日志 zap的使用

简介: 日志是我们开发程序必不可少的一部分,go官方的提供的日志包默认功能很简洁,但是满足不了生产环境的全部需求(例如:更精细的日志级别、日志文件分割,以及日志分发等)。虽然Go是新兴语言,但是go的生态圈还是很活跃的,目前比较流行的第三方开源log包有seelog,zap,logrus,还有beego中的日志框架部分。今天我们就着重讲一下uber的zap包,本文中难免会有错误的地方,如有请联系本人,本人会及时更正。 zap是uber开源的Go高性能日志库 Lumberjack用于将日志写入滚动...阅读全文

简书 2020-07-21 23:32:54 JiBadBoy

golang解析pfx证书文件,获得证书私钥

简介: 前一段时间,跟农商行对接支付接口,突然来了一个pfx格式的证书,我当时就懵逼了,因为网上针对于golang解析pfx的文章根本就没有用,只能自己研究了,如果对你有帮助的话,请点个赞吧 package main func main () { getPrivateKey("key/request_key/test.pfx","test") } func getPrivateKey(privateKeyName, privatePassword string) (*rsa.PrivateKey...阅读全文

简书 2020-07-21 23:32:53 JiBadBoy

golang随机数

Go中使用seed得到相同随机数的问题 一、随机数种类 伪随机生成的数字是确定的,不论在什么机器、什么时间,只要执行的随机代码一样,那么生成的随机数就一样 根据密码学原理,要想对一个“随机数”进行随机性检验有以下几个标准: 统计学伪随机性 - 在给定的随机比特流样本中,1 的数量大致等于 0 的数量,也就是说,“10”“01”“00”“11” 四者数量大致相等。说人话就是:“一眼看上去是随机的”。 密码学安全伪随机性 - 就是给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。 ...阅读全文

腾讯云 Serverless 保障《创造营》硬糖少女 C 位出道

15 位青春洋溢的女团候选成员,百万次全网观众投票,节目播出后迅速霸占热搜前十位..... 在这激动人心的决赛之夜,Tencent Serverless 团队下的云 API 网关产品作为幕后英雄,利用其高并发、高可用的技术特性,支撑了节目投票环节顺利开展,面对全网粉丝狂热打 call 投票,顺利保障小姐姐们 C 位出道! 不一般的投票 【投票】是一个很简单的功能,但是《创造营》的投票不一样。 《创造营》是直播节目,投票时间非常短。海量全网粉丝将在同一时间瞬时涌入,瞬间的大流量和高并发,对系统的高...阅读全文

简书 2020-07-21 23:32:52 腾讯云Serverless

适用线上服务器的go web自动重启的更新方案

前言 本文阐述如何使用endless+fsontify实现linux服务器上的热更新。原以为站点更新会像.net、java等那么方便,直接上传更新文件就会自动重启看到最新效果,但在golang中,需要我们手动来实现。 常规部署 步骤 go web在服务器上的部署步骤一般是打包成二进制文件部署在多台Linux服务器上,可搭配lvs、Nginx来做反向代理,实现负载均衡,保障站点的高可用。 问题 linux上二进制文件启动后,无法直接替换,得有个手动重启的动作,这个对更新来说就非常麻烦了,而且程序员...阅读全文

Segmentfault 2020-07-26 17:32:33 叶子

Golang之rpc框架rpcx

前言 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。通过该协议程序员可以实现像调取本地函数一样,调取远程服务的函数。这里介绍一个高效的rpc库(rpcx)。 rpcx 是一个分布式的Go语言的 RPC 框架,支持Zookepper、etcd、consul多种服务发现方式,多种服务路由方式, 是目前性能最好的 RPC 框架之一。 官方资料:https://books.studygolang.com... 项目:https://github.com/...阅读全文

Segmentfault 2020-07-25 21:32:33 guyan0319

golang解析pfx证书文件,获得证书私钥

简介: 前一段时间,跟农商行对接支付接口,突然来了一个pfx格式的证书,我当时就懵逼了,因为网上针对于golang解析pfx的文章根本就没有用,只能自己研究了,如果对你有帮助的话,请点个赞吧 package main func main () { getPrivateKey("key/request_key/test.pfx","test") } func getPrivateKey(privateKeyName, privatePassword string) (*rsa.PrivateKey...阅读全文

Segmentfault 2020-07-25 21:32:33 这个名字好长

事件驱动的微服务-创建第三方库

本篇是我的事件驱动的微服务系列的第三篇,主要讲述如何在Go语言中创建第三方库。如果想要了解总体设计,请看第一篇"事件驱动的微服务-总体设计"。 在Go语言中创建第三方库是为了共享程序,做起来并不困难,不过你需要考虑如下几个方面: 第三方库的对外接口 第三方库的内部结构 如何处理配置参数 如何扩充第三方库 我们用日志做例子讲述如何创建第三方库。Go语言有许多第三方日志库,它们各有优缺点。我在"清晰架构(Clean Architecture)的Go微服务: 日志管理" 中讲到了“ZAP”是迄今为止我...阅读全文

Segmentfault 2020-07-25 13:32:33 倚天码农