Gorm-子句系统模块原理说明
子句系统模块原理说明 基于1.31 本文档深入解析子句系统模块的设计原理和核心原理,阐述 SQL 组件化构建的理论基础。 一、设计原理1.1 模块定位在整体架构中的位置 子句系统是 GORM SQL 构建的核心组件化引擎,位于 Statement 层之下,直接负责将用户意图转换为 SQL 片段。 1234567891011121314151617181920212223242526┌─────────────────────────────────────────────────────────────┐│ 用户 API 调用 ││ db.Where("age > ?", 18).Order("name").Limit(10) │└────────────────────────┬────────────────────────────────────┘ │ 解析意图...
Gorm-Schema 数据映射模块原理说明
Schema 数据映射模块原理说明 基于1.31 本文档深入解析 Schema 数据映射模块的设计原理和核心原理,涵盖元数据管理、类型映射、关系解析等核心概念。 一、设计原理1.1 模块定位在整体架构中的位置 Schema 模块是 GORM 的”元数据层”,位于连接管理之上、查询构建之下,承担着连接 Go 世界与数据库世界的桥梁作用。 12345678910111213141516171819┌─────────────────────────────────────────────────────────────┐│ Go 语言世界 ││ type User struct { ... } │└────────────────────────┬────────────────────────────────────┘ │ 反射解析 ...
Gorm-查询构建模块原理说明
查询构建模块原理说明 基于1.31 本文档深入解析查询构建模块的设计原理和核心原理,涵盖链式 API、条件构建、执行流程等核心内容。 一、设计原理1.1 模块定位在整体架构中的位置 查询构建模块是 GORM 对外提供的主要 API 层,是用户交互的主要界面,位于回调系统之上,协调子句系统和 Schema 模块完成查询构建和执行。 12345678910111213141516171819202122232425262728┌─────────────────────────────────────────────────────────────┐│ 用户代码 ││ db.Model(&User{}).Where("age > ?", 18).Find(&users) │└────────────────────────┬────────────────────────────────────┘ ...
Gorm-连接管理模块原理说明
连接管理模块原理说明 基于1.31 本文档深入解析连接管理模块的设计原理和核心原理,为学习者提供系统性的理论支撑。 一、设计原理1.1 模块定位在整体架构中的位置 连接管理模块位于 GORM 架构的最底层,是整个框架与数据库交互的入口点。它在整体架构中的定位可以概括为: 123456789101112131415161718192021222324252627┌─────────────────────────────────────────────────────────────┐│ 应用层 (用户代码) │└────────────────────────┬────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────┐│ ...
Prometheus源码-Relabel
Prometheus源码-Relabel 基于3.5 relabel address流程 Prometheus读取Job中的targets,把target赋值给__address__标签,此标签代表采集地址 将__address__赋值给__param_target标签,因为Promehrues访问采集地址需要传参,__param_target代表target参数 将__param_target标签赋值给instance标签 将__param_target替换为真实的采集地址 核心解析Label Re123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114// Popul...
K8s开发指南-客户端
K8s开发指南-客户端 基于K8s v1.29 API客户端 Ref:https://github.com/kubernetes/client-go K8s认证方式主要一下俩类: 集群外的认证:客户端程序运行在集群外,以独立进程访问API Server 集群内的认证:客户端在K8s内以Pod形式运行,通过内部服务名访问API Server 客户端访问API Server常见的认证方式有以下的几种 数字证书方式 ServiceAccount方式 BearerToken方式 对于运行在K8s集群之外的客户端,建议使用数字证书方式连接API Server,客户端需要配置的信息包括CA根证书、客户端证书、客户段私钥以及API Server地址 对于运行在集群内的Pod,建议使用ServiceAccount认证方式,需要为Pod增加ServiceAccount资源,并为ServiceAccount配置好正确的RBAC权限 基于kubeconfig文件的配置方式有以下几种: 用户HOME目录中的约定目录,例如$HOME/.kube/config 在环境变量K...
K8s开发-API详解
K8s开发-API详解 基于K8s v1.29 资源对象一个K8s资源对象描述一般是kind、apiVersion、metadata、spec和status五个部分 资源对象的类型资源对象的类型用Kind属性表示,总体分为3个类型: 对象(Object)、代表系统中永久资源实体,比如Pod、RC 列表(List):资源对象的合集 简单类别(Simple):作用于资源对象或非持久辅助实体的特定操作,比如Status、Scale、ListOptions等 资源对象的元数据metadata是资源对象的元数据定义,由一组属性来定义,在K8s中,每个资源对象都必须包含以下元数据属性: namespec:对象所属的命名空间,如果不指定,则昔日会将对象置于名为default中 name:对象的名称、在一个ns下,唯一性 uid:系统为每个对象生成唯一的ID,符合RFC4122 labels:自定义标签 annotations:用户自定义注解,被K8s内部进程或者外部工具使用 resourceVersion:用于识别资源内部斑斑的字符串,在Watch操作,可以避免Get和下一次Watch...
Gorm-Open(DB连接与配置)
Gorm-Open(DB连接与配置) 基于1.31.0 工作原理graph TD A[Open<br/>打开数据库连接] --> B[Initialize Config<br/>初始化配置] B --> C[Initialize Dialector<br/>初始化数据库方言] C --> D[Setup Connection Pool<br/>设置连接池] D --> E[Setup Callbacks<br/>设置回调] E --> F[Ping Database<br/>连接数据库测试] F --> G[DB Instance Ready<br/>数据库实例就绪] G --> H[Session<br/>创建会话] H --> I[Create New Session<br/>创建新会话] I --> J[Apply Session ...
K8s认证机制-拓展认证
K8s认证机制-拓展认证 基于K8s v1.29 OIDC Token认证K8s支持使用OpenID Connect协议进行身份认证。 OIDC协议给予OAuth2.0,构建了身份层,主要提供了ID Token,这是一个JWT格式的Token 流程图: 配置OIDC认证,需要API-Server开启一些参数 WebHook Token认证WebHook认证是K8s回调第三方认证实现用户认证 认证原理: API Server收到客户端的请求之后,从HTTP Header获取到Bearer Token,然后生成一个包含该Token的TokenReview资源对象 API Server把整个TokenReview对象JSON序列化之后发送给Webhook认证服务器 开启WebHook 认证需要设置API Server启动参数 Authenticating Proxy认证在这种模式下,K8s自身不再对用户认证,而是使用外部认证服务进行用户认证 开启Authenticating Proxy 认证需要设置API Server启动参数
Gin-项目初始化(New)
Gin-项目初始化(New) 基于1.10.0 工作原理Engine核心结构体graph TD A[Engine] --> B[RouterGroup] A --> C[trees: methodTrees] A --> D[pool: sync.Pool] A --> E[HTMLRender] A --> F[配置选项] F --> F1[RedirectTrailingSlash] F --> F2[RedirectFixedPath] F --> F3[HandleMethodNotAllowed] F --> F4[ForwardedByClientIP] F --> F5[UseH2C] 路由注册流程graph TD A[AddRoute] --> B{检查路径和方法} B --> C[获取对应method的tree] C --> D[创建新node如果...



