使用开发框架sponge一天多开发完成一个简单版社区后端服务

community-single介绍community-single是一个极简版社区的后端服务,主要包括用户的注册、登录、关注等功能,创作内容(文本、图片、视频)的发布、评论、点赞、收藏等功能,这些功能在各个社区平台、视频平台、直播平台等都比较常见,可以作为学习参考用,点击查看完整的项目代码。community-single项目一开始设计为单体web服务,整个服务由生成代码工具sponge辅助完[...]

继续阅读 »

一个提高开发项目效率的开发框架sponge,支持mysql、mongodb、postgresql、tidb、sqlite

sponge介绍sponge是一个集成了 自动生成代码、Gin和GRPC 的基础开发框架。sponge拥有丰富的生成代码命令,生成不同的功能代码可以组合成完整的服务(类似人为打散的海绵细胞可以自动重组成一个新的海绵)。代码解耦模块化设计,很容易构建出从开发到部署的完整工程项目,只需在生成的模板代码上填充业务逻辑代码,极大的提高了开发效率和降低了开发难度。github地址:https://github.com/zhufuyi/sponge主要特性spon[...]

继续阅读 »

go test命令

gotest命令只运行单元测试,添加-bench=.参数,gotest同时执行单元测试和基准测试,当然可以通过正则过滤只运行基准测试,例如-bench=^Benchmark。添加-conver参数展示测试覆盖率。测试代码测试5种字符串拼接效果,共两个文件splice.go和splice_test.gosplice.go文件内容如下:packagespliceimport("bytes""fmt""strings[...]

继续阅读 »

go应用程序性能分析

1介绍pprof是一个可视化和分析数据的工具,pprof读取profile.proto格式的分析样本集合并生成报告以可视化和帮助分析数据,它可以生成文本和图形报告,是用来分析应用程序的性能重要工具,也可以作为其他用途,例如查看反汇编、和Linuxperf工具结合使用。2安装golang本身自带pprof工具,pprof可视化时需要依赖[...]

继续阅读 »

channel原理和应用

channel是一个数据管道,是goroutine之间数据通信桥梁,是线程安全的。channel分为有缓冲和无缓冲两种类型,其实无缓冲类型可以理解为有缓冲的一种特殊情况。1channel工作原理源码go/src/runtime/chan.gotypehchanstruct{qcountuint//当前队列中剩余元素个数dataqsizuint//环形队列长度,即缓冲区的大小,即make(chanT,N),N.bufunsafe.Pointer//环形队列指针elemsizeuint16//每个[...]

继续阅读 »

go runtime

#runtime#GMP#goroutinego语言组成有两部分,一部分是用户程序代码,一部分是runtime,runtime作用是为了实现额外功能,在程序运行时自动加载/运行的的一些模块,runtime由4部分组成:Scheduler:调度器管理所有的GMP,在后台执行调度循环。MemoryManagement:当代码需要内存时,负责内存分配工作。GarbageCollector:当内存不再需要时,负责回收内存。Netpoll:网络轮询负责管理网络FD相关的读写、就绪事件。调度器Scheduler协程调度器GMP

继续阅读 »

go调试工具

go调试工具1概念Delve是一个用于Go程序的源码级调试器,通过控制程序的执行与你的程序互动,评估变量,并提供线程/goroutine状态、CPU寄存器状态等信息,目标是为调试Go程序提供一个简单而强大的接口。使用方法:dlv[command]可用的命令:attach连接到正在运行的进程并开始调试。connect连接到一个无头调试服务器。core检查一个核心转储。dap[EXPERIMENTAL]启动一个通过DebugAdaptorProtocol(DAP)通信的TCP服务器。debug[...]

继续阅读 »

cobra

1基本概念Cobra是Go的CLI框架,它包含一个用于创建强大的现代CLI应用程序的库和一个用于快速生成基于Cobra的应用程序和命令文件的工具。Cobra基于三个基本概念commands,arguments和flags,其中commands代表行为,arguments代表数值,flags代表对行为的改变,命令使用示例:APPNAMEVERBNOUN--ADJECTIVE#或者APPNAMECOMMANDARG--FLAG#server是commands,port是flaghugoserver--port=1313#clone是comm[...]

继续阅读 »

grpc使用实践

1grpc概述grpc是一个高性能、开源的rpc框架,目前提供了多种语言版本,基于HTTP/2标准设计,拥有双向流、流控、头部压缩、单TCP连接上的多复用请求特性,接口描述语言使用protobuf。在grpc中,一共有四种调用方式:一元RPC(unaryRPC):称为单次RPC,也就是一问一答RPC请求,是最基础最常用的调用方式。服务端流式RPC(Server-sideStreamingRPC):是一个单向流,客户端发起一次普通RPC请求,服务端通过流式返回数据集。客户端流式RPC(Client-sideStrea[...]

继续阅读 »