golang martini 源码阅读笔记之martini核心

继上一篇关于inject注入的笔记,理解了martini的关键核心之一:依赖注入。注入回调函数,由运行时进行主动调用执行。这一篇主要是注解martini的骨架martini.go的实现,下面先从一个简单的martini使用实例,即创建一个最简单的http服务器开始。 server.go //martini使用简单实例 package main import "github.com/go-martini/martini" func main() { m := martini.Classic() /...阅读全文

2016-03-07 17:52 bicowang
阅读:4152 评论:1

Golang写https服务端

1. 生成私钥openssl genrsa -out key.pem 20482. 生成证书openssl req -new -x509 -key key.pem -out cert.pem -days 10953. 服务端代码: package main import ( "fmt" "log" "net/http") func test(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "this is a test for y...阅读全文

2016-09-07 13:13 zolo
阅读:2975 评论:0

谈谈一些关于mgo的用法

前言 最近在项目中使用mongodb进行简单的数据分析,在使用mongodb驱动mgo时遇到一些问题,比如在mongodb中执行命令成功,到了mgo中就执行失败。在这里谈一谈实践过程中遇到的问题,基础的用法不再说明了,可以自行百度。 使用 查找(Find) 这个估计是mongodb里用的最多的了吧,mgo中使用Find(query interface{}),query参数一般传入[]bson.M。下面给个例子: m := bson.M{ "CurTimestamp": bson.M{ "$gte...阅读全文

2017-05-11 00:00:51 pinecone
阅读:5452 评论:0

golang:mgo剖析之Session

golang操作mongo使用的包是"gopkg.in/mgo.v2",coding过程中需要并发读写mongo数据库,简单观摩了下源码,记录下自己的一些理解,如有错误,敬请斧正。 一般来说,我们直接这样创建一个session: Session, err = mgo.Dial(URL) if err != nil { log.Println(err) } 来看看Dial这个函数做了什么: func Dial(url string) (*Session, error) { session, err...阅读全文

2017-09-20 14:41 chase-wind
阅读:1030 评论:0

缓存 + 哈希 = 高并发?

当前互联网时代,怎么少的了高并发呢?高并发和高可用一样, 已经变成各个系统的标配了,如果你的系统QPS没有个大几千上万,都不好意思跟人打招呼,虽然可能每天的调用量不超过100。高并发这个词,我个人感觉是从电商领域开始往外流传的,特别是电商领域双11那种藐视全球的流量,再把技术架构出来分享一把,现在搞得全互联网都在说高并发,而且你注意回忆一下所有你看到的高并发系统,往往都逃不开一个核心概念,那就是缓存+哈希,一切都是以这个概念和基础的,仿佛这就是高并发的核心技术了。`我们看到的高并发技术围绕这个核...阅读全文

2017.02.20 11:11 杨学好
阅读:2517 评论:3

Golang 中的微服务 - 第一部分

## 介绍 Golang 中的微服务系列总计十部分,预计每周更新。本系列的解决方案采用了 protobuf 和 gRPC 作为底层传输协议。为什么采用这两个技术呢?我花了相当长的时间,才想出并决定采用这个方案。这个方案对开发者来说,非常清晰而简明。我也很乐意把自己在搭建、测试和部署端到端的微服务过程中的心得,分享给想接触这块的朋友们。 在这个教程中,我们将先接触几个基础的概念和术语,然后开始搭建第一个简单的微服务模型。 本系列中,我们将会创建以下服务: - 委托 - 存...阅读全文

2017-12-26 22:20:00 polaris
阅读:28536 评论:15

Go代码打通HTTPs

TL;DR 手工创建CA证书链,手写代码打通HTTPs的两端 HTTPs最近是一个重要的话题,同时也是一个有点难懂的话题。所以网上有大量的HTTPs/TLS/SSL的教程。关于这些的原理,这里不做讲解,有兴趣的可以自行搜索。 本文介绍一个自己创建证书,并编写 Go 代码实现 client/server 两端的过程。从实践的角度帮助理解。 构建 CA 证书链 我们首先要创建 client/server 使用的证书。创建证书的方法有很多种:有不怕麻烦,直接通过 openssl创建的,有通过 cfss...阅读全文

2018-02-13 23:34:36 西北那个峰
阅读:4596 评论:0

Go 系列教程 —— 22. 信道(channel)

欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 22 篇。 在[上一教程](https://studygolang.com/articles/12342)里,我们探讨了如何使用 Go 协程(Goroutine)来实现并发。我们接着在本教程里学习信道(Channel),学习如何通过信道来实现 Go 协程间的通信。 ## 什么是信道? 信道可以想像成 Go 协程之间通信的管道。如同管道中的水会从一端流到另一端,...阅读全文

2018-02-14 09:41:18 heyulong
阅读:36419 评论:19

Go 系列教程 —— 23. 缓冲信道和工作池(Buffered Channels and Worker Pools)

欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 23 篇。 ## 什么是缓冲信道? 在[上一教程](https://studygolang.com/articles/12402)里,我们讨论的主要是无缓冲信道。我们在[信道](https://studygolang.com/articles/12402)的教程里详细讨论了,无缓冲信道的发送和接收过程是阻塞的。 我们还可以创建一个有缓冲(Buffer)的信道。...阅读全文

2018-03-06 23:15:05 heyulong
阅读:30345 评论:20

Go 系列教程 —— 24. Select

欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 24 篇。 ## 什么是 select? `select` 语句用于在多个发送/接收信道操作中进行选择。`select` 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,`select` 会随机地选取其中之一执行。该语法与 `switch` 类似,所不同的是,这里的每个 `case` 语句都是信道操作。我们好好看一些代码来加深理解吧。 ##...阅读全文

阅读:20264 评论:7

Go1.10 支持 HTTPS 代理

Go1.9 出来后 6 个多月的时间,Go1.10 就被[发布](https://blog.golang.org/go1.10)。新版本带来大大小小的变化([发行说明](https://golang.org/doc/go1.10)),但是我想谈谈有关 `net/http` 包的改变。1.10 版本支持在 HTTPS([commit](https://github.com/hyangah/go/commit/ab0372d91c17ca97a8258670beadadc6601d0da2)) 上的...阅读全文

阅读:5909 评论:1

Golang 的Gin框架入门教学

学习Golang差不多有一个星期时间,开始自己做点小功能,练练手。 Gin 介绍 Gin 是一个 Golang 写的 web 框架,具有高性能的优点,,基于 httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务。官方地址:https://github.com/gin-gonic/gin 安装框架 配置好GOPATH,建议自己在GOPATH建个项目,这里我以aze.org作为项目目录。 $ go get github.com/gin-gonic/gin 安装...阅读全文

2018-08-28 19:28:44 阿泽Aze
阅读:41626 评论:3

如何在kubernetes中开发自己的Operator

1.为什么要用operator kubernetes对管理无状态的应用有很好的优势,但对于有状态应用,kubernetes有很大的不足。像数据库、缓存等在进行升级和弹性扩缩容时,不能很好的将现有的数据配置到新的实例上。Operator就是为了解决上述问题而出现的,其目的是能够正对不同应用(有状态)的特点,开发特定的控制器,来监听Kubernetes API,在实例创建,伸缩,死亡等各个生命周期中做相应的处理来保证有状态应用中的数据连续性。 2.operator的原理 Operator 实际上作为...阅读全文

2019.08.15 19:43 doublegao
阅读:2973 评论:0

Golang:通过小程序获取微信 openid

为什么要获取小程序的 openid 在开发微信小程序的过程中,小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。那么这个用户身份标识就是 openid。 小程序获取 openid 的流程 那么小程序获取 openid 的流程具体如下,这里我简化了一下,因为我们只需要获取到 openid 即可,具体可以参考这里 我们需要在小程序中调用 wx.login() 获取 code 码,然后将这个 code 码发送给后端,后端带着这个 code 码和 appi...阅读全文

2020-03-23 21:32:44 Rollover
阅读:4084 评论:0

Kubernetes-v1.19.3通过修改源码的方式完成CA根证书及普通证书续期(200年)

Kubernetes-v1.19.3通过修改源码的方式完成CA根证书及普通证书续期(200年) 1、检查原有集群的证书情况 检查集群证书情况 [root@kubernetes-master ~]# kubeadm alpha certs check-expiration [check-expiration] Reading configuration from the cluster... [check-expiration] FYI: You can look at this config f...阅读全文

阅读:814 评论:0

论:如何从零开始搭建一个完整的K8S集群

> 随着微服务技术的出现,越来越多的组件独立出来成为单独的服务,服务之间通过网络通讯。能让业务扁平化。k8s是管理这些服务的载体。本文手把手教学如何搭建k8s。 # <font color=blue>k8s集群搭建:</font> k8s有三个重要组件: - 使用kubeadm是k8s官方推荐的一个进群部署工具 - kubectl 是命令行客户端(相当于mysql) - kubelet 是后台进程(相当于mysqld) >软件环境: 虚拟机: VMware® Works...阅读全文

2021-07-02 10:09:59 TangYiMo
阅读:852 评论:0

gRPC,爆赞

**原文链接:** [gRPC,爆赞](https://mp.weixin.qq.com/s/1Xbca4Dv0akonAZerrChgA) gRPC 这项技术真是太棒了,接口约束严格,性能还高,在 k8s 和很多微服务框架中都有应用。 作为一名程序员,学就对了。 之前用 Python 写过一些 gRPC 服务,现在准备用 Go 来感受一下原汁原味的 gRPC 程序开发。 本文的特点是直接用代码说话,通过开箱即用的完整代码,来介绍 gRPC 的各种使用方法。 代码已...阅读全文

2021-10-12 20:42:28 yongxinz
阅读:1410 评论:1