Golang
文章平均质量分 64
刘贤松
人间走一遭,看见景繁华与喧闹,看见美好与祥和!
展开
-
Excelize Go语言操作 Office Excel文档基础库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。原创 2023-08-15 18:18:33 · 1543 阅读 · 1 评论 -
Golang 规则引擎原理及实战
随着业务代码的不断迭代,诞生出了越来越多的 if-else,并且 if-else 中的逻辑越来越复杂,导致代码逻辑复杂、维护性差、可读性差、修改风险高等缺陷。复杂的 if-else 逻辑其实对应的是一条条的规则,满足对应的规则在执行对应的操作,即 if-else 中的条件就是一个对应的 bool 表达式:...原创 2022-08-26 14:28:07 · 2174 阅读 · 3 评论 -
Docker格式化输出命令:“docker inspect --format“
变量系统变量 {{.}}点号表示当前对象及上下文,和 Java、C++ 中的 this 类似。可以直接通过{{.}}获取当前对象。另外,如果返回结果也是一个 Struct 对象(Json 中以花括号/大括号包含),则可以直接通过点号级联调用,获取子对象的指定属性值。.........原创 2022-08-12 14:57:15 · 1557 阅读 · 0 评论 -
fsnotify 文件系统通知
fsnotify文件系统通知;跨平台:Windows、Linux、BSD 和 macOS。转载 2022-06-27 14:51:41 · 172 阅读 · 0 评论 -
Golang下sync.Mutex专题
Mutex有两种操作模式:正常模式(非公平模式)阻塞等待的goroutine保存在FIFO的队列中,唤醒的goroutine不直接拥有锁,需要与新来的goroutine竞争获取锁。因为新来的goroutine很多已经占有了CPU,所以唤醒的goroutine在竞争中很容易输;但如果一个goroutine获取锁失败超过1ms,则会将Mutex切换为饥饿模式。饥饿模式(公平模式)这种模式下,直接将等待队列队头goroutine解锁goroutine;新来的gorountine也不会尝试获得锁,而是直原创 2022-06-20 11:28:37 · 407 阅读 · 0 评论 -
go mod 调试本地依赖扩展包
在当前项目中,执行go mod edit -replace命令:go mod edit -replace [old git package]@[version]=[new git package]@[version]执行完命令后,我们打开 go.mod 文件,发现最下面多了一条指令:replace github.com/ozgio/strutil v0.3.0 => github.com/shiweifu/strutil v0.3.0go mod replace 指令支持...原创 2022-05-18 20:14:47 · 462 阅读 · 0 评论 -
Go交叉编译 Build(Mac/linux/Windows)
Go交叉编译 Build(Mac/linux/Windows)原创 2022-04-25 18:59:43 · 4213 阅读 · 0 评论 -
Go语言中defer和return解析
// Go语言中函数的return不是原子操作,在底层是分为两步来执行// 第一步:返回值赋值// defer// 第二步:真正的RET返回// 函数中如果存在defer,那么defer执行的时机是在第一步和第二步之间原创 2022-04-15 09:35:21 · 3443 阅读 · 4 评论 -
Makefile构建Golang项目
Make解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile文件构建规则都写在Makefile文件里面,要学会如何Make命令,就必须学会如何编写Makefile文件。原创 2022-04-09 10:57:44 · 856 阅读 · 0 评论 -
docker限制容器下载速度
限制容器的下载速度,使用tc命令实现上传下载的限制,如要限制容器的上传的速度,需要在应用的容器内安装iproute工具包,使用tc命令在容器启动时限制。在启动容器时添加标签,org.label-schema.tc.enabled值为1启用限制,非1不启用。org.label-schema.tc.rate配置最小带宽限制。org.label-schema.tc.ceil配置最大带宽限制。原创 2022-04-01 18:32:24 · 4550 阅读 · 0 评论 -
HTTP的并发下载 Accept-Ranges
主要讲三个方面,如何HTTP的并发下载、通过Golang进行多协程开发、如何断点续传。想要并发下载,就是把下载内容分块,然后并行下载这些块。这就要求服务器能够支持分块获取数据。大迅雷、电驴这种都有自己的协议,thunder://这种,我们只研究原理,就说说HTTP协议对于并发的支持。原创 2022-03-23 11:24:24 · 6403 阅读 · 0 评论 -
Golang hijack 劫持
简介Hijacktype Hijacker interface { // Hijack lets the caller take over the connection. // After a call to Hijack the HTTP server library // will not do anything else with the connection. // // It becomes the caller's responsibility to原创 2022-02-14 10:25:50 · 1103 阅读 · 0 评论 -
Go 源码里的这些 //go: 指令,你知道吗?
Go 源码原创 2022-01-25 20:13:31 · 471 阅读 · 0 评论 -
Golang三剑客之Pflag、Viper、Cobra
Golang三剑客之Pflag、Viper、Cobra原创 2022-01-13 11:25:59 · 2771 阅读 · 0 评论 -
Go语言中使用 BoltDB数据库
Bolt 是受Howard Chu 的 LMDB 项目启发的纯 Go 键/值存储。该项目的目标是为不需要完整数据库服务器(如 Postgres 或 MySQL)的项目提供简单、快速且可靠的数据库。由于 Bolt 旨在用作此类低级功能,因此简单性是关键。API 会很小,只专注于获取值和设置值原创 2021-12-30 14:10:58 · 1048 阅读 · 0 评论 -
go 定位函数操作位置(文件名、函数名、所在行)
go 定位函数操作位置(文件名、函数名、所在行)原创 2021-12-06 15:56:30 · 633 阅读 · 0 评论 -
Go语言(Pingo)插件化开发
Pingo 是一个用来为Go语言程序编写插件的简单独立库,因为 Go 本身是静态链接的,因此所有插件都以外部进程方式存在。Pingo 旨在简化标准 RPC 包,支持 TCP 和 Unix 套接字作为通讯协议。当前还不支持远程插件,如果有需要,远程插件很快会提供。使用 Pingo 创建一个插件非常简单,首先新建目录,如 "plugins/hello-world" ,然后在该目录下编写 main.go:// 创建新的二进制文件package mainimport "github.com/dullg原创 2021-11-28 11:34:53 · 1154 阅读 · 0 评论 -
I see Go 反射reflect[rɪˈflekt] import “reflect“ 搞一个SQL生成器
本文的思路参考自:https://golangbot.com/reflection/ ,本文内容并非只是对原文的简单翻译,具体看下面的内容吧~!准备通过用反射搞一个通用的SQL构造器的例子,带大家理解掌握反射知识点。看了国外一个博主写的例子,觉得思路很好,我又对其进行了改进,让构造器的实现更丰富了些。什么是反射?答:反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能为什..原创 2021-11-03 10:01:48 · 184 阅读 · 0 评论 -
seata-golang 接入指南-分布式事务
介绍:seata-golang 是一个分布式事务框架,实现了 AT 模式和 TCC 模式,AT 模式相较 TCC 模式对代码的入侵性更小、需要开发的接口更少;但 AT 模式对事务操作的数据持有全局锁,从这点来说,TCC 模式性能更好。引文:seata-golang 接入指南举例:有三个微服务:product_svc、order_svc、aggregation_svc。 product_svc 负责创建订单时扣减库存。 order_svc 负责创建订单时写入订单主表和订单明细表..原创 2021-10-14 14:39:34 · 808 阅读 · 0 评论 -
论“单例模式”三种语言(PHP、Golang、Java)对比及使用
单例模式(Singleton Pattern)这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地转载 2021-06-13 07:55:18 · 434 阅读 · 0 评论 -
Golang + 任务调度(xxl-job-executor-go)+ 搭配定时cron
前言XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。提示:以下是本篇文章正文内容,下面案例可供参考一、xxl-job-executor-go是什么?很多公司java与go开发共存,java中有xxl-job做为任务调度引擎,为此也出现了go执行器(客户端),使用起来比较简单:支持1.执行器注册2.耗时任务取消3.任务注册,像写http.Handler一样方便4.任务pa..原创 2021-01-28 11:09:47 · 8401 阅读 · 0 评论 -
Golang - 协程池 ants.NewPoolWithFunc使用介绍
ants是一个高性能的协程池,实现了对大规模goroutine的调度管理、goroutine复用,允许使用者在开发并发程序的时候限制协程数量,复用资源,达到更高效执行任务的效果。原创 2021-01-28 09:52:02 · 5358 阅读 · 2 评论 -
Golang接口 interface 和结构体struct
前言如果说最纯粹的面向对象语言,我觉得是Java无疑。而且Java语言的面向对象也是很直观,很容易理解的。class是基础,其他都是要写在class里的。最近学习了Go语言,有了一些对比和思考。虽然我还没有完全领悟Go语言“Less is more”的编程哲学,思考的方式还是习惯从Java的角度出发,但是我还是深深的喜欢上了这门语言。提示:以下是本篇文章正文内容,下面案例可供参考一、golang有类(class)吗?golang没有类(class)。golang中并没有明确的面向..原创 2020-12-10 15:10:33 · 954 阅读 · 0 评论