golang 代码测试与性能分析

golang 代码测试与性能分析 平时我们写了的一些方法,想测试时一般在main包中的main函数中去调用我们写好的函数,这样测试不是很专业。golang自带test工具非常好用,我们可以手动写测试代码,也可以在ide中使用快捷键先创建,我们使用下面的例子来说一下 代码测试,性能压测,性能分析等。 例子 demo.go package demo import "time" //字符串长度 func strCount(str string) int { var l int l = len([]ru...阅读全文

简书 2020-01-31 18:32:40 小手25

leetcode_47

Golang: 写在前面:这题如果是用我46的代码是改不出来的,除非得到所有结果再去删除重复的,但这样自然就没什么意思了,我在这道题上花了差不多整整半天,去研究了深度优先、回溯和剪枝,并试图应用进我的代码里,但最终还是失败了。 思路:可以参见liweiwei大佬的题解,很有帮助。我只在这里描述下我上一题的代码为什么无法应用在这一次的题里。我上一题的解法是,如果有[1,2,3,4,5]这样的数组,我在第一轮的起始数组分别是[1,2,3,4,5],[2,1,3,4,5],[3,2,1,4,5],[4...阅读全文

简书 2020-01-31 18:32:39 淳属虚构

go语言实现PDF转JPG

# PDF转JPG 在下面的示例中,我们将该gographics/imagick包用作ImageMagick的C库的包装,以将我们的PDF转换为JPG。处理过程如下:我们使用软件包将测试文件加载到测试文件中,然后通过设置分辨率,压缩级别和alpha通道设置进行处理,然后保存最终的输出文件。由于该库基于C构建,因此重要的是我们必须适当调用Terminate和Destroy函数以检查内存使用情况。 **本文转自 http://www.topgoer.com/** 在Ubuntu 1...阅读全文

Go语言中文网 2020-01-31 12:56:04 lu569368

leetcode_392

Golang: 思路:这题乍一看蛮像什么最长公共子序列的,实际上,完全不是。只要你不会先入为主的认为它不简单,就可以很轻松的找到这题的诀窍。即,只要s是t的子序列,那么s的所有元素,都会在t中依次出现。 实现:于是这题就变成了道双指针问题,a指针指向s中的元素,b指针指向t中的元素,每当s和t符合,s++,t++。是子序列的话,s最终会走到len(s),不是的话,t会最终走到len(t)。 func isSubsequence(s string, t string) bool { if len(...阅读全文

简书 2020-01-30 21:32:47 淳属虚构

2.Golang数组常见操作(哪里不对,请多多指点)

问 1.简单声明数组 2.声明数组并同时赋初值 3.声明数组并同时赋初值,并自动计算长度 4.数组元素的访问与修改 5.数组元素的默认值 6.定义数组元素的初始值 7.数组是值类型(证明) 8.new一个数组(本人还没有学到) 9.[存放]指针的数组(本人还没有学到) 数组,存放元素的容器,必须指定存放的元素的类型和容量(长度) 数据是一个固定长度的数据类型,用户存储一段具有<<相同类型>>的元素的<<连续快>>。数据存储的类型可以使内置类型。整形 字符串 或某种机构类型 占用内存方式为<<连续...阅读全文

简书 2020-01-30 21:32:47 三人行大道

leetcode_409

Golang: 思路:这题就是套了个回文串的壳子,实际上呢,就是找到字符串里所有成对字母的数量,然后,如果有落单的,这个数目就加1。 实现:我用了个长度为52的数组存储所有单词的数目,然后统一处理,求出上文提到的数目。 代码如下: func longestPalindrome(s string) int { if len(s)<=1 { return len(s) } temp:=make([]int,52) for _,v:=range s{ if v>=97 { temp[v-97]++ }...阅读全文

简书 2020-01-30 21:32:47 淳属虚构

leetcode_447

Golang: 前言:在我看来,这还真不算是道简单题,想想虽然是可以想明白的,但实现起来还是有点复杂的。但是这超过百分之五十的通过率是什么,难道这题只是单方面对我不友好吗? 思路:以i点为起点,找到所有到达i点距离一样的点,然后用数学方法得出排列方式,加入到sum中。 实现:使用一个二维数组记录所有点到点之间的距离,然后从第一个点开始一个for循环,每次循环过程中将这个点到其他所有点的距离值存进一个map中,这样我们就能得到一个以i点到其他点距离为key的map,value是距离i点为key的所...阅读全文

简书 2020-01-30 21:32:46 淳属虚构

leetcode_453

Golang: 思路:这题想不通就很难,想通了就很简单,思路的话,简单描述就是逆向思维,将题目所给的条件换一种说法,一切就豁然开朗了。这题理解上首先就挺绕的,我觉得应该翻译为:一个长度为n的数组,我们每次只能让n-1个元素都增加1。问多少次以后,数组内所有元素可以相等。这样一描述,估计就看懂了,但还是很难对不对。我们逆向一下,n-1个元素均加一,等同于剩下那1个元素减一,对吧。那这题就变成了,n个元素的数组,每次都有一个元素减一,问多少次以后数组内元素全部相等。这样,解法就很简单了对吧,因此我就...阅读全文

简书 2020-01-30 21:32:46 淳属虚构

3.Golang 切片(重点,哪里不对,请多多指点)

切片拥有自己的长度和容量, 我们可以通过使用内置的len()函数求长度,使用内置的cap()函数求切片的容量 切片在python是很常见的,而且很简单,但是在Golang中就不是那么的好玩了 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。非常灵活,支持自动扩容。 切片属于引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合 问 1.切片的定义 2.切片初始化 3.由数组得到切片 4.make()函数构造切片 5.append 为...阅读全文

简书 2020-01-30 21:32:45 三人行大道

leetcode_455

Golang: 思路:算是贪心吧,就是尽可能喂饱更多的孩子。但是非常简单,我们的思路就是,先喂食量最小的孩子,并且用尽可能小的饼干去喂饱这些孩子。 实现思路:先对两个数组排序,双指针,最小的饼干去喂最小的孩子,行的话,双指针各向后一位,不行的话,用下一块饼干再去尝试。直到所有孩子都被喂饱,或者所有饼干都被试过了。 代码如下: func findContentChildren(g []int, s []int) int { if len(g)==0||len(s)==0 { return 0 } ...阅读全文

简书 2020-01-30 21:32:45 淳属虚构

Go垃圾回收之三色标记算法

转自公众号“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/SFJoSSbvv3KyYKz4osUnFw三色标记法介绍:三色标记法(tricolor mark-and-sweep algorithm)是传统 Mark-Sweep 的一个改进,它是一个并发的 GC 算法,在Golang中被用作垃圾回收的算法,但是也会有一个缺陷,可能程序中的垃圾产生的速度会大于垃圾收集的速度,这样会导致程序中的垃圾越来越多无法被收集掉。原理如下所示:step 1: 创建:白、灰、黑 三...阅读全文

简书 2020-01-30 21:32:44 灰常出色

leetcode_459

Golang: 思路:这题难道就是区别优秀程序员和一般程序员的那种智商题吗?正确思路是:将两个s字符串拼接起来,如果拼接好的字符串去头掐尾,里面还会出现s的话,就可以知道它是重复字符串了。大佬们一行就能解决了,而我。。。 我自己的代码如下(不建议看): func repeatedSubstringPattern(s string) bool { i:=0 for i<len(s)/2{ if s[i]==s[len(s)-1] { t1:=s[0:i+1] t2:=s[len(s)-i-1:le...阅读全文

简书 2020-01-30 21:32:39 淳属虚构

leetcode_46

Golang: 思路:全排列问题,不解释了 代码如下: func permute(nums []int) [][]int { var res [][]int toNext(nums,0,&res) return res } func toNext(arr []int,n int,res *[][]int) { if n==len(arr)-1 { temp:=make([]int,len(arr)) copy(temp,arr) *res=append(*res, temp) } for i:=...阅读全文

简书 2020-01-30 21:32:39 淳属虚构

Go垃圾回收之三色标记算法

转自公众号“灰子学技术”,原文链接:https://mp.weixin.qq.com/s/SFJoSSbvv3KyYKz4osUnFw三色标记法介绍:三色标记法(tricolor mark-and-sweep algorithm)是传统 Mark-Sweep 的一个改进,它是一个并发的 GC 算法,在Golang中被用作垃圾回收的算法,但是也会有一个缺陷,可能程序中的垃圾产生的速度会大于垃圾收集的速度,这样会导致程序中的垃圾越来越多无法被收集掉。原理如下所示:step 1: 创建:白、灰、黑 三...阅读全文

Go语言中文网 2020-01-30 16:23:08 ZhDavis

基于Go的多级正向代理服务器

前言:在实际项目中,经常会对一些非重要非紧急的数据采取网络爬虫手段抓取到本地,以达到节约成本的目的,但是站点对数据访问地来源有频率限制。很多码农会使用网络上免费的,多渠道的代理来解决频率限制的问题,由于是免费的,所以代理不是很稳定,这样导致每个工程需要花大量的时间和逻辑处理代理选择,失败重试的问题,并最终导致了应用代码的复杂性。本文采用多级代理的方法,第一级代理解决所有问题,用户只需要简单的使用第一级的代理。 基本思路:开发一个代理的代理模块,对应用层屏蔽掉上述问题。 下面是经验和学习的总结 1...阅读全文

Segmentfault 2020-02-06 14:32:32 冯本明

五分钟用Docker快速搭建Go开发环境

挺早以前在我写过一篇用 Docker搭建LNMP开发环境的文章:用Docker搭建Laravel开发环境,里面详细介绍了将 nginx、 mysql和 php三个容器用 docker-compose编排成 LNMP开发环境的步骤,今天来说说怎么用 Docker快速搭建 Go语言项目的开发环境。 因为靠Go本身自带的标准库就能实现高性能的 HTTP服务器,不熟悉的同学买它,呃说错了,看它:深入学习用Go编写HTTP服务器。所以用 Docker 构建 Go的开发环境比构建 LNMP 开发环境要简单很...阅读全文

掘金 2020年01月30日 kevinyan

五分钟用Docker快速搭建Go开发环境

挺早以前在我写过一篇用 Docker搭建LNMP开发环境的文章:用Docker搭建Laravel开发环境,里面详细介绍了将 nginx、 mysql和 php三个容器用 docker-compose编排成 LNMP开发环境的步骤,今天来说说怎么用 Docker快速搭建 Go语言项目的开发环境。 因为靠Go本身自带的标准库就能实现高性能的 HTTP服务器,不熟悉的同学买它,呃说错了,看它:深入学习用Go编写HTTP服务器。所以用 Docker 构建 Go的开发环境比构建 LNMP 开发环境要简单很...阅读全文

Segmentfault 2020-02-05 20:32:33 Kevin

合约交易所开发,专业传统老期货团队

目前已经自研出成熟的合约,现货,OTC等交易系统,两年来,合作渠道交易所近百余家,合约交易更专业。团队:传统期货,资深币圈组成。区块链知名资本投资。一.部署类型纯saas,部分私有化部署(钱包私有化),完全私有化部署二.合约类型合约类型:正向永续,反向永续,定期交割杠杆模式:逐仓 全仓 1-100倍合约委托类型:市价委托,限价委托,限价计划,市价计划,跟踪委托,冰山委托等三.亮点功能反手下单,专业下单交易,止盈止损,多空双开,战绩可视化,赠金任务墙四.客户端支持PC端: Mac Windows ...阅读全文

简书 2020-01-30 03:32:40 斩秋风

sort模块对uint64位等数据结构切片进行排序

sort模块是golang内置的排序模块,但其直接支持的只有int, float64,string等几个数据结构,其他数据结构没有直接的函数供调用. 比如sort.Strings()只接收[]string, sort.Ints()只接收[]int,如果要对[]int64排序就不能直接调用了.如下图 image.png 但sort模块提供了一个非常灵活的函数sort.Slice(slice interface{}, less func(i, j int) bool),第一个参数是要排序的切片.第二...阅读全文

简书 2020-01-30 03:32:40 瓦灯_c6f0