Channel的使用场景

channel的使用场景

把channel用在数据流动的地方:

  1. 消息传递、消息过滤
  2. 信号广播
  3. 事件订阅与广播
  4. 请求、响应转发
  5. 任务分发
  6. 结果汇总
  7. 并发控制
  8. 同步与异步

面向接口编程

1. 接口[多态]

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

简而言之,就是允许将子类类型的指针赋值给父类类型的指针。

即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。多态分为编译时多态(静态多态)和运行时多态(动态多态),编译时多态一般通过方法重载实现,运行时多态一般通过方法重写实现。

Go中使用grpc

GRPC 在golang 中的应用

GRPC vs RestFul API

gRPC和restful API都提供了一套通信机制,用于server/client模型通信,而且它们都使用http作为底层的传输协议(严格地说, gRPC使用的http2.0,而restful api则不一定)。不过gRPC还是有些特有的优势,如下:

gRPC可以通过protobuf来定义接口,从而可以有更加严格的接口约束条件

通过protobuf可以将数据序列化为二进制编码,这会大幅减少需要传输的数据量,从而大幅提高性能

gRPC可以方便地支持流式通信(理论上通过http2.0就可以使用streaming模式, 但是通常web服务的restful api似乎很少这么用,通常的流式数据应用如视频流,一般都会使用专门的协议如HLS,RTMP等,这些就不是我们通常web服务了,而是有专门的服务器应用

Go 基础

你好,Go

在开始编写应用之前,我们先从最基本的程序开始。就像你造房子之前不知道什么是地基一样,编写程序也不知道如何开始。因此,在本节中,我们要学习用最基本的语法让Go程序运行起来。

利用多线程在Go中更快地读取大文件

利用多线程在Go中更快地读取大文件

如何计算具有4gb RAM的50gb文件中单词的出现次数。窍门是不将整个文件加载到内存中,而是在继续移动文件指针时继续处理每个单词。这样,我们可以用最少的内存资源轻松处理整个文件。

现在的后续问题是我们如何使用多线程来加快此过程?解决方案是我们在文件的不同部分保留多个指针,并且每个线程同时读取文件的块。

最后,结果可以合并。

slice 与 interface 之间的转换

tags

tags 标签在golang 中有什么作用?

字段标记允许您将元信息附加到可以使用反射获取的字段上。通常,它用于提供有关如何将结构域编码为另一种格式(或从另一种格式存储(或从数据库中检索))的转换信息,但是您可以使用它存储想要存储的任何元信息,这些元信息既可以用于另一种包装或供您自己使用。

Go高质量代码

编写和优化Go代码

本文档概述了编写高性能Go代码的最佳实践。

虽然有些讨论会提高单个服务的速度(通过缓存等),但设计高性能的分布式系统已经超出了这项工作的范围。在监控和分布式系统设计方面已经有很好的文章,它包含了一套完全不同的研究和设计权衡理论。

所有内容将根据CC-BY-SA进行许可。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×