
Go语言实践笔记
文章平均质量分 86
Go语言实践,沉淀,积累,总结。
特立独行的猫a
csdn技术男猫哥,高级嵌入式软件工程师、c++软件工程师、全栈工程师。专注分享c++、QT、嵌入式linux、Android、HarmonyOS、前端小程序、AIoT(物联网+人工智能)、单片机、通信技术、开发工具等相关内容。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
gozero 的 goctl 工具生成 MySQL Model 层代码的两种方式及使用介绍
本文介绍了在Go-zero中使用goctl工具生成MySQL Model层代码的两种方式:通过数据库连接(datasource)和SQL文件(ddl)。详细说明了goctl model mysql datasource命令的参数配置及使用示例,以及如何基于SQL文件生成Model代码。同时展示了如何在项目中配置MySQL连接、注入依赖,并使用生成的Model进行增删改查操作。文章还提到Go-zero原生SQL操作方式,以及结合GORM使用MySQL的额外方案,为开发者提供了灵活选择。通过goctl自动生成代原创 2025-07-05 19:30:00 · 983 阅读 · 0 评论 -
Swagger与go-zero框架生成和展示API文档详解
摘要:go-zero框架的Swagger文档生成功能 go-zero框架通过goctl工具提供强大的Swagger文档生成能力,显著提升API开发效率。Swagger作为行业标准API文档规范(现OpenAPI),具有标准化文档、交互式测试界面和代码生成等优势。在go-zero中,开发者可直接在API文件中定义Swagger元数据,包括接口描述、参数验证规则和响应示例等。通过简单命令goctl api swagger即可自动生成JSON/YAML格式文档,并配合Swagger UI展示。该功能目前处于实验性原创 2025-05-27 00:15:11 · 1334 阅读 · 0 评论 -
使用 Go 语言实现完整且轻量级高性能的 MQTT Broker
本文介绍了使用Go语言实现一个轻量级MQTT Broker的全过程。项目采用模块化设计,完整支持MQTT 3.1.1协议核心特性,包括QoS 0/1/2消息传递、会话管理、保留消息、遗嘱消息和主题通配符等功能。架构上分为TCP连接层、协议解析层、认证模块、存储接口和消息路由等核心组件,提供线程安全的并发处理。项目已开源,包含内存存储实现和Docker支持,可作为物联网消息中间件的轻量级解决方案。通过代码示例展示了存储接口设计、内存存储实现和客户端连接管理等关键技术点。原创 2025-05-24 15:02:17 · 1615 阅读 · 5 评论 -
AI中的MCP是什么?MCP的作用及未来方向预测 (使用go-zero 快速搭建MCP服务器)
MCP(Model Context Protocol)是一种为AI应用设计的开放协议,旨在增强AI模型的自主性和灵活性。通过MCP,AI模型能够在推理过程中主动请求外部数据、调用外部工具,并管理长时间的对话上下文。MCP赋予AI三大核心能力:能力扩展(调用外部系统如搜索引擎、数据库)、实时交互(获取最新数据)、持续对话(上下文感知的沟通)。MCP基于Server-Sent Events (SSE)和JSON-RPC,简化了开发者的接入流程。 MCP的应用场景广泛,包括多智能体协作、任务规划、自主决策和环境感原创 2025-05-12 21:42:12 · 1238 阅读 · 0 评论 -
使用Docker方式一键部署MySQL和Redis数据库详解
数据库是现代应用开发中不可或缺的一部分,MySQL和Redis作为两种广泛使用的数据库系统,分别用于关系型数据库和键值存储。本文旨在通过Docker和Docker Compose的方式,提供一个简洁明了的一键部署方案,确保数据库服务的稳定运行与持久化存储。通过本文,您已经了解了如何利用Docker Compose实现MySQL和Redis的一键部署,包括Docker和Docker Compose的安装、文件的编写以及服务的启动与停止。这种方法不仅简化了数据库服务的配置和管理,还确保了数据的安全性。原创 2025-02-28 22:11:43 · 1310 阅读 · 0 评论 -
Casbin 权限管理介绍及在 Go 语言中的使用入门
请求定义描述了访问请求的结构。最常见的是sub:表示请求发起的主体(通常是用户或服务)。obj:表示请求要访问的对象(比如文件、API 等)。act:表示主体对对象执行的操作(比如读取、写入、删除等)。例如,表示一个请求由发起主体、操作对象和操作类型组成。策略定义描述了权限策略的结构。同样常见的结构是sub:表示策略中的主体。obj:表示策略中的对象。act:表示策略中的操作类型。策略定义与请求定义的结构保持一致,便于匹配。原创 2025-02-19 21:15:00 · 1967 阅读 · 0 评论 -
DeepSeek API 快速接入微信公众号搭建教程
通过以上步骤,我们成功将DeepSeek API接入微信公众号,实现了用户在微信中直接与AI交互的功能。这种方式不仅方便了用户的使用,还避免了安装App的麻烦。DeepSeek API的高效和低成本使得个人开发者也能轻松搭建自己的AI服务。希望本文对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言讨论!原创 2025-02-05 19:41:26 · 20958 阅读 · 1 评论 -
Golang 应用的 Docker 部署方式介绍及使用详解
通过上述步骤,您可以使用 Docker 部署 godco 应用,并确保它能够成功连接到 MongoDB 数据库。使用 Docker 可以简化部署过程,确保在不同环境中的一致性。希望这篇博文能帮助您顺利部署 golang应用。如果您有任何疑问或遇到其他问题,请随时留言提问。原创 2025-02-01 22:30:11 · 1775 阅读 · 0 评论 -
使用 Docker(Podman) 部署 MongoDB 数据库及使用详解
创建一个自定义的 Docker 网络,以便其他容器可以连接到 MongoDB 容器。使用以下命令运行godco-d:后台运行容器。:将容器的 8080 端口映射到主机的 8080 端口。:将主机上的配置文件目录挂载到容器内的/app/etc目录。:将主机上的静态文件目录挂载到容器内的目录。:将容器连接到自定义的dco-net网络。:为容器指定名称。:使用的 Docker 镜像名称。原创 2025-02-01 21:46:15 · 2266 阅读 · 0 评论 -
golang正则表达式的使用及举例
正则表达式很强大,在一些场合如抓包,爬虫等方面很有用。在 Go语言中,正则表达式通过标准库regexp提供支持。使用正则表达式可以进行字符串匹配、替换和分割等操作。原创 2024-10-22 22:47:49 · 807 阅读 · 0 评论 -
go-zero微服务框架的静态文件服务的使用
在go-zero的v1.7.0之前,go-zero微服务框架并未提供对文件服务的直接支持。在gin框架中有专门的服务封装,但在并没有提供。如果想提供静态文件服务怎么办呢?也是可以的,只是稍微麻烦些,需要自己通过集成来实现。原创 2024-07-30 21:45:00 · 2395 阅读 · 1 评论 -
Go-Zero 框架使用 MongoDB,数据采集入库如此简单
以上完成实现了采集知乎日报的新闻列表信息,采集入mongoDB数据库。使用了go-zero 的goctl工具自动生成操作mongoDB的代码,使用了go-zero框架中的部分模块如日志模块,配置文件操作模块、网络访问模块等。可以看到借助goctl自动生成代码,采集数据入mongoDB数据库是多么的简单方便。再次推荐下go-zero这一优秀的微服务框架。原创 2024-07-08 22:01:16 · 1438 阅读 · 0 评论 -
Https网站如何申请免费的SSL证书及操作使用指南
ohttps.com提供了类似于acme.sh的功能,不过提供了友好的管理界面,可申请Let's Encrypt免费通配符类型证书,还提供了证书吊销、到期前提醒、自动更新、自动部署功能。另外比acme.sh增加了一些非常实用的功能,主要包括可自动部署至阿里云、腾讯云、七牛云的负载均衡、内容分发CDN、SSL证书列表等,并可自动部署至多个nginx容器中。原创 2024-07-05 22:45:00 · 14836 阅读 · 0 评论 -
mongosh常用命令详解及如何开启MongoDB身份验证
角色定义了用户可以执行的操作和访问的资源。角色不仅可以是预定义的内置角色,也可以是用户自定义的角色,只要具有相应权限的用户可以创建和分配这些角色。原创 2024-06-21 22:48:57 · 4892 阅读 · 0 评论 -
MongoDB的Go语言操作示例总结
在Go语言中操作MongoDB需要使用官方MongoDB Go驱动程序。以下是一个简单的示例,介绍了如何在Go中进行连接、增、删、改、查等常用操作,以及如何使用聚合管道进行复杂查询。原创 2024-06-21 22:42:54 · 1590 阅读 · 0 评论 -
go-zero使用goctl生成mongodb的操作使用方法
mongodb是一种高性能、开源、文档型的nosql数据库,被广泛应用于web应用、大数据以及云计算领域。在使用MongoDB之前,需要先在您的系统中安装MongoDB。原创 2024-06-20 22:56:03 · 1500 阅读 · 2 评论 -
豆瓣最新能用的api合集总结
豆瓣网(Douban)作为一个集合了书籍、电影、音乐等多个领域的评论和评分平台,提供了丰富的API接口供开发者使用。通过这些API,开发者可以轻松地获取和处理豆瓣网上的各种数据,实现与豆瓣服务的无缝集成。本文将为您介绍最新的豆瓣API合集及其使用方法。接下来将详细介绍每个类别下的重要接口及其使用示例。原创 2024-06-20 21:48:49 · 21906 阅读 · 1 评论 -
go 语言爬虫库goQuery 的详细使用(知乎日报详情页解析示例)
知乎日报这个案例很经典,有比较完整的API,很值得模仿学习。也很简单,唯一需要注意的是日报详情的设计,因为知乎日报的详情接口,竟返回的是html,这.....uniapp小程序开发 | 从零实现一款影视类app (后台接口实现,go-zero微服务的使用)_uniapp开源影视app-CSDN博客GoQuery是专为Go(Golang)语言设计的一个强大的HTML解析和查询库。它模仿了jQuery的API风格,使得在Go中处理HTML文档变得简单且直观。原创 2024-06-18 22:41:23 · 2015 阅读 · 0 评论 -
Golang的json解析--Gjson库的使用举例
在 Golang 中,解析 JSON 数据是一项非常常见的任务。Go提供了标准的JSON包,可以轻松地将JSON数据序列化和反序列化。但是,在使用标准JSON包解析大型复杂JSON结构时,可能存在些许不足,例如代码冗余,性能瓶颈等问题。针对这些问题,目前有许多优秀的JSON解析框架,GJSON是其中一个很不错的选择。本文将详细讲解如何使用GJSON框架解析JSON数据。原创 2024-06-13 22:15:00 · 3231 阅读 · 0 评论 -
go-Nunu,一个好用的脚手架推荐,助你快速构建Go应用
虽然直接使用go-gin等框架也很简单,但是涉及数据库、jwt认证、配置文件和日志记录等全套的服务,一个个集成进来也挺费事。关键是一个个集成,很难做到结构清晰和分层合理。这里推荐一个好用的脚手架Nunu,太好用啦,可以让你把精力直接放在业务上直接开干。原创 2023-07-05 21:35:25 · 3269 阅读 · 7 评论 -
神级插件Bito介绍及使用
还在用其他AI?不是说它不火了,而是你基本上很难访问了。这里介绍个便宜且免费的AI聊天插件,一样可以很棒。永久免费且不限制次数,有这好事?且听下文分解。原创 2023-06-17 22:15:00 · 4101 阅读 · 4 评论 -
巧用replit搭建免费的个人云服务器
初识replit,被它的免费托管和域名服务所吸引。replit是个啥?在经过一番尝试后,发现这玩意儿挺有意思,佩服老外的想象力和创新力真强。竟还能搭建个人的云服务器,连域名都有了,这可真香。对个人开发者来说连云服务器都省了。想搭建个人网站或开发测试没有云环境的可以用这个,好用且免费。这里推荐一下,并介绍下如何使用replit搭建免费的云服务器。原创 2023-03-03 22:29:22 · 14681 阅读 · 2 评论 -
AI接入微信公众号方法总结
AI挺好用的。但是想用时就得打开网页或者其他工具插件才行?太不方便了。记得有次要给媳妇演示下它的强大,竟没带电脑竟啥事干不成。索性把AI接入微信公众号,这样在公众号聊天窗口里发消息,AI自动给我回复内容,且可以分享给好友邀好友一块儿体验,这太好玩儿了。原创 2023-02-10 22:13:10 · 11783 阅读 · 20 评论 -
使用go-zero微服务框架实现云监控后台(二.远程指令下发)
这是逐步实现该方案的第二篇文章。后台操控指令远程下发的实现这里记录下如何实现后台命令下发到终端设备上,触发终端上送日志文件,实现运维人员远程可以足不出户,采集设备日志的功能。实现原理:终端设备上运行的监控服务会定时10分钟上送一次设备状态。在终端设备请求上送状态时,把后台设置的操作命令响应给它。实现方法:使用redis,封装提供api接口,传参设备号和操控命令字和过期时间。终端设备每10分钟状态上报时,先查询redis缓存是否存在有该设备的控制命令,有则在响应报文中应答给终端。原创 2021-08-11 20:46:18 · 913 阅读 · 0 评论 -
使用go-zero微服务框架实现云监控后台(一.后台微服务搭建)
接上一篇文章,按照”终端出厂实现自动化运维方案"思路,https://blog.csdn.net/yyz_1987/article/details/118358038以上送终端状态为例,记录下go-zero微服务的简单使用,实现一个简易的后台监控云服务。新建一个Golang服务后台项目代码的目录,取名monitor。网关层实现按照goctl这一代码生成神器的使用方式,首先定义一下终端需要上送的接口字段信息:statusUpload.apitype ( //终端状态上报内容 St原创 2021-08-08 13:20:32 · 2524 阅读 · 0 评论 -
LevelDB 存储模块 Go 语言封装及持久化队列实现
LevelDB介绍Leveldb是一个google实现的非常高效的kv数据库,能够支持billion级别的数据量。 在这个数量级别下还有着非常高的性能。LevelDB 是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。LevelDB是Google的 Jeff Dean和Sanjay Ghemawat设计开发的key-value存储引擎。LevelDB底层存储利用了LSM tree的思想, RocksDB是Facebook原创 2021-04-08 19:43:46 · 1978 阅读 · 0 评论 -
go-zero微服务框架代码生成神器goctl原理分析(一)
推荐下go-zero 微服务框架,也是最近很火很有人气的框架,致力于打造国内最简单好用的框架。火在哪?几分钟搞定个接口和微服务,还不用担心稳定性和高并发,这不香吗?作者的理念很好,工具大于约定和文档的理念,编码自动化,让精力更多的放在业务和创新上,大幅度的提高效率和生产力,这会是个趋势。golang圈子不大,微服务框架框架屈指可数:除了go-micro、go-kit,几乎没有其他选择。go-zero为此提供第三个可能。说起go-zero提高生产力的地方,就不得不说goctl。goctl是原创 2021-03-11 19:12:59 · 9072 阅读 · 9 评论 -
Go语言银联8583报文解析库,支持联小额免密付和银商聚合支付
很早之前就整过一个Go语言版的8583解析库,不过是用来测试的。最近正好接着机会,整合了银联小额双免交易和银商的聚合支付交易通道,这可以是最简单的8583报文解析库了,没有之一。银联双免支付通道支持银行卡免密和云闪付二维码交易,银商的聚合支付交易通道支持支付宝付款码,微信付款码和云闪付二维码。如果配置了正确的秘钥参数,可直接用来扣费。附代码实现和使用demo:/**银联8583报文,包含签到,云闪付二维码交易,银联卡小额免密交易Author:yangyongzhenQQ:534原创 2021-03-03 19:24:10 · 1267 阅读 · 2 评论 -
Windows下安装etcd集群及zRPC的简单使用
Etcd 是 CoreOS 基于 Raft 开发的分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。etcd 安装包的下载地址etcd地址:https://github.com/etcd-io/etcd/releases选择对应的版本下载即可,Windows版本解压后文件目录如下:在同级目录分别创建如下三个启动脚本:start01.bat.\etcd.exe --name etcd01 ^--data-dir .\da.原创 2021-02-25 19:03:52 · 2609 阅读 · 4 评论 -
Go开源库Excelize介绍,电子Excel表格操作强大的库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支 持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组 件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计 算、边缘计算等系统。入选 2020 Gophe原创 2021-02-20 19:34:14 · 4138 阅读 · 4 评论 -
Go WebSocket + Redis 实现轻量级的订阅和实时消息推送
上一篇介绍了Golang中封装WebSocket的功能,让WebSocket更简单好用和稳定。这里借助Redis自身的订阅和发布机制和WebSocket结合,实现轻量级的订阅发布和消息推送。本来消息订阅和推送打算用mqtt的,但是这样一来还得有一个MqttBroker代理服务器,或采用网上开源的实现,或使用go语言自己实现个mqtt的broker,这都不够轻量级。...原创 2021-01-18 18:19:08 · 3075 阅读 · 2 评论 -
给Go的Gin web框架增加 WebSocket 功能,让WebSocket 更好用
Gin 是一个 go 的 web 框架,它具有轻量级,高性能,运行速度快,分组的路由器,良好的崩溃捕获和错误处理,非常好的支持中间件和 json。总之在 Go语言开发领域是一款值得好好研究的 Web 框架。官方地址:https://github.com/gin-gonic/gin但是最近想尝试下websocket功能,发现Gin框架里没有。Go 官方没有提供对 WebSocket 的支持,必须选择第三方提供的包。常用的有两种,golang.org/x/net/websocket和https.原创 2021-01-13 19:15:31 · 3735 阅读 · 0 评论 -
Go或者C中调用Lua业务脚本,实现终端应用的热更新方案
随着5G网络的普及,大胆预测未来智能终端架构发展的两个方向。一是随着5G的普及,联机类的业务,终端设备上的业务会轻量化,即瘦客户端的思想。业务在后台实现,终端仅成为操作实体的媒介,这样维护量将大大降低,业务都在后台嘛。二是脱机类,空闲联机的业务,终端可实现轻量化,热更新应用。把业务模块化,组件化,脚本化。每次升级不用整个都升级,可能仅需要写好业务脚本把轻量的几K的脚本下发下去实现应用的热更新,用户无感知。借用docker的图标来说下,它的图标很形象,一个大船拖动了很多的集装箱。以此类比现实世界,原创 2020-09-09 21:26:23 · 1437 阅读 · 0 评论 -
嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定
LittleVgl,一款开源嵌入式图形用户界面库。https://littlevgl.cn/使用简单小巧,界面也漂亮。很适合用在嵌入式上。在Stm32单片机上都能跑,只要实现了基础的函数很好移植。业余时间移植到了嵌入式linux上,使用帧缓冲Frambuffer,显示效果还不错。计划选用LittleVgl作为嵌入式的漂亮的UI。如图:但是,还是不够好用。计划使用...原创 2020-04-02 18:15:57 · 4911 阅读 · 3 评论 -
go-zero微服务框架入门教程
为什么使用go-zero你还在手撕微服务?快试试 go-zero 的微服务自动生成神器,这可能是我见过最简单好用的微服务框架。还有比它更简单好用的吗?欢迎留言评论和推荐。几分钟搞定个接口和微服务,还不用担心稳定性和高并发,这不香吗?还有比这更简单和高效的吗?工具大于约定和文档的理念,编码自动化,大幅度的提高效率和生产力,这会是个趋势,让精力更多的放在业务和创新上。接口一分钟搞定,稳定性和并发性也不必担心。推荐下go-zero 微服务框架,致力于打造国内最简单好用的框架。为什么使用go原创 2020-09-02 18:36:33 · 23965 阅读 · 1 评论 -
使用go-zero快速构建支持高并发的微服务
0. 为什么说做好微服务很难?要想做好微服务,我们需要理解和掌握的知识点非常多,从几个维度上来说: 基本功能层面 并发控制&限流,避免服务被突发流量击垮 服务注册与服务发现,确保能够动态侦测增减的节点 负载均衡,需要根据节点承受能力分发流量 超时控制,避免对已超时请求做无用功 熔断设计,快速失败,保障故障节点的恢复能力 高阶功能层面 请求认证,确保每个用户只能访问自己的数据 链路追踪,用于理解整个系统和快速定位特定请求的问题 日志,用于数据收集和问转载 2020-08-31 19:07:38 · 2220 阅读 · 2 评论 -
go-zero 微服务框架介绍
0. go-zero 介绍go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。使用 go-zero 的好处: 轻松获得支撑千万日活服务的稳定性 内建级联超时控制、限流、自适转载 2020-08-27 13:15:05 · 4715 阅读 · 0 评论 -
使用pm2管理go应用进程
pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能,在前端和nodejs的世界中用的很多。但是pm2强大之处不止于此,你的go应用也可以用它来管理。之前go应用使用supervisor负责监控应用,类似的工具还有forever,异常崩溃时自动守护重启,但是pm2更简单好用啊。假如你的go应用名字叫main可执行文件 ,那么直接pm2 start main即可,内存和cpu统统能够监控。1、 pm2需要全局安装npm原创 2020-08-07 22:03:13 · 4263 阅读 · 0 评论 -
go语言微信公众号开发后台接口封装
个人整理的小功能,把微信公众号开发涉及的一些常用接口做了个封装。业余时间做了个有意思的小功能,每天早上7点准时给发天气预报和每晚8点发布一条英语说说,提醒自己不能忘记学习。封装实现的功能有:开发者首次接入、创建菜单、删除菜单、发送模板消息、接收公众号前端推送、获取Token,获取关注者信息,获取用户个人信息,根据code获取个人信息(微信前端第三方应用页面接入授权会涉及。)这里再介绍下微信前端第三方应用如何获取微信个人openid和个人信息的功能实现思路。如何原创 2020-07-24 19:56:39 · 2898 阅读 · 0 评论 -
layUI登录界面验证码功能模块儿封装
用户登录界面,有个动态验证码的验证,这个是个常用的功能。第一种做法是把动态验证码的功能放到后台来做,这样每次验码都需要请求下后台,效果不怎么好,也额外给服务端造成负担。这负担不但指服务器承受了那一丁点压力,还指后台繁琐的编码工作,得处理这部分逻辑,比如若后台用go来做的话,需要额外使用captcha第三方库,把这个功能集成进来。第二种做法是可以放在前端来做,如果直接前端使用html5的canvas绘图来做的话,岂不是很赞,且很容易复用过来。layui没提供这部分功能,这里对layui的验证码原创 2020-07-14 18:42:36 · 5503 阅读 · 0 评论