Random walk to my blog

my blog for sharing my knowledge,experience and viewpoint

0%

RDD(Resilient Distributed Datasets,弹性分布式数据集)是一个分布式的内存抽象,让程序设计员在高效容错的条件下,在大规模的集群里执行基于内存的计算。

阅读全文 »

常见的GC算法

引用计数法

根据对象自身的引用计数来回收,当引用计数归零时进行回收,但是计数频繁更新会带来更多开销,且无法解决循环引用的问题。

  • 优点:简单直接,回收速度快
  • 缺点:需要额外的空间存放计数,无法处理循环引用的情况;
阅读全文 »

Golang的参数校验,大多数使用的是validator(gin框架使用的是validator v8/v9)。但是,validator的缺点是,将校验的逻辑,以标签(tag)的方式写入结构体,这种方法具有很强的侵入性,并且校验逻辑不容易阅读。
为此,笔者写了checker,作为validator的替代品。checker可以替代validator, 用于结构体或非结构体的参数校验。

阅读全文 »

在Golang的日常开发中,有时候需要对struct的每个字段(field)进行校验,从而判断结构体的值是否符合条件。

阅读全文 »

本文基于 go1.15.2 darwin/amd64

作用介绍

context的目的是实现主协程对子协程的控制,作用包括取消执行、设置超时时间、携带键值对等。
下面是一个使用context防止协程泄露的例子。不使用context,创建了goroutine之后没有办法取消,在程序退出之前,会一直打印”in go loop”。

阅读全文 »

Go内部的内存结构

每一个Go进程都拥有由操作系统分配的虚拟内存,这是进程能访问的所有内存空间。虚拟内存中真正使用的内存叫做Resident Set

阅读全文 »