自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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三合一工程 通用数据库/规则引擎/es微服务

"ReturnMsg": "计算成功!

2025-01-25 14:34:37 410

原创 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

原创 如何下载apache/doris:1.2.4-fe

目前没有直接提供。

2025-03-29 09:08:43 239

原创 OAuth 2.0 授权协议

OAuth 2.0 是一种授权协议,用于允许第三方应用程序安全地访问用户在资源服务器上的受保护资源,而无需用户共享其凭据。

2025-03-28 17:46:57 322

原创 微信公众号同步接口发文章

此外,如果是服务号,还需要进行开发者认证,并且用户需要关注公众号才能接收消息。接下来,用户可能需要使用素材管理的接口来上传图文消息,然后通过客服接口发送。不过,普通订阅号和服务号的权限可能不同,服务号可能有更多接口权限。用户提到的是同步接口,可能是指将其他平台的内容自动同步到公众号,比如通过API发布文章。另外,微信的接口文档可能会有变化,需要确保使用的接口是最新的。最后,测试过程中可能会遇到问题,建议用户使用微信提供的测试账号进行调试,或者查看返回的错误代码,根据官方文档排查问题。

2025-03-28 16:57:22 1019

原创 go url如何解析处理转义字符

在Go语言中处理URL转义字符时,应当根据URL的不同部分(如路径、查询参数等)选择合适的函数进行编码和解码。

2025-03-27 10:15:14 427

原创 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 解析.env

Go 中,可以通过一些库来解析.env文件,其中最常用的库是。以下是使用godotenv解析.env文件的步骤和示例代码。

2025-03-25 09:07:20 125

原创 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

原创 docker-compose 安装doris

挂载。

2025-03-23 13:14:39 803

原创 docker-compose 安装clickhouse

将配置文件挂载到。

2025-03-23 13:12:03 867

原创 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

Go实战全家桶之三十三: go pprof定位问题,自己埋的坑

perfstat

2025-01-08

Go实战全家桶之三十三: go pprof定位问题,自己埋的坑

perfstat

2025-01-08

个性化推荐与活动配置方案

个性化推荐与活动配置方案

2024-04-04

gofactroy代码工厂生成python,go

go代码工厂

2024-04-04

JAVA工具factroy.rar

springcloud dubbo

2021-10-28

anfang.zip

安防系统安防系统

2019-07-29

rbtest my unit simp-le

ruby good test ,you can study!

2014-08-23

my java unit

java package com.myunit; import testapi.ITestAgent.TestLog; @TestClass public abstract class ITestFixture extends MyAssert implements ISubject { IObserver iobs = null; public ITestFixture() { } public ITestFixture(Class testClass) { MyTestSuite.RegTestSuite(testClass); } public void TestLog(String line) { TestLog.TestLog(line); } // public static RegTestcase regtc=new RegTestcase(new ITestFixture()); public abstract void setUp(); public abstract void tearDown(); public void run(MyTestResult result) { } public int countTestcase() { return 0; } public void log(String inf) { sendMessage(new StringBuffer(inf)); MyLog.log(inf); } @Override public void register(IObserver o) { iobs = o; } @Override public void sendMessage(StringBuffer inf) { if (iobs != null) { iobs.action(inf); } } @Override public void unRegister(IObserver o) { iobs = o; } }

2011-11-06

mycppunit test frame

c++pragma once #include "itestfixture.h" #include "TestSuite.h" class CTestCase : public ITestFixture { //Register CPPUNIT_TEST_SUITE(CTestCase) CPPUNIT_TEST(test_demo_1) CPPUNIT_TEST(test_demo_2) CPPUNIT_TEST_SUITE_END() public: CTestCase(void); ~CTestCase(void); virtual void setUp(); virtual void tearDown(); void test_demo_1(); void test_demo_2(); // REG_TESTCASE(CTestCase::test_demo_1) // static CTestCase itestcase1("TestCase::test_demo_1", &CTestCase::test_demo_1 ); //static CTestCase itestcase1(std::string("TestCase::test_demo_1"), NULL); };

2011-11-06

my cpytest --python test frame

python test ''' Created on 2011-11-2 @author: ACER ''' import glob, os from testframe.TestSuite import * class PyTestRunner: @staticmethod def run(suite): TestSuite.run(suite) @staticmethod def autoloadModule( ): TestSuite.autoloadModule() @staticmethod def runAll( ): PyTestRunner.run( TestSuite.allsuites ) def main(): PyTestRunner.autoloadModule() PyTestRunner.runAll() if __name__ == '__main__': main() ''' '''

2011-11-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除