![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 52
绯浅yousa
欢迎转载。文章偏基础较多---》因为写起来快,但是也会坚持出好文章
展开
-
golang中string和byte[]互相转换
string 不能直接和byte数组转换string可以和byte的切片转换string 转为[]bytevar str string = "test"var data []byte = []byte(str)byte转为stringvar data [10]byte byte[0] = 'T'byte[1] = 'E'var str string = string(dat...原创 2019-07-16 01:09:32 · 3555 阅读 · 0 评论 -
go defer xx.Close()位置问题小记
go defer xx.Close()位置问题小记go代码中经常用到申请资源:譬如tcp连接、譬如mysql的连接池连接等,这种通常会在申请对应资源之后(这里资源用conn表示)使用defer conn.Close()这样在程序退出时进行关闭但是通常申请资源的时候还会带着一个err,形如conn, err := GetConn()defer conn.Close()if err != nil {原创 2017-11-14 15:51:04 · 4491 阅读 · 0 评论 -
golang使用protobuf简易教程
golang使用protobuf简易教程google公司发布的一套开源编码规则,基于二进制流的序列化传输,可以转换成多种编程语言,几乎涵盖了市面上所有的主流编程语言,当然也包括Go1、安装protobuf安装下载protoc,很多种安装方法,下载地址https://github.com/google/protobuf/releases安装下载proto的go插件,命令是go get github原创 2017-11-02 15:08:53 · 15314 阅读 · 0 评论 -
使用go channel实现一个简单的信号量
使用go channel实现一个简单的信号量 测试环境:mac什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。介绍信号量的话,那么肯定不能不介绍P-V操作原语P-V操作原语P操作原语:semaphore 减1若semap原创 2017-04-26 01:21:26 · 3148 阅读 · 0 评论 -
浅析TCP连接过程中server异常情况处理
#浅析TCP连接过程中server异常处理 基础环境:腾讯云ubuntu虚拟机 前置基础:对TCP连接有一个基本认识,能写进行简单socket编程先简单介绍一下TCP编程流程TCP简易编程流程1.TCP服务器端编程流程如下:创建套接字socket; 绑定套接字bind; 设置套接字为监听模式,进入被动接受连接状态listen; 接受请求,建立连接accpet; 读写数据re原创 2017-04-24 23:59:34 · 5075 阅读 · 0 评论 -
记go和python中的slice一个简单区别
记go和python中的slice区别python中的slice是在原有基础上拷贝一份。go中的slice则是指向生成它的数组/切片,切最长长度不会超限。python举例#数组为1,2,3,4>>> L=[1,2,3,4]#生成一个内容为2,3的切片>>> slice1=L[1:3]>>> print(slice1)[2, 3]#修改其中一个值,查看切片和list的值是否有变化>>>原创 2017-04-16 02:22:12 · 1627 阅读 · 0 评论 -
go提问模板
go提问模板咨询一个人问题如果描述不清晰会让被问的人觉得非常困惑、同时还浪费了很多时间在理解上。为了提升提问的效率,我这里转了一个go邮件列表提问的基本模板,也供自己方便查找基本模板Repro stepsWhat did you expect to see?What did you see instead?What version of Go are you using (go versio原创 2017-03-16 01:25:47 · 634 阅读 · 0 评论 -
461. Hamming Distance leet-code
461. Hamming Distance leet-code题目介绍The Hamming distance between two integers is the number of positions at which the corresponding bits are different.Given two integers x and y, calculate the Hamming d原创 2017-02-03 00:24:54 · 298 阅读 · 0 评论 -
解决升级go版本遇到的Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.问题
推荐两个比较值得参考的go开源项目列表这里主要提供两个链接AWESOME-GOAWESOME-GO,一个很全的go语言框架/库/开源软件合集https://github.com/avelino/awesome-go中文版awesome-go相较于AWESOME-GO,主要优点是:中文相较于AWESOME-GO,虽然项目少,但是每个项目有建议介绍,方便新人快速入门地址:https://link.原创 2017-03-03 00:05:28 · 18331 阅读 · 0 评论 -
go语言获取数组长度
go语言获取数组长度示例package mainimport "fmt"func main() { myArray := [3][4]int{{1,2,3,4},{1,2,3,4},{1,2,3,4}} //打印一维数组长度 fmt.Println(len(myArray)) //打印二维数组长度 fmt.Println(len(myArray[1]))原创 2017-02-06 23:58:13 · 40957 阅读 · 0 评论 -
485. Max Consecutive Ones
485. Max Consecutive OnesGiven a binary array, find the maximum number of consecutive 1s in this array.Example 1: Input: [1,1,0,1,1,1] Output: 3 Explanation: The first two digits or the last three d原创 2017-02-06 23:01:20 · 477 阅读 · 0 评论 -
Go语言中defer的调用顺序简单测试代码
Go语言中defer的调用顺序在阅读Go语言编程的时候,看到了defer该命令该命令是用于注册延时处理,在函数执行到return之前执行相应注册的函数。通常用来释放资源或者进行错误处理例如func test() error { f, err := os.Create("test.txt") if err != nil { return err } defer f.Close(原创 2017-01-16 00:08:07 · 647 阅读 · 0 评论 -
go实现业务回滚(defer妙用之一)
go实现业务回滚(defer妙用之一) 最近在用GO重写本组的OSS系统,需要实现业务的回滚功能(即一个流程中,先与A进行交互,然后再与B进行交互,如果B失败了,回滚与A交互的逻辑这样)。另外,在初始化的时候也经常需要在任何一个模块初始化失败的时候回滚其他模块太长不看版defer是延时调用函数,在函数退出之时会进行调用,而且defer函数的调用顺序也是先调用的后执行,故defer其功能上就比较原创 2017-11-15 17:08:20 · 5811 阅读 · 1 评论 -
Go语言:解决数据库中null值的问题
Go语言:解决数据库中null值的问题 本文主要介绍如何使用go语言database/sql库从数据库中读取null值的问题,以及如何向数据库中插入null值。本文在这里使用的是sql.NullString, sql.NullInt64, sql.NullFloat64等结构体,为了方便书写,它们的泛指我会使用sql.Null***来表示要点从数据库读取可能为null值得值时,可以选择使用s原创 2017-12-12 12:50:38 · 53664 阅读 · 5 评论 -
从nginx热更新聊一聊Golang中的热更新(下)
从nginx热更新聊一聊Golang中的热更新(下)静态语言在服务器编程时都会遇到这样的问题:如何保证已有的连接服务不中断同时又升级版本?在上一篇介绍热升级的时候时候,讲到了通过信号通知nginx进行热升级。我们在这一篇中介绍下平滑重启go http server。目录结构热更新热更新目标:1、正在处理中的连接/服务/请求不能立即中断,需要继续提供服务2、socket对用户来说...原创 2018-11-07 01:09:36 · 7682 阅读 · 3 评论 -
why your golang sucks:每个人都会踩的go的五十个坑(21-30)
why your golang sucks:每个人都会踩的go的五十个坑(21-30) 1.本文是我在翻GO文章时发现的,译者主要完成了1-22条的翻译(有不少问题。),没了后续,本系列文章将会先转载并修订他最初的翻译,然后完成第23-50条的翻译 2.由于本篇文章最初写自2015年,而GO也在这两年间发生了较大变化,以下的50个坑将会重新实验修正,将会与原文稍微有些区别 ...原创 2018-06-24 17:31:21 · 499 阅读 · 1 评论 -
go并发:写一个简单的demo验证++操作符是否是协程安全
最近想用go写一个报文统计功能,所以突发奇想先试一下直接对全局变量++,其是否是协程安全的。既然不明确,而且功能实现不复杂,干脆直接写一段代码验证一下。知行合一。代码如下:package main import ( "fmt" "sync")var gSum int = 0var wg sync.WaitGroupfunc main() { for ...原创 2018-06-08 16:02:49 · 792 阅读 · 0 评论 -
linux设置环境变量GOPATH
vim /etc/profileexport GOROOT=/usr/local/go #设置为go安装的路径,有些安装包会自动设置默认的gorootexport GOPATH=$HOME/gocode #默认安装包的路径export PATH=$PATH:$GOROOT/bin:$GOPATH/binsource /etc/profile...原创 2018-05-28 14:40:52 · 42973 阅读 · 3 评论 -
qcloud apigateway hmac鉴权代码-go语言版本
启动命令编译go build执行./qcloud-apigateway-sign-demo-go成功打印结果x-date: Tue, 15 May 2018 03:48:52 GMTsource: yousalisign: �)��7+�ۖ=����N�sign: 54Qp9aSc5jcrqtuWPYvlGPP/ToE=auth: hmac id="AKIDgz...原创 2018-05-16 15:06:04 · 1154 阅读 · 0 评论 -
Go获取两个时间点时间差
获取当前时间time.Now()两个时间作差,第一个时间是t1,第二个时间是t2,那么时间差是t2.Sub(t1)具体显示时间可以通过Format(time.ANSIC)打印时间格式,以及In接口+Location设置时区例如:TimeLocation, err := time.LoadLocation("Asia/Shanghai")//err处理t1.Now().In(Ti...原创 2018-05-16 15:00:56 · 50421 阅读 · 1 评论 -
go语言代码规范(持续更新)
不能用“以前的代码就这个样子”等理由级别:必须遵循新增加的代码一定要遵守规范 已有的老代码可以视情况不遵守变量、文件目录、包等命名规范级别:必须遵循全局变量:对外暴露的全局变量使用大驼峰,包内使用的全局变量使用小驼峰 局部变量:小驼峰 文件、目录:unix风格,小写字母和下划线_拼接构成 包:全部使用小写字母,不建议下划线;不同功能同一大类别package建议使用多级目...原创 2018-05-09 17:04:56 · 1750 阅读 · 0 评论 -
跨域资源共享CORS学习笔记
跨域资源共享CORS学习笔记1、同源政策含义1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页”同源”。所谓”同源”指的是”三个相同”。协议相同域名相同端口相同举例来说,http://www.example.com/dir/page.html这个网址,协议是http://,域名是原创 2017-12-19 12:34:56 · 8173 阅读 · 0 评论 -
Why your golang sucks:每个人都会踩的GO的五十个坑 (11-20)
Why your golang sucks:每个人都会踩的GO的五十个坑 (11-20) 本文翻译自 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs Go语言是一个简单却蕴含深意的语言。但是,即便号称是最简单的C语言,都能总结出一本《C陷阱与缺陷》,更何况Go语言呢。Go语言中的许多坑其实原创 2018-01-02 12:06:28 · 725 阅读 · 0 评论 -
Why your golang sucks:每个人都会踩的GO的五十个坑 (1-10)
Why your golang sucks:每个人都会踩的GO的五十个坑 (1-10) 1.本文是我在翻GO文章时发现的,译者主要完成了1-22条的翻译(有不少问题。),没了后续,本系列文章将会先转载并修订他最初的翻译,然后完成第23-50条的翻译 2.由于本篇文章最初写自2015年,而GO也在这两年间发生了较大变化,以下的50个坑将会重新实验修正,将会与原文稍微有些区别 3原创 2017-12-24 20:08:30 · 1012 阅读 · 0 评论 -
453. Minimum Moves to Equal Array Elements
453. Minimum Moves to Equal Array ElementsQuesetion:Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n原创 2016-11-22 00:26:27 · 535 阅读 · 0 评论 -
go语言位操作
go语言位操作基本操作取反^ 单目运算符异或^ 双目运算符左移<<右移>>示例代码package mainimport ( "fmt")// 获取0-n之间的所有偶数func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样原创 2016-11-18 00:21:13 · 971 阅读 · 0 评论 -
使用select完成goroutine中超时功能
使用select完成goroutine中超时功能虽然携程是go语言中一个新的概念,嗯,但它本质上依然是属于多线程。超时机制是多线程中是一个非常重要的保障程序的鲁棒性的一个措施;错误是很难预估的,在多线程中更为显著,更容易出现难以预料的错误。一个异常场景在go语言中使用channel时需要小心,比如这个用法i := <-ch不出问题的话这个是一个很简单的,从ch中读取数据到i中。但如果ch一直没有人往原创 2016-10-29 00:40:44 · 2440 阅读 · 0 评论 -
go的语言特性总结
Go的语言特性总结 写在前面: 近来关于对Golang的讨论有很多,七牛的几个大牛们也断定Go语言在未来将会快速发展,并且很可能会取代Java成为互联网时代最受欢迎的编程语言。Go语言是google推出的编程语言,在已经成功的给世人创造了改变人们生活的操作系统之后,google似乎感觉有必要再为世人带来一款强大的编程语言,而Go语言依靠自己众多友好的特性也不负众望正在被开发者接触,我有幸转载 2016-03-13 21:36:58 · 990 阅读 · 0 评论 -
go源码阅读笔记(math.4)
go源码阅读笔记(math.4) 参考godoc APIAPI列表func NaN() float64函数返回一个IEEE 754“这不是一个数字”值。func IsNaN(f float64) (is bool)判断f是否是NaN值func Inf(sign int) float64如果sign>=0返回正无穷大,否则返回负无穷大func IsInf(f float64, sign int)原创 2016-04-04 23:44:51 · 1193 阅读 · 0 评论 -
go使用时间作为种子生成随机数
go使用时间作为种子生成随机数设置时间种子使用time包 生成随机数需要math/rand包 打印输出使用fmt包不设置时间种子的话,每次生成的rand值相同package mainimport "fmt"import "math/rand"import "time"func Generate_Randnum() int{ rand.Seed(time.Now().Unix())原创 2016-03-11 00:01:24 · 7294 阅读 · 0 评论 -
go简易tcp socket客户端和服务器
go简易tcp socket客户端和服务器1.Socket编程以前使用Socket编程时,一般是如下步骤建立socket,socket绑定socket,bind监听,listen接受连接,accept接受/发送,recv/sendgo tcp版真的很省事 服务端:就是Listen、Accept、Read/Write 客户端就是Dial、Read/Write直接上代码2.Ser原创 2016-04-02 02:02:53 · 11495 阅读 · 0 评论 -
go简易udp客户端和服务器
go简易udp socket客户端和服务器1.Socket编程以前使用Socket编程时,一般是如下步骤建立socket,socket绑定socket,bind监听,listen接受连接,accept接受/发送,recv/sendGo语言对其进行了抽象和封装,刚开始接触有可能不太适应(譬如我第一天用的时候觉得API好难找……建议参考文档),后来发现用起来很爽简单来说,客户端省去了很多!客原创 2016-04-01 00:48:55 · 17827 阅读 · 1 评论 -
go语言开启本地帮助文档
GO语言开启本地帮助文档cmd模式下:godoc -http=:8090然后访问:http://localhost:8090即可 参考go文档……另外8090可以替换成别的数。。。主要是查询api太痛苦了。然后点开Package就可以离线查看api另外推荐中文api地址http://studygolang.com/pkgdoc原创 2016-03-31 20:24:00 · 2415 阅读 · 0 评论 -
go源代码根目录结构
go源代码根目录结构|– AUTHORS — 文件,官方 Go语言作者列表|– CONTRIBUTORS — 文件,第三方贡献者列表|– LICENSE — 文件,Go语言发布授权协议|– PATENTS — 文件,专利|– README — 文件,README文件,大家懂的。提一下,经常有人说:Go官网打不开啊,怎么办?其实,在README中说到了这个。该文件还提到,如果通过二进制安装,需要设置G原创 2016-03-19 00:53:03 · 2458 阅读 · 0 评论 -
go源码阅读笔记(math.3)
go源码阅读笔记(math.3)dim.gopackage math// Dim returns the maximum of x-y or 0.//// Special cases are:// Dim(+Inf, +Inf) = NaN// Dim(-Inf, -Inf) = NaN// Dim(x, NaN) = Dim(NaN, x) = NaNfunc Dim(x, y原创 2016-03-18 15:02:33 · 898 阅读 · 0 评论 -
推荐一个go语言笔记
推荐一个Go语言笔记github.com/qyuhen/book原创 2016-03-18 11:58:46 · 570 阅读 · 0 评论 -
go源码阅读笔记(unsafe)
go源码阅读笔记(unsafe) unsafe 包主要是可以使得用户绕过go的类型规范检查,能够对指针以及其指向的区域进行读写操作。package mathimport "unsafe"// Float32bits returns the IEEE 754 binary representation of f.func Float32bits(f float32) uint32 { retu原创 2016-03-17 23:39:35 · 780 阅读 · 0 评论 -
go源码阅读笔记(math.2)
go源码阅读笔记(math.2)浮点数与整形数转换math/unsafe.go在阅读math代码的时候,发现Float64bits以及Float64frombits使用非常多,先查看一下这两个函数是做什么用的package mathimport "unsafe"// Float32bits returns the IEEE 754 binary representation of f.func F原创 2016-03-16 23:23:02 · 859 阅读 · 0 评论 -
leetcode: 231.Power of Two(另一种特殊求法)
231. Power of Two(另一种特殊求法)Given an integer, write a function to determine if it is a power of two.这里个人想到三种解法第一种一种是求这个数的以2为底的对数,然后取整数部分,作2的乘方,看是否相等class Solution(object): def isPowerOfTwo(self, n):原创 2016-04-06 23:12:15 · 400 阅读 · 0 评论 -
leetcode-292.Nim Game
leetcode-292.Nim GameYou are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the la原创 2016-03-25 12:14:11 · 391 阅读 · 0 评论