8 90Runner

尚未进行身份认证

工作了3年最近学习Python与Go希望有进一步的成长

等级
TA的排名 11w+

Go 1.9 之后的sync包

sync.Mapgo 1.9之后加入了线程安全的map,sync.Map。 源码中的注释为我们说明了sync.Map,是一个并发的map,恒定时间调用loads、stores、deletes。同时被多个goroutines调用是安全的。 在使用时不允许分享这些属性,它可能导致更坏的性能与更坏的安全性,相比较于使用一个普通的map与读写锁配合使用。 零map是有效的并且是空的。 在使用之...

2018-03-22 17:13:44

深入了解 Go 方法

转:http://www.songjiayang.com/posts/shen-ru-liao-jie-go-yu-yan-de-fang-fa方法主要源于 OOP 语言,在传统面向对象语言中 (例如 C++), 我们会用一个“类”来封装属于自己的数据和函数,这些函数就叫做方法。虽然 Go 不是经典意义上的面向对象语言,但是我们也可以在一些接收者(例如自定义类型,结构体)上定义函数,同理这...

2018-02-28 10:28:42

HTTP 状态码

一些常见的状态码为:200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。代码 说明 100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。2xx (成功

2018-01-31 20:16:18

OpenShift 常用命令

前言:本篇博客,为自己的记录。 1. 登录:oc login 2. 创建一个新项目:oc new-project ProjectName 创建一个项目(ProjectName新建的项目名) 3. 查看当前项目下的pod: oc get pod 4. 查看project: oc get project 5. 进入一个project: oc project projectname 6. bu

2018-01-31 20:14:47

Go Context包使用

前言做为go的使用者,大家应该都多多少少的见过Context包。可是因为我得懒惰都没有跳转进去好好看看,导致我对Context包理解并不深。写博客是一个很好的方式提醒自己不要懒惰,而且还能当成自己的笔记,平时翻一翻加深下记忆。Context使用场景目前总结两种使用场景: 1. 主动停止groutine 2. 传递数据Context是什么?Context直译为上下文,我们来看

2017-12-11 18:39:22

apache ab压测与参数传递

前言入职了新公司配置了mac办公,当要进行测试时同事说到用ab测试,当时的我一脸懵逼ab是个啥?当他为我解释完ab是个啥的时候,我想那就动手装一个吧,结果人家说mac下已经装好了,再一次被打脸…. 下面我们进入正题,再网上搜了很多资料大部分都是介绍了一些安装及无参数的测试,对需要传参测试的并不太适用,本篇文章是对网上文章的一些总结,测试均采用自己的例子。压测相关概念吞吐率(Requests pe

2017-11-14 15:32:42

Go类型转换 实现

前言近日在查看博客的时候发现阅读量最多的是我转载的一片文章“Go语言类型转换”,看来像是go语言这种强类型的语言还是有很多人有需求要对go语言中变量进行类型转换。 在平时的工作中也用到了一些将当前时间转换的问题也一并写在了里面,希望对观看者有帮助。已经将代码上传到GitHub上,名字不太好,暂时还没有改名,各位想要使用可以直接下载或者拷贝出源码使用。 下载地址。简介转换代码主要包含时间的转换、b

2017-10-12 22:35:54

golang interface理解

最早对interface的认知比较片面,很多人都说interface与channel是go语言的灵魂。然而在工作中使用的机会比较少,发现自己对interface的理解太片面。下面就记录并总结下go中的interface。interface是个啥go程序设计中是这样解释的“接口是一种抽象类型,他并没有暴露所包含数据的布局或者内部结构,当然也没有那些数据的基本操作,它所提供的仅仅是一些方法

2017-09-27 17:54:31

CentOS 7下安装nsq

CentOS 7安装nsqnsq简介NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征依赖nsq使用go语言编写,所以我们要安装go的环境。网上有说要去1.4版本以上,还有说要求是1.6版本以上。我就索性安装了1.8的版本。Go环境安装go环境中文版下载地

2017-08-09 16:00:55

Go net/rpc 包总结

RPCrpc远程过程调用,go net/rpc包提供了通过网络访问一个对象的方法的能力。服务器需要注册对象, 通过对象的类型名暴露这个服务。注册后这个对象的输出方法就可以远程调用,这个库封装了底层传输的细节,包括序列化。服务器可以注册多个不同类型的对象,但是注册相同类型的多个对象的时候回出错。 通过阅读net/rpc包你可以学到互斥锁、goroutine、map、channel、interface

2017-07-02 17:29:01

Go net/PRC源码阅读server.go

Server端本篇文章主要是在Go net/rpc 的server.go包进行翻译,并添加注释之后会对client以及server进行总结,废话不多说 直接贴代码了。有不正确的地方还请多多指正。package rpcimport ( "bufio" "encoding/gob" "errors" "io" "log" "net" "net/ht

2017-07-02 16:25:30

Go net/PRC源码阅读client.go

Client端本篇文章主要是在go net/rpc 的client.go包进行翻译,并添加注释之后会对client以及server进行总结,废话不多说 直接贴代码了。有不正确的地方还请多多指正。package rpcimport ( "bufio" "encoding/gob" "errors" "io" "log" "net" "net/h

2017-07-02 16:14:33

Go缓存库cache2go源码阅读

项目地址:https://github.com/muesli/cache2go/blob/master/README.md项目介绍cache2go: 一个并发安全,具有心跳功能的缓存库。核心功能只有3个文件。从中可以学习到,go语言中的锁、goroutine、map操作等。 主要特性如下: 1. 并发安全 2. 可设置缓存项的生命周期 3. 可设置缓存清理周期 4. 包含缓存增加、删除的

2017-06-06 16:20:07

golang Glide 包管理windows下使用

安装安装这里就不相信的介绍了,我是参考了如下两篇文档 https://segmentfault.com/a/1190000005929355 http://studygolang.com/articles/7129 这里需要说明的是,大部分介绍gilde的文章都是在Linux下安装,在windows执行相关命令是不能执行的。 我这里只是go get github.com/Mastermind

2017-06-02 11:26:12

golang使用gRPC创建双向流模式

gRPC库介绍gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。 gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。 客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的T

2017-05-03 14:31:06

Go语言类型转换

本文转自Golove博客:http://www.cnblogs.com/golove/p/3262925.htmlstrconv 包中的函数和方法atob.goParseBool 将字符串转换为布尔值 它接受真值:1, t, T, TRUE, true, True 它接受假值:0, f, F, FALSE, false, False. 其它任何值都返回一个错误func ParseBool(

2017-04-01 15:11:00

Go 文件读写

看了下go语言的标准库,最开始看了下io库想着看看go语言提供的函数如何实现文件的读写,粗略的看了下就想着使用go语言提供的方法读写文件试下吧。 读文件,示例:package mainimport ( "fmt" "io/ioutil" "os")const ( FILE = "./test.txt")//Read filefunc main(){

2017-03-07 16:40:23

Dockerfile使用

基本结构Dockerfile由一行行命令语句组成,并且支持以‘#’开头的注释行。 Dockerfile的指令是忽略大小写的,建议使用大写,每一行只支持一条指令,每条指令可以携带多个参数。 Dockerfile的指令根据作用可以分为两种,构建指令和设置指令。构建指令用于构建image,其指定的操作不会在运行image的容器上执行;设置指令用于设置image的属性,其指定的操作将在运行image的容

2017-03-03 15:18:12

Go语言-并发

并发的含义并发:逻辑上具备同时处理多个任务的能力 并行:物理上在同意时刻执行多个并发任务 多线程或多进程是并行的基本条件,但是单线程也可用协程做到并发。尽管协程在单个线程上通过主动切换来实现多任务并发。通常情况下,用多进程来实现分布式和负载均衡。用多线程抢夺更多的处理器资源。使用协程来提高处理器时间片利用率。 Go语言创建并发任务只需在函数调用前添加关键字“go”go print

2016-12-06 22:32:33

Go语言-接口

接口(interface)的定义接口代表一种调用契约,是多个方法声明的集合。接口要实现的是做什么,而不关心如何做。接口最常见的使用场景是对包外提供访问,或预留扩展空间。 Go语言接口实现机制很简洁,只要目标类型方法集内包含接口声明的全部方法,就被视为实现了该接口,无需做显示声明,当然目标类型可实现多个接口。 其实接口也是一中结构,只是编译器会对其做出很多限制: - 不能有字段 - 不能

2016-11-24 22:32:53

查看更多

勋章 我的勋章
    暂无奖章