- 博客(1006)
- 资源 (6)
- 收藏
- 关注

原创 go实战全家桶: go-family系大全
web框架: webclient/ webserver。gowater: 基础功能三剑客。gomini: mini代码库。goconfig:公用配置系。goplatform:平台。godi :依赖注入。
2025-04-04 09:49:24
219

原创 go etcd分布式锁的方案代码
的分布式锁的完整 Go 代码实现,包含锁的获取、自动续租、释放锁等核心功能,并附有详细注释和注意事项。fmt.Printf("协程 %d 获取锁失败: %v\n", id, err)return fmt.Errorf("创建租约失败: %v", err)return fmt.Errorf("事务提交失败: %v", err)return fmt.Errorf("释放租约失败: %v", err)return fmt.Errorf("续租失败: %v", err)
2025-03-30 12:03:10
374

原创 go nats消息如何使用ants池工作
是一种用于管理和复用协程的技术,可以有效控制并发数量、避免资源耗尽。pool, _ := ants.NewPool(3) // 池容量为3。const numWorkers = 3 // 协程池大小。close(jobs) // 关闭通道,通知协程退出。是一个高性能的协程池库,支持动态调整池大小和任务提交。根据你的需求选择合适的方案,平衡开发效率与性能要求。wg.Wait() // 等待所有协程完成。控制并发数,限制同时运行的协程数量。:避免无限制创建协程导致内存溢出。:减少协程创建/销毁的开销。
2025-03-29 18:36:51
1183

原创 go开源协程池
高性能,基于sync.Pool复用协程。动态调整协程池大小。支持任务超时、错误捕获和自定义 panic 处理。提供丰富的统计接口(如当前协程数、任务完成数)。
2025-03-29 18:21:21
423

原创 GO ES通用查询,自动获取条件并过滤查询参数=0、空的条件
req.State = "L" //req.ShopName = "测试商户""shop_name": "测试个人建""name": "默认网站模板",//req.Name = "默认网站模板"//req.All = "测试商户"
2025-03-15 23:18:15
496

原创 介绍一款优秀的GO开源框架github.com/samber/lo
介绍一款优秀的开源框架时,从多个角度出发,包括它的功能、特点、使用场景、优势以及社区支持等。以下是针对samber/lo。
2025-03-08 11:30:43
947

原创 Go实战全家桶之五十一:通用域聚合服务实现跨领域对接
聚合根(Aggregate Root)是领域驱动设计(DDD)中的核心概念,负责维护聚合内对象的完整性和一致性。IfCache bool `query:"if_cache"` //是否缓存。Source string `query:"source"` //返回字段。IfAgg bool `query:"if_query_agg"` //是否聚合。:外部只能通过聚合根访问聚合内的对象,聚合根负责内部对象的操作。:聚合根是事务的最小单位,一个事务只能修改一个聚合根。
2025-03-05 12:41:07
892

原创 Go实战全家桶之四十九:gin测试框架再封装
import ("bytes""net/http""strings"if param!c.Next()return ret。
2025-02-17 09:27:33
153

原创 Go实战全家桶之四十八: docker初学指南
假设你已经编写了一个简单的 Python 应用程序,并且有一个Dockerfile文件。你可以按照以下步骤构建和运行镜像:在包含Dockerfile的目录中运行以下命令来构建镜像:bash复制运行容器:bash复制这将把容器的 80 端口映射到主机的 4000 端口。Docker 是一个强大的工具,可以帮助你简化应用程序的部署和管理。通过掌握基本的 Docker 命令和概念,你可以快速上手并开始使用 Docker 来构建和运行容器化应用程序。
2025-02-03 21:52:38
1088

原创 Go实战全家桶之四十三:gowater开源框架集成体系-面向对象优化版:db es rule web rpc nats webserver:gowater
开源:water/ruleserverhttps://gitee.com/leijmdas/web.git
2025-01-23 09:20:00
1007

原创 Go实战全家桶之四十一: ruleserver开源规则引擎
INFO[2025-01-12000:07:55]C:/Users/leijmdas/go/pkg/mod/gitee.com/leijmdas/goweb@v1.0.6/common/webserver/webserver.go:102gitee.com/leijmdas/goweb/common/webserver.(*WebServer).StartWebSwagger()启动通用服务WEBServerserverwillstarting(listeningport=89)...
2025-01-20 00:11:23
920

原创 Go实战全家桶之十五: GO依赖注入框架godi,实现BEAN工厂泛型接口,无需生成代码、工业级巨匠开发者神器
/ 使用reflect.TypeOf获取接口的动态类型。// 使用reflect.TypeOf获取接口的动态类型。// 取指针指向的类型。// 取指针指向的类型。// 检查是否是指针类型。// 检查是否是指针类型。原来需要生成注入代码。
2024-10-07 07:16:13
1604

原创 Go实战全家桶之十四:Goweb权限控制中间件实现
Author 作者: leijianming@163.com 时间(2024-02-18 22:38:21)@Update 作者: leijianming@163.com 时间(2024-02-18 22:38:21)// https://www.jianshu.com/p/982c4fabb11d swagg参数。// https://www.jianshu.com/p/982c4fabb11d swagg参数。// RPC 获取ctx上下文的CooUserID信息的 实现。
2024-09-18 12:26:13
1609
原创 微信公众号创建图文消息
微信公众号上传图文消息涉及两个主要步骤:上传素材获取 media_id 和 创建图文消息。"thumb_media_id": "上一步获取的 media_id","content": "正文内容(支持HTML标签)",- 单图文可使用 `add_news` 发送单个文章。"url": "阅读原文的链接"4. access_token:有效期2小时,需定时刷新。"author": "作者","digest": "摘要","title": "标题",- `add_news` 用于创建多图文消息。
2025-04-02 12:07:11
349
原创 腾讯公众号上传素材代码接口使用
接口地址:`https://api.weixin.qq.com/cgi-bin/material/add_material?result = upload_permanent_media(access_token, "path/to/video.mp4", title="视频标题", introduction="视频简介")- 接口地址:`https://api.weixin.qq.com/cgi-bin/media/upload?- 永久素材接口仅限已认证的服务号使用,订阅号只能上传临时素材。
2025-04-02 11:59:17
466
原创 除了redis还有什么分布式锁的方案
除了 Redis,分布式锁的实现还可以借助其他多种技术,每种方案都有其适用场景和优缺点。id VARCHAR(255) PRIMARY KEY, -- 锁名称。:客户端创建一个临时顺序节点,判断自己是否是最小节点(即获得锁)。:性能低于 Redis,但高于 ZooKeeper/etcd。:未获得锁的客户端监听前一个节点的删除事件,实现阻塞等待。云原生应用,已深度集成 AWS/GCP/Azure 服务。// 获取所有子节点,判断自己是否为最小节点。// 尝试写入锁项(条件:Item 不存在)
2025-03-30 11:41:57
241
原创 goframe gredis如何使用锁
ticker := time.NewTicker(time.Duration(expire/2) * time.Second) // 间隔为过期时间的一半。fmt.Println("释放锁失败:", err)fmt.Println("加锁失败:", err)return // 续期失败,退出。fmt.Println("锁被占用,稍后重试")fmt.Println("成功获取锁,执行操作...")fmt.Println("加锁失败:", err)fmt.Println("解锁失败:", err)
2025-03-30 11:35:02
321
原创 微信公众号GetPreAuthCode err: access_token missing rid: 67e89afa-74d0198e-66e6c2c5
(路径:公众号后台 → 开发 → 基本配置 → IP白名单)。如果仍有问题,建议在代码中添加详细日志,记录接口请求和返回内容,以便进一步分析。可用于联系微信客服或在日志中定位具体请求。,过期后需重新获取。确保你的系统有缓存和刷新机制,避免重复请求或使用过期凭证。若有代理或防火墙,需放行微信 API 域名。并记录获取时间,每次调用接口前检查是否过期。,根据开放平台或公众号模式确认具体参数名)。正确无误(与公众号后台配置一致)。联系微信支持或检查服务器网络配置。泄露或重置过,需使用最新的凭证。
2025-03-30 09:22:47
254
原创 clickhouse-docker安装验证通过
- ./config/config.xml:/etc/clickhouse-server/config.xml # 自定义服务配置。#- ./config/users.xml:/etc/clickhouse-server/users.xml # 自定义用户配置。- ./data:/var/lib/clickhouse # 数据持久化。- ./logs:/var/log/clickhouse # 日志持久化。- "8123:8123" # HTTP API 端口。
2025-03-29 12:02:01
324
原创 OAuth 2.0 授权协议
OAuth 2.0 是一种授权协议,用于允许第三方应用程序安全地访问用户在资源服务器上的受保护资源,而无需用户共享其凭据。
2025-03-28 17:46:57
322
原创 微信公众号同步接口发文章
此外,如果是服务号,还需要进行开发者认证,并且用户需要关注公众号才能接收消息。接下来,用户可能需要使用素材管理的接口来上传图文消息,然后通过客服接口发送。不过,普通订阅号和服务号的权限可能不同,服务号可能有更多接口权限。用户提到的是同步接口,可能是指将其他平台的内容自动同步到公众号,比如通过API发布文章。另外,微信的接口文档可能会有变化,需要确保使用的接口是最新的。最后,测试过程中可能会遇到问题,建议用户使用微信提供的测试账号进行调试,或者查看返回的错误代码,根据官方文档排查问题。
2025-03-28 16:57:22
1019
原创 go es match如何实现模糊匹配
如果需要更强大的模糊匹配(如短语模糊),建议结合 `MultiMatchQuery` 或 `SpanNearQuery`。在 Elasticsearch 的 Go 客户端中,`Match Query` 默认是精确匹配,但可以通过参数 `fuzziness` 实现模糊匹配。`Transpositions()` 是否允许相邻字符交换(如 `"new york"` → `"nyork e"`)`Fuzziness()` 控制编辑距离(02 或 `AUTO`)<br>`AUTO` 会根据词长自动调整(02)
2025-03-26 18:37:38
372
原创 前端页面访问如何计算停留时长
还有一个可能的误差是用户的页面处于后台,或者最小化,这时候用户并没有真正离开,但可能没有活动。可能需要根据具体需求来决定,比如当页面不可见时停止计时,或者在可见时继续累计时间。这时候可能需要结合其他方法,比如心跳检测,定期发送用户的活动状态,如果在一定时间内没有心跳,则认为用户已经离开。首先想到的是,当用户进入页面时记录一个开始时间,然后在用户离开页面的时候记录结束时间,两者的差值就是停留时长。通常情况下,页面停留时长指的是用户在一个页面上停留的时间长度,从进入页面到离开页面的时间差。
2025-03-26 16:42:02
632
原创 go docker如何将环境变量放文件
或者,用户可能希望将环境变量文件的内容嵌入到Docker镜像中,例如在Dockerfile中COPY .env到容器中,并在ENTRYPOINT或CMD中设置环境变量。可能的步骤是:首先创建一个包含环境变量的文件,比如.env,然后在构建Docker镜像时,将这个文件复制到容器中,或者在运行容器时使用--env-file参数指定该文件的路径。此外,如果用户需要动态生成.env文件的内容,可以在Go代码中生成该文件的内容,保存到临时目录,然后在调用docker run时指定该临时文件的路径。
2025-03-25 08:38:41
719
原创 httptest 测试gin如何传递path 参数
在 Gin 框架中测试路径参数的传递,可以通过httptest包模拟请求,并构造包含参数的 URL 路径。
2025-03-24 17:45:54
739
原创 go业务代码分层
### apiservice 综合服务db+service。#### service 简单服务,只有db操作。#### service 简单服务,只有es操作。#### InitEs esINDEX初始化。#### Init初始化操作:表和ES。#### apimodel 复杂模型。#### uidto: web层公共结构体。具体的方法在测试用例中!#### uiapi: web层公共代码。#### InitDb 表初始化。### service 综合服务。
2025-03-24 12:02:13
513
原创 go gorm clickhouse
定义一个模型并进行基本的数据库操作:go复制Age int// 连接数据库if err!= nil {// 自动迁移表结构// 插入数据// 查询数据fmt.Println(user.Name) // 输出:TestUser。
2025-03-23 12:19:53
290
原创 podman
Podman(Pod Manager)是一个开源的容器管理工具,用于在Linux系统上开发、管理和运行Open Container Initiative(OCI)容器。
2025-03-23 12:19:07
380
原创 gocron指定时间执行
在 Go 中使用gocron指定特定时间执行任务非常简单。gocron提供了灵活的任务调度功能,支持基于时间点、时间间隔和 Cron 表达式的任务调度。以下是使用gocron。
2025-03-20 22:47:20
906
原创 go clickhouse query
在 Go 中使用查询 ClickHouse 数据库非常简单。以下是一个完整的示例,展示如何连接 ClickHouse 并执行查询操作。
2025-03-20 22:41:03
773
原创 go date 如何转换成protobuf timestamp
使用将time.Time转换为。使用将转换回time.Time。确保在.proto文件中正确导入。
2025-03-18 08:59:48
794
原创 import “google/protobuf/timestamp.proto“ was not found or had errors.website.proto:94:3: “google.pro
he error you're encountering indicates that the Protocol Buffers (protobuf) compiler () cannot find the file, which is required to use the type in your file.Here’s how you can resolve this issue:The file is part of the Protocol Buffers "well-known type
2025-03-18 08:59:06
837
原创 go gorm如何创建索引
Email string `gorm:"uniqueIndex:email_unique"` // 索引名:uniq_email_unique。Username string `gorm:"index:username_idx"` // 索引名:idx_username_idx。这会在 `Username` 和 `CreatedAt` 字段上创建复合索引,索引名为 `username_created_at`。- 简单索引:直接在字段上用 `index` 或 `uniqueIndex` 标签。
2025-03-16 08:44:05
378
原创 在 PostgreSQL 中,CAST 和 :: 操作符都可以用来进行类型转换,但它们在语法和可读性上有一些区别。
推荐使用CAST在复杂的查询或需要明确转换意图的场景中,CAST更清晰、更易于维护。如果你的代码需要在不同的数据库系统中运行,CAST是更好的选择。使用操作符在简单的场景中,操作符更简洁,适合快速编写代码。如果你的代码仅在 PostgreSQL 中运行,是一个不错的选择。
2025-03-13 23:44:58
266
my java unit
2011-11-06
mycppunit test frame
2011-11-06
my cpytest --python test frame
2011-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人