源码分析

November 13, 2024

go-gorm源码分析(三)

go-gorm源码分析(三)

GORM支持的关系类型主要包括一对一、一对多、多对多等关联关系的定义和查询。在GORM中,开发者可以在模型中定义这些关联关系,并使用GORM提供的方法进行关联查询和操作。本文重点介绍其关系的实现原理。

October 28, 2024

go-gorm源码分析(二)

go-gorm源码分析(二)

前文分析了go-gorm的大致结构,包括初始化以、连接管理以及SQL构建等,本文分析gorm下通过ORM(对象关系映射)读写数据的基本原理及执行逻辑。

October 15, 2024

go-gorm源码分析(一)

go-gorm源码分析(一)

最近在查找一些golang版本的SQL Builder的选型,刚好了解到了gorm的能力。gorm内嵌的SQL拼接能力其实不太适合作为独立特性来使用,其内部实现与gorm有较深的耦合关系。但是gorm的关系操作能力很强大,猜测跟directus中的实现有些类似。刚好之前阅读directus源码时觉得ts代码有些繁杂晦涩,所以阅读一遍gorm的源码,并记录其分析过程。

August 22, 2024

pREST源码分析

pREST源码分析

之前的文章中已经分析了pREST的功能和基础用法,本文介绍其代码结构以及实现原理。各接口实现差异不大,本文重点关注其CRUD能力以及自定义查询的实现方案。

July 5, 2024

golang BigCache源码解析

golang BigCache源码解析

golang的本地缓存方案有不少,如freecache、bigcache、groupcache等。很久前看过groupcache的源码,对其singleflight的机制印象挺深的,但是印象中没有对gc做特殊的优化。最近刚好看到了了bigcache的介绍,其内部实现重点考虑了gc对于性能的影响。所以翻出其代码快速阅读了一遍其核心思路,特此记录。

June 24, 2024

使用supabase/auth实现OAuth登录

使用supabase/auth实现OAuth登录

前面已经介绍过了如何使用supabase/auth来实现邮箱用户的认证以及supabase的源码分析,本次重点介绍如何使用supabase/auth来实现OAuth2.0的认证,从应用的web/backend端、supabse以及provider的角度来分析其流程及原理。