Golang查询MongoDB的实现步骤
目录使用 Golang 向 MongoDB 插入文档使用 Golang 向 MongoDB 写入多个文档使用 Golang 从 MongoDB 中查找单个文档获取最后创建的文档使用 Golang 从 MongoDB 中查找所有文档查找符合条件的多个文档在查找操作中使用Projection使用 Golang 更新 MongoDB 中的单个文档如何在 MongoDB 中返回更新的文档?使用 Golang 从 Mongo ...
golang微服务框架Kratos实现消息队列
目录什么是消息队列为什么要使用消息队列1. 异步2. 削峰3. 解耦Kratos与消息队列kratos-transport的应用1. Codec 编解码器2. Broker 消息队列客户端3. Server 封装给Kratos的Server实现具体的应用实例kratos-cqrskratos-realtimemapkratos-chatroom中间件代码什么是消息队列
MQ就是消息队列,是Message Queue的缩写。消息队 ...
golang中go race使用
目录多线程/协程中的线程安全分析死锁竞争Go 的命令中,-race参数用于启用竞态检测器(Race Detector)使用示例注意多线程/协程中的线程安全分析
在项目中,使用多线程会导致线程安全问题,引发bug发生,如果是运行中发生问题更难定位
常见的情况有两种 死锁 竞争,例如
死锁
编译打包时,死锁发生 go run 会直接报错
两个或 ...
golang WebDav 多目录文件服务的实现
目录普通WebDav服务一个端口共享多用户/多目录golang官方提供了webdav服务包,但是,功能比较有限,这里主要针对一个端口,多目录做解释
普通WebDav服务
package main
import (
"net/http"
"golang.org/x/net/webdav"
)
func main() {
http.ListenAndServe(":8080", &webdav.Handler{
FileSystem: we ...
GoLang五种字符串拼接方式小结
目录1.+ 操作符拼接工作原理性能特点适用场景2.fmt.Sprintf工作原理性能特点适用场景3.strings.Builder工作原理性能特点内部机制适用场景4.bytes.Buffer工作原理性能特点与 strings.Builder 对比适用场景5.strings.Join工作原理性能特点适用场景性能对比总结选择建议最佳实践示例1.+ 操作符拼接
工作原理
每次使用 + 拼接字 ...
golang的csp模型具体使用
目录一、Channel:CSP 模型的 “通信管道”1.1 Channel 的基本特性1.2 简单示例二、为什么需要 Channel?—— 解决共享内存的 “原罪”三、无缓冲 Channel 与有缓冲 Channel:同步与异步的分野3.1 无缓冲 Channel(同步通道)3.2 有缓冲 Channel(异步通道)3.3 核心区别总结四、CSP 模型: ...
Go语言结构体标签(Tag)的使用小结
目录什么是结构体标签?基本语法常见的标签用途1.JSON 序列化/反序列化(最常用)2.数据库操作(SQL/ORM)3.Web 框架表单绑定(Gin 等)4.验证规则(binding/validate)5.XML 编码/解码6.YAML 序列化7.BSON(MongoDB)自定义标签标签的解析规则1.格式规范2.通过反射获取标签3.标签解析示例实际应用场景场景1:API 请求/响应 ...
Golang垃圾回收器执行链路详细分析
目录何时会触发垃圾回收?系统监控申请内存gcStart 干了啥?大体流程迭代标记一些优化总结众所周知,我们现版本的 Go 默认是使用的三色标记法,八股文已经听腻了,来看点源码理解一下 GC 流程。
何时会触发垃圾回收?
系统监控
懂行的都知道,gc 的入口是 gcStart,所以我们只需要顺着他的调用链路向上找,可以知道会有一个 ...
Go泛型中的~struct{}的具体使用
目录一、前置知识:Go泛型的核心痛点与解决方案二、~符号:引入版本与核心目的2.1 ~符号的引入版本2.2 ~符号的核心目的:实现“近似类型匹配”三、struct{}:“零内存”的空结构体特性3.1 struct{}的内存特性验证3.2 struct{}的典型应用场景四、~struct{}:约束含义与实践示例4.1 示例1:精确约束s ...
Go异常处理、泛型和文件操作实例代码
目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文件操作文件读取一次性读取获取当前go文件的路径分片读带缓冲读指定分割符文件写入一次性写文件的打开方式文件复制目录操作四:总结一:异常处理
go的异常处理可能是这门语言唯一的一个诟病了吧
由于 go 语言没有捕获 ...
Go 语言 interface从源码到使用实践指南
目录前言一、什么是 interface?二、interface 的底层实现(源码视角)1. 空接口(interface{})2. 非空接口(带方法的接口)接口赋值的底层过程三、interface 的基本使用1. 接口定义与实现2. 接口组合3. 类型断言4. 类型开关(type switch)四、最佳实践与使用技巧1. 接口设计原则:小而专2. 依赖抽象而非具体3. 合理使用 ...
Golang结合chromedp实现浏览器自动化操作
目录为什么要用 Go 做浏览器自动化?chromedp 是什么最简单示例:打开网页并获得标题chromedp 能做什么自动点击网页按钮自动输入内容等待元素加载执行 JavaScript截图网页批量爬取网页数据chromedp 与 Selenium 的对比更多 chromedp 实战(我可以帮你写)总结当大家提到“浏览器自动化”,第一反应往往是 Python ...
Go使用SM3哈希算法和随机盐实现用户密码加密
目录前言一、为什么要加盐 (Salt)二、SM3 哈希算法三、Go 实现用户密码加密1. 生成随机盐2. SM3 哈希函数3. 生成哈希密码4. 验证密码5. 可扩展支持多种算法四、完整示例五、小结前言
在现代 Web 系统中,用户密码安全存储是非常关键的一环。传统做法用简单哈希,容易受到彩虹表攻击。
本文将介绍如何使用 SM3 哈希算法 + 随 ...
Go语言结构体的使用小结
目录概述结构体的定义结构体的实例化直接初始化使用字面量使用 new 关键字结构体的方法结构体的嵌套总结概述
Go 语言,又称 Golang,是由 Google 开发的一种静态强类型、编译型、并发型、具有垃圾回收功能的编程语言。在 Go 语言中,结构体(struct)是一种重要的数据类型,它允许开发者将多个数据项组合成一个单一的复合数 ...
Go读取MySQL Date类型的避坑指南
目录一不小心就踩坑问题出在哪里?总结一不小心就踩坑
先举一个实际的:
我们先创建一个表,并插入一行数据。注意表中两个字段一个是DATETIME类型,一个是DATE类型的
CREATE TABLE `t_test` (
`id` int NOT NULL AUTO_INCREMENT,
`f_one` datetime DEFAULT NULL,
`f_two` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ...
GO语言实现串口简单通讯
目录背景串口通讯代码代码块分解解析完整代码运行结果背景
最近再学习 go 语言,在某宝用5块钱买了个教学视频 8 日速成,目前看到了第3天的视频,进度龟速。。。。。这周末加油!然后,学习 go 语言的目的是想用 go 做自动测试,我是只学过 C ,感觉 go 语言和 C 比较相近,学起来比较简单、迅速。
串口通讯代码
golang 串 ...
Go语言实现桥接模式
目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步骤五:使用桥接模式注意事项常见问题与解决方案问题:我有多个不同的实现怎么办?问题:如何处理复杂的组合逻辑?问题:我的抽象类需要访问外部资源怎么办?参考资料简介
桥接 ...
Go语言中OCR常用识别库的使用与实战指南
目录目录常见选项总览本地开源引擎(优点:离线、可控、费用低)商业 / 云服务(优点:准确率高、易用)Go 生态中常用库(推荐组合)环境与安装要点安装 Tesseract在 Go 中使用gosseract安装 gocv(OpenCV)实战:用 gosseract + gocv 做 OCR(完整代码)示例:完整ocr_pipeline.go性能 / 精度优化技巧(工程经验)图像预处 ...
go如何使用cobra启动项目
目录一、基本使用二、实现项目中开发使用一、基本使用
1、安装依赖包
go get -u github.com/spf13/cobra@latest
2、简单的创建几个命令
package main
import (
"github.com/spf13/cobra"
"os"
)
var rootCmd = &cobra.Command{
Use: "api",
Short: "短的地址",
Long: "长的地址",
}
// 命令一
var mockCmd = &cobra ...
Go语言实现从PDF自动化提取条码的开发全流程解析
目录一 整体功能设计二 核心库介绍go fitz(PDF 渲染库)gozxing(ZXing Go 语言实现)encoding/csv三 条码识别核心 decodeSingle四 PDF 批量处理 extractFromPDF五 扫描目录下所有 PDF六 结果写入 CSV七 完整流程示例八 常见问题与优化思路PDF 页面图片过大导致识别慢某些条码识别率不高部分 PDF 含多张图片支持更多条码格 ...