kafka基础和使用

kafka基础kafka是一个开源的流处理平台,主要用于构建实时数据管道和流应用。它最初由LinkedIn开发,并在2011年成为Apache软件基金会的顶级项目。kafka架构kafka架构由存储层和计算层组成,如下图所示:存储层旨在高效存储数据,并且是一个分布式系统,因此如果您的存储需求随着时间的推移而增长,您可以轻松扩展系统以适应增长。计算层由生产者、消费者、流和连接器API四个核心组件组成,它们允许kafka跨分布式系统扩展应用程序。

继续阅读 »

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

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

继续阅读 »

sponge —— 一个强大的go开发框架,以"低代码"方式构建高质量项目

sponge介绍sponge是一个强大的Go开发框架,其核心理念是通过解析JSON、SQL或Protobuf文件逆向生成模块化的代码,这些代码可以灵活、无缝地组合成多种类型的完整后端服务(类似海绵细胞的特性,打散的海绵细胞能自动重新组合成新的海绵)。sponge提供一站式项目开发解决方案,涵盖代码生成、开发、测试、API文档生成和部署,大幅提升开发效率,降低开发难度,实现以”低代码”方式构建高质量项目。github地址:h[...]

继续阅读 »

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[...]

继续阅读 »