Golang性能分析与优化

在公司的分享,去除了相关的敏感信息。 (完) 朋友们可以关注下我的公众号,获得最及时的更新:

  • 0
  • 0
  • 阅读 ( 931 )

我的go练手项目--使用go实现“删除sql里面的注释和字符串”功能

项目里面有一个需求,要对sql进行简单的语法分析 为了避免sql里面的字符串和注释对语法分析做干扰,我写了一个java函数,对sql进行修剪,删除里面字符串和注释,用空格代替 周末闲着没事,我用go重新实现了这个功能,感觉应该会有后来人可以用上 说明: sql里面的注释有两种单行注释和多行注释,其中单行注释以--开头,以n结尾,多行注释以/开头,以/结尾 sql字符串是以

  • 0
  • 0
  • 阅读 ( 1261 )

Go 大数据生态迎来重要产品 CDS

项目地址:https://github.com/tal-tech/cds ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它有着优异的性能,可以快速部署和运行。 不过要想使用ClickHouse搭建起数仓用于数据分析,一个重要的问题就是数据如何进入ClickHouse? 我们希望数据源的变化能够自动实时地被同步到ClickHouse,而且支持方便的动态的添加新的数据源(新的数据库,表), 能够自动的生成对应数据源

  • 0
  • 0
  • 阅读 ( 1142 )

合并2个数组为1个无重复元素的有序数组--Go对比Python

Go实现: 1packagemain 2 3import( 4"fmt" 5"sort" 6) 7 8funcmain(){ 9vara=[]int{1,6,45,2,9,15,7} 10varb=[]int{2,80,9,67,52,15,100,99} 11c:=sumArr(a,b) 12fmt.Println("合并后的数组为") 13fmt.Println(c) 14d:=remArr(c) 15fmt.Println("合并、去重后的数组为") 16fmt.Println(d) 17e:=s

  • 0
  • 0
  • 阅读 ( 1056 )

go-zero 如何扛住流量冲击(二)

本篇文章承接上一篇go-zero如何扛住流量冲击(一)。 上一篇介绍的是go-zero中滑动窗口限流,本篇介绍另外一个tokenlimit,令牌桶限流。 使用 const( burst=100 rate=100 seconds=5 ) store:=redis.NewRedis("localhost:6379","node","") fmt.Println(store.Ping()) //NewtokenLimiter limiter:=limit.NewTokenLimiter(rate,bur

  • 0
  • 0
  • 阅读 ( 1299 )

[Go] GO语言实战-使用append函数要重新赋值

使用append函数的时候,要把扩展后的新slice重新赋值给原变量名,因为当底层数组的空间不足的时候,会扩充内存空间,内存空间会重新分配 通常我们并不知道append调用是否导致了内存的重新分配,因此我们也不能确认新的slice和原始的slice是否引用的是相同的底层数组空间。同样,我们不能确认在原先的slice上的操作是否会影响到新的slice。因此,通常是将append返回的结果直接赋值

  • 0
  • 0
  • 阅读 ( 1219 )

[Go]Go语言实战-jwt-go会把存储的数值型转成float64

在jwt-go里存储一个map[string]interface{} 比如info["id"]=10 解析出来的时候info["id"]断言的时候,应该用float64断言,info["id"].(float64) 然后再去强转   Go语言提供了两种精度的浮点数,float32和float64,一般使用float64 float32的有效bit位只有23个,其它的bit位用于指数和符号;当整数大于23bit能表达的范围时,float32的表示将出现误差 当正整数部分超出 16777216时会出错

  • 0
  • 0
  • 阅读 ( 784 )

[Go]GO语言实战-类型声明语句

先来看一下概念: 一个类型声明语句创建了一个新的类型名称,和现有类型具有相同的底层结构。 type类型名字底层类型 gin框架中的实例: typeHmap[string]interface{} 类型声明语句一般出现在包一级,因此如果新创建的类型名字的首字符大写,则在包外部也可以使用。 上面的代码就是在gin包一级,大写的可导出   一个命名的类型可以提供书写方便,特别是可以避免一遍又一遍

  • 0
  • 0
  • 阅读 ( 1288 )

[Go] gin框架中增加pprof分析性能

gofly客服websocket部分存在groutine泄露,在每次连接ws的时候都开启了groutine,但是没有关闭 pprof是go标准库自带的功能,引进去就能分析程序中的性能问题,在gin框架下可以使用第三方的"github.com/gin-contrib/pprof" engine:=gin.Default() //性能监控 pprof.Register(engine) 直接访问url就可以看到了 URL/debug/pprof    可以看到这里有问题     具体功能可以访问下面的开

  • 0
  • 0
  • 阅读 ( 1150 )

go-zero之web框架

go-zero是一个集成了各种工程实践的web和rpc框架,其中rest是web框架模块,基于Go语言原生的http包进行构建,是一个轻量的,高性能的,功能完整的,简单易用的web框架 服务创建 go-zero中创建http服务非常简单,官方推荐使用goctl工具来生成。为了方便演示,这里通过手动创建服务,代码如下 packagemain import( "log" "net/http" "github.com/tal-tech/go-zero/core/logx" "github.com/t

  • 0
  • 0
  • 阅读 ( 1000 )

go-zero 如何扛住流量冲击(一)

不管是在单体服务中还是在微服务中,开发者为前端提供的API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性。即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪。 go-zero集成了开箱即用的限流器。其中内置了两种限流器,也对应两类使用场景: 种类 原理 场景 perio

  • 0
  • 0
  • 阅读 ( 1296 )

Golang 网络编程

目录TCP网络编程UDP网络编程Http网络编程理解函数是一等公民HttpServer源码阅读注册路由启动服务处理请求HttpClient源码阅读DemoCode整理思路重要的struct流程transport.dialConn发送请求 TCP网络编程 存在的问题: 拆包: 对发送端来说应用程序写入的数据远大于socket缓冲区大小,不能一次性将这些数据发送到server端就会出现拆包的情况。 通过网络传输的数据包最大是1500字节,当TCP报文的

  • 0
  • 0
  • 阅读 ( 1180 )

Golang Goland 的安装及激活

前言 前面我们已经将GO的环境安装好了,那么是否可以进行开发了呢? 可以,但是为了能够更高效率的开发,我们还需要下载一个软件,该软件的作用就是方便我们能够快速的编写GO指令,快速的运行我们编写好的GO指令。 这个软件就是GoLand,就像我们要处理文字安装Word,处理表格用Excel等等。 我们把这种用来能够用来快速编写某种语言(GO,Python,JAVA,C#)指令,快速运行,同时

  • 0
  • 0
  • 阅读 ( 1641 )

从别人的代码中学习golang系列--03

这篇博客还是整理从https://github.com/LyricTian/gin-admin这个项目中学习的golang相关知识。 作者在项目中使用了github.com/casbin/casbin进行权限控制的,这个库自己之前也没有用过,正好可以通过这个项目学习一下使用。当然这篇博客并不会对casbin的使用做非常详细的说明,感兴趣的可以去官网看具体的使用文档。 关于casbin 常见访问控制模型 ABAC:基于属性的访问控制。 DAC:自主访问控制

  • 0
  • 0
  • 阅读 ( 1231 )

Golang 安装 Golang

前言 前面已经对GO语言做了一个简单的介绍,相信大家也已经基本有所了解了,那么我相信大家迫不及待的想学习GO语言了,但是我们在具体学习GO语言前,需要先安装GO的开发环境。 所谓的环境安装,就是将GO语言的指令都安装在你的电脑上,那么你在开发软件的时候就可以直接用了。GO环境的安装分为windows系统的安装和linux系统的安装。 下载地址 Go语言官网下载地址:https://go

  • 0
  • 0
  • 阅读 ( 1125 )

Golang Go 语言简介

1.Go语言是什么 “Go是一种开源的程序设计语言,它意在使得人们能够方便地构建简单、可靠、高效率的软件”(来自go官网golang.org) Go语言是Google开发的开源编程语言,于2006年1月2日15点4分5秒诞生,2009年11月开源,2012年发布go稳定版。 go的主要目标是“兼具Python等动态语言的开发速度和C/C++等编译型语言的性能与安全性”。 我们程序员在开发程序,开发软件时都会选择一门

  • 0
  • 0
  • 阅读 ( 1003 )

hasura的golang反向代理

概述 反向代理代码 对请求的处理 对返回值的处理 遇到的问题 概述 一直在寻找一个好用的graphql服务,之前使用比较多的是prisma,但是prisma1很久不再维护了,而prisma2仅仅就是一个ORM,不是一个完备的系统. 后来,朋友介绍了一个graphql引擎hasura,这个是完备的系统, 不仅提供UI来创建数据库和表结构.还有相应的权限控制,也有对接第三方服务的Events,对数据更多控制的Actions. 为了使用其gra

  • 0
  • 0
  • 阅读 ( 1189 )

golang-nsq高性能消息队列

前言 tips:如果本文对你有用,请爱心点个赞,提高排名,让这篇文章帮助更多的人。谢谢大家!比心❤~ 如果解决不了,可以在文末加我微信,进群交流。 NSQ是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。 NSQ具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。 NSQ

  • 0
  • 0
  • 阅读 ( 1078 )

【Go Time】Go语言里的条件语句else、switch

if语句判断 if里的条件可以赋值 if的条件里赋值的变量作用域就在这个if语句里 ifcontents,err:=ioutil.ReadFile(filename);err!=nil{ fmt.Println(err) }else{ fmt.Printf("%sn",contents) } //这里会报错。contents作用域不同 //fmt.Printf("%sn",contents) switch语句 switch语句中,每个case会自动break switch后面可以没有表达式 f

  • 0
  • 0
  • 阅读 ( 858 )