Go之Http包的服务端介绍

对于go的net/http包,主要分为两个部分,一部分是针对客户端的,一部分是针对服务端的,本篇文章主要介绍服务端这部分内容。一、总体介绍一个http消息的流程如下所示,其中红框部分是server部分的内容,主要包括两部分内容:ServerMux 和 Handler。​ServerMux 本质上是一个 HTTP 请求路由器(也叫多路复用器Multiplexor)。它把收到的请求与一组预先定义的 URL 路径列表做对比,然后在匹配到路径的时候调用关联的处理器(Handler)。处理器(Handle...阅读全文

Go语言中文网 2021-04-27 10:03:16 ZhDavis

10天入门go语言教程- 循环

转载请注明来源"老男孩IT教育"来源网址:https://www.sholdboyedu.com/new/525.htmlGo 语言 for 循环 Go 语言循环语句 for 循环是一个循环控制结构,可以执行指定次数的循环。go语言的循环语法尤为的重要,学习的小伙伴抓紧搬小板凳做好。循环循环语句是用来重复执行某一段代码。for 是 Go 语言唯一的循环语句。Go 语言中并没有其他语言比如 C 语言中的 while 和 do while 循环。for 循环语法for initialisation;...阅读全文

51CTO博客 2021-04-26 15:27:32 上海老男孩教育

go设计模式之工厂模式浅谈2

我的第一篇文章[go设计模式之工厂模式浅谈|Go主题月](https://studygolang.com/articles/34254)中谈了一下工厂方法,发现我之前的思路是错误的,在此修改我错误的想法 #### 2.工厂方法 工厂方法模式,简单来说是来为了解决简单工厂模式所出现的一些缺点而进行的改进。比如当一个简单的工厂模式要生产一种动物。能够生产Dog,Cat.但是如果要新增一种动物。那么就要修改源代码,也就是修改工厂的源代码!添加一个业务逻辑,显然不符合开闭原则,所以就有了工厂方法模式...阅读全文

Go语言中文网 2021-04-25 17:43:57 go_hiro

10天入门go语言教程- 可变参数函数

转载请注明来源"老男孩IT教育"来源网址:https://www.sholdboyedu.com/new/516.htmlgo语言中合适地使用可变参数,可以让代码简单易用,尤其是输入输出类函数,比如日志函数等,那么如果更好的运用可变参数函数,我们一起来看看吧!可变参数函数什么是可变参数函数可变参数函数是一种参数个数可变的函数。语法如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最后一个参数。请注意只有函数的最后一个参数才允许是可变的。通过一些例子理解可变参数函数如...阅读全文

51CTO博客 2021-04-25 16:16:45 上海老男孩教育

10天入门go语言教程- 可变参数函数

转载请注明来源"老男孩IT教育"来源网址:https://www.sholdboyedu.com/new/516.htmlgo语言中合适地使用可变参数,可以让代码简单易用,尤其是输入输出类函数,比如日志函数等,那么如果更好的运用可变参数函数,我们一起来看看吧!可变参数函数什么是可变参数函数可变参数函数是一种参数个数可变的函数。语法如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最后一个参数。请注意只有函数的最后一个参数才允许是可变的。通过一些例子理解可变参数函数如...阅读全文

51CTO博客 2021-04-25 16:16:40 上海老男孩教育

写在 Dubbo go 的第五个年头

引语dubbogo 项目已进入第五个年头。项目发展的前两年,我们把 hessian2 协议库、网络库和整体基础框架搭建一番。从 2018 年项目被 Dubbo 官方接纳开始,依托阿里平台,社区开始形成并快速发展。与社区同学们齐心合力之下,如今全面兼容 Dubbo v2.7.x 的 Dubbo-go v1.5.1 已经发布。立项一个项目整体必须提炼出核心目标,指明其存在的意义和价值。有了初心,项目发展过程中产生困惑时,才能明确答复 “我是谁?从哪里来?到哪里去”。1. dubbogodubbogo...阅读全文

51CTO博客 2021-04-25 15:18:42 menggucaoyuan

涂鸦智能 dubbo-go 亿级流量的实践与探索

涂鸦智能 dubbo-go 亿级流量的实践与探索dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和优秀的扩展能力。而 dubbo-go 在 java 与 golang 之间提供统一的服务化能力与标准,是涂鸦智能目前最需要解决的主要问题。本文分为实践和快速接入两部分,分享在涂鸦智能的 dubbo-go 实战经验,意在帮助用户快速接入 dubbo-go RPC 框架,希望能让大家少走些弯路。另外,文中的测试代码基于 dubbo-go版本 v1...阅读全文

51CTO博客 2021-04-25 13:46:04 menggucaoyuan

曹大谈 dubbo mesh : 在 MOSN 中玩转 dubbo-go

service mesh 简介service mesh 本身的理念并不复杂,就是将现代微服务应用的功能性与非功能性需求进行分离,并将非功能性需求下沉到应用的外部模块,从而使应用模块可以尽量聚焦于业务,不用关心诸如:服务发现、限流、熔断、tracing 这类非业务需求。下沉之后,相关的 service mesh 模块可以交由基础架构团队进行维护,使基础设施和业务能够完成解耦。service mesh 设计一般划分为两个模块,控制面和数据面。可以通过下图来理解相应的职责:对于应用来说,所有流量都会经...阅读全文

51CTO博客 2021-04-25 13:45:43 menggucaoyuan

无缝连接 dubbo-go 与 gRPC

最近我们dubbogo社区里面,呼声很大的一个feature就是对grpc的支持。在某位大佬的不懈努力之下,终于弄出来了。今天我就给大家分析一下大佬是怎么连接dubbogo和grpc。grpc先来简单介绍一下grpc。它是google推出来的一个RPC框架。grpc是通过IDL(Interface Definition Language)——接口定义语言——编译成不同语言的客户端来实现的。可以说是RPC理论的一个非常非常标准的实现。因而grpc天然就支持多语言。这几年,它几乎成为了跨语言RPC框...阅读全文

51CTO博客 2021-04-25 13:45:07 menggucaoyuan

What’s New in Dubbo-go v1.5

引语计算机技术浪潮每 10 年都有一次技术颠覆,相关知识体系最迟每 5 年都会革新一次,大概每两年贬值一半,在应用服务通信框架领域亦然。凡是有长期生命的通信框架,大概有 5 年的成长期和 5 年的稳定成熟期。每个时代都有其匹配的应用通信框架,在 20 年前的 2G 时代,强跨语言跨平台而弱性能的 gRPC 是不会被采用的。每个通信框架,不同的人从不同角度看出不同的结论:初学者看重易用易学,性能测评者注重性能,应用架构师考虑其维护成本,老板则考虑则综合成本。一个应用通信框架的性能固然重要,其稳定性...阅读全文

51CTO博客 2021-04-25 13:44:47 menggucaoyuan

Dubbo-go 应用维度注册模型

Dubbo 3.0 将至。其最重要的一点就是服务自省,其基础即是应用维度的注册模型,作为目前与 Dubbo 在功能上完全对齐的 Dubbo-go,已于 本年【2020 年】7 月份发布了其 v1.5.0 版本,实现了该模型,为年底实现与 Dubbo 3.0 对齐的新版本奠定了基础。Dubbo-go 作为 Dubbo 的 Go 语言版本,因跨语言之故,二者针对同一模型的实现必然有较大差异,故本文注重讨论 Dubbo-go 社区自身对该模型的理解和实现,以及其与 Dubbo 之间的差异。1 引语在 ...阅读全文

51CTO博客 2021-04-25 13:44:24 menggucaoyuan

解构 Dubbo-go 的核心注册引擎 Nacos

近几年,随着Go语言社区逐渐发展和壮大,越来越多的公司开始尝试采用Go搭建微服务体系,也涌现了一批Go的微服务框架,如go-micro、go-kit、Dubbo-go等,跟微服务治理相关的组件也逐渐开始在Go生态发力,如Sentinel、Hystrix等都推出了Go语言版本,而作为微服务框架的核心引擎--注册中心,也是必不可缺少的组件,市面已经有多款注册中心支持Go语言,应该如何选择呢?我们可以对目前主流的支持Go语言的注册中心做个对比。 图1根据上表的对比我们可以从以下几个维度得出结论:生态:...阅读全文

51CTO博客 2021-04-25 13:44:06 menggucaoyuan

开课啦 dubbo-go 实战

杭州开课啦教育科技有限公司高级开发工程师 曾凡维技术选型背景2020年是我司发展壮大的一年,整个公司团队由原来的几百人扩充至现在的几千人,在集中使用的时候基本上会有几千人同时在运营后台进行操作,公司原有的内部后台运营系统是用PHP搭建起来的,性能跟业务上已逐渐不能满足公司的需求规划,加上目前我司开发部已经做了微服务拆分,主体对外服务是java语言的Dubbo集群,后台系统需要无缝对接java的Dubbo服务,所以PHP已经逐渐不能满足我司的需求。当时自己也调研过PHP的Dubbo项目,由于项目已...阅读全文

51CTO博客 2021-04-25 13:42:40 menggucaoyuan

云边端架构EasyDSS内Go语言如何生成归档文件?

上一篇我们讲了在EasyDSS定制项目中,把点播文件打包的各种格式,由于用户对产品开发有不同的需求,因此TSINGSEE青犀视频研发团也在探寻更多的定制方式。近期我们又接到了新的需求,需要把多个文件归档成一个文件提交给用户下载。将一个文件编辑成一个 tar 文件的代码如下:// tar 单个文件 func tarFile(filesource string, sfileInfo os.FileInfo, tarwriter *tar.Writer) error { sfile, err := o...阅读全文

51CTO博客 2021-04-25 12:32:05 wx6084d152d85c2

EasyDSS如何定制Go语言生成CSV文件?

在TSINGSEE青犀视频云边端架构视频直播点播平台EasyDSS部分定制项目中,客户提出生成归档清单的要求,即生成 CSV 文件由客户进行统计操作。因此我们研发人员进行了生成 CSV 文件的功能编写。关于EasyDSS视频直播点播平台,TSINGSEE青犀视频也提供过其他很多的定制项目,如果有需要也联系我们了解,本文讲的CSV 文件为逗号分隔值文件格式,其中 CSV 为Comma-Separated Values 的缩写,即使用逗号分隔数据的数据,以下数据就是 CSV 文件的内容。如果使用 O...阅读全文

51CTO博客 2021-04-25 12:31:47 wx6084d152d85c2

RTMP协议视频平台EasyDSS开发中如何通过Go语言 gorm 框架钩子函数精简代码?

EasyDSS视频平台除了提供网页直播外,还可上传视频进行点播,上传视频后一键生成视频地址,以供用户分享、嵌入到网站、产品软件系统中。在EasyDSS开发过程中,将数据写入到数据库时,有大量相同的操作。如以下两个步骤设置更新时间和创建时间。u.CreateAt = time.Now() u.UpdateAt = time.Now()因为很多地方需要更新这两个字段,在整个项目中出现了很多相同的代码,都是以上两行代码。因此为了精简代码,优化结构,可以使用gorm 库的hooks钩子函数功能进行优化。...阅读全文

51CTO博客 2021-04-25 12:28:36 wx6084d152d85c2

RTMP协议视频平台EasyDSS编译过程中Go语言异步信息处理设计与实现

在EasyDSS开发过程中,有此种场景:Go模块通过http请求获取C模块的信息,然后将信息保存到数据库中。基本流程如下:该种模式一般称为同步处理,将收到的结果写入到数据库完毕后才会进行下一次的http请求。但是实际情况下,下一次的http请求,和上一次的结果是可以并发进行的。即以上模型可以优化为:1.第一步:发送第一次 http 请求 A ,获取 A 的结果2.第二步:并发执行以下两个步骤:1)将 A 的结果写入到数据库中2)发出第二次的 http 请求 B因为第二步是并发执行,就节省了一段时...阅读全文

51CTO博客 2021-04-25 12:28:14 wx6084d152d85c2

如何通过Go语言将UTC和GMT时间处理为标准北京时间?

在EasyCVR视频智能安防监控系统的视频录像项目中,经常需要调用根据开始时间和结束时间获取摄像头的录像,因此对于时间上的处理就要特别注意。 在编译EasyCVR视频智能安防监控系统过程中,我们需要将不同的时间标准都转化为北京时间,便于符合我们在实际项目场景中使用。时间的标准有好几种,需要注意下,常用的是UTC和GMT。UTC时间的全称是Universal Time Coordinated(协调世界时),世界标准时间,根据原子钟计算出来的时间。GMT时间,Greenwich Mean Time(...阅读全文

51CTO博客 2021-04-25 12:27:57 wx6084d152d85c2