JasonBourne

【转载】Go 编程模式:FUNCTIONAL OPTIONS

在本篇文章中,我们来讨论一下 Functional Options这个编程模式。这是一个函数式编程的应用案例,编程技巧也很好,是目前在 Go 语言中最流行的一种编程模式。但是,在我们正式讨论这个模式之前,我们需要先来看看要解决什么样的问题。 配置选项问题 在我们编程中,我们会经常性的需要对一个对象(或是业务实体)进行相关的配置。比如下面这个业务实体(注意,这仅只是一个示例): type ...

【转载】Go 编程模式:错误处理

错误处理一直以一是编程必需要面对的问题,错误处理如果做的好的话,代码的稳定性会很好。不同的语言有不同的出现处理的方式。Go语言也一样,在本篇文章中,我们来讨论一下Go语言的出错出处,尤其是那令人抓狂的 if err != nil 。 在正式讨论Go代码里满屏的 if err != nil 怎么办这个事之前,我想先说一说编程中的错误处理。这样可以让大家在更高的层面理解编程中的错误处理。 C...

webrtc 学习

基本概念 音视频采集基本概念 摄像头。用于捕捉(采集)图像和视频。 帧率。现在的摄像头功能已非常强大,一般情况下,一秒钟可以采集 30 张以上的图像,一些好的摄像头甚至可以采集 100 张以上。我们把摄像头一秒钟采集图像的次数称为帧率。帧率越高,视频就越平滑流畅。然而,在直播系统中一般不会设置太高的帧率,因为帧率越高,占的网络带宽就越多。 分辨率。摄像头除了可以设置帧率之外...

【转载】Go 编程模式:切片,接口,时间和性能

在本篇文章中,我会对Go语言编程模式的一些基本技术和要点,这样可以让你更容易掌握Go语言编程。其中,主要包括,数组切片的一些小坑,还有接口编程,以及时间和程序运行性能相关的话题。 Slice 首先,我们先来讨论一下Slice,中文翻译叫“切片”,这个东西在Go语言中不是数组,而是一个结构体,其定义如下: type slice struct { array unsafe.Point...

依赖注入

依赖注入是一种消除类之间依赖关系的设计模式,它使客户端不在需要new依赖的对象,而是依靠Ioc容器将客户端的依赖通过构造函数或者属性的方式注入。 使用依赖注入的优点 遵循了控制反转的设计原则,上层不依赖于底层,而是依赖于抽象。减少了项目之间的耦合。 项目灵活性更高,应对业务变更可以快速修改。 减少代码量。 简易代码实现 public static class IocU...

消息队列的问题记录

为什么要使用消息队列 系统解耦,减少服务间的依赖。 异步性 流量的削峰填谷,可以让后端服务更加从容的应对流量压力 在使用消息队列的过程中,可能遇到哪些问题 降低了系统的可用性,mq挂掉,可能会导致系统不可用,所以需要搭建集群保证消息队列的高可用。 增加了系统的复杂度,需要考虑消息重复/丢失等问题。 数据一致性问题。如何保证数据的最终一致性。 消息队列中...

计算机硬件系统

计算机硬件系统 计算机硬件系统主要由 运算器、控制器、存储器、输入设备与输出设备 五大部件组成。 运算器:CPU的核心组件之一,主要负责数据的加工处理,能够完成算术运算、逻辑运算等操作。它由 算术逻辑单元ALU、累加寄存器AC、数据缓冲寄存器DR、状态条件寄存器PSW等组成。 控制器:CPU的核心组件之一,主要由 程序计数器PC、指令寄存器IR、地址寄存器AR、指令译码...

HTTP

什么是Http HTTP(超文本传输协议)是一个基于TCP/IP实现的,请求-响应的,无状态的,应用层协议。标准的客户端-服务器模型。HTTP协议定义了客户端和服务器之间交互的消息内容和步骤,首先,客户端会向服务器发送请求消息,请求消息包含的内容是“对什么”和“进行怎样的操作”两个部分。其中相当于“对什么”的部分称为URI(统一资源标识符),一般来说,URI的内容是一个存放网页数据的文件名...