golang 中的内嵌(embeded)

内嵌与聚合: 外部类型只包含了内部类型的类型名, 而没有field 名, 则是内嵌。 外部类型包含了内部类型的类型名,还有filed名,则是聚合。聚合的在JAVA和C++都是常见的方式。而内嵌则是GO 的特有方式。 type Base struct { basename string } type Derive struct { ---内嵌 Base } type Derive struct { 内嵌, 这种内嵌与上面内嵌的区别是什么,后面详细介绍 *Base } type Derive str...阅读全文

阅读:7380 评论:0

深入浅出Golang的协程池设计

教程制作: IT无崖子(刘丹冰) 教程简介:本教程主要针对具有一定编程基础的学员,懂得基本的编程语法。 使用Go语言实现并发的协程调度池阉割版,本文主要介绍协程池的基本设计思路,目的为深入浅出快速了解协程池工作原理,与真实的企业协程池还有很大差距,本文仅供学习参考。 一、何为并发,Go又是如何实现并发? gopool1.jpeg gopool2.jpeg 并行的好处: 同一时刻可以处理多个事务 更加节省时间,效率更高 具有并行处理能力的程序我们称之为“并发程序” 并发程序的处理能力优势体现在哪里...阅读全文

2018.10.14 14:13* IT无崖子
阅读:25622 评论:9

如何将ffmpeg封装golang/cgo库

本文通过ffmpeg编程的例子来讲述如何封装cgo库更多内容访问我的博客 前言 继上一篇 ffmpeg音视频C编程入门, 使用高性能的C语言进行音视频的处理,比较执行效率比较高,但是业务需求,快捷开发需要使用更方便的语言,比如 golang,本文介绍如何将 将视频转成GIF 的C语言方法封装成 golang 方法以便调用。(不明白的同学请点击上面链接多了解) 认识cgo的封装技巧 最简单的 cgo 封装例子看这篇 cgo快速入门 我这里讲几个注意事项 CGO构建程序会自动构建当前目录下的C源文件...阅读全文

2019-01-22 16:34:41 光鱼
阅读:4913 评论:0

从源码角度看Golang的TCP Socket(epoll)实现

从源码角度看Golang的TCP Socket(epoll)实现 Golang的TCP是基于系统的epoll IO模型进行封装实现,本章从TCP的预备工作到runtime下的实时运行工作原理进行分析。仅关注linux系统下的逻辑。代码版本GO1.12.6。 本章例子中的代码对应详细注释参考:gosrc1.12.6 读文章可能并不是最好的读懂源码的办法,读文章只能有个大致概念,最好的办法拿文章是对照源码理解。 目录 先来个目录方便读者理解文本结构 1.TCP预备工作 1.1 Server端 1.2...阅读全文

2019.08.04 18:24 thinkboy234
阅读:4373 评论:1

golang 实现线程安全的跳转表 (skip list)

这个数据结构在本科的数据结构课是没有教过的,我知道这个东西是在,学习redis内部原理的时候接触的,redis 中的 sorted set 中就是使用了这种数据结构。如果你要学习下 redis的有序集合的原理,那么一定要看 skip list这种数据结构。 基础 网上有很多大佬都写了很多不错的博客去介绍 skip list,我就直接给出链接先去学习下吧: 跳表 skiplist 跳跃表 原始论文 跳表SkipList 跳表──没听过但很犀利的数据结构 跳表(skiplist)的理解 只是列举了部...阅读全文

2019.08.05 15:00 _AlphaBaby_
阅读:1351 评论:0

Go 中基于 IP 地址的 HTTP 限流

如果你想限制一个正在运行的 HTTP 服务的请求量,你可以使用现有的轮子工具,比如说 [github.com/didip/tollbooth](https://github.com/didip/tollbooth) ,但是如果写一些简单的东西,你自己去实现也没有那么难。 我们可以用这个包 `x/time/rate` 。 在这篇教程中,我们将基于用户的 IP 地址构造一个简单的限流中间件。 ## Pure HTTP Server 我们来开始构建一个简单的 HTTP 服务,这...阅读全文

2019-12-04 18:17:25 alihanniba
阅读:3085 评论:0

使用Go基于WebSocket构建千万级视频直播弹幕系统

(1)业务复杂度介绍 开门见山,假设一个直播间同时500W人在线,那么1秒钟1000条弹幕,那么弹幕系统的推送频率就是:500W * 1000条/秒=50亿条/秒,想想B站2019跨年晚会那次弹幕系统得是多么的NB,况且一个大型网站不可能只有一个直播间! 使用Go做WebSocket开发无非就是三种情况: 使用Go原生自带的库,也就是golang.org/x/net,但是这个官方库真是出了奇Bug多 使用GitHub大佬gorilla/websocket库,可以结合到某些Web开发框架,比如Gi...阅读全文

2020-07-06 17:26:14 BlueMiaomiao
阅读:1766 评论:2