
golang
文章平均质量分 50
wx_kingstone
这个作者很懒,什么都没留下…
展开
-
基于redis+lua的限速器
基于redis+lua的限速器源码地址支持功能注意点源码地址一个基于redis+lua的限速器支持功能功能含义算法quota配额计数器rate限速滑动窗口注意点当超过配额或者限速时,是返回错误,是直接拒绝式的请求返回不像令牌桶是阻塞式的...原创 2021-08-27 19:35:36 · 268 阅读 · 0 评论 -
golang竞态检测
背景在阅读golang runtime相关代码时,发现有个变量raceenabled,于是查了下文档了解了下具体案例了解raceenabled前,先看这么段代码package mainimport ( "fmt" "sync")var x int = 0func Add(y int) { x = x + y}func Race() { var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1原创 2021-08-25 10:02:32 · 2741 阅读 · 0 评论 -
kafka简易命令行工具
kafka简易命令行工具一、背景介绍二、项目地址三、功能预览一、背景介绍基于sarama实现的kafka命令行工具主要用于测试、debug、运维kafka不依赖额外的so,开箱即用二、项目地址kafka-cmd三、功能预览$ ./kafkacli kafka简易命令行工具(v0.0.1)Usage: kafkacli [command]Available Commands: brokers 列出所有broker信息 completion g原创 2021-08-05 18:33:11 · 198 阅读 · 0 评论 -
golang配置库viper使用教程
golang配置库viper使用教程前言一、配置文件加载二、配置文件热更新三、命令行参数绑定四、环境变量五、默认值设置六、远程监听前言viper作为golang的配置库:多种格式配置文件配置优先级覆盖(个人觉得最好用的地方):overrides:显示设置flags:命令行参数env. variables:环境变量(容器服务非常好用)config file:配置文件key/value store:远程kv数据库defaults:默认值这里简单地介绍一下库使用一、配置文件原创 2021-07-27 23:09:23 · 2076 阅读 · 0 评论 -
golang调用c库函数
golang调用c库函数c语言相关代码golang相关代码golang编译本文章介绍了golang如何调用c语言库函数。如果想调用c++库函数,建议在c++上再封一层c语言代码,编译成c语言动态库,再被golang调用。c语言相关代码cc文件、so编译省略c头文件,mytest.h#ifndef __MYTEST_H_#define __MYTEST_H_#ifdef __cplusplusextern "C" {#endif int TestCgo(const char原创 2021-07-27 22:11:36 · 1800 阅读 · 0 评论 -
一个基于分布式系统的etcd监听者
config-watcher一个基于分布式系统的etcd监听者依赖etcd v3功能监听不丢失:利用etcd revision概念,即使网络不稳定,导致监听器重连,也不会丢失订阅消息封装了etcd watch模块,用户只需关心:获取、设置、更改监听对象时,回调函数触发的相关业务逻辑带有初始值设置功能:分布式系统环境下,利用etcd事务操作,多个节点只会有一个节点执行初始化,无需担忧重复执行,以及开发额外的代码去做初始化操作用法见main.go预览原创 2021-07-23 11:41:14 · 318 阅读 · 0 评论 -
谈谈cgo字符串传递过程中的一些优化
谈谈cgo字符串传递过程中的一些优化前言正文v1.0实现v1.1实现golang string数据结构最终代码注意前言最近做了一些关于golang的开发,由于有些相关模块是c++编译得到的动态库so,且不打算用golang重构一遍,想通过golang直接调用so的方式,来完成模块搭建。查阅了一些golang调用so的方式,最终决定通过cgo的方式去调用so。cgo是golang调用C语言的...原创 2020-04-19 16:14:03 · 2812 阅读 · 0 评论