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

golang控制结构

1. if结构 概念:if是用于测试某个条件的语句,如果该条件成立,则会执行if后面由大括号包裹的代码块,否则就会忽略该代码块继续执行后面的语句 其格式如下 if condition { // statement } 2. if-else结构 如果有两个分支就可以在if条件语句的基础上添加else语句 其格式如下 if condition { // statement } else { // statement } 3. 多重if-else结构 多重if-else的格式如下 if condition { // statement } else if condition { // statement } else { // statement } 4. switch结构 switch分支结构如...阅读全文

博文 2019-04-02 23:34:38 孤风追影

你的DevOps中有完善的持续交付体系么?

背景:DevOps已经成为软件开发领域一个炙手可热的名词。敏捷开发、持续交付、CI/CD,K8s…这些主流的开发理念、工具无一例外都与DevOps有着很强的联系。这种环境影响下,传统的运维团队均开始向DevOps进行转型。一时之间运维开发、SRE、工程效能工程师需求量大增,无论公司大小,都会开始着手DevOps的从0到1的建设。我们开始搭建工具链、部署流水线、集成自动化测试工具、开发自动化发布系统……一切的一切都是为了完善我们自动化体系,从而提高开发效率,优化产品质量。那么问题来了,你团队所建设的DevOps体系,已经是完善的DevOps了么?正文:我们如何去评估目前DevOps中持续交付的建设情况呢,这里笔者总结了一些我们在DevOps初期应该进行的一些工作,这些工作大多数属于工具链的集成...阅读全文

博文 2020-03-06 19:17:38 JFrogChina

ubuntu安装配置GO环境

1. 安装GO环境 sudo apt-get install golang 2. 测试GO mkdir code && chmod 777 code //新建一个文件夹 vim test.go //新建并编辑一个.go文件 3. 写go测试代码 /* package main import "fmt" func main(){ fmt.Println("Hellow World!\n"); } */ :wq 4. 编译GO程序 go build test.go4.1 这时再输入ls命令即可看见多出一个test,直接运行该文件可以看到编译结果 ./test 5. 运行go程序 go run test.go6. 设置GOPATH变更 GOPATH是扩展库的目录,Go先搜索标准库目录,然后搜索GO...阅读全文

博文 2019-03-06 17:34:44 沐酒鸿江

01Go命令介绍

Go 命令介绍 go 提供了一套强大好用的命令系统 go build 编译包和依赖项 go clean 删除目标文件 go env 打印Go环境信息 go fix 在包上运行go tool修复,用来修复老版本到新版本的问题 go fmt 在包源上运行gofmt go generate 通过处理源生成Go文件 go get 下载并安装包和依赖项 go install 编译和安装包和依赖项 go list 列出包 go run 编译并运行go程序 go test 测试包,运行以 _test.go结尾的文件 go tool 运行指定的go工具 go version 打印go版本 go vet 在包上运行工具go vet,它可以在编译阶段和运行阶段发现bug 详细的官网地址为:中文https://g...阅读全文

博文 2019-04-16 05:31:01 weixin_33805557

go语言中那样让你吃惊的东西

本文面向golang的新手,第一次接触golang时可能会吃惊的地方 1. 以大小写开头来决定一个声明是包内可见,还是包外可见 如果一个常量/变量/类型/函数 它的名称是小写字母开头,则它是一个内部的,只能在同一个包内访问。 反之它是导出到外部的。 ~/go/src/a.go package a import “b” var name = b.lower // error var name = b.Upper // correct ~/go/src/b.go package b const lower = “lower” const Upper = “Upper” 2. 函数支持多返回值。 resp, err := http.Get(url) 对于那些将运行失败看作是预期结果的函数,它们会返...阅读全文

博文 2020-02-23 23:32:45 林晨chris

bitcount优化之路

**问题:** 使用Go实现bitcount函数,统计一个uint64型数值中被设置为 1 的比特位的数量。 **方案一:** 最容易想到的实现就是每次右移一位,检测最后一位是否是1,这样完成挨个比特检测后,就可以得出结果。 func bitCount1(n uint64)int8{ var count int8 var i uint for i < 64 { if ( (n >> i) & 1) != 0{ count += 1 } i += 1 } return count } var BitCount = bitCount1 实现一个测试函数和一个基准测试函数测试正确性和性能: **测试环境:** 型号名称: MacBook Pro 处理器名称: Intel Core i7 处理器速度...阅读全文

博文 2019-06-30 01:12:08 leeright

深入浅出谈以太坊智能合约

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1什么是合约? 合约是代码(它的功能)和数据(它的状态)的集合,存在于以太坊区块链的特定地址。 合约账户能够在彼此之间传递信息,进行图灵完备的运算。合约依靠被称作以太坊虚拟机(EVM) 字节代码(以太坊特有的二进制格式)上的区块链运行。 合约很典型地用诸如Solidity等高级语言写成,然后编译成字节代码上传到区块链上。 也有其他语言可以用于编写智能合约如Serpent和LLL,在下一节会进一步阐述。去中心化应用开发资源列出了综合的开发环境,帮助你用这些语言开发的开发者工具,提供测试和部署支持等功能。 2以太坊高级语言 合约依靠被称作以太坊虚拟机(EVM) 字节代码(以太坊特有的二进制格式)上的区块链运行。然而,...阅读全文

博文 2019-09-27 17:02:46 链客

Golang代码测试 第一篇之常规测试

目录 为什么要测试 测试代码书写格式 测试方式分为三种 3.1. 单元测试 3.2. 性能(压力)测试 3.3. 覆盖率测试 一个开箱即用的测试项目 1. 为什么要测试 为什么要进行测试其实就不用多讲了,安全、质量管控等等,算是提交前的最后一道检查吧 2. 测试代码书写格式 首先来讲讲写测试的语法格式 go文件必须以_test.go结尾, import 倒入testing包 需要测试的函数要已Test或Benchmark开头 单元测试则以(t *testing.T)为参数,性能测试以(t *testing.B)为参数 还有很多的方法可以调用 // 书写格式第5条中可以调用(t *testing.T)的方法 type TB interface { // 输出错误日志 Error(args .....阅读全文

博文 2019-06-09 18:02:40 简单的计划

Go-Spring : Another Go Style!

Go-Spring 是模仿 Java 的 Spring 全家桶实现的一套 GoLang 的应用程序框架,仍然遵循“习惯优于配置”的原则,提供了依赖注入、自动配置、开箱即用、丰富的第三方类库集成等功能,能够让程序员少写很多的样板代码。 1.前言 去年年底的时候,我所在的团队由于业务调整,技术栈也随之发生改变,由之前的 PHP +Java 变成了 Golang + Java。初次接触 Golang,颇不适应,首先就是它那不同一般的语法,然后是没有一个成熟好用的开发框架。语法问题时间长了代码写的多了也就慢慢适应了,但是没有顺手的开发框架就太影响开发效率和代码质量了,作为一个资深的 Java + Spring 全家桶开发者,我希望能改变这一现状。经过一段时间的使用和探索,我发现完全可以搞出一套像 S...阅读全文

博文 2019-08-12 16:04:08 滴滴技术

golang-测试方式

package main import ( "fmt" "testing" ) // 在项目的api目录下有个 main_test.go 文件,那么就可以在这个目录下面执行 go test 命令来执行 // go test -v 可以看出执行了哪几个函数 // test文件下的文件名, 必须是这种类型, 比如: main_test.go // test文件下的每一个文件test case均必须义Test开头并且符合TestXxx形式,否则go test会直接跳过测试不执行 func TestPrint(t *testing.T){ // 表示跳过当前测试 // t.SkipNow() res := print20() if res != 210 { t.Errorf("返回值错误!") } ...阅读全文

博文 2019-12-18 12:32:42 爱吃豆包

Golang设计模式——单例模式

要点:sync.Once 的应用高并发场景下读写锁 package singleton import "sync" var ( p *Pet once sync.Once ) func init(){ once.Do( func() { p = &Pet{} }) } func GetInstance() *Pet{ return p } type Pet struct { Name string Age int m sync.Mutex } func (p *Pet)GetName()string{ return p.Name } func (p *Pet) GetAge() int{ return p.Age } func(p *Pet) SetName(name string) { p...阅读全文

博文 2020-05-19 05:33:44 筑梦攻城狮

记录一次跨域访问的傻逼debug

前端使用XMLHttpRequest向后端发请求,由于前后端分离模式,所以分开部署,因为域名也不同,故这个跨域访问搞了我一整天时间不得其解。 其实我早就解决了,网上什么资源都有,只不过是后台返回的response的header加个Access-Control-Allow-Origin: * 。但是傻逼就傻逼在我是请求成功(即业务逻辑上的请求成功)下才设置header,而前端代码里发送的时候得到的response则是业务逻辑错误的回复(因为贪方便,故请求未带上token),故没有这个header,使得我认为后台明明加了这个header,为什么前端还是一直报这个错误。 理论上来说,这么试多次之后,应该早就发现后台代码有问题,但更傻逼的是,我用postman去测试,带token,得到成功的resp...阅读全文

博文 2019-07-06 18:01:02 tomleoken

Golang expvar原理

前言 在学习go的metric的过程中,有些实现支持prometheus、expvar等,expvar是什么,竟然在sdk的库中?另外,发现jaeger(github.com/uber/jaeger-lib)也支持这种metric数据暴露方式。 分析 expvar提供将变量暴露出去的机制(暴露到http接口等),java中也有类似的机制。 原理 go默认创建一个全局并发安全的map,可以将key为string,val为实现Var的实例保存进去;同时,将所有的key保存到列表中。 http暴露原理,注册http接口到默认的mutex中,返回数据是所有key,val的结果。 实现 expvar.Int实现接口Var,创建Int时,会将实例添加到map,并将key设置到list中。 func Ne...阅读全文

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

100%移植阿里云移动测试技术,竟仅需1周?!——移动测试专有云(3)——内容详解

摘要: Android兼容性测试旨在帮助解决Android应用在不同真机机型上的各类兼容性问题,包括 Crash/ANR分析、6项性能分析、UI检测、3个版本的覆盖安装检测等。Android兼容性测试使用非常简单,客户只需要提交被检测的APK文件(如需登录再提供测试账号/密码),最快经过10分钟全面测试(其他平台在1-3分钟测试时长)之后,将收到测试完成通知,就可以来MQC上查看测试报告。 **一、自动化测试服务** **Android兼容性测试** Android兼容性测试旨在帮助解决Android应用在不同真机机型上的各类兼容性问题,包括 Crash/ANR分析、6项性能分析、UI检测、3个版本的覆盖安装检测等。Android兼容性测试使用非常简单,客户只需要提交被检测的APK...阅读全文

go build

go buildgo build命令用于编译我们指定的源码文件或代码包以及它们的依赖包。例如,如果我们在执行go build命令时不后跟任何代码包,那么命令将试图编译当前目录所对应的代码包。例如,我们想编译goc2p项目的代码包logging。其中一个方法是进入logging目录并直接执行该命令:hc@ubt:~/golang/goc2p/src/logging$ go build因为在代码包logging中只有库源码文件和测试源码文件,所以在执行go build命令之后不会在当前目录和goc2p项目的pkg目录中产生任何文件。插播:Go语言的源码文件有三大类,即:命令源码文件、库源码文件和测试源码文件。他们的功用各不相同,而写法也各有各的特点。命令源码文件总是作为可执行的程序的入口。库源码...阅读全文

博文 2018-12-06 19:31:03 weixin_40592935

Golang接口的小疑问

学习接口的时候有个2个小疑问 接口的方法是否能被部分实现? 实现部分接口方法的结构体是否能转化为该接口类型? 写了点代码测试,如下: package main import "fmt" type Human struct { age int8 gender int8 } type Man interface { GetAge() int8 GetGender() int8 } func (human *Human) GetAge() int8 { return human.age } func main(){ var humanS = Human {32, 1} fmt.Printf("%d", humanS.GetAge()) var man Man man = humanS fmt.Pr...阅读全文

博文 2019-09-29 21:33:05 aside section ._1OhGeD

Golang单元测试入门实践总结

背景: 之前很长一段时间再写Golang程序时,不会有意识去写单元测试,直到后来写了独立项目后,慢慢才发现给一个功能编写对应的单元测试是多么高效和方便,接下来就再一起复习下Golang中的测试. UnitTest(单元测试) 单元测试是程序开发者适用一段代码来验证另外一段代码写的是否符合预期的一种相对高效的自我测试方法。 还记得最早开始搞运维时,写的程序基本上是通过main程序去调用具体的功能函数,然后通过具体的输出来主观验证结果是否符合预期,这种方式对于搞正统的软件开发者而言会感觉很傻,但这对于运维领域来说却很实用,很有效,因为通常运维工作中需要的一些开发都不会是逻辑较为复杂的程序,所以没有必要专门去写测试程序去测试另外一个程序是否符合预期。 但是随着工作内容和运维需求的变化,不得不使用一...阅读全文

博文 2019-11-10 03:32:58 更多精彩内容【实践】Golang的单元测试入门go test笔名辉哥[译]golang基础-编写单元测试GeminiGirl0604GO语言静态代码测试---应用于区块链构建性测试老余2017golang 单元测试 UnitTest 覆盖率 基准测试木猫

IPFS 2018 Q4目标与关键结果

我们试着用科学流程来构建我们工作,该流程基于季度目标和关键结果(OKR)。其中目标反映了具有挑战性但可实现的结果。结果是切实的、可衡量的工作产出。 一、开发与支持(一)项目3、建立更好的组织,从而为整个团队提供优秀的设计(不知道为什么没有1、2)正式组建设计工作组,为其成员命名,明确工作组的工作范围列表第四季度该团队要成长出1名视觉设计师(Agata +1)第四季度该团队要成长出1名交互/前端设计师(IPFS GUI)(二)JavaScript实现1、Go IPFS的可行替代方案缺省情况下启用DHT并与Go IPFS DHT互操作在pubsub和DHT上运行IPNS完成Base32 CIDv1迁移使JS IPFS守护进程成为一个(或更多)的IPFS网关节点JS IPFS在与Go IPFS相同...阅读全文

博文 2018-10-10 12:34:50 IPFS星际社区

详解GO语言,一文告诉你PHP程序员为什么要学习GO语言?

很多人将GO语言称为21世纪的C语言,因为GO不仅拥有C的简洁和性能,而且还很好的提供了21世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东西。 发展历史2007年9月,Rob Pike在Google分布式编译平台上进行C++编译,在漫长的等待过程中,他和Robert Griesemer探讨了程序设计语言的一些关键性问题,他们认为,简化编程语言相比于在臃肿的语言上不断增加新特性,会是更大的进步。随后他们在编译结束之前说服了身边的Ken Thompson,觉得有必要为此做一些事情。几天后,他们发起了一个叫Golang的项目,将它作为自由时间的实验项目。2008年5月 Google发现了GO语言的巨大潜力,得到了Google的全力支持,这些人开始全职投入G...阅读全文

博文 2019-12-11 15:33:07 六星教育技术共享

Let’s Encrypt证书吊销事故的思考

title: "Let’s Encrypt证书吊销事故的思考" date: 2020-03-28T00:11:54+08:00 description: "如何保障代码的安全性?" featured_image: "" categories: "其它" tags: [] 前段时间一则新闻引爆了程序界:《一行Golang代码引发的血案——全网最详细分析2020年3月Let’s Encrypt证书吊销事故》。 这个事故的原因上文已经说得很清楚了,这里摘抄一下: 那么这个软件到底出现了什么问题才会导致如此滑稽的故障?我翻看着Let's Encrypt最近的commit,找到了一个Pull Request:#4690。看完这个Pull Request后,我马上意识到问题所在:Golang最经典的错误...阅读全文

博文 2020-04-20 21:32:41 jmjoy

golang中defer

你是不是觉得defer很简单、很好用,但也许你掉坑里了都不知道! 这篇文章不介绍defer的常用功能,而是介绍你在用defer时,也许会踩的坑。 defer允许我们进行一些函数执行完成后的收尾工作,并且代码更加简洁,例如: 关闭文件流: // open a file defer file.Close() 解锁一个加锁的资源 mu.Lock() defer mu.Unlock() 打印最终报告 printHeader() defer printFooter() 关闭数据库链接 // open a database connection defer disconnectFromDB() 但是: 你知道defer和defer后的函数什么时候执行吗? 你知道defer后函数里的变量值是什么时候计算的...阅读全文

博文 2019-07-31 20:32:39 云南厨子

【Go】slice的一些使用技巧

文链接:https://blog.thinkeridea.com/201901/go/slice_de_yi_xie_shi_yong_ji_qiao.html slice 是 Go 语言十分重要的数据类型,它承载着很多使命,从语言层面来看是 Go 语言的内置数据类型,从数据结构来看是动态长度的顺序链表,由于 Go 不能直接操作内存(通过系统调用可以实现,但是语言本身并不支持),往往 slice 也可以用来帮助开发者申请大块内存实现缓冲、缓存等功能。 在 Go 语言项目中大量的使用 slice, 我总结三年来对 slice 的一些操作技巧,以方便可以高效的使用 slice, 并使用 slice 解决一些棘手的问题。 slice 的基本操作 先熟悉一些 slice 的基本的操作, 对最常规的 ...阅读全文

博文 2019-01-24 23:34:41 thinkeridea

for-loop 与 json.Unmarshal 性能分析概要

for-loop 与 json.Unmarshal 性能分析概要 在项目中,常常会遇到循环交换赋值的数据处理场景,尤其是 RPC,数据交互格式要转为 Protobuf,赋值是无法避免的。一般会有如下几种做法: for for range json.Marshal/Unmarshal 这时候又面临 “选择困难症”,用哪个好?又想代码量少,又担心性能有没有影响啊... 为了弄清楚这个疑惑,接下来将分别编写三种使用场景。来简单看看它们的性能情况,看看谁更 “好” 功能代码 ... type Person struct { Name string `json:"name"` Age int `json:"age"` Avatar string `json:"avatar"` Type string ...阅读全文

博文 2019-06-15 10:52:36 EDDYCJY

golang[32]-区块链-base58

base58Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+“和”/"符号。设计Base58主要的目的是:避免混淆。在某些字体下,数字0和字母大写O,以及字母大写I和字母小写l会非常相似。不使用"+“和”/"的原因是非字母或数字的字符串作为帐号较难被接受。没有标点符号,通常不会被从中间分行。大部分的软件支持双击选择整个字符串。base58编码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545...阅读全文

博文 2019-02-21 15:35:52 jonson_jackson

Golang MSC 约定

分层结构 Model (模型) 可以包含少量方法; 不引用外部资源; 功能: 数据传输; 持久话; 校验信息; json、xml转换格式定义; 如无必要,转换json、xml格式时无需改变字段大小写,减少无谓的工作量; Service (服务) 提供被多方使用的公共方法; 名称以Service结尾; 会被多个Ctrl或Service调用; 可创建、输入、输出Model; 可调用其他Service; 不可调用Ctrl; 主要的单元测试对象,覆盖率要足够高; 提供一个New方法创建服务,方法的参数是需要引用的其他服务; Ctrl (控制器) 对外提供交互服务; 名称以Ctrl结尾; 包含一个路由方法(Party),说明RESTful调用名称、路径、模式参数等; Ctrl不能被Model和Serv...阅读全文

博文 2019-08-29 11:32:53 安德徐

第二章 线程管理

简述 如何启动线程 因启动性程需要一个callable type,可以有函数指针,类重载(),lambda三种形式。 其中类重载(),lambda,有可能会拿到非运行程序的变量,要小心。 启动完成后,需要detach或join,否则程序运行会报错。引入一个thread_guard类。 给线程传参数,会进行拷贝操作。 如果是引用,则要小心变量的作用域。他只会进行拷贝操作,而不会进行转换操作。 如果是类,那么又不需要std::ref。 如果是moveonly的值,在传进去之前要std::move thread 是一个 moveonly的类型,这里介绍了scoped_thread (它是一个线程的'子类') 还有,当 thread t1(xxxx); thread t2(x); t2 = std:...阅读全文

博文 2019-03-30 12:34:40 传说中的水牛

一些不常见的Go命令参数详解

你是刚开始使用Go工具么?或者你想扩展知识?这篇文章将会描述每个人都需要知道的Go工具参数。免责声明:这篇文章可能会有些偏见。这篇文章描述了我个人会用到的Go工具参数,还有一些是我周围的人遇到的问题。如果你还有别的想法,在Twitter联系我。$ go build -x-x会列出来go build调用到的所有命令。如果你对Go的工具链好奇,或者使用了一个跨C编译器,并且想知道调用外部编译器用到的具体参数,或者怀疑链接器有bug;使用-x来查看所有调用。$ go build -x WORK=/var/folders/00/1b8h8000h01000cxqpysvccm005d21/T/go-build600909754 mkdir -p $WORK/hello/perf/_obj/ mkdi...阅读全文

博文 2019-03-17 14:05:26 erlib

go语言渐入佳境-网络[4]-port

端口port服务器运行在主机上。 IP地址将定位主机。但是在每台计算机上可能有很多服务,需要一种简单的方法来区分它们。 TCP,UDP,SCTP等使用的方法是使用端口号。有许多“标准”端口。 Telnet通常使用端口23,TCP协议。 DNS使用端口53,使用TCP或UDP。 FTP使用端口21和20,一个用于命令,另一个用于数据传输。HTTP通常使用端口80,但它通常使用端口8000,8080和8088,所有端口都使用TCP。在Unix系统上,常用端口列在文件/etc/services中。 Go具有查询此文件的功能测...阅读全文

博文 2020-01-14 22:33:14 jonson_jackson

Go Web 编程之 响应

概述 上一篇文章中,我们介绍了请求的结构与处理。本文将详细介绍如何响应客户端的请求。其实在前面几篇文章中,我们已经使用过响应的功能——通过http.ResponseWriter发送字符串给客户端。但是这种方式仅限于发送字符串。本文我们将介绍如何定制响应的参数。 ResponseWriter接口 如果你看了我前面几篇文章,应该对处理器和处理器函数都非常熟悉了。处理器函数即拥有以下签名的函数: func (w http.ResponseWriter, r *http.Request) 这里的ResponseWriter其实是定义在net/http包中的一个接口: // src/net/http/ type ReponseWriter interface { Header() Header Wri...阅读全文

博文 2019-12-23 00:32:42 darjun

2019-06-26

本文介绍了fabric中的一个示例应用balance-transfer,fabric版本是1.4.1。本文基于上一章hyperledger基础培训-创建第一个fabric网络的基础上,如果还未了解,请先了解上一章节内容。 balance-transfer是什么 balance-transfer是Hyperledger fabric Node SDK的一个示例应用,主要使用了SDK中fabric-client 和 fabric-ca-client 模块中的API,实现了与Fabric网络交互的各种操作。 1. 预装环境 预装环境在上一章节hyperledger基础培训-创建第一个fabric网络已有详细介绍,可跳转至该文章查看。 Docker - v1.12或更高版本 Docker Compo...阅读全文

博文 2019-06-27 21:02:39 青柠果嗄

Golang笔记-单元测试test初探

### 为什么需要单元测试 其实在很长一段时间,包括现在,我都很不喜欢写单元测试。因为维护单元测试的成本很高。只有接口做了一点变更,那么单元测试就必须做相同的变更,否则会导致测试不通过。 那么反过来,只要每次在提交代码都去运行一次单元测试。这样可以很快的检查到你对代码更改是否影响了正常的业务逻辑,当然很大一部分是可能是别人写的那部分代码。因为你不确定本次的修改是否会影响到别人的那部分。所以单元测试还是很有必要的。 ### 单元测试最基本的应用 go语言中单元测试是开箱即用的,官方提供了`test`包。不用像PHP中需要单独配置`unit`。 #### go test 最基本使用 `go test` 命令是`golang`单元测试的最基本使用 #### go test -v > `go tes...阅读全文

博文 2020-05-17 18:15:13 rundaisc

golang rabbitmq的使用(三)

在第二篇中讲到了fanout类型的exchange,fanout类型exchange会将消息发送到所有和其连接的queue中,不会去区分和过滤。但现实中我们往往需要有过滤条件将不同的消息区分开来发到不同的queue。举个简单的例子,系统的log。我们需要将收到的log根据info,debug,warn,error发送到不同的queue,由不同的consumer来处理这些不同的log。为了实现这个功能我们可以 ExchangeDeclare是指定type为direct err = ch.ExchangeDeclare( "syslog_direct", //exchange name "direct", //exchange type true, //durable false, //auto...阅读全文

博文 2019-11-19 11:02:53 麦穗儿

Golang学习笔记-条件语句,循环语句

Go的条件语句,循环语句和C很像,不同的是Go的条件表达式可以不用括号扩起来,除此之外还有这些不同: switch语句 switch分支中的代码执行完后会跳出switch代码块,如果我们需要执行后面的 case,可以使用fallthrough。 func main() { a:=1 switch a { case 0: fmt.Println("a is 0") case 1: fmt.Println("a is 1") fallthrough case 2: fmt.Println("a is 2") } } 结果: a is 1 a is 2 switch支持任何类型的判断,例如下面的string: func main() { var fruitName="apple" switch f...阅读全文

博文 2019-09-27 23:33:01 aside section ._1OhGeD

Android之高效率截图

本文来自网易云社区作者:孙圣翔在一张Android手机上截图有好多办法,为了能够高效率的截图,我几乎把所有的方法都尝试了一般。走了好多路,也遇到了好多的问题。只是想记录下这其中的不容易。下面所有的测试都是用的我的三星 S4.屏幕分辨率 1080x1920androidviewclient截图速度: 4.5s最开始截图用的是 google官方提供的纯python库androidviewclient,代码的地址在 https://github.com/dtmilano/AndroidViewClient基于adb协议,只能在电脑上用。最初被我用在的一个手游自动化测试工具airtest上面。使用它很简单,我写个简单的例子from com.dtmilano.android.viewclient im...阅读全文

博文 2018-09-26 18:34:42 yijian2595

深度性能测试:功能决定现在,性能决定未来!

摘要: 深度性能测试能协助测试人员发现APP中存在的深层次性能问题,直接定位多项性能问题及瓶颈的根本原因,方便开发者快速提升APP性能表现,使得APP运行得更加稳定。MQC深度性能测试能够帮助开发者发现深层次的性能问题,更精准地定位问题。 功能决定现在,性能决定未来! 一、 内存泄漏   内存泄漏是指由于代码编写不当导致不再使用的对象无法得到及时释放。内存泄漏产生的内存垃圾不仅浪费资源,拖慢运行效率,甚至还可能造成内存溢出,直接导致应用崩溃。    对于Android应用,比较容易发生泄漏的是Activity、Fragment对象,此类对象的共性是其都有一定的生命周期。以Activity为例,一个Activity实例的生命起始于onCreate(),终结于onDestroy()...阅读全文

Unit Test In Go With Docker

本篇文章主要讲解如何在 Docker 中进行 Go 单元测试,依赖 Docker 和 Go Modules。 为什么是 Docker 在 Docker 之前我们往往需要在 Jenkins 服务器上配置不同的 Go 版本以及针对每个项目配置 GOPATH,项目之间的隔离性差,经常出现基础库版本冲突的问题。 有了 Docker,我们可以在不同容器中运行单元测试,该测试不局限不同项目,甚至可以是同一项目不同分支。 所以在测试隔离性和项目测试并发度上都有很大提升,而且测试结束后,环境清理也简单许多。 为什么是 Go Modules Go Modules 作为官方默认的包管理工具,基本解决了 Go 长期存在的包管理问题,它为我们的项目管理带来很多好处: 自动解析和添加依赖 签名验证 依赖缓存 支持相对...阅读全文

博文 2019-09-23 12:33:26 xjtuhit

leetcode_91

Golang: 思路:DP这类的题一般都不简单,需要考虑的很全面,稍有不慎就翻车,这题挂了三次,全是最简单的测试用例上,成功的把自己通过率拉到了平均线上。 这题是常态DP,没啥难度,但这题需要注意几个点: 字符串第一个字符如果为0,可直接返回0 字符串中间出现了0,那么要查看0前一位是不是1或者是2,不是可以直接返回0 代码如下: func numDecodings(s string) int { if len(s)==0{ return len(s) } if s[0]=='0' { return 0 } if len(s)==1{ return 1 } arr:=make([]int,len(s)) arr[0]=1 if s[1]=='0' { if s[0]=='1'||s[0]==...阅读全文

博文 2020-02-21 09:32:46 淳属虚构

Go 笔记之如何测试你的 Go 代码

不论是开源项目,还是日常程序的开发,测试都是必不可少的一个环节。今天我们开始进入 Go 测试模块 testing 的介绍。 差不多两周没有更新 Go 文章了,最近状态不是太好。这篇文章本来准备写的内容非常丰富,结果有点力不从心,移除了好几个小节。思考下来,还是决定拆成几篇。 另外,参考资料中有几篇很精彩的文章,有兴趣也可以读一下。 简单概述 我们选择开源项目,通常会比较关注这个项目的测试用例编写的是否完善,一个优秀项目的测试一般写的不会差。为了日后自己能写出一个好的项目,测试这块还是要好好学习下。 常接触的测试主要是单元测试和性能测试。毫无意外,go 的 testing 也支持这两种测试。单元测试用于模块测试,而性能则是由基准测试完成,即 benchmark。 Go 测试模块除了上面提到的功...阅读全文

博文 2019-09-03 11:04:22 波罗学

【Zinx第三章-基础路由模块】Golang轻量级并发服务器框架

【Zinx教程目录】Zinx源代码https://github.com/aceld/zinx (请拷贝网址,在浏览器打开[简书不让自动跳转])完整教程电子版(在线高清)-下载Zinx框架视频教程(框架篇)(完整版下载)链接在下面正文 Zinx框架视频教程(应用篇)(完整版下载)链接在下面正文 Zinx开发API文档Zinx第一章-引言Zinx第二章-初识Zinx框架Zinx第三章-基础路由模块Zinx第四章-全局配置Zinx第五章-消息封装 Zinx第六章-多路由模式 Zinx第七章-读写分离模型 Zinx第八章-消息队列及多任务 Zinx第九章-链接管理 Zinx第十章-连接属性设置 【Zinx应用案例-MMO多人在线游戏】(1)案例介绍(2)AOI兴趣点算法(3)数据传输协议protoc...阅读全文

博文 2019-07-09 09:02:38 aceld

go测试

Go测试 gotest文件命名格式:xxx_test.gogotest文方法命名格式:Testxxx.go func TestLRU(t *testing.T) { // 测试内容 } 运行 go test -v 输出测试结果。 查看代码覆盖率 生成文件 go test -coverprofile='c.out' 查看 执行 go tool corver -html='c.out'会在浏览器中显示覆盖率 执行go tool corver -func='c.out'打印每个方法的输出覆盖率 性能测试 func BenchAdd(b *testing.B) { // } 执行go test -bench . 会输出测试结果 生成文件 go test -bench . -cpuprofile cp...阅读全文

博文 2020-01-09 14:32:53 发条家的橙子

《Go 语言程序设计》读书笔记(十)反射

Go语言提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法和它们支持的操作,但是在编译时并不知道这些变量的具体类型。这种机制被称为反射。反射也可以让我们将类型本身作为第一类的值类型处理。 在本章,我们将探讨Go语言的反射特性,看看它可以给语言增加哪些表达力,以及在两个至关重要的API是如何用反射机制的:一个是fmt包提供的字符串格式功能,另一个是类似encoding/json和encoding/xml提供的针对特定协议的编解码功能。反射是一个复杂的内省技术,不应该随意使用,因此,尽管上面这些包内部都是用反射技术实现的,但是它们自己的API都没有公开反射相关的接口。 为何需要反射 有时候我们需要编写一个函数能够处理任何类型,一个大家熟悉的例子是fmt.Fprintf函数提供的字符串格...阅读全文

博文 2020-01-17 17:32:40 Kevin

聊聊在Go语言里使用继承的翻车经历

Go不是面向对象的语言,但是使用组合、嵌套和接口可以支持代码的复用和多态。关于结构体嵌套:外层结构体类型通过匿名嵌套一个已命名的结构体类型后就可以获得匿名成员类型的所有导出成员,而且也获得了该类型导出的全部的方法。比如下面这个例子: type ShapeInterface interface { GetName() string } type Shape struct { name string } func (s *Shape) GetName() string { return s.name } type Rectangle struct { Shape w, h float64 } 复制代码Shape类型上定义了GetName()方法,而在矩形Rectangle的定义中匿名嵌套了Sha...阅读全文

博文 2020-04-20 13:34:22 kevinyan

Go 笔记之如何测试你的 Go 代码

不论是开源项目,还是日常程序的开发,测试都是必不可少的一个环节。今天我们开始进入 Go 测试模块 testing 的介绍。 差不多两周没有更新 Go 文章了,最近状态不是太好。这篇文章本来准备写的内容非常丰富,结果有点力不从心,移除了好几个小节。思考下来,还是决定拆成几篇。 另外,参考资料中有几篇很精彩的文章,有兴趣也可以读一下。 简单概述 我们选择开源项目,通常会比较关注这个项目的测试用例编写的是否完善,一个优秀项目的测试一般写的不会差。为了日后自己能写出一个好的项目,测试这块还是要好好学习下。 常接触的测试主要是单元测试和性能测试。毫无意外,go 的 testing 也支持这两种测试。单元测试用于模块测试,而性能则是由基准测试完成,即 benchmark。 Go 测试模块除了上面提到的功...阅读全文

博文 2019-09-03 22:32:46 波罗学

[10月12日][全国在线]让it更精简,让项目更敏捷-如何成功运用敏捷方法进行项目管理与实施

项目管理在中国10多年的发展历程中,越来越体现它的价值与作用,随着社会在不断进步,IT技术和管理的发展也逐渐从单纯的引入过渡到创新的阶段,更多的组织或团队会发现: 客户的需求在不停的变化,如何应对; 小型团队用项目管理的流程会力不从心; 上线时间越来越短,如何能快速了解市场推出的新产品; 团队文化构建难,庞大研发团队的协作管理问题; 交付客户满意度低; 技术快速发展,流程停滞不前版本迭代质量低; 针对上述问题,敏捷思想可以很好的加以应对,光环国际结合软件开发与互联网企业特点,通过分析当前企业所存在的普遍问题,详细阐述如何成功运用敏捷方法进行项目管理与实施,加强团队有效沟通,准确捕获客户需求,高质量进行产品交付。逐一阐述敏捷思维与原则、特征、过程与角...阅读全文

leetcode_355

Golang: 思路:设计推特,搬运我的题解 这里的代码依旧有着很大优化的空间,比如按时间排序上,可以维护一个堆;对于每一个用户,我们可以只保存他/她的最近十条推特 但是不太想写了,因为比较麻烦。。。 globalId:类似timestamp时间标记 follower:记录每个用户关注的用户列表 checkFollowed表示关注关系,用户A是否关注了用户B,key为“id id”的形式,应该是可以保证唯一性的 twitter存储每个用户发过的推,但是value存的是globalId,方便以后取出来 findtwitter存储的是所有用户发的推 注意,这套代码是不满足并行与分布式的要求的。。。 代码如下: type Twitter struct { globalId int follower...阅读全文

博文 2020-04-13 11:32:46 淳属虚构

Go 语言单元测试实践

文链接:Go 语言单元测试实践 什么是软件测试? 软件测试是一个过程,该过程对软件(计算机程序)进行各种操作来发现软件错误。 为什么要进行软件测试? 进行软件测试可以帮助我们验证软件的各种功能正常,保证软件的正常工作从而提高软件质量。并且在实践中已被证明是颇有成效的。 测试驱动开发的由来: 一个从大量实践中得出的结论:人们发现在软件开发周期中,软件错误每进入到下一个阶段要修正它所付出的时间和人力会出人意表的翻上十倍。所以更早地进行软件测试可以更早地发现软件错误,从而大大减少后期修正的成本。后来又有人提出了测试驱动开发(TDD: Test-driven development),主体思想就是先编写测试程序,再实现程序功能。 下面就来介绍如何在 Go 语言中进行软件测试中较为重要的一环:单元测试...阅读全文

博文 2020-05-31 21:34:51 sulinehk

1.go安装

本小结介绍如何安装和使用golang 开始之前 开始之前先介绍几个概念1.go语言的环境变量我们只介绍GOROOT和GOPATH GOROOT golang 的安装路径,当你安装好golang之后其实这个就已经有了 GOPATH go命令依赖的一个重要环境变量:$GOPATH 可以把这个目录理解为工作目录 -- bin // golang编译可执行文件存放路径 -- pkg // golang编译包时,生成的.a文件存放路径 -- src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径(即在此路径下执行上述命令)。 2.go语言的常用命令这里只介绍三个我们用到的命令 go run 编译并直接运行程序,它会产生一个临时文件(但不会生成 .exe...阅读全文

博文 2019-02-21 15:36:22 wz669

使用 Go 进行单元测试

简介 单元测试 性能测试 性能分析 测试覆盖率 总结 当前部分的代码 简介 日常开发中, 测试是不能缺少的. Go 标准库中有一个叫做 testing 的测试框架, 可以用于单元测试和性能测试. 它是和命令 go test 集成使用的. 测试文件是以后缀 _test.go 命名的, 通常和被测试的文件放在同一个包中. 单元测试 单元测试的格式形如: func TestAbs(t *testing.T) { got := Abs(-1) if got != 1 { t.Errorf("Abs(-1) = %d; want 1", got) } } 复制代码在 util 目录下创建一个文件 util_test.go, 添加一个单元测试: package util import "testing"...阅读全文

博文 2019-11-07 14:04:20 帅气猫咪

Golang学习——interface接口学习(二)

Golang接口断言学习 一.类型断言 二.接口断言 1.if else结构 接口断言2.switch结构 接口断言 在Golang中,空接口 interface{}没有定义任何函数,因此Golang 中所有类型都实现了空接口。当一个函数的形参是interface{},那么在函数中,需要对形参进行断言,从而得到它的真实类型。 一.类型断言 在学习接口断言之前,先了解一下类型断言,其实接口断言也是在判断类型。 类型断言,通过它可以做到以下几件事情: 检查 i 是否为 nil检查 i 存储的值是否为某个类型 通常有两种方式: 第一种: t := i.(T) 复制代码 这个表达式可以断言一个接口对象i里不是 nil,并且接口对象i存储的值的类型是 T,如果断言成功,就会返回值给t,如果断言失败,就...阅读全文

博文 2020-05-07 11:36:19 相守之路

Kubernetes准入控制简单实践

1. 准入控制 一般我们操作Kubernetes资源的流程是如下这样的: API Server认证; API Server鉴权; APT Server实际处理请求并持久化到ETCD; 而准入控制则具有一种能力,它可以在认证、鉴权之后对象被持久化之前对请求进行拦截,只有这些准入控制都通过之后才允许放行请求。截止Kubernetes v1.17版本,它自身已经内置支持很多admission插件,详情可移步Kubernetes内置准入控制器列表,但这些不是笔者在此述说的重点,今天主要谈谈admission插件在实际环境的动态扩展实现:admission webhook。 2. Admission Webhook Admission webhook 是一种用于接收准入请求并对其进行处理的 HTTP ...阅读全文

博文 2020-04-09 18:32:53 VienFu