利用systemd部署golang项目的实现方法

简介 - CentOS 7 继承了 RHEL 7 的新的特性,例如强大的 systemd, 而 systemd 的使用也使得以往系统服务的 /etc/init.d 的启动脚本的方式就此改变, 也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,同时变的简单而易用了许多。 - CentOS 7 的服务 systemctl 脚本存放在:/usr/lib/systemd/,有系统 system 和用户 user 之分, 即:/usr/lib/systemd/system 和 /usr...阅读全文

简书 2021-02-01 02:32:40 零一间

[js go]用go操作mongodb

安装好mongodb后咱们就可以用go来操作mongodb, 进行快乐的CRUD了安装mogodb驱动$ go get github.com/mongodb/mongo-go-driver 复制代码连接mongodb// 设置客户端连接配置 clientOptions := options.Client().ApplyURI("mongodb://user:pwd@server:port/db") // 连接到MongoDB client, err := mongo.Connect(contex...阅读全文

51CTO博客 2021-01-31 20:22:03 mb6013c0cc735b5

[系列] Go - 结构(struct) 实现 接口(interface)

在 Go 语言中,一个 struct 实现了某个接口里的所有方法,就叫做这个 struct 实现了该接口。下面写一个 Demo 实现一下,先写一个 Study interface{},里面需要实现 4 个方法 Listen、Speak、Read、Write,然后再写一个 study struct{},去全部实现里面的方法,然后分享一下代码心得。代码示例// main.go package main import ( "demo/study" "fmt" ) func main() { name ...阅读全文

51CTO博客 2021-01-31 20:10:18 mb6013c0cc735b5

[系列] Go - 学习 grpc.Dial(target string, opts …DialOption) 的写法

咱们平时是这样使用 grpc.Dial 方法的,比如:conn, err := grpc.Dial("127.0.0.1:8000", grpc.WithChainStreamInterceptor(), grpc.WithInsecure(), grpc.WithBlock(), grpc.WithDisableRetry(), )咱们怎么能写出类似这样的调用方式,它是怎么实现的?这篇文章咱们写一个 Demo,其实很简单,一步步往下看。一opts …DialOption,这个是不定参数传递,参...阅读全文

51CTO博客 2021-01-31 20:09:49 mb6013c0cc735b5

[系列] Go - 统一定义 API 错误码

改之前在使用 gin 开发接口的时候,返回接口数据是这样写的。type response struct { Code int `json:"code"` Msg string `json:"msg"` Data interface{} `json:"data"` } // always return http.StatusOK c.JSON(http.StatusOK, response{ Code: 20101, Msg: "用户手机号不合法", Data: nil, })这种写法 code、...阅读全文

51CTO博客 2021-01-31 20:09:31 mb6013c0cc735b5

[系列] Go - 统一定义 API 错误码

改之前在使用 gin 开发接口的时候,返回接口数据是这样写的。type response struct { Code int `json:"code"` Msg string `json:"msg"` Data interface{} `json:"data"` } // always return http.StatusOK c.JSON(http.StatusOK, response{ Code: 20101, Msg: "用户手机号不合法", Data: nil, })这种写法 code、...阅读全文

51CTO博客 2021-01-31 20:08:37 mb6013c0cc735b5

Go操作Redis实战

目录安装Redis客户端连接redis基本指令Keys():根据正则获取keysType():获取key对应值得类型Del():删除缓存项Exists():检测缓存项是否存在Expire(),ExpireAt():设置有效期TTL(),PTTL():获取有效期DBSize():查看当前数据库key的数量FlushDB():清空当前数据FlushAll():清空所有数据库字符串(string)类型Set():设置SetEX():设置并指定过期时间SetNX():设置并指定过期时间Get():获取G...阅读全文

51CTO博客 2021-01-31 19:49:11 mb6013c0cc735b5

Go操作Redis实战

目录安装Redis客户端连接redis基本指令Keys():根据正则获取keysType():获取key对应值得类型Del():删除缓存项Exists():检测缓存项是否存在Expire(),ExpireAt():设置有效期TTL(),PTTL():获取有效期DBSize():查看当前数据库key的数量FlushDB():清空当前数据FlushAll():清空所有数据库字符串(string)类型Set():设置SetEX():设置并指定过期时间SetNX():设置并指定过期时间Get():获取G...阅读全文

51CTO博客 2021-01-31 19:48:45 mb6013c0cc735b5

用helm chart将chripstack部署到kubernetes之上

chirpstack-helm-chart开源lorawan server 项目chirpstack的helm chart , 项目源码如何贡献如果你想对这个项目进行贡献可以点击fork按钮fork这个项目并且发起PRFork贡献的准备工作:Fork这个项目.贡献流程$ git remote add chirpstack-helm-chart git@github.com:liangyuanpeng/chirpstack-helm-chart.git # sync with the remote...阅读全文

Segmentfault 2021-02-02 09:32:33 .container .car 等

Golang 在 runtime 中的一些骚东西

最近在研究性能优化的时候,看到了 golang runtime 包下的一个文档HACKING.md觉得颇有意思,读完之后觉得对于 runtime 的理解更上一层,于是想着翻译一下。本章内容会有一定深度,需要有一定基础的读者,限于篇幅在这里不可能完全展开各个细节。这一篇文档面向的读者是 runtime 的开发者,所以有很多内容在我们普通使用中是接触不到的。这篇文档是会被经常编辑的,并且随着时间推移目前的内容可能会过时。这篇文档旨在说明写 runtime 代码和普通的 go 代码有什么不同,所以关注...阅读全文

51CTO博客 2021-01-31 13:35:03 mb6013c0cc735b5

开源Redis管理工具: ManGe-Redis

# ManGe Redis 工具 > https://github.com/mangenotwork/mange_redis_manage ## 项目简介 > ManGe redis 工具是一款redis操作,监控,预警,远程备份等功能集成的工具;该工具属于开发类辅助工具;该工具先选型为B/S架构; ### 交流群QQ(加群下载最新code,与成品) > 829277568 ## 项目技术选型 ### B/S 1. UI框架: EasyUI 2...阅读全文

Go语言中文网 2021-01-31 13:53:04 mange

[GO] golang happen before 的保证原则

1) 单线程2) Init 函数如果包P1中导入了包P2,则P2中的init函数Happens Before 所有P1中的操作main函数Happens After 所有的init函数3) GoroutineGoroutine的创建Happens Before所有此Goroutine中的操作Goroutine的销毁Happens After所有此Goroutine中的操作4) Channel对一个元素的send操作Happens Before对应的receive 完成操作 , [先发后接]对ch...阅读全文

51CTO博客 2021-01-31 12:58:49 mb6013c048b8fe2

[GO] golang happen before 的保证原则

1) 单线程2) Init 函数如果包P1中导入了包P2,则P2中的init函数Happens Before 所有P1中的操作main函数Happens After 所有的init函数3) GoroutineGoroutine的创建Happens Before所有此Goroutine中的操作Goroutine的销毁Happens After所有此Goroutine中的操作4) Channel对一个元素的send操作Happens Before对应的receive 完成操作 , [先发后接]对ch...阅读全文

51CTO博客 2021-01-31 12:57:19 mb6013c048b8fe2

[js go]go操作redis

使用docker安装redis搜索redis镜像$ docker search redis复制代码拉取最新镜像$ docker pull redis:latest复制代码查看本地镜像$ docker images复制代码运行redis容器, 默认使用6379端口$ docker run -itd --name redis-test -p 6379:6379 redis复制代码查看容器运行消息$ docker ps复制代码测试使用redis$ docker exec -it redis-test ...阅读全文

51CTO博客 2021-01-31 12:55:29 mb6013c048b8fe2

Go语言基础

一、Go基础标识符: go语言中的标识符由字母数字和下划线(_)组成,并且只能以字母和下划线(_)开头关键字: 关键字是指编程语言中预先定义好的具有特殊含义的标识符。关键字和保留字都不建议用作变量名。Go语言有25个关键字:关键字breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitchconstfallthroughifrangetypecontinueforimportreturnvarGo语言有3...阅读全文

51CTO博客 2021-01-31 11:41:50 mb6013c048b8fe2

Go并发编程实战学习(一)

Go语言基础概念go语言特点Go从表面看起来和C相似,基于多种语言的优点并发功能数据抽象面向对象垃圾回收适合构建基础设施类软件(如网络服务器),以及开发的工具和系统云计算时代的C语言go语言特性静态类型和编译型:变量和常量在声明时指定类型,且不可改变跨平台自动垃圾回收原生的并发编程:并发编程模型的组成部分goroutine (Go例程)channle (通道)多编程范式:Go支持函数式编程函数类型为第一等类型面向对象编程:接口类型和实现类型、嵌入替代继承丰富的标准库工程结构工作区Go源码文件必须...阅读全文

51CTO博客 2021-01-31 11:30:56 mb6013c048b8fe2

JAVA与GO语言哪个更容易学?

一,GO语言的优劣势Go开发中的痛点编译慢,失控的依赖,个工程师只是用了一个语言里面的一部分,程序难以维护(可读性差、文档不清晰等),更新的花费越来越长,交叉编译困难Go语言的优势学习曲线容易MGo语言语法简单,包含了类C语法。效率: 快速的编译时间,开发效率和运行效率高,自由高效: 组合的思想、无侵入式的接口,强大的标准库.二,GO与java的比较编译语言,速度适中(2.67s),目前的大型网站都是拿java写的,比如淘宝、京东等。 主要特点是稳定,开源性好,具有自己的一套编写规范,开发效率适...阅读全文

51CTO博客 2021-01-31 10:41:20 mb6013c048b8fe2

Go: Map设计(3)-并发访问

【译文】原文地址 Go博客中关于map的文章表明:map在并发使用中是不安全的,当同时对map进行读写结果是不确定的。如果多个Goroutine需要并发的对map进行读写,需要使用某种同步机制来保证读写安全。 然而,正如FAG中解释的,Goole提供了一些帮助:为了帮助正确使用map,Go语言的一些实现包含特殊的检查,当一个map被并发执行修改不安全时,该检查会在运行时自动报错。 数据竞争检测 我们可以从Go运行时得到的第一个帮助是数据竞争的检查。在运行go程序的时候使用-race参数,将会提供...阅读全文

简书 2021-01-31 00:32:40 汪明军_3145