果果🐔

果果的官网

goland配置golangci-linter代码扫描

golangci-linter

1.写在前面 go作为一门静态语言。运行静态代码分析作为golang代码审查的做法防御的第一线,其作用不言而喻。 因此golangci-lint就诞生了,在安装之后他会在终端的问题中显示所有的代码不规范的地方及优化提示。 实用且廉价,安全又方便 2.如何安装 2.1 安装golangci-linter 2.1.1 从GitHub找到对应系统的编译文件进行下载(推荐...

swagger使用接口文档

go swagger

一,写之前先要知道swagger是什么 Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服...

GMP模型

新年第一更

什么是GMP M (thread) G (goroutine) P (Processor)。 GMP 模型 1、全局队列(Global Queue):存放等待运行的 G。 2、P 的本地队列:同全局队列类似,存放的也是等待运行的 G,存的数量有限,不超过 256 个。新建 G’时,G’优先加入到 P 的本地队列,如果队列满了,则会把本地队列中一半的 G 移动到全局队...

说说最近的自己

聊聊近况

好久没更新博客了,最近刚好闲了下来,准备更新一下。就聊聊自己的近况吧。 在今年9月份的时候,我从上家公司离职了,离职原因诸多,这里暂且不表。本身我自己就是一个闲不下来的人, 所以在9月底的时候我跳槽到了一家新的公司做web开发工作。职位也从原来的PHP工程师转型为go开发工程师,当然, 这也是我一直想要的,能入职这个公司我感觉是很幸运的,因为在武汉能转go的公司实在少之又少。...

Go 实现常用设计模式(四)观察者模式

观察者模式

在电商网站中, 商品时不时地会出现缺货情况。 可能会有客户对于缺货的特定商品表现出兴趣。 这一问题有三种解决方案: 客户以一定的频率查看商品的可用性。 电商网站向客户发送有库存的所有新商品。 客户只订阅其感兴趣的特定商品, 商品可用时便会收到通知。 同时, 多名客户也可订阅同一款产品。 选项 3 是最具可行性的, 这其实就是观察者模式的思想。 观察者模式的主要组成部分有...

Go 实现常用设计模式(三)抽象工厂模式

抽象工厂模式

抽象工厂是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。 抽象工厂定义了用于创建不同产品的接口, 但将实际的创建工作留给了具体工厂类。 每个工厂类型都对应一个特定的产品变体。 在创建产品时, 客户端代码调用的是工厂对象的构建方法, 而不是直接调用构造函数 ( new操作符)。 由于一个工厂对应一种产品变体, 因此它创建的所有产品都可相互兼容。 客户端代码仅通过其...

Go 实现常用设计模式(二)工厂模式

工厂模式

由于 Go 中缺少类和继承等OOP特性, 所以无法使用Go来实现经典的工厂方法模式。 不过, 我们仍然能实现模式的基础版本, 即简单工厂。 在本例中, 我们将使用工厂结构体来构建多种类型的武器。 首先, 我们来创建一个名为iGun的接口, 其中将定义一支枪所需具备的所有方法。 然后是实现了iGun接口的 gun枪支结构体类型。 两种具体的枪支——ak47与musket火枪——两者都嵌入了...

Go 实现常用设计模式(一)单例模式

单例模式

通常而言, 单例实例会在结构体首次初始化时创建。 为了实现这一操作, 我们在结构体中定义一个 get Instance获取实例方法。 该方法将负责创建和返回单例实例。 创建后, 每次调用 get Instance时都会返回相同的单例实例。 协程方面又有什么需要注意的吗? 每当多个协程想要访问实例时, 单例结构体就必须返回相同的实例。 正因如此, 单例设计模式的实施工作很容易出错。 下方的例...

nginx+lua+redis服务降级

Lua

1 引子 各位有没有过这样的经历: 商城或web站点的用户访问量出乎意料地增加了很多,超出了系统的负载能力, 系统有些扛不住,继而导致注 册,下单,支付什么的全部在绕圈卡住,继而导致公司业务损失了不少用户和订单。 2 什么是降级, 为什么降级,降级的场景 降级的最终目的是保证核心服务的高可用。过程就是丢卒保帅,有些服务是无法降级的,比如支付。 当我们的服务器压力剧增为了保证核心功能的可用...

淘宝,一个牛逼的高并发分布式架构演进之路!

分布式架构

1. 概述 本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。 特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径 2. 基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概...