Go语言字符串高效拼接的实现
+号拼接
这种拼接最简单,也最容易被我们使用,因为它是不限编程语言的,比如Go语言有,Java也有,它们是+号运算符,在运行时计算的。var s strings+="昵称"+":"+"志强1224"+"\n"s+="联...
+号拼接
这种拼接最简单,也最容易被我们使用,因为它是不限编程语言的,比如Go语言有,Java也有,它们是+号运算符,在运行时计算的。var s strings+="昵称"+":"+"志强1224"+"\n"s+="联...
Go语言最大的特色就是从语言层面支持并发(Goroutine),Goroutine是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Goroutine。当程序启动时,它会自动创建。为了...
概念介绍数组与切片数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。数组长度最大为2Gb,它是值类型。切片是对数组一个连续片段的引用,所以切片是一个引用类型。...
网上找的协程安全的map都是用互斥锁或者读写锁实现的,这里用单个协程来实现下,即所有的增删查改操作都集成到一个goroutine中,这样肯定不会出现多线程并发访问的问题。基本思路...
虽然Golang的GC自打一开始,就被人所诟病,但是经过这么多年的发展,Golang的GC已经改善了非常多,变得非常优秀了。以下是Golang GC算法的里程碑: v1.1 STW v1.3 Mark STW, Sweep...
编程语言中反射的概念
在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(exam...
golang的defer优雅又简洁, 是golang的亮点之一。defer在声明时不会立即执行,而是在函数return后,再按照先进后出的原则依次执行每个defer,一般用于释放资源、清理数据、记录日志...
最近闲来无事, 于是就简单学习了下Go语言的基本的用法。由于实践才是最快的学习方法,所以这里就以下载网络图片或文件入手来学习Go语言
文件下载到本地,通常的思路就是先获得网...
在 Golang 里, _ (下划线)是个特殊的标识符。前几天看 gin 源码,看到一个有意思的用法。虽然网上的总结博客已有很多,但是总是有点欠缺,于是就有了这一篇,方便以后查阅。用在 impor...
一般一个业务很少不用到goroutine的,因为很多方法是需要等待的,例如http.Server.ListenAndServe这个就是等待的,除非关闭了Server或Listener,否则是不会返回的。除非是一个API服...
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12...
发现问题在golang中,对文件进行写操作时出现上面的错误。首先复现下这个问题。package mainimport ( "os" "fmt")func main() { file, err := os.Open("a.txt") if err != ni...
由于公司经常需要异地办公,在调试的时候需要用到内网环境,因此手动写了个代理转发服务器給兄弟们用:socks5proxy。选型上,语言上就选择了Go,简单清晰,转发协议选择了socks5。SOCKS...
关键字range可用于循环,类似迭代器操作,它可以遍历slice,array,string,map和channel,然后返回索引或值。可以使用”_”来忽略不想要的返回值。可以方便的读取上面类型中的内容,...
前言Golang官方并没有提供数据库驱动,但通过database/sql/driver包来提供了实现驱动的标准接口。可以在Github上找到很多开源的驱动。
其中go-sql-driver/mysql是一个比较推...
涉及概念 并发安全Map 分段锁 sync.Map CAS ( Compare And Swap ) 双检查分断锁type SimpleCache struct { mu sync.RWMutex items map[interface{}]*simpleItem}在...
前言字符串是 Go 语言中最常用的基础数据类型之一,虽然字符串往往都被看做是一个整体,但是实际上字符串是一片连续的内存空间,我们也可以将它理解成一个由字符组成的数组,Go 语...
从一个例子说起我们经常会碰到下面格式的struct定义:type Person struct { Name string `json:"name"` Age int `json:"age"`}这个struct定义一个叫做Person的类型,包含两...
最近遇到了一个问题。我们的kube-apiserver配置了OIDC认证,OIDC issuer是添加了dns server记录的,但由于某些原因,我需要覆盖掉dns server的解析,改用hostAlias的IP地址,但是实测...
LRU缓存淘汰算法
LRU是最近最少使用策略的缩写,是根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。双向链表实现LRU...
goroutine简介goroutine是go语言中最为NB的设计,也是其魅力所在,goroutine的本质是协程,是实现并行计算的核心。goroutine使用方式非常的简单,只需使用go关键字即可启动一个协程...
GO1.7之后,新增了context.Context这个package,实现goroutine的管理。Context基本的用法参考GOLANG使用Context管理关联goroutine。实际上,Context还有个非常重要的作用,就是设置...
前端通过Ajax来获取服务器资源时,会存在跨域问题。因为Ajax只能同源使用(预防某些恶意行为),所以当访问不在同一个域中的资源时,就会出现跨域限制。尤其在开发和测试时,跨域问题会...
文件目录的创建和删除
package mainimport( "fmt" "os")func main(){ //创建目录和权限 os.Mkdir("./benben",0777) //创建多级目录和设置权限 os.MkdirAll("./benben/test"...
Golang 推荐的命名规范
很少见人总结一些命名规范,也可能是笔者孤陋寡闻, 作为一个两年的golang 开发者, 我根据很多知名的项目,如 moby, kubernetess 等总结了一些常见的命名规...
前言在日常使用的Mongodb中,有一项功能叫做模糊查询(使用正则匹配),例如:db.article.find({"title": {$regex: /a/, $options: "im"}})这是我们常用Mongodb的命令行使用的方式,但...
前言
GO语言在WEB开发领域中的使用越来越广泛,Hired 发布的《2019 软件工程师状态》报告中指出,具有 Go 经验的候选人是迄今为止最具吸引力的。平均每位求职者会收到9 份面试...
golang 的日期时间包:time 的使用方式。 time package 包含了 time.Time 时间对象 及 构建此时间对象的一些方法(time.Unix(), time.Parse()) golang 可精确到 nanosecond,...
前缀和后缀HasPrefix判断字符串s是否以prefix开头:
strings.HaxPrefix(s string, prefix string) bool示例:
package mainimport ( "fmt" "strings")func main() { pre :...
前言
前几话主要讲解关于使用golang进行单元测试,在单元测试的上一层就是接口测试,本节主要讲使用golang进行接口测试,其中主要以http协议的接口测试来讲解
golang中的http请求...
下面一个客户端代码例子访问kafka服务器,来发送和接受消息。使用方式1、命令行参数
$ ./kafkaclient -hUsage of ./client: -ca string CA Certificate (default "ca.pem")...
在使用 go 语言开发过程中,经常需要使用到 json 包来进行 json 和 struct 的互相转换,在使用过程中,遇到了一些需要额外注意的地方,记录如下。整数变浮点数问题假设有一个 Perso...
之前有聊过 golang 的协程,我发觉似乎还很理论,特别是在并发安全上,所以特结合网上的一些例子,来试验下go routine中 的 channel, select, context 的妙用。场景-微服务调用
我...
反射是 Go 语言的高级主题之一。我会尽可能让它变得简单易懂。本教程分为如下小节。 什么是反射? 为何需要检查变量,确定变量的类型? reflect 包 reflect.Type 和 refl...
前言在Golang中使用 for range 语句进行迭代非常的便捷,但在涉及到指针时就得小心一点了。下面的代码中定义了一个元素类型为 *int 的通道 ch :
package mainimport ( "fmt")...
前言bufio包实现了带缓冲的I/O,它封装了io.Reader和io.Writer对象,然后创建了另外一种对象(Reader或Writer)实现了相同的接口,但是增加了缓冲功能。
首先来看没有缓冲功能的Writ...
在Golang多协程的情况下使用全局map时,如果不做线程同步,会出现panic的情况。
为了解决这个问题,通常有两种方式: 第一种是最常见的使用互斥锁或者读写锁的方法; 第二种是比较...
如下所示:import ( "golang.org/x/net/html")在使用此包时,会导入失败,因为这不是go标准库中,但是由于域名被墙了所以翻墙可以下载此包,放入你的GOPATH路径下的 “golang.org/x/...
go的各种import最简单的:package main import "fmt"func main() { fmt.Println("hehe") // ok}不用说。导入的特殊用法那么, 带一个点, 是什么意思呢? 看看:package main...
之前已经go get安装了gin, 现在来玩下用go gin server作图片上传服务, 代码目录如下:taoge:~/test_gin$ tree.|-- public|-- template| `-- select_file.html`-- test_gin_se...
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf定义示例类型和变量type Human struct {Name string}var people = Human{Name:"zhangsan"}普通占位符占位符...
Golang 错误处理最让人头疼的问题就是代码里充斥着「if err != nil」,它们破坏了代码的可读性,本文收集了几个例子,让大家明白如何优化此类问题。让我们看看 Errors are values...
从字符串载入模板
我们可以定义模板字符串,然后载入并解析渲染:template.New(tplName string).Parse(tpl string)// 从字符串模板构建tplStr := ` {{ .Name }} {{ .Age }}`//...
本文实例讲述了Go语言集成mysql驱动、调用数据库、查询数据操作。分享给大家供大家参考,具体如下:1、安装第三方mysql驱动包go get -u github.com/go-sql-driver/mysql2、连接...
看完golang的基本语法后,为了模块化编程,试用了下golang的包管理,结果真踩了几个坑,总结一下吧。一. 设置$GOPATH环境变量golang和C或php不一样,不会自动查找当前路径下的文件,必...
go module的使用非常简单初始化go.modgo mod init整理依赖包go mod tidy如果想缓存到vendor目录go mod vendor执行命令之后都会自动把依赖搞定.
但是, 如果我们是本地开发...
使用go语言读取文件的各种方式整理。一次性加载到内存中// * 整个文件读到内存,适用于文件较小的情况//每次读取固定字节//问题容易出现乱码,因为中文和中文符号不占一个字符f...
在我们编程过程中,经常会用到与时间相关的各种务需求,下面来介绍 golang 中有关时间的一些基本用法,我们从 time 的几种 type 来开始介绍。时间可分为时间点与时间段,golang 也...
Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错误,与 error 不同,panic-recover 一般用在函数内部。一定要注意不要滥用 panic-recover,可能会...
GoLang调试工具Delve1.先获取呗:go get -u github.com/derekparker/delve/cmd/dlv2.编写测试代码呗:func main(){ http.HandleFunc("/test",func(writer http.ResponseWrite...