本列表旨在聚合和推广华人创作的优秀Go语言项目。欢迎也希望大家积极提交PR。让我们共同打造它!

暂定的优秀Go语言项目标准:

  • 可以是库项目或可运行项目。
  • 适应范围够广,通用的框架项目和服务软件优先。
  • 口碑够好,项目的 Star 数必须超过100。
  • 易上手。文档清晰、代码质量高、测试完整的项目更易上手。

可以看到,以上标准均不是绝对条件。我们会进行权衡,并尽量提升本列表的质量。

由于目录的跳转问题,目录和标题需用英文。而项目的介绍会采用中文。

- 阅读剩余部分 -

一、负载均衡三种解决方案

构建高可用、高性能的通信服务,通常采用服务注册与发现、负载均衡和容错处理等机制实现。根据负载均衡实现所在的位置不同,通常可分为以下三种解决方案:

  1. 集中式 LB(Proxy Model)
  2. 进程内 LB(Balancing-aware Client)
  3. 独立 LB 进程(External Load Balancing Service)

出处在这里,写的很详细:https://segmentfault.com/a/1190000008672912

- 阅读剩余部分 -

在本文,我们将讨论 Laravel 中的 tap。我们将详细讨论 tap 帮助函数和 collection 中的 tap 方法。

Tap 帮助函数


旧的实现方式

Laravel提出了一个 tap 功能。这是一个非常奇怪的功能,受 Ruby 的启发。这是 tap 助手功能的基本实现。

function tap($value, $callback)
{
    $callback($value);

    return $value;
}

上面的代码将接受一个参数,它将使用该参数调用一个匿名函数。在调用回调函数后,它将返回参数。

- 阅读剩余部分 -

Laravel中的Eloquent(ORM)的工作方式很令人惊讶,并提供访问数据库的非常简单的方法。在本文中,我们将了解Laravel Eloquent中的懒加载和即时加载以及它如何在后台运行。

Eloquent 中的关系

第一步我们需要定义模型之间的关系的。在这个例子中,我将使用两个模型,house 和 city。房子属于一个城市,城市有很多房屋。让我们看看模型 House 的关系:

class House extends Model
{
    protected $fillable = [
        'title', 'description', 'price'
    ];

    public function city() {
        return $this->belongsTo('App\City');
    }
}

注意:对于多对一的关系(房子属于一个城市),函数名称是单数。 [public function city()]

class City extends Model
{
    protected $fillable = [
        'name', 'code'
    ];

    public function houses() {
        return $this->hasMany('App\House');
    }
}

注意:对于一对多关系(城市有很多房屋),函数名称是复数。 [public function houses()]

- 阅读剩余部分 -