
golang
文章平均质量分 54
beyond阿亮
程序人生,一路踩坑,一路填坑
展开
-
golang 获取系统的主机 CPU 内存 磁盘等信息
官方地址:https://github.com/shirou/gopsutil。需要go1.18或更高版本。调用接口,查看接口响应数据。原创 2024-06-28 19:01:47 · 1303 阅读 · 0 评论 -
golang sqlite主从数据同步插件开发
同理,我们按sql执行顺序记录所有的增删改查的sql语句,然后调用接口把sql语句传到从服务上执行。参考Mysql的主从同步机制,Mysql是产生binlog,然后把binlog日志同步到从服务上。sql要按顺序发送给从库执行,执行后要返回结果,返回成功后在发送下一条执行。数据库驱动使用的是 GORM。原创 2024-05-22 18:51:48 · 546 阅读 · 0 评论 -
golang windows 环境搭建 环境配置
src:项目源代码目录,所有项目都放在此目录,在以前没有go mod管理出现时,项目代码必须放在这个目录,有了go mod后可以放在任意位置了,但我习惯这么配置,出现问题的概率会小很多。下载对应系统版本,例如windows 64位系统,下载:xxx.windows-amd64.zip。VScode,IDEA,Goland,Sublime 都可以作为Golang的开发工具。pkg:项目中用到的第三方包,go get 默认会下载到此目录。bin:安装的可执行程序,如:swag、bee。解压下载的对应版本的包。原创 2024-02-06 18:36:51 · 1185 阅读 · 2 评论 -
golang开源定时任务调度框架
cron一个基于Cron表达式的定时任务库,可以精确到秒级。它提供了简单易用的API来定义和管理定时任务,支持任务暂停、恢复、删除等操作,同时还能够在多个节点之间共享状态信息。目前在github中的star最多,最为流行。官方网站地址:https://github.com/robfig/crongo-crontab一个轻量级的定时调度库,也是基于Cron表达式的。它支持多种调度方式,包括分布式调度、集群调度,同时还提供了Web控制台和RESTful API接口,非常方便使用。原创 2024-02-04 19:20:32 · 3529 阅读 · 0 评论 -
golang的sqlite驱动不使用cgo实现 更换gorm默认的SQLite驱动
启用CGO后,编译的是动态链库的二进制文件,那么你一旦更换平台,比如将程序放到Windows下运行,可能因为缺少相关的一些动态链库(比如:SQLite)从而无法运行,为了保持编译的二进制文件能够无动态依赖的情况下正常运行,因此不得不考虑静态编译,所以就和GORM SQLite驱动产生了冲突。很多瘦小设备,弱设备里的系统,没有相关依赖库和驱动,也很难安装相关的驱动,此时不得不考虑使用不依赖任何三方的驱动情况下运行程序。这样就可以在不依赖CGO的情况下编译出静态二进制文件,从而解决跨平台依赖动态链库的问题。原创 2024-02-01 19:28:15 · 4423 阅读 · 0 评论 -
golang开源的可嵌入应用程序高性能的MQTT服务
MQTT(Message Queuing Telemetry Transport)是一种轻量级的、开放的消息传输协议,设计用于在低带宽、高延迟或不可靠的网络环境中进行通信。MQTT最初由IBM开发,现已成为OASIS标准。MQTT的设计目标是提供一种简单、轻量、可扩展的协议,适用于各种设备和网络条件。它通常用于物联网(IoT)和传感器网络,其中设备需要以有效的方式进行通信,并且资源(如带宽和电池寿命)可能受到限制。MQTT的简单设计和适用性使其成为物联网中常用的通信协议之一。原创 2024-01-31 19:12:47 · 3101 阅读 · 0 评论 -
golang一个轻量级基于内存的kv存储或缓存
基于内存的特性决定了其不需要网络传输其内容,因此就不存在网络耗时。在使用时,一般都是将go-cache作为数据缓存来使用,而不是持久性的数据存储。对于停机后快速恢复的场景,go-cache支持将缓存数据保存到文件,恢复时从文件中load数据加载到内存。go-cache是一个轻量级的基于内存的key:value 储存组件,类似于memcached,适用于在单机上运行的应用程序。它在并发的时候,线程安全(读写锁) + map[string]interface{} + 过期时间 来作为go的本地化存储。原创 2024-01-10 18:40:47 · 1035 阅读 · 0 评论 -
golang函数作为参数传递和函数类型
golang中函数方法也可以作为其它函数的参数进行传递,然后在其它函数内调用执行,一般称之为回调函数或方法。原创 2023-03-13 18:46:14 · 698 阅读 · 0 评论 -
golang文件读写操作
golang文件读写操作原创 2023-03-01 18:53:00 · 210 阅读 · 0 评论 -
Golang 连接ETCD 监控数据变化
Golang代码连接etcd, 并监听指定key的动态变化。原创 2023-01-27 21:39:41 · 793 阅读 · 0 评论 -
Golang RPC介绍使用
RPC是远程调用的简称, 简单的说就是要像调用本地函数一样调用服务器的函数.gRPC是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。它的目标的跨语言开发,支持多种语言, 服务治理方面需要自己去实现,所以要实现一个综合的产品级的分布式RPC平台还需要扩展开发。Google内部使用的也不是gRPC,而是Stubby。原创 2023-01-13 18:48:53 · 758 阅读 · 0 评论 -
golang exception error 异常 错误 处理
错误和异常的区别是,错误是业务逻辑的一部分,异常不是。而且异常有可能终止业务逻辑。在golang中,异常不要用来代替错误,更不要用来控制流程。golang提供了panic, recover和defer来实现异常的抛出和捕捉。函数中调用panic()抛出异常后,程序会马上中止当前的运行,跳转到延时调用(defer语句),如果defer中调用了recover(),则异常被捕捉,程序继续执行;否则,当前函数的defer执行完后返回到上一个调用函数执行defer,如果到最顶层函数都没遇到recover(),程序崩溃原创 2022-12-05 18:33:56 · 451 阅读 · 0 评论 -
Golang MQTT的使用 实现发布订阅
Go应用使用mqtt通信协议的时候, 是作为client端使用的, server端自然需要一个服务来承载, 有很多软件提供MQTT协议支持, 比如mosquitto mqtt, emqx, smqtt, rabbitmq mqtt, pulsar mop mqtt等等.Eclipse Paho MQTT Go Client 为 Eclipse Paho 项目下的 Go 语言版客户端库,该库能够连接到 MQTT Broker 以发布消息,订阅主题并接收已发布的消息,支持完全异步的操作模式。原创 2022-10-27 19:18:30 · 2678 阅读 · 0 评论 -
Golang cron 定时器和定时任务
timer定时器表示在一段时间后执行,默认情况下只执行一次,如果想再次执行的话,每次都需要调用 time.Reset() 方法,此时效果类似ticker定时器。Ticker是一个周期触发定时的计时器,它会按照一个时间间隔往channel发送系统当前时间,而channel的接收者可以以固定的时间间隔从channel中读取事件。timer定时器比ticker定时器多一个 Reset() 方法,两者都有 Stop() 方法,表示停止定时器,底层都调用了stopTimer() 函数。Timer是一个定时器。原创 2022-09-29 22:26:47 · 1719 阅读 · 0 评论 -
go语言原生web框架 golang项目-书城商店
书城主页 分页展示 价格搜索 登录注册 加入购物车 购买 我的订单 查看详情后台管理 图书管理 添加修改删除图书 订单管理 发货go语言原生web框架开发的一个 “书城商店” 网站 数据库使用mysql。...原创 2022-08-29 22:23:13 · 789 阅读 · 0 评论 -
beego框架_golang web框架使用介绍
beego是一个快速开发Go应用的http框架,go 语言方面技术大牛。beego可以用来快速开发API、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。原创 2022-08-23 19:05:33 · 1044 阅读 · 0 评论 -
Golang AES加密解密
GolangAES加密解密原创 2022-07-21 19:04:30 · 3908 阅读 · 0 评论 -
Golang学习之路一八类型别名和转换
Golang学习之路一八类型别名和转换类型别名使用 type 关键字自定义类型package mainimport ( "fmt" "reflect")// type 自定义类型名 原类型type myint intfunc main() { var v1 myint v1 = 10 fmt.Println(reflect.TypeOf(v1))}// 输出结果: main.myint类型转换go 语言不允许隐式转换package mainimport (原创 2022-01-31 23:07:12 · 1170 阅读 · 0 评论 -
Iris微服务框架_golang web框架_完整示例Demo
Iris简介Iris是一款Go语言中用来开发web应用的框架,该框架支持编写一次并在任何地方以最小的机器功率运行,如Android、ios、Linux和Windows等。该框架只需要一个可执行的服务就可以在平台上运行了。Iris框架以简单而强大的api而被开发者所熟悉。iris除了为开发者提供非常简单的访问方式外,还同样支持MVC。另外,用iris构建微服务也很容易。在iris框架的官方网站上,被称为速度最快的Go后端开发框架。在Iris的网站文档上,列出了该框架具备的一些特点和框架特性,列举如下:原创 2022-01-28 23:58:57 · 2861 阅读 · 0 评论 -
Golang学习之路一七fmt的使用
Golang学习之路一七fmt的使用格式化参数列表格式含义%%一个%字面量%b一个二进制整数值(基数为 2),或者是一个(高级的)用科学计数法表示的指数为 2 的浮点数%c字符型。可以把输入的数字按照 ASCII 码相应转换为对应的字符%d一个十进制数值(基数为 10)%e以科学记数法 e 表示的浮点数或者复数值%E以科学记数法 E 表示的浮点数或者复数值%f以标准记数法表示的浮点数或者复数值%g以%e 或者%f 表示的浮点数原创 2022-01-25 22:18:58 · 810 阅读 · 0 评论 -
Golang Web框架性能对比
Golang Web框架性能对比github star排名依次: Gin Beego Iris Echo Revel Buffalo性能上gin、iris、echo网上是给的数据都是五星,beego三星,revel两星beego是国产,有中文文档,文档齐全根据star数,性能,易用程度,社区活跃度和具体应用场景来选择的话,当前我更加倾向于使用gin作为基础开发框架,可以获得比使用原生包更高的开发效率和执行效率,组织好代码结构,按需加入依赖包即可。个人建议: 如果是后端开发,追求性能原创 2022-01-19 21:32:27 · 6808 阅读 · 0 评论 -
Golang学习之路一六运算符
Golang学习之路一六运算符算数运算符符号说明+相加-相减*相乘/相除%求余++自增–自减package mainimport "fmt"func main() { a := 10 b := 6 // + fmt.Println(a+b) // - fmt.Println(a-b) // * fmt.Println(a*b) // / fmt.Println(a/b) // % fmt.Prin原创 2022-01-18 21:32:05 · 398 阅读 · 0 评论 -
Golang学习之路一五变量和常量小结
Golang学习之路一五变量和常量小结package mainimport "fmt"func main() { //声明初始化一个变量 var x int = 100 var str string = "hello world" //声明初始化多个变量 var i, j, k int = 1, 2, 3 //不用指明类型,通过初始化值来推导 var b = true //bool型 const LENGTH int = 10 //常量 fmt.Println(x, str原创 2022-01-15 21:43:48 · 203 阅读 · 0 评论 -
Golang学习之路一四常量与枚举
Golang学习之路一四常量与枚举常量const 关键字 定义常量package mainimport "fmt"// 声明在函数外部const filename = "123.txt"const ( username = "admin" password = "admin")func main() { // 声明在函数的内部 const filename = "456.txt" fmt.Println(filename)}iota常量生成器和枚举类型packa原创 2022-01-13 22:08:26 · 317 阅读 · 0 评论 -
Golang学习之路一三基本数据类型
Golang学习之路一三基本数据类型基本数据类型int8 是有符号类型,uint8 是无符号类型go 语言中不同类型的数据不能相加,会编译错误类型名称长度零值说明bool布尔类型1false值为 true 或 false, 不可以用数字代表byte字节型10uint8rune字符类型40专用于存储 unicode 编码,等价于 uint32int, uint整型4 或 8032 位或 64 位int8, u原创 2022-01-09 22:04:59 · 550 阅读 · 0 评论 -
Golang学习之路一二基础语法与变量
Golang学习之路-二基础语法与变量命名规则go 语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则必须以一个字母或下划线_开头,后面可以跟任意数量的字母、数字或下划线go 语言中大小写字母认为是不同的go 语言中有 25 个关键字,不能用于自定义名字breakdefaultfuncinterfaceselectcasedeftergomapstructchanelsegotopacka原创 2022-01-08 21:34:15 · 414 阅读 · 0 评论 -
Golang学习之路一一Hello, World
Golang学习之路一一Hello, Worldgolang工作目录下src下新建一个项目demo,如图:在demo下新建hello_world.go文件,内容如下:package main //声明本文件的package名import "fmt" //import语言的fmt库——---用于输出func main() { fmt.Println("Hello, World!")}func init() { fmt.Println("init")}// go run hell原创 2021-12-28 21:49:48 · 369 阅读 · 0 评论 -
Golang学习之路一环境搭建
Golang学习之路一环境搭建MacBook Linux 树莓派raspberrypi安装Golang环境官网下载地址: https://golang.google.cn/dl/配置golang环境变量tar -zxvf xxx.tar.gz 解压vim ~/.bashrc 或 (vim /etc/profile)#最后添加export GOROOT=/Users/liang/software/go1.10.3export PATH=$GOROOT/bin:$PATHexport G原创 2021-12-27 21:11:51 · 9116 阅读 · 0 评论 -
Golang学习之路一开山篇
Golang学习之路一开山篇初识 Golang我第一次接触 Golang 是在2016年, 当时在深圳工作, 项目需要用Golang, 当时在犹豫要不要学还是走, 毕竟Java开发搞了很多年了, 说放弃还是有难度的, 其实也不是放弃Java, 说不定其他项目还是要使用Java. 在领导的再三劝说下, 开启了Golang学习之路, 领导给了一周时间学习, 然后就在项目开发中边学习边开发。我觉得一个好的程序员不可能只会一门语言, 要不断学习新技术提升自己,实现更大的价值.刚开始用 Golang 这种静态原创 2021-12-25 22:12:38 · 1118 阅读 · 2 评论 -
MacBook上godep安装和使用
MacBook上godep安装和使用#会在bin目录生成godep可执行文件go get github.com/tools/godep #把godep可执行文件放到go的bin目录cp bin/godep /Users/liang/software/go1.10.3/bin/godep helpGodep version#编译成二进制文件,执行二进制文件启动项目 如:./web-sdkgodep go buildGodeps/Godeps.json文件 就相当于 java 的ma原创 2021-08-21 21:59:03 · 908 阅读 · 2 评论 -
Gin微服务框架_golang web框架_完整示例Demo
Gin简介Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。gin特点性能优秀基于官方的net/http的有限封装方便 灵活的中间件数据绑定很强大社区比较活跃官方源代码地址: ht原创 2021-07-23 21:45:43 · 10334 阅读 · 8 评论 -
golang操作sqlite3
先安装好sqlite3,Golang环境MacBook Linux Windows等系统安装sqlite3MacBook Linux 树莓派raspberrypi安装Golang环境sqlite3基本操作sqlite3 /Users/liang/Downloads/foo.db.databases.quit.exit.tablesCREATE TABLE `userinfo` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT,`username`原创 2021-07-14 09:17:01 · 3560 阅读 · 4 评论 -
golang连接IoTDB时序库
先安装好Golang环境MacBook Linux 树莓派raspberrypi安装Golang环境package mainimport ( "flag" "fmt" "log" "math/rand" "time" "github.com/apache/iotdb-client-go/client" "github.com/apache/iotdb-client-go/rpc")var ( host string port string user原创 2021-07-11 11:23:20 · 1136 阅读 · 2 评论 -
golang连接sqlserver数据库
先安装好Golang环境MacBook Linux 树莓派raspberrypi安装Golang环境package mainimport ( "database/sql" "flag" "fmt" "log" _ "github.com/denisenkom/go-mssqldb")var ( debug = flag.Bool("debug", false, "enable debugging") password = flag.String("pa原创 2021-07-10 18:34:46 · 2709 阅读 · 3 评论 -
MacBook Linux 树莓派raspberrypi安装Golang环境
个人还是比较喜欢用go语言开发,比java开发效率高,以后会持续更新golang相关的博客MacBook安装golang环境官方下载地址: https://golang.google.cn/dl/官方下载Mac对应版本 tar.gz包 OS macOS 版本 x86-64#解压tar -zxvf xxx.tar.gz #配置环境变量vim ~/.zshrc #文件最后加入export GOROOT=/Users/liang/software/go1.15.6export GO_HOM原创 2021-06-25 22:29:53 · 1072 阅读 · 2 评论 -
Golang连接Oracle数据库两种方式
Golang连接Oracle 需要安装Oracle Full Client或Instant Client 驱动程序Linux安装Golang Oracle数据库驱动程序MacBook安装Golang Oracle数据库驱动程序方式一使用go get github.com/mattn/go-oci8在GoPath的src目录下创建oracleoci8.go,内容如下:package mainimport ( "database/sql" "fmt" _ "github.com/mattn原创 2021-05-24 23:07:58 · 5617 阅读 · 4 评论 -
Linux安装Golang Oracle数据库驱动程序
Golang连接Oracle 需要安装Oracle Full Client或Instant ClientOracle的Instant Client套件下载地址#选择Instant Client for Linux x86-64下载包如下:instantclient-basic-linux.x64-21.1.0.0.0.zipinstantclient-sqlplus-linux.x64-21.1.0.0.0.zipinstantclient-sdk-linux.x64-21.1.0.0.0.zip原创 2021-05-21 15:18:29 · 1541 阅读 · 2 评论 -
MacBook安装Golang Oracle数据库驱动程序
Golang连接Oracle 需要安装Oracle Full Client或Instant ClientOracle的Instant Client套件下载地址#选择Instant Client for macOS (Intel x86)下载包如下:instantclient-basic-macos.x64-19.8.0.0.0dbru.zipinstantclient-sdk-macos.x64-19.8.0.0.0dbru.zipinstantclient-sqlplus-macos.x64-1原创 2021-05-18 23:37:35 · 1212 阅读 · 6 评论