自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1028)
  • 资源 (6)
  • 收藏
  • 关注

原创 Go实战全家桶之六十一:gowebframe多工程示例

go 1.20use (./gocmd./gocfg./godi./golog./gomini./gonats./gorpc./goweb。

2025-04-20 11:39:32 114

原创 Go实战全家桶之六十:gin路由与权限的改造

"(*HubComboController).HubComboPublishByIds-fm": {"H", "manage", "combo", "publish"}, // 套餐-发布。"(*HubIncentiveController).HubIncentivePublishByIds-fm": {"H", "encourage", "incentive", "publish"}, //激励-发布。

2025-04-17 17:56:29 1257

原创 Go实战全家桶之五十九:goDb自动比对

var ret = dao.DbCheckRecord(1062582688334217219, "domain_name=testcloud.ichub.com|object_code=-1|menu_name=品项")@Author 作者: raymond@163.com 时间(2025-03-31 09:35:13)@Update 作者: raymond@163.com 时间(2025-03-31 09:35:13)*** CheckRecord menu_name=品项 OK ***

2025-04-14 13:37:30 834

原创 Go实战全家桶之五十八:goEs自动比对

VisitAt time.Time `json:"visit_at"` //访问时间。VisitAtInt int64 `json:"visit_at_int,string"` //访问时间。UtmId int64 `json:"utm_id,string"` //推广标识。@Author 作者: raymond@163.com 时间(2025-03-25 21:40:39)"msg": "成功","msg": "成功",

2025-04-12 14:47:05 735

原创 Go实战全家桶之五十七:go通用Result设计

self.Msg = "成功"self.Msg = "成功"

2025-04-12 10:12:06 800

原创 Go实战全家桶之五十五:gowater工程docker制作

ICHUB_TESTURL: #生产docker安装为空。ENV SWAGGER_TITLE="管理服务-WebServer"# 通过EXPOSE对外暴露服务的端口号。# 通过下面的命令来运行可执行文件。

2025-04-06 12:50:38 968

原创 Go实战全家桶之五十三: go-family系大全

web框架: webclient/ webserver。gowater: 基础功能三剑客。gomini: mini代码库。goconfig:公用配置系。goplatform:平台。godi :依赖注入。

2025-04-04 09:49:24 509

原创 Go实战全家桶之十五: GO依赖注入框架godi,BEAN工厂泛型接口,无生成代码、工业级巨匠开发者神器

/ 使用reflect.TypeOf获取接口的动态类型。// 使用reflect.TypeOf获取接口的动态类型。// 取指针指向的类型。// 取指针指向的类型。// 检查是否是指针类型。// 检查是否是指针类型。原来需要生成注入代码。

2024-10-07 07:16:13 1619

原创 go work sync使用心得

所有的子工程 都会升级至v1.5.4。然后go work sync。多个mod子工程升级一个版本。只要一个mod升级,

2025-04-19 18:40:34 196

原创 thrift接口协议

Thrift 是 Apache 基金会下的一个跨语言 RPC 框架,支持多种编程语言(包括 Go),通过接口定义语言(IDL)定义服务,生成代码并实现跨语言通信。- 部分语言(如 Java)提供异步客户端,但 Go 的 Thrift 库(如 `thriftgo`)异步支持较弱。Thrift 支持 Go、Java、Python、C++、Ruby 等主流语言,适合多语言混合架构。Thrift 支持 Go、Java、Python、C++、Ruby 等主流语言,适合多语言混合架构。

2025-04-19 17:06:24 338

原创 为什么我不建议go使用rpc接口

协议缓冲区(Protobuf)的维护成本:RPC 框架(如 gRPC)通常依赖 IDL(接口定义语言)生成代码,需要维护 `.proto` 文件。- 缺乏标准化工具链:相比 HTTP/REST 的广泛工具支持(如 Postman、Swagger),RPC 的调试工具链可能不够成熟。- REST/HTTP + JSON:对于内部服务或快速开发,REST 的简洁性、易调试性(如 `curl` 支持)可能更合适。- 流式接口的兼容性:gRPC 流式接口的升级比 REST 更复杂,容易引发兼容性问题。

2025-04-19 17:03:27 357

原创 如何开发一个服务实现分布式锁

分布式锁是一种在分布式系统中用于协调多个进程或线程对共享资源访问的锁机制。

2025-04-18 11:05:15 529

原创 go能否象vue一样开发后端组件

Go 语言与 Vue.js 的定位和设计目标存在本质差异,但通过合理的架构设计,Go 完全可以实现类似 Vue 的模块化、组件化后端开发模式。Go 虽然无法直接实现 Vue 的模板化组件,但通过包管理、接口抽象、依赖注入等机制,完全可以构建出高内聚、低耦合、可复用的后端组件体系。状态管理 响应式数据绑定(如 Vuex) 显式状态传递(通过函数参数/返回值)组件类型 视图组件(含模板、样式、逻辑) 功能组件(纯逻辑、无 UI)4. 测试工具:Testify(断言库)、GoMock(Mock 生成)

2025-04-18 08:19:42 402

原创 GO关于网站管理的推广与访问

访问时url带utm_id更新推广表visit_count: page_id+visitor_id+visitor_type索引。基于url, page_type,object_type,object_code生成page_id。基于page_id生成utm推广: page_id+utm_source+shop_id为唯一主键。

2025-04-14 10:20:25 181

原创 go defer可以嵌套吗

在 Go 语言中,defer。你可以在一个被defer延迟执行的函数内部再使用defer,但需要注意它们的执行顺序和作用域。

2025-04-13 11:48:55 273

原创 Go实战全家桶之五十六:go语言如何找工作

标准库:`net/http`(Web 开发)、`encoding/json`(数据序列化)、`context`(超时控制)、`io/fs`(文件操作)等。- 技术栈标签:列出 `Golang`、`HTTP/REST`、`Microservices`、`Kubernetes` 等。- 工具链:`go test`(单元测试)、`go mod`(依赖管理)、`pprof`(性能分析)等。- 掌握 Go 语言特有的特性(如接口底层实现、`defer` 机制、指针与值传递)。

2025-04-11 13:16:05 652

原创 底比较厚的皮鞋且低价位

提示:选择评分4.8以上的工厂店,可定制颜色和尺码,价格低至50-150元,但需注意退换货政策。- 推荐:森达、奥康等品牌的工厂直营款,厚底设计,价格100-200元,注意查看退货保障。- 电商购买时注意“鞋内长比脚长多0.5-1cm”,厚底鞋可能偏大,建议参考评论区反馈。- 优先选橡胶底或牛筋底,防滑且寿命长,厚度建议3cm左右(显腿长又舒适)。- 特点:鞋底柔软厚实,主打舒适,适合学生党或长时间站立,可选低帮/高帮。- 特点:国潮复古风,橡胶厚底防滑耐磨,适合日常通勤,真皮/PU可选。

2025-04-11 13:02:47 171

原创 go select{}阻塞主线程有什么好处

select{}` 可以同时监听多个通道,当没有 ready 的通道时,它会阻塞当前 goroutine。需结合 `context`、`sync.WaitGroup` 等机制管理生命周期。结合通道(channel)和 `select{}`,可以监听系统信号(如 `SIGINT` 或 `SIGTERM`),实现程序的优雅关闭。相比使用 `for{}` 空循环阻塞,`select{}` 更高效且不会占用 CPU 资源。- 使用 `time.Sleep` 或 `time.After` 设置超时(需谨慎)。

2025-04-11 08:33:53 497

原创 gocron如何启动时不执行

默认情况下,使用 `s.Every().X().Do(task)` 设置的间隔任务会在调度器启动时立即执行一次,然后再按间隔重复。- 使用 `cron` 表达式时,推荐开启秒级支持(`s.WithSeconds()`),例如 `"0 3 * * * *"`。- 通过 `s.StartBlocking()` 替代 `StartAsync()` 可阻塞主线程,适合简单脚本。如果不需要间隔任务,避免使用 `s.Every().Do(task)`,因为它会默认立即执行。// 先调度后续任务,不立即执行。

2025-04-11 08:25:37 491

原创 天麻有什么疗效

用于肝风内动引起的头晕、头痛、眩晕(如高血压、偏头痛等),尤其适用于“肝阳上亢”型症状。- 实验研究表明,天麻可能减轻氧化应激,对帕金森病、阿尔茨海默病等神经退行性疾病有潜在辅助效果。- 部分研究提示其可能通过扩张血管辅助降压,但需配合规范治疗,不可替代降压药。- 常与钩藤、石决明等配伍(如天麻钩藤饮),缓解因肝火旺盛导致的头胀痛。- 天麻素能扩张脑血管,增加血流量,可能辅助治疗脑供血不足或血管性头痛。- 对癫痫、三叉神经痛等有一定缓解作用,机制可能与抑制神经兴奋性有关。- 常见煎服,用量3-10克;

2025-04-10 19:59:31 241

原创 nginx如何配置让client ip转发

在 Nginx 中配置客户端真实 IP 的转发通常是为了让后端服务器(如应用服务器)能够获取到客户端的真实 IP 地址,而不是看到反向代理(Nginx)的 IP。当 Nginx 作为反向代理时,默认会将客户端的 IP 替换为自己的 IP。为了让后端获取真实 IP,需要设置 HTTP 头和X-Real-IP。

2025-04-09 13:02:12 778

原创 找工作什么平台好

找工作的平台选择取决于你的行业、职位类型、经验以及求职偏好(如全职、兼职、远程等)。- 优势:最权威的岗位信息来源,尤其适合目标明确的大公司(如腾讯、阿里、字节跳动等)。- 特点:直接与HR或部门负责人沟通,反馈快,适合互联网、科技、新兴行业。- 应届生推荐:宣讲会、学校就业网、实习僧(实习)、牛客网(技术岗笔试面试)。- 特点:老牌综合平台,覆盖全行业,职位类型全面(从基层到高管)。- 特点:自由职业、远程工作,适合设计师、翻译、编程等技能型工作。- 专注行业:互联网、IT、设计、产品经理。

2025-04-09 12:28:25 291

原创 goweb docker制作

ENV SWAGGER_TITLE="管理服务-WebServer"# 通过EXPOSE对外暴露服务的端口号。# 通过下面的命令来运行可执行文件。# 构建该项目的基础镜像。

2025-04-06 12:57:28 318

原创 Go实战全家桶之五十四:godoc使用

是 Go 语言的官方文档工具,它可以自动从 Go 源代码和注释中提取文档,并以网页或文本形式展示。查看和生成 Go 代码文档。合理编写注释能极大提升代码可维护性,建议遵循官方注释规范。go.mod # 如果使用 Go Modules。包含标准库、已安装的第三方包及当前项目的文档(需在。本身不是有效的 Go 包目录。:确保注释直接位于被注释对象之前,中间无空行。:直接在被注释对象前写注释,以对象名称开头。从 Go 1.12 开始,推荐使用内置的。若项目使用 Go Modules,确保。

2025-04-05 20:43:27 725

原创 微信公众号创建图文消息

微信公众号上传图文消息涉及两个主要步骤:上传素材获取 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 419

原创 腾讯公众号上传素材代码接口使用

接口地址:`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 517

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

原创 除了redis还有什么分布式锁的方案

除了 Redis,分布式锁的实现还可以借助其他多种技术,每种方案都有其适用场景和优缺点。id VARCHAR(255) PRIMARY KEY, -- 锁名称。:客户端创建一个临时顺序节点,判断自己是否是最小节点(即获得锁)。:性能低于 Redis,但高于 ZooKeeper/etcd。:未获得锁的客户端监听前一个节点的删除事件,实现阻塞等待。云原生应用,已深度集成 AWS/GCP/Azure 服务。// 获取所有子节点,判断自己是否为最小节点。// 尝试写入锁项(条件:Item 不存在)

2025-03-30 11:41:57 257

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

原创 微信公众号GetPreAuthCode err: access_token missing rid: 67e89afa-74d0198e-66e6c2c5

(路径:公众号后台 → 开发 → 基本配置 → IP白名单)。如果仍有问题,建议在代码中添加详细日志,记录接口请求和返回内容,以便进一步分析。可用于联系微信客服或在日志中定位具体请求。,过期后需重新获取。确保你的系统有缓存和刷新机制,避免重复请求或使用过期凭证。若有代理或防火墙,需放行微信 API 域名。并记录获取时间,每次调用接口前检查是否过期。,根据开放平台或公众号模式确认具体参数名)。正确无误(与公众号后台配置一致)。联系微信支持或检查服务器网络配置。泄露或重置过,需使用最新的凭证。

2025-03-30 09:22:47 310

原创 Go实战全家桶之五十五: go nats消息如何使用ants池工作

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

2025-03-29 18:36:51 1200

原创 go开源协程池

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

2025-03-29 18:21:21 439

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

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

目前没有直接提供。

2025-03-29 09:08:43 255

原创 OAuth 2.0 授权协议

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

2025-03-28 17:46:57 326

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

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

2025-03-28 16:57:22 1061

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

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

2025-03-27 10:15:14 454

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

原创 前端页面访问如何计算停留时长

还有一个可能的误差是用户的页面处于后台,或者最小化,这时候用户并没有真正离开,但可能没有活动。可能需要根据具体需求来决定,比如当页面不可见时停止计时,或者在可见时继续累计时间。这时候可能需要结合其他方法,比如心跳检测,定期发送用户的活动状态,如果在一定时间内没有心跳,则认为用户已经离开。首先想到的是,当用户进入页面时记录一个开始时间,然后在用户离开页面的时候记录结束时间,两者的差值就是停留时长。通常情况下,页面停留时长指的是用户在一个页面上停留的时间长度,从进入页面到离开页面的时间差。

2025-03-26 16:42:02 646

原创 go 解析.env

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

2025-03-25 09:07:20 152

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关注的人

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