教你如何搭建自己的go-gin框架(五 路由支持中间件)

## 引言 > 简单说下本章的重点 * 1、路由支持中间件 * 2、新增日志中间件 * 4、新增异常错误中间件 * 3、[代码地址 https://github.com/18211167516/go-Ebb/tree/master/day5-middleware](https://github.com/18211167516/go-Ebb/tree/master/day5-middleware) ## 1、重点 * 中间件的目的是为了让web框架灵活支持用户某些自定义行为...阅读全文

Go语言中文网 2020-08-11 15:29:20 18211167516

mkdoc | Go 工具编译编译到 wasm

起因前段时间写了个 API 文档生成工具mkdoc,因为并没有像 swag-go 一样依赖 go CLI 后来就在想能不能把他编译到 wasm 然后放到网页上,这样就能方便大家 0 部署就能对他有个了解。成果 ???? 在线体验 ???? ( :如果你对mkdoc感兴趣,欢迎 fork&star一些问题工具里用到了文件系统,go 提供的 wasm_exec.js 中没有实现文件系统用到了 os.Getwd 系统调用,syscall/js 没有直接支持一些 go 和 js 之间的交互问题解决文件系...阅读全文

Segmentfault 2020-08-15 07:32:33 thewinds

使用Prometheus监控Golang服务-基于YoyoGo框架

## Prometheus **Prometheus**是一个非常棒的工具,结合**grafana**能够让我在不写代码,或者少写代码的情况下搭建一套有效的监控体系。这里介绍一下**Prometheus**监控**golang**程序的方式。 ## Golang 服务程序 **Golang**的Web程序,我使用了**YoyoGo**框架,[《 YoyoGo基于ASP.NET Core设计的Golang实现 》](https://www.cnblogs.com/maxzhang1985...阅读全文

Go语言中文网 2020-08-11 11:38:23 yoyofx

教你如何搭建自己的go-gin框架(四 路由分组)

## 引言 > 简单说下本章的重点 * 1、优化路由支持分组 * 2、编写单元测试、执行案例测试 * 3、[代码地址 https://github.com/18211167516/go-Ebb/tree/master/day4-routerGroup](https://github.com/18211167516/go-Ebb/tree/master/day4-routerGroup) ## 1、路由分组的概念 > 如果没有路由分组,我们需要针对每一个路由进行控制。但是真实...阅读全文

Go语言中文网 2020-08-10 15:49:48 18211167516

还在用 map[string]interface{} 处理 JSON?告诉你一个更高效的方法——jsonvalue

本文介绍的是 jsonvalue 库,这是我个人在 Github 上开发的第一个功能比较多而全的 Go 库。目前主要是在腾讯未来社区的开发中使用,用于取代 map[string]interface{}。为什么开发这个库?Go 是后台开发的新锐。Go 工程师们早期就会接触到 "encoding/json" 库:对于已知格式的 JSON 数据,Go 的典型方法是定义一个 struct 来序列化和反序列化 (marshal/unmarshal)。但是对于未知格式,亦或者是不方便固定格式的情形,典型的解...阅读全文

Segmentfault 2020-08-14 16:32:39 amc

教你如何搭建自己的go-gin框架(三 动态路由设计)

## 引言 > 简单说下本章的重点 * 1、修改路由存储数据结构(由字典变成前缀树) * 2、路由支持动态参数 * 3、优化Context,将动态参数的键值对存储起来 * 4、编写单元测试、执行案例测试 * 5、[代码地址 https://github.com/18211167516/go-Ebb/tree/master/day3-router](https://github.com/18211167516/go-Ebb/tree/master/day3-router) ##...阅读全文

Go语言中文网 2020-08-10 14:55:15 18211167516

Go 语言学习之流程控制

01 if...else... 标准使用在 Go 语言中,if...else... 语句的条件表达式必须是布尔类型,可以省略小括号,并且左大括号不能另起一行。通过代码,我们演示 if...else... 的标准使用方法。func main() { x := 1 if x >= 5 { fmt.Println("x >= 5") } else if x < 5 && x > 0 { fmt.Println("x < 5 && x > 0") } else { fmt.Println("x <= 0...阅读全文

Segmentfault 2020-08-14 13:32:32 frank

Excelize 发布 2.3.0 版本, Go 语言 Excel 文档基础库

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选 2018 开源中国码云...阅读全文

Segmentfault 2020-08-14 09:32:33 续日

kubernetes源码剖析之client-go(一)

kubernetes源码剖析之client-go(一)   刚入k8s和go的坑,碰巧看到社区的源码研习活动,赶紧加入开始学习阅读clinet-go(client-go源码地址)  Kubernetes中使用client-go作为Go语言的官方编程式交互客户端库,提供对api server服务的交互访问。对于k8s的二次开发,熟练掌握client-go是十分必要的。 client-go源码结构 cubix@DESKTOP-H2868FG MINGW64 /d/coding/go/src/k8s....阅读全文

51CTO博客 2020-08-09 17:49:10 cy_lyh

推荐一套基于go开发的个人文档管理系统。

文章简介一直想开发或者找一个开源的软件,功能就类似看云一样,用来搭建属于一套自己的文档管理系统,将自己平常的东西集中化管理,形成一个手册。于是找到了mindoc这样一款不错的文档管理系统软件。本文大致介绍一下如何安装,基本的功能介绍。功能介绍主要功能包括文档管理、导出、团队管理、文章管理等功能。特别适合团队或者个人做一个知识库文档管理系统。搭建环境mindoc支持Linux和Windows系统环境,我这里使用的是Linux系统。系统的配置信息如下: Centos7.4; MySQL5.7; My...阅读全文

Segmentfault 2020-08-13 21:32:33 卡二条

ARTS 第13周 |LeetCode 686 Repeated String Match |MySQL 索引原理 | 舒适区

ARTSARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。本周内容谷歌也考的 Easy 算法题从 B+ 树原理到实践了解 MySQL 索引每个人都走在逃离舒适区的路上Algorithm本周的题目比较简单:LeetCode 686. Repeated String Match.唯一的小...阅读全文

Segmentfault 2020-08-13 21:32:33 casmo澎湃哥

手撸一个grpc服务发现+负载均衡+grpc负载均衡部分源码学习

组件servergrpc的服务端首先需要三部分的组件:service为提供客户端响应;register是服务端每次启动时将自己的地址注册给注册中心;unregister是服务端每次终止时从注册中心清除掉自己的注册信息;registerfunc Register(client *etcd3.Client, target, key, val string, stopSignal chan os.Signal) error { go func() { ticker := time.NewTicker(...阅读全文

Segmentfault 2020-08-13 18:32:33 byte

一份Yaml的K8S之旅-上

前言经常有人问:“浏览器输入url后发生了什么”,这个问题看似简单,但是却能全面的考察一个人对系统的了解程度。如果把这个问题引申到k8s领域,就可以问出“K8sClient提交Yaml后发生了什么”这样类似的问题。同样的,要回答这个问题,需要我们对k8s的设计有一个比较完整的了解。本文就试图回答这个问题,带着大家体验一下一份Yaml的K8S之旅。k8s的设计k8s可以说是松耦合设计的一个典型,如下图所示,各个组件都和ApiServer进行通信,只有ApiServer可以写Etcd,这样做的的好处...阅读全文

Segmentfault 2020-08-13 15:32:33 MageekChiu

Qmgo - 更好用的Go语言MongoDB driver

## Qmgo 最近,七牛CDN研发团队开源了[Qmgo](https://github.com/qiniu/qmgo) - Go语言的MongoDB driver,它基于[Mongo官方driver](https://github.com/mongodb/mongo-go-driver)实现,但是有着更好的易用性,设计上参考了老牌的driver [Mgo](https://github.com/go-mgo/mgo) (比如Mgo的链式调用)。 ## 背景 做Qmgo的初衷,来自于...阅读全文

Go语言中文网 2020-08-09 10:43:34 jiangzhi

Go语言入门系列(五)之指针和结构体的使用

Go语言入门系列前面的文章:Go语言入门系列(二)之基础语法总结Go语言入门系列(三)之数组和切片Go语言入门系列(四)之map的使用1. 指针如果你使用过C或C++,那你肯定对指针这个概念不陌生。我们需要先介绍两个概念:内存和地址。1.1. 内存和地址我们写的代码都存储在外存(C盘、D盘)中,比如我存在了D:\Work\Program\go目录下。如果你想要运行你的代码,必须先把你的代码加载进内存中,然后交给CPU执行计算,而CPU计算的结果也会存到内存中。内存的存取速度快,其中有许多存储单元...阅读全文

Segmentfault 2020-08-13 10:32:35 行人观学

实践总结:在 Java 中调用 Go 代码

原文地址:https://liujiacai.net/blog/2020/08/08/go-meet-java/在 Java 中调用 Go 的大致过程如下go --> cgo --> jna --> java整个过程要解决的问题主要两个:数据类型在两种语言中如何转化何时清理无用的数据下面就围绕上述调用过程来阐述,本文涉及代码完整版可以下面链接找到:https://github.com/jiacai2050...Go -> Cgo这是跨语言调用的第一步,主要是借助 cgo,把 Go 代码编译 C ...阅读全文

Segmentfault 2020-08-13 09:32:32 jiacai2050

腾讯 TarsGo 服务 Hello World——RPC 通信

作者:amc引言:上一篇文章介绍了如何创建安装 TarsGo,同时也阐述了如何开始一个 TarsGo HTTP 服务。本文就要开始 TarsGo 的主力业务了:基于 TARS 自带的 RPC 协议,设计 TarsGo 服务。本文的内容大致思路与官方 Quick Start 相同,但例子会有所不同,同时对于一些坑也会解释得详细点。本文的代码可以在我的 GitHub repo 中找到。设计目标上一篇文章中,我的 HTTP 服务器向前端返回一串 Json 字符串,其中包含了服务器时间。这一次,我设计一...阅读全文

Segmentfault 2020-08-12 15:32:32 TARS基金会