-
Go微服务 - 第二部分 - 构建第一个Go微服务
所属栏目:[大数据] 日期:2020-12-16 热度:184
第二部分: Go微服务 - 构建我们的第一个服务 第二部分包含: 设置我们的Go工作空间。 构建我们第一个微服务。 通过HTTP使用Gorilla Web Toolkit来提供一些JSON服务。 介绍 虽然通过HTTP提供JSON服务不是内部服务和外部服务的唯一选择,但本文聚焦的是HTTP和JS[详细]
-
介绍 Echoo: go 语言编写的 echo 服务器
所属栏目:[大数据] 日期:2020-12-16 热度:152
原文地址 简介 最近由于要配置 nginx 服务器,里面有个代理转发(proxy_pass)的功能,能够将当前服务器接收到的请求转发给其他服务器来处理。 但是在配置当中,我发现我无法确认我的 proxy_pass 是否生效,网上现成的 echo 服务又不怎么满足我的要求,所以[详细]
-
Golang 在 Mac、Linux、Windows 下如何交叉编译
所属栏目:[大数据] 日期:2020-12-16 热度:105
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windo[详细]
-
Golang中的奇怪类型定义语法(name,then type,then string litera
所属栏目:[大数据] 日期:2020-12-16 热度:159
我一直在试图找出如何使用mgo(MongoDB驱动程序Go),我遇到了这个struct声明: type Something struct { Id bson.ObjectId "_id,omitempty" Name string} 我不太了解第一个元素(Id)的语法。我知道它被声明为类型bson.ObjectId,但是在那里的字符串文字是什么[详细]
-
golang第三方日志包seelog配置文件详解
所属栏目:[大数据] 日期:2020-12-16 热度:155
开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提。在golang中, seelog 应该是比较有名的日志处理包了,功能非常强大, seelog 官方文档 一、seelog主要功能 下面我们看看 seelog 有啥强大 设置不同级别的日志; 输出到终端或文[详细]
-
golang slice 源码分析
所属栏目:[大数据] 日期:2020-12-16 热度:81
slice 结构定义 type slice struct { array unsafe.Pointer len int cap int } 创建slice // maxSliceCap returns the maximum capacity for a slice. func maxSliceCap(elemsize uintptr ) uintptr { if elemsize uintptr ( len (maxElems)) { return maxEl[详细]
-
golang unsafe point
所属栏目:[大数据] 日期:2020-12-16 热度:101
package main import ( "fmt" "unsafe" ) type Entity struct { a byte b byte } func main() { entity := Entity{} fmt.Println(entity) p := unsafe.Pointer(entity) // 转换成通用指针 unsafe.Pointer 类型 uintpa := uintptr (p) // 保存结构体 entity[详细]
-
Golang template 高级问题
所属栏目:[大数据] 日期:2020-12-16 热度:177
Golang template 常见问题 ————不解决随意可以百度的问题 template 语法 {{with .Var}} 在下文可以用{{.}} 判断相等用 {{eq .x .y}} 获取数组长度 {{len .papers}} 判断数组长度为0 {{eq (len .papers) 0}} template 自定义函数 FuncMaps 如果是ParseFil[详细]
-
基于go的微服务搭建(四)- 用GoConvey做测试和mock
所属栏目:[大数据] 日期:2020-12-16 热度:180
第四章:用GoConvey做测试和mock 我们应该怎样做微服务的测试?这有什么特别的挑战么.这节,我们将看下面几点: 单元测试 用Goconey写行为模式的单元测试 介绍mocking技巧 因为这章不会改变核心服务代码,所以没有基测 微服务测试简介 首先,你必须记住测试金字塔:[详细]
-
基于go的微服务搭建(六) - health check
所属栏目:[大数据] 日期:2020-12-16 热度:90
第六节:health check 原文地址 转载请注明原文及翻译地址 当我们的微服务越来越复杂,让docker swarm知道我们的服务运行良好与否很重要.下面我们来看一下如何查看服务运行状况. 例如,我们的accountservice服务将没用如果不能 服务http或者链接数据库. 最好的[详细]
-
使用golang 实现JSON-RPC2.0
所属栏目:[大数据] 日期:2020-12-16 热度:78
本文同时发布于我的博客 yeqown.github.io 什么是RPC? 远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件[详细]
-
Golang实现AES/CBC/PKCS5Padding算法
所属栏目:[大数据] 日期:2020-12-16 热度:183
使用golang实现AES算法很简单,系统库中已自带了CBC、CFB等等许多加密模式,而且可以很方便的设置IVPara,但是前几日在做AES加密时,发现传入的key必须是128bit、192bit或256bit,记得当时用Java实现的时候并没有这个问题。AES中的key的确是必须满足以上要求[详细]
-
golang goroutine 并发递增
所属栏目:[大数据] 日期:2020-12-16 热度:144
package main import ( "sync/atomic" "fmt" "sync" ) func main() { var wg sync.WaitGroup var a int32 = 0 // goroutine指向的外部变量地址 for i := 1 ; i 100 ; i++ { wg.Add (1 ) go func (incr int32 ) { for !atomic.CompareAndSwapInt32(a,a,a+incr[详细]
-
Golang之wait.Until 简单测试用例
所属栏目:[大数据] 日期:2020-12-16 热度:62
测试目的,验证wait.Until的用法 //测试wait.Until() 的用途package mainimport ( "fmt" "k8s.io/apimachinery/pkg/util/wait" "time")type stop struct {}func main() { stopCh := make(chan struct{}) //初始化一个计数器 i := 0 go wait.Until(func() { f[详细]
-
golang工具之present
所属栏目:[大数据] 日期:2020-12-16 热度:130
Golang Present 是 Golang 社群开发出來的一个简单工具,通过简单的语法可以制作 ppt(语法近似于 Markdown)。 简介 Golang 相关的技术幻灯片有多种格式,以 .ppt,.pdf 和 .slide 为主。 .slide 格式是随着 golang 诞生而出现的一种 present 格式,Go 核心开[详细]
-
go标准库之flag包
所属栏目:[大数据] 日期:2020-12-16 热度:93
命令行参数常用来为命令行程序指定选项。比如在 wc -l 命令中 -l 就是命令行参数。 golang 提供了 flag 包来支持基本的命令行参数解析。 命令行语法 命令行语法如下: -flag-flag=x-flag x // non-boolean flags only 基本用法 定义 flag 参数 方法一 : 通[详细]
-
数组 – 在golang的嵌套结构体内初始化一个结构体数组
所属栏目:[大数据] 日期:2020-12-16 热度:191
我想知道如何在嵌套结构体内定义和初始化结构体数组,例如: type State struct { id string `json:"id" bson:"id"` Cities }type City struct { id string `json:"id" bson:"id"`}type Cities struct { cities []City} 现在我如何初始化这样的结构,如果有[详细]
-
gf框架之分页模块(一) - 基本介绍
所属栏目:[大数据] 日期:2020-12-16 热度:155
文章来源:http://gf.johng.cn/597431 分页管理由 gpage 包实现,gpage提供了强大的动态分页及静态分页功能,并且为开发者自定义分页样式提供了极高的灵活度。 使用方式: import "gitee.com/johng/gf/g/util/gpage" 方法列表:godoc.org/github.com/johng-c[详细]
-
gf框架之分页模块(二) - 动态分页
所属栏目:[大数据] 日期:2020-12-16 热度:170
文章来源:http://gf.johng.cn/597432 动态分页是通过 GET 参数(通过 QueryString )传递分页参数,默认分页参数为 page 。 示例如下: package mainimport ( "gitee.com/johng/gf/g/os/gview" "gitee.com/johng/gf/g/net/ghttp" "gitee.com/johng/gf/g/util/[详细]
-
gf框架之分页模块(五) - 自定义分页
所属栏目:[大数据] 日期:2020-12-16 热度:73
文章来源:http://gf.johng.cn/597435 由于分页对象预定义的样式比较有限,有的时候我们想自定义分页的样式(标签输出),由于分页对象的的所有方法都是公开的,这便为开发者自定义分页样式提供了非常高的灵活度。开发者可以通过以下方式实现自定义分页内容[详细]
-
Go微服务 - 第四部分 - 使用GoConvey进行测试和模拟
所属栏目:[大数据] 日期:2020-12-16 热度:149
第四部分: Go微服务 - 使用GoConvey进行测试和模拟 如何对待微服务的测试? 当为这个特定领域建立测试策略时,是否需要考虑任何独特的挑战? 在第四部分,我们将看看这些话题。 单元上下文中测试微服务的主题。 书写GoConvey的BDD样式的单元测试。 介绍模拟技[详细]
-
Go微服务 - 第六部分 - 健康检查
所属栏目:[大数据] 日期:2020-12-16 热度:156
第六部分: Go微服务 - 健康检查 随着我们的微服务越来越多,越来越复杂, 需要一种可以让Docker Swarm知道服务是否健康的机制就变得十分重要了。因此,本文重点看看如何为微服务加入健康检查。 假如accountservice微服务不具备下面的能力,就毫无用处了: 提[详细]
-
panic: time: missing Location in call to Time.In
所属栏目:[大数据] 日期:2020-12-16 热度:193
前提 1、docker 空镜像(或类似环境) 2、Go 应用中 使用了 loc,_ := time.LoadLocation("Asia/Chongqing") 问题 $ go run ./xxxpanic: time:missing Location in call to Time.In 原因 时间的位置信息是从本地文件系统中提取的,大多数系统都支持它,但还是[详细]
-
gf框架之平滑重启特性 - 功能强大灵活
所属栏目:[大数据] 日期:2020-12-16 热度:69
文章来源:http://gf.johng.cn/625833 基本介绍 平滑重启(热重启)是指Web Server在重启的时候不会中断已有请求的执行。该特性在不同的项目版本发布的时候特别有用,例如,当需要先后发布两个版本:A、B,那么在A执行的过程当中,我们可以将B的程序直接发布覆[详细]
-
Go微服务 - 第十部分 - 集中化日志
所属栏目:[大数据] 日期:2020-12-16 热度:181
第十部分: Go微服务 - 集中化日志 本文介绍我们的Go微服务基于Logrus、Docker Gelf日志驱动以及Loggly服务(Logging as a Service)的日志策略。 Logrus: Go语言中的结构化、可插拔日志功能。 Docker Gelf日志驱动器: 是一种方便的格式,可以被很多工具理解,[详细]
