自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 PostGis服务器性能优化(一)

PostGIS性能优化

2022-11-24 00:00:00 465

原创 gRPC在Go中的使用

gRPC在go中的简单使用

2022-11-23 17:55:20 522 2

原创 Go删除切片元素的另一种姿势

首先整理一下删除切片的常用方法现在有一个切片sliceslice = append(slice[:n]:slice[n+1])slice = slice[1:]等等本文针对一个特殊场景:现有切片A,B,切片B中的部分元素是切片A的子集,求A删除B中子集后的部分先上常规思路代码:for k, v := range A { for _, m := range B { if v == m { switch k { case 1: A =

2022-03-11 11:01:21 665

原创 pprof实战-内存泄漏

场景在一台服务器中运行了多个服务,在运行一段时间后(不足一天),发现某个进程占用了50%以上的内存资源,导致服务器异常解决方案首先在代码中开启pprof性能分析runtime.SetBlockProfileRate(1) go func() { log.Println(http.ListenAndServe(":9080", nil)) }()采用在web界面查看的方式,此处监听9080端口打开浏览器访问web页面:http://ip:1080/debug/pprof/访问/debu

2022-02-23 16:13:39 3225

原创 使用Go Modules引入本地包

gomod用来对包进行管理,在Gov1.13默认开启。module testgo 1.16require ( github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/go-ini/ini v1.63.2 github.com/gogf/gf v1.16.2 github.com/gogf/guuid v1.0.0 github.com/golang/protobuf v1.5.2 // indirect github.com

2022-02-23 10:36:26 1476

原创 pprof 性能分析

pprof 是一个强大的性能分析工具,可以捕捉到多维度的运行状态的数据,在程序运行过程中可以获取cpu、heap、block、traces等执行信息一般情况下使用下列三种pprof分析runtime/pprof:采集程序(非 Server)的运行数据进行分析net/http/pprof:采集 HTTP Server 的运行时数据进行分析runtime/trace:采集Go程序运行中的所有的运行时事件通常使用pprof做的事情CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器

2021-08-30 16:17:03 1314 11

原创 postgre 的一个小坑(GoFrame)

在使用GF(GoFrame,以下均简称GF)对postgres数据库进行CRUD时,会出现键位不存在的报错,在经过检查后发现,表中确实有这个键位,这是怎么回事呢?解决方案在postgres进行表设计时,key需要小写,如果使用与Go一样的驼峰命名,即包含了大写,则需在查询的时候给key带上" ",即双引号GF生成的dao给我们得数据库操作带来了简便,同时对不同的数据库的支持情况却又不一样,例如在Insert()返回的结果中LastInsertId(),RowsAffected()方法是不支持po

2021-05-29 14:20:57 629

原创 Go time与string的相爱相杀

time包与string包可以说是在Go语言的开发中常用的两个包实际开发过程中(例如web开发)经常会遇到time类型与string类型的交互,计算比较等场景首先来了解GO语言里非常浪漫的一个点,即2006-01-02 15:04:05,GO语言诞生的时间,通常用来做时间的格式化time转stringt := time.Now() //当前时间timeLayoutStr := "2006-01-02 15:04:05"t.Format(timeLayoutStr) //返回值为string

2021-05-29 10:57:13 1669 4

原创 Golang在windows与linux的部分区别

文章目录前言一、Golang为什么分不同的操作系统版本?二、包1.syscall2.runtime解决方案总结前言Golang语言包下载分为windows,linux和MAC,在平常的使用中并没有什么问题,但是在交叉编译场景的发生,却有不得不注意的问题一、Golang为什么分不同的操作系统版本?在linux中,一切皆文件,内核不同,Linux操作系统使用Linux内核,Windows操作系统使用NT内核;Linux内核代码开源,NT内核代码闭源,在针对读取操作系统本身信息的Go语言包,便有了不

2021-05-21 14:58:24 2706

原创 GoFrame避坑之dao.DB.ALL()

这里使用的数据库是postgres在使用GoFrame对数据库进行操作时,例如dao.Space.Where(dao.Space.Columns.ProjectId,res.ProjectId).All()即查询ProjectId字段值为res.ProjectId的所有值,返回一个数组当该表存在bool类型的值时,偶尔会发现,无论我们数据库里存的是什么,取出来都是true解决方法1使用dao.DBname.Where(****).M.ALL()方法进行查询,该方法会返回一个Result []R

2021-05-19 14:12:06 644 2

原创 time.Alfter的坑

作为超时机制的首选,time.Alfter的使用非常的简单select { case <-chanan: fmt.Println("now!!!") return case <-time.After(time.Duration(3 * time.Second)): fmt.Println("timeout!!!") return }但是!!!!!!!Timer 不会被 GC 回收直到它被触发,如果需要考虑效率的话,Timer 不再被需要时,需要主动调用 Timer.

2021-04-20 17:02:40 97

原创 GoFrame初使用分享

GoFrame使用经验浅谈GoFrame,既是一款优秀的开发框架,也是一套高质量的基础组件集,这一切都是若干年日积月累的沉淀成果,难以一蹴而就,这也是其他 Golang "框架"和"类库"难以企及和比拟的。由于初次使用GoFrame(以下简称GF)主要是用于方便操作数据库(这里使用的是postgres)所以主要聊聊关于数据库中GF的一些简单用法,后续随着使用的深入,也会不断的更新工具安装使用方式:./gf install该命令往往是在gf命令行工具下载到本地后执行(注意执行权限),用于将gf命

2021-04-20 16:44:13 1591

原创 go: missing function body,syntax error: unexpected semicolon or newline before {

这其实是一个新手常犯的错误这与日常代码规范有关。例如:func main(){test()}将其改为:func main() {test()}即可

2020-06-20 15:39:19 2146

翻译 wayland简介

WaylandWayland旨在作为X的更简单的替代品,更易于开发和维护。Wayland复用了所有Linux内核的图形、输入输出技术:KMS、evdev,因此已支持的驱动可以直接拿来用。Wayland没有传统的Server/Client的模式,取而代之的是:Compositor/ClientWayland是供合成器与其客户对话的协议,以及该协议的C库实现Wayland合成器可以是在Linux内核模式设置和evdev输入设备上运行的独立显示服务器了解wayland之前需要先了解X

2020-06-20 15:20:23 1728

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除