golang grpc

golang实现设计模式汇总-创建型 | 结构型 | 行为型

历时一个多星期的常用设计模式暂告一段落,今天汇总下使用频率较高的几种常见设计模式。 以下个人根据类型分为3种,不喜勿喷: * 创建型 * 结构型 * 行为型 ### 1.创建型 常用如下: * [单例模式](https://juejin.cn/post/7238604003599974456) * ......
结构型 设计模式 行为 模式 结构

golang实现设计模式之代理模式-优缺点,适用场景

`代理模式`作为一种结构型的设计模式,因为某种原因,需要对访问的对象通过代理访问目标对象,访问对象不适合或者不能直接引用该目标对象,代理就成为访问对象和目标对象的中介。 **结构** * 1.抽象主题(Subject)类。通过接口或抽象类声明真实主题和代理对象实现的业务方法。 * 2.真实主题(Re ......
模式 设计模式 优缺点 场景 golang

golang实现设计模式之策略模式-优缺点,适用场景

`策略模式`是一种行为型的设计模式,该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户,或者认为把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 **结构** * 1.抽象策略(Strategy)类。定义了一个公共接口,各 ......
模式 设计模式 优缺点 场景 策略

golang实现设计模式之模板模式-优缺点,适用场景

`模板模式`是一种行为型设计模式,其定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 **特点** * 1.算法结构已确定。 * 2.具体实现交由子类实现。 **结构** * 1.抽象类(Abstract Class)。算 ......
模式 设计模式 优缺点 场景 模板

golang实现设计模式之装饰器模式-优缺点,适用场景

`装饰器模式`是一种结构型设计模式,简单概括就是:不改变先有对象结构下,动态给对象增加一些职责。 装饰器模式通过组合方式实现,与继承的异同: * 使用继承方式,具有静态特征,耦合度高,并且随着扩展功能的增多,子类会很膨胀。 * 使用组合方式,创建装饰对象来装饰真实对象,原对象功能不变,另外扩展。 * ......
模式 设计模式 优缺点 场景 golang

golang实现设计模式之组合模式-优缺点与适用场景

`组合模式`是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。 **结构** * `抽象构件(Component)角色`:它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。在透明式的组合模式中抽象 ......
模式 设计模式 优缺点 场景 golang

golang实现设计模式之责任链模式-优缺点,适用场景

`责任链模式`是一种行为型的设计模式,也叫职责链,定义:在这样的场景中,请求需要经过一系列的处理者,通过列表或者链表将处理者组合起来,请求依次被处理者处理,如果需要中断,也可以及时退出处理。上述的这种的应用场景,典型的就是在 `web` 应用中的 `中间件或者拦截器`,比如 `Gin框架` 的中间件 ......
模式 设计模式 优缺点 场景 责任

golang实现设计模式之适配器模式-优缺点,适用场景

`适配器模式`是一种结构型设计模式,它是通过接口转换,使得原先接口不被兼容的其他类可以一起工作。 **类型** * 类结构型 特点: \- 程序耦合性高 \- 要求程序员对组件内部结构熟悉 \- 应用相对少些 类适配器模式可以用过继承的方式来实现。 * 对象结构型 特点:可重用性较差。 对象适配器允 ......

golang实现设计模式之观察者模式-优缺点,适用场景

`观察者模式`是一种行为型模式,其定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。 观察者模式常用 `订阅/发布机制`,即发布者持有所有订阅者,当发布者状态变更或者特定行为时,通知所有订阅者。 **结构** * 1.发布者。属性及行为:属性,订阅者列表,行为,添加、删除订 ......

golang中make与new的区别

# golang中make与new的区别 ## new函数 new官方文档的描述: ~~~~~~go // The new built-in function allocates memory. The first argument is a type, // not a value, and th ......
golang make new

Golang 配置代理

通过 go get 命令下载各种依赖时,经常需要访问 github/google 等网站。配置好代理后,可以快速稳定的访问。 常用的 go 代理 goproxyhttps://goproxy.io/zh/ 阿里云https://mirrors.aliyun.com/goproxy/ 七牛云https ......
Golang

golang IOT 服务端基本架构

1. 简图 2. 网关功能 2.1 通用功能 负责和硬件端建立并维护TCP连接 黑白名单 熔断,限流 和后端业务服务交换处理数据 2.2 业务功能 自定义协议解析 设备上下线(绑定,注册等) 3. 底层环境 基于K8S+Rancher多POD 发布工具JK 镜像仓库:register ......
架构 golang IOT

gRPC

[TOC] # 概述 gRPC是由Google开源的一个高性能rpc框架,由内部的Stubby演化而来,2015年正式开源,是云原生时代的rpc标准 核心设计思路 - 网络通信:自己封装了网络通信的部分,提供多语言的网络通信的封装(c/java(netty),go) - 协议:http2,使用二进制 ......
gRPC

GRPC拦截器和Metadata的使用

# GO GRPC拦截器和Metadata的使用 标签(空格分隔): go,grpc metadata:https://github.com/grpc/grpc-go/blob/master/Documentation/grpc-metadata.md 什么是metadata gRPC 支持在客户端 ......
Metadata GRPC

Golang环境搭建

1、go环境下载地址:https://studygolang.com/dl 2、查看go安装状态: go version 3、学习指南 https://tour.go-zh.org/welcome/1 4、环境变量和相关配置 4.1 Windows环境下安装 # 1、配置Go环境变量-GOROOT ......
环境 Golang

go-tc golang tc 工具包

go-tc 是基于golang 的限速工具包,可以通过修改队列通过filter 以及类别进行限速处理,是一个听方便的golang 包类似的有基于cli 的wondershaper 可以通过cli 实现限速 参考资料 https://github.com/florianl/go-tchttps://g ......
工具包 工具 golang go-tc tc

golang导入私有仓库报错:“server response: not found:xxx: invalid version: git ls-remote -q origin in xxx“

1.问题:go get导入私有仓库报错 ➜ go get "devops.gitlab.xxx.com/test/kafka-utils" go: devops.gitlab.xxx.com/test/kafka-utils@v0.0.1: verifying go.mod: devops.gitl ......
仓库 ls-remote xxx response invalid

MQTT协议及其在Golang中的实现

# 引言: 在物联网(IoT)领域中,设备之间的通信是至关重要的。为了实现设备之间的高效、轻量级通信,MQTT(Message Queuing Telemetry Transport)协议被广泛采用。MQTT是一种基于发布/订阅模式的消息传输协议,被设计为简单、轻量级且易于实现。本文将介绍MQTT协 ......
Golang MQTT

数据结构 in Golang:Hash Tables(哈希表)

# 数据结构 in Golang:Hash Tables(哈希表) ### 场景 - 水果店的价格表: - 苹果 Apple:3元 - 香蕉 Banana:4元 - 桃子 Peach:2元 - 梨 Pear:3元 - 找到一种水果的价格: - 可以使用 binary search,通过名称来查找,耗 ......
数据结构 结构 数据 Golang Tables

golang并发channel实践

前言 在我前面一篇文章Golang受欢迎的原因中已经提到,Golang是在语言层面(runtime)就支持了并发模型。那么作为编程人员,我们在实践Golang的并发编程时,又有什么需要注意的点呢?下面我会跟大家详细的介绍一些在实际生产编程中很容易踩坑的知识点。 CSP 在介绍Golang的并发实践前 ......
channel golang

golang实现封装trycatch异常处理

老外的分享 package main import ( "reflect" ) type TryCatch struct { errChan chan interface{} catches map[reflect.Type]func(err error) defaultCatch func(err ......
trycatch golang

go语言使用GRPC流处理模式

# go语言使用GRPC流处理模式 标签(空格分隔): go,grpc proto文件 syntax = "proto3"; package four_kinds_method.v1; option go_package="go-example/grpc/four_kinds_method/prot ......
语言 模式 GRPC

Golang中如何控制goroutine的执行顺序?

首先说明一下原理:前后协程之间通过通道去相互限制,后一个线程尝试去获取一个channel的值,当channel中没有值时,就会一直阻塞,而前一个协程则负责关闭channel,当前一个协程完成了这个操作,后一个协程才可以结束阻塞,继续执行。 示例代码: package main import ( "f ......
goroutine 顺序 Golang

gRPC 简介

# gRPC 简介 标签(空格分隔): go,grpc 概述 在 gRPC 中,客户端应用程序可以直接调用不同计算机上的服务器应用程序上的方法,就像它是本地对象一样,从而使您更轻松地创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以使用其参数和返回类型远程调用 ......
简介 gRPC

GRPC核心概念、架构和生命周期

# GRPC核心概念、架构和生命周期 标签(空格分隔): go,grpc 官网地址:https://grpc.io/docs/what-is-grpc/core-concepts/ 概述 与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。默认情况下, ......
架构 周期 核心 概念 生命

算法 in Golang:Breadth-first search(BFS、广度优先搜索)

# 算法 in Golang:Breadth-first search # (BFS、广度优先搜索) ## 最短路径问题 Shortest-path problem - 从 A 到 F 点有多条路径 ## 解决问题的算法 Breadth-first Search(广度优先搜索) 1. 将问题建模为图 ......
广度 Breadth-first 算法 Breadth Golang

算法 in Golang:Quicksort(快速排序)

# 算法 in Golang:Quicksort(快速排序) ## Quicksort(快速排序) - 快速排序 O(nlog2^n),比选择排序要快 O(n²) - 在日常生活中经常使用 - 使用了 D & C 策略(分而治之) ## 使用 Quicksort 排序数组 - 不需要排序的数组(也就 ......
算法 Quicksort Golang in

算法 in Golang:Recursion(递归)

# 算法 in Golang:Recursion(递归) ## 递归算法 ### 场景:在套娃中找到宝石 ### 可以这样做 - while 没找到: - if 当前项 is 宝石: - return 宝石 - else if 当前项 is 套娃: - 打开这个套娃 - if 当前项 is 宝石: ......
算法 Recursion Golang in

20个Golang片段让我不再健忘

本文使用代码片段的形式来解释在 go 语言开发中经常遇到的小功能点,由于本人主要使用 java 开发,因此会与其作比较,希望对大家有所帮助。 ......
片段 Golang

Golang中关于Channel读写的一些细节

我们知道,对于一个已经关闭的channle来说,如果channel内部还有值的话,可以继续执行读操作,读出channel里的元素,但是不能执行写操作; 相反,如果关闭后,channel里已经没有元素可读的情况,再执行读操作的话会读出channel的零值,同样,也不能执行写操作。 首先,先让我们通过代 ......
细节 Channel Golang